trackkun-dom 2.13.0 → 2.13.1

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.
Files changed (2) hide show
  1. package/index.js +1 -1
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -1 +1 @@
1
- (function(z,k){typeof exports=="object"&&typeof module<"u"?k(exports):typeof define=="function"&&define.amd?define(["exports"],k):(z=typeof globalThis<"u"?globalThis:z||self,k(z._trackkun_={}))})(this,(function(z){"use strict";function k(a){let e=!1;return new Promise((t,r)=>{Promise.all(a.map(async n=>{const s=await n;!e&&s&&(e=!0,t(s))})).then(()=>{e||t(void 0)})})}function W(a){if(a)try{return JSON.parse(a)}catch(e){console.log(e);return}}async function M(a,e,t){const r=await t(()=>{a=0});if(r!==void 0)return r;if(!(a<=0))return await new Promise(n=>{setTimeout(async()=>{const s=await M(a-1,e,t);n(s)},e)})}async function O(a,e,t=0){const r=e.root??document.documentElement,n=e.timeoutMs??1e4;return M(e.lazy===!0?n/50:0,50,()=>{const s=e.all===!0?Array.from(r.querySelectorAll(a)):r.querySelector(a)??void 0;return(e.all?!s?.length:!s)?void 0:s})}function Z(a){if(a instanceof HTMLOptionElement){const e=a.parentElement instanceof HTMLOptGroupElement?a.parentElement.parentElement:a.parentElement;if(!e||!(e instanceof HTMLSelectElement))return;const t=a.getAttribute("value")||"";if(e.value===t)return;e.value=t,e.dispatchEvent(new Event("change"));return}a instanceof HTMLAnchorElement&&a.addEventListener("click",e=>e.preventDefault(),{once:!0}),a.click(),a.dispatchEvent(new PointerEvent("pointerdown",{bubbles:!0,cancelable:!0,pointerType:"mouse",button:0})),a.dispatchEvent(new MouseEvent("mousedown",{bubbles:!0,cancelable:!0,view:window,button:0}))}const oe={text:ge,attr:at,"attr-contain":rt,value:nt,row:st,"bg-image":it,json:lt},Xe={pattern:ot,remove:ct,atob:ut};function d(a,e){if(a)return ce(a,e,et)}function q(a,e){if(a)return ce(a,e,tt)}function ce(a,e,t){if(!a)return;const r=a.split("||").map(n=>n.trim()).filter(Boolean);for(const n of r){const s=Ze(n);if(!s)continue;const i=t(e??document.documentElement,s);if(i)return i}}function Ze(a){const[e,t,...r]=a.split("|");if(!t)return;const n=t?.startsWith("[")&&t.endsWith("]")?t.substring(1,t.length-1).split(","):[t];return{selector:e||void 0,extractors:n.map(ee),transformers:r.map(ee)}}function ee(a){const e=a.indexOf(":"),t=e!==-1;return{fn:t?a.substring(0,e):a,param:t?a.substring(e+1):""}}function et(a,e){if(!e.selector)return ue(a,e);const t=gt(e.selector);for(const r of t){const n=Array.from(a.querySelectorAll(r));for(const s of n){const i=ue(s,e);if(i)return i}}}function tt(a,e){const t=e.selector?Array.from(a.querySelectorAll(e.selector)):[a],r=[];for(const n of t)for(const s of e.extractors){const i=oe[s.fn],l=i(n,s.param);if(l){r.push(te(l,e.transformers));break}}if(r.length)return r}function ue(a,e){for(const t of e.extractors){const r=oe[t.fn],n=r(a,t.param);if(n)return te(n,e.transformers)}}function te(a,e){let t=a;for(const r of e){const n=Xe[r.fn];n&&(t=n(t,r.param).trim())}return t}function ge(a){return Array.from(a.childNodes).filter(e=>e.nodeType===3).map(e=>N(e.textContent)).filter(Boolean).join(" ").trim()||N(a.textContent)}function at(a,e){return N(a.getAttribute(e))}function rt(a,e){let t=a.getAttribute(e);if(!t){const r=a.getAttributeNames().find(n=>n.includes(e));r&&(t=a.getAttribute(r))}return N(t)}function nt(a){return a.value}function st(a,e){if(!e)return;const t=N(a.textContent)?.toLowerCase(),r=e.toLowerCase();if(!(t!==r&&t!==`${r}:`))return N(a.nextElementSibling?.textContent??a.nextSibling?.textContent)}function it(a){const e=getComputedStyle(a).backgroundImage;if(!(!e||!e.startsWith("url(")))return e.slice(5,-2)||void 0}function lt(a,e){const t=B(W(ge(a)),e);return typeof t=="number"?t+"":typeof t=="string"?N(t+""):void 0}function B(a,e){if(!a||!e)return;const t=e.indexOf("."),r=t!==-1,n=r?e.substring(0,t):e,s=r?e.substring(t+1):void 0;try{const i=a[n];return s?B(i,s):i}catch{return}}function N(a){if(a)return a?.replace(/(\n|\t)/g," ").trim()||void 0}function ot(a,e){if(e)try{return a.replace(new RegExp(e,"i"),"$1")}catch{}return a}function ct(a,e){if(e)try{return a.replaceAll(new RegExp(e,"gi"),"")}catch{}return a}function ut(a){try{return window.atob(a)}catch{return a}}function gt(a){const e=[];let t="",r=!1;for(let s=0;s<a.length;s++){const i=a[s];if(i==="["?r=!0:i==="]"&&(r=!1),i===","&&!r){const l=t.trim();l.length>0&&e.push(l),t=""}else t+=i}const n=t.trim();return n.length>0&&e.push(n),e}var pt=(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))(pt||{}),ht=(a=>(a[a.ok=1]="ok",a[a.hidden=2]="hidden",a[a.deleted=3]="deleted",a))(ht||{}),dt=(a=>(a[a.aggregator=0]="aggregator",a[a.scanlator=1]="scanlator",a))(dt||{}),ft=(a=>(a[a.pending=0]="pending",a[a.completed=1]="completed",a[a.offline=2]="offline",a[a.incompat=3]="incompat",a))(ft||{}),pe=(a=>(a.id="id",a.name="name",a.slug="slug",a))(pe||{}),V=(a=>(a.blank="about:blank",a.title="meta.title",a.reader="meta.reader",a))(V||{});function he(a=0){return new Promise(e=>setTimeout(e,a))}const mt=/(vol(ume)?|season)(\s*|-|\.)(\d+)/i,wt=/^S([1-9])\s/i,vt=/(ch(ap(t(er)?|\.)?|\.)?|#|episode\.?|capitolo\.?|capitulo\.?|bölüm\.?)(\s*|-)(\d+([_-~,.]\d+)?)/i,yt=/\d+([_-~,.]\d+)?/,bt=/[_-~,]/;function Rt(a){const e=a.match(mt);if(e)return{volStr:e[0],volValueStr:e[4]};const t=a.match(wt);return t?{volStr:t[0],volValueStr:t[1]}:{}}function P(a){if(!a)return;if(!isNaN(+a))return{chap:+a};const{volStr:e,volValueStr:t}=Rt(a),r=e?a.replace(e,"").trim():a,n=r.match(vt),s=r.match(yt),i=n?.[6],l=i??s?.[0];if(!l)return;const o=+l.replace(bt,".");if(isNaN(o))return;const c=e&&t&&!isNaN(+t)&&a.indexOf(e)<a.indexOf(i?n[0]:s[0])?+t:void 0;return{vol:c===void 0||c<=0?void 0:c,chap:o}}async function K(a,e=240){return new Promise(t=>{const r=new Image;r.crossOrigin="anonymous",r.onerror=()=>t(void 0),r.onload=()=>{const n=document.createElement("canvas"),s=n.getContext("2d"),i=Math.max(1,r.naturalWidth/e),l=r.naturalWidth/i,o=r.naturalHeight/i;n.width=l,n.height=o;const c=/iPad|iPhone|iPod/.test(navigator.userAgent);try{s.drawImage(r,0,0,l,o);const u=n.toDataURL(c?"image/jpg":"image/webp",c?.99:.8).split(",").slice(-1)[0];t(u)}catch{t(void 0)}},r.src=a})}async function $t(a,e=240){const t=await xt(a);if(t)return await new Promise(async r=>{const n=K(t,e),s=setTimeout(()=>r(void 0),100),i=await n;clearTimeout(s),r(i)})}async function xt(a){if(a.startsWith("blob:"))return a;try{const e=await fetch(a);if(e.status>=400)return;const t=await e.blob();return URL.createObjectURL(t)}catch{return}}function D(a,e){if(e==="")return a;if(!e)return;const t=e.split("||").map(r=>r.trim()).filter(Boolean);for(const r of t){const[n,...s]=r.split("|"),i=B(a,n);if(typeof i=="number"||i){if(typeof i!="string")return i;const l=i.replace(/(\n|\t)/g," ").trim();if(l){const o=te(l,s.map(ee));if(o)return o}}}}function L(a){if(a?.startsWith("window")){const e=a.indexOf(".");return e===-1?void 0:D(window,a.substring(e+1))}return W(a?d(a):document.querySelector("pre")?.textContent)}function T(a,e){if(typeof a=="number")return e?e(a):a}function w(a,e){if(typeof a=="string")return e?e(a):a}function j(a,e){const t=a.map(c=>({...c,vol:c.vol===0?void 0:c.vol}));t.sort((c,u)=>c.vol===void 0||u.vol===void 0?u.chap-c.chap:u.vol-c.vol||u.chap-c.chap);const r={},n={};for(let c=t.length-1;c>=0;c--){const u=t[c],p=u.group??"";r[p]=(r[p]??0)+1;const g=u.lang??"";u.vol!==void 0?n[g]=u.vol:n[g]!==void 0&&(u.inferVol=n[g])}const s=[],i={},l=e?.preferGroup,o=c=>c.lang??"";for(const c of t){const u=o(c),p=i[u],g=s[p];if(!(g&&g.chap===c.chap&&(g.vol===c.vol||g.vol===void 0||c.vol===void 0))){i[u]=s.length,s.push(c);continue}if(!l){g.vol===void 0&&c.vol!=null&&(s[p]=c);continue}g.group!==l&&(c.group==l||g.group&&!c.group||r[c.group??""]>r[g.group??""])&&(s[p]=c)}return s}const Dt=[{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:"an",it:"anno",es:"a\xF1o"}}];function de(a,e){const t=a?.toLowerCase();if(!t)return;const r=Date.now();if(t.includes("now"))return r;if(t.includes("yesterday"))return r-864e5;const n=new Date(t);if(n instanceof Date){const c=n.valueOf();if(!isNaN(c))return n.getHours()===0&&n.getMinutes()===0?Math.min(r,c+432e5):c}const s=Dt.find(c=>e&&c.locales[e]&&t.indexOf(c.locales[e])!==-1?!0:t.indexOf(c.locales.en)!==-1);if(!s)return;const i=t.split(" ").filter(Boolean),l=fe(i)??(e==="en"?fe(i,["a","an"]):void 0);if(!l)return;const o=r-l*s.seconds*1e3;return o>0?o:void 0}function fe(a,e){for(let t=0;t<a.length;t++){const r=a[t];if(e?.includes(r))return 1;const n=+r;if(n)return n<0?void 0:n}}function St(a,e=location.origin){if(!a)return;const t=new URL(a.startsWith("//")?`${location.protocol}${a}`:a,location.origin+location.pathname).toString();return t.startsWith(e)?t.replace(e,""):t}function ae(a,{titleSlug:e,titleId:t,lang:r}){if(!a)return"/";let n=a;return e&&(n=n.replace("{titleSlug}",e)),t&&(n=n.replace("{titleId}",t)),r&&(n=n.replace("{lang}",r)),n.endsWith("/")||(n+="/"),n.startsWith("/")||(n="/"+n),n}function re(a){if(!a)return;let e=a;e.startsWith("//")&&(e=`https:${e}`);try{return new URL(e)}catch{return}}function E(a){if(!(!a||typeof a!="string"))return a.includes("//")?re(a)?.pathname:a}function Tt(a,e){const t=[...e],r=[];let n=!1,s=0;const i=Math.min(a.length,100);for(let o=0;o<i;o++){if(s>=10/2){const h=10-r.length;if(h>0){const f=o+h<=a.length?a.slice(o,o+h):t.slice(0,h);r.push(...f)}break}const c=a[o],u=c.id!==void 0,p=t.findIndex(h=>u&&h.id===c.id||h.slug===c.slug||h.name==c.name),g=p===-1?void 0:t.splice(p,1)[0];!g||g.chapters[0]?.chap!==c.chapters[0]?.chap?(n=!0,r.push({...c,changed:!0})):(s++,r.push(c))}if(!n)return{hasMore:!1,rawReleases:[]};if(r.length<=10)return{hasMore:!!a[a.length-1]?.changed,rawReleases:r};const l=[];for(let o=0;o<r.length;o++){const c=r[o];(c.changed||o<10)&&l.push(c)}return{hasMore:e.length<2||e.length-t.length<2,rawReleases:l}}function Ct(a,e){const t={};return a.forEach(r=>{const n=r.chapters.reduce((s,i)=>{const l=i.lang||e||"";return s[l]||(s[l]=[]),s[l].push(i),s},{});Object.entries(n).forEach(([s,i])=>{const l=`${r.slug}:${s}`;t[l]?(t[l].chapters.push(...i),j(t[l].chapters)):t[l]={...r,lang:s===""?void 0:s,chapters:i}})}),Object.values(t)}var S=(a=>(a.title="title",a.reader="reader",a.releases="releases",a.chapters="chapters",a.search="search",a))(S||{}),It=Object.defineProperty,Pt=(a,e,t)=>e in a?It(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,A=(a,e,t)=>Pt(a,typeof e!="symbol"?e+"":e,t);class H{constructor(e){A(this,"headless"),A(this,"siteId"),A(this,"spec"),A(this,"siteMeta"),A(this,"tags"),A(this,"context"),A(this,"methodsMap",{[S.title]:()=>this.getRawTitleData(),[S.reader]:()=>this.getRawReaderData(),[S.releases]:()=>this.getRawReleasesData(),[S.search]:()=>this.getRawSearchData(),[S.chapters]:()=>this.getRawChaptersData()}),A(this,"normalizedTagsMap"),this.siteId=e.siteId,this.spec=e.spec,this.siteMeta=e.siteMeta,this.tags=e.tags,this.context=e.context??{},this.headless=e.headless===!0}async getRawPageByType(e,t=!1){const r=await this.methodsMap[e](),n=!r&&(e===S.title||e===S.reader)&&await Bt(this.spec);if(t&&!r&&!n)return;const s=location.origin+location.pathname;return{type:e,is404:n,specId:this.spec.id,siteName:jt(this.spec.name),favUrl:At(),htmlLang:Ot(),url:s,data:r,spec:this.spec,context:this.context}}parseReaderUrl(e,t,r){const n=e.includes("{"),s=!this.siteId;let i=t;if(i[0]!=="/"&&(i.includes("/")||s&&!n))try{i=new URL(t,location.href).pathname}catch{}if(i.endsWith("/")&&(i=i.slice(0,-1)),e.startsWith("/")||(e="/"+e),e.endsWith("/")||(e=e+"/"),n){const l=e.split("/").filter(Boolean),o=i.split("/").filter(Boolean);if(l.length<o.length){const c=o[l.indexOf("{lang}")]?.toLowerCase(),u=o[l.indexOf("{titleId}")],p=o[l.indexOf("{titleSlug}")],g=e.replace("{lang}",c).replace("{titleId}",u).replace("{titleSlug}",p);if(s)return{basePath:"",slug:i,lang:c,titleId:u,titleSlug:p};if(i.startsWith(g))return{basePath:g,slug:i.replace(g,""),lang:c,titleId:u,titleSlug:p}}}else if(!s&&i.startsWith(e))return{basePath:e,slug:i.replace(e,"")};return{basePath:"",slug:i}}parseTitleUrl(e){if(typeof e!="string")return{};const t=E(e),r=t?.split("/").filter(Boolean);if(!r?.length)return{};const n=this.siteMeta.titleBase.split("/").filter(Boolean),s=n.indexOf("{slug}");return(s===-1?r.length-n.length>=1:r.length===n.length)?{id:r[n.indexOf("{id}")],slug:this.siteId?s===-1?r.slice(n.length).join("/"):r[s]:t}:{slug:t}}finalizeRawReleasesData(e){const t=this.spec.releases?.title?.lang?this.siteMeta.defaultLang:void 0,r=Ct(e.rawReleases,t);if(r.length)return this.context.oldRawReleases?Tt(r,this.context.oldRawReleases):{rawReleases:r,hasMore:!0}}getTagIdsFromNames(e){if(!e?.length)return;const t=this.normalizedTagsMap??(this.normalizedTagsMap=Mt(this.tags)),r=e.map(n=>t[ne(n)]).filter(Boolean);return r.length===0?void 0:Array.from(new Set(r)).sort((n,s)=>n-s)}}A(H,"specId"),A(H,"siteId");function Mt(a){const e={};return a.forEach(({id:t,name:r,altNames:n})=>{e[ne(r)]=t,n&&n.forEach(s=>{e[ne(s)]=t})}),e}function ne(a){const e=a.toLowerCase().replaceAll(/[^a-z0-9\s]/gi,"").trim().replaceAll(/\s+/g," ");return e[e.length-1]==="s"?e.substring(0,e.length-1):e}async function Bt(a){return Lt()===404||a[404]&&await O(a[404],{lazy:!0,timeoutMs:5e3})?!0:document.title.toLowerCase().includes("not found")}function Lt(){try{return window.performance.getEntries().find(a=>a.entryType==="navigation")?.responseStatus}catch{return}}function jt(a){return(a&&d(a))??d('meta[property="og:site_name"]|attr:content')}function At(){return d('link[rel="icon"][sizes="32x32"],link[rel="icon"][sizes="192x192"],link[rel="apple-touch-icon"]|attr:href')}function Ot(){return d("html|attr:lang")||"en"}class v extends H{async getRawReleasesData(){const e=this.spec?.releases?.title;if(!e)return;if(e.json){const l=this.getJsonRawReleases(w(e.json),e)?.filter(o=>o.chapters.length);return l?.length?this.finalizeRawReleasesData({rawReleases:l}):void 0}const t=e.chapter,r=await O(e.sel,{lazy:!0,all:!0});if(!r?.length)return;const n=Date.now(),s=r.slice(0,100).map(l=>{const o=d(e.url,l),c=E(o),u=d(e.name,l),p=d(e.at,l);if(!c||!u)return;const g=de(p,this.siteMeta.defaultLang);return{titleEl:l,id:d(e.id,l),path:c,name:u,lang:d(e.lang,l)?.toLowerCase(),at:g?Math.min(g,n):void 0}}).filter(Boolean);if(!s.length)return;const i=[];return await Promise.all(s.map(async l=>{const{path:o,titleEl:c,lang:u,at:p,...g}=l,{id:h,slug:f}=this.parseTitleUrl(o);if(!f)return;const y=g.id||h,m=await this.getChapters(t,{root:c,titleId:y,titleSlug:f,titleName:l?.name,lang:u})??[];m.length&&i.push({slug:f,chapters:u||p?m.map(b=>({...b,elIndex:void 0,lang:b.lang??u,ts:b.ts??p})):m,...g,id:y})})),this.finalizeRawReleasesData({rawReleases:i})}getRawTitleData(){return this.getTitleData(this.spec.title)}async getTitleData(e){if(!e||!await this.isTitlePage(e))return;const{id:t,slug:r}=this.parseTitleUrl(location.pathname);if(!r)return;const n=t||d(e.id),s=await this.getChapters(e.chapter,{lazy:!0,titleId:n,titleSlug:r,titleName:d(e.name)})??[],i=d(e.name);if(!i)return;const l=await this.getValidImgSrc(e.img,i),o=l&&this.context.includeImgBytes?await $t(l):void 0,c=this.getFirstChapterUrl(),u=e.firstBtn,p=q(e.tags)?.map(f=>f.split(",")).flat().map(f=>f.trim()).filter(Boolean),g=d(e.type),h=q(e.langs)?.map(f=>f.toLowerCase());return{id:n||d(e.id),url:location.origin+location.pathname,slug:r,name:i,langs:h?.length?h:e.langs&&this.siteMeta.defaultLang?[this.siteMeta.defaultLang]:void 0,tags:this.getTagIdsFromNames([...p??[],...g?[g]:[]]),chapters:s,hasMoreChapters:e.hasMore?!!document.querySelector(e.hasMore):void 0,img:l,imgBytes:o,firstUrl:c,firstBtn:!c&&u&&document.querySelector(u)?u:void 0,trackers:this.getTrackersMap(e.trackers)}}getTrackersMap(e){if(!e)return;const t=d(e.mal),r=d(e.anl);if(!t&&!r)return;const n={};return t&&(n.mal=this.parseTrackerId(t)),r&&(n.anl=this.parseTrackerId(r)),n}parseTrackerId(e){return e.split("?")[0].split("#")[0].split("/").filter(Boolean).slice(-1)[0]}getFirstChapterUrl(){const e=d(this.spec.title?.first);if(e){if(e.startsWith("http"))return e;try{return new URL(e,location.href).href}catch{return}}}getValidImgSrc(e,t){return M(33,30,()=>{const r=d(e)||d(`img[alt="${t.replaceAll('"',"")}"]|[attr:data-src,attr-contain:src]`);return!r||r.startsWith("data:")?void 0:document.querySelector(`img[srcset*="${r}"]`)?r.split(" ")[0]:r})}getRawReaderTitleData(e){const t=this.spec.reader?.title;if(!t)return;const r=t.sel?document.querySelector(t.sel)??void 0:void 0,n=d(t.name,r);if(!n)return;const s=St(d(t.img,r));if(e?.slug){let c=this.siteMeta.titleBase;if(e?.id&&(c=c.replace("{id}",e.id)),!c.includes("{"))return c=c.includes("{slug}")?c.replace("{slug}",e.slug):`${c}/${e.slug}`,this.siteMeta.trailing&&!c.endsWith("/")&&(c+="/"),{name:n,img:s,url:new URL(c,location.origin).href,slug:e.slug,id:e.id||d(t.id)}}const i=d(t.url,r),{slug:l,id:o}=this.parseTitleUrl(i);if(!(!n||!i||!l))return{name:n,img:s,url:new URL(i,location.origin).href,slug:l,id:o||d(t.id)||e?.id}}async getRawReaderData(){const{spec:e,siteMeta:t}=this;if(!e?.reader||!await this.isReaderPage(e.reader,!!e.generic))return;const r=e.reader.content;if(!(!r||await v.verifyImgsCotainer(r)))return;const n=this.parseReaderUrl(t.readerBase,location.pathname,location.href),{slug:s,basePath:i,lang:l}=n,o=this.getRawReaderTitleData({id:n.titleId,slug:n.titleSlug});if(!o)return;const c=d(e.reader.group),{id:u,slug:p}=o,g=e.reader?.chapter,h=!!this.context.disableLazyChapters,f=!!this.context.includeHiddenChapters,y=await this.getChapters(g,{titleId:u,titleSlug:p,titleName:o.name,lang:l,lazy:f||!h,includeHiddenChapters:f,timeoutMs:f?3e3:29e3,includeIndex:!0,basePath:i,preferGroup:c})??[],m=d(e.reader.label)?.toLowerCase().replace(o.name.toLowerCase(),"");if(!m)return;const{vol:b,chap:R=0}=P(m)||{},U=this.findNeighborChapter({sel:e.reader.prev,basePath:i,titleUrl:o.url}),G=this.findNeighborChapter({sel:e.reader.next,basePath:i,titleUrl:o.url});return this.finalizeRawReaderData({vol:b,chap:R,lang:l??d(e.reader.lang)?.toLowerCase()??(e.reader.lang?this.siteMeta.defaultLang:void 0),slug:s,basePath:i,group:c??d(e.reader.group),imgs:q(e.reader.imgs),title:{id:u||d(this.spec.reader?.title.id),url:o.url,slug:p,name:o.name,langs:l?[l]:void 0,img:o.img,chapters:y,hasMoreChapters:!y.length&&!f&&!!this.context.disableLazyChapters&&!!g?.label}},{prevSlug:U,nextSlug:G})}async getRawChaptersData(){const e=this.siteMeta.chapters;if(e===V.blank)return;const t=e===V.reader,r=!e||e===V.title,n=t?(await this.getRawReaderData())?.title:r?await this.getRawTitleData():void 0,s=this.spec.chapters?.chapter,i=n?.slug??this.context.titleSlug,l=n?.id??this.context.rawId,o=this.context.lang,c=s?s.json?this.getJsonChapters(L(w(s.json)),{chapterSpec:s,basePath:ae(this.siteMeta.readerBase,{titleSlug:i,titleId:l,lang:o})}):await this.getChapters(s,{titleId:l,titleSlug:i,titleName:n?.name,lazy:this.spec.chapters?.lazy,includeHiddenChapters:!0,lang:o}):n?.chapters;if(!c)return;const u=o?c.filter(p=>!p.lang||p.lang===o):c;return{chapters:u,title:n?{...n,chapters:[]}:await this.getTitleData(this.spec.chapters?.title),hasMore:!1,asc:!1,total:u.length}}async getRawSearchData(){const e=this.spec.search,t=this.context.lang;if(!e)return;const r=e.title;if(r.json){const o=this.getJsonRawReleases(w(r.json),r,t);return o?.length?{rawReleases:o}:void 0}e.delay&&await he(e.delay);const{chapter:n}=r,s=[],i=e.lazy?e.empty||e.loading?550:100:1,l=await M(i,50,()=>{const o=Array.from(document.querySelectorAll(r.sel));if(o.length||e.empty&&document.querySelector(e.empty)||e.loading&&!document.querySelector(e.loading))return o});if(l)return await Promise.all(l.map(async o=>{const c=d(r.url,o),u=E(c),p=d(r.name,o),{slug:g,id:h}=this.parseTitleUrl(u);if(!u||!p||!g)return;const f=d(r.lang,o);f&&t&&f!==t||s.push({id:h||d(r.id,o),slug:g,name:p,img:d(r.img??"img|[attr:data-src,attr-contain:src]",o),lang:f,chapters:await this.getChapters(n,{root:o,titleId:h,titleSlug:g,titleName:p})??[]})})),{rawReleases:s}}getJsonRawReleases(e,t,r){const n=L(e),s=D(n,t.sel);if(!s?.length||!Array.isArray(s))return;const i=[];return s.forEach(l=>{const o=w(D(l,t.lang))?.toLowerCase();if(o&&r&&o!==r)return;const c=D(l,t.url),{id:u,slug:p}=T(c,b=>({id:void 0,slug:b+""}))??this.parseTitleUrl(E(c)),g=w(D(l,t.name));if(!p||!g)return;const h=u||D(l,t.id),f=T(h,b=>b+"")??w(h),y=t.chapter?this.getJsonChapters(l,{chapterSpec:t.chapter,basePath:ae(this.siteMeta.readerBase,{titleId:f,titleSlug:p,lang:o})}):void 0,m=w(D(l,t.img),b=>{try{return new URL(b,location.origin).href}catch{return}});i.push({id:f,slug:p,name:g,lang:o,img:m,chapters:y??[]})}),i}getJsonChapters(e,{chapterSpec:t,basePath:r}){if(!e)return;const n=D(e,t.sel);if(!n)return;const s=Array.isArray(n)?n:[n];if(!s?.length)return;const i=[];return s.forEach(l=>{const o=D(l,t.label),c=T(o,m=>({vol:void 0,chap:m}))??P(w(o));if(!c)return;const u=D(l,t.url),p=this.parseChapterUrl(r,w(u)??T(u,m=>m+"")),g=c.vol??D(l,t.vol),h=D(l,t.id),f=D(l,t.at),y=f?new Date(f).getTime():void 0;i.push({slug:p?.slug,vol:T(g)??w(g,m=>+m),chap:c.chap,id:w(h)??T(h,m=>m+""),lang:w(D(l,t.label))?.toLowerCase(),group:w(D(l,t.group)),ts:y||void 0})}),i.length?j(i,{preferGroup:this.context.preferGroup}):void 0}async getChapters(e,{root:t,titleId:r,titleSlug:n,titleName:s,lang:i,includeHiddenChapters:l=!1,lazy:o=!0,timeoutMs:c,includeIndex:u,basePath:p,preferGroup:g}){const h=e?.sel;if(!h||!e.label)return;const f=h.includes("{titleSlug}")?n?h.replace("{titleSlug}",n):void 0:h;if(!f)return;let y;if(e.trigger&&(!l||(y=await O(e.trigger,{timeoutMs:5e3,lazy:!0}),!y)))return;const m=[],b=await M(c??(o?200:1),50,async()=>{y&&(Z(y),await he(50));const x=Array.from((t??document.documentElement)?.querySelectorAll(f));if(x.length)return x}),R=(b??[]).map((x,J)=>({id:d(e.id,x),label:d(e.label,x)?.toLowerCase(),url:d(e.url,x),at:d(e.at,x),lang:d(e.lang,x),group:d(e.group,x),elIndex:J})),U=s?.toLowerCase(),G=U&&!!R[0]?.label?.startsWith(U),Y=(e.dismiss?(t??document.body).querySelector(e.dismiss):void 0)??y;if(Y&&Z(Y),!b?.length)return[];const F=R.map(({label:x})=>{if(!x)return;const J=G?x?.replace(U,"").trim():x;return P(J)}),C=F[1]?.chap;!F[0]&&(C===void 0||C<=1)&&(F[0]={chap:0});const fr=p??ae(this.siteMeta.readerBase,{titleId:r,titleSlug:n,lang:i}),mr=Date.now();return F.forEach((x,J)=>{if(!x)return;const{id:wr,url:vr,at:yr,lang:br,group:Rr,elIndex:$r}=R[J],Qe=de(yr,this.siteMeta.defaultLang),Q={...x,id:wr,lang:br?.toLowerCase(),group:Rr,ts:Qe?Math.min(mr,Qe):void 0};u&&(Q.elIndex=$r);const X=this.parseChapterUrl(fr,vr);X&&(Q.slug=X.slug,X.lang&&(Q.lang=X.lang)),m.push(Q)}),j(m,{preferGroup:g??this.context.preferGroup})}parseChapterUrl(e,t){if(t?.startsWith("#"))return;const r=t?.startsWith("http")&&!t.includes(`//${location.hostname}/`),n=r?t:E(t);if(n)return r?{slug:n}:this.parseReaderUrl(e,n,t)}async isTitlePage(e){return!(!e||(e.sel||e.lazy)&&!await O(e.sel??e.name?.split("|")?.[0],{lazy:!!e.lazy}))}async isReaderPage(e,t){const r=e?.sel;return t&&!r?!1:!r||!!await O(r,{lazy:!!e.lazy})}static async verifyImgsCotainer(e){const t=e.split(",").map(r=>r.trim()).filter(Boolean).map(r=>`${r} img, ${r} canvas`).join(",");return!!await O(t,{lazy:!0,all:!1})}findNeighborChapter({sel:e,basePath:t,titleUrl:r}){const n=d(e);if(!n||n.startsWith("#")||n.startsWith("/#"))return;const s=E(n);if(s&&!(s===location.pathname||r===s||r===`${location.origin}${s}`))return this.parseReaderUrl(t,s,n).slug||void 0}finalizeRawReaderData(e,{prevSlug:t,nextSlug:r}={}){const n=e.title.chapters;if(!n.length){const c=P(t),u=P(r);return!c&&!u?e:{...e,prev:c?{...c,slug:t}:void 0,next:u?{...u,slug:r}:void 0}}let s,i,l,o;for(let c=0;c<n.length&&!(s&&(!t||l)&&!r&&o);c++){const u=n[c];!s&&(e.slug==u.slug||e.chap===u.chap&&(e.vol===u.vol||e.vol===void 0))?(s=u,i=c):!l&&t===u.slug?l=u:!o&&r===u.slug&&(o=u)}return i!==void 0&&(l??(l=n[i+1]),o??(o=n[i-1])),l&&!l.slug&&(l.slug=t),o&&!o.slug&&(o.slug=r),{...e,inferVol:s?.inferVol,prev:l,next:o}}}var Et=Object.defineProperty,Ut=(a,e,t)=>e in a?Et(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,_t=(a,e,t)=>Ut(a,e+"",t);class me extends v{async getRawReleasesData(){const e=Array.from(document.querySelectorAll("script"));for(let t=0;t<e.length;t++){const r=e[t].textContent;if(!r)continue;const n=r.indexOf('{\\"latest\\":');if(n===-1)continue;const s=W(r.substring(n).split(',\\"page\\":1')[0].replaceAll("\\",""));if(!s)return;try{const i=s.latest.data.map(l=>({name:l.name,slug:l.slug,chapters:l.chapters.map(o=>({chap:o.name,slug:o.name+"",at:new Date(o.published_at||o.public_at).getTime()}))}));return this.finalizeRawReleasesData({rawReleases:i})}catch{break}}return super.getRawReleasesData()}}_t(me,"specId","asura");function Nt(){return Math.random().toString(16).slice(2)}async function zt({addListener:a,removeListener:e,transform:t,filter:r,handler:n,onTimeout:s,timeout:i,once:l}){return new Promise(o=>{a(p);const c=()=>l===!0&&e(p),u=i?setTimeout(()=>{c(),o(void 0),s?.()},i):void 0;async function p(g,...h){g=t?t(g):g,g!==void 0&&(!r||r(g,...h))&&(c(),o(g),n?.(g,...h),u&&clearTimeout(u))}})}async function kt(a){return(await zt({addListener:e=>window.addEventListener("message",e),removeListener:e=>window.removeEventListener("message",e),...a}))?.data}async function Wt(a){const{receiverWindow:e,timeout:t,targetOrigin:r,event:n,args:s}=a,i={reqId:Nt(),event:n,args:s};return(e||window)?.postMessage(i,r??"*"),(await kt({filter:l=>l?.data?.resId===i.reqId,timeout:t??3e4,once:!0}))?.result}const I={isAny:!0};function $(a,...e){return Wt({event:"tk:fetchResult",args:{baseUrl:a,segments:e}})}var qt=Object.defineProperty,Gt=(a,e,t)=>e in a?qt(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Ft=(a,e,t)=>Gt(a,e+"",t);class we extends v{async getRawReaderData(){const e=`https://${location.host}`,[t,r]=await Promise.all([$(e,"api","manga","info"),$(e,"api","read","chapter")]),n=t?.value,s=r?.value;if(!n||!s)return;const i=this.parseReaderUrl(this.siteMeta.readerBase,location.pathname,location.href);if(!i)return;const l=P(s.readChapter?.title);if(l)return this.finalizeRawReaderData({basePath:i.basePath,slug:i.slug,...l,imgs:s.readChapter.pages.map(o=>new URL(o.image,location.origin).href),title:{url:`${e}/manga/${n.id}`,slug:n.id,name:n.title,tags:this.getTagIdsFromNames([n.type].filter(Boolean)),chapters:j(n.chapters.map(o=>({slug:o.id,chap:o.number})),{preferGroup:this.context.preferGroup})}})}}Ft(we,"specId","atsu");var Ht=Object.defineProperty,Jt=(a,e,t)=>e in a?Ht(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Vt=(a,e,t)=>Jt(a,e+"",t);class se extends v{parseTitleUrl(e){return{slug:E(e)?.split("/").filter(Boolean)[1]}}}Vt(se,"specId","bato");function ve(a){return String(a).normalize("NFKD").replace(/[\u0300-\u036f]/g,"").trim().toLowerCase().replace(/[^a-z0-9 -]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-")}var Kt=Object.defineProperty,Yt=(a,e,t)=>e in a?Kt(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Qt=(a,e,t)=>Yt(a,e+"",t);class ye extends v{async getRawReleasesData(){const e=await super.getRawReleasesData();if(e)return{...e,rawReleases:e.rawReleases.map(t=>({...t,slug:`${t.slug}-${ve(t.name)}`}))}}async getRawChaptersData(){const e=L(),t=T(B(e,"result.pagination.total"),n=>Math.ceil(n/100))||0,r=(await Promise.all(Array.from({length:Math.max(0,t)},async(n,s)=>{if(s==0)return this.parseChapters(e);try{const i=location.href.replace("page=1",`page=${s+1}`),l=await fetch(i);return this.parseChapters(await l.json())||[]}catch{return[]}}))).flat();return{chapters:j(r,{preferGroup:this.context.preferGroup})}}parseChapters(e){const t=[];return B(e,"result.items")?.forEach?.(r=>{const n=T(B(r,"chapter_id"),i=>i+""),s=T(B(r,"number"));!n||s===void 0||t.push({slug:n,chap:s,vol:T(B(r,"volume"))||void 0,lang:w(B(r,"language")),group:w(B(r,"scanlation_group.name")),ts:T(B(r,"created_at"))})}),t}}Qt(ye,"specId","comix");var Xt=Object.defineProperty,Zt=(a,e,t)=>e in a?Xt(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,ea=(a,e,t)=>Zt(a,e+"",t);class be extends v{async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=window.pages,r=t?.map(n=>n?.image).filter(Boolean);if(!(!Array.isArray(r)||!r.length))return{...e,imgs:r,isWebtoon:t.some(n=>n.height/n.width>2)}}}ea(be,"specId","dynasty");var ta=Object.defineProperty,aa=(a,e,t)=>e in a?ta(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,ra=(a,e,t)=>aa(a,e+"",t);class Re extends H{async getRawReleasesData(){const e=L();if(e)return this.finalizeRawReleasesData({rawReleases:e.manga.map(t=>({id:t.id?t.id+"":void 0,name:t.title,slug:t.slug,chapters:t.chapters.map(r=>this.praseRawChapter(r))}))})}async getRawSearchData(){const e=L();if(e)return{rawReleases:e.data.map(t=>({id:t.id?t.id+"":void 0,slug:t.slug,name:t.title,img:`${location.origin}/${t.cover}`,chapters:[]}))}}async getRawTitleData(){const{slug:e}=this.parseTitleUrl(location.pathname);if(!e)return;const t=await $(location.origin,"api","backend","api","manga",e);if(!t)return;const r=this.parseRawTitleData(t.value),n=this.context.includeImgBytes&&r.img?await K(r.img):void 0;return{...r,imgBytes:n}}async getRawReaderData(){const{slug:e,titleSlug:t}=this.parseReaderUrl(this.siteMeta.readerBase,location.pathname,location.href);if(!e||!t)return;const[r,n]=await Promise.all([$(location.origin,"api","backend","api","manga",t),$(location.origin,"api","backend","api","chapters","by-number",t,e)]);if(!r||!n)return;const s=await this.parseRawTitleData(r.value),i=n.value;return{slug:e,chap:i.number,basePath:`/${location.pathname.split("/").filter(Boolean).slice(0,-1).join("/")}/`,imgs:i.pages.sort((l,o)=>l.order-o.order).map(l=>`${location.origin}${l.image.startsWith("/")?l.image:`/${l.image}`}`),title:s}}async getRawChaptersData(){const e=L();if(!e)return;const t=this.parseRawTitleData(e);return{chapters:t.chapters,title:{...t,chapters:[]}}}parseRawTitleData(e){return{id:e.id?e.id+"":void 0,url:`${location.origin}/${this.siteMeta.titleBase}/${e.slug}`,slug:e.slug,name:e.title,img:`${location.origin}/${e.cover}`,tags:this.getTagIdsFromNames([e.type,...e.genres.map(t=>t.name)].filter(Boolean)),chapters:e.chapters.map(t=>this.praseRawChapter(t)),hasMoreChapters:e.pagination.hasNextPage}}praseRawChapter(e){return{chap:e.number,slug:e.number+"",ts:new Date(e.createdAt||e.uploadedAt||e.updatedAt).getTime()}}}ra(Re,"specId","falcon");var na=Object.defineProperty,sa=(a,e,t)=>e in a?na(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,ia=(a,e,t)=>sa(a,e+"",t);class $e extends v{async getRawTitleData(){const e=await super.getRawTitleData();if(e)return{...e,chapters:De()}}async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=De();if(t.length)return{...e,title:{...e.title,img:xe(e.title.slug),chapters:t}}}async getRawSearchData(){const e=await super.getRawSearchData();if(e)return{...e,rawReleases:e.rawReleases.map(t=>({...t,img:xe(t.slug)}))}}}ia($e,"specId","kagane");function xe(a){return`https://api.${location.host}/api/v1/series/${a}/thumbnail`}function De(){const a=["initialBooksData","initialChapters"],e=Array.from(document.querySelectorAll("script"));for(let t=0;t<e.length;t++){const r=e[t].textContent;if(r)for(const n of a){const s=r.indexOf(n);if(s===-1)continue;const i=r.slice(s),l=W(i.slice(i.indexOf("["),i.indexOf("}]")+2).replaceAll("\\",""));if(!l?.length||!Array.isArray(l))return[];try{const o=[];return l.map(c=>{const u=P(c.name);u&&o.push({...u,slug:c.id,ts:c.created?new Date(c.created).getTime():void 0})}),j(o)}catch{return[]}}}return[]}function la(a,e){const t=a[0]===e?a.substring(1):a;return t[t.length-1]===e?t.substring(0,t.length-1):t}var oa=Object.defineProperty,ca=(a,e,t)=>e in a?oa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,ua=(a,e,t)=>ca(a,e+"",t);class ie extends v{async getRawReleasesData(){const e=this.getNewSiteMeta(this.spec.releases?.title),t=await super.getRawReleasesData();if(t)return{...t,siteMeta:e}}async getRawTitleData(){if(!await this.isTitlePage(this.spec.title))return;const e=this.getNewSiteMeta(this.spec.title,`${location.origin}${location.pathname}`),t=await super.getRawTitleData();if(t)return{...t,siteMeta:e}}async getRawReaderData(){if(!await this.isReaderPage(this.spec.reader,this.spec.generic))return;const e=this.getNewSiteMeta(this.spec.reader?.title),t=await super.getRawReaderData();if(t)return{...t,siteMeta:e}}async getRawSearchData(){const e=this.getNewSiteMeta(this.spec.search?.title),t=await super.getRawSearchData();if(t)return{...t,siteMeta:e}}getNewSiteMeta(e,t){if(t??(t=ga(e)),!t)return;if(!this.siteId){const i={...this.siteMeta,releases:null,titleBase:"",readerBase:"",titleIdType:pe.name,trailing:t.endsWith("/"),defaultLang:d("html|attr:lang")||"en"};return this.siteMeta=i,i}const r=this.extractBasePath(t),n=this.siteMeta;if(n.titleBase===r)return;const s={...n,titleBase:r,readerBase:n.readerBase.replace(n.titleBase,r)};return this.siteMeta=s,s}extractBasePath(e){const t=e.startsWith("/")?e:E(e);return la(t,"/").split("/").slice(0,-1).join("/")}}ua(ie,"specId","madara");function ga(a){if(!a)return;const e=a.sel?document.querySelector(a.sel)??void 0:void 0;return d(a.url,e)}var pa=Object.defineProperty,ha=(a,e,t)=>e in a?pa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,da=(a,e,t)=>ha(a,e+"",t);class Se extends v{async getRawTitleData(){const e=await super.getRawTitleData();if(!e)return;const t=await Te(this.context.preferGroup),r=new Set;return t.forEach(({lang:n})=>{n&&r.add(n)}),{...e,chapters:t,langs:r.size?Array.from(r):[this.siteMeta.defaultLang||"en"]}}async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=await Te(e.group||this.context.preferGroup),r=t[0]?.lang;return this.finalizeRawReaderData({...e,lang:r,title:{...e.title,chapters:t,langs:r?[r]:void 0}})}}da(Se,"specId","mangaball");async function Te(a){const e=await M(100,50,()=>{try{return ALL_CHAPTERS.length?ALL_CHAPTERS:void 0}catch{return}});if(!e)return[];const t=[];return e.forEach(r=>{r.translations.forEach(n=>{const s=n.volume;t.push({chap:r.number_float,vol:s>0?s:void 0,slug:n.id,lang:n.language,group:n.group?.name,ts:new Date(n.date).getTime()})})}),j(t,{preferGroup:a})}var fa=Object.defineProperty,ma=(a,e,t)=>e in a?fa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,wa=(a,e,t)=>ma(a,e+"",t);const va={a:.1,b:.2,c:.3,d:.4};class Ce extends v{parseTitleUrl(e){return{slug:E(e)?.split("/").filter(Boolean)[1]}}async getRawReleasesData(){const e=L()?.data;if(!e)return;const t=[];return e.forEach(({relationships:r,attributes:n,id:s})=>{const i=r.find(({type:p})=>p==="manga"),l=_(n.volume),o=_(n.chapter);if(o===void 0)return;const{title:c}=i.attributes,u=c.en??Object.values(c)[0];t.push({slug:i.id,name:u,chapters:[{slug:n.externalUrl||s,vol:l,chap:o,lang:n.translatedLanguage,ts:new Date(n.readableAt).valueOf()}]})}),super.finalizeRawReleasesData({rawReleases:t})}async getRawTitleData(){const e=`https://api.${location.host}/manga/`,[t,r]=await Promise.all([$(e,I),$(e,I,"feed")]);if(!t||!r)return;const n=r.value.data?.map?.(o=>{const{attributes:c,id:u}=o;if(typeof c!="object"||typeof u!="string"||!u)return;const{externalUrl:p,title:g,volume:h,chapter:f,translatedLanguage:y}=c;return{slug:p||u,label:g||void 0,vol:_(h),chap:_(f),lang:y||"en",ts:new Date(c.readableAt).valueOf()}}).filter(o=>o?.chap!=null)??[],{data:s}=t.value;if(!s)return;const i=Pe({data:s,getTagIdsFromNames:o=>this.getTagIdsFromNames(o)});if(!i)return;const l=this.context.includeImgBytes&&i.img?await K(i.img):void 0;return{...i,imgBytes:l,chapters:j(n,{preferGroup:this.context.preferGroup}),hasMoreChapters:(r.value.total||0)>(r.value.limit||0)}}async getRawReaderData(){const e="https://api.mangadex.org/",[t,r,n]=await Promise.all([$(e,"chapter",I),$(e,"at-home","server",I),$(e,"manga",I,"aggregate")]);if(!t||!r||!n)return;const s=t.value.data,{volume:i,chapter:l,externalUrl:o,translatedLanguage:c}=s.attributes||{},{baseUrl:u,chapter:{data:p,dataSaver:g,hash:h}}=r.value,f=s.relationships?.find?.(C=>C.type==="manga");if(!f)return;const y=Pe({data:f,getTagIdsFromNames:C=>this.getTagIdsFromNames(C)});if(!y||typeof n.value.volumes!="object")return;const m=Ie(n.value,{preferGroup:this.context.preferGroup})??[];(typeof l!="string"||l==="none")&&!m.length&&m.push({chap:0,slug:s.id});const b=m.findIndex(C=>C.slug===s.id),R=s.relationships?.find?.(C=>C.type==="scanlation_group"),U=u.endsWith("/")?u:u+"/",G=!!localStorage.getItem("md")?.includes?.('"dataSaver":true'),Y=`${U}${G?"data-saver":"data"}/`,F=((G?g:p)??[]).map?.(C=>`${Y}${h}/${C}`)??[];return{externalUrl:o,vol:_(i),inferVol:m[b]?.inferVol,chap:_(l)||0,imgs:F,lang:c,slug:s.id,prev:m[b+1],next:m[b-1],basePath:"/chapter/",group:R?.attributes?.name,groupUrl:R?.attributes?.website,isWebtoon:f?.attributes?.tags?.some(C=>C.attributes.name.en==="Long Strip"),title:{...y,chapters:m}}}async getRawChaptersData(){const e=L();if(!e)return;let t;try{t=Ie(e,{preferGroup:this.context.preferGroup})}catch{return}if(t)return{chapters:t,lang:this.context.lang??"en",asc:!1,hasMore:!1,total:t.length}}}wa(Ce,"specId","mangadex");function _(a){if(typeof a!="string"||a==="none")return;const e=parseFloat(a);if(e!==e)return;const t=a[a.length-1];return e+(va[t]??0)}function Ie(a,{preferGroup:e}){if(typeof a.volumes!="object")return;const t=Object.values(a.volumes).map(({volume:r,chapters:n})=>{const s=_(r);return Object.values(n).map(({id:i,chapter:l})=>{const o=_(l);if(o!==void 0)return{vol:s,chap:o,slug:i}})}).flat().filter(Boolean).reverse();return j(t,{preferGroup:e})}function Pe({data:a,getTagIdsFromNames:e}){const{id:t,attributes:r,relationships:n}=a;if(!t||typeof t!="string"||typeof r!="object")return;const{title:s,availableTranslatedLanguages:i,altTitles:l,tags:o,contentRating:c}=r;if(typeof s!="object"||i&&!Array.isArray(i))return;const u=Object.values(s)[0];if(!u||typeof u!="string")return;const p=ya(),g=(i??[])?.map?.(R=>typeof R=="string"?R:void 0).filter(Boolean)??[],h=g.filter(R=>R&&(!p||p.includes(R))),f=l?.map?.(R=>{const[[,U]=[]]=Object.entries(R);return U}),y=n?.find?.(R=>R.type==="cover_art")?.attributes?.fileName,m=y?`https://mangadex.org/covers/${t}/${y}.256.jpg`:void 0,b=(o||[]).map(R=>R?.attributes?.name?.en).concat(c).filter(Boolean);return{url:`${location.origin}/title/${t}`,slug:t,name:u,altNames:f,langs:h.length>0?h:g.length>0?g:["en"],img:m,tags:e(b)}}function ya(){const a=localStorage.getItem("md");if(!a)return;const e=W(a);if(e)try{const t=e?.userPreferences?.filteredLanguages;return t?.length?t:void 0}catch{return}}var ba=Object.defineProperty,Ra=(a,e,t)=>e in a?ba(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,$a=(a,e,t)=>Ra(a,e+"",t);class Me extends v{async getRawReaderData(){if((await O(".current-viewtype",{lazy:!0,all:!1}))?.textContent?.trim().toLowerCase()!=="volume")return await super.getRawReaderData()}async getRawChaptersData(){const e=this.context.lang??"en",t=await O(`.tab-content[data-name="chapter"] a.dropdown-item[data-code="${e.toUpperCase()}"]`,{lazy:!0,all:!1});if(t)return Z(t),await O(`.tab-content[data-name="chapter"] li.item[data-number] a[href*="/${e}/"]`,{lazy:!0,all:!1}),await super.getRawChaptersData()}async getRawSearchData(){const e=await super.getRawSearchData();if(!e)return;const t=this.context.lang??"en";return{...e,rawReleases:e.rawReleases.map(r=>({...r,lang:r.lang??t}))}}}$a(Me,"specId","mangafire");var xa=Object.defineProperty,Da=(a,e,t)=>e in a?xa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Sa=(a,e,t)=>Da(a,e+"",t);class Be extends v{async getRawReaderData(){const e=await super.getRawReaderData();return e&&{...e,imgs:await this.getImgs()}}parseReaderUrl(e,t){const{slug:r,basePath:n}=super.parseReaderUrl(e,t),s=r.split("/").filter(Boolean),i=s[s.length-1];return{basePath:n,slug:i.startsWith("pg-")?s.slice(0,-1).join("/"):r}}async getImgs(){const e=await M(100,20,()=>window.imgsrcs),t=window.CryptoJS,r=t.enc.Hex.parse("e11adc3949ba59abbe56e057f20f883e"),n={iv:t.enc.Hex.parse("1234567890abcdef1234567890abcdef"),padding:t.pad.ZeroPadding};return t.AES.decrypt(e,r,n).toString(t.enc.Utf8).split(",")}}Sa(Be,"specId","mangago");var Ta=Object.defineProperty,Ca=(a,e,t)=>e in a?Ta(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Ia=(a,e,t)=>Ca(a,e+"",t);class Le extends v{async getRawTitleData(){const e=`https://backend.${location.host}`,t=await $(e,"chapters-with-ids",I,I),r=await super.getRawTitleData();if(!(!t?.value||!r))return{...r,langs:await Pa(),chapters:le(t.value)}}async getRawChaptersData(){const e=L();if(e)return{chapters:le(e)}}async getRawReaderData(){const e=`https://backend.${location.host}`,[t,r]=await Promise.all([$(e,"chapters-with-ids",I,I),$(e,"read",I)]);if(!t?.value||!r?.value?.length)return;const n=await super.getRawReaderData();if(!n)return;const s=new URLSearchParams(location.search).get("number")??"0";return{...n,slug:`${n.slug}?number=${s}`,imgs:r.value,title:{...n.title,chapters:le(t.value)}}}}Ia(Le,"specId","mangahaven");async function Pa(){const a=document.querySelector('[role="tabpanel"] button');if(!a)return;const e=document.createElement("style");e.innerHTML="[data-radix-popper-content-wrapper] { display: none !important; }",document.head.appendChild(e),a.click();const t=await M(50,10,()=>q('img[src*="/flags/"]|attr:src|pattern:.+/(.+).svg'));return a.click(),setTimeout(()=>document.head.removeChild(e),1e3),t}function le(a){const e=[];return a?.forEach?.(t=>{const r=+t.chapter;isNaN(r)||!t.id||e.push({chap:r,slug:`${t.id}?number=${t.chapter}`,lang:t.lang?.toLowerCase?.()})}),e}var Ma=Object.defineProperty,Ba=(a,e,t)=>e in a?Ma(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,La=(a,e,t)=>Ba(a,e+"",t);class je extends se{}La(je,"specId","mangapill");var ja=Object.defineProperty,Aa=(a,e,t)=>e in a?ja(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Oa=(a,e,t)=>Aa(a,e+"",t);class Ae extends v{async getRawTitleData(){const e=await super.getRawTitleData();return e&&{...e,chapters:e.chapters.map(t=>({...t,slug:t.slug?.split("/").filter(Boolean).slice(-1)[0]}))}}}Oa(Ae,"specId","mangaplus");var Ea=Object.defineProperty,Ua=(a,e,t)=>e in a?Ea(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,_a=(a,e,t)=>Ua(a,e+"",t);class Oe extends ie{async getRawReaderData(){const e=await super.getRawReaderData();if(e)return{...e,title:{...e.title,id:await this.getReaderTitleId()}}}async getReaderTitleId(){const e=await window.HISTORY?.getStored?.();if(!e||typeof e!="object")return;const t=Object.values(e).filter(Boolean);if(!t.length)return;t.sort((n,s)=>s.time-n.time);const r=t[0].manga_ID;return w(r)??T(r,n=>n+"")}}_a(Oe,"specId","mangastream");var Na=Object.defineProperty,za=(a,e,t)=>e in a?Na(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,ka=(a,e,t)=>za(a,e+"",t);class Ee extends v{async getRawReaderData(){const e=await super.getRawReaderData();if(e?.imgs?.length!==1)return e;e.slug.includes("//")&&(e.slug=Ue(e.slug).split("/").filter(Boolean)[3]);const t=T(document.querySelector("select.index-page,.page_select select")?.childElementCount,h=>h-1);if(!t||t<=1)return e;const[r]=e.imgs,n=r.split(/\d+\.[a-z]{3,5}$/i)?.[0];if(!n)return e;const s=(+(d(".page_select .select|text")||"1")||1)-1,i=r.replace(n,""),[l,o]=i.split("."),c=l.length,u=+l-s,p=u+t-1,g=[];for(let h=u;h<=p;h++)g.push(`${n}${(h+"").padStart(c,"0")}${o?`.${o}`:""}`);return{...e,imgs:g}}parseChapterUrl(e,t){if(t)return this.parseReaderUrl(e,Ue(t))}}ka(Ee,"specId","mangatown");function Ue(a){return a.replace(location.origin,"").replace("//","/")}var Wa=Object.defineProperty,qa=(a,e,t)=>e in a?Wa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Ga=(a,e,t)=>qa(a,e+"",t);class _e extends v{async getRawReaderData(){const e=await super.getRawReaderData();return e&&{...e,slug:e.slug.split("/").slice(0,-1).join("/")||e.slug.split("/")[0]}}}Ga(_e,"specId","mangaworld");var Fa=Object.defineProperty,Ha=(a,e,t)=>e in a?Fa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Ja=(a,e,t)=>Ha(a,e+"",t);class Ne extends v{async getRawTitleData(){const e=await super.getRawTitleData();if(e)return{...e,hasMoreChapters:e.chapters.length===50}}}Ja(Ne,"specId","mgeko");var Va=Object.defineProperty,Ka=(a,e,t)=>e in a?Va(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Ya=(a,e,t)=>Ka(a,e+"",t);class ze extends H{async getRawReleasesData(){}async getRawSearchData(){}async getRawTitleData(){const e=await ke();if(!e)return;const t=d("#cover img|[attr:data-src,attr-contain:src]")??e.img;return{...e,img:t,imgBytes:this.context.includeImgBytes&&e.img?await K(e.img):void 0}}async getRawReaderData(){const e=await ke();if(!e)return;const t=d("#image-container img|[attr:data-src,attr-contain:src]"),r=re(t);if(!r)return;const n=r.pathname.split("/").filter(Boolean).slice(0,-1).join("/"),s=`${r.origin}/${n}/`,i=r.pathname.split("?")[0].split("#")[0].split(".").slice(-1)[0]||"webp";return{chap:0,slug:"1",basePath:e.url.replace(location.origin,"").slice(1),imgs:Array.from({length:e.totalImgs},(l,o)=>`${s}${o+1}.${i}`),title:{name:e.name,slug:e.slug,url:e.url,chapters:[{slug:"1",chap:0}]}}}async getRawChaptersData(){const e=await this.getRawTitleData();if(!e)return;const{chapters:t,...r}=e;return{title:{...r,chapters:[]},chapters:t}}}Ya(ze,"specId","nhentai");async function ke(){const a=await M(100,20,()=>window._gallery);if(!a?.id||!a?.title||!a?.images?.pages)return;const{title:e,images:{pages:t,cover:r},media_id:n}=a;return{name:e.pretty??e.english??e.japanese,slug:a.id+"",url:`${location.origin}/g/${a.id}`,chapters:[{slug:"1",chap:0}],totalImgs:t.length,img:await Qa(n,r.t)}}async function Qa(a,e){if(!a||!e)return;const t={j:"jpg",p:"png",g:"gif",w:"webp"}[e];if(!t)return;const r=(await M(10,20,()=>window._n_app))?.options?.thumb_cdn_urls?.[0];if(r)return`https://${r}/galleries/${a}/cover.${t}`}var Xa=Object.defineProperty,Za=(a,e,t)=>e in a?Xa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,er=(a,e,t)=>Za(a,e+"",t);class We extends v{finalizeRawReaderData(e,{prevSlug:t,nextSlug:r}={}){if(!e.title.chapters.length){const n=P(t?.split(".").slice(0,-1).join(".")),s=P(r?.split(".").slice(0,-1).join("."));return!n&&!s?e:{...e,prev:n?{...n,slug:t}:void 0,next:s?{...s,slug:r}:void 0}}return super.finalizeRawReaderData(e,{prevSlug:t,nextSlug:r})}}er(We,"specId","rawkuma");var tr=Object.defineProperty,ar=(a,e,t)=>e in a?tr(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,rr=(a,e,t)=>ar(a,e+"",t);class qe extends v{async getRawTitleData(){const e=await super.getRawTitleData();if(!e)return;const t=q(".info-detail__row > .genre-btn,.info__right .stats__row:first-child|text")?.map(r=>[r,...r.split(" ")]).flat();return Ge({...e,tags:this.getTagIdsFromNames(t)??[]},".episode-header .episode-cnt")}async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=`${location.origin}/series/${e.title.slug}/info`;return{...e,title:{...Ge({...e.title,url:t,tags:[]},".episode-list .js-ep-cnt"),hasMoreChapters:!1}}}async getRawChaptersData(){const{rawId:e,skip:t}=this.context,r=1e3,n=t?Math.floor(t/1e3)+1:1;try{const s=await fetch(`/series/${e}/episodes?page=${n}&sort=NEWEST&max_limit=${r}`);return nr(await s.json())}catch{return}}parseTitleUrl(e){if(!e)return{};const t=e.split("/").filter(Boolean);return{slug:t[1]??t[0]}}}rr(qe,"specId","tapas");function Ge(a,e){const t=sr(e)>20;return{...a,chapters:t?[]:a.chapters,hasMoreChapters:t}}function nr(a){const e=a?.data?.episodes;if(!Array.isArray(e))return;const t=e.map(n=>({chap:n.pending_scene??n.scene,slug:n.id+"",ts:new Date(n.publish_date)?.valueOf?.()||void 0})),r=a?.data?.pagination;return{chapters:t,total:r?.total??t.length,hasMore:!!r?.has_next}}function sr(a){return+(document.querySelector(a)?.textContent?.trim().split(" ")[0]||0)}var ir=Object.defineProperty,lr=(a,e,t)=>e in a?ir(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,or=(a,e,t)=>lr(a,e+"",t);class Fe extends v{async getRawTitleData(){const e=new URLSearchParams(location.search),t=e.get("episode_no"),r=e.get("title_no");if(t||!r)return;const n=await super.getRawTitleData();if(!n)return;const s=location.hostname.startsWith("m."),i=location.pathname.split("/")[1];return{...n,slug:`${n.slug}?title_no=${r}`,id:r,langs:i?[i]:void 0,chapters:s?[]:n.chapters.map(l=>({...l,lang:i})),hasMoreChapters:s||(document.querySelector(".paginate")?.childElementCount??1)>1}}async getRawReaderData(){const e=new URLSearchParams(location.search),t=e.get("episode_no"),r=e.get("title_no"),n=t?+t:void 0;if(!t||!r||typeof n!="number"||isNaN(n))return;const s=document.title.split("|")[1]?.trim();if(!s)return;const i=location.pathname.split("/"),l=`${i.slice(0,4).join("/")}/list?title_no=${r}`,o=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 || a|attr:href|pattern:.+episode_no=(\\d+).*"},{lazy:!1,titleId:r,titleSlug:l,titleName:s}),c=i[1];return{chap:n,lang:c,slug:`${location.pathname}?title_no=${r}&episode_no=${t}`,basePath:"",imgs:await this.getReaderImgs(),isWebtoon:!0,title:{id:r,url:l,slug:l,name:s,langs:[c],chapters:(o??[]).map(u=>({...u,lang:c})),hasMoreChapters:!1}}}async getReaderImgs(){const e=q("#_imageList img|[attr:data-url,attr:src]");return e?.length?e:await M(100,50,()=>window.__viewerState__?.scrollViewerParam?.imageList?.map(({url:t})=>t).filter(Boolean))}parseReaderUrl(e,t,r){if(!r)return{basePath:"",slug:t};if(r.startsWith("http://")||r.startsWith("https://")){const n=re(r);return{basePath:"",slug:n.pathname+n.search}}return{basePath:"",slug:r}}}or(Fe,"specId","webtoon");function cr(a){if(a)return typeof a=="string"||Array.isArray(a)?a.length?a:void 0:typeof a=="object"?Object.keys(a).length?a:void 0:a}var ur=Object.defineProperty,gr=(a,e,t)=>e in a?ur(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,pr=(a,e,t)=>gr(a,e+"",t);class He extends v{async getRawReleasesData(){const e=L();if(!e?.data?.length)return;const t=[];return e.data?.forEach(r=>{const n=P(r.chapter)?.chap,s=Je(r.relationships?.manga);!s||n===void 0||t.push({...s,chapters:[{vol:+r.vol||void 0,chap:n,slug:r.id,lang:w(r.lang),ts:w(r.published_at,i=>new Date(i).getTime())}]})}),this.finalizeRawReleasesData({rawReleases:t})}async getRawTitleData(){const e=await super.getRawTitleData();if(!e)return;const t=`https://api.${location.host}`,[r,n]=await Promise.all([$(t,"manga",e.id??I),$(t,"manga",e.id??I,"chapters")]),s=r?.value?.relationships?.available_languages?.map?.(i=>w(i)).filter(Boolean);if(e.langs=cr(s),n){const i=[];n.value.data?.forEach(l=>{const o=P(l.chapter),c=w(l.id);!o||!c||i.push({vol:+l.volume||void 0,chap:o.chap,slug:c,lang:w(l.language),group:w(l.relationships?.groups?.[0]?.name),ts:w(l.created_at,u=>new Date(u).getTime())})}),i.length&&(e.chapters=i,e.hasMoreChapters=n.value.total>n.value.limit)}return e}async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=e.slug.split("/")[0];e.slug=`${t}/1`;const r=`https://api.${location.host}`,[n,s]=await Promise.all([$(r,"chapter",t),$(r,"manga",I,"aggregate")]);if(n){const i=n.value;e.lang=w(i.language),e.group=w(i.relationships?.groups?.[0]?.name)}return s&&(e.title.chapters=this.parseAggregateChapter(s.value)),e}async getRawChaptersData(){const e=L();return e?{chapters:this.parseAggregateChapter(e)}:void 0}parseAggregateChapter(e){const t=e.groups?.map?.(s=>w(s?.name)),r=e.langs?.map?.(s=>w(s)).filter(Boolean),n=[];return e.chapters?.forEach(s=>{const i=P(s.chapter);if(!i)return;const l=+s.volume||void 0,o=i.chap;Object.entries(s.entries||{}).forEach(([c,u])=>{const p=w(u.published_at,h=>new Date(h).getTime()),g=T(u.language,h=>r?.[h]);u?.groups?.forEach(h=>{n.push({vol:l,chap:o,slug:c,lang:g,group:t[h],ts:p})})})}),j(n,{preferGroup:this.context.preferGroup})}async getRawSearchData(){try{const e=new URLSearchParams(location.search).get("title");if(!e)return;const t=await fetch(`https://api.${location.host}/manga?title=${encodeURIComponent(e)}&limit=42`);if(!t.ok)return;const r=await t.json(),n=[];return r?.data?.forEach?.(s=>{const i=Je(s);i&&n.push(i)}),{rawReleases:n}}catch{return}}}pr(He,"specId","weebdex");function Je(a){if(!a)return;const e=a?.relationships?.cover;return{id:a.id,slug:ve(a.title),name:a.title,img:e?`https://srv.notdelta.xyz/covers/${a.id}/${e.id}${e.ext}`:void 0,chapters:[]}}const hr=[me,we,se,ye,be,Re,$e,ie,Se,Ce,Me,Be,Le,je,Ae,Oe,Ne,Ee,_e,ze,We,qe,Fe,He];function Ve(a){const e=hr.find(t=>t.specId===a.spec.id)??v;return new e(a)}async function dr(a){const{spec:e,type:t}=a,r=a.siteMeta??e?.meta;if(e&&r){const n=t?[t]:Ke(r,e.generic);if(!n.length)return;const s=Ve({...a,spec:e,siteMeta:r});return await k(n.map(i=>s.getRawPageByType(i,n.length>1)))}return await k((a.genericSpecs??[]).map(n=>{if(!n.meta||!n.generic)return[];const s=t?[t]:Ke(n.meta,n.generic);if(!s.length)return[];const i=Ve({...a,spec:n,siteMeta:n.meta});return s.map(l=>i.getRawPageByType(l,!0))}).flat())}function Ke(a,e){if(location.pathname==="/")return[];const{titleBase:t,readerBase:r}=a,n=location.pathname.split("/").filter(Boolean),s=Ye(n,r),i=Ye(n,t);if(s&&i)return[S.reader,S.title];const l=[];return!i&&(s!==!1||e)&&l.push(S.reader),!s&&(i!==!1||e)&&l.push(S.title),!l.length&&e?[S.reader,S.title]:l}function Ye(a,e){if(!e)return;const t=e.split("/").filter(Boolean),r=t.indexOf("{slug}"),n=r===t.length-1,s=!n&&r!==-1;if(n&&(t.pop(),!t.length))return;const i=a.length-t.length;if(s?i<0:i<=0)return!1;let l=!1;for(let o=0;o<t.length;o++){const c=t[o];if(c[0]!=="{"){if(c!==a[o])return!1;l=!0}}if(l&&i===(s?0:1))return!0}z.PageType=S,z.scrape=dr}));
1
+ (function(z,k){typeof exports=="object"&&typeof module<"u"?k(exports):typeof define=="function"&&define.amd?define(["exports"],k):(z=typeof globalThis<"u"?globalThis:z||self,k(z._trackkun_={}))})(this,(function(z){"use strict";function k(a){let e=!1;return new Promise((t,r)=>{Promise.all(a.map(async n=>{const s=await n;!e&&s&&(e=!0,t(s))})).then(()=>{e||t(void 0)})})}function W(a){if(a)try{return JSON.parse(a)}catch(e){console.log(e);return}}async function M(a,e,t){const r=await t(()=>{a=0});if(r!==void 0)return r;if(!(a<=0))return await new Promise(n=>{setTimeout(async()=>{const s=await M(a-1,e,t);n(s)},e)})}async function O(a,e,t=0){const r=e.root??document.documentElement,n=e.timeoutMs??1e4;return M(e.lazy===!0?n/50:0,50,()=>{const s=e.all===!0?Array.from(r.querySelectorAll(a)):r.querySelector(a)??void 0;return(e.all?!s?.length:!s)?void 0:s})}function Z(a){if(a instanceof HTMLOptionElement){const e=a.parentElement instanceof HTMLOptGroupElement?a.parentElement.parentElement:a.parentElement;if(!e||!(e instanceof HTMLSelectElement))return;const t=a.getAttribute("value")||"";if(e.value===t)return;e.value=t,e.dispatchEvent(new Event("change"));return}a instanceof HTMLAnchorElement&&a.addEventListener("click",e=>e.preventDefault(),{once:!0}),a.click(),a.dispatchEvent(new PointerEvent("pointerdown",{bubbles:!0,cancelable:!0,pointerType:"mouse",button:0})),a.dispatchEvent(new MouseEvent("mousedown",{bubbles:!0,cancelable:!0,view:window,button:0}))}const oe={text:ge,attr:at,"attr-contain":rt,value:nt,row:st,"bg-image":it,json:lt},Xe={pattern:ot,remove:ct,atob:ut};function d(a,e){if(a)return ce(a,e,et)}function q(a,e){if(a)return ce(a,e,tt)}function ce(a,e,t){if(!a)return;const r=a.split("||").map(n=>n.trim()).filter(Boolean);for(const n of r){const s=Ze(n);if(!s)continue;const i=t(e??document.documentElement,s);if(i)return i}}function Ze(a){const[e,t,...r]=a.split("|");if(!t)return;const n=t?.startsWith("[")&&t.endsWith("]")?t.substring(1,t.length-1).split(","):[t];return{selector:e||void 0,extractors:n.map(ee),transformers:r.map(ee)}}function ee(a){const e=a.indexOf(":"),t=e!==-1;return{fn:t?a.substring(0,e):a,param:t?a.substring(e+1):""}}function et(a,e){if(!e.selector)return ue(a,e);const t=gt(e.selector);for(const r of t){const n=Array.from(a.querySelectorAll(r));for(const s of n){const i=ue(s,e);if(i)return i}}}function tt(a,e){const t=e.selector?Array.from(a.querySelectorAll(e.selector)):[a],r=[];for(const n of t)for(const s of e.extractors){const i=oe[s.fn],l=i(n,s.param);if(l){r.push(te(l,e.transformers));break}}if(r.length)return r}function ue(a,e){for(const t of e.extractors){const r=oe[t.fn],n=r(a,t.param);if(n)return te(n,e.transformers)}}function te(a,e){let t=a;for(const r of e){const n=Xe[r.fn];n&&(t=n(t,r.param).trim())}return t}function ge(a){return Array.from(a.childNodes).filter(e=>e.nodeType===3).map(e=>N(e.textContent)).filter(Boolean).join(" ").trim()||N(a.textContent)}function at(a,e){return N(a.getAttribute(e))}function rt(a,e){let t=a.getAttribute(e);if(!t){const r=a.getAttributeNames().find(n=>n.includes(e));r&&(t=a.getAttribute(r))}return N(t)}function nt(a){return a.value}function st(a,e){if(!e)return;const t=N(a.textContent)?.toLowerCase(),r=e.toLowerCase();if(!(t!==r&&t!==`${r}:`))return N(a.nextElementSibling?.textContent??a.nextSibling?.textContent)}function it(a){const e=getComputedStyle(a).backgroundImage;if(!(!e||!e.startsWith("url(")))return e.slice(5,-2)||void 0}function lt(a,e){const t=B(W(ge(a)),e);return typeof t=="number"?t+"":typeof t=="string"?N(t+""):void 0}function B(a,e){if(!a||!e)return;const t=e.indexOf("."),r=t!==-1,n=r?e.substring(0,t):e,s=r?e.substring(t+1):void 0;try{const i=a[n];return s?B(i,s):i}catch{return}}function N(a){if(a)return a?.replace(/(\n|\t)/g," ").trim()||void 0}function ot(a,e){if(e)try{return a.replace(new RegExp(e,"i"),"$1")}catch{}return a}function ct(a,e){if(e)try{return a.replaceAll(new RegExp(e,"gi"),"")}catch{}return a}function ut(a){try{return window.atob(a)}catch{return a}}function gt(a){const e=[];let t="",r=!1;for(let s=0;s<a.length;s++){const i=a[s];if(i==="["?r=!0:i==="]"&&(r=!1),i===","&&!r){const l=t.trim();l.length>0&&e.push(l),t=""}else t+=i}const n=t.trim();return n.length>0&&e.push(n),e}var pt=(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))(pt||{}),ht=(a=>(a[a.ok=1]="ok",a[a.hidden=2]="hidden",a[a.deleted=3]="deleted",a))(ht||{}),dt=(a=>(a[a.aggregator=0]="aggregator",a[a.scanlator=1]="scanlator",a))(dt||{}),ft=(a=>(a[a.pending=0]="pending",a[a.completed=1]="completed",a[a.offline=2]="offline",a[a.incompat=3]="incompat",a))(ft||{}),pe=(a=>(a.id="id",a.name="name",a.slug="slug",a))(pe||{}),V=(a=>(a.blank="about:blank",a.title="meta.title",a.reader="meta.reader",a))(V||{});function he(a=0){return new Promise(e=>setTimeout(e,a))}const mt=/(vol(ume)?|season)(\s*|-|\.)(\d+)/i,wt=/^S([1-9])\s/i,vt=/(ch(ap(t(er)?|\.)?|\.)?|#|episode\.?|capitolo\.?|capitulo\.?|bölüm\.?)(\s*|-)(\d+([_-~,.]\d+)?)/i,yt=/\d+([_-~,.]\d+)?/,bt=/[_-~,]/;function Rt(a){const e=a.match(mt);if(e)return{volStr:e[0],volValueStr:e[4]};const t=a.match(wt);return t?{volStr:t[0],volValueStr:t[1]}:{}}function P(a){if(!a)return;if(!isNaN(+a))return{chap:+a};const{volStr:e,volValueStr:t}=Rt(a),r=e?a.replace(e,"").trim():a,n=r.match(vt),s=r.match(yt),i=n?.[6],l=i??s?.[0];if(!l)return;const o=+l.replace(bt,".");if(isNaN(o))return;const c=e&&t&&!isNaN(+t)&&a.indexOf(e)<a.indexOf(i?n[0]:s[0])?+t:void 0;return{vol:c===void 0||c<=0?void 0:c,chap:o}}async function K(a,e=240){return new Promise(t=>{const r=new Image;r.crossOrigin="anonymous",r.onerror=()=>t(void 0),r.onload=()=>{const n=document.createElement("canvas"),s=n.getContext("2d"),i=Math.max(1,r.naturalWidth/e),l=r.naturalWidth/i,o=r.naturalHeight/i;n.width=l,n.height=o;const c=/iPad|iPhone|iPod/.test(navigator.userAgent);try{s.drawImage(r,0,0,l,o);const u=n.toDataURL(c?"image/jpg":"image/webp",c?.99:.8).split(",").slice(-1)[0];t(u)}catch{t(void 0)}},r.src=a})}async function $t(a,e=240){const t=await xt(a);if(t)return await new Promise(async r=>{const n=K(t,e),s=setTimeout(()=>r(void 0),100),i=await n;clearTimeout(s),r(i)})}async function xt(a){if(a.startsWith("blob:"))return a;try{const e=await fetch(a);if(e.status>=400)return;const t=await e.blob();return URL.createObjectURL(t)}catch{return}}function D(a,e){if(e==="")return a;if(!e)return;const t=e.split("||").map(r=>r.trim()).filter(Boolean);for(const r of t){const[n,...s]=r.split("|"),i=B(a,n);if(typeof i=="number"||i){if(typeof i!="string")return i;const l=i.replace(/(\n|\t)/g," ").trim();if(l){const o=te(l,s.map(ee));if(o)return o}}}}function L(a){if(a?.startsWith("window")){const e=a.indexOf(".");return e===-1?void 0:D(window,a.substring(e+1))}return W(a?d(a):document.querySelector("pre")?.textContent)}function T(a,e){if(typeof a=="number")return e?e(a):a}function w(a,e){if(typeof a=="string")return e?e(a):a}function j(a,e){const t=a.map(c=>({...c,vol:c.vol===0?void 0:c.vol}));t.sort((c,u)=>c.vol===void 0||u.vol===void 0?u.chap-c.chap:u.vol-c.vol||u.chap-c.chap);const r={},n={};for(let c=t.length-1;c>=0;c--){const u=t[c],p=u.group??"";r[p]=(r[p]??0)+1;const g=u.lang??"";u.vol!==void 0?n[g]=u.vol:n[g]!==void 0&&(u.inferVol=n[g])}const s=[],i={},l=e?.preferGroup,o=c=>c.lang??"";for(const c of t){const u=o(c),p=i[u],g=s[p];if(!(g&&g.chap===c.chap&&(g.vol===c.vol||g.vol===void 0||c.vol===void 0))){i[u]=s.length,s.push(c);continue}if(!l){g.vol===void 0&&c.vol!=null&&(s[p]=c);continue}g.group!==l&&(c.group==l||g.group&&!c.group||r[c.group??""]>r[g.group??""])&&(s[p]=c)}return s}const Dt=[{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:"an",it:"anno",es:"a\xF1o"}}];function de(a,e){const t=a?.toLowerCase();if(!t)return;const r=Date.now();if(t.includes("now"))return r;if(t.includes("yesterday"))return r-864e5;const n=new Date(t);if(n instanceof Date){const c=n.valueOf();if(!isNaN(c))return n.getHours()===0&&n.getMinutes()===0?Math.min(r,c+432e5):c}const s=Dt.find(c=>e&&c.locales[e]&&t.indexOf(c.locales[e])!==-1?!0:t.indexOf(c.locales.en)!==-1);if(!s)return;const i=t.split(" ").filter(Boolean),l=fe(i)??(e==="en"?fe(i,["a","an"]):void 0);if(!l)return;const o=r-l*s.seconds*1e3;return o>0?o:void 0}function fe(a,e){for(let t=0;t<a.length;t++){const r=a[t];if(e?.includes(r))return 1;const n=+r;if(n)return n<0?void 0:n}}function St(a,e=location.origin){if(!a)return;const t=new URL(a.startsWith("//")?`${location.protocol}${a}`:a,location.origin+location.pathname).toString();return t.startsWith(e)?t.replace(e,""):t}function ae(a,{titleSlug:e,titleId:t,lang:r}){if(!a)return"/";let n=a;return e&&(n=n.replace("{titleSlug}",e)),t&&(n=n.replace("{titleId}",t)),r&&(n=n.replace("{lang}",r)),n.endsWith("/")||(n+="/"),n.startsWith("/")||(n="/"+n),n}function re(a){if(!a)return;let e=a;e.startsWith("//")&&(e=`https:${e}`);try{return new URL(e)}catch{return}}function E(a){if(!(!a||typeof a!="string"))return a.includes("//")?re(a)?.pathname:a}function Tt(a,e){const t=[...e],r=[];let n=!1,s=0;const i=Math.min(a.length,100);for(let o=0;o<i;o++){if(s>=10/2){const h=10-r.length;if(h>0){const f=o+h<=a.length?a.slice(o,o+h):t.slice(0,h);r.push(...f)}break}const c=a[o],u=c.id!==void 0,p=t.findIndex(h=>u&&h.id===c.id||h.slug===c.slug||h.name==c.name),g=p===-1?void 0:t.splice(p,1)[0];!g||g.chapters[0]?.chap!==c.chapters[0]?.chap?(n=!0,r.push({...c,changed:!0})):(s++,r.push(c))}if(!n)return{hasMore:!1,rawReleases:[]};if(r.length<=10)return{hasMore:!!a[a.length-1]?.changed,rawReleases:r};const l=[];for(let o=0;o<r.length;o++){const c=r[o];(c.changed||o<10)&&l.push(c)}return{hasMore:e.length<2||e.length-t.length<2,rawReleases:l}}function Ct(a,e){const t={};return a.forEach(r=>{const n=r.chapters.reduce((s,i)=>{const l=i.lang||e||"";return s[l]||(s[l]=[]),s[l].push(i),s},{});Object.entries(n).forEach(([s,i])=>{const l=`${r.slug}:${s}`;t[l]?(t[l].chapters.push(...i),j(t[l].chapters)):t[l]={...r,lang:s===""?void 0:s,chapters:i}})}),Object.values(t)}var S=(a=>(a.title="title",a.reader="reader",a.releases="releases",a.chapters="chapters",a.search="search",a))(S||{}),It=Object.defineProperty,Pt=(a,e,t)=>e in a?It(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,A=(a,e,t)=>Pt(a,typeof e!="symbol"?e+"":e,t);class H{constructor(e){A(this,"headless"),A(this,"siteId"),A(this,"spec"),A(this,"siteMeta"),A(this,"tags"),A(this,"context"),A(this,"methodsMap",{[S.title]:()=>this.getRawTitleData(),[S.reader]:()=>this.getRawReaderData(),[S.releases]:()=>this.getRawReleasesData(),[S.search]:()=>this.getRawSearchData(),[S.chapters]:()=>this.getRawChaptersData()}),A(this,"normalizedTagsMap"),this.siteId=e.siteId,this.spec=e.spec,this.siteMeta=e.siteMeta,this.tags=e.tags,this.context=e.context??{},this.headless=e.headless===!0}async getRawPageByType(e,t=!1){const r=await this.methodsMap[e](),n=!r&&(e===S.title||e===S.reader)&&await Bt(this.spec);if(t&&!r&&!n)return;const s=location.origin+location.pathname;return{type:e,is404:n,specId:this.spec.id,siteName:jt(this.spec.name),favUrl:At(),htmlLang:Ot(),url:s,data:r,spec:this.spec,context:this.context}}parseReaderUrl(e,t,r){const n=e.includes("{"),s=!this.siteId;let i=t;if(i[0]!=="/"&&(i.includes("/")||s&&!n))try{i=new URL(t,location.href).pathname}catch{}if(i.endsWith("/")&&(i=i.slice(0,-1)),e.startsWith("/")||(e="/"+e),e.endsWith("/")||(e=e+"/"),n){const l=e.split("/").filter(Boolean),o=i.split("/").filter(Boolean);if(l.length<o.length){const c=o[l.indexOf("{lang}")]?.toLowerCase(),u=o[l.indexOf("{titleId}")],p=o[l.indexOf("{titleSlug}")],g=e.replace("{lang}",c).replace("{titleId}",u).replace("{titleSlug}",p);if(s)return{basePath:"",slug:i,lang:c,titleId:u,titleSlug:p};if(i.startsWith(g))return{basePath:g,slug:i.replace(g,""),lang:c,titleId:u,titleSlug:p}}}else if(!s&&i.startsWith(e))return{basePath:e,slug:i.replace(e,"")};return{basePath:"",slug:i}}parseTitleUrl(e){if(typeof e!="string")return{};const t=E(e),r=t?.split("/").filter(Boolean);if(!r?.length)return{};const n=this.siteMeta.titleBase.split("/").filter(Boolean),s=n.indexOf("{slug}");return(s===-1?r.length-n.length>=1:r.length===n.length)?{id:r[n.indexOf("{id}")],slug:this.siteId?s===-1?r.slice(n.length).join("/"):r[s]:t}:{slug:t}}finalizeRawReleasesData(e){const t=this.spec.releases?.title?.lang?this.siteMeta.defaultLang:void 0,r=Ct(e.rawReleases,t);if(r.length)return this.context.oldRawReleases?Tt(r,this.context.oldRawReleases):{rawReleases:r,hasMore:!0}}getTagIdsFromNames(e){if(!e?.length)return;const t=this.normalizedTagsMap??(this.normalizedTagsMap=Mt(this.tags)),r=e.map(n=>t[ne(n)]).filter(Boolean);return r.length===0?void 0:Array.from(new Set(r)).sort((n,s)=>n-s)}}A(H,"specId"),A(H,"siteId");function Mt(a){const e={};return a.forEach(({id:t,name:r,altNames:n})=>{e[ne(r)]=t,n&&n.forEach(s=>{e[ne(s)]=t})}),e}function ne(a){const e=a.toLowerCase().replaceAll(/[^a-z0-9\s]/gi,"").trim().replaceAll(/\s+/g," ");return e[e.length-1]==="s"?e.substring(0,e.length-1):e}async function Bt(a){return Lt()===404||a[404]&&await O(a[404],{lazy:!0,timeoutMs:5e3})?!0:document.title.toLowerCase().includes("not found")}function Lt(){try{return window.performance.getEntries().find(a=>a.entryType==="navigation")?.responseStatus}catch{return}}function jt(a){return(a&&d(a))??d('meta[property="og:site_name"]|attr:content')}function At(){return d('link[rel="icon"][sizes="32x32"],link[rel="icon"][sizes="192x192"],link[rel="apple-touch-icon"]|attr:href')}function Ot(){return d("html|attr:lang")||"en"}class v extends H{async getRawReleasesData(){const e=this.spec?.releases?.title;if(!e)return;if(e.json){const l=this.getJsonRawReleases(w(e.json),e)?.filter(o=>o.chapters.length);return l?.length?this.finalizeRawReleasesData({rawReleases:l}):void 0}const t=e.chapter,r=await O(e.sel,{lazy:!0,all:!0});if(!r?.length)return;const n=Date.now(),s=r.slice(0,100).map(l=>{const o=d(e.url,l),c=E(o),u=d(e.name,l),p=d(e.at,l);if(!c||!u)return;const g=de(p,this.siteMeta.defaultLang);return{titleEl:l,id:d(e.id,l),path:c,name:u,lang:d(e.lang,l)?.toLowerCase(),at:g?Math.min(g,n):void 0}}).filter(Boolean);if(!s.length)return;const i=[];return await Promise.all(s.map(async l=>{const{path:o,titleEl:c,lang:u,at:p,...g}=l,{id:h,slug:f}=this.parseTitleUrl(o);if(!f)return;const y=g.id||h,m=await this.getChapters(t,{root:c,titleId:y,titleSlug:f,titleName:l?.name,lang:u})??[];m.length&&i.push({slug:f,chapters:u||p?m.map(b=>({...b,elIndex:void 0,lang:b.lang??u,ts:b.ts??p})):m,...g,id:y})})),this.finalizeRawReleasesData({rawReleases:i})}getRawTitleData(){return this.getTitleData(this.spec.title)}async getTitleData(e){if(!e||!await this.isTitlePage(e))return;const{id:t,slug:r}=this.parseTitleUrl(location.pathname);if(!r)return;const n=t||d(e.id),s=await this.getChapters(e.chapter,{lazy:!0,titleId:n,titleSlug:r,titleName:d(e.name)})??[],i=d(e.name);if(!i)return;const l=await this.getValidImgSrc(e.img,i),o=l&&this.context.includeImgBytes?await $t(l):void 0,c=this.getFirstChapterUrl(),u=e.firstBtn,p=q(e.tags)?.map(f=>f.split(",")).flat().map(f=>f.trim()).filter(Boolean),g=d(e.type),h=q(e.langs)?.map(f=>f.toLowerCase());return{id:n||d(e.id),url:location.origin+location.pathname,slug:r,name:i,langs:h?.length?h:e.langs&&this.siteMeta.defaultLang?[this.siteMeta.defaultLang]:void 0,tags:this.getTagIdsFromNames([...p??[],...g?[g]:[]]),chapters:s,hasMoreChapters:e.hasMore?!!document.querySelector(e.hasMore):void 0,img:l,imgBytes:o,firstUrl:c,firstBtn:!c&&u&&document.querySelector(u)?u:void 0,trackers:this.getTrackersMap(e.trackers)}}getTrackersMap(e){if(!e)return;const t=d(e.mal),r=d(e.anl);if(!t&&!r)return;const n={};return t&&(n.mal=this.parseTrackerId(t)),r&&(n.anl=this.parseTrackerId(r)),n}parseTrackerId(e){return e.split("?")[0].split("#")[0].split("/").filter(Boolean).slice(-1)[0]}getFirstChapterUrl(){const e=d(this.spec.title?.first);if(e){if(e.startsWith("http"))return e;try{return new URL(e,location.href).href}catch{return}}}getValidImgSrc(e,t){return M(33,30,()=>{const r=d(e)||d(`img[alt="${t.replaceAll('"',"")}"]|[attr:data-src,attr-contain:src]`);return!r||r.startsWith("data:")?void 0:document.querySelector(`img[srcset*="${r}"]`)?r.split(" ")[0]:r})}getRawReaderTitleData(e){const t=this.spec.reader?.title;if(!t)return;const r=t.sel?document.querySelector(t.sel)??void 0:void 0,n=d(t.name,r);if(!n)return;const s=St(d(t.img,r));if(e?.slug){let c=this.siteMeta.titleBase;if(e?.id&&(c=c.replace("{id}",e.id)),!c.includes("{"))return c=c.includes("{slug}")?c.replace("{slug}",e.slug):`${c}/${e.slug}`,this.siteMeta.trailing&&!c.endsWith("/")&&(c+="/"),{name:n,img:s,url:new URL(c,location.origin).href,slug:e.slug,id:e.id||d(t.id)}}const i=d(t.url,r),{slug:l,id:o}=this.parseTitleUrl(i);if(!(!n||!i||!l))return{name:n,img:s,url:new URL(i,location.origin).href,slug:l,id:o||d(t.id)||e?.id}}async getRawReaderData(){const{spec:e,siteMeta:t}=this;if(!e?.reader||!await this.isReaderPage(e.reader,!!e.generic))return;const r=e.reader.content;if(!(!r||await v.verifyImgsCotainer(r)))return;const n=this.parseReaderUrl(t.readerBase,location.pathname,location.href),{slug:s,basePath:i,lang:l}=n,o=this.getRawReaderTitleData({id:n.titleId,slug:n.titleSlug});if(!o)return;const c=d(e.reader.group),{id:u,slug:p}=o,g=e.reader?.chapter,h=!!this.context.disableLazyChapters,f=!!this.context.includeHiddenChapters,y=await this.getChapters(g,{titleId:u,titleSlug:p,titleName:o.name,lang:l,lazy:f||!h,includeHiddenChapters:f,timeoutMs:f?3e3:25e3,includeIndex:!0,basePath:i,preferGroup:c})??[],m=d(e.reader.label)?.toLowerCase().replace(o.name.toLowerCase(),"");if(!m)return;const{vol:b,chap:R=0}=P(m)||{},U=this.findNeighborChapter({sel:e.reader.prev,basePath:i,titleUrl:o.url}),G=this.findNeighborChapter({sel:e.reader.next,basePath:i,titleUrl:o.url});return this.finalizeRawReaderData({vol:b,chap:R,lang:l??d(e.reader.lang)?.toLowerCase()??(e.reader.lang?this.siteMeta.defaultLang:void 0),slug:s,basePath:i,group:c??d(e.reader.group),imgs:q(e.reader.imgs),title:{id:u||d(this.spec.reader?.title.id),url:o.url,slug:p,name:o.name,langs:l?[l]:void 0,img:o.img,chapters:y,hasMoreChapters:!y.length&&!f&&!!this.context.disableLazyChapters&&!!g?.label}},{prevSlug:U,nextSlug:G})}async getRawChaptersData(){const e=this.siteMeta.chapters;if(e===V.blank)return;const t=e===V.reader,r=!e||e===V.title,n=t?(await this.getRawReaderData())?.title:r?await this.getRawTitleData():void 0,s=this.spec.chapters?.chapter,i=n?.slug??this.context.titleSlug,l=n?.id??this.context.rawId,o=this.context.lang,c=s?s.json?this.getJsonChapters(L(w(s.json)),{chapterSpec:s,basePath:ae(this.siteMeta.readerBase,{titleSlug:i,titleId:l,lang:o})}):await this.getChapters(s,{titleId:l,titleSlug:i,titleName:n?.name,lazy:this.spec.chapters?.lazy,includeHiddenChapters:!0,lang:o}):n?.chapters;if(!c)return;const u=o?c.filter(p=>!p.lang||p.lang===o):c;return{chapters:u,title:n?{...n,chapters:[]}:await this.getTitleData(this.spec.chapters?.title),hasMore:!1,asc:!1,total:u.length}}async getRawSearchData(){const e=this.spec.search,t=this.context.lang;if(!e)return;const r=e.title;if(r.json){const o=this.getJsonRawReleases(w(r.json),r,t);return o?.length?{rawReleases:o}:void 0}e.delay&&await he(e.delay);const{chapter:n}=r,s=[],i=e.lazy?e.empty||e.loading?550:100:1,l=await M(i,50,()=>{const o=Array.from(document.querySelectorAll(r.sel));if(o.length||e.empty&&document.querySelector(e.empty)||e.loading&&!document.querySelector(e.loading))return o});if(l)return await Promise.all(l.map(async o=>{const c=d(r.url,o),u=E(c),p=d(r.name,o),{slug:g,id:h}=this.parseTitleUrl(u);if(!u||!p||!g)return;const f=d(r.lang,o);f&&t&&f!==t||s.push({id:h||d(r.id,o),slug:g,name:p,img:d(r.img??"img|[attr:data-src,attr-contain:src]",o),lang:f,chapters:await this.getChapters(n,{root:o,titleId:h,titleSlug:g,titleName:p})??[]})})),{rawReleases:s}}getJsonRawReleases(e,t,r){const n=L(e),s=D(n,t.sel);if(!s?.length||!Array.isArray(s))return;const i=[];return s.forEach(l=>{const o=w(D(l,t.lang))?.toLowerCase();if(o&&r&&o!==r)return;const c=D(l,t.url),{id:u,slug:p}=T(c,b=>({id:void 0,slug:b+""}))??this.parseTitleUrl(E(c)),g=w(D(l,t.name));if(!p||!g)return;const h=u||D(l,t.id),f=T(h,b=>b+"")??w(h),y=t.chapter?this.getJsonChapters(l,{chapterSpec:t.chapter,basePath:ae(this.siteMeta.readerBase,{titleId:f,titleSlug:p,lang:o})}):void 0,m=w(D(l,t.img),b=>{try{return new URL(b,location.origin).href}catch{return}});i.push({id:f,slug:p,name:g,lang:o,img:m,chapters:y??[]})}),i}getJsonChapters(e,{chapterSpec:t,basePath:r}){if(!e)return;const n=D(e,t.sel);if(!n)return;const s=Array.isArray(n)?n:[n];if(!s?.length)return;const i=[];return s.forEach(l=>{const o=D(l,t.label),c=T(o,m=>({vol:void 0,chap:m}))??P(w(o));if(!c)return;const u=D(l,t.url),p=this.parseChapterUrl(r,w(u)??T(u,m=>m+"")),g=c.vol??D(l,t.vol),h=D(l,t.id),f=D(l,t.at),y=f?new Date(f).getTime():void 0;i.push({slug:p?.slug,vol:T(g)??w(g,m=>+m),chap:c.chap,id:w(h)??T(h,m=>m+""),lang:w(D(l,t.label))?.toLowerCase(),group:w(D(l,t.group)),ts:y||void 0})}),i.length?j(i,{preferGroup:this.context.preferGroup}):void 0}async getChapters(e,{root:t,titleId:r,titleSlug:n,titleName:s,lang:i,includeHiddenChapters:l=!1,lazy:o=!0,timeoutMs:c,includeIndex:u,basePath:p,preferGroup:g}){const h=e?.sel;if(!h||!e.label)return;const f=h.includes("{titleSlug}")?n?h.replace("{titleSlug}",n):void 0:h;if(!f)return;let y;if(e.trigger&&(!l||(y=await O(e.trigger,{timeoutMs:5e3,lazy:!0}),!y)))return;const m=[],b=await M(o?c?c/50:200:1,50,async()=>{y&&(Z(y),await he(50));const x=Array.from((t??document.documentElement)?.querySelectorAll(f));if(x.length)return x}),R=(b??[]).map((x,J)=>({id:d(e.id,x),label:d(e.label,x)?.toLowerCase(),url:d(e.url,x),at:d(e.at,x),lang:d(e.lang,x),group:d(e.group,x),elIndex:J})),U=s?.toLowerCase(),G=U&&!!R[0]?.label?.startsWith(U),Y=(e.dismiss?(t??document.body).querySelector(e.dismiss):void 0)??y;if(Y&&Z(Y),!b?.length)return[];const F=R.map(({label:x})=>{if(!x)return;const J=G?x?.replace(U,"").trim():x;return P(J)}),C=F[1]?.chap;!F[0]&&(C===void 0||C<=1)&&(F[0]={chap:0});const fr=p??ae(this.siteMeta.readerBase,{titleId:r,titleSlug:n,lang:i}),mr=Date.now();return F.forEach((x,J)=>{if(!x)return;const{id:wr,url:vr,at:yr,lang:br,group:Rr,elIndex:$r}=R[J],Qe=de(yr,this.siteMeta.defaultLang),Q={...x,id:wr,lang:br?.toLowerCase(),group:Rr,ts:Qe?Math.min(mr,Qe):void 0};u&&(Q.elIndex=$r);const X=this.parseChapterUrl(fr,vr);X&&(Q.slug=X.slug,X.lang&&(Q.lang=X.lang)),m.push(Q)}),j(m,{preferGroup:g??this.context.preferGroup})}parseChapterUrl(e,t){if(t?.startsWith("#"))return;const r=t?.startsWith("http")&&!t.includes(`//${location.hostname}/`),n=r?t:E(t);if(n)return r?{slug:n}:this.parseReaderUrl(e,n,t)}async isTitlePage(e){return!(!e||(e.sel||e.lazy)&&!await O(e.sel??e.name?.split("|")?.[0],{lazy:!!e.lazy}))}async isReaderPage(e,t){const r=e?.sel;return t&&!r?!1:!r||!!await O(r,{lazy:!!e.lazy})}static async verifyImgsCotainer(e){const t=e.split(",").map(r=>r.trim()).filter(Boolean).map(r=>`${r} img, ${r} canvas`).join(",");return!!await O(t,{lazy:!0,all:!1})}findNeighborChapter({sel:e,basePath:t,titleUrl:r}){const n=d(e);if(!n||n.startsWith("#")||n.startsWith("/#"))return;const s=E(n);if(s&&!(s===location.pathname||r===s||r===`${location.origin}${s}`))return this.parseReaderUrl(t,s,n).slug||void 0}finalizeRawReaderData(e,{prevSlug:t,nextSlug:r}={}){const n=e.title.chapters;if(!n.length){const c=P(t),u=P(r);return!c&&!u?e:{...e,prev:c?{...c,slug:t}:void 0,next:u?{...u,slug:r}:void 0}}let s,i,l,o;for(let c=0;c<n.length&&!(s&&(!t||l)&&!r&&o);c++){const u=n[c];!s&&(e.slug==u.slug||e.chap===u.chap&&(e.vol===u.vol||e.vol===void 0))?(s=u,i=c):!l&&t===u.slug?l=u:!o&&r===u.slug&&(o=u)}return i!==void 0&&(l??(l=n[i+1]),o??(o=n[i-1])),l&&!l.slug&&(l.slug=t),o&&!o.slug&&(o.slug=r),{...e,inferVol:s?.inferVol,prev:l,next:o}}}var Et=Object.defineProperty,Ut=(a,e,t)=>e in a?Et(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,_t=(a,e,t)=>Ut(a,e+"",t);class me extends v{async getRawReleasesData(){const e=Array.from(document.querySelectorAll("script"));for(let t=0;t<e.length;t++){const r=e[t].textContent;if(!r)continue;const n=r.indexOf('{\\"latest\\":');if(n===-1)continue;const s=W(r.substring(n).split(',\\"page\\":1')[0].replaceAll("\\",""));if(!s)return;try{const i=s.latest.data.map(l=>({name:l.name,slug:l.slug,chapters:l.chapters.map(o=>({chap:o.name,slug:o.name+"",at:new Date(o.published_at||o.public_at).getTime()}))}));return this.finalizeRawReleasesData({rawReleases:i})}catch{break}}return super.getRawReleasesData()}}_t(me,"specId","asura");function Nt(){return Math.random().toString(16).slice(2)}async function zt({addListener:a,removeListener:e,transform:t,filter:r,handler:n,onTimeout:s,timeout:i,once:l}){return new Promise(o=>{a(p);const c=()=>l===!0&&e(p),u=i?setTimeout(()=>{c(),o(void 0),s?.()},i):void 0;async function p(g,...h){g=t?t(g):g,g!==void 0&&(!r||r(g,...h))&&(c(),o(g),n?.(g,...h),u&&clearTimeout(u))}})}async function kt(a){return(await zt({addListener:e=>window.addEventListener("message",e),removeListener:e=>window.removeEventListener("message",e),...a}))?.data}async function Wt(a){const{receiverWindow:e,timeout:t,targetOrigin:r,event:n,args:s}=a,i={reqId:Nt(),event:n,args:s};return(e||window)?.postMessage(i,r??"*"),(await kt({filter:l=>l?.data?.resId===i.reqId,timeout:t??3e4,once:!0}))?.result}const I={isAny:!0};function $(a,...e){return Wt({event:"tk:fetchResult",args:{baseUrl:a,segments:e}})}var qt=Object.defineProperty,Gt=(a,e,t)=>e in a?qt(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Ft=(a,e,t)=>Gt(a,e+"",t);class we extends v{async getRawReaderData(){const e=`https://${location.host}`,[t,r]=await Promise.all([$(e,"api","manga","info"),$(e,"api","read","chapter")]),n=t?.value,s=r?.value;if(!n||!s)return;const i=this.parseReaderUrl(this.siteMeta.readerBase,location.pathname,location.href);if(!i)return;const l=P(s.readChapter?.title);if(l)return this.finalizeRawReaderData({basePath:i.basePath,slug:i.slug,...l,imgs:s.readChapter.pages.map(o=>new URL(o.image,location.origin).href),title:{url:`${e}/manga/${n.id}`,slug:n.id,name:n.title,tags:this.getTagIdsFromNames([n.type].filter(Boolean)),chapters:j(n.chapters.map(o=>({slug:o.id,chap:o.number})),{preferGroup:this.context.preferGroup})}})}}Ft(we,"specId","atsu");var Ht=Object.defineProperty,Jt=(a,e,t)=>e in a?Ht(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Vt=(a,e,t)=>Jt(a,e+"",t);class se extends v{parseTitleUrl(e){return{slug:E(e)?.split("/").filter(Boolean)[1]}}}Vt(se,"specId","bato");function ve(a){return String(a).normalize("NFKD").replace(/[\u0300-\u036f]/g,"").trim().toLowerCase().replace(/[^a-z0-9 -]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-")}var Kt=Object.defineProperty,Yt=(a,e,t)=>e in a?Kt(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Qt=(a,e,t)=>Yt(a,e+"",t);class ye extends v{async getRawReleasesData(){const e=await super.getRawReleasesData();if(e)return{...e,rawReleases:e.rawReleases.map(t=>({...t,slug:`${t.slug}-${ve(t.name)}`}))}}async getRawChaptersData(){const e=L(),t=T(B(e,"result.pagination.total"),n=>Math.ceil(n/100))||0,r=(await Promise.all(Array.from({length:Math.max(0,t)},async(n,s)=>{if(s==0)return this.parseChapters(e);try{const i=location.href.replace("page=1",`page=${s+1}`),l=await fetch(i);return this.parseChapters(await l.json())||[]}catch{return[]}}))).flat();return{chapters:j(r,{preferGroup:this.context.preferGroup})}}parseChapters(e){const t=[];return B(e,"result.items")?.forEach?.(r=>{const n=T(B(r,"chapter_id"),i=>i+""),s=T(B(r,"number"));!n||s===void 0||t.push({slug:n,chap:s,vol:T(B(r,"volume"))||void 0,lang:w(B(r,"language")),group:w(B(r,"scanlation_group.name")),ts:T(B(r,"created_at"))})}),t}}Qt(ye,"specId","comix");var Xt=Object.defineProperty,Zt=(a,e,t)=>e in a?Xt(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,ea=(a,e,t)=>Zt(a,e+"",t);class be extends v{async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=window.pages,r=t?.map(n=>n?.image).filter(Boolean);if(!(!Array.isArray(r)||!r.length))return{...e,imgs:r,isWebtoon:t.some(n=>n.height/n.width>2)}}}ea(be,"specId","dynasty");var ta=Object.defineProperty,aa=(a,e,t)=>e in a?ta(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,ra=(a,e,t)=>aa(a,e+"",t);class Re extends H{async getRawReleasesData(){const e=L();if(e)return this.finalizeRawReleasesData({rawReleases:e.manga.map(t=>({id:t.id?t.id+"":void 0,name:t.title,slug:t.slug,chapters:t.chapters.map(r=>this.praseRawChapter(r))}))})}async getRawSearchData(){const e=L();if(e)return{rawReleases:e.data.map(t=>({id:t.id?t.id+"":void 0,slug:t.slug,name:t.title,img:`${location.origin}/${t.cover}`,chapters:[]}))}}async getRawTitleData(){const{slug:e}=this.parseTitleUrl(location.pathname);if(!e)return;const t=await $(location.origin,"api","backend","api","manga",e);if(!t)return;const r=this.parseRawTitleData(t.value),n=this.context.includeImgBytes&&r.img?await K(r.img):void 0;return{...r,imgBytes:n}}async getRawReaderData(){const{slug:e,titleSlug:t}=this.parseReaderUrl(this.siteMeta.readerBase,location.pathname,location.href);if(!e||!t)return;const[r,n]=await Promise.all([$(location.origin,"api","backend","api","manga",t),$(location.origin,"api","backend","api","chapters","by-number",t,e)]);if(!r||!n)return;const s=await this.parseRawTitleData(r.value),i=n.value;return{slug:e,chap:i.number,basePath:`/${location.pathname.split("/").filter(Boolean).slice(0,-1).join("/")}/`,imgs:i.pages.sort((l,o)=>l.order-o.order).map(l=>`${location.origin}${l.image.startsWith("/")?l.image:`/${l.image}`}`),title:s}}async getRawChaptersData(){const e=L();if(!e)return;const t=this.parseRawTitleData(e);return{chapters:t.chapters,title:{...t,chapters:[]}}}parseRawTitleData(e){return{id:e.id?e.id+"":void 0,url:`${location.origin}/${this.siteMeta.titleBase}/${e.slug}`,slug:e.slug,name:e.title,img:`${location.origin}/${e.cover}`,tags:this.getTagIdsFromNames([e.type,...e.genres.map(t=>t.name)].filter(Boolean)),chapters:e.chapters.map(t=>this.praseRawChapter(t)),hasMoreChapters:e.pagination.hasNextPage}}praseRawChapter(e){return{chap:e.number,slug:e.number+"",ts:new Date(e.createdAt||e.uploadedAt||e.updatedAt).getTime()}}}ra(Re,"specId","falcon");var na=Object.defineProperty,sa=(a,e,t)=>e in a?na(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,ia=(a,e,t)=>sa(a,e+"",t);class $e extends v{async getRawTitleData(){const e=await super.getRawTitleData();if(e)return{...e,chapters:De()}}async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=De();if(t.length)return{...e,title:{...e.title,img:xe(e.title.slug),chapters:t}}}async getRawSearchData(){const e=await super.getRawSearchData();if(e)return{...e,rawReleases:e.rawReleases.map(t=>({...t,img:xe(t.slug)}))}}}ia($e,"specId","kagane");function xe(a){return`https://api.${location.host}/api/v1/series/${a}/thumbnail`}function De(){const a=["initialBooksData","initialChapters"],e=Array.from(document.querySelectorAll("script"));for(let t=0;t<e.length;t++){const r=e[t].textContent;if(r)for(const n of a){const s=r.indexOf(n);if(s===-1)continue;const i=r.slice(s),l=W(i.slice(i.indexOf("["),i.indexOf("}]")+2).replaceAll("\\",""));if(!l?.length||!Array.isArray(l))return[];try{const o=[];return l.map(c=>{const u=P(c.name);u&&o.push({...u,slug:c.id,ts:c.created?new Date(c.created).getTime():void 0})}),j(o)}catch{return[]}}}return[]}function la(a,e){const t=a[0]===e?a.substring(1):a;return t[t.length-1]===e?t.substring(0,t.length-1):t}var oa=Object.defineProperty,ca=(a,e,t)=>e in a?oa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,ua=(a,e,t)=>ca(a,e+"",t);class ie extends v{async getRawReleasesData(){const e=this.getNewSiteMeta(this.spec.releases?.title),t=await super.getRawReleasesData();if(t)return{...t,siteMeta:e}}async getRawTitleData(){if(!await this.isTitlePage(this.spec.title))return;const e=this.getNewSiteMeta(this.spec.title,`${location.origin}${location.pathname}`),t=await super.getRawTitleData();if(t)return{...t,siteMeta:e}}async getRawReaderData(){if(!await this.isReaderPage(this.spec.reader,this.spec.generic))return;const e=this.getNewSiteMeta(this.spec.reader?.title),t=await super.getRawReaderData();if(t)return{...t,siteMeta:e}}async getRawSearchData(){const e=this.getNewSiteMeta(this.spec.search?.title),t=await super.getRawSearchData();if(t)return{...t,siteMeta:e}}getNewSiteMeta(e,t){if(t??(t=ga(e)),!t)return;if(!this.siteId){const i={...this.siteMeta,releases:null,titleBase:"",readerBase:"",titleIdType:pe.name,trailing:t.endsWith("/"),defaultLang:d("html|attr:lang")||"en"};return this.siteMeta=i,i}const r=this.extractBasePath(t),n=this.siteMeta;if(n.titleBase===r)return;const s={...n,titleBase:r,readerBase:n.readerBase.replace(n.titleBase,r)};return this.siteMeta=s,s}extractBasePath(e){const t=e.startsWith("/")?e:E(e);return la(t,"/").split("/").slice(0,-1).join("/")}}ua(ie,"specId","madara");function ga(a){if(!a)return;const e=a.sel?document.querySelector(a.sel)??void 0:void 0;return d(a.url,e)}var pa=Object.defineProperty,ha=(a,e,t)=>e in a?pa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,da=(a,e,t)=>ha(a,e+"",t);class Se extends v{async getRawTitleData(){const e=await super.getRawTitleData();if(!e)return;const t=await Te(this.context.preferGroup),r=new Set;return t.forEach(({lang:n})=>{n&&r.add(n)}),{...e,chapters:t,langs:r.size?Array.from(r):[this.siteMeta.defaultLang||"en"]}}async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=await Te(e.group||this.context.preferGroup),r=t[0]?.lang;return this.finalizeRawReaderData({...e,lang:r,title:{...e.title,chapters:t,langs:r?[r]:void 0}})}}da(Se,"specId","mangaball");async function Te(a){const e=await M(100,50,()=>{try{return ALL_CHAPTERS.length?ALL_CHAPTERS:void 0}catch{return}});if(!e)return[];const t=[];return e.forEach(r=>{r.translations.forEach(n=>{const s=n.volume;t.push({chap:r.number_float,vol:s>0?s:void 0,slug:n.id,lang:n.language,group:n.group?.name,ts:new Date(n.date).getTime()})})}),j(t,{preferGroup:a})}var fa=Object.defineProperty,ma=(a,e,t)=>e in a?fa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,wa=(a,e,t)=>ma(a,e+"",t);const va={a:.1,b:.2,c:.3,d:.4};class Ce extends v{parseTitleUrl(e){return{slug:E(e)?.split("/").filter(Boolean)[1]}}async getRawReleasesData(){const e=L()?.data;if(!e)return;const t=[];return e.forEach(({relationships:r,attributes:n,id:s})=>{const i=r.find(({type:p})=>p==="manga"),l=_(n.volume),o=_(n.chapter);if(o===void 0)return;const{title:c}=i.attributes,u=c.en??Object.values(c)[0];t.push({slug:i.id,name:u,chapters:[{slug:n.externalUrl||s,vol:l,chap:o,lang:n.translatedLanguage,ts:new Date(n.readableAt).valueOf()}]})}),super.finalizeRawReleasesData({rawReleases:t})}async getRawTitleData(){const e=`https://api.${location.host}/manga/`,[t,r]=await Promise.all([$(e,I),$(e,I,"feed")]);if(!t||!r)return;const n=r.value.data?.map?.(o=>{const{attributes:c,id:u}=o;if(typeof c!="object"||typeof u!="string"||!u)return;const{externalUrl:p,title:g,volume:h,chapter:f,translatedLanguage:y}=c;return{slug:p||u,label:g||void 0,vol:_(h),chap:_(f),lang:y||"en",ts:new Date(c.readableAt).valueOf()}}).filter(o=>o?.chap!=null)??[],{data:s}=t.value;if(!s)return;const i=Pe({data:s,getTagIdsFromNames:o=>this.getTagIdsFromNames(o)});if(!i)return;const l=this.context.includeImgBytes&&i.img?await K(i.img):void 0;return{...i,imgBytes:l,chapters:j(n,{preferGroup:this.context.preferGroup}),hasMoreChapters:(r.value.total||0)>(r.value.limit||0)}}async getRawReaderData(){const e="https://api.mangadex.org/",[t,r,n]=await Promise.all([$(e,"chapter",I),$(e,"at-home","server",I),$(e,"manga",I,"aggregate")]);if(!t||!r||!n)return;const s=t.value.data,{volume:i,chapter:l,externalUrl:o,translatedLanguage:c}=s.attributes||{},{baseUrl:u,chapter:{data:p,dataSaver:g,hash:h}}=r.value,f=s.relationships?.find?.(C=>C.type==="manga");if(!f)return;const y=Pe({data:f,getTagIdsFromNames:C=>this.getTagIdsFromNames(C)});if(!y||typeof n.value.volumes!="object")return;const m=Ie(n.value,{preferGroup:this.context.preferGroup})??[];(typeof l!="string"||l==="none")&&!m.length&&m.push({chap:0,slug:s.id});const b=m.findIndex(C=>C.slug===s.id),R=s.relationships?.find?.(C=>C.type==="scanlation_group"),U=u.endsWith("/")?u:u+"/",G=!!localStorage.getItem("md")?.includes?.('"dataSaver":true'),Y=`${U}${G?"data-saver":"data"}/`,F=((G?g:p)??[]).map?.(C=>`${Y}${h}/${C}`)??[];return{externalUrl:o,vol:_(i),inferVol:m[b]?.inferVol,chap:_(l)||0,imgs:F,lang:c,slug:s.id,prev:m[b+1],next:m[b-1],basePath:"/chapter/",group:R?.attributes?.name,groupUrl:R?.attributes?.website,isWebtoon:f?.attributes?.tags?.some(C=>C.attributes.name.en==="Long Strip"),title:{...y,chapters:m}}}async getRawChaptersData(){const e=L();if(!e)return;let t;try{t=Ie(e,{preferGroup:this.context.preferGroup})}catch{return}if(t)return{chapters:t,lang:this.context.lang??"en",asc:!1,hasMore:!1,total:t.length}}}wa(Ce,"specId","mangadex");function _(a){if(typeof a!="string"||a==="none")return;const e=parseFloat(a);if(e!==e)return;const t=a[a.length-1];return e+(va[t]??0)}function Ie(a,{preferGroup:e}){if(typeof a.volumes!="object")return;const t=Object.values(a.volumes).map(({volume:r,chapters:n})=>{const s=_(r);return Object.values(n).map(({id:i,chapter:l})=>{const o=_(l);if(o!==void 0)return{vol:s,chap:o,slug:i}})}).flat().filter(Boolean).reverse();return j(t,{preferGroup:e})}function Pe({data:a,getTagIdsFromNames:e}){const{id:t,attributes:r,relationships:n}=a;if(!t||typeof t!="string"||typeof r!="object")return;const{title:s,availableTranslatedLanguages:i,altTitles:l,tags:o,contentRating:c}=r;if(typeof s!="object"||i&&!Array.isArray(i))return;const u=Object.values(s)[0];if(!u||typeof u!="string")return;const p=ya(),g=(i??[])?.map?.(R=>typeof R=="string"?R:void 0).filter(Boolean)??[],h=g.filter(R=>R&&(!p||p.includes(R))),f=l?.map?.(R=>{const[[,U]=[]]=Object.entries(R);return U}),y=n?.find?.(R=>R.type==="cover_art")?.attributes?.fileName,m=y?`https://mangadex.org/covers/${t}/${y}.256.jpg`:void 0,b=(o||[]).map(R=>R?.attributes?.name?.en).concat(c).filter(Boolean);return{url:`${location.origin}/title/${t}`,slug:t,name:u,altNames:f,langs:h.length>0?h:g.length>0?g:["en"],img:m,tags:e(b)}}function ya(){const a=localStorage.getItem("md");if(!a)return;const e=W(a);if(e)try{const t=e?.userPreferences?.filteredLanguages;return t?.length?t:void 0}catch{return}}var ba=Object.defineProperty,Ra=(a,e,t)=>e in a?ba(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,$a=(a,e,t)=>Ra(a,e+"",t);class Me extends v{async getRawReaderData(){if((await O(".current-viewtype",{lazy:!0,all:!1}))?.textContent?.trim().toLowerCase()!=="volume")return await super.getRawReaderData()}async getRawChaptersData(){const e=this.context.lang??"en",t=await O(`.tab-content[data-name="chapter"] a.dropdown-item[data-code="${e.toUpperCase()}"]`,{lazy:!0,all:!1});if(t)return Z(t),await O(`.tab-content[data-name="chapter"] li.item[data-number] a[href*="/${e}/"]`,{lazy:!0,all:!1}),await super.getRawChaptersData()}async getRawSearchData(){const e=await super.getRawSearchData();if(!e)return;const t=this.context.lang??"en";return{...e,rawReleases:e.rawReleases.map(r=>({...r,lang:r.lang??t}))}}}$a(Me,"specId","mangafire");var xa=Object.defineProperty,Da=(a,e,t)=>e in a?xa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Sa=(a,e,t)=>Da(a,e+"",t);class Be extends v{async getRawReaderData(){const e=await super.getRawReaderData();return e&&{...e,imgs:await this.getImgs()}}parseReaderUrl(e,t){const{slug:r,basePath:n}=super.parseReaderUrl(e,t),s=r.split("/").filter(Boolean),i=s[s.length-1];return{basePath:n,slug:i.startsWith("pg-")?s.slice(0,-1).join("/"):r}}async getImgs(){const e=await M(100,20,()=>window.imgsrcs),t=window.CryptoJS,r=t.enc.Hex.parse("e11adc3949ba59abbe56e057f20f883e"),n={iv:t.enc.Hex.parse("1234567890abcdef1234567890abcdef"),padding:t.pad.ZeroPadding};return t.AES.decrypt(e,r,n).toString(t.enc.Utf8).split(",")}}Sa(Be,"specId","mangago");var Ta=Object.defineProperty,Ca=(a,e,t)=>e in a?Ta(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Ia=(a,e,t)=>Ca(a,e+"",t);class Le extends v{async getRawTitleData(){const e=`https://backend.${location.host}`,t=await $(e,"chapters-with-ids",I,I),r=await super.getRawTitleData();if(!(!t?.value||!r))return{...r,langs:await Pa(),chapters:le(t.value)}}async getRawChaptersData(){const e=L();if(e)return{chapters:le(e)}}async getRawReaderData(){const e=`https://backend.${location.host}`,[t,r]=await Promise.all([$(e,"chapters-with-ids",I,I),$(e,"read",I)]);if(!t?.value||!r?.value?.length)return;const n=await super.getRawReaderData();if(!n)return;const s=new URLSearchParams(location.search).get("number")??"0";return{...n,slug:`${n.slug}?number=${s}`,imgs:r.value,title:{...n.title,chapters:le(t.value)}}}}Ia(Le,"specId","mangahaven");async function Pa(){const a=document.querySelector('[role="tabpanel"] button');if(!a)return;const e=document.createElement("style");e.innerHTML="[data-radix-popper-content-wrapper] { display: none !important; }",document.head.appendChild(e),a.click();const t=await M(50,10,()=>q('img[src*="/flags/"]|attr:src|pattern:.+/(.+).svg'));return a.click(),setTimeout(()=>document.head.removeChild(e),1e3),t}function le(a){const e=[];return a?.forEach?.(t=>{const r=+t.chapter;isNaN(r)||!t.id||e.push({chap:r,slug:`${t.id}?number=${t.chapter}`,lang:t.lang?.toLowerCase?.()})}),e}var Ma=Object.defineProperty,Ba=(a,e,t)=>e in a?Ma(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,La=(a,e,t)=>Ba(a,e+"",t);class je extends se{}La(je,"specId","mangapill");var ja=Object.defineProperty,Aa=(a,e,t)=>e in a?ja(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Oa=(a,e,t)=>Aa(a,e+"",t);class Ae extends v{async getRawTitleData(){const e=await super.getRawTitleData();return e&&{...e,chapters:e.chapters.map(t=>({...t,slug:t.slug?.split("/").filter(Boolean).slice(-1)[0]}))}}}Oa(Ae,"specId","mangaplus");var Ea=Object.defineProperty,Ua=(a,e,t)=>e in a?Ea(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,_a=(a,e,t)=>Ua(a,e+"",t);class Oe extends ie{async getRawReaderData(){const e=await super.getRawReaderData();if(e)return{...e,title:{...e.title,id:await this.getReaderTitleId()}}}async getReaderTitleId(){const e=await window.HISTORY?.getStored?.();if(!e||typeof e!="object")return;const t=Object.values(e).filter(Boolean);if(!t.length)return;t.sort((n,s)=>s.time-n.time);const r=t[0].manga_ID;return w(r)??T(r,n=>n+"")}}_a(Oe,"specId","mangastream");var Na=Object.defineProperty,za=(a,e,t)=>e in a?Na(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,ka=(a,e,t)=>za(a,e+"",t);class Ee extends v{async getRawReaderData(){const e=await super.getRawReaderData();if(e?.imgs?.length!==1)return e;e.slug.includes("//")&&(e.slug=Ue(e.slug).split("/").filter(Boolean)[3]);const t=T(document.querySelector("select.index-page,.page_select select")?.childElementCount,h=>h-1);if(!t||t<=1)return e;const[r]=e.imgs,n=r.split(/\d+\.[a-z]{3,5}$/i)?.[0];if(!n)return e;const s=(+(d(".page_select .select|text")||"1")||1)-1,i=r.replace(n,""),[l,o]=i.split("."),c=l.length,u=+l-s,p=u+t-1,g=[];for(let h=u;h<=p;h++)g.push(`${n}${(h+"").padStart(c,"0")}${o?`.${o}`:""}`);return{...e,imgs:g}}parseChapterUrl(e,t){if(t)return this.parseReaderUrl(e,Ue(t))}}ka(Ee,"specId","mangatown");function Ue(a){return a.replace(location.origin,"").replace("//","/")}var Wa=Object.defineProperty,qa=(a,e,t)=>e in a?Wa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Ga=(a,e,t)=>qa(a,e+"",t);class _e extends v{async getRawReaderData(){const e=await super.getRawReaderData();return e&&{...e,slug:e.slug.split("/").slice(0,-1).join("/")||e.slug.split("/")[0]}}}Ga(_e,"specId","mangaworld");var Fa=Object.defineProperty,Ha=(a,e,t)=>e in a?Fa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Ja=(a,e,t)=>Ha(a,e+"",t);class Ne extends v{async getRawTitleData(){const e=await super.getRawTitleData();if(e)return{...e,hasMoreChapters:e.chapters.length===50}}}Ja(Ne,"specId","mgeko");var Va=Object.defineProperty,Ka=(a,e,t)=>e in a?Va(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Ya=(a,e,t)=>Ka(a,e+"",t);class ze extends H{async getRawReleasesData(){}async getRawSearchData(){}async getRawTitleData(){const e=await ke();if(!e)return;const t=d("#cover img|[attr:data-src,attr-contain:src]")??e.img;return{...e,img:t,imgBytes:this.context.includeImgBytes&&e.img?await K(e.img):void 0}}async getRawReaderData(){const e=await ke();if(!e)return;const t=d("#image-container img|[attr:data-src,attr-contain:src]"),r=re(t);if(!r)return;const n=r.pathname.split("/").filter(Boolean).slice(0,-1).join("/"),s=`${r.origin}/${n}/`,i=r.pathname.split("?")[0].split("#")[0].split(".").slice(-1)[0]||"webp";return{chap:0,slug:"1",basePath:e.url.replace(location.origin,"").slice(1),imgs:Array.from({length:e.totalImgs},(l,o)=>`${s}${o+1}.${i}`),title:{name:e.name,slug:e.slug,url:e.url,chapters:[{slug:"1",chap:0}]}}}async getRawChaptersData(){const e=await this.getRawTitleData();if(!e)return;const{chapters:t,...r}=e;return{title:{...r,chapters:[]},chapters:t}}}Ya(ze,"specId","nhentai");async function ke(){const a=await M(100,20,()=>window._gallery);if(!a?.id||!a?.title||!a?.images?.pages)return;const{title:e,images:{pages:t,cover:r},media_id:n}=a;return{name:e.pretty??e.english??e.japanese,slug:a.id+"",url:`${location.origin}/g/${a.id}`,chapters:[{slug:"1",chap:0}],totalImgs:t.length,img:await Qa(n,r.t)}}async function Qa(a,e){if(!a||!e)return;const t={j:"jpg",p:"png",g:"gif",w:"webp"}[e];if(!t)return;const r=(await M(10,20,()=>window._n_app))?.options?.thumb_cdn_urls?.[0];if(r)return`https://${r}/galleries/${a}/cover.${t}`}var Xa=Object.defineProperty,Za=(a,e,t)=>e in a?Xa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,er=(a,e,t)=>Za(a,e+"",t);class We extends v{finalizeRawReaderData(e,{prevSlug:t,nextSlug:r}={}){if(!e.title.chapters.length){const n=P(t?.split(".").slice(0,-1).join(".")),s=P(r?.split(".").slice(0,-1).join("."));return!n&&!s?e:{...e,prev:n?{...n,slug:t}:void 0,next:s?{...s,slug:r}:void 0}}return super.finalizeRawReaderData(e,{prevSlug:t,nextSlug:r})}}er(We,"specId","rawkuma");var tr=Object.defineProperty,ar=(a,e,t)=>e in a?tr(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,rr=(a,e,t)=>ar(a,e+"",t);class qe extends v{async getRawTitleData(){const e=await super.getRawTitleData();if(!e)return;const t=q(".info-detail__row > .genre-btn,.info__right .stats__row:first-child|text")?.map(r=>[r,...r.split(" ")]).flat();return Ge({...e,tags:this.getTagIdsFromNames(t)??[]},".episode-header .episode-cnt")}async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=`${location.origin}/series/${e.title.slug}/info`;return{...e,title:{...Ge({...e.title,url:t,tags:[]},".episode-list .js-ep-cnt"),hasMoreChapters:!1}}}async getRawChaptersData(){const{rawId:e,skip:t}=this.context,r=1e3,n=t?Math.floor(t/1e3)+1:1;try{const s=await fetch(`/series/${e}/episodes?page=${n}&sort=NEWEST&max_limit=${r}`);return nr(await s.json())}catch{return}}parseTitleUrl(e){if(!e)return{};const t=e.split("/").filter(Boolean);return{slug:t[1]??t[0]}}}rr(qe,"specId","tapas");function Ge(a,e){const t=sr(e)>20;return{...a,chapters:t?[]:a.chapters,hasMoreChapters:t}}function nr(a){const e=a?.data?.episodes;if(!Array.isArray(e))return;const t=e.map(n=>({chap:n.pending_scene??n.scene,slug:n.id+"",ts:new Date(n.publish_date)?.valueOf?.()||void 0})),r=a?.data?.pagination;return{chapters:t,total:r?.total??t.length,hasMore:!!r?.has_next}}function sr(a){return+(document.querySelector(a)?.textContent?.trim().split(" ")[0]||0)}var ir=Object.defineProperty,lr=(a,e,t)=>e in a?ir(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,or=(a,e,t)=>lr(a,e+"",t);class Fe extends v{async getRawTitleData(){const e=new URLSearchParams(location.search),t=e.get("episode_no"),r=e.get("title_no");if(t||!r)return;const n=await super.getRawTitleData();if(!n)return;const s=location.hostname.startsWith("m."),i=location.pathname.split("/")[1];return{...n,slug:`${n.slug}?title_no=${r}`,id:r,langs:i?[i]:void 0,chapters:s?[]:n.chapters.map(l=>({...l,lang:i})),hasMoreChapters:s||(document.querySelector(".paginate")?.childElementCount??1)>1}}async getRawReaderData(){const e=new URLSearchParams(location.search),t=e.get("episode_no"),r=e.get("title_no"),n=t?+t:void 0;if(!t||!r||typeof n!="number"||isNaN(n))return;const s=document.title.split("|")[1]?.trim();if(!s)return;const i=location.pathname.split("/"),l=`${i.slice(0,4).join("/")}/list?title_no=${r}`,o=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 || a|attr:href|pattern:.+episode_no=(\\d+).*"},{lazy:!1,titleId:r,titleSlug:l,titleName:s}),c=i[1];return{chap:n,lang:c,slug:`${location.pathname}?title_no=${r}&episode_no=${t}`,basePath:"",imgs:await this.getReaderImgs(),isWebtoon:!0,title:{id:r,url:l,slug:l,name:s,langs:[c],chapters:(o??[]).map(u=>({...u,lang:c})),hasMoreChapters:!1}}}async getReaderImgs(){const e=q("#_imageList img|[attr:data-url,attr:src]");return e?.length?e:await M(100,50,()=>window.__viewerState__?.scrollViewerParam?.imageList?.map(({url:t})=>t).filter(Boolean))}parseReaderUrl(e,t,r){if(!r)return{basePath:"",slug:t};if(r.startsWith("http://")||r.startsWith("https://")){const n=re(r);return{basePath:"",slug:n.pathname+n.search}}return{basePath:"",slug:r}}}or(Fe,"specId","webtoon");function cr(a){if(a)return typeof a=="string"||Array.isArray(a)?a.length?a:void 0:typeof a=="object"?Object.keys(a).length?a:void 0:a}var ur=Object.defineProperty,gr=(a,e,t)=>e in a?ur(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,pr=(a,e,t)=>gr(a,e+"",t);class He extends v{async getRawReleasesData(){const e=L();if(!e?.data?.length)return;const t=[];return e.data?.forEach(r=>{const n=P(r.chapter)?.chap,s=Je(r.relationships?.manga);!s||n===void 0||t.push({...s,chapters:[{vol:+r.vol||void 0,chap:n,slug:r.id,lang:w(r.lang),ts:w(r.published_at,i=>new Date(i).getTime())}]})}),this.finalizeRawReleasesData({rawReleases:t})}async getRawTitleData(){const e=await super.getRawTitleData();if(!e)return;const t=`https://api.${location.host}`,[r,n]=await Promise.all([$(t,"manga",e.id??I),$(t,"manga",e.id??I,"chapters")]),s=r?.value?.relationships?.available_languages?.map?.(i=>w(i)).filter(Boolean);if(e.langs=cr(s),n){const i=[];n.value.data?.forEach(l=>{const o=P(l.chapter),c=w(l.id);!o||!c||i.push({vol:+l.volume||void 0,chap:o.chap,slug:c,lang:w(l.language),group:w(l.relationships?.groups?.[0]?.name),ts:w(l.created_at,u=>new Date(u).getTime())})}),i.length&&(e.chapters=i,e.hasMoreChapters=n.value.total>n.value.limit)}return e}async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=e.slug.split("/")[0];e.slug=`${t}/1`;const r=`https://api.${location.host}`,[n,s]=await Promise.all([$(r,"chapter",t),$(r,"manga",I,"aggregate")]);if(n){const i=n.value;e.lang=w(i.language),e.group=w(i.relationships?.groups?.[0]?.name)}return s&&(e.title.chapters=this.parseAggregateChapter(s.value)),e}async getRawChaptersData(){const e=L();return e?{chapters:this.parseAggregateChapter(e)}:void 0}parseAggregateChapter(e){const t=e.groups?.map?.(s=>w(s?.name)),r=e.langs?.map?.(s=>w(s)).filter(Boolean),n=[];return e.chapters?.forEach(s=>{const i=P(s.chapter);if(!i)return;const l=+s.volume||void 0,o=i.chap;Object.entries(s.entries||{}).forEach(([c,u])=>{const p=w(u.published_at,h=>new Date(h).getTime()),g=T(u.language,h=>r?.[h]);u?.groups?.forEach(h=>{n.push({vol:l,chap:o,slug:c,lang:g,group:t[h],ts:p})})})}),j(n,{preferGroup:this.context.preferGroup})}async getRawSearchData(){try{const e=new URLSearchParams(location.search).get("title");if(!e)return;const t=await fetch(`https://api.${location.host}/manga?title=${encodeURIComponent(e)}&limit=42`);if(!t.ok)return;const r=await t.json(),n=[];return r?.data?.forEach?.(s=>{const i=Je(s);i&&n.push(i)}),{rawReleases:n}}catch{return}}}pr(He,"specId","weebdex");function Je(a){if(!a)return;const e=a?.relationships?.cover;return{id:a.id,slug:ve(a.title),name:a.title,img:e?`https://srv.notdelta.xyz/covers/${a.id}/${e.id}${e.ext}`:void 0,chapters:[]}}const hr=[me,we,se,ye,be,Re,$e,ie,Se,Ce,Me,Be,Le,je,Ae,Oe,Ne,Ee,_e,ze,We,qe,Fe,He];function Ve(a){const e=hr.find(t=>t.specId===a.spec.id)??v;return new e(a)}async function dr(a){const{spec:e,type:t}=a,r=a.siteMeta??e?.meta;if(e&&r){const n=t?[t]:Ke(r,e.generic);if(!n.length)return;const s=Ve({...a,spec:e,siteMeta:r});return await k(n.map(i=>s.getRawPageByType(i,n.length>1)))}return await k((a.genericSpecs??[]).map(n=>{if(!n.meta||!n.generic)return[];const s=t?[t]:Ke(n.meta,n.generic);if(!s.length)return[];const i=Ve({...a,spec:n,siteMeta:n.meta});return s.map(l=>i.getRawPageByType(l,!0))}).flat())}function Ke(a,e){if(location.pathname==="/")return[];const{titleBase:t,readerBase:r}=a,n=location.pathname.split("/").filter(Boolean),s=Ye(n,r),i=Ye(n,t);if(s&&i)return[S.reader,S.title];const l=[];return!i&&(s!==!1||e)&&l.push(S.reader),!s&&(i!==!1||e)&&l.push(S.title),!l.length&&e?[S.reader,S.title]:l}function Ye(a,e){if(!e)return;const t=e.split("/").filter(Boolean),r=t.indexOf("{slug}"),n=r===t.length-1,s=!n&&r!==-1;if(n&&(t.pop(),!t.length))return;const i=a.length-t.length;if(s?i<0:i<=0)return!1;let l=!1;for(let o=0;o<t.length;o++){const c=t[o];if(c[0]!=="{"){if(c!==a[o])return!1;l=!0}}if(l&&i===(s?0:1))return!0}z.PageType=S,z.scrape=dr}));
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "trackkun-dom",
3
3
  "author": "endyquang",
4
- "version": "2.13.0",
4
+ "version": "2.13.1",
5
5
  "license": "UNLICENSED",
6
6
  "description": "MP DOM parser & configurations",
7
7
  "main": "index.js",