diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bcaada74..d9e31f07 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -51,6 +51,15 @@ jobs: run: echo "USE_SYSTEM_FPM=true" >> $GITHUB_ENV - name: Set environment variable USE_HARD_LINKS run: echo "USE_HARD_LINKS=false" >> $GITHUB_ENV + - name: Modify package.json for dev branch + if: github.ref == 'refs/heads/dev' + shell: bash + run: | + if [[ "${{ matrix.os }}" == "windows-latest" ]]; then + powershell -Command "(Get-Content package.json) -replace '\"productName\": \"Koodo Reader\"', '\"productName\": \"Koodo Reader DEV\"' | Set-Content package.json" + else + sed -i.bak 's/"productName": "Koodo Reader"/"productName": "Koodo Reader DEV"/' package.json + fi - name: Modify package.json for Linux arm64 build if: startsWith(matrix.os, 'ubuntu-24.04-arm') run: | diff --git a/main.js b/main.js index 41ba5e4e..c52fd28a 100644 --- a/main.js +++ b/main.js @@ -669,12 +669,12 @@ const createMainWin = () => { ipcMain.handle("reload-reader", (event, arg) => { if (readerWindowList.length > 0) { readerWindowList.forEach(win => { - if (win && !win.isDestroyed()) { + if (win && !win.isDestroyed() && win.webContents.getURL().indexOf(arg.bookKey) > -1) { win.reload(); } }) } - if (readerWindow && !readerWindow.isDestroyed()) { + if (readerWindow && !readerWindow.isDestroyed() && readerWindow.webContents.getURL().indexOf(arg.bookKey) > -1) { readerWindow.reload(); } }); @@ -697,7 +697,6 @@ const createMainWin = () => { hasShadow: true, transparent: false, }); - console.log(config.url) chatWindow.loadURL(config.url); chatWindow.on("close", (event) => { chatWindow && chatWindow.destroy(); @@ -720,7 +719,6 @@ const createMainWin = () => { } }); ipcMain.on('picker-action', (event, config) => { - console.log("Picker finished with data:", config); //将数据传递给主窗口 if (mainWin && !mainWin.isDestroyed() && config.action === 'picked') { diff --git a/package.json b/package.json index 7a066ab2..3a001b55 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "koodo-reader", "main": "main.js", - "version": "2.2.2", + "version": "2.2.3", "description": "Koodo Reader is a cross-platform ebook reader", "author": { "name": "App by Troye", diff --git a/src/assets/lib/kookit-extra-browser.min.js b/src/assets/lib/kookit-extra-browser.min.js index 7b4fa9bd..31d26876 100644 --- a/src/assets/lib/kookit-extra-browser.min.js +++ b/src/assets/lib/kookit-extra-browser.min.js @@ -1 +1 @@ -import e from"axios";import{Storage as t}from"megajs";import{Buffer as r}from"buffer";import{createClient as n,AuthType as i}from"webdav/dist/web/index.js";import{SSE as o}from"sse.js";import{isElectron as s}from"react-device-detect";function a(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))}const c=e=>"json"===e?"application/json":["jpg","jpeg","png","gif","bmp"].includes(e)?"image/"+e:"zip"===e?"application/zip":"epub"===e?"application/epub+zip":"txt"===e?"text/plain":"pdf"===e?"application/pdf":"mobi"===e?"application/x-mobipocket-ebook":"azw3"===e||"azw"===e?"application/vnd.amazon.ebook":"cbz"===e?"application/x-cbz":"cbr"===e?"application/x-cbr":"cbt"===e?"application/x-cbt":"cb7"===e?"application/x-cb7":"fb2"===e?"application/x-fictionbook+xml":"html"===e?"text/html":"css"===e?"text/css":"js"===e?"application/javascript":"xml"===e?"application/xml":"xhtml"===e?"application/xhtml+xml":"opf"===e?"application/oebps-package+xml":"ncx"===e?"application/x-dtbncx+xml":"mp3"===e?"audio/mpeg":"wav"===e?"audio/wav":"ogg"===e?"audio/ogg":"mp4"===e?"video/mp4":"webm"===e?"video/webm":"avi"===e?"video/x-msvideo":"wmv"===e?"video/x-ms-wmv":"flv"===e?"video/x-flv":"m3u8"===e?"application/x-mpegURL":"ts"===e?"video/MP2T":"3gp"===e?"video/3gpp":"3g2"===e?"video/3gpp2":"db"===e?"application/x-sqlite3":void 0,u=["books","notes","bookmarks","plugins","words"],d=e=>{const t=atob(e),r=t.length,n=new Uint8Array(r);for(let e=0;e{let t="";const r=new Uint8Array(e),n=r.byteLength;for(let e=0;ee>>>t|e<<32-t,n=(e,t,r)=>e&t^~e&r,i=(e,t,r)=>e&t^e&r^t&r,o=e=>r(e,2)^r(e,13)^r(e,22),s=e=>r(e,6)^r(e,11)^r(e,25),a=e=>r(e,7)^r(e,18)^e>>>3,c=e=>r(e,17)^r(e,19)^e>>>10,u=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],d=8*e.length,l=(960-(8*e.length+1)%512)%512,h=e.length+Math.ceil((l+1)/8)+8,f=new Uint8Array(h);f.set(e),f[e.length]=128;new DataView(f.buffer,f.byteLength-8).setBigUint64(0,BigInt(d),!1);for(let e=0;e>>0;let[l,h,p,g,m,y,v,b]=u;for(let e=0;e<64;e++){const r=b+s(m)+n(m,y,v)+t[e]+d[e]>>>0,a=o(l)+i(l,h,p)>>>0;b=v,v=y,y=m,m=g+r>>>0,g=p,p=h,h=l,l=r+a>>>0}u[0]=u[0]+l>>>0,u[1]=u[1]+h>>>0,u[2]=u[2]+p>>>0,u[3]=u[3]+g>>>0,u[4]=u[4]+m>>>0,u[5]=u[5]+y>>>0,u[6]=u[6]+v>>>0,u[7]=u[7]+b>>>0}const p=new ArrayBuffer(32),g=new DataView(p);return u.forEach(((e,t)=>{g.setUint32(4*t,e,!1)})),p}const f={_chars:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",encode(e){if("string"!=typeof e)throw new Error("Input must be a string");let t="",r=0;const n=this._stringToUtf8Bytes(e),i=n.length;for(;r>2,c=(3&e)<<4|o>>4,u=(15&o)<<2|s>>6,d=63&s;t+=this._chars.charAt(a),t+=this._chars.charAt(c),t+=r-2>=i?"=":this._chars.charAt(u),t+=r-1>=i?"=":this._chars.charAt(d)}return t},decode(e){if("string"!=typeof e)throw new Error("Input must be a string");for(e=e.replace(/[^A-Za-z0-9+/]/g,"");e.length%4!=0;)e+="=";const t=[];let r=0;const n=e.length;for(;r>4,c=(15&i)<<4|o>>2,u=(3&o)<<6|s;t.push(a),-1!==o&&t.push(c),-1!==s&&t.push(u)}return this._utf8BytesToString(t)},_stringToUtf8Bytes(e){const t=[];for(let r=0;r>6),t.push(128|63&n);else if(55296==(64512&n)&&r+1>18),t.push(128|e>>12&63),t.push(128|e>>6&63),t.push(128|63&e)}else t.push(239,191,189),r--}else t.push(224|n>>12),t.push(128|n>>6&63),t.push(128|63&n)}return t},_utf8BytesToString(e){let t="",r=0;for(;r65535){const r=e-65536;t+=String.fromCharCode(55296|r>>10),t+=String.fromCharCode(56320|1023&r)}else t+=String.fromCharCode(e)}else t+="�"}else t+="�"}return t},encodeURL(e){return this.encode(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")},decodeURL(e){for(e=e.replace(/-/g,"+").replace(/_/g,"/");e.length%4;)e+="=";return this.decode(e)}};class p{constructor(e){this.queue=[],this.runningTasks=0,this.totalTasks=0,this.completedTasks=0,this.hasFailedTasks=!1,this.downloadedSize=0,this.maxConcurrency=e}addTask(e){return a(this,void 0,void 0,(function*(){return this.totalTasks++,new Promise(((t,r)=>{const n=()=>a(this,void 0,void 0,(function*(){try{this.runningTasks++;const r=yield e();return this.completedTasks++,t(r),r}catch(e){throw this.completedTasks++,r(e),e}finally{this.runningTasks--,this.runNext()}}));this.runningTasks0&&this.runningTasks"application/json"===e?"json":e.startsWith("image/")?e.split("/")[1]:"application/zip"===e?"zip":"application/epub+zip"===e?"epub":"text/plain"===e?"txt":"application/pdf"===e?"pdf":"application/x-mobipocket-ebook"===e?"mobi":"application/vnd.amazon.ebook"===e?"azw3":"application/x-cbz"===e?"cbz":"application/x-cbr"===e?"cbr":"application/x-cbt"===e?"cbt":"application/x-cb7"===e?"cb7":"application/x-fictionbook+xml"===e?"fb2":"text/html"===e?"html":"text/css"===e?"css":"application/javascript"===e?"js":"application/xml"===e?"xml":"application/xhtml+xml"===e?"xhtml":"application/oebps-package+xml"===e?"opf":"application/x-dtbncx+xml"===e?"ncx":"audio/mpeg"===e?"mp3":"audio/wav"===e?"wav":"audio/ogg"===e?"ogg":"video/mp4"===e?"mp4":"video/webm"===e?"webm":"video/x-msvideo"===e?"avi":"video/x-ms-wmv"===e?"wmv":"video/x-flv"===e?"flv":"application/x-mpegURL"===e?"m3u8":"video/MP2T"===e?"ts":"video/3gpp"===e?"3gp":"video/3gpp2"===e?"3g2":"application/x-sqlite3"===e?"db":"",databaseList:u,configList:["themeColors","readingTime","cloudSyncTime","lastSyncTime","recentBooks","recentAdd","deletedBooks","favoriteBooks","shelfList","txtParsers","noteTags","recordLocation","sortedShelfList","kindleDeviceList"],copyArrayBuffer:e=>{var t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(new Uint8Array(e)),t},base64ToArrayBuffer:d,arrayBufferToBase64:l,generateSHA256Hash:function(e){return a(this,void 0,void 0,(function*(){const t=(new TextEncoder).encode(e),r="undefined"!=typeof crypto&&crypto.subtle?yield crypto.subtle.digest("SHA-256",t):h(t),n=Array.from(new Uint8Array(r)).map((e=>e.toString(16).padStart(2,"0"))).join("");return n}))},EmailProviders:["gmail.com","qq.com","163.com","yahoo.com","sina.com","sina.cn","126.com","outlook.com","yeah.net","foxmail.com","hotmail.com","protonmail.com","proton.me","icloud.com","mail.com","live.com","aliyun.com","sohu.com","yandex.com","naver.com","mail.ru","yahoo.co.jp","139.com","189.com"],Base64:f};const m={publicUrl:"https://api.960960.xyz",cloudUrl:"https://cloud.koodoreader.com",cloudCNUrl:"https://cloud.koodoreader.cn",devUrl:"http://192.168.28.159:8000"},y={callbackUrl:"https://web.koodoreader.com/",cnCallbackUrl:"https://web.koodoreader.cn/",dropboxClientId:"vnc67byrssocvy1",yandexClientId:"e5305b62f53844b1994f77a840fd0a37",pcloudClientId:"pg8ten0B3vH",boxClientId:"ltimecqanmpxoaicn9qw3es6l3sdl1ya",duboxClientId:"kc0Ls6xLZugGgLLVhZ8yhUU1cRkRoKNU",yiyiwuClientId:"100197197",microsoftClientId:"506df58a-29ab-4020-afc5-6f423dc80f35",googleClientId:"1051055003225-ph1f5fvh328dhv7bco5jitlnfhg6ks2t.apps.googleusercontent.com",appleClientId:"com.koodoreader.auth",facebookClientId:"2845583825559500",githubClientId:"Ov23liJVzfvJMMEEZ8v2",adriveClientId:"a128ae7b9c094545af623de61dc0a1ef"},v={google:{clientId:y.googleClientId,scopes:["openid email profile"],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{prompt:"consent",scope:"openid email profile"}},microsoft:{clientId:y.microsoftClientId,scopes:["openid","profile","User.Read","offline_access"],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:"openid profile User.Read offline_access"}},facebook:{clientId:y.facebookClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:""}},github:{clientId:y.githubClientId,scopes:["user:email"],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:"user:email"}},apple:{clientId:y.appleClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{}},email:{clientId:"",scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:""}}};var b={CloudConfig:m,ThirdpartyConfig:y,LoginAuthRequest:v,LoginDiscovery:{microsoft:{authorizationEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",tokenEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/token"},google:{authorizationEndpoint:"https://accounts.google.com/o/oauth2/v2/auth",tokenEndpoint:"https://oauth2.googleapis.com/token"},facebook:{authorizationEndpoint:"https://www.facebook.com/v12.0/dialog/oauth",tokenEndpoint:"https://graph.facebook.com/v12.0/oauth/access_token"},github:{authorizationEndpoint:"https://github.com/login/oauth/authorize",tokenEndpoint:"https://github.com/login/oauth/access_token"},apple:{authorizationEndpoint:"https://appleid.apple.com/auth/authorize",tokenEndpoint:"https://appleid.apple.com/auth/token"},email:{authorizationEndpoint:"",tokenEndpoint:""}},DriveAuthRequest:{dropbox:{clientId:y.dropboxClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{token_access_type:"offline"}},yandex:{clientId:y.yandexClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{response_type:"code",force_confirm:"true"}},boxnet:{clientId:y.boxClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{grant_type:"authorization_code",box_subject_type:"enterprise",scope:"root_readwrite"}},pcloud:{clientId:y.pcloudClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{grant_type:"authorization_code"}},dubox:{clientId:y.duboxClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{response_type:"code",scope:"basic,netdisk",device_id:"119827642",qrcode:"1"}},yiyiwu:{clientId:y.yiyiwuClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{response_type:"code"}},adrive:{clientId:y.adriveClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{grant_type:"authorization_code",scope:"user:base,file:all:write,file:all:read"}},microsoft:{clientId:y.microsoftClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:"files.readwrite.appfolder offline_access"}},google:{clientId:y.googleClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{prompt:"consent",scope:"https://www.googleapis.com/auth/drive.file",access_type:"offline"}},microsoft_exp:{clientId:y.microsoftClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:"files.readwrite.all offline_access"}},google_exp:{clientId:y.googleClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{prompt:"consent",scope:"https://www.googleapis.com/auth/drive",access_type:"offline"}}},DriveDiscovery:{dropbox:{authorizationEndpoint:"https://www.dropbox.com/oauth2/authorize",tokenEndpoint:"https://www.dropbox.com/oauth2/token"},yandex:{authorizationEndpoint:"https://oauth.yandex.com/authorize",tokenEndpoint:"https://oauth.yandex.com/token"},boxnet:{authorizationEndpoint:"https://account.box.com/api/oauth2/authorize",tokenEndpoint:"https://api.box.com/oauth2/token"},pcloud:{authorizationEndpoint:"https://my.pcloud.com/oauth2/authorize",tokenEndpoint:"https://api.pcloud.com/oauth2_token"},dubox:{authorizationEndpoint:"https://openapi.baidu.com/oauth/2.0/authorize",tokenEndpoint:"https://openapi.baidu.com/oauth/2.0/token"},yiyiwu:{authorizationEndpoint:"https://passportapi.115.com/open/authorize",tokenEndpoint:"https://passportapi.115.com/open/authorize"},adrive:{authorizationEndpoint:"https://openapi.alipan.com/oauth/authorize",tokenEndpoint:"https://openapi.alipan.com/oauth/token"},microsoft:{authorizationEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",tokenEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/token"},google:{authorizationEndpoint:"https://accounts.google.com/o/oauth2/v2/auth",tokenEndpoint:"https://oauth2.googleapis.com/token"},microsoft_exp:{authorizationEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",tokenEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/token"},google_exp:{authorizationEndpoint:"https://accounts.google.com/o/oauth2/v2/auth",tokenEndpoint:"https://oauth2.googleapis.com/token"}}};class w{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.driveId="",this.refreshTokenPromise=null,this.taskQueue=new p(1),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=5){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getDriveId(){return a(this,void 0,void 0,(function*(){if(this.driveId)return this.driveId;const t=yield this.refreshToken(),r=yield e.post("https://openapi.alipan.com/adrive/v1.0/user/getDriveInfo",{},{headers:{Authorization:`Bearer ${t}`}});return this.driveId=r.data.default_drive_id,this.driveId}))}getFolderIdByPath(t){return a(this,void 0,void 0,(function*(){const r=yield this.refreshToken(),n=yield this.getDriveId();try{try{const i=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:n,file_path:t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(i.data)return i.data.file_id}catch(i){const o=t.split("/").filter((e=>e));let s="",a="root";for(const t of o){s+="/"+t;try{a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:n,file_path:s},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}catch(i){a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:n,parent_file_id:a,name:t,type:"folder",check_name_mode:"refuse"},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}}return a}}catch(e){return console.error("Error getting/creating folder by path:",e),""}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield this.getDriveId(),i=yield this.getFolderIdByPath(this.baseFolder+"/"+t);let o=[],s="",a=!0;for(;a;){const t=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/list",{drive_id:n,parent_file_id:i,marker:s||void 0},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),c=t.data.items||[];o=o.concat(c),s=t.data.next_marker,a=!!s&&100===c.length}return[...new Set(o.map((e=>({name:e.name,size:e.size,type:e.type,modified:e.updated_at}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield this.getDriveId(),i=yield this.getFolderIdByPath(this.baseFolder+"/"+t);return!i||(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/delete",{drive_id:n,file_id:i},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}checkExists(t){var r;return a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken(),i=yield this.getDriveId(),o=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:t},{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"}});(null===(r=o.data)||void 0===r?void 0:r.file_id)&&(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/recyclebin/trash",{drive_id:i,file_id:o.data.file_id},{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"}}))}catch(e){}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"adrive",refresh_token:e});this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("adrive_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"adrive",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://openapi.alipan.com/oauth/authorize?${new URLSearchParams({response_type:"code",client_id:y.adriveClientId,redirect_uri:e,grant_type:"authorization_code",scope:"user:base,file:all:write,file:all:read"}).toString()}`}}class k extends w{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return new Promise(((n,i)=>a(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken(),o=yield this.getDriveId(),s=r.substring(0,r.lastIndexOf("/")),a=r.substring(r.lastIndexOf("/")+1),c=yield this.getFolderIdByPath(this.baseFolder+"/"+s),u=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:o,parent_file_id:c,name:a,type:"file",check_name_mode:"ignore"},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}}),{file_id:d,upload_id:l,part_info_list:h}=u.data;yield e.put(h[0].upload_url,t,{headers:{"Content-Type":"application/octet-stream"}}),yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/complete",{drive_id:o,file_id:d,upload_id:l},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}}),n(!0)}catch(e){console.error("Error uploading file:",e),n(!1)}}))))}))}downloadFile(t){return new Promise(((r,n)=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const n=yield this.refreshToken(),i=yield this.getDriveId(),o=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:this.baseFolder+"/"+t},{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"}})).data.file_id,s=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/getDownloadUrl",{drive_id:i,file_id:o},{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"}}),a=yield e.get(s.data.url,{responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});r(a.data)}catch(e){console.error("Error downloading file:",e),r(!1)}}))))}}class S{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getFolderIdByPath(t){return a(this,void 0,void 0,(function*(){if(""==t)return"0";const r=yield this.refreshToken(),n=t.split("/");let i="0";for(const t of n){const n=`https://api.box.com/2.0/folders/${i}/items?fields=id,name&type=folder&limit=1000`;try{const o=(yield e.get(n,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===t&&"folder"===e.type));if(o)i=o.id;else{const n={name:t,parent:{id:i},type:"folder"};i=(yield e.post("https://api.box.com/2.0/folders",n,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}}catch(e){return console.error("Error occurred during folder creation:",e),""}}return i}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=this.baseFolder+"/"+t;for(;n.startsWith("/");)n=n.substring(1);let i=yield this.getFolderIdByPath(n),o=[],s=0,a=!0;const c=1e3;for(;a;){const t=yield e.get(`https://api.box.com/2.0/folders/${i}/items`,{params:{limit:c,offset:s},headers:{Authorization:`Bearer ${r}`}}),n=t.data.entries||[];o=o.concat(n),s+=n.length,a=n.length===c&&t.data.total_count>s}return[...new Set(o.map((e=>({name:e.name,size:e.size||0,type:e.type,modified:e.content_modified_at}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=t.substring(0,t.lastIndexOf("/")),i=t.substring(t.lastIndexOf("/")+1);let o=this.baseFolder+"/"+n;for(;o.startsWith("/");)o=o.substring(1);const s=yield this.getFolderIdByPath(o);if(!s)return!0;const a=`https://api.box.com/2.0/folders/${s}/items?fields=id,name&type=file&limit=1000`,c=(yield e.get(a,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===i&&"file"===e.type));return!c||(yield e.delete(`https://api.box.com/2.0/files/${c.id}`,{headers:{Authorization:`Bearer ${r}`}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"boxnet",refresh_token:e});this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("boxnet_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"boxnet",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://account.box.com/api/oauth2/authorize?${new URLSearchParams({response_type:"code",client_id:y.boxClientId,redirect_uri:e,grant_type:"authorization_code",box_subject_type:"enterprise",scope:"root_readwrite"}).toString()}`}}class E extends S{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken(),i=r.substring(0,r.lastIndexOf("/")),o=r.substring(r.lastIndexOf("/")+1);let s=this.baseFolder+"/"+i;for(;s.startsWith("/");)s=s.substring(1);const a=yield this.getFolderIdByPath(s);if(!a)throw new Error("Folder not found");const c=(yield this.listFiles(i)).find((e=>e===o));c&&(yield this.deleteFileWithoutQueue(i+"/"+o));let u=new File([t],o,{lastModified:(new Date).getTime(),type:t.type});const d=new FormData;d.append("file",u),d.append("parent_id",a);const l=yield e.post("https://upload.box.com/api/2.0/files/content",d,{headers:{Authorization:`Bearer ${n}`,"Content-Type":"multipart/form-data"},params:{if_match:"false",fields:"name,id"},maxContentLength:1/0,maxBodyLength:1/0});return!(l.status>=300)||(console.error("Error occurred during file upload:",l),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken(),n=t.substring(0,t.lastIndexOf("/")),i=t.substring(t.lastIndexOf("/")+1);let o=this.baseFolder+"/"+n;for(;o.startsWith("/");)o=o.substring(1);const s=yield this.getFolderIdByPath(o);if(!s)return console.error("Folder not found"),!0;const a=`https://api.box.com/2.0/folders/${s}/items?fields=id,name&type=file&limit=1000`,c=(yield e.get(a,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===i&&"file"===e.type));if(!c)return console.error("File not found:",i),!0;const u=yield e({url:`https://api.box.com/2.0/files/${c.id}/content`,method:"get",headers:{Authorization:`Bearer ${r}`},responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return u.status>=300?(console.error("Error occurred during file download:",u),!1):u.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class x{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3)}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=[],i=!0,o=null;for(;i;){let s;s=o?yield e.post("https://api.dropboxapi.com/2/files/list_folder/continue",{cursor:o},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}):yield e.post("https://api.dropboxapi.com/2/files/list_folder",{path:"/"+t,limit:2e3},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});const a=s.data.entries||[];n=n.concat(a),i=s.data.has_more,o=s.data.cursor}return[...new Set(n.map((e=>({name:e.name,size:e.size||0,type:e[".tag"],modified:e.client_modified}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();yield e.post("https://api.dropboxapi.com/2/files/delete_v2",{path:"/"+t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"dropbox",refresh_token:e});return this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dropbox",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://www.dropbox.com/oauth2/authorize?response_type=code&token_access_type=offline&client_id=${y.dropboxClientId}&redirect_uri=${e}`}}class A extends x{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken();let i=r.split("/").pop()||"",o=new File([t],i,{lastModified:(new Date).getTime(),type:t.type});const s=yield e.post("https://content.dropboxapi.com/2/files/upload",o,{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/octet-stream","Dropbox-API-Arg":JSON.stringify({path:"/"+r,mode:"overwrite",autorename:!0,mute:!1})},maxContentLength:1/0,maxBodyLength:1/0});return!(s.status>=300)||(console.error("Error occurred during file upload:",s),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken(),n=yield e({url:"https://content.dropboxapi.com/2/files/download",method:"post",headers:{Authorization:`Bearer ${r}`,"Dropbox-API-Arg":JSON.stringify({path:"/"+t})},maxContentLength:1/0,maxBodyLength:1/0,responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return n.status>=300?(console.error("Error occurred during file download:",n),!1):n.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class T{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){var r,n;return a(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);let o=[],s=0;const a=1e3;let c=!0;for(;c;){const u=yield e.get("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${i}`,"Content-Type":"application/json"},params:{path:t?`/${t}`:"/",limit:a,offset:s,fields:"_embedded.items.name,_embedded.items.size,_embedded.items.type,_embedded.items.modified,_embedded.total"}}),d=(null===(r=u.data._embedded)||void 0===r?void 0:r.items)||[];o=o.concat(d);const l=(null===(n=u.data._embedded)||void 0===n?void 0:n.total)||0;s+=d.length,c=s({name:e.name,size:e.size||0,type:"file"===e.type?"file":"folder",modified:e.modified}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const n=yield e.delete("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${r}`,"Content-Type":"application/json"},params:{path:t?`/${t}`:"/",permanently:!1}});return 202===n.status||204===n.status}catch(e){return console.error("Error deleting file:",e),!1}}))}ensureDirectoryExists(t){var r,n;return a(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken(),o=t.split("/").filter((e=>e.length>0));let s="";for(const t of o){s+="/"+t;try{yield e.get("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${i}`,"Content-Type":"application/json"},params:{path:s}})}catch(t){if(404!==(null===(r=t.response)||void 0===r?void 0:r.status))return console.error("Error checking directory:",t),!1;try{yield e.put(`https://cloud-api.yandex.net/v1/disk/resources?path=${encodeURIComponent(s)}`,null,{headers:{Authorization:`OAuth ${i}`}})}catch(e){if(409!==(null===(n=e.response)||void 0===n?void 0:n.status))return console.error("Error creating directory:",e),!1}}}return!0}catch(e){return console.error("Error ensuring directory exists:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"yandex",refresh_token:e});return this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"yandex",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://oauth.yandex.com/authorize?response_type=code&client_id=${y.yandexClientId}&redirect_uri=${e}&force_confirm=true`}}class C extends T{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken();let i=this.baseFolder+"/"+r;for(;i.startsWith("/");)i=i.substring(1);const o=i.substring(0,i.lastIndexOf("/"));if(o){if(!(yield this.ensureDirectoryExists(o)))return console.error("Failed to create directory:",o),!1}const s=yield e.get("https://cloud-api.yandex.net/v1/disk/resources/upload",{headers:{Authorization:`OAuth ${n}`,"Content-Type":"application/json"},params:{path:`/${i}`,overwrite:!0}});if(200!==s.status)return console.error("Error getting upload URL:",s),!1;const a=s.data.href;let c=r.split("/").pop()||"",u=new File([t],c,{lastModified:(new Date).getTime(),type:t.type});const d=yield e.put(a,u,{headers:{"Content-Type":t.type||"application/octet-stream"},maxContentLength:1/0,maxBodyLength:1/0});return!(d.status>=300)||(console.error("Error occurred during file upload:",d),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken();let n=this.baseFolder+"/"+t;for(;n.startsWith("/");)n=n.substring(1);const i=yield e.get("https://cloud-api.yandex.net/v1/disk/resources/download",{headers:{Authorization:`OAuth ${r}`,"Content-Type":"application/json"},params:{path:`/${n}`}});if(200!==i.status)return console.error("Error getting download URL:",i),!1;const o=i.data.href,s=yield e({url:o,method:"get",maxContentLength:1/0,maxBodyLength:1/0,responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return s.status>=300?(console.error("Error occurred during file download:",s),!1):s.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class R{constructor(e,t){this.isExp=!1,this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),this.isExp=this.config.isExp||!1,void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getFileId(t,r){return a(this,void 0,void 0,(function*(){const n=yield this.refreshToken(),i=`https://www.googleapis.com/drive/v3/files?q=name='${t}'+and+'${r}'+in+parents&fields=files(id,name)`;try{const t=yield e.get(i,{headers:{Authorization:"Bearer "+n}});if(0===t.data.files.length)return"";const r=t.data.files;return r.length>0?r[0].id:null}catch(e){return console.error("Error occurred during file list retrieval:",e),""}}))}checkFolder(t){return a(this,void 0,void 0,(function*(){t=this.baseFolder+"/"+t;const r=yield this.refreshToken();if(""===t)return"root";const n=t.split("/").filter((e=>""!==e.trim()));let i="root";for(const t of n){let n=yield this.getFolderId(t,i);if(!n){const o={name:t,mimeType:"application/vnd.google-apps.folder",parents:[i]};try{n=(yield e.post("https://www.googleapis.com/drive/v3/files",o,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}catch(e){throw console.error(`Error occurred during folder creation for ${t}:`,e),e}}i=n}return i}))}getFolderId(t,r){return a(this,void 0,void 0,(function*(){const n=yield this.refreshToken(),i=`https://www.googleapis.com/drive/v3/files?q=name='${t=encodeURIComponent(t)}'+and+mimeType='application/vnd.google-apps.folder'+and+'${r}'+in+parents&fields=files(id,name)`;try{const t=(yield e.get(i,{headers:{Authorization:`Bearer ${n}`}})).data.files;return t.length>0?t[0].id:null}catch(e){throw console.error("Error occurred during fetching folder ID:",e),e}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=yield this.checkFolder(t),i=[],o="",s=!0;for(;s;){let t=`https://www.googleapis.com/drive/v3/files?q='${n}'+in+parents&fields=nextPageToken,files(id,name,size,mimeType)&pageSize=1000`;o&&(t+=`&pageToken=${o}`);const a=yield e.get(t,{headers:{Authorization:`Bearer ${r}`}}),c=a.data.files||[];i=i.concat(c),o=a.data.nextPageToken,s=!!o}return[...new Set(i.map((e=>({name:e.name,size:e.size||0,type:"application/vnd.google-apps.folder"===e.mimeType?"folder":"file",modified:e.modifiedTime}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQue(e)}))))))}))}deleteFileWithoutQue(t){return a(this,void 0,void 0,(function*(){const r=t.split("/")[1],n=yield this.checkFolder(t),i=yield this.refreshToken(),o=yield this.getFileId(r,n);if(""===o)return console.error("File not found:",r),!0;try{const t=yield e.delete(`https://www.googleapis.com/drive/v3/files/${o}`,{headers:{Authorization:`Bearer ${i}`}});return console.error("File deleted:",t),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"google",refresh_token:e});return this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"google",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${e}&prompt=consent&response_type=code&client_id=${y.googleClientId}&scope=https://www.googleapis.com/auth/${this.isExp?"drive":"drive.file"}&access_type=offline`}}class _ extends R{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken();let i=r.split("/").pop()||"",o=new File([t],i,{lastModified:(new Date).getTime(),type:t.type}),s=r.split(".").pop(),a=c(s||""),u=r.split("/")[0],d=yield this.checkFolder(u),l=yield this.getFileId(i||"",d);const h={mimeType:a,name:i,parents:[d]},f=l?`https://www.googleapis.com/upload/drive/v3/files/${l}?uploadType=resumable`:"https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable",p=(yield e({method:l?"PATCH":"POST",url:f,data:l?null:JSON.stringify(h),headers:{Authorization:"Bearer "+n,"Content-Type":"application/json; charset=UTF-8"},maxContentLength:1/0,maxBodyLength:1/0})).headers.location,g=yield this.getData(o);if(0===Object.keys(g).length)return!1;const m=yield e.put(p,g.data,{headers:{Authorization:"Bearer "+n,"Content-Type":"application/zip","Content-Range":`bytes 0-${g.fileSize-1}/${g.fileSize}`},maxContentLength:1/0,maxBodyLength:1/0});return!(m.status>=300)||(console.error("Error occurred during file download:",m),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken();let n=t.split("/").pop(),i=t.split("/")[0],o=yield this.checkFolder(i),s=yield this.getFileId(n||"",o);if(!s)return console.error("File not found:",n),!0;const a=`https://www.googleapis.com/drive/v3/files/${s}?alt=media`,c=yield e.get(a,{headers:{Authorization:"Bearer "+r},maxContentLength:1/0,maxBodyLength:1/0,responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return c.status>=300?(console.error("Error occurred during file download:",c),!1):c.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getData(e){return a(this,void 0,void 0,(function*(){return e?new Promise(((t,r)=>{const n=new FileReader;n.onload=r=>t({fileName:e.name,mimeType:e.type,fileSize:e.size,data:r.target.result}),n.onerror=e=>r(e),n.readAsArrayBuffer(e)})):{}}))}}class O{constructor(e){this.folderCreationLocks=new Map,this.config=e,this.taskQueue=new p(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getStorage(){return a(this,void 0,void 0,(function*(){if(this.storage)return this.storage;let{email:e,password:r}=this.config;return this.storage=yield new t({email:e,password:r}).ready,this.storage}))}getRoot(){return a(this,void 0,void 0,(function*(){if(this.root)return this.root;const e=(yield this.getStorage()).root;if(""===this.baseFolder)return this.root=e,this.root;let t=e.children.find((e=>e.name===this.baseFolder&&e.directory));return t||(t=yield e.mkdir(this.baseFolder)),this.root=t,this.root}))}createFolder(e,t){return a(this,void 0,void 0,(function*(){const r=`${e.nodeId}_${t}`;if(this.folderCreationLocks.has(r))return yield this.folderCreationLocks.get(r);const n=(()=>a(this,void 0,void 0,(function*(){try{let r=e.children.find((e=>e.name===t&&e.directory));return r||(r=yield e.mkdir(t),r)}finally{this.folderCreationLocks.delete(r)}})))();return this.folderCreationLocks.set(r,n),yield n}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return a(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();if(e){const r=e.split("/").filter((e=>e));for(const e of r){const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return[];t=r}}const r=t.children.map((e=>({name:e.name,size:e.size||0,type:e.directory?"folder":"file",modified:e.timestamp?new Date(1e3*e.timestamp).toISOString():""})));return r}catch(e){return console.error("Error listing MEGA files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(e){return a(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();const r=e.split("/"),n=r.pop();for(const e of r){if(!e)continue;const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return!0;t=r}const i=t.children.find((e=>e.name===n&&!e.directory));return!i||(yield i.delete(),!0)}catch(e){return console.error("Error deleting MEGA file:",e),!1}}))}}class P extends O{constructor(e){super(e)}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{let n=yield this.getRoot();const i=t.split("/"),o=i.pop()||"";for(const e of i){if(!e)continue;let t=n.children.find((t=>t.name===e&&t.directory));t||(t=yield this.createFolder(n,e)),n=t}const s=new File([e],o,{lastModified:(new Date).getTime(),type:e.type}),a=yield e.arrayBuffer(),c=new Uint8Array(a),u=r.from(c),d=n.children.find((e=>e.name===o&&!e.directory));return d&&(yield d.delete()),yield n.upload({name:o,size:s.size},u).complete,!0}catch(e){return console.error("Error occurred during MEGA file upload:",e),!1}}))))))}))}downloadFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{let t=yield this.getRoot();const r=e.split("/"),n=r.pop()||"";for(const e of r){if(!e)continue;const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return!0;t=r}const i=t.children.find((e=>e.name===n&&!e.directory));if(!i)return!0;const o=yield i.downloadBuffer();return this.taskQueue.setDownloadedSize(o.size),o.buffer}catch(e){return console.error("Error occurred during MEGA file download:",e),!1}}))))))}))}}class I{constructor(e,t){this.isExp=!1,this.baseUrl="https://graph.microsoft.com/v1.0/me/drive/special/approot",this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),this.isExp=this.config.isExp||!1,this.baseUrl=this.isExp?"https://graph.microsoft.com/v1.0/me/drive/root":"https://graph.microsoft.com/v1.0/me/drive/special/approot",void 0===this.config.baseFolder?this.baseFolder=this.isExp?"KoodoReader":"":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);let n,i=[];if(""===t)n=`${this.baseUrl}/children`;else{const e=encodeURIComponent(t);n=`${this.baseUrl}:/${e}:/children`}for(;n;){const t=yield e.get(n,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(t.status>=300)break;const o=t.data.value||[];i=i.concat(o),n=t.data["@odata.nextLink"]||""}return[...new Set(i.map((e=>({name:e.name,size:e.size||0,type:e.folder?"folder":"file",modified:e.lastModifiedDateTime}))))]}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const n=yield e.delete(`${this.baseUrl}:/${t}`,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!(n.status>=300)||(console.error("Error deleting file:",n),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"microsoft",refresh_token:e});return this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"microsoft",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=${y.microsoftClientId}&scope=${this.isExp?"files.readwrite.all":"files.readwrite.appfolder"} offline_access&response_type=code&redirect_uri=${e}`}}class M extends I{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken();let i=r.split("/").pop()||"",o=new File([t],i,{lastModified:(new Date).getTime(),type:t.type}),s=this.baseFolder+"/"+r;for(;s.startsWith("/");)s=s.substring(1);const a=this.baseUrl+":/"+s+":/createUploadSession",c=yield e.post(a,null,{headers:{Authorization:"Bearer "+n,"Content-Type":"application/json"},maxContentLength:1/0,maxBodyLength:1/0});let u=o.size;const d=o.type,l=c.data.uploadUrl,h=yield e.put(l,o,{headers:{"Content-Type":d,"Content-Range":`bytes 0-${u-1}/${u}`},maxContentLength:1/0,maxBodyLength:1/0});return!(h.status>=300)||(console.error("Error occurred during file download:",h),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken();let n=this.baseFolder+"/"+t;for(;n.startsWith("/");)n=n.substring(1);const i=`${this.baseUrl}:/${n}:/content`,o=yield e.get(i,{responseType:"arraybuffer",headers:{Authorization:"Bearer "+r},maxContentLength:1/0,maxBodyLength:1/0,onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return o.status>=300?(console.error("Error occurred during file download:",o),!1):o.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class N{downloadFile(e,t){return a(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}listFiles(e){return a(this,void 0,void 0,(function*(){return new Promise((e=>{e([])}))}))}authToken(e){return a(this,void 0,void 0,(function*(){return new Promise((e=>{e("")}))}))}getAuthUrl(){return""}}class F{constructor(e,t){this.baseUrl="https://api.pcloud.com",this.config=e,this.thirdpartyRequest=t,this.taskQueue=new p(3),this.baseUrl="2"===e.region?"https://eapi.pcloud.com":"https://api.pcloud.com"}retryOperation(e,t=5){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}checkFolderExists(t,r){return a(this,void 0,void 0,(function*(){try{return 0===(yield e.get(`${this.baseUrl}/listfolder`,{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error checking folder:",e),!1}}))}createFolder(t,r){return a(this,void 0,void 0,(function*(){try{return 0===(yield e.get(`${this.baseUrl}/createfolderifnotexists`,{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error creating folder:",e),!1}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield e.get(`${this.baseUrl}/listfolder`,{params:{access_token:r,path:"/"+t,recursive:0}});return 0!==n.data.result?[]:n.data.metadata.contents.map((e=>({name:e.name,size:e.size||0,type:e.isfolder?"folder":"file",modified:e.modified})))}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield e.get(`${this.baseUrl}/deletefile`,{params:{access_token:r,path:"/"+t}});return 0===n.data.result||(console.error("Error deleting file:",n.data),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.refresh_token}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"pcloud",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://my.pcloud.com/oauth2/authorize?client_id=${y.pcloudClientId}&response_type=code&redirect_uri=${e}`}}class $ extends F{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken(),i=r.split("/").slice(0,-1).join("/");if(!(yield this.checkFolderExists(i,n))){if(!(yield this.createFolder(i,n)))return!1}let o=r.split("/").pop()||"",s=new File([t],o,{lastModified:(new Date).getTime(),type:t.type});const a=new FormData;a.append("file",s);const c=yield e.post(`${this.baseUrl}/uploadfile`,a,{params:{access_token:n,path:`/${i}`,renew:1},maxContentLength:1/0,maxBodyLength:1/0});return 0===c.data.result||(console.error("Error uploading file:",c.data),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken(),n=yield e.get(`${this.baseUrl}/getfilelink`,{params:{access_token:r,path:`/${t}`}});if(0!==n.data.result)return console.error("Error getting file link:",n.data),!0;const i=`https://${n.data.hosts[0]}${n.data.path}`,o=yield e.get(i,{responseType:"arraybuffer",maxContentLength:1/0,maxBodyLength:1/0,onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return o.status>=300?(console.error("Error downloading file:",o),!1):o.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}const U=e=>{let t=e.httpHandler;return{setHttpHandler(e){t=e},httpHandler:()=>t,updateHttpClientConfig(e,r){t.updateHttpClientConfig(e,r)},httpHandlerConfigs:()=>t.httpHandlerConfigs()}};var L,D,B,z,j;!function(e){e.HEADER="header",e.QUERY="query"}(L||(L={})),function(e){e.HEADER="header",e.QUERY="query"}(D||(D={})),function(e){e.HTTP="http",e.HTTPS="https"}(B||(B={})),function(e){e.MD5="md5",e.CRC32="crc32",e.CRC32C="crc32c",e.SHA1="sha1",e.SHA256="sha256"}(z||(z={})),function(e){e[e.HEADER=0]="HEADER",e[e.TRAILER=1]="TRAILER"}(j||(j={}));const q="__smithy_context";var W,H;!function(e){e.PROFILE="profile",e.SSO_SESSION="sso-session",e.SERVICES="services"}(W||(W={})),function(e){e.HTTP_0_9="http/0.9",e.HTTP_1_0="http/1.0",e.TDS_8_0="tds/8.0"}(H||(H={}));class K{constructor(e){this.method=e.method||"GET",this.hostname=e.hostname||"localhost",this.port=e.port,this.query=e.query||{},this.headers=e.headers||{},this.body=e.body,this.protocol=e.protocol?":"!==e.protocol.slice(-1)?`${e.protocol}:`:e.protocol:"https:",this.path=e.path?"/"!==e.path.charAt(0)?`/${e.path}`:e.path:"/",this.username=e.username,this.password=e.password,this.fragment=e.fragment}static clone(e){const t=new K({...e,headers:{...e.headers}});var r;return t.query&&(t.query=(r=t.query,Object.keys(r).reduce(((e,t)=>{const n=r[t];return{...e,[t]:Array.isArray(n)?[...n]:n}}),{}))),t}static isInstance(e){if(!e)return!1;const t=e;return"method"in t&&"protocol"in t&&"hostname"in t&&"path"in t&&"object"==typeof t.query&&"object"==typeof t.headers}clone(){return K.clone(this)}}class V{constructor(e){this.statusCode=e.statusCode,this.reason=e.reason,this.headers=e.headers||{},this.body=e.body}static isInstance(e){if(!e)return!1;const t=e;return"number"==typeof t.statusCode&&"object"==typeof t.headers}}const Q={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0},G=e=>({applyToStack:t=>{t.add(function(e){return t=>async r=>{const{request:n}=r;return K.isInstance(n)&&n.body&&"node"===e.runtime&&"FetchHttpHandler"!==e.requestHandler?.constructor?.name&&(n.headers={...n.headers,Expect:"100-continue"}),t({...r,request:n})}}(e),Q)}}),J="WHEN_SUPPORTED",X=J,Z=J;var Y,ee;!function(e){e.MD5="MD5",e.CRC32="CRC32",e.CRC32C="CRC32C",e.SHA1="SHA1",e.SHA256="SHA256"}(Y||(Y={})),function(e){e.HEADER="header",e.TRAILER="trailer"}(ee||(ee={}));const te=Y.MD5,re=Y.CRC32;var ne;function ie(e,t,r){e.__aws_sdk_context?e.__aws_sdk_context.features||(e.__aws_sdk_context.features={}):e.__aws_sdk_context={features:{}},e.__aws_sdk_context.features[t]=r}!function(e){e.ENV="env",e.CONFIG="shared config entry"}(ne||(ne={}));const oe=e=>V.isInstance(e)?e.headers?.date??e.headers?.Date:void 0,se=e=>new Date(Date.now()+e),ae=(e,t)=>{const r=Date.parse(e);return((e,t)=>Math.abs(se(t).getTime()-e)>=3e5)(r,t)?r-Date.now():t},ce=(e,t)=>{if(!t)throw new Error(`Property \`${e}\` is not resolved for AWS SDK SigV4Auth`);return t},ue=async e=>{const t=ce("context",e.context),r=ce("config",e.config),n=t.endpointV2?.properties?.authSchemes?.[0],i=ce("signer",r.signer),o=await i(n),s=e?.signingRegion,a=e?.signingRegionSet,c=e?.signingName;return{config:r,signer:o,signingRegion:s,signingRegionSet:a,signingName:c}};class de{async sign(e,t,r){if(!K.isInstance(e))throw new Error("The request is not an instance of `HttpRequest` and cannot be signed");const n=await ue(r),{config:i,signer:o}=n;let{signingRegion:s,signingName:a}=n;const c=r.context;if(c?.authSchemes?.length){const[e,t]=c.authSchemes;"sigv4a"===e?.name&&"sigv4"===t?.name&&(s=t?.signingRegion??s,a=t?.signingName??a)}return await o.sign(e,{signingDate:se(i.systemClockOffset),signingRegion:s,signingService:a})}errorHandler(e){return t=>{const r=t.ServerTime??oe(t.$response);if(r){const n=ce("config",e.config),i=n.systemClockOffset;n.systemClockOffset=ae(r,n.systemClockOffset);n.systemClockOffset!==i&&t.$metadata&&(t.$metadata.clockSkewCorrected=!0)}throw t}}successHandler(e,t){const r=oe(e);if(r){const e=ce("config",t.config);e.systemClockOffset=ae(r,e.systemClockOffset)}}}class le extends de{async sign(e,t,r){if(!K.isInstance(e))throw new Error("The request is not an instance of `HttpRequest` and cannot be signed");const{config:n,signer:i,signingRegion:o,signingRegionSet:s,signingName:a}=await ue(r),c=(await(n.sigv4aSigningRegionSet?.())??s??[o]).join(",");return await i.sign(e,{signingDate:se(n.systemClockOffset),signingRegion:c,signingService:a})}}const he=e=>e[q]||(e[q]={}),fe=e=>{if("function"==typeof e)return e;const t=Promise.resolve(e);return()=>t};const pe=(e,t)=>(r,n)=>async i=>{const o=e.httpAuthSchemeProvider(await t.httpAuthSchemeParametersProvider(e,n,i.input)),s=function(e){const t=new Map;for(const r of e)t.set(r.schemeId,r);return t}(e.httpAuthSchemes),a=he(n),c=[];for(const r of o){const i=s.get(r.schemeId);if(!i){c.push(`HttpAuthScheme \`${r.schemeId}\` was not enabled for this service.`);continue}const o=i.identityProvider(await t.identityProviderConfigProvider(e));if(!o){c.push(`HttpAuthScheme \`${r.schemeId}\` did not have an IdentityProvider configured.`);continue}const{identityProperties:u={},signingProperties:d={}}=r.propertiesExtractor?.(e,n)||{};r.identityProperties=Object.assign(r.identityProperties||{},u),r.signingProperties=Object.assign(r.signingProperties||{},d),a.selectedHttpAuthScheme={httpAuthOption:r,identity:await o(r.identityProperties),signer:i.signer};break}if(!a.selectedHttpAuthScheme)throw new Error(c.join("\n"));return r(i)},ge={step:"serialize",tags:["HTTP_AUTH_SCHEME"],name:"httpAuthSchemeMiddleware",override:!0,relation:"before",toMiddleware:"endpointV2Middleware"},me={name:"deserializerMiddleware",step:"deserialize",tags:["DESERIALIZER"],override:!0},ye={name:"serializerMiddleware",step:"serialize",tags:["SERIALIZER"],override:!0};function ve(e,t,r){return{applyToStack:n=>{n.add(((e,t)=>r=>async n=>{const{response:i}=await r(n);try{return{response:i,output:await t(i,e)}}catch(e){if(Object.defineProperty(e,"$response",{value:i}),!("$metadata"in e)){const t="Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.";e.message+="\n "+t,void 0!==e.$responseBodyText&&e.$response&&(e.$response.body=e.$responseBodyText)}throw e}})(e,r),me),n.add(((e,t)=>(r,n)=>async i=>{const o=n.endpointV2?.url&&e.urlParser?async()=>e.urlParser(n.endpointV2.url):e.endpoint;if(!o)throw new Error("No valid endpoint provider available.");const s=await t(i.input,{...e,endpoint:o});return r({...i,request:s})})(e,t),ye)}}}const be=e=>e=>{throw e},we=(e,t)=>{},ke={step:"finalizeRequest",tags:["HTTP_SIGNING"],name:"httpSigningMiddleware",aliases:["apiKeyMiddleware","tokenMiddleware","awsAuthMiddleware"],override:!0,relation:"after",toMiddleware:"retryMiddleware"},Se=e=>({applyToStack:e=>{e.addRelativeTo(((e,t)=>async r=>{if(!K.isInstance(r.request))return e(r);const n=he(t).selectedHttpAuthScheme;if(!n)throw new Error("No HttpAuthScheme was selected: unable to sign request");const{httpAuthOption:{signingProperties:i={}},identity:o,signer:s}=n,a=await e({...r,request:await s.sign(r.request,o,i)}).catch((s.errorHandler||be)(i));return(s.successHandler||we)(a.response,i),a}),ke)}}),Ee=e=>{if("function"==typeof e)return e;const t=Promise.resolve(e);return()=>t},xe={},Ae=new Array(64);for(let e=0,t="A".charCodeAt(0),r="Z".charCodeAt(0);e+t<=r;e++){const r=String.fromCharCode(e+t);xe[r]=e,Ae[e]=r}for(let e=0,t="a".charCodeAt(0),r="z".charCodeAt(0);e+t<=r;e++){const r=String.fromCharCode(e+t),n=e+26;xe[r]=n,Ae[n]=r}for(let e=0;e<10;e++){xe[e.toString(10)]=e+52;const t=e.toString(10),r=e+52;xe[t]=r,Ae[r]=t}xe["+"]=62,Ae[62]="+",xe["/"]=63,Ae[63]="/";const Te=e=>{let t=e.length/4*3;"=="===e.slice(-2)?t-=2:"="===e.slice(-1)&&t--;const r=new ArrayBuffer(t),n=new DataView(r);for(let t=0;t>=6;const o=t/4*3;r>>=i%8;const s=Math.floor(i/8);for(let e=0;e>t)}}return new Uint8Array(r)},Ce=e=>(new TextEncoder).encode(e),Re=e=>"string"==typeof e?Ce(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e),_e=e=>{if("string"==typeof e)return e;if("object"!=typeof e||"number"!=typeof e.byteOffset||"number"!=typeof e.byteLength)throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.");return new TextDecoder("utf-8").decode(e)};function Oe(e){let t;t="string"==typeof e?Ce(e):e;const r="object"==typeof t&&"number"==typeof t.length,n="object"==typeof t&&"number"==typeof t.byteOffset&&"number"==typeof t.byteLength;if(!r&&!n)throw new Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.");let i="";for(let e=0;e>t]}i+="==".slice(0,4-o)}return i}class Pe extends Uint8Array{static fromString(e,t="utf-8"){if("string"==typeof e)return function(e,t){return"base64"===t?Pe.mutate(Te(e)):Pe.mutate(Ce(e))}(e,t);throw new Error(`Unsupported conversion from ${typeof e} to Uint8ArrayBlobAdapter.`)}static mutate(e){return Object.setPrototypeOf(e,Pe.prototype),e}transformToString(e="utf-8"){return function(e,t="utf-8"){return"base64"===t?Oe(e):_e(e)}(this,e)}}const Ie=(e,t)=>{const{base64Encoder:r,bodyLengthChecker:n,checksumAlgorithmFn:i,checksumLocationName:o,streamHasher:s}=t,a=void 0!==r&&void 0!==n&&void 0!==i&&void 0!==o&&void 0!==s,c=a?s(i,e):void 0,u=e.getReader();return new ReadableStream({async pull(e){const{value:t,done:i}=await u.read();if(i){if(e.enqueue("0\r\n"),a){const t=r(await c);e.enqueue(`${o}:${t}\r\n`),e.enqueue("\r\n")}e.close()}else e.enqueue(`${(n(t)||0).toString(16)}\r\n${t}\r\n`)}})},Me=e=>encodeURIComponent(e).replace(/[!'()*]/g,Ne),Ne=e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`;function Fe(e,t){return new Request(e,t)}function $e(e=0){return new Promise(((t,r)=>{e&&setTimeout((()=>{const t=new Error(`Request did not complete within ${e} ms`);t.name="TimeoutError",r(t)}),e)}))}const Ue={supported:void 0};class Le{static create(e){return"function"==typeof e?.handle?e:new Le(e)}constructor(e){"function"==typeof e?this.configProvider=e().then((e=>e||{})):(this.config=e??{},this.configProvider=Promise.resolve(this.config)),void 0===Ue.supported&&(Ue.supported=Boolean("undefined"!=typeof Request&&"keepalive"in Fe("https://[::1]")))}destroy(){}async handle(e,{abortSignal:t}={}){this.config||(this.config=await this.configProvider);const r=this.config.requestTimeout,n=!0===this.config.keepAlive,i=this.config.credentials;if(t?.aborted){const e=new Error("Request aborted");return e.name="AbortError",Promise.reject(e)}let o=e.path;const s=function(e){const t=[];for(let r of Object.keys(e).sort()){const n=e[r];if(r=Me(r),Array.isArray(n))for(let e=0,i=n.length;e{};const p=Fe(d,h),g=[fetch(p).then((e=>{const t=e.headers,r={};for(const e of t.entries())r[e[0]]=e[1];return null!=e.body?{response:new V({headers:r,reason:e.statusText,statusCode:e.status,body:e.body})}:e.blob().then((t=>({response:new V({headers:r,reason:e.statusText,statusCode:e.status,body:t})})))})),$e(r)];return t&&g.push(new Promise(((e,r)=>{const n=()=>{const e=new Error("Request aborted");e.name="AbortError",r(e)};if("function"==typeof t.addEventListener){const e=t;e.addEventListener("abort",n,{once:!0}),f=()=>e.removeEventListener("abort",n)}else t.onabort=n}))),Promise.race(g).finally(f)}updateHttpClientConfig(e,t){this.config=void 0,this.configProvider=this.configProvider.then((r=>(r[e]=t,r)))}httpHandlerConfigs(){return this.config??{}}}const De=async e=>"function"==typeof Blob&&e instanceof Blob||"Blob"===e.constructor?.name?new Uint8Array(await e.arrayBuffer()):async function(e){const t=[],r=e.getReader();let n=!1,i=0;for(;!n;){const{done:e,value:o}=await r.read();o&&(t.push(o),i+=o.length),n=e}const o=new Uint8Array(i);let s=0;for(const e of t)o.set(e,s),s+=e.length;return o}(e);const Be={},ze={};for(let e=0;e<256;e++){let t=e.toString(16).toLowerCase();1===t.length&&(t=`0${t}`),Be[e]=t,ze[t]=e}function je(e){if(e.length%2!=0)throw new Error("Hex encoded strings must have an even number length");const t=new Uint8Array(e.length/2);for(let r=0;r"function"==typeof ReadableStream&&(e?.constructor?.name===ReadableStream.name||e instanceof ReadableStream),He="The stream has already been transformed.",Ke=e=>{if(!Ve(e)&&!We(e)){throw new Error(`Unexpected stream implementation, expect Blob or ReadableStream, got ${e?.__proto__?.constructor?.name||e}`)}let t=!1;const r=async()=>{if(t)throw new Error(He);return t=!0,await De(e)};return Object.assign(e,{transformToByteArray:r,transformToString:async e=>{const t=await r();if("base64"===e)return Oe(t);if("hex"===e)return qe(t);if(void 0===e||"utf8"===e||"utf-8"===e)return _e(t);if("function"==typeof TextDecoder)return new TextDecoder(e).decode(t);throw new Error("TextDecoder is not available, please make sure polyfill is provided.")},transformToWebStream:()=>{if(t)throw new Error(He);if(t=!0,Ve(e))return(e=>{if("function"!=typeof e.stream)throw new Error("Cannot transform payload Blob to web stream. Please make sure the Blob.stream() is polyfilled.\nIf you are using React Native, this API is not yet supported, see: https://react-native.canny.io/feature-requests/p/fetch-streaming-body");return e.stream()})(e);if(We(e))return e;throw new Error(`Cannot transform payload to web stream, got ${e}`)}})},Ve=e=>"function"==typeof Blob&&e instanceof Blob;const Qe="function"==typeof ReadableStream?ReadableStream:function(){};class Ge extends Qe{}const Je=({expectedChecksum:e,checksum:t,source:r,checksumSourceLocation:n,base64Encoder:i})=>{if(!We(r))throw new Error(`@smithy/util-stream: unsupported source type ${r?.constructor?.name??r} in ChecksumStream.`);const o=i??Oe;if("function"!=typeof TransformStream)throw new Error("@smithy/util-stream: unable to instantiate ChecksumStream because API unavailable: ReadableStream/TransformStream.");const s=new TransformStream({start(){},async transform(e,r){t.update(e),r.enqueue(e)},async flush(r){const i=await t.digest(),s=o(i);if(e!==s){const t=new Error(`Checksum mismatch: expected "${e}" but received "${s}" in response header "${n}".`);r.error(t)}else r.terminate()}});r.pipeThrough(s);const a=s.readable;return Object.setPrototypeOf(a,Ge.prototype),a},Xe=async(e=new Uint8Array,t)=>{if(e instanceof Uint8Array)return Pe.mutate(e);if(!e)return Pe.mutate(new Uint8Array);const r=t.streamCollector(e);return Pe.mutate(await r)};function Ze(e){return encodeURIComponent(e).replace(/[!'()*]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function Ye(e,t){return new et(e,t)}class et{constructor(e,t){this.input=e,this.context=t,this.query={},this.method="",this.headers={},this.path="",this.body=null,this.hostname="",this.resolvePathStack=[]}async build(){const{hostname:e,protocol:t="https",port:r,path:n}=await this.context.endpoint();this.path=n;for(const e of this.resolvePathStack)e(this.path);return new K({protocol:t,hostname:this.hostname||e,port:r,method:this.method,path:this.path,query:this.query,body:this.body,headers:this.headers})}hn(e){return this.hostname=e,this}bp(e){return this.resolvePathStack.push((t=>{this.path=`${t?.endsWith("/")?t.slice(0,-1):t||""}`+e})),this}p(e,t,r,n){return this.resolvePathStack.push((i=>{this.path=((e,t,r,n,i,o)=>{if(null==t||void 0===t[r])throw new Error("No value provided for input HTTP label: "+r+".");{const t=n();if(t.length<=0)throw new Error("Empty value provided for input HTTP label: "+r+".");e=e.replace(i,o?t.split("/").map((e=>Ze(e))).join("/"):Ze(t))}return e})(i,this.input,e,t,r,n)})),this}h(e){return this.headers=e,this}q(e){return this.query=e,this}b(e){return this.body=e,this}m(e){return this.method=e,this}}class tt{constructor(e){this.authSchemes=new Map;for(const[t,r]of Object.entries(e))void 0!==r&&this.authSchemes.set(t,r)}getIdentityProvider(e){return this.authSchemes.get(e)}}const rt=(nt=3e5,e=>it(e)&&e.expiration.getTime()-Date.now()void 0!==e.expiration,ot="X-Amz-Date",st="X-Amz-Signature",at="X-Amz-Security-Token",ct="authorization",ut=ot.toLowerCase(),dt=[ct,ut,"date"],lt=st.toLowerCase(),ht="x-amz-content-sha256",ft=at.toLowerCase(),pt={authorization:!0,"cache-control":!0,connection:!0,expect:!0,from:!0,"keep-alive":!0,"max-forwards":!0,pragma:!0,referer:!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0,"user-agent":!0,"x-amzn-trace-id":!0},gt=/^proxy-/,mt=/^sec-/,yt="AWS4-HMAC-SHA256",vt="AWS4-HMAC-SHA256-PAYLOAD",bt="aws4_request",wt={},kt=[],St=(e,t,r)=>`${e}/${t}/${r}/${bt}`,Et=(e,t,r)=>{const n=new e(t);return n.update(Re(r)),n.digest()},xt=({headers:e},t,r)=>{const n={};for(const i of Object.keys(e).sort()){if(null==e[i])continue;const o=i.toLowerCase();(o in pt||t?.has(o)||gt.test(o)||mt.test(o))&&(!r||r&&!r.has(o))||(n[o]=e[i].trim().replace(/\s+/g," "))}return n},At=e=>"function"==typeof ArrayBuffer&&e instanceof ArrayBuffer||"[object ArrayBuffer]"===Object.prototype.toString.call(e),Tt=async({headers:e,body:t},r)=>{for(const t of Object.keys(e))if(t.toLowerCase()===ht)return e[t];if(null==t)return"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";if("string"==typeof t||ArrayBuffer.isView(t)||At(t)){const e=new r;return e.update(Re(t)),qe(await e.digest())}return"UNSIGNED-PAYLOAD"};class Ct{format(e){const t=[];for(const r of Object.keys(e)){const n=Ce(r);t.push(Uint8Array.from([n.byteLength]),n,this.formatHeaderValue(e[r]))}const r=new Uint8Array(t.reduce(((e,t)=>e+t.byteLength),0));let n=0;for(const e of t)r.set(e,n),n+=e.byteLength;return r}formatHeaderValue(e){switch(e.type){case"boolean":return Uint8Array.from([e.value?0:1]);case"byte":return Uint8Array.from([2,e.value]);case"short":const t=new DataView(new ArrayBuffer(3));return t.setUint8(0,3),t.setInt16(1,e.value,!1),new Uint8Array(t.buffer);case"integer":const r=new DataView(new ArrayBuffer(5));return r.setUint8(0,4),r.setInt32(1,e.value,!1),new Uint8Array(r.buffer);case"long":const n=new Uint8Array(9);return n[0]=5,n.set(e.value.bytes,1),n;case"binary":const i=new DataView(new ArrayBuffer(3+e.value.byteLength));i.setUint8(0,6),i.setUint16(1,e.value.byteLength,!1);const o=new Uint8Array(i.buffer);return o.set(e.value,3),o;case"string":const s=Ce(e.value),a=new DataView(new ArrayBuffer(3+s.byteLength));a.setUint8(0,7),a.setUint16(1,s.byteLength,!1);const c=new Uint8Array(a.buffer);return c.set(s,3),c;case"timestamp":const u=new Uint8Array(9);return u[0]=8,u.set(Ot.fromNumber(e.value.valueOf()).bytes,1),u;case"uuid":if(!_t.test(e.value))throw new Error(`Invalid UUID received: ${e.value}`);const d=new Uint8Array(17);return d[0]=9,d.set(je(e.value.replace(/\-/g,"")),1),d}}}var Rt;!function(e){e[e.boolTrue=0]="boolTrue",e[e.boolFalse=1]="boolFalse",e[e.byte=2]="byte",e[e.short=3]="short",e[e.integer=4]="integer",e[e.long=5]="long",e[e.byteArray=6]="byteArray",e[e.string=7]="string",e[e.timestamp=8]="timestamp",e[e.uuid=9]="uuid"}(Rt||(Rt={}));const _t=/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;class Ot{constructor(e){if(this.bytes=e,8!==e.byteLength)throw new Error("Int64 buffers must be exactly 8 bytes")}static fromNumber(e){if(e>0x8000000000000000||e<-0x8000000000000000)throw new Error(`${e} is too large (or, if negative, too small) to represent as an Int64`);const t=new Uint8Array(8);for(let r=7,n=Math.abs(Math.round(e));r>-1&&n>0;r--,n/=256)t[r]=n;return e<0&&Pt(t),new Ot(t)}valueOf(){const e=this.bytes.slice(0),t=128&e[0];return t&&Pt(e),parseInt(qe(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}}function Pt(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,0===e[t]);t--);}const It=e=>{e=K.clone(e);for(const t of Object.keys(e.headers))dt.indexOf(t.toLowerCase())>-1&&delete e.headers[t];return e},Mt=e=>"number"==typeof e?new Date(1e3*e):"string"==typeof e?Number(e)?new Date(1e3*Number(e)):new Date(e):e;class Nt{constructor({applyChecksum:e,credentials:t,region:r,service:n,sha256:i,uriEscapePath:o=!0}){this.headerFormatter=new Ct,this.service=n,this.sha256=i,this.uriEscapePath=o,this.applyChecksum="boolean"!=typeof e||e,this.regionProvider=fe(r),this.credentialProvider=fe(t)}async presign(e,t={}){const{signingDate:r=new Date,expiresIn:n=3600,unsignableHeaders:i,unhoistableHeaders:o,signableHeaders:s,hoistableHeaders:a,signingRegion:c,signingService:u}=t,d=await this.credentialProvider();this.validateResolvedCredentials(d);const l=c??await this.regionProvider(),{longDate:h,shortDate:f}=Ft(r);if(n>604800)return Promise.reject("Signature version 4 presigned URLs must have an expiration date less than one week in the future");const p=St(f,l,u??this.service),g=((e,t={})=>{const{headers:r,query:n={}}=K.clone(e);for(const e of Object.keys(r)){const i=e.toLowerCase();("x-amz-"===i.slice(0,6)&&!t.unhoistableHeaders?.has(i)||t.hoistableHeaders?.has(i))&&(n[e]=r[e],delete r[e])}return{...e,headers:r,query:n}})(It(e),{unhoistableHeaders:o,hoistableHeaders:a});d.sessionToken&&(g.query[at]=d.sessionToken),g.query["X-Amz-Algorithm"]=yt,g.query["X-Amz-Credential"]=`${d.accessKeyId}/${p}`,g.query[ot]=h,g.query["X-Amz-Expires"]=n.toString(10);const m=xt(g,i,s);return g.query["X-Amz-SignedHeaders"]=$t(m),g.query[st]=await this.getSignature(h,p,this.getSigningKey(d,l,f,u),this.createCanonicalRequest(g,m,await Tt(e,this.sha256))),g}async sign(e,t){return"string"==typeof e?this.signString(e,t):e.headers&&e.payload?this.signEvent(e,t):e.message?this.signMessage(e,t):this.signRequest(e,t)}async signEvent({headers:e,payload:t},{signingDate:r=new Date,priorSignature:n,signingRegion:i,signingService:o}){const s=i??await this.regionProvider(),{shortDate:a,longDate:c}=Ft(r),u=St(a,s,o??this.service),d=await Tt({headers:{},body:t},this.sha256),l=new this.sha256;l.update(e);const h=qe(await l.digest()),f=[vt,c,u,n,h,d].join("\n");return this.signString(f,{signingDate:r,signingRegion:s,signingService:o})}async signMessage(e,{signingDate:t=new Date,signingRegion:r,signingService:n}){return this.signEvent({headers:this.headerFormatter.format(e.message.headers),payload:e.message.body},{signingDate:t,signingRegion:r,signingService:n,priorSignature:e.priorSignature}).then((t=>({message:e.message,signature:t})))}async signString(e,{signingDate:t=new Date,signingRegion:r,signingService:n}={}){const i=await this.credentialProvider();this.validateResolvedCredentials(i);const o=r??await this.regionProvider(),{shortDate:s}=Ft(t),a=new this.sha256(await this.getSigningKey(i,o,s,n));return a.update(Re(e)),qe(await a.digest())}async signRequest(e,{signingDate:t=new Date,signableHeaders:r,unsignableHeaders:n,signingRegion:i,signingService:o}={}){const s=await this.credentialProvider();this.validateResolvedCredentials(s);const a=i??await this.regionProvider(),c=It(e),{longDate:u,shortDate:d}=Ft(t),l=St(d,a,o??this.service);c.headers[ut]=u,s.sessionToken&&(c.headers[ft]=s.sessionToken);const h=await Tt(c,this.sha256);!((e,t)=>{e=e.toLowerCase();for(const r of Object.keys(t))if(e===r.toLowerCase())return!0;return!1})(ht,c.headers)&&this.applyChecksum&&(c.headers[ht]=h);const f=xt(c,n,r),p=await this.getSignature(u,l,this.getSigningKey(s,a,d,o),this.createCanonicalRequest(c,f,h));return c.headers[ct]=`${yt} Credential=${s.accessKeyId}/${l}, SignedHeaders=${$t(f)}, Signature=${p}`,c}createCanonicalRequest(e,t,r){const n=Object.keys(t).sort();return`${e.method}\n${this.getCanonicalPath(e)}\n${(({query:e={}})=>{const t=[],r={};for(const n of Object.keys(e)){if(n.toLowerCase()===lt)continue;const i=Me(n);t.push(i);const o=e[n];"string"==typeof o?r[i]=`${i}=${Me(o)}`:Array.isArray(o)&&(r[i]=o.slice(0).reduce(((e,t)=>e.concat([`${i}=${Me(t)}`])),[]).sort().join("&"))}return t.sort().map((e=>r[e])).filter((e=>e)).join("&")})(e)}\n${n.map((e=>`${e}:${t[e]}`)).join("\n")}\n\n${n.join(";")}\n${r}`}async createStringToSign(e,t,r){const n=new this.sha256;n.update(Re(r));const i=await n.digest();return`${yt}\n${e}\n${t}\n${qe(i)}`}getCanonicalPath({path:e}){if(this.uriEscapePath){const t=[];for(const r of e.split("/"))0!==r?.length&&"."!==r&&(".."===r?t.pop():t.push(r));const r=`${e?.startsWith("/")?"/":""}${t.join("/")}${t.length>0&&e?.endsWith("/")?"/":""}`;return Me(r).replace(/%2F/g,"/")}return e}async getSignature(e,t,r,n){const i=await this.createStringToSign(e,t,n),o=new this.sha256(await r);return o.update(Re(i)),qe(await o.digest())}getSigningKey(e,t,r,n){return(async(e,t,r,n,i)=>{const o=`${r}:${n}:${i}:${qe(await Et(e,t.secretAccessKey,t.accessKeyId))}:${t.sessionToken}`;if(o in wt)return wt[o];for(kt.push(o);kt.length>50;)delete wt[kt.shift()];let s=`AWS4${t.secretAccessKey}`;for(const t of[r,n,i,bt])s=await Et(e,s,t);return wt[o]=s})(this.sha256,e,r,t,n||this.service)}validateResolvedCredentials(e){if("object"!=typeof e||"string"!=typeof e.accessKeyId||"string"!=typeof e.secretAccessKey)throw new Error("Resolved credential object is not valid")}}const Ft=e=>{const t=(r=e,Mt(r).toISOString().replace(/\.\d{3}Z$/,"Z")).replace(/[\-:]/g,"");var r;return{longDate:t,shortDate:t.slice(0,8)}},$t=e=>Object.keys(e).sort().join(";"),Ut=e=>{let t,r=!1;e.credentials&&(r=!0,t=((e,t,r)=>{if(void 0===e)return;const n="function"!=typeof e?async()=>Promise.resolve(e):e;let i,o,s,a=!1;const c=async e=>{o||(o=n(e));try{i=await o,s=!0,a=!1}finally{o=void 0}return i};return void 0===t?async e=>(s&&!e?.forceRefresh||(i=await c(e)),i):async e=>(s&&!e?.forceRefresh||(i=await c(e)),a?i:r(i)?t(i)?(await c(e),i):i:(a=!0,i))})(e.credentials,rt,it)),t||(t=e.credentialDefaultProvider?Ee(e.credentialDefaultProvider(Object.assign({},e,{parentClientConfig:e}))):async()=>{throw new Error("`credentials` is missing")});const{signingEscapePath:n=!0,systemClockOffset:i=e.systemClockOffset||0,sha256:o}=e;let s;return s=e.signer?Ee(e.signer):e.regionInfoProvider?()=>Ee(e.region)().then((async t=>[await e.regionInfoProvider(t,{useFipsEndpoint:await e.useFipsEndpoint(),useDualstackEndpoint:await e.useDualstackEndpoint()})||{},t])).then((([r,i])=>{const{signingRegion:s,signingService:a}=r;e.signingRegion=e.signingRegion||s||i,e.signingName=e.signingName||a||e.serviceId;const c={...e,credentials:t,region:e.signingRegion,service:e.signingName,sha256:o,uriEscapePath:n};return new(e.signerConstructor||Nt)(c)})):async r=>{const i=(r=Object.assign({},{name:"sigv4",signingName:e.signingName||e.defaultSigningName,signingRegion:await Ee(e.region)(),properties:{}},r)).signingRegion,s=r.signingName;e.signingRegion=e.signingRegion||i,e.signingName=e.signingName||s||e.serviceId;const a={...e,credentials:t,region:e.signingRegion,service:e.signingName,sha256:o,uriEscapePath:n};return new(e.signerConstructor||Nt)(a)},{...e,systemClockOffset:i,signingEscapePath:n,credentials:r?async()=>t().then((e=>{return r="CREDENTIALS_CODE",n="e",(t=e).$source||(t.$source={}),t.$source[r]=n,t;var t,r,n})):t,signer:s}},Lt=(e,t)=>{const r=[];if(e&&r.push(e),t)for(const e of t)r.push(e);return r},Dt=(e,t)=>`${e||"anonymous"}${t&&t.length>0?` (a.k.a. ${t.join(",")})`:""}`,Bt=()=>{let e=[],t=[],r=!1;const n=new Set,i=r=>(e.forEach((e=>{r.add(e.middleware,{...e})})),t.forEach((e=>{r.addRelativeTo(e.middleware,{...e})})),r.identifyOnResolve?.(a.identifyOnResolve()),r),o=e=>{const t=[];return e.before.forEach((e=>{0===e.before.length&&0===e.after.length?t.push(e):t.push(...o(e))})),t.push(e),e.after.reverse().forEach((e=>{0===e.before.length&&0===e.after.length?t.push(e):t.push(...o(e))})),t},s=(r=!1)=>{const n=[],i=[],s={};e.forEach((e=>{const t={...e,before:[],after:[]};for(const e of Lt(t.name,t.aliases))s[e]=t;n.push(t)})),t.forEach((e=>{const t={...e,before:[],after:[]};for(const e of Lt(t.name,t.aliases))s[e]=t;i.push(t)})),i.forEach((e=>{if(e.toMiddleware){const t=s[e.toMiddleware];if(void 0===t){if(r)return;throw new Error(`${e.toMiddleware} is not found when adding ${Dt(e.name,e.aliases)} middleware ${e.relation} ${e.toMiddleware}`)}"after"===e.relation&&t.after.push(e),"before"===e.relation&&t.before.push(e)}}));const a=(c=n,c.sort(((e,t)=>zt[t.step]-zt[e.step]||jt[t.priority||"normal"]-jt[e.priority||"normal"]))).map(o).reduce(((e,t)=>(e.push(...t),e)),[]);var c;return a},a={add:(t,r={})=>{const{name:i,override:o,aliases:s}=r,a={step:"initialize",priority:"normal",middleware:t,...r},c=Lt(i,s);if(c.length>0){if(c.some((e=>n.has(e)))){if(!o)throw new Error(`Duplicate middleware name '${Dt(i,s)}'`);for(const t of c){const r=e.findIndex((e=>e.name===t||e.aliases?.some((e=>e===t))));if(-1===r)continue;const n=e[r];if(n.step!==a.step||a.priority!==n.priority)throw new Error(`"${Dt(n.name,n.aliases)}" middleware with ${n.priority} priority in ${n.step} step cannot be overridden by "${Dt(i,s)}" middleware with ${a.priority} priority in ${a.step} step.`);e.splice(r,1)}}for(const e of c)n.add(e)}e.push(a)},addRelativeTo:(e,r)=>{const{name:i,override:o,aliases:s}=r,a={middleware:e,...r},c=Lt(i,s);if(c.length>0){if(c.some((e=>n.has(e)))){if(!o)throw new Error(`Duplicate middleware name '${Dt(i,s)}'`);for(const e of c){const r=t.findIndex((t=>t.name===e||t.aliases?.some((t=>t===e))));if(-1===r)continue;const n=t[r];if(n.toMiddleware!==a.toMiddleware||n.relation!==a.relation)throw new Error(`"${Dt(n.name,n.aliases)}" middleware ${n.relation} "${n.toMiddleware}" middleware cannot be overridden by "${Dt(i,s)}" middleware ${a.relation} "${a.toMiddleware}" middleware.`);t.splice(r,1)}}for(const e of c)n.add(e)}t.push(a)},clone:()=>i(Bt()),use:e=>{e.applyToStack(a)},remove:r=>"string"==typeof r?(r=>{let i=!1;const o=e=>{const t=Lt(e.name,e.aliases);if(t.includes(r)){i=!0;for(const e of t)n.delete(e);return!1}return!0};return e=e.filter(o),t=t.filter(o),i})(r):(r=>{let i=!1;const o=e=>{if(e.middleware===r){i=!0;for(const t of Lt(e.name,e.aliases))n.delete(t);return!1}return!0};return e=e.filter(o),t=t.filter(o),i})(r),removeByTag:r=>{let i=!1;const o=e=>{const{tags:t,name:o,aliases:s}=e;if(t&&t.includes(r)){const e=Lt(o,s);for(const t of e)n.delete(t);return i=!0,!1}return!0};return e=e.filter(o),t=t.filter(o),i},concat:e=>{const t=i(Bt());return t.use(e),t.identifyOnResolve(r||t.identifyOnResolve()||(e.identifyOnResolve?.()??!1)),t},applyToStack:i,identify:()=>s(!0).map((e=>{const t=e.step??e.relation+" "+e.toMiddleware;return Dt(e.name,e.aliases)+" - "+t})),identifyOnResolve:e=>("boolean"==typeof e&&(r=e),r),resolve:(e,t)=>{for(const r of s().map((e=>e.middleware)).reverse())e=r(e,t);return r&&console.log(a.identify()),e}};return a},zt={initialize:5,serialize:4,build:3,finalizeRequest:2,deserialize:1},jt={high:3,normal:2,low:1};class qt{constructor(e){this.config=e,this.middlewareStack=Bt()}send(e,t,r){const n="function"!=typeof t?t:void 0,i="function"==typeof t?t:r;let o;if(void 0===n&&!0===this.config.cacheMiddleware){this.handlers||(this.handlers=new WeakMap);const t=this.handlers;t.has(e.constructor)?o=t.get(e.constructor):(o=e.resolveMiddleware(this.middlewareStack,this.config,n),t.set(e.constructor,o))}else delete this.handlers,o=e.resolveMiddleware(this.middlewareStack,this.config,n);if(!i)return o(e).then((e=>e.output));o(e).then((e=>i(null,e.output)),(e=>i(e))).catch((()=>{}))}destroy(){this.config?.requestHandler?.destroy?.(),delete this.handlers}}class Wt{constructor(){this.middlewareStack=Bt()}static classBuilder(){return new Ht}resolveMiddlewareWithContext(e,t,r,{middlewareFn:n,clientName:i,commandName:o,inputFilterSensitiveLog:s,outputFilterSensitiveLog:a,smithyContext:c,additionalContext:u,CommandCtor:d}){for(const i of n.bind(this)(d,e,t,r))this.middlewareStack.use(i);const l=e.concat(this.middlewareStack),{logger:h}=t,f={logger:h,clientName:i,commandName:o,inputFilterSensitiveLog:s,outputFilterSensitiveLog:a,[q]:{commandInstance:this,...c},...u},{requestHandler:p}=t;return l.resolve((e=>p.handle(e.request,r||{})),f)}}class Ht{constructor(){this._init=()=>{},this._ep={},this._middlewareFn=()=>[],this._commandName="",this._clientName="",this._additionalContext={},this._smithyContext={},this._inputFilterSensitiveLog=e=>e,this._outputFilterSensitiveLog=e=>e,this._serializer=null,this._deserializer=null}init(e){this._init=e}ep(e){return this._ep=e,this}m(e){return this._middlewareFn=e,this}s(e,t,r={}){return this._smithyContext={service:e,operation:t,...r},this}c(e={}){return this._additionalContext=e,this}n(e,t){return this._clientName=e,this._commandName=t,this}f(e=e=>e,t=e=>e){return this._inputFilterSensitiveLog=e,this._outputFilterSensitiveLog=t,this}ser(e){return this._serializer=e,this}de(e){return this._deserializer=e,this}build(){const e=this;let t;return t=class extends Wt{static getEndpointParameterInstructions(){return e._ep}constructor(...[t]){super(),this.serialize=e._serializer,this.deserialize=e._deserializer,this.input=t??{},e._init(this)}resolveMiddleware(r,n,i){return this.resolveMiddlewareWithContext(r,n,i,{CommandCtor:t,middlewareFn:e._middlewareFn,clientName:e._clientName,commandName:e._commandName,inputFilterSensitiveLog:e._inputFilterSensitiveLog,outputFilterSensitiveLog:e._outputFilterSensitiveLog,smithyContext:e._smithyContext,additionalContext:e._additionalContext})}}}}const Kt="***SensitiveInformation***",Vt=e=>{switch(e){case"true":return!0;case"false":return!1;default:throw new Error(`Unable to parse boolean value "${e}"`)}},Qt=Math.ceil(2**127*(2-2**-23)),Gt=e=>{const t=(e=>{if(null!=e){if("string"==typeof e){const t=parseFloat(e);if(!Number.isNaN(t))return String(t)!==String(e)&&lr.warn(dr(`Expected number but observed string: ${e}`)),t}if("number"==typeof e)return e;throw new TypeError(`Expected number, got ${typeof e}: ${e}`)}})(e);if(void 0!==t&&!Number.isNaN(t)&&t!==1/0&&t!==-1/0&&Math.abs(t)>Qt)throw new TypeError(`Expected 32-bit float, got ${e}`);return t},Jt=e=>{if(null!=e){if(Number.isInteger(e)&&!Number.isNaN(e))return e;throw new TypeError(`Expected integer, got ${typeof e}: ${e}`)}},Xt=e=>er(e,32),Zt=e=>er(e,16),Yt=e=>er(e,8),er=(e,t)=>{const r=Jt(e);if(void 0!==r&&tr(r,t)!==r)throw new TypeError(`Expected ${t}-bit integer, got ${e}`);return r},tr=(e,t)=>{switch(t){case 32:return Int32Array.of(e)[0];case 16:return Int16Array.of(e)[0];case 8:return Int8Array.of(e)[0]}},rr=(e,t)=>{if(null==e){if(t)throw new TypeError(`Expected a non-null value for ${t}`);throw new TypeError("Expected a non-null value")}return e},nr=e=>{if(null==e)return;if("object"==typeof e&&!Array.isArray(e))return e;const t=Array.isArray(e)?"array":typeof e;throw new TypeError(`Expected object, got ${t}: ${e}`)},ir=e=>{if(null!=e){if("string"==typeof e)return e;if(["boolean","number","bigint"].includes(typeof e))return lr.warn(dr(`Expected string, got ${typeof e}: ${e}`)),String(e);throw new TypeError(`Expected string, got ${typeof e}: ${e}`)}},or=/(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g,sr=e=>{const t=e.match(or);if(null===t||t[0].length!==e.length)throw new TypeError("Expected real number, got implicit NaN");return parseFloat(e)},ar=e=>Jt("string"==typeof e?sr(e):e),cr=e=>Xt("string"==typeof e?sr(e):e),ur=e=>Zt("string"==typeof e?sr(e):e),dr=e=>String(new TypeError(e).stack||e).split("\n").slice(0,5).filter((e=>!e.includes("stackTraceWarning"))).join("\n"),lr={warn:console.warn},hr=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],fr=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function pr(e){const t=e.getUTCFullYear(),r=e.getUTCMonth(),n=e.getUTCDay(),i=e.getUTCDate(),o=e.getUTCHours(),s=e.getUTCMinutes(),a=e.getUTCSeconds(),c=o<10?`0${o}`:`${o}`,u=s<10?`0${s}`:`${s}`,d=a<10?`0${a}`:`${a}`;return`${hr[n]}, ${i<10?`0${i}`:`${i}`} ${fr[r]} ${t} ${c}:${u}:${d} GMT`}const gr=new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(([-+]\d{2}\:\d{2})|[zZ])$/),mr=e=>{if(null==e)return;if("string"!=typeof e)throw new TypeError("RFC-3339 date-times must be expressed as strings");const t=gr.exec(e);if(!t)throw new TypeError("Invalid RFC-3339 date-time value");const[r,n,i,o,s,a,c,u,d]=t,l=ur(Pr(n)),h=Rr(i,"month",1,12),f=Rr(o,"day",1,31),p=kr(l,h,f,{hours:s,minutes:a,seconds:c,fractionalMilliseconds:u});return"Z"!=d.toUpperCase()&&p.setTime(p.getTime()-Or(d)),p},yr=new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/),vr=new RegExp(/^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/),br=new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? (\d{4})$/),wr=e=>{if(null==e)return;if("string"!=typeof e)throw new TypeError("RFC-7231 date-times must be expressed as strings");let t=yr.exec(e);if(t){const[e,r,n,i,o,s,a,c]=t;return kr(ur(Pr(i)),xr(n),Rr(r,"day",1,31),{hours:o,minutes:s,seconds:a,fractionalMilliseconds:c})}if(t=vr.exec(e),t){const[e,r,n,i,o,s,a,c]=t;return Er(kr(Sr(i),xr(n),Rr(r,"day",1,31),{hours:o,minutes:s,seconds:a,fractionalMilliseconds:c}))}if(t=br.exec(e),t){const[e,r,n,i,o,s,a,c]=t;return kr(ur(Pr(c)),xr(r),Rr(n.trimLeft(),"day",1,31),{hours:i,minutes:o,seconds:s,fractionalMilliseconds:a})}throw new TypeError("Invalid RFC-7231 date-time value")},kr=(e,t,r,n)=>{const i=t-1;return Tr(e,i,r),new Date(Date.UTC(e,i,r,Rr(n.hours,"hour",0,23),Rr(n.minutes,"minute",0,59),Rr(n.seconds,"seconds",0,60),_r(n.fractionalMilliseconds)))},Sr=e=>{const t=(new Date).getUTCFullYear(),r=100*Math.floor(t/100)+ur(Pr(e));return re.getTime()-(new Date).getTime()>15768e8?new Date(Date.UTC(e.getUTCFullYear()-100,e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds())):e,xr=e=>{const t=fr.indexOf(e);if(t<0)throw new TypeError(`Invalid month: ${e}`);return t+1},Ar=[31,28,31,30,31,30,31,31,30,31,30,31],Tr=(e,t,r)=>{let n=Ar[t];if(1===t&&Cr(e)&&(n=29),r>n)throw new TypeError(`Invalid day for ${fr[t]} in ${e}: ${r}`)},Cr=e=>e%4==0&&(e%100!=0||e%400==0),Rr=(e,t,r,n)=>{const i=(e=>Yt("string"==typeof e?sr(e):e))(Pr(e));if(in)throw new TypeError(`${t} must be between ${r} and ${n}, inclusive`);return i},_r=e=>null==e?0:1e3*(e=>Gt("string"==typeof e?sr(e):e))("0."+e),Or=e=>{const t=e[0];let r=1;if("+"==t)r=1;else{if("-"!=t)throw new TypeError(`Offset direction, ${t}, must be "+" or "-"`);r=-1}return r*(60*Number(e.substring(1,3))+Number(e.substring(4,6)))*60*1e3},Pr=e=>{let t=0;for(;t{Object.entries(t).filter((([,e])=>void 0!==e)).forEach((([t,r])=>{null!=e[t]&&""!==e[t]||(e[t]=r)}));const r=e.message||e.Message||"UnknownError";return e.message=r,delete e.Message,e},Nr=e=>({httpStatusCode:e.statusCode,requestId:e.headers["x-amzn-requestid"]??e.headers["x-amzn-request-id"]??e.headers["x-amz-request-id"],extendedRequestId:e.headers["x-amz-id-2"],cfId:e.headers["x-amz-cf-id"]}),Fr=e=>{switch(e){case"standard":case"cross-region":return{retryMode:"standard",connectionTimeout:3100};case"in-region":return{retryMode:"standard",connectionTimeout:1100};case"mobile":return{retryMode:"standard",connectionTimeout:3e4};default:return{}}},$r=e=>{const t=[];for(const r in z){const n=z[r];void 0!==e[n]&&t.push({algorithmId:()=>n,checksumConstructor:()=>e[n]})}return{_checksumAlgorithms:t,addChecksumAlgorithm(e){this._checksumAlgorithms.push(e)},checksumAlgorithms(){return this._checksumAlgorithms}}},Ur=e=>{const t={};return e.checksumAlgorithms().forEach((e=>{t[e.algorithmId()]=e.checksumConstructor()})),t},Lr=e=>{let t=e.retryStrategy;return{setRetryStrategy(e){t=e},retryStrategy:()=>t}},Dr=e=>{const t={};return t.retryStrategy=e.retryStrategy(),t},Br=e=>({...$r(e),...Lr(e)}),zr=e=>({...Ur(e),...Dr(e)}),jr=e=>Array.isArray(e)?e:[e],qr=e=>{const t="#text";for(const r in e)e.hasOwnProperty(r)&&void 0!==e[r][t]?e[r]=e[r][t]:"object"==typeof e[r]&&null!==e[r]&&(e[r]=qr(e[r]));return e},Wr=e=>null!=e,Hr=function(){const e=Object.getPrototypeOf(this).constructor,t=new(Function.bind.apply(String,[null,...arguments]));return Object.setPrototypeOf(t,e.prototype),t};Hr.prototype=Object.create(String.prototype,{constructor:{value:Hr,enumerable:!1,writable:!0,configurable:!0}}),Object.setPrototypeOf(Hr,String);class Kr{trace(){}debug(){}info(){}warn(){}error(){}}function Vr(e,t,r){let n,i,o;if(void 0===t&&void 0===r)n={},o=e;else{if(n=e,"function"==typeof t)return i=t,o=r,Qr(n,i,o);o=t}for(const e of Object.keys(o))Array.isArray(o[e])?Gr(n,null,o,e):n[e]=o[e];return n}const Qr=(e,t,r)=>Vr(e,Object.entries(r).reduce(((e,[r,n])=>(Array.isArray(n)?e[r]=n:e[r]="function"==typeof n?[t,n()]:[t,n],e)),{})),Gr=(e,t,r,n)=>{if(null!==t){let i=r[n];"function"==typeof i&&(i=[,i]);const[o=Jr,s=Xr,a=n]=i;return void(("function"==typeof o&&o(t[a])||"function"!=typeof o&&o)&&(e[n]=s(t[a])))}let[i,o]=r[n];if("function"==typeof o){let t;const r=void 0===i&&null!=(t=o()),s="function"==typeof i&&!!i(void 0)||"function"!=typeof i&&!!i;r?e[n]=t:s&&(e[n]=o())}else{const t=void 0===i&&null!=o,r="function"==typeof i&&!!i(o)||"function"!=typeof i&&!!i;(t||r)&&(e[n]=o)}},Jr=e=>null!=e,Xr=e=>e;function Zr(e){return(e.includes(",")||e.includes('"'))&&(e=`"${e.replace(/"/g,'\\"')}"`),e}function Yr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var en={},tn={};!function(e){const t=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",r="["+t+"]["+(t+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040")+"]*",n=new RegExp("^"+r+"$");e.isExist=function(e){return void 0!==e},e.isEmptyObject=function(e){return 0===Object.keys(e).length},e.merge=function(e,t,r){if(t){const n=Object.keys(t),i=n.length;for(let o=0;o5&&"xml"===n)return pn("InvalidXml","XML declaration allowed only at the start of the document.",mn(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function an(e,t){if(e.length>t+5&&"-"===e[t+1]&&"-"===e[t+2]){for(t+=3;t"===e[t+2]){t+=2;break}}else if(e.length>t+8&&"D"===e[t+1]&&"O"===e[t+2]&&"C"===e[t+3]&&"T"===e[t+4]&&"Y"===e[t+5]&&"P"===e[t+6]&&"E"===e[t+7]){let r=1;for(t+=8;t"===e[t]&&(r--,0===r))break}else if(e.length>t+9&&"["===e[t+1]&&"C"===e[t+2]&&"D"===e[t+3]&&"A"===e[t+4]&&"T"===e[t+5]&&"A"===e[t+6]&&"["===e[t+7])for(t+=8;t"===e[t+2]){t+=2;break}return t}en.validate=function(e,t){t=Object.assign({},nn,t);const r=[];let n=!1,i=!1;"\ufeff"===e[0]&&(e=e.substr(1));for(let s=0;s"!==e[s]&&" "!==e[s]&&"\t"!==e[s]&&"\n"!==e[s]&&"\r"!==e[s];s++)u+=e[s];if(u=u.trim(),"/"===u[u.length-1]&&(u=u.substring(0,u.length-1),s--),o=u,!rn.isName(o)){let t;return t=0===u.trim().length?"Invalid space after '<'.":"Tag '"+u+"' is an invalid name.",pn("InvalidTag",t,mn(e,s))}const d=dn(e,s);if(!1===d)return pn("InvalidAttr","Attributes for '"+u+"' have open quote.",mn(e,s));let l=d.value;if(s=d.index,"/"===l[l.length-1]){const r=s-l.length;l=l.substring(0,l.length-1);const i=hn(l,t);if(!0!==i)return pn(i.err.code,i.err.msg,mn(e,r+i.err.line));n=!0}else if(c){if(!d.tagClosed)return pn("InvalidTag","Closing tag '"+u+"' doesn't have proper closing.",mn(e,s));if(l.trim().length>0)return pn("InvalidTag","Closing tag '"+u+"' can't have attributes or invalid starting.",mn(e,a));if(0===r.length)return pn("InvalidTag","Closing tag '"+u+"' has not been opened.",mn(e,a));{const t=r.pop();if(u!==t.tagName){let r=mn(e,t.tagStartPos);return pn("InvalidTag","Expected closing tag '"+t.tagName+"' (opened in line "+r.line+", col "+r.col+") instead of closing tag '"+u+"'.",mn(e,a))}0==r.length&&(i=!0)}}else{const o=hn(l,t);if(!0!==o)return pn(o.err.code,o.err.msg,mn(e,s-l.length+o.err.line));if(!0===i)return pn("InvalidXml","Multiple possible root nodes found.",mn(e,s));-1!==t.unpairedTags.indexOf(u)||r.push({tagName:u,tagStartPos:a}),n=!0}for(s++;s0)||pn("InvalidXml","Invalid '"+JSON.stringify(r.map((e=>e.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):pn("InvalidXml","Start tag expected.",1)};const cn='"',un="'";function dn(e,t){let r="",n="",i=!1;for(;t"===e[t]&&""===n){i=!0;break}r+=e[t]}return""===n&&{value:r,index:t,tagClosed:i}}const ln=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function hn(e,t){const r=rn.getAllMatches(e,ln),n={};for(let e=0;e!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,r){return e}};vn.buildOptions=function(e){return Object.assign({},bn,e)},vn.defaultOptions=bn;const wn=tn;function kn(e,t){let r="";for(;t"===e[t]){if(o?"-"===e[t-1]&&"-"===e[t-2]&&(o=!1,n--):n--,0===n)break}else"["===e[t]?i=!0:s+=e[t];else{if(i&&En(e,t))t+=7,[entityName,val,t]=kn(e,t+1),-1===val.indexOf("&")&&(r[Cn(entityName)]={regx:RegExp(`&${entityName};`,"g"),val:val});else if(i&&xn(e,t))t+=8;else if(i&&An(e,t))t+=8;else if(i&&Tn(e,t))t+=9;else{if(!Sn)throw new Error("Invalid DOCTYPE");o=!0}n++,s=""}if(0!==n)throw new Error("Unclosed DOCTYPE")}return{entities:r,i:t}};const _n=/^[-+]?0x[a-fA-F0-9]+$/,On=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,Pn={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};const In=tn,Mn=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){"__proto__"===e&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){"__proto__"===e.tagname&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}},Nn=Rn,Fn=function(e,t={}){if(t=Object.assign({},Pn,t),!e||"string"!=typeof e)return e;let r=e.trim();if(void 0!==t.skipLike&&t.skipLike.test(r))return e;if("0"===e)return 0;if(t.hex&&_n.test(r))return function(e,t){if(parseInt)return parseInt(e,t);if(Number.parseInt)return Number.parseInt(e,t);if(window&&window.parseInt)return window.parseInt(e,t);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}(r,16);if(-1!==r.search(/[eE]/)){const n=r.match(/^([-\+])?(0*)([0-9]*(\.[0-9]*)?[eE][-\+]?[0-9]+)$/);if(n){if(t.leadingZeros)r=(n[1]||"")+n[3];else if("0"!==n[2]||"."!==n[3][0])return e;return t.eNotation?Number(r):e}return e}{const n=On.exec(r);if(n){const i=n[1],o=n[2];let s=function(e){if(e&&-1!==e.indexOf("."))return"."===(e=e.replace(/0+$/,""))?e="0":"."===e[0]?e="0"+e:"."===e[e.length-1]&&(e=e.substr(0,e.length-1)),e;return e}(n[3]);if(!t.leadingZeros&&o.length>0&&i&&"."!==r[2])return e;if(!t.leadingZeros&&o.length>0&&!i&&"."!==r[1])return e;if(t.leadingZeros&&o===e)return 0;{const n=Number(r),a=""+n;return-1!==a.search(/[eE]/)?t.eNotation?n:e:-1!==r.indexOf(".")?"0"===a&&""===s||a===s||i&&a==="-"+s?n:e:o?s===a||i+s===a?n:e:r===a||r===i+a?n:e}}return e}};function $n(e){const t=Object.keys(e);for(let r=0;r0)){s||(e=this.replaceEntitiesValue(e));const n=this.options.tagValueProcessor(t,e,r,i,o);if(null==n)return e;if(typeof n!=typeof e||n!==e)return n;if(this.options.trimValues)return Gn(e,this.options.parseTagValue,this.options.numberParseOptions);return e.trim()===e?Gn(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function Ln(e){if(this.options.removeNSPrefix){const t=e.split(":"),r="/"===e.charAt(0)?"/":"";if("xmlns"===t[0])return"";2===t.length&&(e=r+t[1])}return e}const Dn=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function Bn(e,t,r){if(!this.options.ignoreAttributes&&"string"==typeof e){const r=In.getAllMatches(e,Dn),n=r.length,i={};for(let e=0;e",o,"Closing Tag is not closed.");let s=e.substring(o+2,t).trim();if(this.options.removeNSPrefix){const e=s.indexOf(":");-1!==e&&(s=s.substr(e+1))}this.options.transformTagName&&(s=this.options.transformTagName(s)),r&&(n=this.saveTextToParentTag(n,r,i));const a=i.substring(i.lastIndexOf(".")+1);if(s&&-1!==this.options.unpairedTags.indexOf(s))throw new Error(`Unpaired tag can not be used as closing tag: `);let c=0;a&&-1!==this.options.unpairedTags.indexOf(a)?(c=i.lastIndexOf(".",i.lastIndexOf(".")-1),this.tagsNodeStack.pop()):c=i.lastIndexOf("."),i=i.substring(0,c),r=this.tagsNodeStack.pop(),n="",o=t}else if("?"===e[o+1]){let t=Vn(e,o,!1,"?>");if(!t)throw new Error("Pi Tag is not closed.");if(n=this.saveTextToParentTag(n,r,i),this.options.ignoreDeclaration&&"?xml"===t.tagName||this.options.ignorePiTags);else{const e=new Mn(t.tagName);e.add(this.options.textNodeName,""),t.tagName!==t.tagExp&&t.attrExpPresent&&(e[":@"]=this.buildAttributesMap(t.tagExp,i,t.tagName)),this.addChild(r,e,i)}o=t.closeIndex+1}else if("!--"===e.substr(o+1,3)){const t=Kn(e,"--\x3e",o+4,"Comment is not closed.");if(this.options.commentPropName){const s=e.substring(o+4,t-2);n=this.saveTextToParentTag(n,r,i),r.add(this.options.commentPropName,[{[this.options.textNodeName]:s}])}o=t}else if("!D"===e.substr(o+1,2)){const t=Nn(e,o);this.docTypeEntities=t.entities,o=t.i}else if("!["===e.substr(o+1,2)){const t=Kn(e,"]]>",o,"CDATA is not closed.")-2,s=e.substring(o+9,t);n=this.saveTextToParentTag(n,r,i);let a=this.parseTextData(s,r.tagname,i,!0,!1,!0,!0);null==a&&(a=""),this.options.cdataPropName?r.add(this.options.cdataPropName,[{[this.options.textNodeName]:s}]):r.add(this.options.textNodeName,a),o=t+2}else{let s=Vn(e,o,this.options.removeNSPrefix),a=s.tagName;const c=s.rawTagName;let u=s.tagExp,d=s.attrExpPresent,l=s.closeIndex;this.options.transformTagName&&(a=this.options.transformTagName(a)),r&&n&&"!xml"!==r.tagname&&(n=this.saveTextToParentTag(n,r,i,!1));const h=r;if(h&&-1!==this.options.unpairedTags.indexOf(h.tagname)&&(r=this.tagsNodeStack.pop(),i=i.substring(0,i.lastIndexOf("."))),a!==t.tagname&&(i+=i?"."+a:a),this.isItStopNode(this.options.stopNodes,i,a)){let t="";if(u.length>0&&u.lastIndexOf("/")===u.length-1)"/"===a[a.length-1]?(a=a.substr(0,a.length-1),i=i.substr(0,i.length-1),u=a):u=u.substr(0,u.length-1),o=s.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(a))o=s.closeIndex;else{const r=this.readStopNodeData(e,c,l+1);if(!r)throw new Error(`Unexpected end of ${c}`);o=r.i,t=r.tagContent}const n=new Mn(a);a!==u&&d&&(n[":@"]=this.buildAttributesMap(u,i,a)),t&&(t=this.parseTextData(t,a,i,!0,d,!0,!0)),i=i.substr(0,i.lastIndexOf(".")),n.add(this.options.textNodeName,t),this.addChild(r,n,i)}else{if(u.length>0&&u.lastIndexOf("/")===u.length-1){"/"===a[a.length-1]?(a=a.substr(0,a.length-1),i=i.substr(0,i.length-1),u=a):u=u.substr(0,u.length-1),this.options.transformTagName&&(a=this.options.transformTagName(a));const e=new Mn(a);a!==u&&d&&(e[":@"]=this.buildAttributesMap(u,i,a)),this.addChild(r,e,i),i=i.substr(0,i.lastIndexOf("."))}else{const e=new Mn(a);this.tagsNodeStack.push(r),a!==u&&d&&(e[":@"]=this.buildAttributesMap(u,i,a)),this.addChild(r,e,i),r=e}n="",o=l}}else n+=e[o]}return t.child};function jn(e,t,r){const n=this.options.updateTag(t.tagname,r,t[":@"]);!1===n||("string"==typeof n?(t.tagname=n,e.addChild(t)):e.addChild(t))}const qn=function(e){if(this.options.processEntities){for(let t in this.docTypeEntities){const r=this.docTypeEntities[t];e=e.replace(r.regx,r.val)}for(let t in this.lastEntities){const r=this.lastEntities[t];e=e.replace(r.regex,r.val)}if(this.options.htmlEntities)for(let t in this.htmlEntities){const r=this.htmlEntities[t];e=e.replace(r.regex,r.val)}e=e.replace(this.ampEntity.regex,this.ampEntity.val)}return e};function Wn(e,t,r,n){return e&&(void 0===n&&(n=0===Object.keys(t.child).length),void 0!==(e=this.parseTextData(e,t.tagname,r,!1,!!t[":@"]&&0!==Object.keys(t[":@"]).length,n))&&""!==e&&t.add(this.options.textNodeName,e),e=""),e}function Hn(e,t,r){const n="*."+r;for(const r in e){const i=e[r];if(n===i||t===i)return!0}return!1}function Kn(e,t,r,n){const i=e.indexOf(t,r);if(-1===i)throw new Error(n);return i+t.length-1}function Vn(e,t,r,n=">"){const i=function(e,t,r=">"){let n,i="";for(let o=t;o",r,`${t} is not closed`);if(e.substring(r+2,o).trim()===t&&(i--,0===i))return{tagContent:e.substring(n,r),i:o};r=o}else if("?"===e[r+1]){r=Kn(e,"?>",r+1,"StopNode is not closed.")}else if("!--"===e.substr(r+1,3)){r=Kn(e,"--\x3e",r+3,"StopNode is not closed.")}else if("!["===e.substr(r+1,2)){r=Kn(e,"]]>",r,"StopNode is not closed.")-2}else{const n=Vn(e,r,">");if(n){(n&&n.tagName)===t&&"/"!==n.tagExp[n.tagExp.length-1]&&i++,r=n.closeIndex}}}function Gn(e,t,r){if(t&&"string"==typeof e){const t=e.trim();return"true"===t||"false"!==t&&Fn(e,r)}return In.isExist(e)?e:""}var Jn=class{constructor(e){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,16))}},this.addExternalEntities=$n,this.parseXml=zn,this.parseTextData=Un,this.resolveNameSpace=Ln,this.buildAttributesMap=Bn,this.isItStopNode=Hn,this.replaceEntitiesValue=qn,this.readStopNodeData=Qn,this.saveTextToParentTag=Wn,this.addChild=jn}},Xn={};function Zn(e,t,r){let n;const i={};for(let o=0;o0&&(i[t.textNodeName]=n):void 0!==n&&(i[t.textNodeName]=n),i}function Yn(e){const t=Object.keys(e);for(let e=0;e`,o=!1;continue}if(c===t.commentPropName){i+=n+`\x3c!--${a[c][0][t.textNodeName]}--\x3e`,o=!0;continue}if("?"===c[0]){const e=ui(a[":@"],t),r="?xml"===c?"":n;let s=a[c][0][t.textNodeName];s=0!==s.length?" "+s:"",i+=r+`<${c}${s}${e}?>`,o=!0;continue}let d=n;""!==d&&(d+=t.indentBy);const l=n+`<${c}${ui(a[":@"],t)}`,h=ai(a[c],t,u,d);-1!==t.unpairedTags.indexOf(c)?t.suppressUnpairedNode?i+=l+">":i+=l+"/>":h&&0!==h.length||!t.suppressEmptyNode?h&&h.endsWith(">")?i+=l+`>${h}${n}`:(i+=l+">",h&&""!==n&&(h.includes("/>")||h.includes("`):i+=l+"/>",o=!0}return i}function ci(e){const t=Object.keys(e);for(let r=0;r0&&t.processEntities)for(let r=0;r0&&(r="\n"),ai(e,t,"",r)},fi={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function pi(e){this.options=Object.assign({},fi,e),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=yi),this.processTextOrObjNode=gi,this.options.format?(this.indentate=mi,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function gi(e,t,r){const n=this.j2x(e,r+1);return void 0!==e[this.options.textNodeName]&&1===Object.keys(e).length?this.buildTextValNode(e[this.options.textNodeName],t,n.attrStr,r):this.buildObjectNode(n.val,t,n.attrStr,r)}function mi(e){return this.options.indentBy.repeat(e)}function yi(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}pi.prototype.build=function(e){return this.options.preserveOrder?hi(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0).val)},pi.prototype.j2x=function(e,t){let r="",n="";for(let i in e)if(Object.prototype.hasOwnProperty.call(e,i))if(void 0===e[i])this.isAttribute(i)&&(n+="");else if(null===e[i])this.isAttribute(i)?n+="":"?"===i[0]?n+=this.indentate(t)+"<"+i+"?"+this.tagEndChar:n+=this.indentate(t)+"<"+i+"/"+this.tagEndChar;else if(e[i]instanceof Date)n+=this.buildTextValNode(e[i],i,"",t);else if("object"!=typeof e[i]){const o=this.isAttribute(i);if(o)r+=this.buildAttrPairStr(o,""+e[i]);else if(i===this.options.textNodeName){let t=this.options.tagValueProcessor(i,""+e[i]);n+=this.replaceEntitiesValue(t)}else n+=this.buildTextValNode(e[i],i,"",t)}else if(Array.isArray(e[i])){const r=e[i].length;let o="",s="";for(let a=0;a"+e+i}},pi.prototype.closeTag=function(e){let t="";return-1!==this.options.unpairedTags.indexOf(e)?this.options.suppressUnpairedNode||(t="/"):t=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(n)+`\x3c!--${e}--\x3e`+this.newLine;if("?"===t[0])return this.indentate(n)+"<"+t+r+"?"+this.tagEndChar;{let i=this.options.tagValueProcessor(t,e);return i=this.replaceEntitiesValue(i),""===i?this.indentate(n)+"<"+t+r+this.closeTag(t)+this.tagEndChar:this.indentate(n)+"<"+t+r+">"+i+"0&&this.options.processEntities)for(let t=0;t((e,t)=>Xe(e,t).then((e=>t.utf8Encoder(e))))(e,t).then((e=>{if(e.length){const t=new vi.XMLParser({attributeNamePrefix:"",htmlEntities:!0,ignoreAttributes:!1,ignoreDeclaration:!0,parseTagValue:!1,trimValues:!1,tagValueProcessor:(e,t)=>""===t.trim()&&t.includes("\n")?"":void 0});let r;t.addEntity("#xD","\r"),t.addEntity("#10","\n");try{r=t.parse(e,!0)}catch(t){throw t&&"object"==typeof t&&Object.defineProperty(t,"$responseBodyText",{value:e}),t}const n="#text",i=Object.keys(r)[0],o=r[i];return o[n]&&(o[i]=o[n],delete o[n]),qr(o)}return{}})),wi=async(e,t)=>{const r=await bi(e,t);return r.Error&&(r.Error.message=r.Error.message??r.Error.Message),r},ki=[Y.CRC32,Y.CRC32C,Y.SHA1,Y.SHA256],Si=[Y.SHA256,Y.SHA1,Y.CRC32,Y.CRC32C],Ei=e=>e===Y.MD5?"content-md5":`x-amz-checksum-${e.toLowerCase()}`,xi=e=>void 0!==e&&"string"!=typeof e&&!ArrayBuffer.isView(e)&&!At(e);function Ai(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))}function Ti(e,t){var r,n,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return s.next=a(0),s.throw=a(1),s.return=a(2),"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(a){return function(c){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;s&&(s=0,a[0]&&(o=0)),o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1](new TextEncoder).encode(e);function Ri(e){return e instanceof Uint8Array?e:"string"==typeof e?Ci(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e)}function _i(e){return"string"==typeof e?0===e.length:0===e.byteLength}function Oi(e){return new Uint8Array([(4278190080&e)>>24,(16711680&e)>>16,(65280&e)>>8,255&e])}function Pi(e){if(!Uint32Array.from){for(var t=new Uint32Array(e.length),r=0;r=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(e),i=n.next();!i.done;i=n.next()){var o=i.value;this.checksum=this.checksum>>>8^Ni[255&(this.checksum^o)]}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return this},e.prototype.digest=function(){return(4294967295^this.checksum)>>>0},e}(),Ni=Pi([0,4067132163,3778769143,324072436,3348797215,904991772,648144872,3570033899,2329499855,2024987596,1809983544,2575936315,1296289744,3207089363,2893594407,1578318884,274646895,3795141740,4049975192,51262619,3619967088,632279923,922689671,3298075524,2592579488,1760304291,2075979607,2312596564,1562183871,2943781820,3156637768,1313733451,549293790,3537243613,3246849577,871202090,3878099393,357341890,102525238,4101499445,2858735121,1477399826,1264559846,3107202533,1845379342,2677391885,2361733625,2125378298,820201905,3263744690,3520608582,598981189,4151959214,85089709,373468761,3827903834,3124367742,1213305469,1526817161,2842354314,2107672161,2412447074,2627466902,1861252501,1098587580,3004210879,2688576843,1378610760,2262928035,1955203488,1742404180,2511436119,3416409459,969524848,714683780,3639785095,205050476,4266873199,3976438427,526918040,1361435347,2739821008,2954799652,1114974503,2529119692,1691668175,2005155131,2247081528,3690758684,697762079,986182379,3366744552,476452099,3993867776,4250756596,255256311,1640403810,2477592673,2164122517,1922457750,2791048317,1412925310,1197962378,3037525897,3944729517,427051182,170179418,4165941337,746937522,3740196785,3451792453,1070968646,1905808397,2213795598,2426610938,1657317369,3053634322,1147748369,1463399397,2773627110,4215344322,153784257,444234805,3893493558,1021025245,3467647198,3722505002,797665321,2197175160,1889384571,1674398607,2443626636,1164749927,3070701412,2757221520,1446797203,137323447,4198817972,3910406976,461344835,3484808360,1037989803,781091935,3705997148,2460548119,1623424788,1939049696,2180517859,1429367560,2807687179,3020495871,1180866812,410100952,3927582683,4182430767,186734380,3756733383,763408580,1053836080,3434856499,2722870694,1344288421,1131464017,2971354706,1708204729,2545590714,2229949006,1988219213,680717673,3673779818,3383336350,1002577565,4010310262,493091189,238226049,4233660802,2987750089,1082061258,1395524158,2705686845,1972364758,2279892693,2494862625,1725896226,952904198,3399985413,3656866545,731699698,4283874585,222117402,510512622,3959836397,3280807620,837199303,582374963,3504198960,68661723,4135334616,3844915500,390545967,1230274059,3141532936,2825850620,1510247935,2395924756,2091215383,1878366691,2644384480,3553878443,565732008,854102364,3229815391,340358836,3861050807,4117890627,119113024,1493875044,2875275879,3090270611,1247431312,2660249211,1828433272,2141937292,2378227087,3811616794,291187481,34330861,4032846830,615137029,3603020806,3314634738,939183345,1776939221,2609017814,2295496738,2058945313,2926798794,1545135305,1330124605,3173225534,4084100981,17165430,307568514,3762199681,888469610,3332340585,3587147933,665062302,2042050490,2346497209,2559330125,1793573966,3190661285,1279665062,1595330642,2910671697]);function Fi(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))}function $i(e,t){var r,n,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return s.next=a(0),s.throw=a(1),s.return=a(2),"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(a){return function(c){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;s&&(s=0,a[0]&&(o=0)),o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(e),i=n.next();!i.done;i=n.next()){var o=i.value;this.checksum=this.checksum>>>8^Di[255&(this.checksum^o)]}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return this},e.prototype.digest=function(){return(4294967295^this.checksum)>>>0},e}(),Di=Pi([0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117]);const Bi=(e,t)=>({[Y.MD5]:t.md5,[Y.CRC32]:Ui,[Y.CRC32C]:Ii,[Y.SHA1]:t.sha1,[Y.SHA256]:t.sha256}[e]),zi=(e,t)=>{const r=new e;return r.update(Re(t||"")),r.digest()},ji={name:"flexibleChecksumsMiddleware",step:"build",tags:["BODY_CHECKSUM"],override:!0},qi=(e,t)=>(r,n)=>async i=>{if(!K.isInstance(i.request))return r(i);const{request:o,input:s}=i,{body:a,headers:c}=o,{base64Encoder:u,streamHasher:d}=e,{requestChecksumRequired:l,requestAlgorithmMember:h}=t,f=((e,{requestChecksumRequired:t,requestAlgorithmMember:r},n)=>{const i=n?re:te;if(!r||!e[r])return t?i:void 0;const o=e[r];if(!ki.includes(o))throw new Error(`The checksum algorithm "${o}" is not supported by the client. Select one of ${ki}.`);return o})(s,{requestChecksumRequired:l,requestAlgorithmMember:h},!!n.isS3ExpressBucket);let p=a,g=c;if(f){switch(f){case Y.CRC32:ie(n,"FLEXIBLE_CHECKSUMS_REQ_CRC32","U");break;case Y.CRC32C:ie(n,"FLEXIBLE_CHECKSUMS_REQ_CRC32C","V");break;case Y.SHA1:ie(n,"FLEXIBLE_CHECKSUMS_REQ_SHA1","X");break;case Y.SHA256:ie(n,"FLEXIBLE_CHECKSUMS_REQ_SHA256","Y")}const t=Ei(f),r=Bi(f,e);if(xi(a)){const{getAwsChunkedEncodingStream:n,bodyLengthChecker:i}=e;p=n(a,{base64Encoder:u,bodyLengthChecker:i,checksumLocationName:t,checksumAlgorithmFn:r,streamHasher:d}),g={...c,"content-encoding":c["content-encoding"]?`${c["content-encoding"]},aws-chunked`:"aws-chunked","transfer-encoding":"chunked","x-amz-decoded-content-length":c["content-length"],"x-amz-content-sha256":"STREAMING-UNSIGNED-PAYLOAD-TRAILER","x-amz-trailer":t},delete g["content-length"]}else if(!((e,t)=>{const r=e.toLowerCase();for(const e of Object.keys(t))if(r===e.toLowerCase())return!0;return!1})(t,c)){const e=await zi(r,a);g={...c,[t]:u(e)}}}return await r({...i,request:{...o,headers:g,body:p}})},Wi=(e=[])=>{const t=[];for(const r of Si)e.includes(r)&&ki.includes(r)&&t.push(r);return t};function Hi(e){return new Blob([e]).stream()}const Ki=async(e,{checksumAlgorithmFn:t,base64Encoder:r})=>r(await zi(t,e)),Vi={name:"flexibleChecksumsResponseMiddleware",toMiddleware:"deserializerMiddleware",relation:"after",tags:["BODY_CHECKSUM"],override:!0},Qi=(e,t)=>(r,n)=>async i=>{if(!K.isInstance(i.request))return r(i);const o=i.input,s=await r(i),a=s.response;let c;const{requestValidationModeMember:u,responseAlgorithms:d}=t;if(u&&"ENABLED"===o[u]){const{clientName:t,commandName:r}=n;if("S3Client"===t&&"GetObjectCommand"===r&&Wi(d).every((e=>{const t=Ei(e),r=a.headers[t];return!r||(e=>{const t=e.lastIndexOf("-");if(-1!==t){const r=e.slice(t+1);if(!r.startsWith("0")){const e=parseInt(r,10);if(!isNaN(e)&&e>=1&&e<=1e4)return!0}}return!1})(r)})))return s;const i=xi(a.body);i&&(c=await e.streamCollector(a.body),a.body=Hi(c)),await(async(e,{config:t,responseAlgorithms:r})=>{const n=Wi(r),{body:i,headers:o}=e;for(const r of n){const n=Ei(r),s=o[n];if(s){const o=Bi(r,t),{base64Encoder:a}=t;if(xi(i))return void(e.body=Je({expectedChecksum:s,checksumSourceLocation:n,checksum:new o,source:i,base64Encoder:a}));const c=await Ki(i,{checksumAlgorithmFn:o,base64Encoder:a});if(c===s)break;throw new Error(`Checksum mismatch: expected "${c}" but received "${s}" in response header "${n}".`)}}})(s.response,{config:e,responseAlgorithms:d}),i&&c&&(a.body=Hi(c))}return s},Gi=(e,t)=>({applyToStack:r=>{r.add(qi(e,t),ji),r.addRelativeTo(Qi(e,t),Vi)}});const Ji={name:"hostHeaderMiddleware",step:"build",priority:"low",tags:["HOST"],override:!0},Xi=e=>({applyToStack:t=>{t.add((e=>t=>async r=>{if(!K.isInstance(r.request))return t(r);const{request:n}=r,{handlerProtocol:i=""}=e.requestHandler.metadata||{};if(i.indexOf("h2")>=0&&!n.headers[":authority"])delete n.headers.host,n.headers[":authority"]=n.hostname+(n.port?":"+n.port:"");else if(!n.headers.host){let e=n.hostname;null!=n.port&&(e+=`:${n.port}`),n.headers.host=e}return t(r)})(e),Ji)}}),Zi={name:"loggerMiddleware",tags:["LOGGER"],step:"initialize",override:!0},Yi="X-Amzn-Trace-Id",eo={step:"build",tags:["RECURSION_DETECTION"],name:"recursionDetectionMiddleware",override:!0,priority:"low"},to=e=>({applyToStack:t=>{t.add((e=>t=>async r=>{const{request:n}=r;if(!K.isInstance(n)||"node"!==e.runtime||n.headers.hasOwnProperty(Yi))return t(r);const i=process.env.AWS_LAMBDA_FUNCTION_NAME,o=process.env._X_AMZN_TRACE_ID,s=e=>"string"==typeof e&&e.length>0;return s(i)&&s(o)&&(n.headers[Yi]=o),t({...r,request:n})})(e),eo)}});const ro={step:"finalizeRequest",tags:["CHECK_CONTENT_LENGTH_HEADER"],name:"getCheckContentLengthHeaderPlugin",override:!0},no=e=>({applyToStack:e=>{e.add(((e,t)=>async r=>{const{request:n}=r;if(K.isInstance(n)&&!("content-length"in n.headers)){const e="Are you using a Stream of unknown length as the Body of a PutObject request? Consider using Upload instead from @aws-sdk/lib-storage.";"function"!=typeof t?.logger?.warn||t.logger instanceof Kr?console.warn(e):t.logger.warn(e)}return e({...r})}),ro)}}),io={tags:["REGION_REDIRECT","S3"],name:"regionRedirectEndpointMiddleware",override:!0,relation:"before",toMiddleware:"endpointV2Middleware"};const oo={step:"initialize",tags:["REGION_REDIRECT","S3"],name:"regionRedirectMiddleware",override:!0},so=e=>({applyToStack:t=>{t.add(function(e){return(t,r)=>async n=>{try{return await t(n)}catch(i){if(e.followRegionRedirects&&(301===i?.$metadata?.httpStatusCode||400===i?.$metadata?.httpStatusCode&&"IllegalLocationConstraintException"===i?.name)){try{const t=i.$response.headers["x-amz-bucket-region"];r.logger?.debug(`Redirecting from ${await e.region()} to ${t}`),r.__s3RegionRedirect=t}catch(e){throw new Error("Region redirect failed: "+e)}return t(n)}throw i}}}(e),oo),t.addRelativeTo((e=>(t,r)=>async n=>{const i=await e.region(),o=e.region;let s=()=>{};r.__s3RegionRedirect&&(Object.defineProperty(e,"region",{writable:!1,value:async()=>r.__s3RegionRedirect}),s=()=>Object.defineProperty(e,"region",{writable:!0,value:o}));try{const o=await t(n);if(r.__s3RegionRedirect&&(s(),i!==await e.region()))throw new Error("Region was not restored following S3 region redirect.");return o}catch(e){throw s(),e}})(e),io)}}),ao={tags:["S3"],name:"s3ExpiresMiddleware",override:!0,relation:"after",toMiddleware:"deserializerMiddleware"},co=e=>({applyToStack:e=>{e.addRelativeTo(((e,t)=>async r=>{const n=await e(r),{response:i}=n;if(V.isInstance(i)&&i.headers.expires){i.headers.expiresstring=i.headers.expires;try{wr(i.headers.expires)}catch(e){t.logger?.warn(`AWS SDK Warning for ${t.clientName}::${t.commandName} response parsing (${i.headers.expires}): ${e}`),delete i.headers.expires}}return n}),ao)}});class uo{constructor(e={}){this.data=e,this.lastPurgeTime=Date.now()}get(e){const t=this.data[e];if(t)return t}set(e,t){return this.data[e]=t,t}delete(e){delete this.data[e]}async purgeExpired(){const e=Date.now();if(!(this.lastPurgeTime+uo.EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS>e))for(const t in this.data){const r=this.data[t];if(!r.isRefreshing){const n=await r.identity;n.expiration&&n.expiration.getTime(){if((e.expiration?.getTime()??0){n.set(r,new lo(Promise.resolve(e)))}))),e})):n.set(r,new lo(this.getIdentity(r))).identity}async getIdentity(e){await this.cache.purgeExpired().catch((e=>{console.warn("Error while clearing expired entries in S3ExpressIdentityCache: \n"+e)}));const t=await this.createSessionFn(e);if(!t.Credentials?.AccessKeyId||!t.Credentials?.SecretAccessKey)throw new Error("s3#createSession response credential missing AccessKeyId or SecretAccessKey.");return{accessKeyId:t.Credentials.AccessKeyId,secretAccessKey:t.Credentials.SecretAccessKey,sessionToken:t.Credentials.SessionToken,expiration:t.Credentials.Expiration?new Date(t.Credentials.Expiration):void 0}}}var fo;ho.REFRESH_WINDOW_MS=6e4,function(e){e.ENV="env",e.CONFIG="shared config entry"}(fo||(fo={}));const po="X-Amz-S3session-Token",go=po.toLowerCase();class mo extends Nt{async signWithCredentials(e,t,r){const n=yo(t);e.headers[go]=t.sessionToken;return vo(this,n),this.signRequest(e,r??{})}async presignWithCredentials(e,t,r){const n=yo(t);delete e.headers[go],e.headers[po]=t.sessionToken,e.query=e.query??{},e.query[po]=t.sessionToken;return vo(this,n),this.presign(e,r)}}function yo(e){return{accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey,expiration:e.expiration}}function vo(e,t){const r=setTimeout((()=>{throw new Error("SignatureV4S3Express credential override was created but not called.")}),10),n=e.credentialProvider;e.credentialProvider=()=>(clearTimeout(r),e.credentialProvider=n,Promise.resolve(t))}const bo={name:"s3ExpressMiddleware",step:"build",tags:["S3","S3_EXPRESS"],override:!0},wo=e=>({applyToStack:t=>{t.add((e=>(t,r)=>async n=>{if(r.endpointV2){const t=r.endpointV2,i="sigv4-s3express"===t.properties?.authSchemes?.[0]?.name;if(("S3Express"===t.properties?.backend||"Directory"===t.properties?.bucketType)&&(ie(r,"S3_EXPRESS_BUCKET","J"),r.isS3ExpressBucket=!0),i){const t=n.input.Bucket;if(t){const i=await e.s3ExpressIdentityProvider.getS3ExpressIdentity(await e.credentials(),{Bucket:t});r.s3ExpressIdentity=i,K.isInstance(n.request)&&i.sessionToken&&(n.request.headers[go]=i.sessionToken)}}}return t(n)})(e),bo)}}),ko=e=>e=>{throw e},So=(e,t)=>{},Eo=e=>(t,r)=>async n=>{if(!K.isInstance(n.request))return t(n);const i=he(r).selectedHttpAuthScheme;if(!i)throw new Error("No HttpAuthScheme was selected: unable to sign request");const{httpAuthOption:{signingProperties:o={}},identity:s,signer:a}=i;let c;c=r.s3ExpressIdentity?await(async(e,t,r,n)=>{const i=await n.signWithCredentials(r,e,{});if(i.headers["X-Amz-Security-Token"]||i.headers["x-amz-security-token"])throw new Error("X-Amz-Security-Token must not be set for s3-express requests.");return i})(r.s3ExpressIdentity,0,n.request,await e.signer()):await a.sign(n.request,s,o);const u=await t({...n,request:c}).catch((a.errorHandler||ko)(o));return(a.successHandler||So)(u.response,o),u},xo={CopyObjectCommand:!0,UploadPartCopyCommand:!0,CompleteMultipartUploadCommand:!0},Ao=e=>(t,r)=>async n=>{const i=await t(n),{response:o}=i;if(!V.isInstance(o))return i;const{statusCode:s,body:a}=o;if(s<200||s>=300)return i;if(!("function"==typeof a?.stream||"function"==typeof a?.pipe||"function"==typeof a?.tee))return i;let c=a,u=a;!a||"object"!=typeof a||a instanceof Uint8Array||([c,u]=await async function(e){return"function"==typeof e.stream&&(e=e.stream()),e.tee()}(a)),o.body=u;const d=await To(c,{streamCollector:async e=>async function(e,t){let r=0;const n=[],i=e.getReader();let o=!1;for(;!o;){const{done:e,value:s}=await i.read();if(s&&(n.push(s),r+=s?.byteLength??0),r>=t)break;o=e}i.releaseLock();const s=new Uint8Array(Math.min(t,r));let a=0;for(const e of n){if(e.byteLength>s.byteLength-a){s.set(e.subarray(0,s.byteLength-a),a);break}s.set(e,a),a+=e.length}return s}(e,3e3)});"function"==typeof c?.destroy&&c.destroy();const l=e.utf8Encoder(d.subarray(d.length-16));if(0===d.length&&xo[r.commandName]){const e=new Error("S3 aborted request");throw e.name="InternalError",e}return l&&l.endsWith("")&&(o.statusCode=400),i},To=(e=new Uint8Array,t)=>e instanceof Uint8Array?Promise.resolve(e):t.streamCollector(e)||Promise.resolve(new Uint8Array),Co={relation:"after",toMiddleware:"deserializerMiddleware",tags:["THROW_200_EXCEPTIONS","S3"],name:"throw200ExceptionsMiddleware",override:!0},Ro=e=>({applyToStack:t=>{t.addRelativeTo(Ao(e),Co)}});const _o={name:"bucketEndpointMiddleware",override:!0,relation:"after",toMiddleware:"endpointV2Middleware"};const Oo={step:"initialize",tags:["VALIDATE_BUCKET_NAME"],name:"validateBucketNameMiddleware",override:!0},Po=e=>({applyToStack:t=>{t.add(function({bucketEndpoint:e}){return t=>async r=>{const{input:{Bucket:n}}=r;if(!e&&"string"==typeof n&&!("string"==typeof(i=n)&&0===i.indexOf("arn:")&&i.split(":").length>=6)&&n.indexOf("/")>=0){const e=new Error(`Bucket name shouldn't contain '/', received '${n}'`);throw e.name="InvalidBucketName",e}var i;return t({...r})}}(e),Oo),t.addRelativeTo(function(e){return(t,r)=>async n=>{if(e.bucketEndpoint){const e=r.endpointV2;if(e){const t=n.input.Bucket;if("string"==typeof t)try{const n=new URL(t);r.endpointV2={...e,url:n}}catch(e){const n=`@aws-sdk/middleware-sdk-s3: bucketEndpoint=true was set but Bucket=${t} could not be parsed as URL.`;throw"NoOpLogger"===r.logger?.constructor?.name?console.warn(n):r.logger?.warn?.(n),e}}}return t(n)}}(e),_o)}});const Io=new RegExp("^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$"),Mo=e=>Io.test(e)||e.startsWith("[")&&e.endsWith("]"),No=new RegExp("^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$"),Fo=(e,t=!1)=>{if(!t)return No.test(e);const r=e.split(".");for(const e of r)if(!Fo(e))return!1;return!0},$o={},Uo="endpoints";function Lo(e){return"object"!=typeof e||null==e?e:"ref"in e?`$${Lo(e.ref)}`:"fn"in e?`${e.fn}(${(e.argv||[]).map(Lo).join(", ")})`:JSON.stringify(e,null,2)}class Do extends Error{constructor(e){super(e),this.name="EndpointError"}}const Bo=(e,t)=>(e=>{const t=e.split("."),r=[];for(const n of t){const t=n.indexOf("[");if(-1!==t){if(n.indexOf("]")!==n.length-1)throw new Do(`Path: '${e}' does not end with ']'`);const i=n.slice(t+1,-1);if(Number.isNaN(parseInt(i)))throw new Do(`Invalid array index: '${i}' in path: '${e}'`);0!==t&&r.push(n.slice(0,t)),r.push(i)}else r.push(n)}return r})(t).reduce(((r,n)=>{if("object"!=typeof r)throw new Do(`Index '${n}' in '${t}' not found in '${JSON.stringify(e)}'`);return Array.isArray(r)?r[parseInt(n)]:r[n]}),e),zo={[B.HTTP]:80,[B.HTTPS]:443},jo={booleanEquals:(e,t)=>e===t,getAttr:Bo,isSet:e=>null!=e,isValidHostLabel:Fo,not:e=>!e,parseURL:e=>{const t=(()=>{try{if(e instanceof URL)return e;if("object"==typeof e&&"hostname"in e){const{hostname:t,port:r,protocol:n="",path:i="",query:o={}}=e,s=new URL(`${n}//${t}${r?`:${r}`:""}${i}`);return s.search=Object.entries(o).map((([e,t])=>`${e}=${t}`)).join("&"),s}return new URL(e)}catch(e){return null}})();if(!t)return console.error(`Unable to parse ${JSON.stringify(e)} as a whatwg URL.`),null;const r=t.href,{host:n,hostname:i,pathname:o,protocol:s,search:a}=t;if(a)return null;const c=s.slice(0,-1);if(!Object.values(B).includes(c))return null;const u=Mo(i);return{scheme:c,authority:`${n}${r.includes(`${n}:${zo[c]}`)||"string"==typeof e&&e.includes(`${n}:${zo[c]}`)?`:${zo[c]}`:""}`,path:o,normalizedPath:o.endsWith("/")?o:`${o}/`,isIp:u}},stringEquals:(e,t)=>e===t,substring:(e,t,r,n)=>t>=r||e.lengthencodeURIComponent(e).replace(/[!*'()]/g,(e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`))},qo=(e,t)=>{const r=[],n={...t.endpointParams,...t.referenceRecord};let i=0;for(;i{if("string"==typeof e)return qo(e,r);if(e.fn)return Ho(e,r);if(e.ref)return(({ref:e},t)=>({...t.endpointParams,...t.referenceRecord}[e]))(e,r);throw new Do(`'${t}': ${String(e)} is not a string, function or reference.`)},Ho=({fn:e,argv:t},r)=>{const n=t.map((e=>["boolean","number"].includes(typeof e)?e:Wo(e,"arg",r))),i=e.split(".");return i[0]in $o&&null!=i[1]?$o[i[0]][i[1]](...n):jo[e](...n)},Ko=({assign:e,...t},r)=>{if(e&&e in r.referenceRecord)throw new Do(`'${e}' is already defined in Reference Record.`);const n=Ho(t,r);return r.logger?.debug?.(`${Uo} evaluateCondition: ${Lo(t)} = ${Lo(n)}`),{result:""===n||!!n,...null!=e&&{toAssign:{name:e,value:n}}}},Vo=(e=[],t)=>{const r={};for(const n of e){const{result:e,toAssign:i}=Ko(n,{...t,referenceRecord:{...t.referenceRecord,...r}});if(!e)return{result:e};i&&(r[i.name]=i.value,t.logger?.debug?.(`${Uo} assign: ${i.name} := ${Lo(i.value)}`))}return{result:!0,referenceRecord:r}},Qo=(e,t)=>Object.entries(e).reduce(((e,[r,n])=>({...e,[r]:n.map((e=>{const n=Wo(e,"Header value entry",t);if("string"!=typeof n)throw new Do(`Header '${r}' value '${n}' is not a string`);return n}))})),{}),Go=(e,t)=>{if(Array.isArray(e))return e.map((e=>Go(e,t)));switch(typeof e){case"string":return qo(e,t);case"object":if(null===e)throw new Do(`Unexpected endpoint property: ${e}`);return Jo(e,t);case"boolean":return e;default:throw new Do("Unexpected endpoint property type: "+typeof e)}},Jo=(e,t)=>Object.entries(e).reduce(((e,[r,n])=>({...e,[r]:Go(n,t)})),{}),Xo=(e,t)=>{const r=Wo(e,"Endpoint URL",t);if("string"==typeof r)try{return new URL(r)}catch(e){throw console.error(`Failed to construct URL with ${r}`,e),e}throw new Do("Endpoint URL must be a string, got "+typeof r)},Zo=(e,t)=>{const{conditions:r,endpoint:n}=e,{result:i,referenceRecord:o}=Vo(r,t);if(!i)return;const s={...t,referenceRecord:{...t.referenceRecord,...o}},{url:a,properties:c,headers:u}=n;return t.logger?.debug?.(`${Uo} Resolving endpoint from template: ${Lo(n)}`),{...null!=u&&{headers:Qo(u,s)},...null!=c&&{properties:Jo(c,s)},url:Xo(a,s)}},Yo=(e,t)=>{const{conditions:r,error:n}=e,{result:i,referenceRecord:o}=Vo(r,t);if(i)throw new Do(Wo(n,"Error",{...t,referenceRecord:{...t.referenceRecord,...o}}))},es=(e,t)=>{const{conditions:r,rules:n}=e,{result:i,referenceRecord:o}=Vo(r,t);if(i)return ts(n,{...t,referenceRecord:{...t.referenceRecord,...o}})},ts=(e,t)=>{for(const r of e)if("endpoint"===r.type){const e=Zo(r,t);if(e)return e}else if("error"===r.type)Yo(r,t);else{if("tree"!==r.type)throw new Do(`Unknown endpoint rule: ${r}`);{const e=es(r,t);if(e)return e}}throw new Do("Rules evaluation failed")},rs=(e,t=!1)=>{if(t){for(const t of e.split("."))if(!rs(t))return!1;return!0}return!!Fo(e)&&(!(e.length<3||e.length>63)&&(e===e.toLowerCase()&&!Mo(e)))};let ns={partitions:[{id:"aws",outputs:{dnsSuffix:"amazonaws.com",dualStackDnsSuffix:"api.aws",implicitGlobalRegion:"us-east-1",name:"aws",supportsDualStack:!0,supportsFIPS:!0},regionRegex:"^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$",regions:{"af-south-1":{description:"Africa (Cape Town)"},"ap-east-1":{description:"Asia Pacific (Hong Kong)"},"ap-northeast-1":{description:"Asia Pacific (Tokyo)"},"ap-northeast-2":{description:"Asia Pacific (Seoul)"},"ap-northeast-3":{description:"Asia Pacific (Osaka)"},"ap-south-1":{description:"Asia Pacific (Mumbai)"},"ap-south-2":{description:"Asia Pacific (Hyderabad)"},"ap-southeast-1":{description:"Asia Pacific (Singapore)"},"ap-southeast-2":{description:"Asia Pacific (Sydney)"},"ap-southeast-3":{description:"Asia Pacific (Jakarta)"},"ap-southeast-4":{description:"Asia Pacific (Melbourne)"},"ap-southeast-5":{description:"Asia Pacific (Malaysia)"},"aws-global":{description:"AWS Standard global region"},"ca-central-1":{description:"Canada (Central)"},"ca-west-1":{description:"Canada West (Calgary)"},"eu-central-1":{description:"Europe (Frankfurt)"},"eu-central-2":{description:"Europe (Zurich)"},"eu-north-1":{description:"Europe (Stockholm)"},"eu-south-1":{description:"Europe (Milan)"},"eu-south-2":{description:"Europe (Spain)"},"eu-west-1":{description:"Europe (Ireland)"},"eu-west-2":{description:"Europe (London)"},"eu-west-3":{description:"Europe (Paris)"},"il-central-1":{description:"Israel (Tel Aviv)"},"me-central-1":{description:"Middle East (UAE)"},"me-south-1":{description:"Middle East (Bahrain)"},"sa-east-1":{description:"South America (Sao Paulo)"},"us-east-1":{description:"US East (N. Virginia)"},"us-east-2":{description:"US East (Ohio)"},"us-west-1":{description:"US West (N. California)"},"us-west-2":{description:"US West (Oregon)"}}},{id:"aws-cn",outputs:{dnsSuffix:"amazonaws.com.cn",dualStackDnsSuffix:"api.amazonwebservices.com.cn",implicitGlobalRegion:"cn-northwest-1",name:"aws-cn",supportsDualStack:!0,supportsFIPS:!0},regionRegex:"^cn\\-\\w+\\-\\d+$",regions:{"aws-cn-global":{description:"AWS China global region"},"cn-north-1":{description:"China (Beijing)"},"cn-northwest-1":{description:"China (Ningxia)"}}},{id:"aws-us-gov",outputs:{dnsSuffix:"amazonaws.com",dualStackDnsSuffix:"api.aws",implicitGlobalRegion:"us-gov-west-1",name:"aws-us-gov",supportsDualStack:!0,supportsFIPS:!0},regionRegex:"^us\\-gov\\-\\w+\\-\\d+$",regions:{"aws-us-gov-global":{description:"AWS GovCloud (US) global region"},"us-gov-east-1":{description:"AWS GovCloud (US-East)"},"us-gov-west-1":{description:"AWS GovCloud (US-West)"}}},{id:"aws-iso",outputs:{dnsSuffix:"c2s.ic.gov",dualStackDnsSuffix:"c2s.ic.gov",implicitGlobalRegion:"us-iso-east-1",name:"aws-iso",supportsDualStack:!1,supportsFIPS:!0},regionRegex:"^us\\-iso\\-\\w+\\-\\d+$",regions:{"aws-iso-global":{description:"AWS ISO (US) global region"},"us-iso-east-1":{description:"US ISO East"},"us-iso-west-1":{description:"US ISO WEST"}}},{id:"aws-iso-b",outputs:{dnsSuffix:"sc2s.sgov.gov",dualStackDnsSuffix:"sc2s.sgov.gov",implicitGlobalRegion:"us-isob-east-1",name:"aws-iso-b",supportsDualStack:!1,supportsFIPS:!0},regionRegex:"^us\\-isob\\-\\w+\\-\\d+$",regions:{"aws-iso-b-global":{description:"AWS ISOB (US) global region"},"us-isob-east-1":{description:"US ISOB East (Ohio)"}}},{id:"aws-iso-e",outputs:{dnsSuffix:"cloud.adc-e.uk",dualStackDnsSuffix:"cloud.adc-e.uk",implicitGlobalRegion:"eu-isoe-west-1",name:"aws-iso-e",supportsDualStack:!1,supportsFIPS:!0},regionRegex:"^eu\\-isoe\\-\\w+\\-\\d+$",regions:{"eu-isoe-west-1":{description:"EU ISOE West"}}},{id:"aws-iso-f",outputs:{dnsSuffix:"csp.hci.ic.gov",dualStackDnsSuffix:"csp.hci.ic.gov",implicitGlobalRegion:"us-isof-south-1",name:"aws-iso-f",supportsDualStack:!1,supportsFIPS:!0},regionRegex:"^us\\-isof\\-\\w+\\-\\d+$",regions:{}}],version:"1.1"};const is={isVirtualHostableS3Bucket:rs,parseArn:e=>{const t=e.split(":");if(t.length<6)return null;const[r,n,i,o,s,...a]=t;if("arn"!==r||""===n||""===i||""===a.join(":"))return null;return{partition:n,service:i,region:o,accountId:s,resourceId:a.map((e=>e.split("/"))).flat()}},partition:e=>{const{partitions:t}=ns;for(const r of t){const{regions:t,outputs:n}=r;for(const[r,i]of Object.entries(t))if(r===e)return{...n,...i}}for(const r of t){const{regionRegex:t,outputs:n}=r;if(new RegExp(t).test(e))return{...n}}const r=t.find((e=>"aws"===e.id));if(!r)throw new Error("Provided region was not found in the partition array or regex, and default partition with id 'aws' doesn't exist.");return{...r.outputs}}};$o.aws=is;const os=/\d{12}\.ddb/;const ss="user-agent",as="x-amz-user-agent",cs=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w]/g,us=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w\#]/g;const ds=e=>(t,r)=>async n=>{const{request:i}=n;if(!K.isInstance(i))return t(n);const{headers:o}=i,s=r?.userAgent?.map(ls)||[],a=(await e.defaultUserAgentProvider()).map(ls);await async function(e,t,r){const n=r.request;if("rpc-v2-cbor"===n?.headers?.["smithy-protocol"]&&ie(e,"PROTOCOL_RPC_V2_CBOR","M"),"function"==typeof t.retryStrategy){const r=await t.retryStrategy();"function"==typeof r.acquireInitialRetryToken?r.constructor?.name?.includes("Adaptive")?ie(e,"RETRY_MODE_ADAPTIVE","F"):ie(e,"RETRY_MODE_STANDARD","E"):ie(e,"RETRY_MODE_LEGACY","D")}if("function"==typeof t.accountIdEndpointMode){const r=e.endpointV2;switch(String(r?.url?.hostname).match(os)&&ie(e,"ACCOUNT_ID_ENDPOINT","O"),await(t.accountIdEndpointMode?.())){case"disabled":ie(e,"ACCOUNT_ID_MODE_DISABLED","Q");break;case"preferred":ie(e,"ACCOUNT_ID_MODE_PREFERRED","P");break;case"required":ie(e,"ACCOUNT_ID_MODE_REQUIRED","R")}}const i=e.__smithy_context?.selectedHttpAuthScheme?.identity;if(i?.$source){const t=i;t.accountId&&ie(e,"RESOLVED_ACCOUNT_ID","T");for(const[r,n]of Object.entries(t.$source??{}))ie(e,r,n)}}(r,e,n);const c=r;a.push(`m/${function(e){let t="";for(const r in e){const n=e[r];if(!(t.length+n.length+1<=1024))break;t.length?t+=","+n:t+=n}return t}(Object.assign({},r.__smithy_context?.features,c.__aws_sdk_context?.features))}`);const u=e?.customUserAgent?.map(ls)||[],d=await e.userAgentAppId();d&&a.push(ls([`app/${d}`]));const l=[].concat([...a,...s,...u]).join(" "),h=[...a.filter((e=>e.startsWith("aws-sdk-"))),...u].join(" ");return"browser"!==e.runtime?(h&&(o[as]=o[as]?`${o[ss]} ${h}`:h),o[ss]=l):o[as]=l,t({...n,request:i})},ls=e=>{const t=e[0].split("/").map((e=>e.replace(cs,"-"))).join("/"),r=e[1]?.replace(us,"-"),n=t.indexOf("/"),i=t.substring(0,n);let o=t.substring(n+1);return"api"===i&&(o=o.toLowerCase()),[i,o,r].filter((e=>e&&e.length>0)).reduce(((e,t,r)=>{switch(r){case 0:return t;case 1:return`${e}/${t}`;default:return`${e}#${t}`}}),"")},hs={name:"getUserAgentMiddleware",step:"build",priority:"low",tags:["SET_USER_AGENT","USER_AGENT"],override:!0},fs=e=>"string"==typeof e&&(e.startsWith("fips-")||e.endsWith("-fips")),ps=e=>fs(e)?["fips-aws-global","aws-fips"].includes(e)?"us-east-1":e.replace(/fips-(dkr-|prod-)?|-fips/,""):e,gs="content-length";const ms={step:"build",tags:["SET_CONTENT_LENGTH","CONTENT_LENGTH"],name:"contentLengthMiddleware",override:!0},ys=e=>({applyToStack:t=>{var r;t.add((r=e.bodyLengthChecker,e=>async t=>{const n=t.request;if(K.isInstance(n)){const{body:e,headers:t}=n;if(e&&-1===Object.keys(t).map((e=>e.toLowerCase())).indexOf(gs))try{const t=r(e);n.headers={...n.headers,[gs]:String(t)}}catch(e){}}return e({...t,request:n})}),ms)}}),vs=/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/,bs=/(\d+\.){3}\d+/,ws=/\.\./,ks=e=>vs.test(e)&&!bs.test(e)&&!ws.test(e),Ss=e=>{const[t,r,n,,,i]=e.split(":"),o="arn"===t&&e.split(":").length>=6,s=Boolean(o&&r&&n&&i);if(o&&!s)throw new Error(`Invalid ARN: ${e} was an invalid ARN.`);return s},Es=(e,t,r)=>{const n=async()=>{const n=r[e]??r[t];return"function"==typeof n?n():n};return"credentialScope"===e||"CredentialScope"===t?async()=>{const e="function"==typeof r.credentials?await r.credentials():r.credentials;return e?.credentialScope??e?.CredentialScope}:"accountId"===e||"AccountId"===t?async()=>{const e="function"==typeof r.credentials?await r.credentials():r.credentials;return e?.accountId??e?.AccountId}:"endpoint"===e||"endpoint"===t?async()=>{const e=await n();if(e&&"object"==typeof e){if("url"in e)return e.url.href;if("hostname"in e){const{protocol:t,hostname:r,port:n,path:i}=e;return`${t}//${r}${n?":"+n:""}${i}`}}return e}:n},xs=async e=>{};const As=e=>{if("string"==typeof e)return As(new URL(e));const{hostname:t,pathname:r,port:n,protocol:i,search:o}=e;let s;return o&&(s=function(e){const t={};if(e=e.replace(/^\?/,""))for(const r of e.split("&")){let[e,n=null]=r.split("=");e=decodeURIComponent(e),n&&(n=decodeURIComponent(n)),e in t?Array.isArray(t[e])?t[e].push(n):t[e]=[t[e],n]:t[e]=n}return t}(o)),{hostname:t,port:n?parseInt(n):void 0,protocol:i,path:r,query:s}},Ts=e=>"object"==typeof e?"url"in e?As(e.url):e:As(e),Cs=async(e,t,r)=>{const n={},i=t?.getEndpointParameterInstructions?.()||{};for(const[t,o]of Object.entries(i))switch(o.type){case"staticContextParams":n[t]=o.value;break;case"contextParams":n[t]=e[o.name];break;case"clientContextParams":case"builtInParams":n[t]=await Es(o.name,t,r)();break;default:throw new Error("Unrecognized endpoint parameter instruction: "+JSON.stringify(o))}return 0===Object.keys(i).length&&Object.assign(n,r),"s3"===String(r.serviceId).toLowerCase()&&await(async e=>{const t=e?.Bucket||"";if("string"==typeof e.Bucket&&(e.Bucket=t.replace(/#/g,encodeURIComponent("#")).replace(/\?/g,encodeURIComponent("?"))),Ss(t)){if(!0===e.ForcePathStyle)throw new Error("Path-style addressing cannot be used with ARN buckets")}else(!ks(t)||-1!==t.indexOf(".")&&!String(e.Endpoint).startsWith("http:")||t.toLowerCase()!==t||t.length<3)&&(e.ForcePathStyle=!0);return e.DisableMultiRegionAccessPoints&&(e.disableMultiRegionAccessPoints=!0,e.DisableMRAP=!0),e})(n),n},Rs=({config:e,instructions:t})=>(r,n)=>async i=>{e.endpoint&&function(e,t,r){e.__smithy_context?e.__smithy_context.features||(e.__smithy_context.features={}):e.__smithy_context={features:{}},e.__smithy_context.features[t]=r}(n,"ENDPOINT_OVERRIDE","N");const o=await(async(e,t,r,n)=>{if(!r.endpoint){let e;e=r.serviceConfiguredEndpoint?await r.serviceConfiguredEndpoint():await xs(r.serviceId),e&&(r.endpoint=()=>Promise.resolve(Ts(e)))}const i=await Cs(e,t,r);if("function"!=typeof r.endpointProvider)throw new Error("config.endpointProvider is not set.");return r.endpointProvider(i,n)})(i.input,{getEndpointParameterInstructions:()=>t},{...e},n);n.endpointV2=o,n.authSchemes=o.properties?.authSchemes;const s=n.authSchemes?.[0];if(s){n.signing_region=s.signingRegion,n.signing_service=s.signingName;const e=he(n),t=e?.selectedHttpAuthScheme?.httpAuthOption;t&&(t.signingProperties=Object.assign(t.signingProperties||{},{signing_region:s.signingRegion,signingRegion:s.signingRegion,signing_service:s.signingName,signingName:s.signingName,signingRegionSet:s.signingRegionSet},s.properties))}return r({...i})},_s={step:"serialize",tags:["ENDPOINT_PARAMETERS","ENDPOINT_V2","ENDPOINT"],name:"endpointV2Middleware",override:!0,relation:"before",toMiddleware:ye.name},Os=(e,t)=>({applyToStack:r=>{r.addRelativeTo(Rs({config:e,instructions:t}),_s)}});var Ps;!function(e){e.STANDARD="standard",e.ADAPTIVE="adaptive"}(Ps||(Ps={}));const Is=Ps.STANDARD,Ms=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],Ns=["TimeoutError","RequestTimeout","RequestTimeoutException"],Fs=[500,502,503,504],$s=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],Us=e=>429===e.$metadata?.httpStatusCode||Ms.includes(e.name)||1==e.$retryable?.throttling,Ls=e=>(e=>e.$metadata?.clockSkewCorrected)(e)||Ns.includes(e.name)||$s.includes(e?.code||"")||Fs.includes(e.$metadata?.httpStatusCode||0);class Ds{constructor(e){this.currentCapacity=0,this.enabled=!1,this.lastMaxRate=0,this.measuredTxRate=0,this.requestCount=0,this.lastTimestamp=0,this.timeWindow=0,this.beta=e?.beta??.7,this.minCapacity=e?.minCapacity??1,this.minFillRate=e?.minFillRate??.5,this.scaleConstant=e?.scaleConstant??.4,this.smooth=e?.smooth??.8;const t=this.getCurrentTimeInSeconds();this.lastThrottleTime=t,this.lastTxRateBucket=Math.floor(this.getCurrentTimeInSeconds()),this.fillRate=this.minFillRate,this.maxCapacity=this.minCapacity}getCurrentTimeInSeconds(){return Date.now()/1e3}async getSendToken(){return this.acquireTokenBucket(1)}async acquireTokenBucket(e){if(this.enabled){if(this.refillTokenBucket(),e>this.currentCapacity){const t=(e-this.currentCapacity)/this.fillRate*1e3;await new Promise((e=>Ds.setTimeoutFn(e,t)))}this.currentCapacity=this.currentCapacity-e}}refillTokenBucket(){const e=this.getCurrentTimeInSeconds();if(!this.lastTimestamp)return void(this.lastTimestamp=e);const t=(e-this.lastTimestamp)*this.fillRate;this.currentCapacity=Math.min(this.maxCapacity,this.currentCapacity+t),this.lastTimestamp=e}updateClientSendingRate(e){let t;if(this.updateMeasuredRate(),Us(e)){const e=this.enabled?Math.min(this.measuredTxRate,this.fillRate):this.measuredTxRate;this.lastMaxRate=e,this.calculateTimeWindow(),this.lastThrottleTime=this.getCurrentTimeInSeconds(),t=this.cubicThrottle(e),this.enableTokenBucket()}else this.calculateTimeWindow(),t=this.cubicSuccess(this.getCurrentTimeInSeconds());const r=Math.min(t,2*this.measuredTxRate);this.updateTokenBucketRate(r)}calculateTimeWindow(){this.timeWindow=this.getPrecise(Math.pow(this.lastMaxRate*(1-this.beta)/this.scaleConstant,1/3))}cubicThrottle(e){return this.getPrecise(e*this.beta)}cubicSuccess(e){return this.getPrecise(this.scaleConstant*Math.pow(e-this.lastThrottleTime-this.timeWindow,3)+this.lastMaxRate)}enableTokenBucket(){this.enabled=!0}updateTokenBucketRate(e){this.refillTokenBucket(),this.fillRate=Math.max(e,this.minFillRate),this.maxCapacity=Math.max(e,this.minCapacity),this.currentCapacity=Math.min(this.currentCapacity,this.maxCapacity)}updateMeasuredRate(){const e=this.getCurrentTimeInSeconds(),t=Math.floor(2*e)/2;if(this.requestCount++,t>this.lastTxRateBucket){const e=this.requestCount/(t-this.lastTxRateBucket);this.measuredTxRate=this.getPrecise(e*this.smooth+this.measuredTxRate*(1-this.smooth)),this.requestCount=0,this.lastTxRateBucket=t}}getPrecise(e){return parseFloat(e.toFixed(8))}}Ds.setTimeoutFn=setTimeout;const Bs=({retryDelay:e,retryCount:t,retryCost:r})=>({getRetryCount:()=>t,getRetryDelay:()=>Math.min(2e4,e),getRetryCost:()=>r});class zs{constructor(e){this.maxAttempts=e,this.mode=Ps.STANDARD,this.capacity=500,this.retryBackoffStrategy=(()=>{let e=100;return{computeNextBackoffDelay:t=>Math.floor(Math.min(2e4,Math.random()*2**t*e)),setDelayBase:t=>{e=t}}})(),this.maxAttemptsProvider="function"==typeof e?e:async()=>e}async acquireInitialRetryToken(e){return Bs({retryDelay:100,retryCount:0})}async refreshRetryTokenForRetry(e,t){const r=await this.getMaxAttempts();if(this.shouldRetry(e,t,r)){const r=t.errorType;this.retryBackoffStrategy.setDelayBase("THROTTLING"===r?500:100);const n=this.retryBackoffStrategy.computeNextBackoffDelay(e.getRetryCount()),i=t.retryAfterHint?Math.max(t.retryAfterHint.getTime()-Date.now()||0,n):n,o=this.getCapacityCost(r);return this.capacity-=o,Bs({retryDelay:i,retryCount:e.getRetryCount()+1,retryCost:o})}throw new Error("No retry token available")}recordSuccess(e){this.capacity=Math.max(500,this.capacity+(e.getRetryCost()??1))}getCapacity(){return this.capacity}async getMaxAttempts(){try{return await this.maxAttemptsProvider()}catch(e){return console.warn("Max attempts provider could not resolve. Using default of 3"),3}}shouldRetry(e,t,r){return e.getRetryCount()+1=this.getCapacityCost(t.errorType)&&this.isRetryableError(t.errorType)}getCapacityCost(e){return"TRANSIENT"===e?10:5}isRetryableError(e){return"THROTTLING"===e||"TRANSIENT"===e}}class js{constructor(e,t){this.maxAttemptsProvider=e,this.mode=Ps.ADAPTIVE;const{rateLimiter:r}=t??{};this.rateLimiter=r??new Ds,this.standardRetryStrategy=new zs(e)}async acquireInitialRetryToken(e){return await this.rateLimiter.getSendToken(),this.standardRetryStrategy.acquireInitialRetryToken(e)}async refreshRetryTokenForRetry(e,t){return this.rateLimiter.updateClientSendingRate(t),this.standardRetryStrategy.refreshRetryTokenForRetry(e,t)}recordSuccess(e){this.rateLimiter.updateClientSendingRate({}),this.standardRetryStrategy.recordSuccess(e)}}let qs;const Ws=new Uint8Array(16);function Hs(){if(!qs&&(qs="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!qs))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return qs(Ws)}const Ks=[];for(let e=0;e<256;++e)Ks.push((e+256).toString(16).slice(1));var Vs={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Qs(e,t,r){if(Vs.randomUUID&&!t&&!e)return Vs.randomUUID();const n=(e=e||{}).random||(e.rng||Hs)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=n[e];return t}return function(e,t=0){return Ks[e[t+0]]+Ks[e[t+1]]+Ks[e[t+2]]+Ks[e[t+3]]+"-"+Ks[e[t+4]]+Ks[e[t+5]]+"-"+Ks[e[t+6]]+Ks[e[t+7]]+"-"+Ks[e[t+8]]+Ks[e[t+9]]+"-"+Ks[e[t+10]]+Ks[e[t+11]]+Ks[e[t+12]]+Ks[e[t+13]]+Ks[e[t+14]]+Ks[e[t+15]]}(n)}const Gs=e=>e?.body instanceof ReadableStream,Js=e=>void 0!==e.acquireInitialRetryToken&&void 0!==e.refreshRetryTokenForRetry&&void 0!==e.recordSuccess,Xs=e=>{const t={error:e,errorType:Zs(e)},r=ta(e.$response);return r&&(t.retryAfterHint=r),t},Zs=e=>Us(e)?"THROTTLING":Ls(e)?"TRANSIENT":(e=>{if(void 0!==e.$metadata?.httpStatusCode){const t=e.$metadata.httpStatusCode;return 500<=t&&t<=599&&!Ls(e)}return!1})(e)?"SERVER_ERROR":"CLIENT_ERROR",Ys={name:"retryMiddleware",tags:["RETRY"],step:"finalizeRequest",priority:"high",override:!0},ea=e=>({applyToStack:t=>{t.add((e=>(t,r)=>async n=>{let i=await e.retryStrategy();const o=await e.maxAttempts();if(!Js(i))return i?.mode&&(r.userAgent=[...r.userAgent||[],["cfg/retry-mode",i.mode]]),i.retry(t,n);{let e=await i.acquireInitialRetryToken(r.partition_id),a=new Error,c=0,u=0;const{request:d}=n,l=K.isInstance(d);for(l&&(d.headers["amz-sdk-invocation-id"]=Qs());;)try{l&&(d.headers["amz-sdk-request"]=`attempt=${c+1}; max=${o}`);const{response:r,output:s}=await t(n);return i.recordSuccess(e),s.$metadata.attempts=c+1,s.$metadata.totalRetryDelay=u,{response:r,output:s}}catch(t){const n=Xs(t);if(a=(s=t)instanceof Error?s:s instanceof Object?Object.assign(new Error,s):"string"==typeof s?new Error(s):new Error(`AWS SDK error wrapper for ${s}`),l&&Gs(d))throw(r.logger instanceof Kr?console:r.logger)?.warn("An error was encountered in a non-retryable streaming request."),a;try{e=await i.refreshRetryTokenForRetry(e,n)}catch(e){throw a.$metadata||(a.$metadata={}),a.$metadata.attempts=c+1,a.$metadata.totalRetryDelay=u,a}c=e.getRetryCount();const o=e.getRetryDelay();u+=o,await new Promise((e=>setTimeout(e,o)))}}var s})(e),Ys)}}),ta=e=>{if(!V.isInstance(e))return;const t=Object.keys(e.headers).find((e=>"retry-after"===e.toLowerCase()));if(!t)return;const r=e.headers[t],n=Number(r);if(!Number.isNaN(n))return new Date(1e3*n);return new Date(r)},ra=null;class na{constructor(e){this.sigv4Signer=new mo(e),this.signerOptions=e}async sign(e,t={}){if("*"===t.signingRegion){if("node"!==this.signerOptions.runtime)throw new Error("This request requires signing with SigV4Asymmetric algorithm. It's only available in Node.js");return this.getSigv4aSigner().sign(e,t)}return this.sigv4Signer.sign(e,t)}async signWithCredentials(e,t,r={}){if("*"===r.signingRegion){if("node"!==this.signerOptions.runtime)throw new Error("This request requires signing with SigV4Asymmetric algorithm. It's only available in Node.js");return this.getSigv4aSigner().signWithCredentials(e,t,r)}return this.sigv4Signer.signWithCredentials(e,t,r)}async presign(e,t={}){if("*"===t.signingRegion){if("node"!==this.signerOptions.runtime)throw new Error("This request requires signing with SigV4Asymmetric algorithm. It's only available in Node.js");return this.getSigv4aSigner().presign(e,t)}return this.sigv4Signer.presign(e,t)}async presignWithCredentials(e,t,r={}){if("*"===r.signingRegion)throw new Error("Method presignWithCredentials is not supported for [signingRegion=*].");return this.sigv4Signer.presignWithCredentials(e,t,r)}getSigv4aSigner(){if(!this.sigv4aSigner){let e=null;try{if(e=ra,"function"!=typeof e)throw new Error}catch(e){throw e.message=`${e.message}\nPlease check whether you have installed the "@aws-sdk/signature-v4-crt" package explicitly. \nYou must also register the package by calling [require("@aws-sdk/signature-v4-crt");] or an ESM equivalent such as [import "@aws-sdk/signature-v4-crt";]. \nFor more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`,e}this.sigv4aSigner=new e({...this.signerOptions,signingAlgorithm:1})}return this.sigv4aSigner}}const ia="required",oa="type",sa="conditions",aa="fn",ca="argv",ua="ref",da="assign",la="url",ha="properties",fa="backend",pa="authSchemes",ga="disableDoubleEncoding",ma="signingName",ya="signingRegion",va="headers",ba="signingRegionSet",wa=!0,ka="isSet",Sa="booleanEquals",Ea="error",xa="aws.partition",Aa="stringEquals",Ta="getAttr",Ca="name",Ra="substring",_a="bucketSuffix",Oa="parseURL",Pa="{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}",Ia="endpoint",Ma="tree",Na="aws.isVirtualHostableS3Bucket",Fa="{url#scheme}://{Bucket}.{url#authority}{url#path}",$a="not",Ua="{url#scheme}://{url#authority}{url#path}",La="hardwareType",Da="regionPrefix",Ba="bucketAliasSuffix",za="outpostId",ja="isValidHostLabel",qa="sigv4a",Wa="s3-outposts",Ha="s3",Ka="{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}",Va="https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}",Qa="https://{Bucket}.s3.{partitionResult#dnsSuffix}",Ga="aws.parseArn",Ja="bucketArn",Xa="arnType",Za="s3-object-lambda",Ya="accesspoint",ec="accessPointName",tc="{url#scheme}://{accessPointName}-{bucketArn#accountId}.{url#authority}{url#path}",rc="mrapPartition",nc="outpostType",ic="arnPrefix",oc="{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}",sc="https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",ac="https://s3.{partitionResult#dnsSuffix}",cc={[ia]:!1,[oa]:"String"},uc={[ia]:!0,default:!1,[oa]:"Boolean"},dc={[ia]:!1,[oa]:"Boolean"},lc={[aa]:Sa,[ca]:[{[ua]:"Accelerate"},!0]},hc={[aa]:Sa,[ca]:[{[ua]:"UseFIPS"},!0]},fc={[aa]:Sa,[ca]:[{[ua]:"UseDualStack"},!0]},pc={[aa]:ka,[ca]:[{[ua]:"Endpoint"}]},gc={[aa]:xa,[ca]:[{[ua]:"Region"}],[da]:"partitionResult"},mc={[aa]:Aa,[ca]:[{[aa]:Ta,[ca]:[{[ua]:"partitionResult"},Ca]},"aws-cn"]},yc={[aa]:ka,[ca]:[{[ua]:"Bucket"}]},vc={[ua]:"Bucket"},bc={[aa]:Oa,[ca]:[{[ua]:"Endpoint"}],[da]:"url"},wc={[aa]:Sa,[ca]:[{[aa]:Ta,[ca]:[{[ua]:"url"},"isIp"]},!0]},kc={[ua]:"url"},Sc={[aa]:"uriEncode",[ca]:[vc],[da]:"uri_encoded_bucket"},Ec={[fa]:"S3Express",[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:"s3express",[ya]:"{Region}"}]},xc={},Ac={[aa]:Na,[ca]:[vc,!1]},Tc={[Ea]:"S3Express bucket name is not a valid virtual hostable name.",[oa]:Ea},Cc={[fa]:"S3Express",[pa]:[{[ga]:!0,[Ca]:"sigv4-s3express",[ma]:"s3express",[ya]:"{Region}"}]},Rc={[aa]:ka,[ca]:[{[ua]:"UseS3ExpressControlEndpoint"}]},_c={[aa]:Sa,[ca]:[{[ua]:"UseS3ExpressControlEndpoint"},!0]},Oc={[aa]:$a,[ca]:[pc]},Pc={[Ea]:"Unrecognized S3Express bucket name format.",[oa]:Ea},Ic={[aa]:$a,[ca]:[yc]},Mc={[ua]:La},Nc={[sa]:[Oc],[Ea]:"Expected a endpoint to be specified but no endpoint was found",[oa]:Ea},Fc={[pa]:[{[ga]:!0,[Ca]:qa,[ma]:Wa,[ba]:["*"]},{[ga]:!0,[Ca]:"sigv4",[ma]:Wa,[ya]:"{Region}"}]},$c={[aa]:Sa,[ca]:[{[ua]:"ForcePathStyle"},!1]},Uc={[ua]:"ForcePathStyle"},Lc={[aa]:Sa,[ca]:[{[ua]:"Accelerate"},!1]},Dc={[aa]:Aa,[ca]:[{[ua]:"Region"},"aws-global"]},Bc={[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:Ha,[ya]:"us-east-1"}]},zc={[aa]:$a,[ca]:[Dc]},jc={[aa]:Sa,[ca]:[{[ua]:"UseGlobalEndpoint"},!0]},qc={[la]:"https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",[ha]:{[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:Ha,[ya]:"{Region}"}]},[va]:{}},Wc={[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:Ha,[ya]:"{Region}"}]},Hc={[aa]:Sa,[ca]:[{[ua]:"UseGlobalEndpoint"},!1]},Kc={[aa]:Sa,[ca]:[{[ua]:"UseDualStack"},!1]},Vc={[la]:"https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},Qc={[aa]:Sa,[ca]:[{[ua]:"UseFIPS"},!1]},Gc={[la]:"https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},Jc={[la]:"https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},Xc={[aa]:Sa,[ca]:[{[aa]:Ta,[ca]:[kc,"isIp"]},!1]},Zc={[la]:Ka,[ha]:Wc,[va]:{}},Yc={[la]:Fa,[ha]:Wc,[va]:{}},eu={[Ia]:Yc,[oa]:Ia},tu={[la]:Va,[ha]:Wc,[va]:{}},ru={[la]:"https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},nu={[Ea]:"Invalid region: region was not a valid DNS name.",[oa]:Ea},iu={[ua]:Ja},ou={[ua]:Xa},su={[aa]:Ta,[ca]:[iu,"service"]},au={[ua]:ec},cu={[sa]:[fc],[Ea]:"S3 Object Lambda does not support Dual-stack",[oa]:Ea},uu={[sa]:[lc],[Ea]:"S3 Object Lambda does not support S3 Accelerate",[oa]:Ea},du={[sa]:[{[aa]:ka,[ca]:[{[ua]:"DisableAccessPoints"}]},{[aa]:Sa,[ca]:[{[ua]:"DisableAccessPoints"},!0]}],[Ea]:"Access points are not supported for this operation",[oa]:Ea},lu={[sa]:[{[aa]:ka,[ca]:[{[ua]:"UseArnRegion"}]},{[aa]:Sa,[ca]:[{[ua]:"UseArnRegion"},!1]},{[aa]:$a,[ca]:[{[aa]:Aa,[ca]:[{[aa]:Ta,[ca]:[iu,"region"]},"{Region}"]}]}],[Ea]:"Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`",[oa]:Ea},hu={[aa]:Ta,[ca]:[{[ua]:"bucketPartition"},Ca]},fu={[aa]:Ta,[ca]:[iu,"accountId"]},pu={[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:Za,[ya]:"{bucketArn#region}"}]},gu={[Ea]:"Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName}`",[oa]:Ea},mu={[Ea]:"Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`",[oa]:Ea},yu={[Ea]:"Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)",[oa]:Ea},vu={[Ea]:"Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`",[oa]:Ea},bu={[Ea]:"Invalid ARN: The ARN may only contain a single resource component after `accesspoint`.",[oa]:Ea},wu={[Ea]:"Invalid ARN: Expected a resource of the format `accesspoint:` but no name was provided",[oa]:Ea},ku={[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:Ha,[ya]:"{bucketArn#region}"}]},Su={[pa]:[{[ga]:!0,[Ca]:qa,[ma]:Wa,[ba]:["*"]},{[ga]:!0,[Ca]:"sigv4",[ma]:Wa,[ya]:"{bucketArn#region}"}]},Eu={[aa]:Ga,[ca]:[vc]},xu={[la]:"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Wc,[va]:{}},Au={[la]:"https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Wc,[va]:{}},Tu={[la]:"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Wc,[va]:{}},Cu={[la]:oc,[ha]:Wc,[va]:{}},Ru={[la]:"https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Wc,[va]:{}},_u={[ua]:"UseObjectLambdaEndpoint"},Ou={[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:Za,[ya]:"{Region}"}]},Pu={[la]:"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},Iu={[la]:"https://s3-fips.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},Mu={[la]:"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},Nu={[la]:Ua,[ha]:Wc,[va]:{}},Fu={[la]:"https://s3.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},$u=[{[ua]:"Region"}],Uu=[{[ua]:"Endpoint"}],Lu=[vc],Du=[fc],Bu=[lc],zu=[pc,bc],ju=[{[aa]:ka,[ca]:[{[ua]:"DisableS3ExpressSessionAuth"}]},{[aa]:Sa,[ca]:[{[ua]:"DisableS3ExpressSessionAuth"},!0]}],qu=[wc],Wu=[Sc],Hu=[Ac],Ku=[hc],Vu=[{[aa]:Ra,[ca]:[vc,6,14,!0],[da]:"s3expressAvailabilityZoneId"},{[aa]:Ra,[ca]:[vc,14,16,!0],[da]:"s3expressAvailabilityZoneDelim"},{[aa]:Aa,[ca]:[{[ua]:"s3expressAvailabilityZoneDelim"},"--"]}],Qu=[{[sa]:[hc],[Ia]:{[la]:"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[ha]:Ec,[va]:{}},[oa]:Ia},{[Ia]:{[la]:"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[ha]:Ec,[va]:{}},[oa]:Ia}],Gu=[{[aa]:Ra,[ca]:[vc,6,15,!0],[da]:"s3expressAvailabilityZoneId"},{[aa]:Ra,[ca]:[vc,15,17,!0],[da]:"s3expressAvailabilityZoneDelim"},{[aa]:Aa,[ca]:[{[ua]:"s3expressAvailabilityZoneDelim"},"--"]}],Ju=[{[sa]:[hc],[Ia]:{[la]:"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[ha]:Cc,[va]:{}},[oa]:Ia},{[Ia]:{[la]:"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[ha]:Cc,[va]:{}},[oa]:Ia}],Xu=[yc],Zu=[{[aa]:ja,[ca]:[{[ua]:za},!1]}],Yu=[{[aa]:Aa,[ca]:[{[ua]:Da},"beta"]}],ed=[gc],td=[{[aa]:ja,[ca]:[{[ua]:"Region"},!1]}],rd=[{[aa]:Aa,[ca]:[{[ua]:"Region"},"us-east-1"]}],nd=[{[aa]:Aa,[ca]:[ou,Ya]}],id=[{[aa]:Ta,[ca]:[iu,"resourceId[1]"],[da]:ec},{[aa]:$a,[ca]:[{[aa]:Aa,[ca]:[au,""]}]}],od=[iu,"resourceId[1]"],sd=[{[aa]:$a,[ca]:[{[aa]:Aa,[ca]:[{[aa]:Ta,[ca]:[iu,"region"]},""]}]}],ad=[{[aa]:$a,[ca]:[{[aa]:ka,[ca]:[{[aa]:Ta,[ca]:[iu,"resourceId[2]"]}]}]}],cd=[iu,"resourceId[2]"],ud=[{[aa]:xa,[ca]:[{[aa]:Ta,[ca]:[iu,"region"]}],[da]:"bucketPartition"}],dd=[{[aa]:Aa,[ca]:[hu,{[aa]:Ta,[ca]:[{[ua]:"partitionResult"},Ca]}]}],ld=[{[aa]:ja,[ca]:[{[aa]:Ta,[ca]:[iu,"region"]},!0]}],hd=[{[aa]:ja,[ca]:[fu,!1]}],fd=[{[aa]:ja,[ca]:[au,!1]}],pd=[{[aa]:ja,[ca]:[{[ua]:"Region"},!0]}],gd={version:"1.0",parameters:{Bucket:cc,Region:cc,UseFIPS:uc,UseDualStack:uc,Endpoint:cc,ForcePathStyle:uc,Accelerate:uc,UseGlobalEndpoint:uc,UseObjectLambdaEndpoint:dc,Key:cc,Prefix:cc,CopySource:cc,DisableAccessPoints:dc,DisableMultiRegionAccessPoints:uc,UseArnRegion:dc,UseS3ExpressControlEndpoint:dc,DisableS3ExpressSessionAuth:dc},rules:[{[sa]:[{[aa]:ka,[ca]:$u}],rules:[{[sa]:[lc,hc],error:"Accelerate cannot be used with FIPS",[oa]:Ea},{[sa]:[fc,pc],error:"Cannot set dual-stack in combination with a custom endpoint.",[oa]:Ea},{[sa]:[pc,hc],error:"A custom endpoint cannot be combined with FIPS",[oa]:Ea},{[sa]:[pc,lc],error:"A custom endpoint cannot be combined with S3 Accelerate",[oa]:Ea},{[sa]:[hc,gc,mc],error:"Partition does not support FIPS",[oa]:Ea},{[sa]:[yc,{[aa]:Ra,[ca]:[vc,0,6,wa],[da]:_a},{[aa]:Aa,[ca]:[{[ua]:_a},"--x-s3"]}],rules:[{[sa]:Du,error:"S3Express does not support Dual-stack.",[oa]:Ea},{[sa]:Bu,error:"S3Express does not support S3 Accelerate.",[oa]:Ea},{[sa]:zu,rules:[{[sa]:ju,rules:[{[sa]:qu,rules:[{[sa]:Wu,rules:[{endpoint:{[la]:Pa,[ha]:Ec,[va]:xc},[oa]:Ia}],[oa]:Ma}],[oa]:Ma},{[sa]:Hu,rules:[{endpoint:{[la]:Fa,[ha]:Ec,[va]:xc},[oa]:Ia}],[oa]:Ma},Tc],[oa]:Ma},{[sa]:qu,rules:[{[sa]:Wu,rules:[{endpoint:{[la]:Pa,[ha]:Cc,[va]:xc},[oa]:Ia}],[oa]:Ma}],[oa]:Ma},{[sa]:Hu,rules:[{endpoint:{[la]:Fa,[ha]:Cc,[va]:xc},[oa]:Ia}],[oa]:Ma},Tc],[oa]:Ma},{[sa]:[Rc,_c],rules:[{[sa]:[Sc,Oc],rules:[{[sa]:Ku,endpoint:{[la]:"https://s3express-control-fips.{Region}.amazonaws.com/{uri_encoded_bucket}",[ha]:Ec,[va]:xc},[oa]:Ia},{endpoint:{[la]:"https://s3express-control.{Region}.amazonaws.com/{uri_encoded_bucket}",[ha]:Ec,[va]:xc},[oa]:Ia}],[oa]:Ma}],[oa]:Ma},{[sa]:Hu,rules:[{[sa]:ju,rules:[{[sa]:Vu,rules:Qu,[oa]:Ma},{[sa]:Gu,rules:Qu,[oa]:Ma},Pc],[oa]:Ma},{[sa]:Vu,rules:Ju,[oa]:Ma},{[sa]:Gu,rules:Ju,[oa]:Ma},Pc],[oa]:Ma},Tc],[oa]:Ma},{[sa]:[Ic,Rc,_c],rules:[{[sa]:zu,endpoint:{[la]:Ua,[ha]:Ec,[va]:xc},[oa]:Ia},{[sa]:Ku,endpoint:{[la]:"https://s3express-control-fips.{Region}.amazonaws.com",[ha]:Ec,[va]:xc},[oa]:Ia},{endpoint:{[la]:"https://s3express-control.{Region}.amazonaws.com",[ha]:Ec,[va]:xc},[oa]:Ia}],[oa]:Ma},{[sa]:[yc,{[aa]:Ra,[ca]:[vc,49,50,wa],[da]:La},{[aa]:Ra,[ca]:[vc,8,12,wa],[da]:Da},{[aa]:Ra,[ca]:[vc,0,7,wa],[da]:Ba},{[aa]:Ra,[ca]:[vc,32,49,wa],[da]:za},{[aa]:xa,[ca]:$u,[da]:"regionPartition"},{[aa]:Aa,[ca]:[{[ua]:Ba},"--op-s3"]}],rules:[{[sa]:Zu,rules:[{[sa]:[{[aa]:Aa,[ca]:[Mc,"e"]}],rules:[{[sa]:Yu,rules:[Nc,{[sa]:zu,endpoint:{[la]:"https://{Bucket}.ec2.{url#authority}",[ha]:Fc,[va]:xc},[oa]:Ia}],[oa]:Ma},{endpoint:{[la]:"https://{Bucket}.ec2.s3-outposts.{Region}.{regionPartition#dnsSuffix}",[ha]:Fc,[va]:xc},[oa]:Ia}],[oa]:Ma},{[sa]:[{[aa]:Aa,[ca]:[Mc,"o"]}],rules:[{[sa]:Yu,rules:[Nc,{[sa]:zu,endpoint:{[la]:"https://{Bucket}.op-{outpostId}.{url#authority}",[ha]:Fc,[va]:xc},[oa]:Ia}],[oa]:Ma},{endpoint:{[la]:"https://{Bucket}.op-{outpostId}.s3-outposts.{Region}.{regionPartition#dnsSuffix}",[ha]:Fc,[va]:xc},[oa]:Ia}],[oa]:Ma},{error:'Unrecognized hardware type: "Expected hardware type o or e but got {hardwareType}"',[oa]:Ea}],[oa]:Ma},{error:"Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`.",[oa]:Ea}],[oa]:Ma},{[sa]:Xu,rules:[{[sa]:[pc,{[aa]:$a,[ca]:[{[aa]:ka,[ca]:[{[aa]:Oa,[ca]:Uu}]}]}],error:"Custom endpoint `{Endpoint}` was not a valid URI",[oa]:Ea},{[sa]:[$c,Ac],rules:[{[sa]:ed,rules:[{[sa]:td,rules:[{[sa]:[lc,mc],error:"S3 Accelerate cannot be used in this region",[oa]:Ea},{[sa]:[fc,hc,Lc,Oc,Dc],endpoint:{[la]:"https://{Bucket}.s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[fc,hc,Lc,Oc,zc,jc],rules:[{endpoint:qc,[oa]:Ia}],[oa]:Ma},{[sa]:[fc,hc,Lc,Oc,zc,Hc],endpoint:qc,[oa]:Ia},{[sa]:[Kc,hc,Lc,Oc,Dc],endpoint:{[la]:"https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,hc,Lc,Oc,zc,jc],rules:[{endpoint:Vc,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,hc,Lc,Oc,zc,Hc],endpoint:Vc,[oa]:Ia},{[sa]:[fc,Qc,lc,Oc,Dc],endpoint:{[la]:"https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[fc,Qc,lc,Oc,zc,jc],rules:[{endpoint:Gc,[oa]:Ia}],[oa]:Ma},{[sa]:[fc,Qc,lc,Oc,zc,Hc],endpoint:Gc,[oa]:Ia},{[sa]:[fc,Qc,Lc,Oc,Dc],endpoint:{[la]:"https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[fc,Qc,Lc,Oc,zc,jc],rules:[{endpoint:Jc,[oa]:Ia}],[oa]:Ma},{[sa]:[fc,Qc,Lc,Oc,zc,Hc],endpoint:Jc,[oa]:Ia},{[sa]:[Kc,Qc,Lc,pc,bc,wc,Dc],endpoint:{[la]:Ka,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,Qc,Lc,pc,bc,Xc,Dc],endpoint:{[la]:Fa,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,Qc,Lc,pc,bc,wc,zc,jc],rules:[{[sa]:rd,endpoint:Zc,[oa]:Ia},{endpoint:Zc,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,Qc,Lc,pc,bc,Xc,zc,jc],rules:[{[sa]:rd,endpoint:Yc,[oa]:Ia},eu],[oa]:Ma},{[sa]:[Kc,Qc,Lc,pc,bc,wc,zc,Hc],endpoint:Zc,[oa]:Ia},{[sa]:[Kc,Qc,Lc,pc,bc,Xc,zc,Hc],endpoint:Yc,[oa]:Ia},{[sa]:[Kc,Qc,lc,Oc,Dc],endpoint:{[la]:Va,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,Qc,lc,Oc,zc,jc],rules:[{[sa]:rd,endpoint:tu,[oa]:Ia},{endpoint:tu,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,Qc,lc,Oc,zc,Hc],endpoint:tu,[oa]:Ia},{[sa]:[Kc,Qc,Lc,Oc,Dc],endpoint:{[la]:Qa,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,Qc,Lc,Oc,zc,jc],rules:[{[sa]:rd,endpoint:{[la]:Qa,[ha]:Wc,[va]:xc},[oa]:Ia},{endpoint:ru,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,Qc,Lc,Oc,zc,Hc],endpoint:ru,[oa]:Ia}],[oa]:Ma},nu],[oa]:Ma}],[oa]:Ma},{[sa]:[pc,bc,{[aa]:Aa,[ca]:[{[aa]:Ta,[ca]:[kc,"scheme"]},"http"]},{[aa]:Na,[ca]:[vc,wa]},$c,Qc,Kc,Lc],rules:[{[sa]:ed,rules:[{[sa]:td,rules:[eu],[oa]:Ma},nu],[oa]:Ma}],[oa]:Ma},{[sa]:[$c,{[aa]:Ga,[ca]:Lu,[da]:Ja}],rules:[{[sa]:[{[aa]:Ta,[ca]:[iu,"resourceId[0]"],[da]:Xa},{[aa]:$a,[ca]:[{[aa]:Aa,[ca]:[ou,""]}]}],rules:[{[sa]:[{[aa]:Aa,[ca]:[su,Za]}],rules:[{[sa]:nd,rules:[{[sa]:id,rules:[cu,uu,{[sa]:sd,rules:[du,{[sa]:ad,rules:[lu,{[sa]:ud,rules:[{[sa]:ed,rules:[{[sa]:dd,rules:[{[sa]:ld,rules:[{[sa]:[{[aa]:Aa,[ca]:[fu,""]}],error:"Invalid ARN: Missing account id",[oa]:Ea},{[sa]:hd,rules:[{[sa]:fd,rules:[{[sa]:zu,endpoint:{[la]:tc,[ha]:pu,[va]:xc},[oa]:Ia},{[sa]:Ku,endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:pu,[va]:xc},[oa]:Ia},{endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:pu,[va]:xc},[oa]:Ia}],[oa]:Ma},gu],[oa]:Ma},mu],[oa]:Ma},yu],[oa]:Ma},vu],[oa]:Ma}],[oa]:Ma}],[oa]:Ma},bu],[oa]:Ma},{error:"Invalid ARN: bucket ARN is missing a region",[oa]:Ea}],[oa]:Ma},wu],[oa]:Ma},{error:"Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `{arnType}`",[oa]:Ea}],[oa]:Ma},{[sa]:nd,rules:[{[sa]:id,rules:[{[sa]:sd,rules:[{[sa]:nd,rules:[{[sa]:sd,rules:[du,{[sa]:ad,rules:[lu,{[sa]:ud,rules:[{[sa]:ed,rules:[{[sa]:[{[aa]:Aa,[ca]:[hu,"{partitionResult#name}"]}],rules:[{[sa]:ld,rules:[{[sa]:[{[aa]:Aa,[ca]:[su,Ha]}],rules:[{[sa]:hd,rules:[{[sa]:fd,rules:[{[sa]:Bu,error:"Access Points do not support S3 Accelerate",[oa]:Ea},{[sa]:[hc,fc],endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:ku,[va]:xc},[oa]:Ia},{[sa]:[hc,Kc],endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:ku,[va]:xc},[oa]:Ia},{[sa]:[Qc,fc],endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:ku,[va]:xc},[oa]:Ia},{[sa]:[Qc,Kc,pc,bc],endpoint:{[la]:tc,[ha]:ku,[va]:xc},[oa]:Ia},{[sa]:[Qc,Kc],endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:ku,[va]:xc},[oa]:Ia}],[oa]:Ma},gu],[oa]:Ma},mu],[oa]:Ma},{error:"Invalid ARN: The ARN was not for the S3 service, found: {bucketArn#service}",[oa]:Ea}],[oa]:Ma},yu],[oa]:Ma},vu],[oa]:Ma}],[oa]:Ma}],[oa]:Ma},bu],[oa]:Ma}],[oa]:Ma}],[oa]:Ma},{[sa]:[{[aa]:ja,[ca]:[au,wa]}],rules:[{[sa]:Du,error:"S3 MRAP does not support dual-stack",[oa]:Ea},{[sa]:Ku,error:"S3 MRAP does not support FIPS",[oa]:Ea},{[sa]:Bu,error:"S3 MRAP does not support S3 Accelerate",[oa]:Ea},{[sa]:[{[aa]:Sa,[ca]:[{[ua]:"DisableMultiRegionAccessPoints"},wa]}],error:"Invalid configuration: Multi-Region Access Point ARNs are disabled.",[oa]:Ea},{[sa]:[{[aa]:xa,[ca]:$u,[da]:rc}],rules:[{[sa]:[{[aa]:Aa,[ca]:[{[aa]:Ta,[ca]:[{[ua]:rc},Ca]},{[aa]:Ta,[ca]:[iu,"partition"]}]}],rules:[{endpoint:{[la]:"https://{accessPointName}.accesspoint.s3-global.{mrapPartition#dnsSuffix}",[ha]:{[pa]:[{[ga]:wa,name:qa,[ma]:Ha,[ba]:["*"]}]},[va]:xc},[oa]:Ia}],[oa]:Ma},{error:"Client was configured for partition `{mrapPartition#name}` but bucket referred to partition `{bucketArn#partition}`",[oa]:Ea}],[oa]:Ma}],[oa]:Ma},{error:"Invalid Access Point Name",[oa]:Ea}],[oa]:Ma},wu],[oa]:Ma},{[sa]:[{[aa]:Aa,[ca]:[su,Wa]}],rules:[{[sa]:Du,error:"S3 Outposts does not support Dual-stack",[oa]:Ea},{[sa]:Ku,error:"S3 Outposts does not support FIPS",[oa]:Ea},{[sa]:Bu,error:"S3 Outposts does not support S3 Accelerate",[oa]:Ea},{[sa]:[{[aa]:ka,[ca]:[{[aa]:Ta,[ca]:[iu,"resourceId[4]"]}]}],error:"Invalid Arn: Outpost Access Point ARN contains sub resources",[oa]:Ea},{[sa]:[{[aa]:Ta,[ca]:od,[da]:za}],rules:[{[sa]:Zu,rules:[lu,{[sa]:ud,rules:[{[sa]:ed,rules:[{[sa]:dd,rules:[{[sa]:ld,rules:[{[sa]:hd,rules:[{[sa]:[{[aa]:Ta,[ca]:cd,[da]:nc}],rules:[{[sa]:[{[aa]:Ta,[ca]:[iu,"resourceId[3]"],[da]:ec}],rules:[{[sa]:[{[aa]:Aa,[ca]:[{[ua]:nc},Ya]}],rules:[{[sa]:zu,endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.{url#authority}",[ha]:Su,[va]:xc},[oa]:Ia},{endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.s3-outposts.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:Su,[va]:xc},[oa]:Ia}],[oa]:Ma},{error:"Expected an outpost type `accesspoint`, found {outpostType}",[oa]:Ea}],[oa]:Ma},{error:"Invalid ARN: expected an access point name",[oa]:Ea}],[oa]:Ma},{error:"Invalid ARN: Expected a 4-component resource",[oa]:Ea}],[oa]:Ma},mu],[oa]:Ma},yu],[oa]:Ma},vu],[oa]:Ma}],[oa]:Ma}],[oa]:Ma},{error:"Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `{outpostId}`",[oa]:Ea}],[oa]:Ma},{error:"Invalid ARN: The Outpost Id was not set",[oa]:Ea}],[oa]:Ma},{error:"Invalid ARN: Unrecognized format: {Bucket} (type: {arnType})",[oa]:Ea}],[oa]:Ma},{error:"Invalid ARN: No ARN type specified",[oa]:Ea}],[oa]:Ma},{[sa]:[{[aa]:Ra,[ca]:[vc,0,4,!1],[da]:ic},{[aa]:Aa,[ca]:[{[ua]:ic},"arn:"]},{[aa]:$a,[ca]:[{[aa]:ka,[ca]:[Eu]}]}],error:"Invalid ARN: `{Bucket}` was not a valid ARN",[oa]:Ea},{[sa]:[{[aa]:Sa,[ca]:[Uc,wa]},Eu],error:"Path-style addressing cannot be used with ARN buckets",[oa]:Ea},{[sa]:Wu,rules:[{[sa]:ed,rules:[{[sa]:[Lc],rules:[{[sa]:[fc,Oc,hc,Dc],endpoint:{[la]:"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[fc,Oc,hc,zc,jc],rules:[{endpoint:xu,[oa]:Ia}],[oa]:Ma},{[sa]:[fc,Oc,hc,zc,Hc],endpoint:xu,[oa]:Ia},{[sa]:[Kc,Oc,hc,Dc],endpoint:{[la]:"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,Oc,hc,zc,jc],rules:[{endpoint:Au,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,Oc,hc,zc,Hc],endpoint:Au,[oa]:Ia},{[sa]:[fc,Oc,Qc,Dc],endpoint:{[la]:"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[fc,Oc,Qc,zc,jc],rules:[{endpoint:Tu,[oa]:Ia}],[oa]:Ma},{[sa]:[fc,Oc,Qc,zc,Hc],endpoint:Tu,[oa]:Ia},{[sa]:[Kc,pc,bc,Qc,Dc],endpoint:{[la]:oc,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,pc,bc,Qc,zc,jc],rules:[{[sa]:rd,endpoint:Cu,[oa]:Ia},{endpoint:Cu,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,pc,bc,Qc,zc,Hc],endpoint:Cu,[oa]:Ia},{[sa]:[Kc,Oc,Qc,Dc],endpoint:{[la]:sc,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,Oc,Qc,zc,jc],rules:[{[sa]:rd,endpoint:{[la]:sc,[ha]:Wc,[va]:xc},[oa]:Ia},{endpoint:Ru,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,Oc,Qc,zc,Hc],endpoint:Ru,[oa]:Ia}],[oa]:Ma},{error:"Path-style addressing cannot be used with S3 Accelerate",[oa]:Ea}],[oa]:Ma}],[oa]:Ma}],[oa]:Ma},{[sa]:[{[aa]:ka,[ca]:[_u]},{[aa]:Sa,[ca]:[_u,wa]}],rules:[{[sa]:ed,rules:[{[sa]:pd,rules:[cu,uu,{[sa]:zu,endpoint:{[la]:Ua,[ha]:Ou,[va]:xc},[oa]:Ia},{[sa]:Ku,endpoint:{[la]:"https://s3-object-lambda-fips.{Region}.{partitionResult#dnsSuffix}",[ha]:Ou,[va]:xc},[oa]:Ia},{endpoint:{[la]:"https://s3-object-lambda.{Region}.{partitionResult#dnsSuffix}",[ha]:Ou,[va]:xc},[oa]:Ia}],[oa]:Ma},nu],[oa]:Ma}],[oa]:Ma},{[sa]:[Ic],rules:[{[sa]:ed,rules:[{[sa]:pd,rules:[{[sa]:[hc,fc,Oc,Dc],endpoint:{[la]:"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[hc,fc,Oc,zc,jc],rules:[{endpoint:Pu,[oa]:Ia}],[oa]:Ma},{[sa]:[hc,fc,Oc,zc,Hc],endpoint:Pu,[oa]:Ia},{[sa]:[hc,Kc,Oc,Dc],endpoint:{[la]:"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[hc,Kc,Oc,zc,jc],rules:[{endpoint:Iu,[oa]:Ia}],[oa]:Ma},{[sa]:[hc,Kc,Oc,zc,Hc],endpoint:Iu,[oa]:Ia},{[sa]:[Qc,fc,Oc,Dc],endpoint:{[la]:"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Qc,fc,Oc,zc,jc],rules:[{endpoint:Mu,[oa]:Ia}],[oa]:Ma},{[sa]:[Qc,fc,Oc,zc,Hc],endpoint:Mu,[oa]:Ia},{[sa]:[Qc,Kc,pc,bc,Dc],endpoint:{[la]:Ua,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Qc,Kc,pc,bc,zc,jc],rules:[{[sa]:rd,endpoint:Nu,[oa]:Ia},{endpoint:Nu,[oa]:Ia}],[oa]:Ma},{[sa]:[Qc,Kc,pc,bc,zc,Hc],endpoint:Nu,[oa]:Ia},{[sa]:[Qc,Kc,Oc,Dc],endpoint:{[la]:ac,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Qc,Kc,Oc,zc,jc],rules:[{[sa]:rd,endpoint:{[la]:ac,[ha]:Wc,[va]:xc},[oa]:Ia},{endpoint:Fu,[oa]:Ia}],[oa]:Ma},{[sa]:[Qc,Kc,Oc,zc,Hc],endpoint:Fu,[oa]:Ia}],[oa]:Ma},nu],[oa]:Ma}],[oa]:Ma}],[oa]:Ma},{error:"A region must be set when sending requests to S3.",[oa]:Ea}]},md=new class{constructor({size:e,params:t}){this.data=new Map,this.parameters=[],this.capacity=e??50,t&&(this.parameters=t)}get(e,t){const r=this.hash(e);if(!1===r)return t();if(!this.data.has(r)){if(this.data.size>this.capacity+10){const e=this.data.keys();let t=0;for(;;){const{value:r,done:n}=e.next();if(this.data.delete(r),n||++t>10)break}}this.data.set(r,t())}return this.data.get(r)}size(){return this.data.size}hash(e){let t="";const{parameters:r}=this;if(0===r.length)return!1;for(const n of r){const r=String(e[n]??"");if(r.includes("|;"))return!1;t+=r+"|;"}return t}}({size:50,params:["Accelerate","Bucket","DisableAccessPoints","DisableMultiRegionAccessPoints","DisableS3ExpressSessionAuth","Endpoint","ForcePathStyle","Region","UseArnRegion","UseDualStack","UseFIPS","UseGlobalEndpoint","UseObjectLambdaEndpoint","UseS3ExpressControlEndpoint"]}),yd=(e,t={})=>md.get(e,(()=>((e,t)=>{const{endpointParams:r,logger:n}=t,{parameters:i,rules:o}=e;t.logger?.debug?.(`${Uo} Initial EndpointParams: ${Lo(r)}`);const s=Object.entries(i).filter((([,e])=>null!=e.default)).map((([e,t])=>[e,t.default]));if(s.length>0)for(const[e,t]of s)r[e]=r[e]??t;const a=Object.entries(i).filter((([,e])=>e.required)).map((([e])=>e));for(const e of a)if(null==r[e])throw new Do(`Missing required parameter: '${e}'`);const c=ts(o,{endpointParams:r,logger:n,referenceRecord:{}});return t.logger?.debug?.(`${Uo} Resolved endpoint: ${Lo(c)}`),c})(gd,{endpointParams:e,logger:t.logger})));$o.aws=is;const vd=(bd=async(e,t,r)=>({operation:he(t).operation,region:await fe(e.region)()||(()=>{throw new Error("expected `region` to be configured for `aws.auth#sigv4`")})()}),async(e,t,r)=>{if(!r)throw new Error("Could not find `input` for `defaultEndpointRuleSetHttpAuthSchemeParametersProvider`");const n=await bd(e,t,r),i=he(t)?.commandInstance?.constructor?.getEndpointParameterInstructions;if(!i)throw new Error(`getEndpointParameterInstructions() is not defined on \`${t.commandName}\``);const o=await Cs(r,{getEndpointParameterInstructions:i},e);return Object.assign(n,o)});var bd;function wd(e){return{schemeId:"aws.auth#sigv4",signingProperties:{name:"s3",region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}function kd(e){return{schemeId:"aws.auth#sigv4a",signingProperties:{name:"s3",region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}const Sd=((e,t,r)=>n=>{const i=e(n),o=i.properties?.authSchemes;if(!o)return t(n);const s=[];for(const e of o){const{name:t,properties:i={},...a}=e,c=t.toLowerCase();let u;if(t!==c&&console.warn(`HttpAuthScheme has been normalized with lowercasing: \`${t}\` to \`${c}\``),"sigv4a"===c){u="aws.auth#sigv4a";const e=o.find((e=>{const t=e.name.toLowerCase();return"sigv4a"!==t&&t.startsWith("sigv4")}));if(e)continue}else{if(!c.startsWith("sigv4"))throw new Error(`Unknown HttpAuthScheme found in \`@smithy.rules#endpointRuleSet\`: \`${c}\``);u="aws.auth#sigv4"}const d=r[u];if(!d)throw new Error(`Could not find HttpAuthOption create function for \`${u}\``);const l=d(n);l.schemeId=u,l.signingProperties={...l.signingProperties||{},...a,...i},s.push(l)}return s})(yd,(e=>{const t=[];return e.operation,t.push(wd(e)),t.push(kd(e)),t}),{"aws.auth#sigv4":wd,"aws.auth#sigv4a":kd}),Ed=e=>{const t=(e=>(e.sigv4aSigningRegionSet=Ee(e.sigv4aSigningRegionSet),e))(Ut(e));return{...t}},xd={ForcePathStyle:{type:"clientContextParams",name:"forcePathStyle"},UseArnRegion:{type:"clientContextParams",name:"useArnRegion"},DisableMultiRegionAccessPoints:{type:"clientContextParams",name:"disableMultiregionAccessPoints"},Accelerate:{type:"clientContextParams",name:"useAccelerateEndpoint"},DisableS3ExpressSessionAuth:{type:"clientContextParams",name:"disableS3ExpressSessionAuth"},UseGlobalEndpoint:{type:"builtInParams",name:"useGlobalEndpoint"},UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}};class Ad extends Ir{constructor(e){super(e),Object.setPrototypeOf(this,Ad.prototype)}}class Td extends Ad{constructor(e){super({name:"NoSuchUpload",$fault:"client",...e}),this.name="NoSuchUpload",this.$fault="client",Object.setPrototypeOf(this,Td.prototype)}}class Cd extends Ad{constructor(e){super({name:"ObjectNotInActiveTierError",$fault:"client",...e}),this.name="ObjectNotInActiveTierError",this.$fault="client",Object.setPrototypeOf(this,Cd.prototype)}}class Rd extends Ad{constructor(e){super({name:"BucketAlreadyExists",$fault:"client",...e}),this.name="BucketAlreadyExists",this.$fault="client",Object.setPrototypeOf(this,Rd.prototype)}}class _d extends Ad{constructor(e){super({name:"BucketAlreadyOwnedByYou",$fault:"client",...e}),this.name="BucketAlreadyOwnedByYou",this.$fault="client",Object.setPrototypeOf(this,_d.prototype)}}class Od extends Ad{constructor(e){super({name:"NoSuchBucket",$fault:"client",...e}),this.name="NoSuchBucket",this.$fault="client",Object.setPrototypeOf(this,Od.prototype)}}var Pd,Id;!function(e){e.visit=(e,t)=>void 0!==e.Prefix?t.Prefix(e.Prefix):void 0!==e.Tag?t.Tag(e.Tag):void 0!==e.And?t.And(e.And):t._(e.$unknown[0],e.$unknown[1])}(Pd||(Pd={})),function(e){e.visit=(e,t)=>void 0!==e.Prefix?t.Prefix(e.Prefix):void 0!==e.Tag?t.Tag(e.Tag):void 0!==e.AccessPointArn?t.AccessPointArn(e.AccessPointArn):void 0!==e.And?t.And(e.And):t._(e.$unknown[0],e.$unknown[1])}(Id||(Id={}));class Md extends Ad{constructor(e){super({name:"InvalidObjectState",$fault:"client",...e}),this.name="InvalidObjectState",this.$fault="client",Object.setPrototypeOf(this,Md.prototype),this.StorageClass=e.StorageClass,this.AccessTier=e.AccessTier}}class Nd extends Ad{constructor(e){super({name:"NoSuchKey",$fault:"client",...e}),this.name="NoSuchKey",this.$fault="client",Object.setPrototypeOf(this,Nd.prototype)}}class Fd extends Ad{constructor(e){super({name:"NotFound",$fault:"client",...e}),this.name="NotFound",this.$fault="client",Object.setPrototypeOf(this,Fd.prototype)}}const $d=e=>({...e,...e.SecretAccessKey&&{SecretAccessKey:Kt},...e.SessionToken&&{SessionToken:Kt}}),Ud=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Kt},...e.Credentials&&{Credentials:$d(e.Credentials)}}),Ld=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Kt}}),Dd=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt}}),Bd=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:Kt}});class zd extends Ad{constructor(e){super({name:"EncryptionTypeMismatch",$fault:"client",...e}),this.name="EncryptionTypeMismatch",this.$fault="client",Object.setPrototypeOf(this,zd.prototype)}}class jd extends Ad{constructor(e){super({name:"InvalidRequest",$fault:"client",...e}),this.name="InvalidRequest",this.$fault="client",Object.setPrototypeOf(this,jd.prototype)}}class qd extends Ad{constructor(e){super({name:"InvalidWriteOffset",$fault:"client",...e}),this.name="InvalidWriteOffset",this.$fault="client",Object.setPrototypeOf(this,qd.prototype)}}class Wd extends Ad{constructor(e){super({name:"TooManyParts",$fault:"client",...e}),this.name="TooManyParts",this.$fault="client",Object.setPrototypeOf(this,Wd.prototype)}}class Hd extends Ad{constructor(e){super({name:"ObjectAlreadyInActiveTierError",$fault:"client",...e}),this.name="ObjectAlreadyInActiveTierError",this.$fault="client",Object.setPrototypeOf(this,Hd.prototype)}}var Kd;!function(e){e.visit=(e,t)=>void 0!==e.Records?t.Records(e.Records):void 0!==e.Stats?t.Stats(e.Stats):void 0!==e.Progress?t.Progress(e.Progress):void 0!==e.Cont?t.Cont(e.Cont):void 0!==e.End?t.End(e.End):t._(e.$unknown[0],e.$unknown[1])}(Kd||(Kd={}));const Vd=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Kt}}),Qd=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:Kt},...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Kt}}),Gd=async(e,t)=>{const r=Ye(e,t),n=Vr({},Wr,{[rp]:e[Yh],[Tp]:e[ef],[Cp]:e[sf],[_p]:e[of],[Rp]:[()=>Wr(e[Ml]),()=>e[Ml].toString()]});r.bp("/"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1);const i=Vr({[Kf]:[,""]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Jd=async(e,t)=>{const r=Ye(e,t),n=Vr({},Wr,{[hp]:e[xh],[Sp]:e[Kh],[Jf]:[()=>Wr(e[Il]),()=>e[Il].toString()],[op]:e[rh],[Of]:e[fh],[dp]:[()=>Wr(e[ph]),()=>pr(e[ph]).toString()],[lp]:[()=>Wr(e[gh]),()=>e[gh].toString()]});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=Vr({[Lp]:[,"DeleteObject"],[Qf]:[,e[lf]]});return r.m("DELETE").h(n).q(i).b(undefined),r.build()},Xd=async(e,t)=>{const r=Ye(e,t),n=Vr({},Wr,{[Of]:e[fh],[Pf]:[()=>Wr(e[mh]),()=>pr(e[mh]).toString()],[If]:e[yh],[Mf]:[()=>Wr(e[wh]),()=>pr(e[wh]).toString()],[Df]:e[Uh],[Op]:e[tf],[Pp]:e[rf],[Ip]:e[nf],[Sp]:e[Kh],[op]:e[rh],[Yf]:e[ql]});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=Vr({[Lp]:[,"GetObject"],[Bf]:[,e[Dh]],[zf]:[,e[Bh]],[jf]:[,e[zh]],[qf]:[,e[jh]],[Wf]:[,e[qh]],[Hf]:[()=>void 0!==e.ResponseExpires,()=>pr(e[Wh]).toString()],[Qf]:[,e[lf]],[Uf]:[()=>void 0!==e.PartNumber,()=>e[$h].toString()]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Zd=async(e,t)=>{const r=Ye(e,t),n=Vr({},Wr,{[Sp]:e[Kh],[op]:e[rh],[vp]:[()=>Wr(e[Mh]),()=>(e[Mh]||[]).map(Zr).join(", ")]});r.bp("/"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1);const i=Vr({[Ff]:[,"2"],[xf]:[,e[Zl]],[Tf]:[,e[ih]],[$f]:[()=>void 0!==e.MaxKeys,()=>e[Ah].toString()],[Lf]:[,e[Nh]],[Ef]:[,e[Jl]],[_f]:[()=>void 0!==e.FetchOwner,()=>e[ah].toString()],[Vf]:[,e[Jh]]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Yd=async(e,t)=>{const r=Ye(e,t),n=Vr({},Wr,{[Sf]:e[Gl]||"application/octet-stream",[Gf]:e[Rl],[gf]:e[$l],[mf]:e[Dl],[yf]:e[Bl],[vf]:e[zl],[bf]:[()=>Wr(e[jl]),()=>e[jl].toString()],[wf]:e[Wl],[Ap]:e[Fl],[Xf]:e[Ul],[Zf]:e[Ll],[ep]:e[Vl],[tp]:e[Ql],[Af]:[()=>Wr(e[th]),()=>pr(e[th]).toString()],[Of]:e[fh],[If]:e[yh],[sp]:e[ch],[ap]:e[uh],[cp]:e[dh],[up]:e[lh],[$p]:[()=>Wr(e[hf]),()=>e[hf].toString()],[Tp]:e[ef],[xp]:e[Zh],[Up]:e[ff],[Op]:e[tf],[Pp]:e[rf],[Ip]:e[nf],[Cp]:e[sf],[_p]:e[of],[Rp]:[()=>Wr(e[Ml]),()=>e[Ml].toString()],[Sp]:e[Kh],[Mp]:e[uf],[mp]:e[Ph],[yp]:[()=>Wr(e[Ih]),()=>{return(t=e[Ih],t.toISOString().replace(".000Z","Z")).toString();var t}],[gp]:e[Oh],[op]:e[rh],...void 0!==e.Metadata&&Object.keys(e.Metadata).reduce(((t,r)=>(t[`x-amz-meta-${r.toLowerCase()}`]=e.Metadata[r],t)),{})});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=Vr({[Lp]:[,"PutObject"]});let o,s;return void 0!==e.Body&&(s=e.Body,o=s),r.m("PUT").h(n).q(i).b(o),r.build()},el=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return ol(e,t);const r=Vr({$metadata:Cl(e),[ef]:[,e.headers[Tp]],[sf]:[,e.headers[Cp]],[of]:[,e.headers[_p]],[Ml]:[()=>void 0!==e.headers[Rp],()=>Vt(e.headers[Rp])]}),n=rr(nr(await bi(e.body,t)),"body");return null!=n[Nl]&&(r[Nl]=Tl(n[Nl])),r},tl=async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return ol(e,t);const r=Vr({$metadata:Cl(e),[Yl]:[()=>void 0!==e.headers[np],()=>Vt(e.headers[np])],[lf]:[,e.headers[Fp]],[Lh]:[,e.headers[kp]]});return await Xe(e.body,t),r},rl=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return ol(e,t);const r=Vr({$metadata:Cl(e),[Yl]:[()=>void 0!==e.headers[np],()=>Vt(e.headers[np])],[Ol]:[,e.headers[pf]],[sh]:[,e.headers[ip]],[Gh]:[,e.headers[wp]],[Eh]:[()=>void 0!==e.headers[Nf],()=>rr(wr(e.headers[Nf]))],[jl]:[()=>void 0!==e.headers[bf],()=>ar(e.headers[bf])],[oh]:[,e.headers[Cf]],[Ul]:[,e.headers[Xf]],[Ll]:[,e.headers[Zf]],[Vl]:[,e.headers[ep]],[Ql]:[,e.headers[tp]],[Th]:[()=>void 0!==e.headers[fp],()=>cr(e.headers[fp])],[lf]:[,e.headers[Fp]],[$l]:[,e.headers[gf]],[Dl]:[,e.headers[mf]],[Bl]:[,e.headers[yf]],[zl]:[,e.headers[vf]],[Kl]:[,e.headers[kf]],[Gl]:[,e.headers[Sf]],[th]:[()=>void 0!==e.headers[Af],()=>rr(wr(e.headers[Af]))],[nh]:[,e.headers[Rf]],[ff]:[,e.headers[Up]],[ef]:[,e.headers[Tp]],[tf]:[,e.headers[Op]],[nf]:[,e.headers[Ip]],[sf]:[,e.headers[Cp]],[Ml]:[()=>void 0!==e.headers[Rp],()=>Vt(e.headers[Rp])],[Zh]:[,e.headers[xp]],[Lh]:[,e.headers[kp]],[Vh]:[,e.headers[Ep]],[Fh]:[()=>void 0!==e.headers[pp],()=>cr(e.headers[pp])],[df]:[()=>void 0!==e.headers[Np],()=>cr(e.headers[Np])],[Ph]:[,e.headers[mp]],[Ih]:[()=>void 0!==e.headers[yp],()=>rr(mr(e.headers[yp]))],[Oh]:[,e.headers[gp]],Metadata:[,Object.keys(e.headers).filter((e=>e.startsWith("x-amz-meta-"))).reduce(((t,r)=>(t[r.substring(11)]=e.headers[r],t)),{})]}),n=e.body;return t.sdkStreamMixin(n),r.Body=n,r},nl=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return ol(e,t);const r=Vr({$metadata:Cl(e),[Lh]:[,e.headers[kp]]}),n=rr(nr(await bi(e.body,t)),"body");return""===n.CommonPrefixes?r[Hl]=[]:null!=n[Hl]&&(r[Hl]=kl(jr(n[Hl]))),""===n.Contents?r[Xl]=[]:null!=n[Xl]&&(r[Xl]=El(jr(n[Xl]))),null!=n[Jl]&&(r[Jl]=ir(n[Jl])),null!=n[Zl]&&(r[Zl]=ir(n[Zl])),null!=n[ih]&&(r[ih]=ir(n[ih])),null!=n[bh]&&(r[bh]=Vt(n[bh])),null!=n[Sh]&&(r[Sh]=cr(n[Sh])),null!=n[Ah]&&(r[Ah]=cr(n[Ah])),null!=n[Ch]&&(r[Ch]=ir(n[Ch])),null!=n[Rh]&&(r[Rh]=ir(n[Rh])),null!=n[Nh]&&(r[Nh]=ir(n[Nh])),null!=n[Jh]&&(r[Jh]=ir(n[Jh])),r},il=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return ol(e,t);const r=Vr({$metadata:Cl(e),[sh]:[,e.headers[ip]],[oh]:[,e.headers[Cf]],[Ul]:[,e.headers[Xf]],[Ll]:[,e.headers[Zf]],[Vl]:[,e.headers[ep]],[Ql]:[,e.headers[tp]],[ef]:[,e.headers[Tp]],[lf]:[,e.headers[Fp]],[tf]:[,e.headers[Op]],[nf]:[,e.headers[Ip]],[sf]:[,e.headers[Cp]],[of]:[,e.headers[_p]],[Ml]:[()=>void 0!==e.headers[Rp],()=>Vt(e.headers[Rp])],[cf]:[()=>void 0!==e.headers[bp],()=>ar(e.headers[bp])],[Lh]:[,e.headers[kp]]});return await Xe(e.body,t),r},ol=async(e,t)=>{const r={...e,body:await wi(e.body,t)},n=((e,t)=>void 0!==t?.Error?.Code?t.Error.Code:void 0!==t?.Code?t.Code:404==e.statusCode?"NotFound":void 0)(e,r.body);switch(n){case"NoSuchUpload":case"com.amazonaws.s3#NoSuchUpload":throw await ml(r,t);case"ObjectNotInActiveTierError":case"com.amazonaws.s3#ObjectNotInActiveTierError":throw await bl(r,t);case"BucketAlreadyExists":case"com.amazonaws.s3#BucketAlreadyExists":throw await cl(r,t);case"BucketAlreadyOwnedByYou":case"com.amazonaws.s3#BucketAlreadyOwnedByYou":throw await ul(r,t);case"NoSuchBucket":case"com.amazonaws.s3#NoSuchBucket":throw await pl(r,t);case"InvalidObjectState":case"com.amazonaws.s3#InvalidObjectState":throw await ll(r,t);case"NoSuchKey":case"com.amazonaws.s3#NoSuchKey":throw await gl(r,t);case"NotFound":case"com.amazonaws.s3#NotFound":throw await yl(r,t);case"EncryptionTypeMismatch":case"com.amazonaws.s3#EncryptionTypeMismatch":throw await dl(r,t);case"InvalidRequest":case"com.amazonaws.s3#InvalidRequest":throw await hl(r,t);case"InvalidWriteOffset":case"com.amazonaws.s3#InvalidWriteOffset":throw await fl(r,t);case"TooManyParts":case"com.amazonaws.s3#TooManyParts":throw await wl(r,t);case"ObjectAlreadyInActiveTierError":case"com.amazonaws.s3#ObjectAlreadyInActiveTierError":throw await vl(r,t);default:const i=r.body;return sl({output:e,parsedBody:i,errorCode:n})}},sl=(al=Ad,({output:e,parsedBody:t,errorCode:r})=>{(({output:e,parsedBody:t,exceptionCtor:r,errorCode:n})=>{const i=Nr(e),o=i.httpStatusCode?i.httpStatusCode+"":void 0,s=new r({name:t?.code||t?.Code||n||o||"UnknownError",$fault:"client",$metadata:i});throw Mr(s,t)})({output:e,parsedBody:t,exceptionCtor:al,errorCode:r})});var al;const cl=async(e,t)=>{const r=Vr({});e.body;const n=new Rd({$metadata:Cl(e),...r});return Mr(n,e.body)},ul=async(e,t)=>{const r=Vr({});e.body;const n=new _d({$metadata:Cl(e),...r});return Mr(n,e.body)},dl=async(e,t)=>{const r=Vr({});e.body;const n=new zd({$metadata:Cl(e),...r});return Mr(n,e.body)},ll=async(e,t)=>{const r=Vr({}),n=e.body;null!=n[Pl]&&(r[Pl]=ir(n[Pl])),null!=n[Zh]&&(r[Zh]=ir(n[Zh]));const i=new Md({$metadata:Cl(e),...r});return Mr(i,e.body)},hl=async(e,t)=>{const r=Vr({});e.body;const n=new jd({$metadata:Cl(e),...r});return Mr(n,e.body)},fl=async(e,t)=>{const r=Vr({});e.body;const n=new qd({$metadata:Cl(e),...r});return Mr(n,e.body)},pl=async(e,t)=>{const r=Vr({});e.body;const n=new Od({$metadata:Cl(e),...r});return Mr(n,e.body)},gl=async(e,t)=>{const r=Vr({});e.body;const n=new Nd({$metadata:Cl(e),...r});return Mr(n,e.body)},ml=async(e,t)=>{const r=Vr({});e.body;const n=new Td({$metadata:Cl(e),...r});return Mr(n,e.body)},yl=async(e,t)=>{const r=Vr({});e.body;const n=new Fd({$metadata:Cl(e),...r});return Mr(n,e.body)},vl=async(e,t)=>{const r=Vr({});e.body;const n=new Hd({$metadata:Cl(e),...r});return Mr(n,e.body)},bl=async(e,t)=>{const r=Vr({});e.body;const n=new Cd({$metadata:Cl(e),...r});return Mr(n,e.body)},wl=async(e,t)=>{const r=Vr({});e.body;const n=new Wd({$metadata:Cl(e),...r});return Mr(n,e.body)},kl=(e,t)=>(e||[]).filter((e=>null!=e)).map((e=>(e=>{const t={};return null!=e[Nh]&&(t[Nh]=ir(e[Nh])),t})(e))),Sl=(e,t)=>{const r={};return null!=e[kh]&&(r[kh]=ir(e[kh])),null!=e[Eh]&&(r[Eh]=rr(mr(e[Eh]))),null!=e[oh]&&(r[oh]=ir(e[oh])),""===e.ChecksumAlgorithm?r[Fl]=[]:null!=e[Fl]&&(r[Fl]=(e=>(e||[]).filter((e=>null!=e)).map((e=>ir(e))))(jr(e[Fl]))),null!=e[cf]&&(r[cf]=ar(e[cf])),null!=e[Zh]&&(r[Zh]=ir(e[Zh])),null!=e[_h]&&(r[_h]=xl(e[_h])),null!=e[Qh]&&(r[Qh]=Al(e[Qh])),r},El=(e,t)=>(e||[]).filter((e=>null!=e)).map((e=>Sl(e))),xl=(e,t)=>{const r={};return null!=e[eh]&&(r[eh]=ir(e[eh])),null!=e[hh]&&(r[hh]=ir(e[hh])),r},Al=(e,t)=>{const r={};return null!=e[vh]&&(r[vh]=Vt(e[vh])),null!=e[Hh]&&(r[Hh]=rr(mr(e[Hh]))),r},Tl=(e,t)=>{const r={};return null!=e[_l]&&(r[_l]=ir(e[_l])),null!=e[Xh]&&(r[Xh]=ir(e[Xh])),null!=e[af]&&(r[af]=ir(e[af])),null!=e[sh]&&(r[sh]=rr(mr(e[sh]))),r},Cl=e=>({httpStatusCode:e.statusCode,requestId:e.headers["x-amzn-requestid"]??e.headers["x-amzn-request-id"]??e.headers["x-amz-request-id"],extendedRequestId:e.headers["x-amz-id-2"],cfId:e.headers["x-amz-cf-id"]}),Rl="ACL",_l="AccessKeyId",Ol="AcceptRanges",Pl="AccessTier",Il="BypassGovernanceRetention",Ml="BucketKeyEnabled",Nl="Credentials",Fl="ChecksumAlgorithm",$l="CacheControl",Ul="ChecksumCRC32",Ll="ChecksumCRC32C",Dl="ContentDisposition",Bl="ContentEncoding",zl="ContentLanguage",jl="ContentLength",ql="ChecksumMode",Wl="ContentMD5",Hl="CommonPrefixes",Kl="ContentRange",Vl="ChecksumSHA1",Ql="ChecksumSHA256",Gl="ContentType",Jl="ContinuationToken",Xl="Contents",Zl="Delimiter",Yl="DeleteMarker",eh="DisplayName",th="Expires",rh="ExpectedBucketOwner",nh="ExpiresString",ih="EncodingType",oh="ETag",sh="Expiration",ah="FetchOwner",ch="GrantFullControl",uh="GrantRead",dh="GrantReadACP",lh="GrantWriteACP",hh="ID",fh="IfMatch",ph="IfMatchLastModifiedTime",gh="IfMatchSize",mh="IfModifiedSince",yh="IfNoneMatch",vh="IsRestoreInProgress",bh="IsTruncated",wh="IfUnmodifiedSince",kh="Key",Sh="KeyCount",Eh="LastModified",xh="MFA",Ah="MaxKeys",Th="MissingMeta",Ch="Name",Rh="NextContinuationToken",_h="Owner",Oh="ObjectLockLegalHoldStatus",Ph="ObjectLockMode",Ih="ObjectLockRetainUntilDate",Mh="OptionalObjectAttributes",Nh="Prefix",Fh="PartsCount",$h="PartNumber",Uh="Range",Lh="RequestCharged",Dh="ResponseCacheControl",Bh="ResponseContentDisposition",zh="ResponseContentEncoding",jh="ResponseContentLanguage",qh="ResponseContentType",Wh="ResponseExpires",Hh="RestoreExpiryDate",Kh="RequestPayer",Vh="ReplicationStatus",Qh="RestoreStatus",Gh="Restore",Jh="StartAfter",Xh="SecretAccessKey",Zh="StorageClass",Yh="SessionMode",ef="ServerSideEncryption",tf="SSECustomerAlgorithm",rf="SSECustomerKey",nf="SSECustomerKeyMD5",of="SSEKMSEncryptionContext",sf="SSEKMSKeyId",af="SessionToken",cf="Size",uf="Tagging",df="TagCount",lf="VersionId",hf="WriteOffsetBytes",ff="WebsiteRedirectLocation",pf="accept-ranges",gf="cache-control",mf="content-disposition",yf="content-encoding",vf="content-language",bf="content-length",wf="content-md5",kf="content-range",Sf="content-type",Ef="continuation-token",xf="delimiter",Af="expires",Tf="encoding-type",Cf="etag",Rf="expiresstring",_f="fetch-owner",Of="if-match",Pf="if-modified-since",If="if-none-match",Mf="if-unmodified-since",Nf="last-modified",Ff="list-type",$f="max-keys",Uf="partNumber",Lf="prefix",Df="range",Bf="response-cache-control",zf="response-content-disposition",jf="response-content-encoding",qf="response-content-language",Wf="response-content-type",Hf="response-expires",Kf="session",Vf="start-after",Qf="versionId",Gf="x-amz-acl",Jf="x-amz-bypass-governance-retention",Xf="x-amz-checksum-crc32",Zf="x-amz-checksum-crc32c",Yf="x-amz-checksum-mode",ep="x-amz-checksum-sha1",tp="x-amz-checksum-sha256",rp="x-amz-create-session-mode",np="x-amz-delete-marker",ip="x-amz-expiration",op="x-amz-expected-bucket-owner",sp="x-amz-grant-full-control",ap="x-amz-grant-read",cp="x-amz-grant-read-acp",up="x-amz-grant-write-acp",dp="x-amz-if-match-last-modified-time",lp="x-amz-if-match-size",hp="x-amz-mfa",fp="x-amz-missing-meta",pp="x-amz-mp-parts-count",gp="x-amz-object-lock-legal-hold",mp="x-amz-object-lock-mode",yp="x-amz-object-lock-retain-until-date",vp="x-amz-optional-object-attributes",bp="x-amz-object-size",wp="x-amz-restore",kp="x-amz-request-charged",Sp="x-amz-request-payer",Ep="x-amz-replication-status",xp="x-amz-storage-class",Ap="x-amz-sdk-checksum-algorithm",Tp="x-amz-server-side-encryption",Cp="x-amz-server-side-encryption-aws-kms-key-id",Rp="x-amz-server-side-encryption-bucket-key-enabled",_p="x-amz-server-side-encryption-context",Op="x-amz-server-side-encryption-customer-algorithm",Pp="x-amz-server-side-encryption-customer-key",Ip="x-amz-server-side-encryption-customer-key-md5",Mp="x-amz-tagging",Np="x-amz-tagging-count",Fp="x-amz-version-id",$p="x-amz-write-offset-bytes",Up="x-amz-website-redirect-location",Lp="x-id";class Dp extends(Wt.classBuilder().ep({...xd,DisableS3ExpressSessionAuth:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),Ro(r)]})).s("AmazonS3","CreateSession",{}).n("S3Client","CreateSessionCommand").f(Ld,Ud).ser(Gd).de(el).build()){}var Bp="3.701.0";function zp(e){return"string"==typeof e?0===e.length:0===e.byteLength}var jp={name:"SHA-1"},qp={name:"HMAC",hash:jp},Wp=new Uint8Array([218,57,163,238,94,107,75,13,50,85,191,239,149,96,24,144,175,216,7,9]);const Hp={};function Kp(){return"undefined"!=typeof window?window:"undefined"!=typeof self?self:Hp}var Vp=function(){function e(e){this.toHash=new Uint8Array(0),void 0!==e&&(this.key=new Promise((function(t,r){Kp().crypto.subtle.importKey("raw",Qp(e),qp,!1,["sign"]).then(t,r)})),this.key.catch((function(){})))}return e.prototype.update=function(e){if(!zp(e)){var t=Qp(e),r=new Uint8Array(this.toHash.byteLength+t.byteLength);r.set(this.toHash,0),r.set(t,this.toHash.byteLength),this.toHash=r}},e.prototype.digest=function(){var e=this;return this.key?this.key.then((function(t){return Kp().crypto.subtle.sign(qp,t,e.toHash).then((function(e){return new Uint8Array(e)}))})):zp(this.toHash)?Promise.resolve(Wp):Promise.resolve().then((function(){return Kp().crypto.subtle.digest(jp,e.toHash)})).then((function(e){return Promise.resolve(new Uint8Array(e))}))},e.prototype.reset=function(){this.toHash=new Uint8Array(0)},e}();function Qp(e){return"string"==typeof e?(t=e,(new TextEncoder).encode(t)):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e);var t}var Gp=["decrypt","digest","encrypt","exportKey","generateKey","importKey","sign","verify"];function Jp(e){return!(!function(e){if("object"==typeof e&&"object"==typeof e.crypto){return"function"==typeof e.crypto.getRandomValues}return!1}(e)||"object"!=typeof e.crypto.subtle)&&function(e){return e&&Gp.every((function(t){return"function"==typeof e[t]}))}(e.crypto.subtle)}var Xp=function(){function e(e){if(!Jp(Kp()))throw new Error("SHA1 not supported");this.hash=new Vp(e)}return e.prototype.update=function(e,t){this.hash.update(Ri(e))},e.prototype.digest=function(){return this.hash.digest()},e.prototype.reset=function(){this.hash.reset()},e}(),Zp={name:"SHA-256"},Yp={name:"HMAC",hash:Zp},eg=new Uint8Array([227,176,196,66,152,252,28,20,154,251,244,200,153,111,185,36,39,174,65,228,100,155,147,76,164,149,153,27,120,82,184,85]),tg=function(){function e(e){this.toHash=new Uint8Array(0),this.secret=e,this.reset()}return e.prototype.update=function(e){if(!_i(e)){var t=Ri(e),r=new Uint8Array(this.toHash.byteLength+t.byteLength);r.set(this.toHash,0),r.set(t,this.toHash.byteLength),this.toHash=r}},e.prototype.digest=function(){var e=this;return this.key?this.key.then((function(t){return Kp().crypto.subtle.sign(Yp,t,e.toHash).then((function(e){return new Uint8Array(e)}))})):_i(this.toHash)?Promise.resolve(eg):Promise.resolve().then((function(){return Kp().crypto.subtle.digest(Zp,e.toHash)})).then((function(e){return Promise.resolve(new Uint8Array(e))}))},e.prototype.reset=function(){var e=this;this.toHash=new Uint8Array(0),this.secret&&void 0!==this.secret&&(this.key=new Promise((function(t,r){Kp().crypto.subtle.importKey("raw",Ri(e.secret),Yp,!1,["sign"]).then(t,r)})),this.key.catch((function(){})))},e}();function rg(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))}function ng(e,t){var r,n,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return s.next=a(0),s.throw=a(1),s.return=a(2),"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(a){return function(c){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;s&&(s=0,a[0]&&(o=0)),o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]ag)throw new Error("Cannot hash more than 2^53 - 1 bits");for(;r>0;)this.buffer[this.bufferLength++]=e[t++],r--,this.bufferLength===ig&&(this.hashBuffer(),this.bufferLength=0)},e.prototype.digest=function(){if(!this.finished){var e=8*this.bytesHashed,t=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),r=this.bufferLength;if(t.setUint8(this.bufferLength++,128),r%ig>=56){for(var n=this.bufferLength;n>>24&255,i[4*n+1]=this.state[n]>>>16&255,i[4*n+2]=this.state[n]>>>8&255,i[4*n+3]=this.state[n]>>>0&255;return i},e.prototype.hashBuffer=function(){for(var e=this.buffer,t=this.state,r=t[0],n=t[1],i=t[2],o=t[3],s=t[4],a=t[5],c=t[6],u=t[7],d=0;d>>17|l<<15)^(l>>>19|l<<13)^l>>>10,f=((l=this.temp[d-15])>>>7|l<<25)^(l>>>18|l<<14)^l>>>3;this.temp[d]=(h+this.temp[d-7]|0)+(f+this.temp[d-16]|0)}var p=(((s>>>6|s<<26)^(s>>>11|s<<21)^(s>>>25|s<<7))+(s&a^~s&c)|0)+(u+(og[d]+this.temp[d]|0)|0)|0,g=((r>>>2|r<<30)^(r>>>13|r<<19)^(r>>>22|r<<10))+(r&n^r&i^n&i)|0;u=c,c=a,a=s,s=o+p|0,o=i,i=n,n=r,r=p+g|0}t[0]+=r,t[1]+=n,t[2]+=i,t[3]+=o,t[4]+=s,t[5]+=a,t[6]+=c,t[7]+=u},e}(),ug=function(){function e(e){this.secret=e,this.hash=new cg,this.reset()}return e.prototype.update=function(e){if(!_i(e)&&!this.error)try{this.hash.update(Ri(e))}catch(e){this.error=e}},e.prototype.digestSync=function(){if(this.error)throw this.error;return this.outer?(this.outer.finished||this.outer.update(this.hash.digest()),this.outer.digest()):this.hash.digest()},e.prototype.digest=function(){return rg(this,void 0,void 0,(function(){return ng(this,(function(e){return[2,this.digestSync()]}))}))},e.prototype.reset=function(){if(this.hash=new cg,this.secret){this.outer=new cg;var e=function(e){var t=Ri(e);if(t.byteLength>ig){var r=new cg;r.update(t),t=r.digest()}var n=new Uint8Array(ig);return n.set(t),n}(this.secret),t=new Uint8Array(ig);t.set(e);for(var r=0;r0&&r[1]||""},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||""},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[1]){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,r,n){void 0===n&&(n=!1);var i=e.getVersionPrecision(t),o=e.getVersionPrecision(r),s=Math.max(i,o),a=0,c=e.map([t,r],(function(t){var r=s-e.getVersionPrecision(t),n=t+new Array(r+1).join(".0");return e.map(n.split("."),(function(e){return new Array(20-e.length).join("0")+e})).reverse()}));for(n&&(a=s-Math.min(i,o)),s-=1;s>=a;){if(c[0][s]>c[1][s])return 1;if(c[0][s]===c[1][s]){if(s===a)return 0;s-=1}else if(c[0][s]1?i-1:0),s=1;s0){var s=Object.keys(r),c=a.default.find(s,(function(e){return t.isOS(e)}));if(c){var u=this.satisfies(r[c]);if(void 0!==u)return u}var d=a.default.find(s,(function(e){return t.isPlatform(e)}));if(d){var l=this.satisfies(r[d]);if(void 0!==l)return l}}if(o>0){var h=Object.keys(i),f=a.default.find(h,(function(e){return t.isBrowser(e,!0)}));if(void 0!==f)return this.compareVersion(i[f])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),n=e.toLowerCase(),i=a.default.getBrowserTypeByAlias(n);return t&&i&&(n=i.toLowerCase()),n===r},t.compareVersion=function(e){var t=[0],r=e,n=!1,i=this.getBrowserVersion();if("string"==typeof i)return">"===e[0]||"<"===e[0]?(r=e.substr(1),"="===e[1]?(n=!0,r=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?r=e.substr(1):"~"===e[0]&&(n=!0,r=e.substr(1)),t.indexOf(a.default.compareVersions(i,r,n))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=u,e.exports=t.default},92:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=/version\/(\d+(\.?_?\d+)+)/i,s=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},r=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},r=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},r=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},r=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},r=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},r=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},r=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},r=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},r=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},r=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},r=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},r=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},r=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},r=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},r=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},r=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},r=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},r=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},r=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},r=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},r=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},r=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},r=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},r=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:"Android Browser"},r=i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},r=i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},r=i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:i.default.getFirstMatch(t,e),version:i.default.getSecondMatch(t,e)}}}];t.default=s,e.exports=t.default},93:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=r(18),s=[{test:[/Roku\/DVP/],describe:function(e){var t=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:o.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=i.default.getWindowsVersionName(t);return{name:o.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:o.OS_MAP.iOS},r=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),r=i.default.getMacOSVersionName(t),n={name:o.OS_MAP.MacOS,version:t};return r&&(n.versionName=r),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:o.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),r=i.default.getAndroidVersionName(t),n={name:o.OS_MAP.Android,version:t};return r&&(n.versionName=r),n}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),r={name:o.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||i.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:o.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:o.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:o.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.PlayStation4,version:t}}}];t.default=s,e.exports=t.default},94:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=r(18),s=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=i.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",r={type:o.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(r.model=t),r}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=i.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:o.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"blackberry"===e.getBrowserName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return"bada"===e.getBrowserName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"windows phone"===e.getBrowserName()},describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return"android"===e.getOSName(!0)&&t>=3},describe:function(){return{type:o.PLATFORMS_MAP.tablet}}},{test:function(e){return"android"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"macos"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return"windows"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop}}},{test:function(e){return"linux"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop}}},{test:function(e){return"playstation 4"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.tv}}},{test:function(e){return"roku"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.tv}}}];t.default=s,e.exports=t.default},95:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=r(18),s=[{test:function(e){return"microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return{name:o.ENGINE_MAP.Blink};var t=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:o.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:o.ENGINE_MAP.Trident},r=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:o.ENGINE_MAP.Presto},r=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:o.ENGINE_MAP.Gecko},r=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:o.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:o.ENGINE_MAP.WebKit},r=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=s,e.exports=t.default}});var hg=Yr(lg.exports);const fg=({serviceId:e,clientVersion:t})=>async r=>{const n="undefined"!=typeof window&&window?.navigator?.userAgent?hg.parse(window.navigator.userAgent):void 0,i=[["aws-sdk-js",t],["ua","2.1"],[`os/${n?.os?.name||"other"}`,n?.os?.version],["lang/js"],["md/browser",`${n?.browser?.name??"unknown"}_${n?.browser?.version??"unknown"}`]];e&&i.push([`api/${e}`,t]);const o=await(r?.userAgentAppId?.());return o&&i.push([`app/${o}`]),i};class pg{constructor(e){if(this.bytes=e,8!==e.byteLength)throw new Error("Int64 buffers must be exactly 8 bytes")}static fromNumber(e){if(e>0x8000000000000000||e<-0x8000000000000000)throw new Error(`${e} is too large (or, if negative, too small) to represent as an Int64`);const t=new Uint8Array(8);for(let r=7,n=Math.abs(Math.round(e));r>-1&&n>0;r--,n/=256)t[r]=n;return e<0&&gg(t),new pg(t)}valueOf(){const e=this.bytes.slice(0),t=128&e[0];return t&&gg(e),parseInt(qe(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}}function gg(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,0===e[t]);t--);}class mg{constructor(e,t){this.toUtf8=e,this.fromUtf8=t}format(e){const t=[];for(const r of Object.keys(e)){const n=this.fromUtf8(r);t.push(Uint8Array.from([n.byteLength]),n,this.formatHeaderValue(e[r]))}const r=new Uint8Array(t.reduce(((e,t)=>e+t.byteLength),0));let n=0;for(const e of t)r.set(e,n),n+=e.byteLength;return r}formatHeaderValue(e){switch(e.type){case"boolean":return Uint8Array.from([e.value?0:1]);case"byte":return Uint8Array.from([2,e.value]);case"short":const t=new DataView(new ArrayBuffer(3));return t.setUint8(0,3),t.setInt16(1,e.value,!1),new Uint8Array(t.buffer);case"integer":const r=new DataView(new ArrayBuffer(5));return r.setUint8(0,4),r.setInt32(1,e.value,!1),new Uint8Array(r.buffer);case"long":const n=new Uint8Array(9);return n[0]=5,n.set(e.value.bytes,1),n;case"binary":const i=new DataView(new ArrayBuffer(3+e.value.byteLength));i.setUint8(0,6),i.setUint16(1,e.value.byteLength,!1);const o=new Uint8Array(i.buffer);return o.set(e.value,3),o;case"string":const s=this.fromUtf8(e.value),a=new DataView(new ArrayBuffer(3+s.byteLength));a.setUint8(0,7),a.setUint16(1,s.byteLength,!1);const c=new Uint8Array(a.buffer);return c.set(s,3),c;case"timestamp":const u=new Uint8Array(9);return u[0]=8,u.set(pg.fromNumber(e.value.valueOf()).bytes,1),u;case"uuid":if(!Cg.test(e.value))throw new Error(`Invalid UUID received: ${e.value}`);const d=new Uint8Array(17);return d[0]=9,d.set(je(e.value.replace(/\-/g,"")),1),d}}parse(e){const t={};let r=0;for(;re,isEndOfStream:()=>t}}getAvailableMessages(){const e=this.messageBuffer;this.messageBuffer=[];const t=this.isEndOfStream;return{getMessages:()=>e,isEndOfStream:()=>t}}encode({headers:e,body:t}){const r=this.headerMarshaller.format(e),n=r.byteLength+t.byteLength+16,i=new Uint8Array(n),o=new DataView(i.buffer,i.byteOffset,i.byteLength),s=new Li;return o.setUint32(0,n,!1),o.setUint32(4,r.byteLength,!1),o.setUint32(8,s.update(i.subarray(0,8)).digest(),!1),i.set(r,12),i.set(t,r.byteLength+12),o.setUint32(n-4,s.update(i.subarray(8,n-4)).digest(),!1),i}decode(e){const{headers:t,body:r}=function({byteLength:e,byteOffset:t,buffer:r}){if(e<16)throw new Error("Provided message too short to accommodate event stream message overhead");const n=new DataView(r,t,e),i=n.getUint32(0,!1);if(e!==i)throw new Error("Reported message length does not match received message length");const o=n.getUint32(4,!1),s=n.getUint32(8,!1),a=n.getUint32(e-4,!1),c=(new Li).update(new Uint8Array(r,t,8));if(s!==c.digest())throw new Error(`The prelude checksum specified in the message (${s}) does not match the calculated CRC32 checksum (${c.digest()})`);if(c.update(new Uint8Array(r,t+8,e-12)),a!==c.digest())throw new Error(`The message checksum (${c.digest()}) did not match the expected value of ${a}`);return{headers:new DataView(r,t+8+4,o),body:new Uint8Array(r,t+8+4+o,i-o-16)}}(e);return{headers:this.headerMarshaller.parse(t),body:r}}formatHeaders(e){return this.headerMarshaller.format(e)}}class _g{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.inputStream){const t=this.options.decoder.decode(e);yield t}}}class Og{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.messageStream){const t=this.options.encoder.encode(e);yield t}this.options.includeEndFrame&&(yield new Uint8Array(0))}}class Pg{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.messageStream){const t=await this.options.deserializer(e);void 0!==t&&(yield t)}}}class Ig{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.inputStream){const t=this.options.serializer(e);yield t}}}function Mg(e,t){return async function(r){const{value:n}=r.headers[":message-type"];if("error"===n){const e=new Error(r.headers[":error-message"].value||"UnknownError");throw e.name=r.headers[":error-code"].value,e}if("exception"===n){const n=r.headers[":exception-type"].value,i={[n]:r},o=await e(i);if(o.$unknown){const e=new Error(t(r.body));throw e.name=n,e}throw o[n]}if("event"===n){const t={[r.headers[":event-type"].value]:r},n=await e(t);if(n.$unknown)return;return n}throw Error(`Unrecognizable event type: ${r.headers[":event-type"].value}`)}}class Ng{constructor({utf8Encoder:e,utf8Decoder:t}){this.eventStreamCodec=new Rg(e,t),this.utfEncoder=e}deserialize(e,t){const r=function(e){let t=0,r=0,n=null,i=null;const o=e=>{if("number"!=typeof e)throw new Error("Attempted to allocate an event message where size was not a number: "+e);t=e,r=4,n=new Uint8Array(e),new DataView(n.buffer).setUint32(0,e,!1)};return{[Symbol.asyncIterator]:async function*(){const s=e[Symbol.asyncIterator]();for(;;){const{value:e,done:a}=await s.next();if(a){if(!t)return;if(t!==r)throw new Error("Truncated event message received.");return void(yield n)}const c=e.length;let u=0;for(;u{const t=e[Symbol.asyncIterator]();return new ReadableStream({async pull(e){const{done:r,value:n}=await t.next();if(r)return e.close();e.enqueue(n)}})})(r):r}}const $g=e=>"function"==typeof ReadableStream&&e instanceof ReadableStream,Ug=e=>new Fg(e);const Lg=async function(e,t){const r=new e;return await async function(e,t,r=1048576){const n=e.size;let i=0;for(;i{r.update(e)})),r.digest()},Dg=64,Bg=[1732584193,4023233417,2562383102,271733878];class zg{constructor(){this.reset()}update(e){if(function(e){if("string"==typeof e)return 0===e.length;return 0===e.byteLength}(e))return;if(this.finished)throw new Error("Attempted to update an already finished hash.");const t=function(e){if("string"==typeof e)return Ce(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT);return new Uint8Array(e)}(e);let r=0,{byteLength:n}=t;for(this.bytesHashed+=n;n>0;)this.buffer.setUint8(this.bufferLength++,t[r++]),n--,this.bufferLength===Dg&&(this.hashBuffer(),this.bufferLength=0)}async digest(){if(!this.finished){const{buffer:e,bufferLength:t,bytesHashed:r}=this,n=8*r;if(e.setUint8(this.bufferLength++,128),t%Dg>=56){for(let t=this.bufferLength;t>>0,!0),e.setUint32(60,Math.floor(n/4294967296),!0),this.hashBuffer(),this.finished=!0}const e=new DataView(new ArrayBuffer(16));for(let t=0;t<4;t++)e.setUint32(4*t,this.state[t],!0);return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}hashBuffer(){const{buffer:e,state:t}=this;let r=t[0],n=t[1],i=t[2],o=t[3];r=qg(r,n,i,o,e.getUint32(0,!0),7,3614090360),o=qg(o,r,n,i,e.getUint32(4,!0),12,3905402710),i=qg(i,o,r,n,e.getUint32(8,!0),17,606105819),n=qg(n,i,o,r,e.getUint32(12,!0),22,3250441966),r=qg(r,n,i,o,e.getUint32(16,!0),7,4118548399),o=qg(o,r,n,i,e.getUint32(20,!0),12,1200080426),i=qg(i,o,r,n,e.getUint32(24,!0),17,2821735955),n=qg(n,i,o,r,e.getUint32(28,!0),22,4249261313),r=qg(r,n,i,o,e.getUint32(32,!0),7,1770035416),o=qg(o,r,n,i,e.getUint32(36,!0),12,2336552879),i=qg(i,o,r,n,e.getUint32(40,!0),17,4294925233),n=qg(n,i,o,r,e.getUint32(44,!0),22,2304563134),r=qg(r,n,i,o,e.getUint32(48,!0),7,1804603682),o=qg(o,r,n,i,e.getUint32(52,!0),12,4254626195),i=qg(i,o,r,n,e.getUint32(56,!0),17,2792965006),n=qg(n,i,o,r,e.getUint32(60,!0),22,1236535329),r=Wg(r,n,i,o,e.getUint32(4,!0),5,4129170786),o=Wg(o,r,n,i,e.getUint32(24,!0),9,3225465664),i=Wg(i,o,r,n,e.getUint32(44,!0),14,643717713),n=Wg(n,i,o,r,e.getUint32(0,!0),20,3921069994),r=Wg(r,n,i,o,e.getUint32(20,!0),5,3593408605),o=Wg(o,r,n,i,e.getUint32(40,!0),9,38016083),i=Wg(i,o,r,n,e.getUint32(60,!0),14,3634488961),n=Wg(n,i,o,r,e.getUint32(16,!0),20,3889429448),r=Wg(r,n,i,o,e.getUint32(36,!0),5,568446438),o=Wg(o,r,n,i,e.getUint32(56,!0),9,3275163606),i=Wg(i,o,r,n,e.getUint32(12,!0),14,4107603335),n=Wg(n,i,o,r,e.getUint32(32,!0),20,1163531501),r=Wg(r,n,i,o,e.getUint32(52,!0),5,2850285829),o=Wg(o,r,n,i,e.getUint32(8,!0),9,4243563512),i=Wg(i,o,r,n,e.getUint32(28,!0),14,1735328473),n=Wg(n,i,o,r,e.getUint32(48,!0),20,2368359562),r=Hg(r,n,i,o,e.getUint32(20,!0),4,4294588738),o=Hg(o,r,n,i,e.getUint32(32,!0),11,2272392833),i=Hg(i,o,r,n,e.getUint32(44,!0),16,1839030562),n=Hg(n,i,o,r,e.getUint32(56,!0),23,4259657740),r=Hg(r,n,i,o,e.getUint32(4,!0),4,2763975236),o=Hg(o,r,n,i,e.getUint32(16,!0),11,1272893353),i=Hg(i,o,r,n,e.getUint32(28,!0),16,4139469664),n=Hg(n,i,o,r,e.getUint32(40,!0),23,3200236656),r=Hg(r,n,i,o,e.getUint32(52,!0),4,681279174),o=Hg(o,r,n,i,e.getUint32(0,!0),11,3936430074),i=Hg(i,o,r,n,e.getUint32(12,!0),16,3572445317),n=Hg(n,i,o,r,e.getUint32(24,!0),23,76029189),r=Hg(r,n,i,o,e.getUint32(36,!0),4,3654602809),o=Hg(o,r,n,i,e.getUint32(48,!0),11,3873151461),i=Hg(i,o,r,n,e.getUint32(60,!0),16,530742520),n=Hg(n,i,o,r,e.getUint32(8,!0),23,3299628645),r=Kg(r,n,i,o,e.getUint32(0,!0),6,4096336452),o=Kg(o,r,n,i,e.getUint32(28,!0),10,1126891415),i=Kg(i,o,r,n,e.getUint32(56,!0),15,2878612391),n=Kg(n,i,o,r,e.getUint32(20,!0),21,4237533241),r=Kg(r,n,i,o,e.getUint32(48,!0),6,1700485571),o=Kg(o,r,n,i,e.getUint32(12,!0),10,2399980690),i=Kg(i,o,r,n,e.getUint32(40,!0),15,4293915773),n=Kg(n,i,o,r,e.getUint32(4,!0),21,2240044497),r=Kg(r,n,i,o,e.getUint32(32,!0),6,1873313359),o=Kg(o,r,n,i,e.getUint32(60,!0),10,4264355552),i=Kg(i,o,r,n,e.getUint32(24,!0),15,2734768916),n=Kg(n,i,o,r,e.getUint32(52,!0),21,1309151649),r=Kg(r,n,i,o,e.getUint32(16,!0),6,4149444226),o=Kg(o,r,n,i,e.getUint32(44,!0),10,3174756917),i=Kg(i,o,r,n,e.getUint32(8,!0),15,718787259),n=Kg(n,i,o,r,e.getUint32(36,!0),21,3951481745),t[0]=r+t[0]&4294967295,t[1]=n+t[1]&4294967295,t[2]=i+t[2]&4294967295,t[3]=o+t[3]&4294967295}reset(){this.state=Uint32Array.from(Bg),this.buffer=new DataView(new ArrayBuffer(Dg)),this.bufferLength=0,this.bytesHashed=0,this.finished=!1}}function jg(e,t,r,n,i,o){return((t=(t+e&4294967295)+(n+o&4294967295)&4294967295)<>>32-i)+r&4294967295}function qg(e,t,r,n,i,o,s){return jg(t&r|~t&n,e,t,i,o,s)}function Wg(e,t,r,n,i,o,s){return jg(t&n|r&~n,e,t,i,o,s)}function Hg(e,t,r,n,i,o,s){return jg(t^r^n,e,t,i,o,s)}function Kg(e,t,r,n,i,o,s){return jg(r^(t|~n),e,t,i,o,s)}const Vg="function"==typeof TextEncoder?new TextEncoder:null,Qg=e=>{if("string"==typeof e){if(Vg)return Vg.encode(e).byteLength;let t=e.length;for(let r=t-1;r>=0;r--){const n=e.charCodeAt(r);n>127&&n<=2047?t++:n>2047&&n<=65535&&(t+=2),n>=56320&&n<=57343&&r--}return t}if("number"==typeof e.byteLength)return e.byteLength;if("number"==typeof e.size)return e.size;throw new Error(`Body Length computation failed for ${e}`)},Gg=["in-region","cross-region","mobile","standard","legacy"],Jg=()=>{const e="undefined"!=typeof window&&window?.navigator?.userAgent?hg.parse(window.navigator.userAgent):void 0,t=e?.platform?.type;return"tablet"===t||"mobile"===t},Xg=e=>{const t=(({defaultsMode:e}={})=>((e,t,r)=>{let n,i,o,s=!1;const a=async()=>{i||(i=e());try{n=await i,o=!0,s=!1}finally{i=void 0}return n};return void 0===t?async e=>(o&&!e?.forceRefresh||(n=await a()),n):async e=>(o&&!e?.forceRefresh||(n=await a()),s?n:r&&!r(n)?(s=!0,n):t(n)?(await a(),n):n)})((async()=>{const t="function"==typeof e?await e():e;switch(t?.toLowerCase()){case"auto":return Promise.resolve(Jg()?"mobile":"standard");case"mobile":case"in-region":case"cross-region":case"standard":case"legacy":return Promise.resolve(t?.toLocaleLowerCase());case void 0:return Promise.resolve("legacy");default:throw new Error(`Invalid parameter for "defaultsMode", expect ${Gg.join(", ")}, got ${t}`)}})))(e),r=()=>t().then(Fr),n=(e=>({apiVersion:"2006-03-01",base64Decoder:e?.base64Decoder??Te,base64Encoder:e?.base64Encoder??Oe,disableHostPrefix:e?.disableHostPrefix??!1,endpointProvider:e?.endpointProvider??yd,extensions:e?.extensions??[],getAwsChunkedEncodingStream:e?.getAwsChunkedEncodingStream??Ie,httpAuthSchemeProvider:e?.httpAuthSchemeProvider??Sd,httpAuthSchemes:e?.httpAuthSchemes??[{schemeId:"aws.auth#sigv4",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4"),signer:new de},{schemeId:"aws.auth#sigv4a",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4a"),signer:new le}],logger:e?.logger??new Kr,sdkStreamMixin:e?.sdkStreamMixin??Ke,serviceId:e?.serviceId??"S3",signerConstructor:e?.signerConstructor??na,signingEscapePath:e?.signingEscapePath??!1,urlParser:e?.urlParser??As,useArnRegion:e?.useArnRegion??!1,utf8Decoder:e?.utf8Decoder??Ce,utf8Encoder:e?.utf8Encoder??_e}))(e);return{...n,...e,runtime:"browser",defaultsMode:t,bodyLengthChecker:e?.bodyLengthChecker??Qg,credentialDefaultProvider:e?.credentialDefaultProvider??(e=>()=>Promise.reject(new Error("Credential is missing"))),defaultUserAgentProvider:e?.defaultUserAgentProvider??fg({serviceId:n.serviceId,clientVersion:Bp}),eventStreamSerdeProvider:e?.eventStreamSerdeProvider??Ug,maxAttempts:e?.maxAttempts??3,md5:e?.md5??zg,region:e?.region??(i="Region is missing",()=>Promise.reject(i)),requestHandler:Le.create(e?.requestHandler??r),retryMode:e?.retryMode??(async()=>(await r()).retryMode||Is),sha1:e?.sha1??Xp,sha256:e?.sha256??dg,streamCollector:e?.streamCollector??De,streamHasher:e?.streamHasher??Lg,useDualstackEndpoint:e?.useDualstackEndpoint??(()=>Promise.resolve(false)),useFipsEndpoint:e?.useFipsEndpoint??(()=>Promise.resolve(false))};var i},Zg=e=>{let t=async()=>{if(void 0===e.region)throw new Error("Region is missing from runtimeConfig");const t=e.region;return"string"==typeof t?t:t()};return{setRegion(e){t=e},region:()=>t}},Yg=e=>{const t=e.httpAuthSchemes;let r=e.httpAuthSchemeProvider,n=e.credentials;return{setHttpAuthScheme(e){const r=t.findIndex((t=>t.schemeId===e.schemeId));-1===r?t.push(e):t.splice(r,1,e)},httpAuthSchemes:()=>t,setHttpAuthSchemeProvider(e){r=e},httpAuthSchemeProvider:()=>r,setCredentials(e){n=e},credentials:()=>n}},em=e=>({httpAuthSchemes:e.httpAuthSchemes(),httpAuthSchemeProvider:e.httpAuthSchemeProvider(),credentials:e.credentials()});class tm extends qt{constructor(...[e]){const t=Xg(e||{});var r;const n=function(e){const t=Ee(e.userAgentAppId??void 0);return{...e,customUserAgent:"string"==typeof e.customUserAgent?[[e.customUserAgent]]:e.customUserAgent,userAgentAppId:async()=>{const r=await t();if(!function(e){return void 0===e||"string"==typeof e&&e.length<=50}(r)){const t="NoOpLogger"!==e.logger?.constructor?.name&&e.logger?e.logger:console;"string"!=typeof r?t?.warn("userAgentAppId must be a string or undefined."):r.length>50&&t?.warn("The provided userAgentAppId exceeds the maximum length of 50 characters.")}return r}}}((r=t,{...r,useFipsEndpoint:r.useFipsEndpoint??!1,useDualstackEndpoint:r.useDualstackEndpoint??!1,forcePathStyle:r.forcePathStyle??!1,useAccelerateEndpoint:r.useAccelerateEndpoint??!1,useGlobalEndpoint:r.useGlobalEndpoint??!1,disableMultiregionAccessPoints:r.disableMultiregionAccessPoints??!1,defaultSigningName:"s3"}));var i;const o=(e=>({...e,eventStreamMarshaller:e.eventStreamSerdeProvider(e)}))((e=>{const t=e.tls??!0,{endpoint:r}=e,n=null!=r?async()=>Ts(await fe(r)()):void 0,i=!!r,o={...e,endpoint:n,tls:t,isCustomEndpoint:i,useDualstackEndpoint:fe(e.useDualstackEndpoint??!1),useFipsEndpoint:fe(e.useFipsEndpoint??!1)};let s;return o.serviceConfiguredEndpoint=async()=>(e.serviceId&&!s&&(s=xs(e.serviceId)),s),o})((e=>{const{region:t,useFipsEndpoint:r}=e;if(!t)throw new Error("Region is missing");return{...e,region:async()=>{if("string"==typeof t)return ps(t);const e=await t();return ps(e)},useFipsEndpoint:async()=>{const e="string"==typeof t?t:await t();return!!fs(e)||("function"!=typeof r?Promise.resolve(!!r):r())}}})((e=>{const{retryStrategy:t}=e,r=fe(e.maxAttempts??3);return{...e,maxAttempts:r,retryStrategy:async()=>t||(await fe(e.retryMode)()===Ps.ADAPTIVE?new js(r):new zs(r))}})((i=n,{...i,requestChecksumCalculation:fe(i.requestChecksumCalculation??X),responseChecksumValidation:fe(i.responseChecksumValidation??Z)}))))),s=((e,{session:t})=>{const[r,n]=t;return{...e,forcePathStyle:e.forcePathStyle??!1,useAccelerateEndpoint:e.useAccelerateEndpoint??!1,disableMultiregionAccessPoints:e.disableMultiregionAccessPoints??!1,followRegionRedirects:e.followRegionRedirects??!1,s3ExpressIdentityProvider:e.s3ExpressIdentityProvider??new ho((async e=>r().send(new n({Bucket:e,SessionMode:"ReadWrite"})))),bucketEndpoint:e.bucketEndpoint??!1}})(Ed(o),{session:[()=>this,Dp]}),a=((e,t)=>{const r={...Zg(e),...Br(e),...U(e),...Yg(e)};return t.forEach((e=>e.configure(r))),{...e,...(i=r,{region:i.region()}),...zr(r),...(n=r,{httpHandler:n.httpHandler()}),...em(r)};var n,i})(s,e?.extensions||[]);super(a),this.config=a,this.middlewareStack.use((e=>({applyToStack:t=>{t.add(ds(e),hs)}}))(this.config)),this.middlewareStack.use(ea(this.config)),this.middlewareStack.use(ys(this.config)),this.middlewareStack.use(Xi(this.config)),this.middlewareStack.use((this.config,{applyToStack:e=>{e.add(((e,t)=>async r=>{try{const n=await e(r),{clientName:i,commandName:o,logger:s,dynamoDbDocumentClientOptions:a={}}=t,{overrideInputFilterSensitiveLog:c,overrideOutputFilterSensitiveLog:u}=a,d=c??t.inputFilterSensitiveLog,l=u??t.outputFilterSensitiveLog,{$metadata:h,...f}=n.output;return s?.info?.({clientName:i,commandName:o,input:d(r.input),output:l(f),metadata:h}),n}catch(e){const{clientName:n,commandName:i,logger:o,dynamoDbDocumentClientOptions:s={}}=t,{overrideInputFilterSensitiveLog:a}=s,c=a??t.inputFilterSensitiveLog;throw o?.error?.({clientName:n,commandName:i,input:c(r.input),error:e,metadata:e.$metadata}),e}}),Zi)}})),this.middlewareStack.use(to(this.config)),this.middlewareStack.use(((e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:r})=>({applyToStack:n=>{n.addRelativeTo(pe(e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:r}),ge)}}))(this.config,{httpAuthSchemeParametersProvider:vd,identityProviderConfigProvider:async e=>new tt({"aws.auth#sigv4":e.credentials,"aws.auth#sigv4a":e.credentials})})),this.middlewareStack.use(Se(this.config)),this.middlewareStack.use(Po(this.config)),this.middlewareStack.use(G(this.config)),this.middlewareStack.use(so(this.config)),this.middlewareStack.use(wo(this.config)),this.middlewareStack.use((e=>({applyToStack:t=>{t.addRelativeTo(Eo(e),ke)}}))(this.config))}destroy(){super.destroy()}}const rm={name:"ssecMiddleware",step:"initialize",tags:["SSE"],override:!0},nm=e=>({applyToStack:t=>{var r;t.add((r=e,e=>async t=>{const n={...t.input},i=[{target:"SSECustomerKey",hash:"SSECustomerKeyMD5"},{target:"CopySourceSSECustomerKey",hash:"CopySourceSSECustomerKeyMD5"}];for(const e of i){const t=n[e.target];if(t){let i;"string"==typeof t?im(t,r)?i=r.base64Decoder(t):(i=r.utf8Decoder(t),n[e.target]=r.base64Encoder(i)):(i=ArrayBuffer.isView(t)?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):new Uint8Array(t),n[e.target]=r.base64Encoder(i));const o=new r.md5;o.update(i),n[e.hash]=r.base64Encoder(await o.digest())}}return e({...t,input:n})}),rm)}});function im(e,t){if(!/^(?:[A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(e))return!1;try{return 32===t.base64Decoder(e).length}catch{return!1}}class om extends(Wt.classBuilder().ep({...xd,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),Ro(r)]})).s("AmazonS3","DeleteObject",{}).n("S3Client","DeleteObjectCommand").f(void 0,void 0).ser(Jd).de(tl).build()){}class sm extends(Wt.classBuilder().ep({...xd,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),Gi(r,{requestChecksumRequired:!1,requestValidationModeMember:"ChecksumMode",responseAlgorithms:["CRC32","CRC32C","SHA256","SHA1"]}),nm(r),co()]})).s("AmazonS3","GetObject",{}).n("S3Client","GetObjectCommand").f(Bd,Dd).ser(Xd).de(rl).build()){}class am extends(Wt.classBuilder().ep({...xd,Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),Ro(r)]})).s("AmazonS3","ListObjectsV2",{}).n("S3Client","ListObjectsV2Command").f(void 0,void 0).ser(Zd).de(nl).build()){}class cm extends(Wt.classBuilder().ep({...xd,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),Gi(r,{requestAlgorithmMember:"ChecksumAlgorithm",requestAlgorithmMemberHttpHeader:"x-amz-sdk-checksum-algorithm",requestChecksumRequired:!1}),no(),Ro(r),nm(r)]})).s("AmazonS3","PutObject",{}).n("S3Client","PutObjectCommand").f(Qd,Vd).ser(Yd).de(il).build()){}class um{constructor(e){this.config=e,this.taskQueue=new p(5),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}shouldUsePathStyle(e){try{const t=new URL(e),r=t.hostname,n=/^(\d{1,3}\.){3}\d{1,3}$/.test(r),i=""!==t.port;return!n&&i}catch(e){return!0}}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return a(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:n,accessKeyId:i,secretAccessKey:o,dir:s}=this.config;s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder;let a=s+"/"+e;for(;a.startsWith("/");)a=a.substring(1);""===a||a.endsWith("/")||(a+="/");const c=new tm({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o},forcePathStyle:this.shouldUsePathStyle(t)});try{let e,t=[],r=[],i=!0;for(;i;){const o=yield c.send(new am({Bucket:n,Prefix:a,Delimiter:"/",ContinuationToken:e}));o.Contents&&(t=t.concat(o.Contents)),o.CommonPrefixes&&(r=r.concat(o.CommonPrefixes)),e=o.NextContinuationToken,i=!!e}let o=[];return t.forEach((e=>{if(!e.Key.endsWith("/")){const t=e.Key.substring(a.length);t.includes("/")||o.push({name:t,size:e.Size||0,type:"file",modified:e.LastModified?e.LastModified.toISOString():""})}})),r.forEach((e=>{const t=e.Prefix.substring(a.length).replace(/\/$/,"");t&&o.push({name:t,size:0,type:"folder",modified:""})})),o}catch(e){return console.error(e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:n,accessKeyId:i,secretAccessKey:o,dir:s}=this.config;s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder;const a=new tm({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o},forcePathStyle:this.shouldUsePathStyle(t)});let c=s+"/"+e;for(;c.startsWith("/");)c=c.substring(1);try{return yield a.send(new om({Bucket:n,Key:c})),!0}catch(e){return console.error(e),!1}}))}}class dm extends um{constructor(e){super(e)}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){let{endpoint:r,region:n,bucketName:i,accessKeyId:o,secretAccessKey:s,dir:a}=this.config;const c=new tm({endpoint:r,region:n,credentials:{accessKeyId:o,secretAccessKey:s},forcePathStyle:this.shouldUsePathStyle(r)});a=a&&"KoodoReader"===this.baseFolder?a:this.baseFolder;let u=a+"/"+t;for(;u.startsWith("/");)u=u.substring(1);try{let t=yield c.send(new cm({Bucket:i,Key:u,Body:e}));return 200===t.$metadata.httpStatusCode||(console.error("Error uploading file:",t),!1)}catch(e){return console.error("Error: ",e),!1}}))))))}))}downloadFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);let{endpoint:t,region:r,bucketName:n,accessKeyId:i,secretAccessKey:o,dir:s}=this.config;s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder;const a=new tm({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o},forcePathStyle:this.shouldUsePathStyle(t)});let c=s+"/"+e;for(;c.startsWith("/");)c=c.substring(1);try{const e=yield a.send(new sm({Bucket:n,Key:c}));if(!e.Body)return console.error("No response body"),!1;const t=yield e.Body.transformToByteArray();return this.taskQueue.setDownloadedSize(t.length),t.buffer}catch(t){return console.error("Error downloading file:",t,e),!1}}))))))}))}}class lm{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=1){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=this.baseFolder;t&&""!==t.trim()&&(n=n+"/"+t),n=n.replace(/\/+/g,"/"),n.startsWith("/")&&(n=n.substring(1));let i=[],o=0;const s=1e3;for(;;){const t=yield e.get("https://pan.baidu.com/rest/2.0/xpan/file",{params:{method:"list",access_token:r,dir:"/"+n,start:o,limit:s,order:"name",desc:0,web:1,folder:0},headers:{"User-Agent":"pan.baidu.com"}});if(t.status>=300||0!==t.data.errno){console.error("百度网盘API错误:",t.data);break}const a=t.data.list||[];if(0===a.length)break;if(i=i.concat(a),a.length({name:e.server_filename,size:e.size||0,type:e.isdir?"folder":"file",modified:new Date(1e3*e.server_mtime).toISOString(),path:e.path})))}catch(e){return console.error("获取百度网盘文件列表时发生错误:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=this.baseFolder+"/"+t;n=n.replace(/\/+/g,"/"),n.startsWith("/")&&(n=n.substring(1));const i=new URLSearchParams({async:"0",filelist:JSON.stringify(["/"+n])}),o=yield e.post(`https://pan.baidu.com/rest/2.0/xpan/file?method=filemanager&access_token=${r}&opera=delete`,i.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"pan.baidu.com"}});if(0!==o.data.errno)return console.error("百度网盘删除文件API错误:",o.data),-9===o.data.errno?console.error("文件不存在"):111===o.data.errno?console.error("有其他异步任务正在执行"):-7===o.data.errno&&console.error("文件名非法"),!1;const s=o.data.info||[];for(const e of s)if(0!==e.errno)return console.error(`文件删除失败: ${e.path}, 错误码: ${e.errno}`),!1;return!0}catch(e){return console.error("删除文件时发生错误:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"dubox",refresh_token:e});this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("dubox_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dubox",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=${y.duboxClientId}&redirect_uri=${e}&scope=basic,netdisk&device_id=119827642&display=page&qrcode=1`}}class hm extends lm{constructor(e,t){super(e,t)}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return!0}))}downloadFile(e){return a(this,void 0,void 0,(function*(){return!1}))}}class fm{constructor(e,t){this.baseUrl="https://proapi.115.com",this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(1),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getUploadCredentials(t){return a(this,void 0,void 0,(function*(){try{const r=yield e.get(`${this.baseUrl}/open/upload/get_token`,{headers:{Authorization:`Bearer ${t}`}});return r.status>=300||!r.data.state?(console.error("Error getting upload credentials:",r.data),null):r.data.data}catch(e){return console.error("Error occurred during get upload credentials:",e),null}}))}generateOSSPolicy(e,t,r=new Date(Date.now()+36e5)){const n={expiration:r.toISOString(),conditions:[{bucket:e},{key:t},["starts-with","$success_action_status","2"],["content-length-range",0,1073741824]]};return JSON.stringify(n)}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token;if(!e)throw new Error("No refresh token available");let t=yield this.thirdpartyRequest.refreshThirdToken({provider:"yiyiwu",refresh_token:e});if(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+18e5,!t.data.refresh_token)throw new Error("No refresh token returned");this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("yiyiwu_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"yiyiwu",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://passportapi.115.com/open/authorize?client_id=${y.yiyiwuClientId}&response_type=code&redirect_uri=${e}`}}class pm extends fm{constructor(e,t){super(e,t)}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return!0}))}downloadFile(e){return a(this,void 0,void 0,(function*(){return!1}))}}class gm{constructor(e){let{username:t,password:r,url:o,dir:s}=e;void 0===e.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=e.baseFolder,s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder,this.client=n(o,{authType:i.Password,username:t,password:r}),this.username=t,this.password=r,this.url=o,this.dir=s,this.taskQueue=new p(5)}retryOperation(e,t=1){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{let n=this.dir+"/"+r;!1===(yield this.client.exists(n.substring(0,n.lastIndexOf("/"))))&&(yield this.ensureDirectoryExists(n.substring(0,n.lastIndexOf("/"))));let i=r.split("/").pop()||"",o=new File([t],i,{lastModified:(new Date).getTime(),type:t.type}),s=this.client.getFileUploadLink(this.dir+"/"+r);const a=new URL(s);a.search="",s=a.toString();const c=btoa(this.username+":"+this.password),u=yield e.put(s,o,{headers:{Authorization:"Basic "+c},maxContentLength:1/0,maxBodyLength:1/0});return!(u.status>=300)||(console.error("Error occurred during file upload:",u),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){if(this.taskQueue.setDownloadedSize(0),-1===t.indexOf("."))return new ArrayBuffer(0);try{const r=btoa(this.username+":"+this.password);let n=this.url.endsWith("/")?this.url:this.url+"/",i=this.dir.startsWith("/")?this.dir.substring(1):this.dir;const o=yield e({url:n+i+"/"+t,method:"get",headers:{Authorization:"Basic "+r},responseType:"arraybuffer",maxContentLength:1/0,maxBodyLength:1/0,onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return o.status>=300?(console.error("Error occurred during file download:",o),!1):o.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return a(this,void 0,void 0,(function*(){try{return(yield this.client.getDirectoryContents(this.dir+"/"+e)).filter((t=>"."!==t.filename&&".."!==t.filename&&t.filename!==e)).map((e=>({name:e.basename,size:e.size||0,type:"directory"===e.type?"folder":"file",modified:e.lastmod})))}catch(t){return t.response&&404===t.response.status&&(yield this.client.createDirectory(this.dir+"/"+e)),console.error("Error listing files:",t),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){try{return yield this.client.deleteFile(this.dir+"/"+e),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}ensureDirectoryExists(e){return a(this,void 0,void 0,(function*(){try{const t=e.replace(/^\/+|\/+$/g,"").split("/").filter((e=>e.length>0));let r="";for(const e of t)r=r?`${r}/${e}`:e,(yield this.client.exists(`/${r}`))||(yield this.client.createDirectory(`/${r}`));return!0}catch(e){return console.error("Error ensuring directory exists:",e),!1}}))}}class mm{constructor(e){this.username=e.username,this.password=e.password,this.url=e.url,this.refreshTokenPromise=null,this.taskQueue=new p(3)}retryOperation(e,t=1){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{return(yield e.get(`${this.url}/list`,{params:{dir:t},auth:{username:this.username,password:this.password}})).data.files.map((e=>({name:e.name,size:e.size||0,type:"file"===e.type?"file":"folder",modified:e.modifiedTime})))||[]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{return(yield e.delete(`${this.url}/delete`,{params:{dir:t.split("/").slice(0,-1).join("/")||"",filename:t.split("/").pop()},auth:{username:this.username,password:this.password}})).data.success}catch(e){return console.error("Error deleting file:",e),!1}}))}}class ym extends mm{constructor(e){super(e)}getAuthHeader(){return`Basic ${btoa(`${this.username}:${this.password}`)}`}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=r.split("/").pop()||"",i=r.substring(0,r.lastIndexOf("/"))||"";let o=new File([t],n,{lastModified:(new Date).getTime(),type:t.type});const s=new FormData;s.append("file",o);const a=yield e.post(`${this.url}/upload?dir=${encodeURIComponent(i)}`,s,{headers:{Authorization:this.getAuthHeader(),"Content-Type":"multipart/form-data"},maxContentLength:1/0,maxBodyLength:1/0});return!(a.status>=300)||(console.error("Error occurred during file upload:",a),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=t.split("/").pop()||"",n=t.substring(0,t.lastIndexOf("/"))||"",i=yield e({url:`${this.url}/download`,method:"GET",params:{dir:n,filename:r},headers:{Authorization:this.getAuthHeader()},maxContentLength:1/0,maxBodyLength:1/0,responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return i.status>=300?(console.error("Error occurred during file download:",i),!1):i.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}const vm=["book","config","cover","font"];class bm{constructor(e,t,r){this.type=e,this.remote="dropbox"===e?new A(t,r):"microsoft"===e?new M(t,r):"google"===e?new _(t,r):"microsoft_exp"===e?new M(Object.assign(Object.assign({},t),{isExp:!0}),r):"google_exp"===e?new _(Object.assign(Object.assign({},t),{isExp:!0}),r):"s3compatible"===e?new dm(t):"webdav"===e?new gm(t):"docker"===e?new ym(t):"boxnet"===e?new E(t,r):"mega"===e?new P(t):"adrive"===e?new k(t,r):"pcloud"===e?new $(t,r):"dubox"===e?new hm(t,r):"yandex"===e?new C(t,r):"yiyiwu"===e?new pm(t,r):new N}downloadFile(e,t){return a(this,void 0,void 0,(function*(){if("cover"!==t){if(!(yield this.listFiles(t)).find((t=>e.indexOf(t)>-1)))return!1}return yield this.remote.downloadFile(t+"/"+e)}))}uploadFile(e,t,r){return a(this,void 0,void 0,(function*(){return yield this.remote.uploadFile(r,t+"/"+e)}))}deleteFile(e,t){return a(this,void 0,void 0,(function*(){return!(yield this.listFiles(t)).find((t=>e.indexOf(t)>-1))||(yield this.remote.deleteFile(t+"/"+e))}))}listFiles(e){return a(this,void 0,void 0,(function*(){return yield this.remote.listFiles(e)}))}listFileInfos(e){return a(this,void 0,void 0,(function*(){return yield this.remote.listFileInfos(e)}))}isExist(e,t){return a(this,void 0,void 0,(function*(){return(yield this.listFiles(t)).find((t=>-1!==t.indexOf(e)))}))}downloadAllFiles(){return a(this,void 0,void 0,(function*(){for(let e of vm){let t=yield this.listFiles(e);for(let r of t)yield this.downloadFile(r,e)}}))}authToken(e){return a(this,void 0,void 0,(function*(){return yield this.remote.authToken(e)}))}getAuthUrl(e){return this.remote.getAuthUrl?this.remote.getAuthUrl(e):""}getStats(){return this.remote.taskQueue.getStats()}resetCounters(){this.remote.taskQueue.resetCounters()}getDownloadedSize(){return this.remote.taskQueue.getDownloadedSize()}}const wm={notes:"SELECT * FROM notes WHERE key = ?",bookmarks:"SELECT * FROM bookmarks WHERE key = ?",books:"SELECT * FROM books WHERE key = ?",plugins:"SELECT * FROM plugins WHERE key = ?",words:"SELECT * FROM words WHERE key = ?"},km={notes:"SELECT * FROM notes WHERE bookKey = ?",bookmarks:"SELECT * FROM bookmarks WHERE bookKey = ?",words:"SELECT * FROM words WHERE bookKey = ?",books:"SELECT * FROM books WHERE key = ?"},Sm={notes:"DELETE FROM notes WHERE bookKey = ?",bookmarks:"DELETE FROM bookmarks WHERE bookKey = ?",words:"DELETE FROM words WHERE bookKey = ?"};function Em(e){for(const t in e)e.hasOwnProperty(t)&&(e[`temp-${t}`]=e[t]);return e}const xm={notes:e=>{let t=Object.assign({},e);return t.date=JSON.parse(e.date),t.tag=JSON.parse(e.tag),t},bookmarks:e=>e,books:e=>e,plugins:e=>{let t=Object.assign({},e);return e.autoValue||delete t.autoValue,e.langList?t.langList=JSON.parse(e.langList):delete t.langList,e.voiceList?t.voiceList=JSON.parse(e.voiceList):delete t.voiceList,t.config=JSON.parse(e.config),t},words:e=>{let t=Object.assign({},e);return t.date=JSON.parse(e.date),t}};var Am,Tm={sqlStatement:{createTableStatement:Em({notes:'\n CREATE TABLE IF NOT EXISTS "notes" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "date" object,\n "chapter" text,\n "chapterIndex" integer,\n "text" text,\n "cfi" text,\n "range" text,\n "notes" text,\n "percentage" text,\n "color" integer,\n "tag" array\n )\n ',bookmarks:'\n CREATE TABLE IF NOT EXISTS "bookmarks" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "cfi" text,\n "label" text,\n "percentage" text,\n "chapter" text\n );\n ',books:'\n CREATE TABLE IF NOT EXISTS "books" (\n "key" text PRIMARY KEY,\n "name" text,\n "author" text,\n "description" text,\n "md5" text,\n "cover" text,\n "format" text,\n "publisher" text,\n "size" integer,\n "page" integer,\n "path" text,\n "charset" text\n );\n ',plugins:'\n CREATE TABLE IF NOT EXISTS "plugins" (\n "key" text PRIMARY KEY,\n "type" text,\n "displayName" text,\n "icon" text,\n "version" text,\n "config" object,\n "autoValue" string,\n "langList" text,\n "voiceList" text,\n "scriptSHA256" text,\n "script" text\n );\n ',words:'\n CREATE TABLE IF NOT EXISTS "words" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "date" object,\n "word" text,\n "chapter" text\n );\n '}),getAllStatement:Em({notes:"SELECT * FROM notes",bookmarks:"SELECT * FROM bookmarks",books:"SELECT * FROM books",plugins:"SELECT * FROM plugins",words:"SELECT * FROM words"}),getPagedStatement:Em({notes:"SELECT * FROM notes LIMIT ? OFFSET ?",bookmarks:"SELECT * FROM bookmarks LIMIT ? OFFSET ?",books:"SELECT * FROM books LIMIT ? OFFSET ?",plugins:"SELECT * FROM plugins LIMIT ? OFFSET ?",words:"SELECT * FROM words LIMIT ? OFFSET ?"}),getCountStatement:Em({notes:"SELECT COUNT(*) as count FROM notes",bookmarks:"SELECT COUNT(*) as count FROM bookmarks",books:"SELECT COUNT(*) as count FROM books",plugins:"SELECT COUNT(*) as count FROM plugins",words:"SELECT COUNT(*) as count FROM words"}),saveStatement:Em({notes:"INSERT OR REPLACE INTO notes (key, bookKey, chapter, chapterIndex, text, cfi, range, notes, date, percentage, color, tag) VALUES (@key, @bookKey, @chapter, @chapterIndex, @text, @cfi, @range, @notes, @date, @percentage, @color, @tag)",bookmarks:"INSERT OR REPLACE INTO bookmarks (key, bookKey, cfi, label, percentage, chapter) VALUES (@key, @bookKey, @cfi, @label, @percentage, @chapter)",books:"INSERT OR REPLACE INTO books (key, name, author, description, md5, cover, format, publisher, size, page, path, charset) VALUES (@key, @name, @author, @description, @md5, @cover, @format, @publisher, @size, @page, @path, @charset)",plugins:"INSERT OR REPLACE INTO plugins (key, type, displayName, icon, version, config, autoValue, langList, voiceList, scriptSHA256, script) VALUES (@key, @type, @displayName, @icon, @version, @config, @autoValue, @langList, @voiceList, @scriptSHA256, @script)",words:"INSERT OR REPLACE INTO words (key, bookKey, date, word, chapter) VALUES (@key, @bookKey, @date, @word, @chapter)"}),deleteAllStatement:Em({notes:"DELETE FROM notes",bookmarks:"DELETE FROM bookmarks",books:"DELETE FROM books",plugins:"DELETE FROM plugins",words:"DELETE FROM words"}),updateStatement:Em({notes:"UPDATE notes SET bookKey = @bookKey, chapter = @chapter, chapterIndex = @chapterIndex, text = @text, cfi = @cfi, range = @range, notes = @notes, date = @date, percentage = @percentage, color = @color, tag = @tag WHERE key = @key",bookmarks:"UPDATE bookmarks SET bookKey = @bookKey, cfi = @cfi, label = @label, percentage = @percentage, chapter = @chapter WHERE key = @key",books:"UPDATE books SET name = @name, author = @author, description = @description, md5 = @md5, cover = @cover, format = @format, publisher = @publisher, size = @size, page = @page, path = @path, charset = @charset WHERE key = @key",plugins:"UPDATE plugins SET type = @type, displayName = @displayName, icon = @icon, version = @version, config = @config, autoValue = @autoValue, langList = @langList, voiceList = @voiceList, scriptSHA256 = @scriptSHA256, script = @script WHERE key = @key",words:"UPDATE words SET bookKey = @bookKey, date = @date, word = @word, chapter = @chapter WHERE key = @key"}),deleteStatement:Em({notes:"DELETE FROM notes WHERE key = ?",bookmarks:"DELETE FROM bookmarks WHERE key = ?",books:"DELETE FROM books WHERE key = ?",plugins:"DELETE FROM plugins WHERE key = ?",words:"DELETE FROM words WHERE key = ?"}),dropStatement:Em({notes:"DROP TABLE IF EXISTS notes",bookmarks:"DROP TABLE IF EXISTS bookmarks",books:"DROP TABLE IF EXISTS books",plugins:"DROP TABLE IF EXISTS plugins",words:"DROP TABLE IF EXISTS words"}),getStatement:Em(wm),getByBookKeyStatement:Em(km),getByBookKeysStatement:Em({notes:e=>`SELECT * FROM notes WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,bookmarks:e=>`SELECT * FROM bookmarks WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,words:e=>`SELECT * FROM words WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,books:e=>`SELECT * FROM books WHERE key IN (${e.map((()=>"?")).join(",")})`}),deleteByBookKeyStatement:Em(Sm)},jsonToSqlite:Em({notes:e=>{let t=Object.assign({},e);return t.date=JSON.stringify(e.date),t.tag=JSON.stringify(e.tag),t},bookmarks:e=>e,books:e=>{let t=Object.assign({},e);return t.page=e.page||0,t},plugins:e=>{let t=Object.assign({},e);return e.autoValue||(t.autoValue=null),e.langList?t.langList=JSON.stringify(e.langList):t.langList=null,e.voiceList?t.voiceList=JSON.stringify(e.voiceList):t.voiceList=null,t.config=JSON.stringify(e.config),t},words:e=>{let t=Object.assign({},e);return t.date=JSON.stringify(e.date),t}}),sqliteToJson:Em(xm)};class Cm{constructor(e,t,r,n,i,o,s,a,c,u,d,l){this.key=e,this.name=t,this.author=r,this.description=n,this.md5=i,this.cover=o,this.format=s,this.publisher=a,this.size=c,this.page=u,this.path=d,this.charset=l}}class Rm{static generateBook(e,t,r,n,i,o,s){return new Promise(((c,u)=>a(this,void 0,void 0,(function*(){try{let a,u,d,l,h,f,p,g,m="";switch([u,d,h,l,f,p]=[e,"","","","",0],t){case"pdf":case"epub":case"mobi":case"azw":case"azw3":case"fb2":g=yield s.getMetadata(),[u,d,h,l,m]=[g.name||e,g.author||"",g.description||"",g.publisher||"",g.cover||""];break;case"cbr":case"cbt":case"cbz":case"cb7":g=yield s.getMetadata(),m=g.cover;break;case"txt":g=yield s.getMetadata(o),f=g.charset}let y=t.toUpperCase();a=(new Date).getTime()+"",c(new Cm(a,u,d,h,r,m,y,l,n,p,i,f))}catch(e){console.error(e),u(e)}}))))}}Am=Rm,Rm.getRendition=(e,t,r)=>{let n,i=t.format.toUpperCase();var o,s;return"CACHE"===i?n=new r.CacheRender(e,t):"MOBI"===i||"AZW3"===i||"AZW"===i?n=new r.MobiRender(e,t):"EPUB"===i?n=new r.EpubRender(e,t):"TXT"===i?n=new r.TxtRender(e,t):"MD"===i?n=new r.MdRender(e,t):"PDF"===i?n="yes"===t.isConvertPDF?new r.PdfTextRender(e,t):new r.PdfRender(e,t):"FB2"===i?n=new r.Fb2Render(e,t):"DOCX"===i?n=new r.DocxRender(e,t):"HTML"===i||"XHTML"===i||"MHTML"===i||"HTM"===i||"XML"===i?n=new r.HtmlRender(e,t):"CBR"!==i&&"CBT"!==i&&"CBZ"!==i&&"CB7"!==i||(n=new r.ComicRender((o=e,s=new ArrayBuffer(o.byteLength),new Uint8Array(s).set(new Uint8Array(o)),s),t)),n},Rm.initMobileBook=(e,t)=>a(void 0,void 0,void 0,(function*(){try{window.ReactNativeWebView.postMessage(JSON.stringify({event:"user-agent",userAgent:navigator.userAgent}));const r=yield fetch(e);if(!r.ok)throw new Error(`Failed to download book: ${r.status} ${r.statusText}`);const n=yield r.arrayBuffer();window.ReactNativeWebView.postMessage(JSON.stringify({event:"finish-download"})),window.file_content=n;let i=Am.getRendition(n,Object.assign(Object.assign({},t),{isMobile:"yes"}),window.Kookit);window.rendition=i;let o=document.getElementById("page-area");t.format&&"TXT"===t.format.toUpperCase()?yield window.rendition.renderTo(o,t.bookLocation):yield window.rendition.renderTo(o),window.rendition.on("rendered",(()=>a(void 0,void 0,void 0,(function*(){let e=Object.assign({},window.rendition.getPosition()),r=Object.assign({},yield window.rendition.getProgress());"PDF"===t.format&&"android"===t.platform&&(e.chapterDocIndex=window.chapterDocIndex),window.ReactNativeWebView.postMessage(JSON.stringify({event:"content-loaded",bookLocation:e,progress:r})),window.rendition.tranformText()}))));const s=function(e,t){let r=0,n=null,i=null;return function(...o){const s=Date.now();s-r>=t?(r=s,e.apply(this,o)):(clearTimeout(n),i=o,n=setTimeout((()=>{r=Date.now(),e.apply(this,null!=i?i:[])}),t-(s-r)))}}((()=>a(void 0,void 0,void 0,(function*(){let e=Object.assign({},window.rendition.getPosition()),t=Object.assign({},yield window.rendition.getProgress());window.ReactNativeWebView.postMessage(JSON.stringify({event:"page-changed",bookLocation:e,progress:t}))}))),6e3);let c=null;window.rendition.on("page-changed",(()=>{c&&clearTimeout(c),c=setTimeout((()=>{s(),c=null}),window.isTouchNavigation?2e3:0)})),window.ReactNativeWebView.postMessage(JSON.stringify({event:"book-inited",chapterList:window.rendition.getChapter()}))}catch(e){window.ReactNativeWebView.postMessage(JSON.stringify({event:"error",message:"Parse book failed"}))}})),Rm.addMobileBook=(e,t,r,n,i,o,s="")=>a(void 0,void 0,void 0,(function*(){var a;try{if(window.ReactNativeWebView.postMessage(JSON.stringify({event:"user-agent",userAgent:navigator.userAgent})),"PDF"===r.toUpperCase()&&i>314572800){t=t.replace(/\.[^/.]+$/,"");let e=r.toUpperCase(),s=(new Date).getTime()+"",a=new Cm(s,t,"","",n,"",e,"",i,0,o,"");return void window.ReactNativeWebView.postMessage(JSON.stringify({event:"metadata",bookInfo:a}))}const c=yield fetch(e);if(!c.ok)throw new Error(`Failed to download book: ${c.status} ${c.statusText}`);const u=yield c.arrayBuffer();null===(a=window.ReactNativeWebView)||void 0===a||a.postMessage(JSON.stringify({event:"finish-download"})),window.file_content=u;let d=Am.getRendition(u,{format:r.toUpperCase(),readerMode:"",charset:"",animation:"",convertChinese:"no",parserRegex:s||"",isDarkMode:"no",isMobile:"yes",password:"",isConvertPDF:"no"},window.Kookit);window.rendition=d,t=t.replace(/\.[^/.]+$/,"");let l=yield Rm.generateBook(t,r,n,i,o,u,d);if(!l||!l.key)return;window.ReactNativeWebView.postMessage(JSON.stringify({event:"metadata",bookInfo:l}))}catch(e){window.ReactNativeWebView.postMessage(JSON.stringify({event:"error",message:"Parse book failed"}))}})),Rm.precacheMobileBook=(e,t)=>a(void 0,void 0,void 0,(function*(){let r=yield window.rendition.preCache(window.file_content);if(""===r)window.ReactNativeWebView.postMessage(JSON.stringify({event:"cache",cacheBase64:"",key:t}));else if("err"!==r){try{const n=`${e}/dav/${"cache-"+t+".zip"}`,i=yield fetch(n,{method:"PUT",headers:{"Content-Type":"application/octet-stream",Overwrite:"T"},body:r});if(!i.ok)throw new Error(`上传失败: ${i.status}`);console.info("文件上传成功")}catch(e){console.error("操作失败:"+e)}window.ReactNativeWebView.postMessage(JSON.stringify({event:"cache",key:t}))}else window.ReactNativeWebView.postMessage(JSON.stringify({event:"error",message:"Parse book failed"}));window.file_content=null,window.rendition=null}));const _m=m.cloudUrl,Om=m.cloudCNUrl;class Pm{constructor(e,t){this.TokenService=e,this.ConfigService=t,this.baseUrl="china"===t.getItem("serverRegion")?Om:_m,this.refreshToken="",this.accessToken="",this.streamPromise=null,this.expiresAt=0}refreshUserToken(){return a(this,void 0,void 0,(function*(){if(this.refreshToken=yield this.TokenService.getToken("refresh_token"),!this.refreshToken)return{code:401,message:"refresh token not found"};let t=(yield e.post(this.baseUrl+"/api/v1/public/user/refresh_token",{refresh_token:this.refreshToken})).data;return 200===t.code&&(yield this.TokenService.setToken("access_token",t.data.access_token),yield this.TokenService.setToken("refresh_token",t.data.refresh_token),yield this.TokenService.setToken("expires_at",(1e3*t.data.expires_at).toString()),this.accessToken=t.data.access_token,this.refreshToken=t.data.refresh_token,this.expiresAt=1e3*t.data.expires_at),t}))}requestWithRetry(e){return a(this,void 0,void 0,(function*(){return Pm.requestQueue||(Pm.requestQueue=[]),new Promise(((t,r)=>{Pm.requestQueue.push({config:e,resolve:t,reject:r}),Pm.processingQueue||this.processQueue()}))}))}isTokenValid(){return a(this,void 0,void 0,(function*(){if(this.accessToken||(this.accessToken=(yield this.TokenService.getToken("access_token"))||""),!this.expiresAt){const e=yield this.TokenService.getToken("expires_at");this.expiresAt=e?parseInt(e):(new Date).getTime()+31536e9}return""!==this.accessToken&&this.expiresAt>(new Date).getTime()+6e4}))}processQueue(){return a(this,void 0,void 0,(function*(){if(!Pm.processingQueue){Pm.processingQueue=!0;try{for(;Pm.requestQueue.length>0;){const e=Pm.requestQueue.shift();try{let t=yield this.executeRequest(e.config);e.resolve(t)}catch(t){e.reject(t)}}}finally{Pm.processingQueue=!1}}}))}executeRequest(t){return a(this,void 0,void 0,(function*(){try{try{this.accessToken=(yield this.TokenService.getToken("access_token"))||""}catch(e){console.error("Error get Token:",e)}let r="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);if(t.baseURL=this.baseUrl,t.headers)t.headers.Authorization="Bearer "+this.accessToken,t.headers["X-Request-ID"]=r;else{let e=this.ConfigService.getItem("appVersion"),n=this.ConfigService.getItem("appPlatform");t.headers={Authorization:"Bearer "+this.accessToken,"X-Request-ID":r,"X-App-Version":e||"1.0.0","X-App-Platform":n||"web"}}let n=(yield e(t)).data;if(402===n.code){let r=yield this.refreshUserToken();if(200===r.code){return t.headers=t.headers||{},t.headers.Authorization="Bearer "+this.accessToken,(yield e(t)).data}return r}return 200!==n.code&&this.ConfigService.setItem("errorLog",this.ConfigService.getItem("errorLog")+"\n"+JSON.stringify({request:t.data,url:t.url,result:n,requestID:r})),n}catch(e){return console.error("Request execution error:",e),{code:503,message:"network error",data:null}}}))}requestWithStream(e,t,r){return a(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>a(this,void 0,void 0,(function*(){try{(yield this.isTokenValid())||(yield this.refreshUserToken());let n=this.accessToken||"",i="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((o,s)=>{let c=this.ConfigService.getItem("appVersion"),u=this.ConfigService.getItem("appPlatform");const d=new r(this.baseUrl+e.url,{headers:{"Content-Type":"application/json",Authorization:"Bearer "+n,"X-Request-ID":i,"X-App-Version":c||"1.0.0","X-App-Platform":u||"web"},method:e.method,body:JSON.stringify(e.data),pollingInterval:0});d.addEventListener("open",(()=>{console.info("Connection to OpenAI established.")})),d.addEventListener("message",(e=>a(this,void 0,void 0,(function*(){if(!e.data)return;const r=JSON.parse(e.data);r.done?(d.close(),o(r)):t(r.data)})))),d.addEventListener("error",(e=>{if(console.info("Error:",e),!e.data)return;const t=JSON.parse(e.data);o(t),d.close()}))}))}finally{this.streamPromise=null}})))()),this.streamPromise}))}requestWithFetch(e,t){return a(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>a(this,void 0,void 0,(function*(){try{(yield this.isTokenValid())||(yield this.refreshUserToken());let r=this.accessToken||"",n="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((i,s)=>a(this,void 0,void 0,(function*(){let s=this.ConfigService.getItem("appVersion"),c=this.ConfigService.getItem("appPlatform");var u=new o(this.baseUrl+e.url,{headers:{"Content-Type":"text/plain",Authorization:"Bearer "+r,"X-Request-ID":n,"X-App-Version":s||"1.0.0","X-App-Platform":c||"web"},payload:JSON.stringify(e.data),method:"POST"});u.addEventListener("message",(e=>a(this,void 0,void 0,(function*(){if(!e.data)return;const r=JSON.parse(e.data);r.done?(u.close(),i(r)):t(r.data)})))),u.addEventListener("open",(e=>{console.info(e,"Connection to OpenAI established.")})),u.addEventListener("error",(e=>{if(console.error(e,"Error occurred while connecting to OpenAI"),!e.data)return;const t=JSON.parse(e.data);i(t),u.close()}))}))))}finally{this.streamPromise=null}})))()),this.streamPromise}))}}Pm.processingQueue=!1,Pm.requestQueue=[];class Im extends Pm{constructor(e,t){super(e,t)}getTransStream(e,t,r){return a(this,void 0,void 0,(function*(){const n={method:"post",url:"/api/v1/pro/reader/get_llm_trans_stream",data:e};return yield this.requestWithStream(n,t,r)}))}getTransFetch(e,t){return a(this,void 0,void 0,(function*(){const r={method:"post",url:"/api/v1/pro/reader/get_llm_trans_stream",data:e};return yield this.requestWithFetch(r,t)}))}getDictionary(e){return a(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/reader/get_llm_dict",data:e};return yield this.requestWithRetry(t)}))}getSummaryStream(e,t,r){return a(this,void 0,void 0,(function*(){const n={method:"post",url:"/api/v1/pro/reader/get_llm_sum_stream",data:e};return yield this.requestWithStream(n,t,r)}))}getAnswerStream(e,t,r){return a(this,void 0,void 0,(function*(){const n={method:"post",url:"/api/v1/pro/reader/get_llm_answer_stream",data:e};return yield this.requestWithStream(n,t,r)}))}getAnswerFetch(e,t){return a(this,void 0,void 0,(function*(){const r={method:"post",url:"/api/v1/pro/reader/get_llm_answer_stream",data:e};return yield this.requestWithFetch(r,t)}))}getSummaryFetch(e,t){return a(this,void 0,void 0,(function*(){const r={method:"post",url:"/api/v1/pro/reader/get_llm_sum_stream",data:e};return yield this.requestWithFetch(r,t)}))}getGoogleFont(e){return a(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/reader/get_google_font",data:e};return yield this.requestWithRetry(t)}))}sendToKindle(e){return a(this,void 0,void 0,(function*(){let t=new FormData;t.append("file",e.file),t.append("email",e.email),t.append("file_name",e.fileName);const r={method:"post",url:"/api/v1/pro/reader/send_to_kindle",headers:{"Content-Type":"multipart/form-data"},data:t};return yield this.requestWithRetry(r)}))}detectLanguage(e){return a(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/reader/detect_language",data:e};return yield this.requestWithRetry(t)}))}}class Mm extends Pm{constructor(e,t){super(e,t)}encryptToken(e){return a(this,void 0,void 0,(function*(){let t=e.token,r=f.encode(t),{extracted:n,remaining:i}=function(e){let t="",r="",n=[],i=1;for(;i<=e.length;)n.push(i-1),i*=2;for(let i=0;i-1){let r=t.split("#");e.encrypted_token=r[1]}const r={method:"post",url:"/api/v1/pro/thirdparty/decrypt_token",data:e};let n=yield this.requestWithRetry(r);if(t.indexOf("#")>-1&&n.data&&n.data.token){let e=t.split("#"),r=function(e,t){let r="",n=[],i=1,o=e.length+t.length;for(;i<=o;)n.push(i-1),i*=2;let s=0,a=0;for(let i=0;i{let n="";if("github"===e?n=`https://github.com/login/oauth/authorize?client_id=${y.githubClientId}&redirect_uri=${r}&scope=${v.github.scopes.join(" ")}&response_type=code`:"google"===e?n=`https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${r}&prompt=consent&response_type=code&client_id=${y.googleClientId}&scope=${v.google.scopes.join(" ")}&access_type=offline`:"facebook"===e?n=`https://www.facebook.com/v12.0/dialog/oauth?client_id=${y.facebookClientId}&redirect_uri=${r}&scope=&response_type=code`:"microsoft"===e&&(n=`https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=${y.microsoftClientId}&scope=${v.microsoft.scopes.join(" ")}&response_type=code&redirect_uri=${r}`),"manual"===t)return n;let i=JSON.stringify({deeplink:"desktop"===t?"koodo-reader://callback":"browser"===t?`${y.callbackUrl}#/login`:"",service:e});return`${n}&state=${"state|"+encodeURIComponent(i)}`}};class $m{static CompareDatabase(e,t,r){return a(this,void 0,void 0,(function*(){let n=Object.keys(e).filter((e=>e.startsWith("database.sqlite.books"))),i=Object.keys(e).filter((e=>e.startsWith("database.sqlite.notes"))),o=Object.keys(e).filter((e=>e.startsWith("database.sqlite.bookmarks"))),s=Object.keys(e).filter((e=>e.startsWith("database.sqlite.plugins"))),a=Object.keys(e).filter((e=>e.startsWith("database.sqlite.words"))),c=Object.keys(t).filter((e=>e.startsWith("database.sqlite.books"))),u=Object.keys(t).filter((e=>e.startsWith("database.sqlite.notes"))),d=Object.keys(t).filter((e=>e.startsWith("database.sqlite.bookmarks"))),l=Object.keys(t).filter((e=>e.startsWith("database.sqlite.plugins"))),h=Object.keys(t).filter((e=>e.startsWith("database.sqlite.words"))),f={books:Array.from(new Set(n.concat(c))),notes:Array.from(new Set(i.concat(u))),bookmarks:Array.from(new Set(o.concat(d))),plugins:Array.from(new Set(s.concat(l))),words:Array.from(new Set(a.concat(h)))},p={books:{save:[],update:[],delete:[],conflict:[],upload:[]},notes:{save:[],update:[],delete:[],conflict:[],upload:[]},bookmarks:{save:[],update:[],delete:[],conflict:[],upload:[]},plugins:{save:[],update:[],delete:[],conflict:[],upload:[]},words:{save:[],update:[],delete:[],conflict:[],upload:[]}},g=["books","notes","bookmarks","plugins","words"];for(let n of g)for(let i of f[n]){let o=i.split(".")[3],s=e[i],a=t[i];s?a?("save"===a.operation&&("update"!==s.operation&&"delete"!==s.operation||p[n].upload.push(o)),"delete"===a.operation&&("save"===s.operation&&(p[n].delete.push(o),e[i]=a),"update"===s.operation&&(s.timea.time&&(p[n].conflict.push(o),"cloud"===r?(p[n].delete.push(o),e[i]=a):p[n].upload.push(o))),s.operation),"update"===a.operation&&("save"===s.operation&&(p[n].update.push(o),e[i]=a),"update"===s.operation&&(s.timea.time&&p[n].upload.push(o)),"delete"===s.operation&&(s.timea.time&&p[n].upload.push(o)))):p[n].upload.push(o):(p[n].save.push(o),e[i]=a)}return{compareResult:p,syncRecords:e}}))}static CompareConfig(e,t,r){return a(this,void 0,void 0,(function*(){let n=Object.keys(e).filter((e=>e.startsWith("config.readerConfig"))),i=Object.keys(e).filter((e=>e.startsWith("config.listConfig"))),o=Object.keys(e).filter((e=>e.startsWith("config.objectConfig"))),s=Object.keys(e).filter((e=>e.startsWith("config.mapConfig"))),a=Object.keys(t).filter((e=>e.startsWith("config.readerConfig"))),c=Object.keys(t).filter((e=>e.startsWith("config.listConfig"))),u=Object.keys(t).filter((e=>e.startsWith("config.objectConfig"))),d=Object.keys(t).filter((e=>e.startsWith("config.mapConfig"))),l={readerConfig:Array.from(new Set(n.concat(a))),listConfig:Array.from(new Set(i.concat(c))),objectConfig:Array.from(new Set(o.concat(u))),mapConfig:Array.from(new Set(s.concat(d)))},h={readerConfig:{update:[],upload:[]},listConfig:{update:[],upload:[]},objectConfig:{update:[],delete:[],conflict:[],save:[],upload:[]},mapConfig:{update:[],delete:[],conflict:[],save:[],upload:[]}},f=["readerConfig","listConfig"];for(let r of f)for(let n of l[r]){let i=n,o=e[n],s=t[n];o?s?o.times.time&&h[r].upload.push(i):h[r].upload.push(i):(h[r].update.push(i),e[n]=s)}let p=["objectConfig","mapConfig"];for(let n of p)for(let i of l[n]){let o=i,s=e[i],a=t[i];s?a?("delete"===a.operation&&("update"===s.operation&&(s.timea.time&&(h[n].conflict.push(o),"cloud"===r?(h[n].delete.push(o),e[i]=a):h[n].upload.push(o))),s.operation),"update"===a.operation&&("update"===s.operation&&(s.timea.time&&h[n].upload.push(o)),"delete"===s.operation&&(s.timea.time&&h[n].upload.push(o)))):h[n].upload.push(o):(h[n].update.push(o),e[i]=a)}return{compareResult:h,syncRecords:e}}))}static compareAll(e,t,r,n,i){return a(this,void 0,void 0,(function*(){let o="cloud";if("yes"===r.getReaderConfig("isKeepLocal")){o="local";let e=r.getObjectConfig(yield n.getFingerprint(),"cloudSyncTime",{time:0,conflictMode:"cloud"}),t=yield i.getCloudConfig("config"),s=JSON.parse(t.cloudSyncTime||"{}");delete s[yield n.getFingerprint()],Object.values(s).filter((t=>"local"===t.conflictMode&&t.time>e.time)).length>0&&(o="cloud")}let{compareResult:s,syncRecords:a}=yield this.CompareDatabase(e,t,o),{compareResult:c,syncRecords:u}=yield this.CompareConfig(a,t,o),d=Object.assign(Object.assign({},s),c);return r.setAllSyncRecord(u),"local"===o&&(d.books.conflict.length>0||d.notes.conflict.length>0||d.bookmarks.conflict.length>0||d.plugins.conflict.length>0||d.words.conflict.length>0||d.objectConfig.conflict.length>0||d.mapConfig.conflict.length>0)?r.setObjectConfig(yield n.getFingerprint(),{time:(new Date).getTime(),conflictMode:"local"},"cloudSyncTime"):r.setObjectConfig(yield n.getFingerprint(),{time:(new Date).getTime(),conflictMode:"cloud"},"cloudSyncTime"),d}))}static startSync(e,t,r,n,i,o){return a(this,void 0,void 0,(function*(){let s=yield this.syncConfig(e,t,r,i,n);if(e.books.save.length>0||e.books.upload.length>0){let e=yield this.syncCover(t,o,i),r=yield this.syncBook(t,i);return[...s,...e,...r]}return s}))}static syncConfig(e,t,r,n,i){return a(this,void 0,void 0,(function*(){let o=[];for(let t of u){if(e[t].save.length+e[t].update.length>0){let n=yield i.getCloudDatabase(t);for(let i of e[t].save){let e=n.find((e=>e.key===i));e&&(yield r.saveRecord(e,t))}for(let i of e[t].update){let e=n.find((e=>e.key===i));e&&(yield r.updateRecord(e,t,!1))}}if(e[t].delete.length>0)for(let i of e[t].delete)yield r.deleteRecord(i,t),"books"===t&&(yield n.deleteOfflineBook(i))}if(e.readerConfig.update.length>0||e.listConfig.update.length>0||e.objectConfig.update.length>0||e.mapConfig.update.length>0){let r=yield i.getCloudConfig("config");for(let n of e.readerConfig.update){let e=n.split(".")[3];r.readerConfig&&t.setReaderConfig(e,JSON.parse(r.readerConfig)[e],!1)}for(let n of e.listConfig.update){let e=n.split(".")[3];r[e]&&t.setAllListConfig(JSON.parse(r[e]),e,!1)}for(let n of e.objectConfig.update){let e=n.split(".")[3],i=n.split(".")[2];r[i]&&JSON.parse(r[i])&&JSON.parse(r[i])[e]&&t.setObjectConfig(e,JSON.parse(r[i])[e],i,!1)}for(let n of e.mapConfig.update){let e=n.split(".")[3],i=n.split(".")[2];if(r[i]&&JSON.parse(r[i])&&JSON.parse(r[i])[e]){let n=JSON.parse(r[i])[e];t.setOneMapConfig(e,n,i,!1)}}}if(e.objectConfig.delete.length>0||e.mapConfig.delete.length>0){for(let r of e.objectConfig.delete){let e=r.split(".")[3],n=r.split(".")[2];t.deleteObjectConfig(e,n)}for(let r of e.mapConfig.delete){let e=r.split(".")[3],n=r.split(".")[2];t.deleteMapConfig(e,n)}}for(let t of u)e[t].upload.length>0&&o.push((()=>i.uploadDatabase(t)));return o.push((()=>i.uploadConfig("config"))),o.push((()=>i.uploadConfig("sync"))),o}))}static syncCover(e,t,r){return a(this,void 0,void 0,(function*(){let r=yield t.getLocalCoverList(),n=yield t.getCloudCoverList(),i=Array.from(new Set([...r,...n])),o=[];for(let s of i)r.includes(s)&&!n.includes(s)&&o.push((()=>t.uploadCover(s))),!r.includes(s)&&n.includes(s)&&"adrive"!==e.getItem("defaultSyncOption")&&o.push((()=>t.downloadCover(s)));return o}))}static syncBook(e,t){return a(this,void 0,void 0,(function*(){let r=yield t.getLocalBookList(),n=yield t.getCloudBookList(),i=[],o=Array.from(new Set([...r,...n]));for(let s of o){if(r.includes(s)&&!n.includes(s)){let e=s.split(".")[0],r=s.split(".")[1];i.push((()=>t.uploadBook(e,r)))}let o="yes"===e.getReaderConfig("autoOffline");if(!r.includes(s)&&n.includes(s)&&o&&"adrive"!==e.getItem("defaultSyncOption")){let e=s.split(".")[0],r=s.split(".")[1];i.push((()=>t.offlineBook(e,r.toUpperCase())))}}return i}))}static runTasksWithLimit(e,t,r){return a(this,void 0,void 0,(function*(){if("ftp"!==r&&"adrive"!==r){const r=[],n=[];for(const i of e){const e=i().then((t=>(n.splice(n.indexOf(e),1),t)));r.push(e),n.push(e),n.length>=t&&(yield Promise.race(n))}return Promise.all(r)}for(let t of e)yield t()}))}}const Um=((e,t)=>{var r;return(r=class extends e{static getReaderConfig(e){return JSON.parse(this.getItem("readerConfig")||"{}")[e]}static setReaderConfig(e,r,n=!0){let i=JSON.parse(this.getItem("readerConfig")||"{}");i[e]=r,this.setItem("readerConfig",JSON.stringify(i)),n&&this.setSyncRecord({type:"config",catergory:"readerConfig",name:t,key:e},{operation:"update",time:Date.now()})}static getAllListConfig(e){return("{}"!==this.getItem(e)&&this.getItem(e)?JSON.parse(this.getItem(e)||""):[])||[]}static deleteListConfig(e,t){let r=this.getAllListConfig(t);const n=r.indexOf(e);n>-1&&r.splice(n,1),this.setAllListConfig(r,t)}static setListConfig(e,t){let r=this.getAllListConfig(t);const n=r.indexOf(e);n>-1?(r.splice(n,1),r.unshift(e)):r.unshift(e),this.setAllListConfig(r,t)}static setAllListConfig(e,t,r=!0){this.setItem(t,JSON.stringify(e)),r&&this.setSyncRecord({type:"config",catergory:"listConfig",name:"general",key:t},{operation:"update",time:Date.now()})}static setObjectConfig(e,t,r,n=!0){let i=this.getAllObjectConfig(r);i[e]=t,n&&this.setSyncRecord({type:"config",catergory:"objectConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllObjectConfig(i,r)}static getObjectConfig(e,t,r){return this.getAllObjectConfig(t)[e]||r}static getAllObjectConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static setAllObjectConfig(e,t){this.setItem(t,JSON.stringify(e))}static deleteObjectConfig(e,t){let r=this.getAllObjectConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"objectConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllObjectConfig(r,t)}static getAllMapConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static getMapConfig(e,t){return this.getAllMapConfig(t)[e]||[]}static setAllMapConfig(e,t){this.setItem(t,JSON.stringify(e))}static setMapConfig(e,t,r){let n=this.getAllMapConfig(r);void 0===n[e]&&(n[e]=[]),t&&-1===n[e].indexOf(t)&&n[e].unshift(t),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(n,r)}static setOneMapConfig(e,t,r,n=!0){let i=this.getAllMapConfig(r);i[e]=t,n&&this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(i,r)}static deleteFromMapConfig(e,t,r){let n=this.getAllMapConfig(r),i=n[e].indexOf(t);n[e].splice(i,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(n,r)}static deleteFromAllMapConfig(e,t){let r=this.getAllMapConfig(t);Object.keys(r).forEach((n=>{let i=r[n].indexOf(e);i>-1&&(r[n].splice(i,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:n},{operation:"update",time:Date.now()}))})),this.setAllMapConfig(r,t)}static deleteMapConfig(e,t){let r=this.getAllMapConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllMapConfig(r,t)}static getFromAllMapConfig(e,t){let r=this.getAllMapConfig(t),n=[];for(let t in r)r[t]&&r[t].indexOf(e)>-1&&n.push(t);return n}static getSyncRecord(e){return JSON.parse(this.getItem("syncRecord")||"{}")[e.type+"."+e.catergory+"."+e.name+"."+e.key]||{operation:"",time:0}}static getAllSyncRecord(){return JSON.parse(this.getItem("syncRecord")||"{}")}static flushSyncRecords(){if(0===Object.keys(this.pendingSyncRecords).length)return;let e=JSON.parse(this.getItem("syncRecord")||"{}");Object.assign(e,this.pendingSyncRecords),this.setItem("syncRecord",JSON.stringify(e)),this.pendingSyncRecords={},this.syncRecordTimer=null}static setSyncRecord(e,t){const r=e.type+"."+e.catergory+"."+e.name+"."+e.key;this.pendingSyncRecords[r]=t,null!==this.syncRecordTimer&&clearTimeout(this.syncRecordTimer),this.syncRecordTimer=setTimeout((()=>{this.flushSyncRecords()}),this.DEBOUNCE_DELAY)}static setAllSyncRecord(e){this.setItem("syncRecord",JSON.stringify(e))}}).pendingSyncRecords={},r.syncRecordTimer=null,r.DEBOUNCE_DELAY=1e3,r})(class{static getItem(e){return localStorage.getItem(e)}static setItem(e,t){localStorage.setItem(e,t)}static removeItem(e){localStorage.removeItem(e)}},"browser");class Lm{static saveAllToken(e){return a(this,void 0,void 0,(function*(){if(e)if(s){const{ipcRenderer:t}=window.require("electron");t.invoke("encrypt-data",{token:e})}else{const t=yield this.encryptString(e);localStorage.setItem("encryptedToken",t)}}))}static getAllToken(){return a(this,void 0,void 0,(function*(){if(s){const{ipcRenderer:e}=window.require("electron");return yield e.invoke("decrypt-data")}{let e=localStorage.getItem("encryptedToken")||"";return e?yield this.decryptString(e):null}}))}static setToken(e,t){return a(this,void 0,void 0,(function*(){const r=JSON.parse((yield this.getAllToken())||"{}");r[e]=t,yield this.saveAllToken(JSON.stringify(r))}))}static getToken(e){return a(this,void 0,void 0,(function*(){return JSON.parse((yield this.getAllToken())||"{}")[e]||null}))}static deleteToken(e){return a(this,void 0,void 0,(function*(){const t=JSON.parse((yield this.getAllToken())||"{}");delete t[e],yield this.saveAllToken(JSON.stringify(t))}))}static encryptString(e){return a(this,void 0,void 0,(function*(){try{let t=yield this.getFingerprint();const r=yield zm(t),n="undefined"!=typeof crypto&&crypto.subtle?yield function(e,t,r={alg:"HS256",typ:"JWT"}){return a(this,void 0,void 0,(function*(){const n=Dm((new TextEncoder).encode(JSON.stringify(r))),i=Dm((new TextEncoder).encode(JSON.stringify(e))),o=(new TextEncoder).encode(`${n}.${i}`),s=yield crypto.subtle.importKey("raw",(new TextEncoder).encode(t),{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign"]);return`${n}.${i}.${Dm(yield crypto.subtle.sign("HMAC",s,o))}`}))}(e,r):function(e,t){if(!e||!t)return"";const r=h((new TextEncoder).encode(t)),n=Array.from(new Uint8Array(r)),i=(new TextEncoder).encode(e),o=new Uint8Array(i.length);for(let e=0;e=0&&r<=ay}}function Fy(e){return function(t){return null==t?void 0:t[e]}}var $y=Fy("byteLength"),Uy=Ny($y),Ly=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var Dy=Xm?function(e){return ry?ry(e)&&!Cy(e):Uy(e)&&Ly.test(Gm.call(e))}:My(!1),By=Fy("length");function zy(e,t){t=function(e){for(var t={},r=e.length,n=0;n":">",'"':""","'":"'","`":"`"},Pv=_v(Ov),Iv=_v(cv(Ov)),Mv=Wy.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},Nv=/(.)^/,Fv={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},$v=/\\|'|\r|\n|\u2028|\u2029/g;function Uv(e){return"\\"+Fv[e]}var Lv=/^\s*(\w|\$)+\s*$/;var Dv=0;function Bv(e,t,r,n,i){if(!(n instanceof t))return e.apply(r,i);var o=pv(e.prototype),s=e.apply(o,i);return uy(s)?s:o}var zv=cy((function(e,t){var r=zv.placeholder,n=function(){for(var i=0,o=t.length,s=Array(o),a=0;a1)Wv(a,t-1,r,n),i=n.length;else for(var c=0,u=a.length;c0&&(r=t.apply(this,arguments)),e<=1&&(t=null),r}}var Jv=zv(Gv,2);function Xv(e,t,r){t=Av(t,r);for(var n,i=jy(e),o=0,s=i.length;o0?0:i-1;o>=0&&o0?s=o>=0?o:Math.max(o+a,s):a=o>=0?Math.min(o+1,a):o+a+1;else if(r&&o&&a)return n[o=r(n,i)]===i?o:-1;if(i!=i)return(o=t(Qm.call(n,s,a),Iy))>=0?o+s:-1;for(o=e>0?s:a-1;o>=0&&o=3;return function(t,r,n,i){var o=!qv(t)&&jy(t),s=(o||t).length,a=e>0?0:s-1;for(i||(n=t[o?o[a]:a],a+=e);a>=0&&a=0}var gb=cy((function(e,t,r){var n,i;return Sy(t)?i=t:(t=mv(t),n=t.slice(0,-1),t=t[t.length-1]),ab(e,(function(e){var o=i;if(!o){if(n&&n.length&&(e=yv(e,n)),null==e)return;o=e[t]}return null==o?o:o.apply(e,r)}))}));function mb(e,t){return ab(e,kv(t))}function yb(e,t,r){var n,i,o=-1/0,s=-1/0;if(null==t||"number"==typeof t&&"object"!=typeof e[0]&&null!=e)for(var a=0,c=(e=qv(e)?e:av(e)).length;ao&&(o=n);else t=Av(t,r),sb(e,(function(e,r,n){((i=t(e,r,n))>s||i===-1/0&&o===-1/0)&&(o=e,s=i)}));return o}var vb=/[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;function bb(e){return e?Ry(e)?Qm.call(e):fy(e)?e.match(vb):qv(e)?ab(e,bv):av(e):[]}function wb(e,t,r){if(null==t||r)return qv(e)||(e=av(e)),e[Cv(e.length-1)];var n=bb(e),i=By(n);t=Math.max(Math.min(t,i),0);for(var o=i-1,s=0;s1&&(n=Sv(n,t[1])),t=Gy(e)):(n=Tb,t=Wv(t,!1,!1),e=Object(e));for(var i=0,o=t.length;i1&&(r=t[1])):(t=ab(Wv(t,!1,!1),String),n=function(e,r){return!pb(t,r)}),Cb(e,n,r)}));function _b(e,t,r){return Qm.call(e,0,Math.max(0,e.length-(null==t||r?1:t)))}function Ob(e,t,r){return null==e||e.length<1?null==t||r?void 0:[]:null==t||r?e[0]:_b(e,e.length-t)}function Pb(e,t,r){return Qm.call(e,null==t||r?1:t)}var Ib=cy((function(e,t){return t=Wv(t,!0,!0),lb(e,(function(e){return!pb(t,e)}))})),Mb=cy((function(e,t){return Ib(e,t)}));function Nb(e,t,r,n){ly(t)||(n=r,r=t,t=!1),null!=r&&(r=Av(r,n));for(var i=[],o=[],s=0,a=By(e);st?(n&&(clearTimeout(n),n=null),a=u,s=e.apply(i,o),n||(i=o=null)):n||!1===r.trailing||(n=setTimeout(c,d)),s};return u.cancel=function(){clearTimeout(n),a=0,n=i=o=null},u},debounce:function(e,t,r){var n,i,o,s,a,c=function(){var u=Rv()-i;t>u?n=setTimeout(c,t-u):(n=null,r||(s=e.apply(a,o)),n||(o=a=null))},u=cy((function(u){return a=this,o=u,i=Rv(),n||(n=setTimeout(c,t),r&&(s=e.apply(a,o))),s}));return u.cancel=function(){clearTimeout(n),n=o=a=null},u},wrap:function(e,t){return zv(t,e)},negate:Qv,compose:function(){var e=arguments,t=e.length-1;return function(){for(var r=t,n=e[t].apply(this,arguments);r--;)n=e[r].call(this,n);return n}},after:function(e,t){return function(){if(--e<1)return t.apply(this,arguments)}},before:Gv,once:Jv,findKey:Xv,findIndex:Yv,findLastIndex:eb,sortedIndex:tb,indexOf:nb,lastIndexOf:ib,find:ob,detect:ob,findWhere:function(e,t){return ob(e,wv(t))},each:sb,forEach:sb,map:ab,collect:ab,reduce:ub,foldl:ub,inject:ub,reduceRight:db,foldr:db,filter:lb,select:lb,reject:function(e,t,r){return lb(e,Qv(Av(t)),r)},every:hb,all:hb,some:fb,any:fb,contains:pb,includes:pb,include:pb,invoke:gb,pluck:mb,where:function(e,t){return lb(e,wv(t))},max:yb,min:function(e,t,r){var n,i,o=1/0,s=1/0;if(null==t||"number"==typeof t&&"object"!=typeof e[0]&&null!=e)for(var a=0,c=(e=qv(e)?e:av(e)).length;an||void 0===r)return 1;if(re.map((e=>e.name)),qb=e=>e.map((e=>e.author||"")),Wb=e=>e.map((e=>e.key)),Hb=(e,t)=>{let r=[];for(let n=0;n-1&&r.push(t.indexOf(e[n]));return r.length{if(-1===e.indexOf(n))for(let e=0;ee-Math.min(...r))))]};class Kb{static sortBooks(e,t,r){let n=e.map((e=>e.key)),i=(e=>e.getAllListConfig("recentBooks"))(r);if(1===t.sort||0===t.sort)return 1===t.order?Hb(i,n).reverse():Hb(i,n);if(2===t.sort){let r=jb(e),n=jb(e).sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"})));return 1===t.order?Hb(n,r).reverse():Hb(n,r)}if(3===t.sort){let r=[];for(let t=0;t{let t=e.getAllObjectConfig("readingTime");var r=[];for(let e in t)r.push([e,t[e]]);return r.sort((function(e,t){return e[1]-t[1]})),Object.keys(t)})(r),i=Wb(e);return 1===t.order?Hb(zb.union(n,i),i).reverse():Hb(zb.union(n,i),i)}if(5===t.sort){let r=qb(e),n=qb(e).sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"})));return 1===t.order?Hb(n,r).reverse():Hb(n,r)}if(6===t.sort){let n=(e=>{let t=e.getAllObjectConfig("recordLocation");var r=[];for(let e in t)r.push([e,t[e].percentage||0]);return r.sort((function(e,t){return e[1]-t[1]})),r.map((e=>e[0]))})(r),i=Wb(e);return 1===t.order?Hb(n,i).reverse():Hb(n,i)}}static sortNotes(e,t,r=[]){if(3===t.sort){let r=zb.clone(e).reverse(),n=zb.uniq(e.map((e=>({chapter:e.chapter,chapterIndex:e.chapterIndex}))));n=1===t.order?zb.sortBy(n,"chapterIndex"):zb.sortBy(n,"chapterIndex").reverse();let i=zb.uniq(n.map((e=>e.chapter))),o={};return i.forEach((e=>{o[e]=[]})),r.forEach((e=>{o[e.chapter].push(e)})),i.map((e=>({group:e,notes:o[e]})))||[]}if(2===t.sort){let r=zb.clone(e).reverse(),n=zb.uniq(e.map((e=>e.date.year+"-"+e.date.month+"-"+e.date.day)));1===t.order?n.sort():n.sort().reverse();let i={};return n.forEach((e=>{i[e]=[]})),r.forEach((e=>{n.forEach((t=>{t===e.date.year+"-"+e.date.month+"-"+e.date.day&&i[t].push(e)}))})),i||{}}if(1===t.sort){let n=zb.clone(e).reverse(),i=zb.uniq(e.map((e=>{let t=zb.findLastIndex(r,{key:e.bookKey});return t>-1?r[t].name:""})));1===t.order?i.sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"}))):i.sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"}))).reverse();let o={};return i.forEach((e=>{o[e]=[]})),n.forEach((e=>{i.forEach((t=>{let n=zb.findLastIndex(r,{key:e.bookKey});n>-1&&t===r[n].name&&o[t].push(e)}))})),o||{}}}static sortBookmarks(e,t){if(3===t.sort){let r=zb.clone(e).reverse(),n=zb.uniq(e.map((e=>({chapter:e.chapter,chapterIndex:parseInt(JSON.parse(e.cfi).chapterDocIndex)}))));n=1===t.order?zb.sortBy(n,"chapterIndex"):zb.sortBy(n,"chapterIndex").reverse();let i=zb.uniq(n.map((e=>e.chapter))),o={};return i.forEach((e=>{o[e]=[]})),r.forEach((e=>{o[e.chapter].push(e)})),i.map((e=>({group:e,bookmarks:o[e]})))||[]}}}class Vb{static getDefaultCss(e){return`::selection{background:#f3a6a68c}::-moz-selection{background:#f3a6a68c}.kookit-note:hover{cursor:pointer;}body,html{margin: 0px !important; padding: 0px !important; font-size: 18px;writing-mode: horizontal-tb !important;}.kookit-text{${this.getCustomCss(e)}}.kookit-title{${this.getCustomCss(e,!0)}}code,pre{white-space: pre-wrap;}p{margin-block: 0;margin-inline: 0;}rt span{font-size: unset !important;}${"yes"===e.getReaderConfig("isOverwriteLink")?"a{color: #0066cc !important; text-decoration: underline !important; cursor: pointer !important;}a:hover{color: #004080 !important;}a:visited{color: #6600cc !important;}":""}${"yes"===e.getReaderConfig("isMergeWord")?`h1{font-size: ${e.getReaderConfig("fontSize")||18}px !important;}`:""}${this.getComicCss(e)}`}static getCustomCss(e,t=!1){return`font-size: ${t?"":e.getReaderConfig("fontSize")?e.getReaderConfig("fontSize"):""}px !important;line-height: ${e.getReaderConfig("lineHeight")||"1.25"} !important;font-family: ${e.getReaderConfig("fontFamily")||""} !important;background-color: transparent;color: ${e.getReaderConfig("textColor")?e.getReaderConfig("textColor"):"rgba(44,47,49,1)"===e.getReaderConfig("backgroundColor")||"night"===e.getReaderConfig("appSkin")||"system"===e.getReaderConfig("appSkin")&&"yes"===e.getReaderConfig("isOSNight")?"white":""};letter-spacing: ${e.getReaderConfig("letterSpacing")||""}px !important;text-align: ${e.getReaderConfig("textAlign")?e.getReaderConfig("textAlign"):""} !important;font-weight: ${"yes"===e.getReaderConfig("isBold")?"bold !important":""};font-style: ${"yes"===e.getReaderConfig("isItalic")?"italic !important":""};text-shadow: ${"yes"===e.getReaderConfig("isShadow")?"2px 2px 2px #cccccc !important":""};text-indent: ${"yes"!==e.getReaderConfig("isIndent")||t?"yes"===e.getReaderConfig("isIndent")&&t?"0em !important":"":"2em !important"};text-decoration: ${"yes"===e.getReaderConfig("isUnderline")?"underline !important":""};padding-bottom: ${e.getReaderConfig("paraSpacing")||0}px !important;word-wrap: break-word !important; writing-mode: horizontal-tb !important; max-width: 100% !important;overflow: visible !important; margin-top: 0 !important; margin-bottom: 0 !important;`}static getComicCss(e){return`div.fs{height:unset !important;width:100% !important;min-height:100% !important;position:relative;text-align:left;vertical-align:middle;}div.fs div{height:unset !important;min-height:100% !important;width:100% !important;margin:auto;text-align:center;vertical-align:middle;}.div_view{height:unset !important;width:100% !important;min-height:100% !important;margin:auto;text-align:center;vertical-align:middle;}.singlePage{${"scroll"!==e.getReaderConfig("readerMode")?"":"max-width: 100% !important;"}${"scroll"!==e.getReaderConfig("readerMode")?"":"max-height: unset !important;"}height:${"scroll"!==e.getReaderConfig("readerMode")?"100%":"unset"}!important;width:100%!important;position: unset !important;}`}}class Qb{static mergeArray(e,t){var r=[];for(let t of e)r.push(t);for(let i of t){var n=!0;for(let t of e)if(i===t){n=!1;break}n&&r.push(i)}return r}static fuzzyQuery(e,t){for(var r=[],n=0;n-1&&r.push(n);return r}static mouseSearch(e){let t=document.querySelector(".header-search-box").value.toLowerCase(),r=[],n=[];if(!e)return[];e.forEach((e=>{r.push(e.name.toLowerCase()),n.push(e.author.toLowerCase())}));let i=this.fuzzyQuery(r,t),o=this.fuzzyQuery(n,t);return this.mergeArray(i,o)}static keywordSearch(e,t){let r=[],n=[];if(!t)return[];t.forEach((e=>{r.push(e.name.toLowerCase()),n.push(e.author.toLowerCase())}));let i=this.fuzzyQuery(r,e),o=this.fuzzyQuery(n,e);return this.mergeArray(i,o)}static keySearch(e,t){if(e&&13===e.keyCode){let r=[],n=[];if(!t)return[];t.forEach((e=>{r.push(e.name.toLowerCase()),n.push(e.author.toLowerCase())}));let i=this.fuzzyQuery(r,e.target.value.toLowerCase()),o=this.fuzzyQuery(n,e.target.value.toLowerCase());return this.mergeArray(i,o)}}static mouseNoteSearch(e){let t=document.querySelector(".header-search-box").value.toLowerCase(),r=[],n=[];e.forEach((e=>{r.push(e.notes.toLowerCase()),n.push(e.text.toLowerCase())}));let i=this.fuzzyQuery(r,t),o=this.fuzzyQuery(n,t);return this.mergeArray(i,o)}static keyNoteSearch(e,t){if(e&&13===e.keyCode){let r=[],n=[];t.forEach((e=>{r.push(e.notes.toLowerCase()),n.push(e.text.toLowerCase())}));let i=this.fuzzyQuery(r,e.target.value.toLowerCase()),o=this.fuzzyQuery(n,e.target.value.toLowerCase());return this.mergeArray(i,o)}}}export{Rm as BookHelper,g as CommonTool,Um as ConfigService,b as KookitConfig,Fm as LoginHelper,Im as ReaderRequest,Qb as SearchUtil,Kb as SortUtil,Tm as SqlStatement,Vb as StyleHelper,$m as SyncHelper,bm as SyncUtil,Mm as ThirdpartyRequest,Lm as TokenService,Nm as UserRequest}; +import e from"axios";import{Storage as t}from"megajs";import{Buffer as r}from"buffer";import{createClient as n,AuthType as i}from"webdav/dist/web/index.js";import{SSE as o}from"sse.js";import{isElectron as s}from"react-device-detect";function a(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))}const c=e=>"json"===e?"application/json":["jpg","jpeg","png","gif","bmp"].includes(e)?"image/"+e:"zip"===e?"application/zip":"epub"===e?"application/epub+zip":"txt"===e?"text/plain":"pdf"===e?"application/pdf":"mobi"===e?"application/x-mobipocket-ebook":"azw3"===e||"azw"===e?"application/vnd.amazon.ebook":"cbz"===e?"application/x-cbz":"cbr"===e?"application/x-cbr":"cbt"===e?"application/x-cbt":"cb7"===e?"application/x-cb7":"fb2"===e?"application/x-fictionbook+xml":"html"===e?"text/html":"css"===e?"text/css":"js"===e?"application/javascript":"xml"===e?"application/xml":"xhtml"===e?"application/xhtml+xml":"opf"===e?"application/oebps-package+xml":"ncx"===e?"application/x-dtbncx+xml":"mp3"===e?"audio/mpeg":"wav"===e?"audio/wav":"ogg"===e?"audio/ogg":"mp4"===e?"video/mp4":"webm"===e?"video/webm":"avi"===e?"video/x-msvideo":"wmv"===e?"video/x-ms-wmv":"flv"===e?"video/x-flv":"m3u8"===e?"application/x-mpegURL":"ts"===e?"video/MP2T":"3gp"===e?"video/3gpp":"3g2"===e?"video/3gpp2":"db"===e?"application/x-sqlite3":void 0,u=["books","notes","bookmarks","plugins","words"],d=e=>{const t=atob(e),r=t.length,n=new Uint8Array(r);for(let e=0;e{let t="";const r=new Uint8Array(e),n=r.byteLength;for(let e=0;ee>>>t|e<<32-t,n=(e,t,r)=>e&t^~e&r,i=(e,t,r)=>e&t^e&r^t&r,o=e=>r(e,2)^r(e,13)^r(e,22),s=e=>r(e,6)^r(e,11)^r(e,25),a=e=>r(e,7)^r(e,18)^e>>>3,c=e=>r(e,17)^r(e,19)^e>>>10,u=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],d=8*e.length,l=(960-(8*e.length+1)%512)%512,h=e.length+Math.ceil((l+1)/8)+8,f=new Uint8Array(h);f.set(e),f[e.length]=128;new DataView(f.buffer,f.byteLength-8).setBigUint64(0,BigInt(d),!1);for(let e=0;e>>0;let[l,h,p,g,m,y,v,b]=u;for(let e=0;e<64;e++){const r=b+s(m)+n(m,y,v)+t[e]+d[e]>>>0,a=o(l)+i(l,h,p)>>>0;b=v,v=y,y=m,m=g+r>>>0,g=p,p=h,h=l,l=r+a>>>0}u[0]=u[0]+l>>>0,u[1]=u[1]+h>>>0,u[2]=u[2]+p>>>0,u[3]=u[3]+g>>>0,u[4]=u[4]+m>>>0,u[5]=u[5]+y>>>0,u[6]=u[6]+v>>>0,u[7]=u[7]+b>>>0}const p=new ArrayBuffer(32),g=new DataView(p);return u.forEach(((e,t)=>{g.setUint32(4*t,e,!1)})),p}const f={_chars:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",encode(e){if("string"!=typeof e)throw new Error("Input must be a string");let t="",r=0;const n=this._stringToUtf8Bytes(e),i=n.length;for(;r>2,c=(3&e)<<4|o>>4,u=(15&o)<<2|s>>6,d=63&s;t+=this._chars.charAt(a),t+=this._chars.charAt(c),t+=r-2>=i?"=":this._chars.charAt(u),t+=r-1>=i?"=":this._chars.charAt(d)}return t},decode(e){if("string"!=typeof e)throw new Error("Input must be a string");for(e=e.replace(/[^A-Za-z0-9+/]/g,"");e.length%4!=0;)e+="=";const t=[];let r=0;const n=e.length;for(;r>4,c=(15&i)<<4|o>>2,u=(3&o)<<6|s;t.push(a),-1!==o&&t.push(c),-1!==s&&t.push(u)}return this._utf8BytesToString(t)},_stringToUtf8Bytes(e){const t=[];for(let r=0;r>6),t.push(128|63&n);else if(55296==(64512&n)&&r+1>18),t.push(128|e>>12&63),t.push(128|e>>6&63),t.push(128|63&e)}else t.push(239,191,189),r--}else t.push(224|n>>12),t.push(128|n>>6&63),t.push(128|63&n)}return t},_utf8BytesToString(e){let t="",r=0;for(;r65535){const r=e-65536;t+=String.fromCharCode(55296|r>>10),t+=String.fromCharCode(56320|1023&r)}else t+=String.fromCharCode(e)}else t+="�"}else t+="�"}return t},encodeURL(e){return this.encode(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")},decodeURL(e){for(e=e.replace(/-/g,"+").replace(/_/g,"/");e.length%4;)e+="=";return this.decode(e)}};class p{constructor(e){this.queue=[],this.runningTasks=0,this.totalTasks=0,this.completedTasks=0,this.hasFailedTasks=!1,this.downloadedSize=0,this.maxConcurrency=e}addTask(e){return a(this,void 0,void 0,(function*(){return this.totalTasks++,new Promise(((t,r)=>{if(this.hasFailedTasks)return void r(new Error("Task queue has failed tasks. No new tasks can be added."));const n=()=>a(this,void 0,void 0,(function*(){try{this.runningTasks++;const r=yield e();return this.completedTasks++,t(r),r}catch(e){throw this.completedTasks++,r(e),e}finally{this.runningTasks--,this.runNext()}}));this.runningTasks0&&this.runningTasks"application/json"===e?"json":e.startsWith("image/")?e.split("/")[1]:"application/zip"===e?"zip":"application/epub+zip"===e?"epub":"text/plain"===e?"txt":"application/pdf"===e?"pdf":"application/x-mobipocket-ebook"===e?"mobi":"application/vnd.amazon.ebook"===e?"azw3":"application/x-cbz"===e?"cbz":"application/x-cbr"===e?"cbr":"application/x-cbt"===e?"cbt":"application/x-cb7"===e?"cb7":"application/x-fictionbook+xml"===e?"fb2":"text/html"===e?"html":"text/css"===e?"css":"application/javascript"===e?"js":"application/xml"===e?"xml":"application/xhtml+xml"===e?"xhtml":"application/oebps-package+xml"===e?"opf":"application/x-dtbncx+xml"===e?"ncx":"audio/mpeg"===e?"mp3":"audio/wav"===e?"wav":"audio/ogg"===e?"ogg":"video/mp4"===e?"mp4":"video/webm"===e?"webm":"video/x-msvideo"===e?"avi":"video/x-ms-wmv"===e?"wmv":"video/x-flv"===e?"flv":"application/x-mpegURL"===e?"m3u8":"video/MP2T"===e?"ts":"video/3gpp"===e?"3gp":"video/3gpp2"===e?"3g2":"application/x-sqlite3"===e?"db":"",databaseList:u,configList:["themeColors","readingTime","cloudSyncTime","lastSyncTime","recentBooks","recentAdd","deletedBooks","favoriteBooks","shelfList","txtParsers","noteTags","recordLocation","sortedShelfList","kindleDeviceList"],copyArrayBuffer:e=>{var t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(new Uint8Array(e)),t},base64ToArrayBuffer:d,arrayBufferToBase64:l,generateSHA256Hash:function(e){return a(this,void 0,void 0,(function*(){const t=(new TextEncoder).encode(e),r="undefined"!=typeof crypto&&crypto.subtle?yield crypto.subtle.digest("SHA-256",t):h(t),n=Array.from(new Uint8Array(r)).map((e=>e.toString(16).padStart(2,"0"))).join("");return n}))},EmailProviders:["gmail.com","qq.com","163.com","yahoo.com","sina.com","sina.cn","126.com","outlook.com","yeah.net","foxmail.com","hotmail.com","protonmail.com","proton.me","icloud.com","mail.com","live.com","aliyun.com","sohu.com","yandex.com","naver.com","mail.ru","yahoo.co.jp","139.com","189.com"],Base64:f};const m={cloudUrl:"https://cloud.koodoreader.com",cloudCNUrl:"https://cloud.koodoreader.cn",testUrl:"https://cloudtest.960960.xyz",devUrl:"http://192.168.28.159:8000"},y={callbackUrl:"https://web.koodoreader.com/",cnCallbackUrl:"https://web.koodoreader.cn/",dropboxClientId:"vnc67byrssocvy1",yandexClientId:"e5305b62f53844b1994f77a840fd0a37",pcloudClientId:"pg8ten0B3vH",boxClientId:"ltimecqanmpxoaicn9qw3es6l3sdl1ya",duboxClientId:"kc0Ls6xLZugGgLLVhZ8yhUU1cRkRoKNU",yiyiwuClientId:"100197197",microsoftClientId:"506df58a-29ab-4020-afc5-6f423dc80f35",googleClientId:"1051055003225-ph1f5fvh328dhv7bco5jitlnfhg6ks2t.apps.googleusercontent.com",appleClientId:"com.koodoreader.auth",facebookClientId:"2845583825559500",githubClientId:"Ov23liJVzfvJMMEEZ8v2",adriveClientId:"a128ae7b9c094545af623de61dc0a1ef"},v={google:{clientId:y.googleClientId,scopes:["openid email profile"],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{prompt:"consent",scope:"openid email profile"}},microsoft:{clientId:y.microsoftClientId,scopes:["openid","profile","User.Read","offline_access"],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:"openid profile User.Read offline_access"}},facebook:{clientId:y.facebookClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:""}},github:{clientId:y.githubClientId,scopes:["user:email"],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:"user:email"}},apple:{clientId:y.appleClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{}},email:{clientId:"",scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:""}}};var b={CloudConfig:m,ThirdpartyConfig:y,LoginAuthRequest:v,LoginDiscovery:{microsoft:{authorizationEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",tokenEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/token"},google:{authorizationEndpoint:"https://accounts.google.com/o/oauth2/v2/auth",tokenEndpoint:"https://oauth2.googleapis.com/token"},facebook:{authorizationEndpoint:"https://www.facebook.com/v12.0/dialog/oauth",tokenEndpoint:"https://graph.facebook.com/v12.0/oauth/access_token"},github:{authorizationEndpoint:"https://github.com/login/oauth/authorize",tokenEndpoint:"https://github.com/login/oauth/access_token"},apple:{authorizationEndpoint:"https://appleid.apple.com/auth/authorize",tokenEndpoint:"https://appleid.apple.com/auth/token"},email:{authorizationEndpoint:"",tokenEndpoint:""}},DriveAuthRequest:{dropbox:{clientId:y.dropboxClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{token_access_type:"offline"}},yandex:{clientId:y.yandexClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{response_type:"code",force_confirm:"true"}},boxnet:{clientId:y.boxClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{grant_type:"authorization_code",box_subject_type:"enterprise",scope:"root_readwrite"}},pcloud:{clientId:y.pcloudClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{grant_type:"authorization_code"}},dubox:{clientId:y.duboxClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{response_type:"code",scope:"basic,netdisk",device_id:"119827642",qrcode:"1"}},yiyiwu:{clientId:y.yiyiwuClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{response_type:"code"}},adrive:{clientId:y.adriveClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{grant_type:"authorization_code",scope:"user:base,file:all:write,file:all:read"}},microsoft:{clientId:y.microsoftClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:"files.readwrite.appfolder offline_access"}},google:{clientId:y.googleClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{prompt:"consent",scope:"https://www.googleapis.com/auth/drive.file",access_type:"offline"}},microsoft_exp:{clientId:y.microsoftClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{scope:"files.readwrite.all offline_access"}},google_exp:{clientId:y.googleClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:y.callbackUrl,extraParams:{prompt:"consent",scope:"https://www.googleapis.com/auth/drive",access_type:"offline"}}},DriveDiscovery:{dropbox:{authorizationEndpoint:"https://www.dropbox.com/oauth2/authorize",tokenEndpoint:"https://www.dropbox.com/oauth2/token"},yandex:{authorizationEndpoint:"https://oauth.yandex.com/authorize",tokenEndpoint:"https://oauth.yandex.com/token"},boxnet:{authorizationEndpoint:"https://account.box.com/api/oauth2/authorize",tokenEndpoint:"https://api.box.com/oauth2/token"},pcloud:{authorizationEndpoint:"https://my.pcloud.com/oauth2/authorize",tokenEndpoint:"https://api.pcloud.com/oauth2_token"},dubox:{authorizationEndpoint:"https://openapi.baidu.com/oauth/2.0/authorize",tokenEndpoint:"https://openapi.baidu.com/oauth/2.0/token"},yiyiwu:{authorizationEndpoint:"https://passportapi.115.com/open/authorize",tokenEndpoint:"https://passportapi.115.com/open/authorize"},adrive:{authorizationEndpoint:"https://openapi.alipan.com/oauth/authorize",tokenEndpoint:"https://openapi.alipan.com/oauth/token"},microsoft:{authorizationEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",tokenEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/token"},google:{authorizationEndpoint:"https://accounts.google.com/o/oauth2/v2/auth",tokenEndpoint:"https://oauth2.googleapis.com/token"},microsoft_exp:{authorizationEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",tokenEndpoint:"https://login.microsoftonline.com/common/oauth2/v2.0/token"},google_exp:{authorizationEndpoint:"https://accounts.google.com/o/oauth2/v2/auth",tokenEndpoint:"https://oauth2.googleapis.com/token"}}};class w{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.driveId="",this.refreshTokenPromise=null,this.taskQueue=new p(1),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getDriveId(){return a(this,void 0,void 0,(function*(){if(this.driveId)return this.driveId;const t=yield this.refreshToken(),r=yield e.post("https://openapi.alipan.com/adrive/v1.0/user/getDriveInfo",{},{headers:{Authorization:`Bearer ${t}`}});return this.driveId=r.data.default_drive_id,this.driveId}))}getFolderIdByPath(t){return a(this,void 0,void 0,(function*(){const r=yield this.refreshToken(),n=yield this.getDriveId();try{try{const i=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:n,file_path:t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(i.data)return i.data.file_id}catch(i){const o=t.split("/").filter((e=>e));let s="",a="root";for(const t of o){s+="/"+t;try{a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:n,file_path:s},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}catch(i){a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:n,parent_file_id:a,name:t,type:"folder",check_name_mode:"refuse"},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}}return a}}catch(e){return console.error("Error getting/creating folder by path:",e),""}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield this.getDriveId(),i=yield this.getFolderIdByPath(this.baseFolder+"/"+t);let o=[],s="",a=!0;for(;a;){const t=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/list",{drive_id:n,parent_file_id:i,marker:s||void 0},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),c=t.data.items||[];o=o.concat(c),s=t.data.next_marker,a=!!s&&100===c.length}return[...new Set(o.map((e=>({name:e.name,size:e.size,type:e.type,modified:e.updated_at}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield this.getDriveId(),i=yield this.getFolderIdByPath(this.baseFolder+"/"+t);return!i||(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/delete",{drive_id:n,file_id:i},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}checkExists(t){var r;return a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken(),i=yield this.getDriveId(),o=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:t},{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"}});(null===(r=o.data)||void 0===r?void 0:r.file_id)&&(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/recyclebin/trash",{drive_id:i,file_id:o.data.file_id},{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"}}))}catch(e){}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"adrive",refresh_token:e});if(!t.data.access_token)return"";this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("adrive_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"adrive",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://openapi.alipan.com/oauth/authorize?${new URLSearchParams({response_type:"code",client_id:y.adriveClientId,redirect_uri:e,grant_type:"authorization_code",scope:"user:base,file:all:write,file:all:read"}).toString()}`}}class k extends w{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return new Promise(((n,i)=>a(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken(),o=yield this.getDriveId(),s=r.substring(0,r.lastIndexOf("/")),a=r.substring(r.lastIndexOf("/")+1),c=yield this.getFolderIdByPath(this.baseFolder+"/"+s),u=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:o,parent_file_id:c,name:a,type:"file",check_name_mode:"ignore"},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}}),{file_id:d,upload_id:l,part_info_list:h}=u.data;yield e.put(h[0].upload_url,t,{headers:{"Content-Type":"application/octet-stream"}}),yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/complete",{drive_id:o,file_id:d,upload_id:l},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}}),n(!0)}catch(e){console.error("Error uploading file:",e),n(!1)}}))))}))}downloadFile(t){return new Promise(((r,n)=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const n=yield this.refreshToken(),i=yield this.getDriveId(),o=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:this.baseFolder+"/"+t},{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"}})).data.file_id,s=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/getDownloadUrl",{drive_id:i,file_id:o},{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"}}),a=yield e.get(s.data.url,{responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});r(a.data)}catch(e){console.error("Error downloading file:",e),r(!1)}}))))}}class S{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getFolderIdByPath(t){return a(this,void 0,void 0,(function*(){if(""==t)return"0";const r=yield this.refreshToken(),n=t.split("/");let i="0";for(const t of n){const n=`https://api.box.com/2.0/folders/${i}/items?fields=id,name&type=folder&limit=1000`;try{const o=(yield e.get(n,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===t&&"folder"===e.type));if(o)i=o.id;else{const n={name:t,parent:{id:i},type:"folder"};i=(yield e.post("https://api.box.com/2.0/folders",n,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}}catch(e){return console.error("Error occurred during folder creation:",e),""}}return i}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=this.baseFolder+"/"+t;for(;n.startsWith("/");)n=n.substring(1);let i=yield this.getFolderIdByPath(n),o=[],s=0,a=!0;const c=1e3;for(;a;){const t=yield e.get(`https://api.box.com/2.0/folders/${i}/items`,{params:{limit:c,offset:s},headers:{Authorization:`Bearer ${r}`}}),n=t.data.entries||[];o=o.concat(n),s+=n.length,a=n.length===c&&t.data.total_count>s}return[...new Set(o.map((e=>({name:e.name,size:e.size||0,type:e.type,modified:e.content_modified_at}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=t.substring(0,t.lastIndexOf("/")),i=t.substring(t.lastIndexOf("/")+1);let o=this.baseFolder+"/"+n;for(;o.startsWith("/");)o=o.substring(1);const s=yield this.getFolderIdByPath(o);if(!s)return!0;const a=`https://api.box.com/2.0/folders/${s}/items?fields=id,name&type=file&limit=1000`,c=(yield e.get(a,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===i&&"file"===e.type));return!c||(yield e.delete(`https://api.box.com/2.0/files/${c.id}`,{headers:{Authorization:`Bearer ${r}`}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"boxnet",refresh_token:e});if(!t.data.access_token)return"";this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("boxnet_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"boxnet",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://account.box.com/api/oauth2/authorize?${new URLSearchParams({response_type:"code",client_id:y.boxClientId,redirect_uri:e,grant_type:"authorization_code",box_subject_type:"enterprise",scope:"root_readwrite"}).toString()}`}}class E extends S{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken(),i=r.substring(0,r.lastIndexOf("/")),o=r.substring(r.lastIndexOf("/")+1);let s=this.baseFolder+"/"+i;for(;s.startsWith("/");)s=s.substring(1);const a=yield this.getFolderIdByPath(s);if(!a)throw new Error("Folder not found");const c=(yield this.listFiles(i)).find((e=>e===o));c&&(yield this.deleteFileWithoutQueue(i+"/"+o));let u=new File([t],o,{lastModified:(new Date).getTime(),type:t.type});const d=new FormData;d.append("file",u),d.append("parent_id",a);const l=yield e.post("https://upload.box.com/api/2.0/files/content",d,{headers:{Authorization:`Bearer ${n}`,"Content-Type":"multipart/form-data"},params:{if_match:"false",fields:"name,id"},maxContentLength:1/0,maxBodyLength:1/0});return!(l.status>=300)||(console.error("Error occurred during file upload:",l),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken(),n=t.substring(0,t.lastIndexOf("/")),i=t.substring(t.lastIndexOf("/")+1);let o=this.baseFolder+"/"+n;for(;o.startsWith("/");)o=o.substring(1);const s=yield this.getFolderIdByPath(o);if(!s)return console.error("Folder not found"),!0;const a=`https://api.box.com/2.0/folders/${s}/items?fields=id,name&type=file&limit=1000`,c=(yield e.get(a,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===i&&"file"===e.type));if(!c)return console.error("File not found:",i),!0;const u=yield e({url:`https://api.box.com/2.0/files/${c.id}/content`,method:"get",headers:{Authorization:`Bearer ${r}`},responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return u.status>=300?(console.error("Error occurred during file download:",u),!1):u.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class x{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3)}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=[],i=!0,o=null;for(;i;){let s;s=o?yield e.post("https://api.dropboxapi.com/2/files/list_folder/continue",{cursor:o},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}):yield e.post("https://api.dropboxapi.com/2/files/list_folder",{path:"/"+t,limit:2e3},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});const a=s.data.entries||[];n=n.concat(a),i=s.data.has_more,o=s.data.cursor}return[...new Set(n.map((e=>({name:e.name,size:e.size||0,type:e[".tag"],modified:e.client_modified}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();yield e.post("https://api.dropboxapi.com/2/files/delete_v2",{path:"/"+t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"dropbox",refresh_token:e});return t.data.access_token?(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token):""}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dropbox",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://www.dropbox.com/oauth2/authorize?response_type=code&token_access_type=offline&client_id=${y.dropboxClientId}&redirect_uri=${e}`}}class A extends x{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken();let i=r.split("/").pop()||"",o=new File([t],i,{lastModified:(new Date).getTime(),type:t.type});const s=yield e.post("https://content.dropboxapi.com/2/files/upload",o,{headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/octet-stream","Dropbox-API-Arg":JSON.stringify({path:"/"+r,mode:"overwrite",autorename:!0,mute:!1})},maxContentLength:1/0,maxBodyLength:1/0});return!(s.status>=300)||(console.error("Error occurred during file upload:",s),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken(),n=yield e({url:"https://content.dropboxapi.com/2/files/download",method:"post",headers:{Authorization:`Bearer ${r}`,"Dropbox-API-Arg":JSON.stringify({path:"/"+t})},maxContentLength:1/0,maxBodyLength:1/0,responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return n.status>=300?(console.error("Error occurred during file download:",n),!1):n.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class T{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){var r,n;return a(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);let o=[],s=0;const a=1e3;let c=!0;for(;c;){const u=yield e.get("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${i}`,"Content-Type":"application/json"},params:{path:t?`/${t}`:"/",limit:a,offset:s,fields:"_embedded.items.name,_embedded.items.size,_embedded.items.type,_embedded.items.modified,_embedded.total"}}),d=(null===(r=u.data._embedded)||void 0===r?void 0:r.items)||[];o=o.concat(d);const l=(null===(n=u.data._embedded)||void 0===n?void 0:n.total)||0;s+=d.length,c=s({name:e.name,size:e.size||0,type:"file"===e.type?"file":"folder",modified:e.modified}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const n=yield e.delete("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${r}`,"Content-Type":"application/json"},params:{path:t?`/${t}`:"/",permanently:!1}});return 202===n.status||204===n.status}catch(e){return console.error("Error deleting file:",e),!1}}))}ensureDirectoryExists(t){var r,n;return a(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken(),o=t.split("/").filter((e=>e.length>0));let s="";for(const t of o){s+="/"+t;try{yield e.get("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${i}`,"Content-Type":"application/json"},params:{path:s}})}catch(t){if(404!==(null===(r=t.response)||void 0===r?void 0:r.status))return console.error("Error checking directory:",t),!1;try{yield e.put(`https://cloud-api.yandex.net/v1/disk/resources?path=${encodeURIComponent(s)}`,null,{headers:{Authorization:`OAuth ${i}`}})}catch(e){if(409!==(null===(n=e.response)||void 0===n?void 0:n.status))return console.error("Error creating directory:",e),!1}}}return!0}catch(e){return console.error("Error ensuring directory exists:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"yandex",refresh_token:e});return t.data.access_token?(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token):""}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"yandex",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://oauth.yandex.com/authorize?response_type=code&client_id=${y.yandexClientId}&redirect_uri=${e}&force_confirm=true`}}class C extends T{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken();let i=this.baseFolder+"/"+r;for(;i.startsWith("/");)i=i.substring(1);const o=i.substring(0,i.lastIndexOf("/"));if(o){if(!(yield this.ensureDirectoryExists(o)))return console.error("Failed to create directory:",o),!1}const s=yield e.get("https://cloud-api.yandex.net/v1/disk/resources/upload",{headers:{Authorization:`OAuth ${n}`,"Content-Type":"application/json"},params:{path:`/${i}`,overwrite:!0}});if(200!==s.status)return console.error("Error getting upload URL:",s),!1;const a=s.data.href;let c=r.split("/").pop()||"",u=new File([t],c,{lastModified:(new Date).getTime(),type:t.type});const d=yield e.put(a,u,{headers:{"Content-Type":t.type||"application/octet-stream"},maxContentLength:1/0,maxBodyLength:1/0});return!(d.status>=300)||(console.error("Error occurred during file upload:",d),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken();let n=this.baseFolder+"/"+t;for(;n.startsWith("/");)n=n.substring(1);const i=yield e.get("https://cloud-api.yandex.net/v1/disk/resources/download",{headers:{Authorization:`OAuth ${r}`,"Content-Type":"application/json"},params:{path:`/${n}`}});if(200!==i.status)return console.error("Error getting download URL:",i),!1;const o=i.data.href,s=yield e({url:o,method:"get",maxContentLength:1/0,maxBodyLength:1/0,responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return s.status>=300?(console.error("Error occurred during file download:",s),!1):s.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class R{constructor(e,t){this.isExp=!1,this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),this.isExp=this.config.isExp||!1,void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getFileId(t,r){return a(this,void 0,void 0,(function*(){const n=yield this.refreshToken(),i=`https://www.googleapis.com/drive/v3/files?q=name='${t}'+and+'${r}'+in+parents&fields=files(id,name)`;try{const t=yield e.get(i,{headers:{Authorization:"Bearer "+n}});if(0===t.data.files.length)return"";const r=t.data.files;return r.length>0?r[0].id:null}catch(e){return console.error("Error occurred during file list retrieval:",e),""}}))}checkFolder(t){return a(this,void 0,void 0,(function*(){t=this.baseFolder+"/"+t;const r=yield this.refreshToken();if(""===t)return"root";const n=t.split("/").filter((e=>""!==e.trim()));let i="root";for(const t of n){let n=yield this.getFolderId(t,i);if(!n){const o={name:t,mimeType:"application/vnd.google-apps.folder",parents:[i]};try{n=(yield e.post("https://www.googleapis.com/drive/v3/files",o,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}catch(e){throw console.error(`Error occurred during folder creation for ${t}:`,e),e}}i=n}return i}))}getFolderId(t,r){return a(this,void 0,void 0,(function*(){const n=yield this.refreshToken(),i=`https://www.googleapis.com/drive/v3/files?q=name='${t=encodeURIComponent(t)}'+and+mimeType='application/vnd.google-apps.folder'+and+'${r}'+in+parents&fields=files(id,name)`;try{const t=(yield e.get(i,{headers:{Authorization:`Bearer ${n}`}})).data.files;return t.length>0?t[0].id:null}catch(e){throw console.error("Error occurred during fetching folder ID:",e),e}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=yield this.checkFolder(t),i=[],o="",s=!0;for(;s;){let t=`https://www.googleapis.com/drive/v3/files?q='${n}'+in+parents&fields=nextPageToken,files(id,name,size,mimeType)&pageSize=1000`;o&&(t+=`&pageToken=${o}`);const a=yield e.get(t,{headers:{Authorization:`Bearer ${r}`}}),c=a.data.files||[];i=i.concat(c),o=a.data.nextPageToken,s=!!o}return[...new Set(i.map((e=>({name:e.name,size:e.size||0,type:"application/vnd.google-apps.folder"===e.mimeType?"folder":"file",modified:e.modifiedTime}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQue(e)}))))))}))}deleteFileWithoutQue(t){return a(this,void 0,void 0,(function*(){const r=t.split("/")[1],n=yield this.checkFolder(t),i=yield this.refreshToken(),o=yield this.getFileId(r,n);if(""===o)return console.error("File not found:",r),!0;try{const t=yield e.delete(`https://www.googleapis.com/drive/v3/files/${o}`,{headers:{Authorization:`Bearer ${i}`}});return console.error("File deleted:",t),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"google",refresh_token:e});return t.data.access_token?(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token):""}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"google",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${e}&prompt=consent&response_type=code&client_id=${y.googleClientId}&scope=https://www.googleapis.com/auth/${this.isExp?"drive":"drive.file"}&access_type=offline`}}class _ extends R{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken();let i=r.split("/").pop()||"",o=new File([t],i,{lastModified:(new Date).getTime(),type:t.type}),s=r.split(".").pop(),a=c(s||""),u=r.split("/")[0],d=yield this.checkFolder(u),l=yield this.getFileId(i||"",d);const h={mimeType:a,name:i,parents:[d]},f=l?`https://www.googleapis.com/upload/drive/v3/files/${l}?uploadType=resumable`:"https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable",p=(yield e({method:l?"PATCH":"POST",url:f,data:l?null:JSON.stringify(h),headers:{Authorization:"Bearer "+n,"Content-Type":"application/json; charset=UTF-8"},maxContentLength:1/0,maxBodyLength:1/0})).headers.location,g=yield this.getData(o);if(0===Object.keys(g).length)return!1;const m=yield e.put(p,g.data,{headers:{Authorization:"Bearer "+n,"Content-Type":"application/zip","Content-Range":`bytes 0-${g.fileSize-1}/${g.fileSize}`},maxContentLength:1/0,maxBodyLength:1/0});return!(m.status>=300)||(console.error("Error occurred during file download:",m),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken();let n=t.split("/").pop(),i=t.split("/")[0],o=yield this.checkFolder(i),s=yield this.getFileId(n||"",o);if(!s)return console.error("File not found:",n),!0;const a=`https://www.googleapis.com/drive/v3/files/${s}?alt=media`,c=yield e.get(a,{headers:{Authorization:"Bearer "+r},maxContentLength:1/0,maxBodyLength:1/0,responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return c.status>=300?(console.error("Error occurred during file download:",c),!1):c.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getData(e){return a(this,void 0,void 0,(function*(){return e?new Promise(((t,r)=>{const n=new FileReader;n.onload=r=>t({fileName:e.name,mimeType:e.type,fileSize:e.size,data:r.target.result}),n.onerror=e=>r(e),n.readAsArrayBuffer(e)})):{}}))}}class O{constructor(e){this.folderCreationLocks=new Map,this.config=e,this.taskQueue=new p(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getStorage(){return a(this,void 0,void 0,(function*(){if(this.storage)return this.storage;let{email:e,password:r}=this.config;return this.storage=yield new t({email:e,password:r}).ready,this.storage}))}getRoot(){return a(this,void 0,void 0,(function*(){if(this.root)return this.root;const e=(yield this.getStorage()).root;if(""===this.baseFolder)return this.root=e,this.root;let t=e.children.find((e=>e.name===this.baseFolder&&e.directory));return t||(t=yield e.mkdir(this.baseFolder)),this.root=t,this.root}))}createFolder(e,t){return a(this,void 0,void 0,(function*(){const r=`${e.nodeId}_${t}`;if(this.folderCreationLocks.has(r))return yield this.folderCreationLocks.get(r);const n=(()=>a(this,void 0,void 0,(function*(){try{let r=e.children.find((e=>e.name===t&&e.directory));return r||(r=yield e.mkdir(t),r)}finally{this.folderCreationLocks.delete(r)}})))();return this.folderCreationLocks.set(r,n),yield n}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return a(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();if(e){const r=e.split("/").filter((e=>e));for(const e of r){const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return[];t=r}}const r=t.children.map((e=>({name:e.name,size:e.size||0,type:e.directory?"folder":"file",modified:e.timestamp?new Date(1e3*e.timestamp).toISOString():""})));return r}catch(e){return console.error("Error listing MEGA files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(e){return a(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();const r=e.split("/"),n=r.pop();for(const e of r){if(!e)continue;const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return!0;t=r}const i=t.children.find((e=>e.name===n&&!e.directory));return!i||(yield i.delete(),!0)}catch(e){return console.error("Error deleting MEGA file:",e),!1}}))}}class P extends O{constructor(e){super(e)}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{let n=yield this.getRoot();const i=t.split("/"),o=i.pop()||"";for(const e of i){if(!e)continue;let t=n.children.find((t=>t.name===e&&t.directory));t||(t=yield this.createFolder(n,e)),n=t}const s=new File([e],o,{lastModified:(new Date).getTime(),type:e.type}),a=yield e.arrayBuffer(),c=new Uint8Array(a),u=r.from(c),d=n.children.find((e=>e.name===o&&!e.directory));return d&&(yield d.delete()),yield n.upload({name:o,size:s.size},u).complete,!0}catch(e){return console.error("Error occurred during MEGA file upload:",e),!1}}))))))}))}downloadFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{let t=yield this.getRoot();const r=e.split("/"),n=r.pop()||"";for(const e of r){if(!e)continue;const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return!0;t=r}const i=t.children.find((e=>e.name===n&&!e.directory));if(!i)return!0;const o=yield i.downloadBuffer();return this.taskQueue.setDownloadedSize(o.size),o.buffer}catch(e){return console.error("Error occurred during MEGA file download:",e),!1}}))))))}))}}class I{constructor(e,t){this.isExp=!1,this.baseUrl="https://graph.microsoft.com/v1.0/me/drive/special/approot",this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),this.isExp=this.config.isExp||!1,this.baseUrl=this.isExp?"https://graph.microsoft.com/v1.0/me/drive/root":"https://graph.microsoft.com/v1.0/me/drive/special/approot",void 0===this.config.baseFolder?this.baseFolder=this.isExp?"KoodoReader":"":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);let n,i=[];if(""===t)n=`${this.baseUrl}/children`;else{const e=encodeURIComponent(t);n=`${this.baseUrl}:/${e}:/children`}for(;n;){const t=yield e.get(n,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(t.status>=300)break;const o=t.data.value||[];i=i.concat(o),n=t.data["@odata.nextLink"]||""}return[...new Set(i.map((e=>({name:e.name,size:e.size||0,type:e.folder?"folder":"file",modified:e.lastModifiedDateTime}))))]}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const n=yield e.delete(`${this.baseUrl}:/${t}`,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!(n.status>=300)||(console.error("Error deleting file:",n),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"microsoft",refresh_token:e});return t.data.access_token?(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token):""}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"microsoft",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=${y.microsoftClientId}&scope=${this.isExp?"files.readwrite.all":"files.readwrite.appfolder"} offline_access&response_type=code&redirect_uri=${e}`}}class M extends I{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken();let i=r.split("/").pop()||"",o=new File([t],i,{lastModified:(new Date).getTime(),type:t.type}),s=this.baseFolder+"/"+r;for(;s.startsWith("/");)s=s.substring(1);const a=this.baseUrl+":/"+s+":/createUploadSession",c=yield e.post(a,null,{headers:{Authorization:"Bearer "+n,"Content-Type":"application/json"},maxContentLength:1/0,maxBodyLength:1/0});let u=o.size;const d=o.type,l=c.data.uploadUrl,h=yield e.put(l,o,{headers:{"Content-Type":d,"Content-Range":`bytes 0-${u-1}/${u}`},maxContentLength:1/0,maxBodyLength:1/0});return!(h.status>=300)||(console.error("Error occurred during file download:",h),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken();let n=this.baseFolder+"/"+t;for(;n.startsWith("/");)n=n.substring(1);const i=`${this.baseUrl}:/${n}:/content`,o=yield e.get(i,{responseType:"arraybuffer",headers:{Authorization:"Bearer "+r},maxContentLength:1/0,maxBodyLength:1/0,onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return o.status>=300?(console.error("Error occurred during file download:",o),!1):o.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class N{downloadFile(e,t){return a(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}listFiles(e){return a(this,void 0,void 0,(function*(){return new Promise((e=>{e([])}))}))}authToken(e){return a(this,void 0,void 0,(function*(){return new Promise((e=>{e("")}))}))}getAuthUrl(){return""}}class F{constructor(e,t){this.baseUrl="https://api.pcloud.com",this.config=e,this.thirdpartyRequest=t,this.taskQueue=new p(3),this.baseUrl="2"===e.region?"https://eapi.pcloud.com":"https://api.pcloud.com"}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}checkFolderExists(t,r){return a(this,void 0,void 0,(function*(){try{return 0===(yield e.get(`${this.baseUrl}/listfolder`,{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error checking folder:",e),!1}}))}createFolder(t,r){return a(this,void 0,void 0,(function*(){try{return 0===(yield e.get(`${this.baseUrl}/createfolderifnotexists`,{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error creating folder:",e),!1}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield e.get(`${this.baseUrl}/listfolder`,{params:{access_token:r,path:"/"+t,recursive:0}});return 0!==n.data.result?[]:n.data.metadata.contents.map((e=>({name:e.name,size:e.size||0,type:e.isfolder?"folder":"file",modified:e.modified})))}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield e.get(`${this.baseUrl}/deletefile`,{params:{access_token:r,path:"/"+t}});return 0===n.data.result||(console.error("Error deleting file:",n.data),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.refresh_token}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"pcloud",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://my.pcloud.com/oauth2/authorize?client_id=${y.pcloudClientId}&response_type=code&redirect_uri=${e}`}}class $ extends F{constructor(e,t){super(e,t)}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=yield this.refreshToken(),i=r.split("/").slice(0,-1).join("/");if(!(yield this.checkFolderExists(i,n))){if(!(yield this.createFolder(i,n)))return!1}let o=r.split("/").pop()||"",s=new File([t],o,{lastModified:(new Date).getTime(),type:t.type});const a=new FormData;a.append("file",s);const c=yield e.post(`${this.baseUrl}/uploadfile`,a,{params:{access_token:n,path:`/${i}`,renew:1},maxContentLength:1/0,maxBodyLength:1/0});return 0===c.data.result||(console.error("Error uploading file:",c.data),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=yield this.refreshToken(),n=yield e.get(`${this.baseUrl}/getfilelink`,{params:{access_token:r,path:`/${t}`}});if(0!==n.data.result)return console.error("Error getting file link:",n.data),!0;const i=`https://${n.data.hosts[0]}${n.data.path}`,o=yield e.get(i,{responseType:"arraybuffer",maxContentLength:1/0,maxBodyLength:1/0,onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return o.status>=300?(console.error("Error downloading file:",o),!1):o.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}const U=e=>{let t=e.httpHandler;return{setHttpHandler(e){t=e},httpHandler:()=>t,updateHttpClientConfig(e,r){t.updateHttpClientConfig(e,r)},httpHandlerConfigs:()=>t.httpHandlerConfigs()}};var L,D,B,z,j;!function(e){e.HEADER="header",e.QUERY="query"}(L||(L={})),function(e){e.HEADER="header",e.QUERY="query"}(D||(D={})),function(e){e.HTTP="http",e.HTTPS="https"}(B||(B={})),function(e){e.MD5="md5",e.CRC32="crc32",e.CRC32C="crc32c",e.SHA1="sha1",e.SHA256="sha256"}(z||(z={})),function(e){e[e.HEADER=0]="HEADER",e[e.TRAILER=1]="TRAILER"}(j||(j={}));const q="__smithy_context";var W,H;!function(e){e.PROFILE="profile",e.SSO_SESSION="sso-session",e.SERVICES="services"}(W||(W={})),function(e){e.HTTP_0_9="http/0.9",e.HTTP_1_0="http/1.0",e.TDS_8_0="tds/8.0"}(H||(H={}));class K{constructor(e){this.method=e.method||"GET",this.hostname=e.hostname||"localhost",this.port=e.port,this.query=e.query||{},this.headers=e.headers||{},this.body=e.body,this.protocol=e.protocol?":"!==e.protocol.slice(-1)?`${e.protocol}:`:e.protocol:"https:",this.path=e.path?"/"!==e.path.charAt(0)?`/${e.path}`:e.path:"/",this.username=e.username,this.password=e.password,this.fragment=e.fragment}static clone(e){const t=new K({...e,headers:{...e.headers}});var r;return t.query&&(t.query=(r=t.query,Object.keys(r).reduce(((e,t)=>{const n=r[t];return{...e,[t]:Array.isArray(n)?[...n]:n}}),{}))),t}static isInstance(e){if(!e)return!1;const t=e;return"method"in t&&"protocol"in t&&"hostname"in t&&"path"in t&&"object"==typeof t.query&&"object"==typeof t.headers}clone(){return K.clone(this)}}class V{constructor(e){this.statusCode=e.statusCode,this.reason=e.reason,this.headers=e.headers||{},this.body=e.body}static isInstance(e){if(!e)return!1;const t=e;return"number"==typeof t.statusCode&&"object"==typeof t.headers}}const Q={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0},G=e=>({applyToStack:t=>{t.add(function(e){return t=>async r=>{const{request:n}=r;return K.isInstance(n)&&n.body&&"node"===e.runtime&&"FetchHttpHandler"!==e.requestHandler?.constructor?.name&&(n.headers={...n.headers,Expect:"100-continue"}),t({...r,request:n})}}(e),Q)}}),J="WHEN_SUPPORTED",X=J,Z=J;var Y,ee;!function(e){e.MD5="MD5",e.CRC32="CRC32",e.CRC32C="CRC32C",e.SHA1="SHA1",e.SHA256="SHA256"}(Y||(Y={})),function(e){e.HEADER="header",e.TRAILER="trailer"}(ee||(ee={}));const te=Y.MD5,re=Y.CRC32;var ne;function ie(e,t,r){e.__aws_sdk_context?e.__aws_sdk_context.features||(e.__aws_sdk_context.features={}):e.__aws_sdk_context={features:{}},e.__aws_sdk_context.features[t]=r}!function(e){e.ENV="env",e.CONFIG="shared config entry"}(ne||(ne={}));const oe=e=>V.isInstance(e)?e.headers?.date??e.headers?.Date:void 0,se=e=>new Date(Date.now()+e),ae=(e,t)=>{const r=Date.parse(e);return((e,t)=>Math.abs(se(t).getTime()-e)>=3e5)(r,t)?r-Date.now():t},ce=(e,t)=>{if(!t)throw new Error(`Property \`${e}\` is not resolved for AWS SDK SigV4Auth`);return t},ue=async e=>{const t=ce("context",e.context),r=ce("config",e.config),n=t.endpointV2?.properties?.authSchemes?.[0],i=ce("signer",r.signer),o=await i(n),s=e?.signingRegion,a=e?.signingRegionSet,c=e?.signingName;return{config:r,signer:o,signingRegion:s,signingRegionSet:a,signingName:c}};class de{async sign(e,t,r){if(!K.isInstance(e))throw new Error("The request is not an instance of `HttpRequest` and cannot be signed");const n=await ue(r),{config:i,signer:o}=n;let{signingRegion:s,signingName:a}=n;const c=r.context;if(c?.authSchemes?.length){const[e,t]=c.authSchemes;"sigv4a"===e?.name&&"sigv4"===t?.name&&(s=t?.signingRegion??s,a=t?.signingName??a)}return await o.sign(e,{signingDate:se(i.systemClockOffset),signingRegion:s,signingService:a})}errorHandler(e){return t=>{const r=t.ServerTime??oe(t.$response);if(r){const n=ce("config",e.config),i=n.systemClockOffset;n.systemClockOffset=ae(r,n.systemClockOffset);n.systemClockOffset!==i&&t.$metadata&&(t.$metadata.clockSkewCorrected=!0)}throw t}}successHandler(e,t){const r=oe(e);if(r){const e=ce("config",t.config);e.systemClockOffset=ae(r,e.systemClockOffset)}}}class le extends de{async sign(e,t,r){if(!K.isInstance(e))throw new Error("The request is not an instance of `HttpRequest` and cannot be signed");const{config:n,signer:i,signingRegion:o,signingRegionSet:s,signingName:a}=await ue(r),c=(await(n.sigv4aSigningRegionSet?.())??s??[o]).join(",");return await i.sign(e,{signingDate:se(n.systemClockOffset),signingRegion:c,signingService:a})}}const he=e=>e[q]||(e[q]={}),fe=e=>{if("function"==typeof e)return e;const t=Promise.resolve(e);return()=>t};const pe=(e,t)=>(r,n)=>async i=>{const o=e.httpAuthSchemeProvider(await t.httpAuthSchemeParametersProvider(e,n,i.input)),s=function(e){const t=new Map;for(const r of e)t.set(r.schemeId,r);return t}(e.httpAuthSchemes),a=he(n),c=[];for(const r of o){const i=s.get(r.schemeId);if(!i){c.push(`HttpAuthScheme \`${r.schemeId}\` was not enabled for this service.`);continue}const o=i.identityProvider(await t.identityProviderConfigProvider(e));if(!o){c.push(`HttpAuthScheme \`${r.schemeId}\` did not have an IdentityProvider configured.`);continue}const{identityProperties:u={},signingProperties:d={}}=r.propertiesExtractor?.(e,n)||{};r.identityProperties=Object.assign(r.identityProperties||{},u),r.signingProperties=Object.assign(r.signingProperties||{},d),a.selectedHttpAuthScheme={httpAuthOption:r,identity:await o(r.identityProperties),signer:i.signer};break}if(!a.selectedHttpAuthScheme)throw new Error(c.join("\n"));return r(i)},ge={step:"serialize",tags:["HTTP_AUTH_SCHEME"],name:"httpAuthSchemeMiddleware",override:!0,relation:"before",toMiddleware:"endpointV2Middleware"},me={name:"deserializerMiddleware",step:"deserialize",tags:["DESERIALIZER"],override:!0},ye={name:"serializerMiddleware",step:"serialize",tags:["SERIALIZER"],override:!0};function ve(e,t,r){return{applyToStack:n=>{n.add(((e,t)=>r=>async n=>{const{response:i}=await r(n);try{return{response:i,output:await t(i,e)}}catch(e){if(Object.defineProperty(e,"$response",{value:i}),!("$metadata"in e)){const t="Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.";e.message+="\n "+t,void 0!==e.$responseBodyText&&e.$response&&(e.$response.body=e.$responseBodyText)}throw e}})(e,r),me),n.add(((e,t)=>(r,n)=>async i=>{const o=n.endpointV2?.url&&e.urlParser?async()=>e.urlParser(n.endpointV2.url):e.endpoint;if(!o)throw new Error("No valid endpoint provider available.");const s=await t(i.input,{...e,endpoint:o});return r({...i,request:s})})(e,t),ye)}}}const be=e=>e=>{throw e},we=(e,t)=>{},ke={step:"finalizeRequest",tags:["HTTP_SIGNING"],name:"httpSigningMiddleware",aliases:["apiKeyMiddleware","tokenMiddleware","awsAuthMiddleware"],override:!0,relation:"after",toMiddleware:"retryMiddleware"},Se=e=>({applyToStack:e=>{e.addRelativeTo(((e,t)=>async r=>{if(!K.isInstance(r.request))return e(r);const n=he(t).selectedHttpAuthScheme;if(!n)throw new Error("No HttpAuthScheme was selected: unable to sign request");const{httpAuthOption:{signingProperties:i={}},identity:o,signer:s}=n,a=await e({...r,request:await s.sign(r.request,o,i)}).catch((s.errorHandler||be)(i));return(s.successHandler||we)(a.response,i),a}),ke)}}),Ee=e=>{if("function"==typeof e)return e;const t=Promise.resolve(e);return()=>t},xe={},Ae=new Array(64);for(let e=0,t="A".charCodeAt(0),r="Z".charCodeAt(0);e+t<=r;e++){const r=String.fromCharCode(e+t);xe[r]=e,Ae[e]=r}for(let e=0,t="a".charCodeAt(0),r="z".charCodeAt(0);e+t<=r;e++){const r=String.fromCharCode(e+t),n=e+26;xe[r]=n,Ae[n]=r}for(let e=0;e<10;e++){xe[e.toString(10)]=e+52;const t=e.toString(10),r=e+52;xe[t]=r,Ae[r]=t}xe["+"]=62,Ae[62]="+",xe["/"]=63,Ae[63]="/";const Te=e=>{let t=e.length/4*3;"=="===e.slice(-2)?t-=2:"="===e.slice(-1)&&t--;const r=new ArrayBuffer(t),n=new DataView(r);for(let t=0;t>=6;const o=t/4*3;r>>=i%8;const s=Math.floor(i/8);for(let e=0;e>t)}}return new Uint8Array(r)},Ce=e=>(new TextEncoder).encode(e),Re=e=>"string"==typeof e?Ce(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e),_e=e=>{if("string"==typeof e)return e;if("object"!=typeof e||"number"!=typeof e.byteOffset||"number"!=typeof e.byteLength)throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.");return new TextDecoder("utf-8").decode(e)};function Oe(e){let t;t="string"==typeof e?Ce(e):e;const r="object"==typeof t&&"number"==typeof t.length,n="object"==typeof t&&"number"==typeof t.byteOffset&&"number"==typeof t.byteLength;if(!r&&!n)throw new Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.");let i="";for(let e=0;e>t]}i+="==".slice(0,4-o)}return i}class Pe extends Uint8Array{static fromString(e,t="utf-8"){if("string"==typeof e)return function(e,t){return"base64"===t?Pe.mutate(Te(e)):Pe.mutate(Ce(e))}(e,t);throw new Error(`Unsupported conversion from ${typeof e} to Uint8ArrayBlobAdapter.`)}static mutate(e){return Object.setPrototypeOf(e,Pe.prototype),e}transformToString(e="utf-8"){return function(e,t="utf-8"){return"base64"===t?Oe(e):_e(e)}(this,e)}}const Ie=(e,t)=>{const{base64Encoder:r,bodyLengthChecker:n,checksumAlgorithmFn:i,checksumLocationName:o,streamHasher:s}=t,a=void 0!==r&&void 0!==n&&void 0!==i&&void 0!==o&&void 0!==s,c=a?s(i,e):void 0,u=e.getReader();return new ReadableStream({async pull(e){const{value:t,done:i}=await u.read();if(i){if(e.enqueue("0\r\n"),a){const t=r(await c);e.enqueue(`${o}:${t}\r\n`),e.enqueue("\r\n")}e.close()}else e.enqueue(`${(n(t)||0).toString(16)}\r\n${t}\r\n`)}})},Me=e=>encodeURIComponent(e).replace(/[!'()*]/g,Ne),Ne=e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`;function Fe(e,t){return new Request(e,t)}function $e(e=0){return new Promise(((t,r)=>{e&&setTimeout((()=>{const t=new Error(`Request did not complete within ${e} ms`);t.name="TimeoutError",r(t)}),e)}))}const Ue={supported:void 0};class Le{static create(e){return"function"==typeof e?.handle?e:new Le(e)}constructor(e){"function"==typeof e?this.configProvider=e().then((e=>e||{})):(this.config=e??{},this.configProvider=Promise.resolve(this.config)),void 0===Ue.supported&&(Ue.supported=Boolean("undefined"!=typeof Request&&"keepalive"in Fe("https://[::1]")))}destroy(){}async handle(e,{abortSignal:t}={}){this.config||(this.config=await this.configProvider);const r=this.config.requestTimeout,n=!0===this.config.keepAlive,i=this.config.credentials;if(t?.aborted){const e=new Error("Request aborted");return e.name="AbortError",Promise.reject(e)}let o=e.path;const s=function(e){const t=[];for(let r of Object.keys(e).sort()){const n=e[r];if(r=Me(r),Array.isArray(n))for(let e=0,i=n.length;e{};const p=Fe(d,h),g=[fetch(p).then((e=>{const t=e.headers,r={};for(const e of t.entries())r[e[0]]=e[1];return null!=e.body?{response:new V({headers:r,reason:e.statusText,statusCode:e.status,body:e.body})}:e.blob().then((t=>({response:new V({headers:r,reason:e.statusText,statusCode:e.status,body:t})})))})),$e(r)];return t&&g.push(new Promise(((e,r)=>{const n=()=>{const e=new Error("Request aborted");e.name="AbortError",r(e)};if("function"==typeof t.addEventListener){const e=t;e.addEventListener("abort",n,{once:!0}),f=()=>e.removeEventListener("abort",n)}else t.onabort=n}))),Promise.race(g).finally(f)}updateHttpClientConfig(e,t){this.config=void 0,this.configProvider=this.configProvider.then((r=>(r[e]=t,r)))}httpHandlerConfigs(){return this.config??{}}}const De=async e=>"function"==typeof Blob&&e instanceof Blob||"Blob"===e.constructor?.name?new Uint8Array(await e.arrayBuffer()):async function(e){const t=[],r=e.getReader();let n=!1,i=0;for(;!n;){const{done:e,value:o}=await r.read();o&&(t.push(o),i+=o.length),n=e}const o=new Uint8Array(i);let s=0;for(const e of t)o.set(e,s),s+=e.length;return o}(e);const Be={},ze={};for(let e=0;e<256;e++){let t=e.toString(16).toLowerCase();1===t.length&&(t=`0${t}`),Be[e]=t,ze[t]=e}function je(e){if(e.length%2!=0)throw new Error("Hex encoded strings must have an even number length");const t=new Uint8Array(e.length/2);for(let r=0;r"function"==typeof ReadableStream&&(e?.constructor?.name===ReadableStream.name||e instanceof ReadableStream),He="The stream has already been transformed.",Ke=e=>{if(!Ve(e)&&!We(e)){throw new Error(`Unexpected stream implementation, expect Blob or ReadableStream, got ${e?.__proto__?.constructor?.name||e}`)}let t=!1;const r=async()=>{if(t)throw new Error(He);return t=!0,await De(e)};return Object.assign(e,{transformToByteArray:r,transformToString:async e=>{const t=await r();if("base64"===e)return Oe(t);if("hex"===e)return qe(t);if(void 0===e||"utf8"===e||"utf-8"===e)return _e(t);if("function"==typeof TextDecoder)return new TextDecoder(e).decode(t);throw new Error("TextDecoder is not available, please make sure polyfill is provided.")},transformToWebStream:()=>{if(t)throw new Error(He);if(t=!0,Ve(e))return(e=>{if("function"!=typeof e.stream)throw new Error("Cannot transform payload Blob to web stream. Please make sure the Blob.stream() is polyfilled.\nIf you are using React Native, this API is not yet supported, see: https://react-native.canny.io/feature-requests/p/fetch-streaming-body");return e.stream()})(e);if(We(e))return e;throw new Error(`Cannot transform payload to web stream, got ${e}`)}})},Ve=e=>"function"==typeof Blob&&e instanceof Blob;const Qe="function"==typeof ReadableStream?ReadableStream:function(){};class Ge extends Qe{}const Je=({expectedChecksum:e,checksum:t,source:r,checksumSourceLocation:n,base64Encoder:i})=>{if(!We(r))throw new Error(`@smithy/util-stream: unsupported source type ${r?.constructor?.name??r} in ChecksumStream.`);const o=i??Oe;if("function"!=typeof TransformStream)throw new Error("@smithy/util-stream: unable to instantiate ChecksumStream because API unavailable: ReadableStream/TransformStream.");const s=new TransformStream({start(){},async transform(e,r){t.update(e),r.enqueue(e)},async flush(r){const i=await t.digest(),s=o(i);if(e!==s){const t=new Error(`Checksum mismatch: expected "${e}" but received "${s}" in response header "${n}".`);r.error(t)}else r.terminate()}});r.pipeThrough(s);const a=s.readable;return Object.setPrototypeOf(a,Ge.prototype),a},Xe=async(e=new Uint8Array,t)=>{if(e instanceof Uint8Array)return Pe.mutate(e);if(!e)return Pe.mutate(new Uint8Array);const r=t.streamCollector(e);return Pe.mutate(await r)};function Ze(e){return encodeURIComponent(e).replace(/[!'()*]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function Ye(e,t){return new et(e,t)}class et{constructor(e,t){this.input=e,this.context=t,this.query={},this.method="",this.headers={},this.path="",this.body=null,this.hostname="",this.resolvePathStack=[]}async build(){const{hostname:e,protocol:t="https",port:r,path:n}=await this.context.endpoint();this.path=n;for(const e of this.resolvePathStack)e(this.path);return new K({protocol:t,hostname:this.hostname||e,port:r,method:this.method,path:this.path,query:this.query,body:this.body,headers:this.headers})}hn(e){return this.hostname=e,this}bp(e){return this.resolvePathStack.push((t=>{this.path=`${t?.endsWith("/")?t.slice(0,-1):t||""}`+e})),this}p(e,t,r,n){return this.resolvePathStack.push((i=>{this.path=((e,t,r,n,i,o)=>{if(null==t||void 0===t[r])throw new Error("No value provided for input HTTP label: "+r+".");{const t=n();if(t.length<=0)throw new Error("Empty value provided for input HTTP label: "+r+".");e=e.replace(i,o?t.split("/").map((e=>Ze(e))).join("/"):Ze(t))}return e})(i,this.input,e,t,r,n)})),this}h(e){return this.headers=e,this}q(e){return this.query=e,this}b(e){return this.body=e,this}m(e){return this.method=e,this}}class tt{constructor(e){this.authSchemes=new Map;for(const[t,r]of Object.entries(e))void 0!==r&&this.authSchemes.set(t,r)}getIdentityProvider(e){return this.authSchemes.get(e)}}const rt=(nt=3e5,e=>it(e)&&e.expiration.getTime()-Date.now()void 0!==e.expiration,ot="X-Amz-Date",st="X-Amz-Signature",at="X-Amz-Security-Token",ct="authorization",ut=ot.toLowerCase(),dt=[ct,ut,"date"],lt=st.toLowerCase(),ht="x-amz-content-sha256",ft=at.toLowerCase(),pt={authorization:!0,"cache-control":!0,connection:!0,expect:!0,from:!0,"keep-alive":!0,"max-forwards":!0,pragma:!0,referer:!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0,"user-agent":!0,"x-amzn-trace-id":!0},gt=/^proxy-/,mt=/^sec-/,yt="AWS4-HMAC-SHA256",vt="AWS4-HMAC-SHA256-PAYLOAD",bt="aws4_request",wt={},kt=[],St=(e,t,r)=>`${e}/${t}/${r}/${bt}`,Et=(e,t,r)=>{const n=new e(t);return n.update(Re(r)),n.digest()},xt=({headers:e},t,r)=>{const n={};for(const i of Object.keys(e).sort()){if(null==e[i])continue;const o=i.toLowerCase();(o in pt||t?.has(o)||gt.test(o)||mt.test(o))&&(!r||r&&!r.has(o))||(n[o]=e[i].trim().replace(/\s+/g," "))}return n},At=e=>"function"==typeof ArrayBuffer&&e instanceof ArrayBuffer||"[object ArrayBuffer]"===Object.prototype.toString.call(e),Tt=async({headers:e,body:t},r)=>{for(const t of Object.keys(e))if(t.toLowerCase()===ht)return e[t];if(null==t)return"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";if("string"==typeof t||ArrayBuffer.isView(t)||At(t)){const e=new r;return e.update(Re(t)),qe(await e.digest())}return"UNSIGNED-PAYLOAD"};class Ct{format(e){const t=[];for(const r of Object.keys(e)){const n=Ce(r);t.push(Uint8Array.from([n.byteLength]),n,this.formatHeaderValue(e[r]))}const r=new Uint8Array(t.reduce(((e,t)=>e+t.byteLength),0));let n=0;for(const e of t)r.set(e,n),n+=e.byteLength;return r}formatHeaderValue(e){switch(e.type){case"boolean":return Uint8Array.from([e.value?0:1]);case"byte":return Uint8Array.from([2,e.value]);case"short":const t=new DataView(new ArrayBuffer(3));return t.setUint8(0,3),t.setInt16(1,e.value,!1),new Uint8Array(t.buffer);case"integer":const r=new DataView(new ArrayBuffer(5));return r.setUint8(0,4),r.setInt32(1,e.value,!1),new Uint8Array(r.buffer);case"long":const n=new Uint8Array(9);return n[0]=5,n.set(e.value.bytes,1),n;case"binary":const i=new DataView(new ArrayBuffer(3+e.value.byteLength));i.setUint8(0,6),i.setUint16(1,e.value.byteLength,!1);const o=new Uint8Array(i.buffer);return o.set(e.value,3),o;case"string":const s=Ce(e.value),a=new DataView(new ArrayBuffer(3+s.byteLength));a.setUint8(0,7),a.setUint16(1,s.byteLength,!1);const c=new Uint8Array(a.buffer);return c.set(s,3),c;case"timestamp":const u=new Uint8Array(9);return u[0]=8,u.set(Ot.fromNumber(e.value.valueOf()).bytes,1),u;case"uuid":if(!_t.test(e.value))throw new Error(`Invalid UUID received: ${e.value}`);const d=new Uint8Array(17);return d[0]=9,d.set(je(e.value.replace(/\-/g,"")),1),d}}}var Rt;!function(e){e[e.boolTrue=0]="boolTrue",e[e.boolFalse=1]="boolFalse",e[e.byte=2]="byte",e[e.short=3]="short",e[e.integer=4]="integer",e[e.long=5]="long",e[e.byteArray=6]="byteArray",e[e.string=7]="string",e[e.timestamp=8]="timestamp",e[e.uuid=9]="uuid"}(Rt||(Rt={}));const _t=/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;class Ot{constructor(e){if(this.bytes=e,8!==e.byteLength)throw new Error("Int64 buffers must be exactly 8 bytes")}static fromNumber(e){if(e>0x8000000000000000||e<-0x8000000000000000)throw new Error(`${e} is too large (or, if negative, too small) to represent as an Int64`);const t=new Uint8Array(8);for(let r=7,n=Math.abs(Math.round(e));r>-1&&n>0;r--,n/=256)t[r]=n;return e<0&&Pt(t),new Ot(t)}valueOf(){const e=this.bytes.slice(0),t=128&e[0];return t&&Pt(e),parseInt(qe(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}}function Pt(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,0===e[t]);t--);}const It=e=>{e=K.clone(e);for(const t of Object.keys(e.headers))dt.indexOf(t.toLowerCase())>-1&&delete e.headers[t];return e},Mt=e=>"number"==typeof e?new Date(1e3*e):"string"==typeof e?Number(e)?new Date(1e3*Number(e)):new Date(e):e;class Nt{constructor({applyChecksum:e,credentials:t,region:r,service:n,sha256:i,uriEscapePath:o=!0}){this.headerFormatter=new Ct,this.service=n,this.sha256=i,this.uriEscapePath=o,this.applyChecksum="boolean"!=typeof e||e,this.regionProvider=fe(r),this.credentialProvider=fe(t)}async presign(e,t={}){const{signingDate:r=new Date,expiresIn:n=3600,unsignableHeaders:i,unhoistableHeaders:o,signableHeaders:s,hoistableHeaders:a,signingRegion:c,signingService:u}=t,d=await this.credentialProvider();this.validateResolvedCredentials(d);const l=c??await this.regionProvider(),{longDate:h,shortDate:f}=Ft(r);if(n>604800)return Promise.reject("Signature version 4 presigned URLs must have an expiration date less than one week in the future");const p=St(f,l,u??this.service),g=((e,t={})=>{const{headers:r,query:n={}}=K.clone(e);for(const e of Object.keys(r)){const i=e.toLowerCase();("x-amz-"===i.slice(0,6)&&!t.unhoistableHeaders?.has(i)||t.hoistableHeaders?.has(i))&&(n[e]=r[e],delete r[e])}return{...e,headers:r,query:n}})(It(e),{unhoistableHeaders:o,hoistableHeaders:a});d.sessionToken&&(g.query[at]=d.sessionToken),g.query["X-Amz-Algorithm"]=yt,g.query["X-Amz-Credential"]=`${d.accessKeyId}/${p}`,g.query[ot]=h,g.query["X-Amz-Expires"]=n.toString(10);const m=xt(g,i,s);return g.query["X-Amz-SignedHeaders"]=$t(m),g.query[st]=await this.getSignature(h,p,this.getSigningKey(d,l,f,u),this.createCanonicalRequest(g,m,await Tt(e,this.sha256))),g}async sign(e,t){return"string"==typeof e?this.signString(e,t):e.headers&&e.payload?this.signEvent(e,t):e.message?this.signMessage(e,t):this.signRequest(e,t)}async signEvent({headers:e,payload:t},{signingDate:r=new Date,priorSignature:n,signingRegion:i,signingService:o}){const s=i??await this.regionProvider(),{shortDate:a,longDate:c}=Ft(r),u=St(a,s,o??this.service),d=await Tt({headers:{},body:t},this.sha256),l=new this.sha256;l.update(e);const h=qe(await l.digest()),f=[vt,c,u,n,h,d].join("\n");return this.signString(f,{signingDate:r,signingRegion:s,signingService:o})}async signMessage(e,{signingDate:t=new Date,signingRegion:r,signingService:n}){return this.signEvent({headers:this.headerFormatter.format(e.message.headers),payload:e.message.body},{signingDate:t,signingRegion:r,signingService:n,priorSignature:e.priorSignature}).then((t=>({message:e.message,signature:t})))}async signString(e,{signingDate:t=new Date,signingRegion:r,signingService:n}={}){const i=await this.credentialProvider();this.validateResolvedCredentials(i);const o=r??await this.regionProvider(),{shortDate:s}=Ft(t),a=new this.sha256(await this.getSigningKey(i,o,s,n));return a.update(Re(e)),qe(await a.digest())}async signRequest(e,{signingDate:t=new Date,signableHeaders:r,unsignableHeaders:n,signingRegion:i,signingService:o}={}){const s=await this.credentialProvider();this.validateResolvedCredentials(s);const a=i??await this.regionProvider(),c=It(e),{longDate:u,shortDate:d}=Ft(t),l=St(d,a,o??this.service);c.headers[ut]=u,s.sessionToken&&(c.headers[ft]=s.sessionToken);const h=await Tt(c,this.sha256);!((e,t)=>{e=e.toLowerCase();for(const r of Object.keys(t))if(e===r.toLowerCase())return!0;return!1})(ht,c.headers)&&this.applyChecksum&&(c.headers[ht]=h);const f=xt(c,n,r),p=await this.getSignature(u,l,this.getSigningKey(s,a,d,o),this.createCanonicalRequest(c,f,h));return c.headers[ct]=`${yt} Credential=${s.accessKeyId}/${l}, SignedHeaders=${$t(f)}, Signature=${p}`,c}createCanonicalRequest(e,t,r){const n=Object.keys(t).sort();return`${e.method}\n${this.getCanonicalPath(e)}\n${(({query:e={}})=>{const t=[],r={};for(const n of Object.keys(e)){if(n.toLowerCase()===lt)continue;const i=Me(n);t.push(i);const o=e[n];"string"==typeof o?r[i]=`${i}=${Me(o)}`:Array.isArray(o)&&(r[i]=o.slice(0).reduce(((e,t)=>e.concat([`${i}=${Me(t)}`])),[]).sort().join("&"))}return t.sort().map((e=>r[e])).filter((e=>e)).join("&")})(e)}\n${n.map((e=>`${e}:${t[e]}`)).join("\n")}\n\n${n.join(";")}\n${r}`}async createStringToSign(e,t,r){const n=new this.sha256;n.update(Re(r));const i=await n.digest();return`${yt}\n${e}\n${t}\n${qe(i)}`}getCanonicalPath({path:e}){if(this.uriEscapePath){const t=[];for(const r of e.split("/"))0!==r?.length&&"."!==r&&(".."===r?t.pop():t.push(r));const r=`${e?.startsWith("/")?"/":""}${t.join("/")}${t.length>0&&e?.endsWith("/")?"/":""}`;return Me(r).replace(/%2F/g,"/")}return e}async getSignature(e,t,r,n){const i=await this.createStringToSign(e,t,n),o=new this.sha256(await r);return o.update(Re(i)),qe(await o.digest())}getSigningKey(e,t,r,n){return(async(e,t,r,n,i)=>{const o=`${r}:${n}:${i}:${qe(await Et(e,t.secretAccessKey,t.accessKeyId))}:${t.sessionToken}`;if(o in wt)return wt[o];for(kt.push(o);kt.length>50;)delete wt[kt.shift()];let s=`AWS4${t.secretAccessKey}`;for(const t of[r,n,i,bt])s=await Et(e,s,t);return wt[o]=s})(this.sha256,e,r,t,n||this.service)}validateResolvedCredentials(e){if("object"!=typeof e||"string"!=typeof e.accessKeyId||"string"!=typeof e.secretAccessKey)throw new Error("Resolved credential object is not valid")}}const Ft=e=>{const t=(r=e,Mt(r).toISOString().replace(/\.\d{3}Z$/,"Z")).replace(/[\-:]/g,"");var r;return{longDate:t,shortDate:t.slice(0,8)}},$t=e=>Object.keys(e).sort().join(";"),Ut=e=>{let t,r=!1;e.credentials&&(r=!0,t=((e,t,r)=>{if(void 0===e)return;const n="function"!=typeof e?async()=>Promise.resolve(e):e;let i,o,s,a=!1;const c=async e=>{o||(o=n(e));try{i=await o,s=!0,a=!1}finally{o=void 0}return i};return void 0===t?async e=>(s&&!e?.forceRefresh||(i=await c(e)),i):async e=>(s&&!e?.forceRefresh||(i=await c(e)),a?i:r(i)?t(i)?(await c(e),i):i:(a=!0,i))})(e.credentials,rt,it)),t||(t=e.credentialDefaultProvider?Ee(e.credentialDefaultProvider(Object.assign({},e,{parentClientConfig:e}))):async()=>{throw new Error("`credentials` is missing")});const{signingEscapePath:n=!0,systemClockOffset:i=e.systemClockOffset||0,sha256:o}=e;let s;return s=e.signer?Ee(e.signer):e.regionInfoProvider?()=>Ee(e.region)().then((async t=>[await e.regionInfoProvider(t,{useFipsEndpoint:await e.useFipsEndpoint(),useDualstackEndpoint:await e.useDualstackEndpoint()})||{},t])).then((([r,i])=>{const{signingRegion:s,signingService:a}=r;e.signingRegion=e.signingRegion||s||i,e.signingName=e.signingName||a||e.serviceId;const c={...e,credentials:t,region:e.signingRegion,service:e.signingName,sha256:o,uriEscapePath:n};return new(e.signerConstructor||Nt)(c)})):async r=>{const i=(r=Object.assign({},{name:"sigv4",signingName:e.signingName||e.defaultSigningName,signingRegion:await Ee(e.region)(),properties:{}},r)).signingRegion,s=r.signingName;e.signingRegion=e.signingRegion||i,e.signingName=e.signingName||s||e.serviceId;const a={...e,credentials:t,region:e.signingRegion,service:e.signingName,sha256:o,uriEscapePath:n};return new(e.signerConstructor||Nt)(a)},{...e,systemClockOffset:i,signingEscapePath:n,credentials:r?async()=>t().then((e=>{return r="CREDENTIALS_CODE",n="e",(t=e).$source||(t.$source={}),t.$source[r]=n,t;var t,r,n})):t,signer:s}},Lt=(e,t)=>{const r=[];if(e&&r.push(e),t)for(const e of t)r.push(e);return r},Dt=(e,t)=>`${e||"anonymous"}${t&&t.length>0?` (a.k.a. ${t.join(",")})`:""}`,Bt=()=>{let e=[],t=[],r=!1;const n=new Set,i=r=>(e.forEach((e=>{r.add(e.middleware,{...e})})),t.forEach((e=>{r.addRelativeTo(e.middleware,{...e})})),r.identifyOnResolve?.(a.identifyOnResolve()),r),o=e=>{const t=[];return e.before.forEach((e=>{0===e.before.length&&0===e.after.length?t.push(e):t.push(...o(e))})),t.push(e),e.after.reverse().forEach((e=>{0===e.before.length&&0===e.after.length?t.push(e):t.push(...o(e))})),t},s=(r=!1)=>{const n=[],i=[],s={};e.forEach((e=>{const t={...e,before:[],after:[]};for(const e of Lt(t.name,t.aliases))s[e]=t;n.push(t)})),t.forEach((e=>{const t={...e,before:[],after:[]};for(const e of Lt(t.name,t.aliases))s[e]=t;i.push(t)})),i.forEach((e=>{if(e.toMiddleware){const t=s[e.toMiddleware];if(void 0===t){if(r)return;throw new Error(`${e.toMiddleware} is not found when adding ${Dt(e.name,e.aliases)} middleware ${e.relation} ${e.toMiddleware}`)}"after"===e.relation&&t.after.push(e),"before"===e.relation&&t.before.push(e)}}));const a=(c=n,c.sort(((e,t)=>zt[t.step]-zt[e.step]||jt[t.priority||"normal"]-jt[e.priority||"normal"]))).map(o).reduce(((e,t)=>(e.push(...t),e)),[]);var c;return a},a={add:(t,r={})=>{const{name:i,override:o,aliases:s}=r,a={step:"initialize",priority:"normal",middleware:t,...r},c=Lt(i,s);if(c.length>0){if(c.some((e=>n.has(e)))){if(!o)throw new Error(`Duplicate middleware name '${Dt(i,s)}'`);for(const t of c){const r=e.findIndex((e=>e.name===t||e.aliases?.some((e=>e===t))));if(-1===r)continue;const n=e[r];if(n.step!==a.step||a.priority!==n.priority)throw new Error(`"${Dt(n.name,n.aliases)}" middleware with ${n.priority} priority in ${n.step} step cannot be overridden by "${Dt(i,s)}" middleware with ${a.priority} priority in ${a.step} step.`);e.splice(r,1)}}for(const e of c)n.add(e)}e.push(a)},addRelativeTo:(e,r)=>{const{name:i,override:o,aliases:s}=r,a={middleware:e,...r},c=Lt(i,s);if(c.length>0){if(c.some((e=>n.has(e)))){if(!o)throw new Error(`Duplicate middleware name '${Dt(i,s)}'`);for(const e of c){const r=t.findIndex((t=>t.name===e||t.aliases?.some((t=>t===e))));if(-1===r)continue;const n=t[r];if(n.toMiddleware!==a.toMiddleware||n.relation!==a.relation)throw new Error(`"${Dt(n.name,n.aliases)}" middleware ${n.relation} "${n.toMiddleware}" middleware cannot be overridden by "${Dt(i,s)}" middleware ${a.relation} "${a.toMiddleware}" middleware.`);t.splice(r,1)}}for(const e of c)n.add(e)}t.push(a)},clone:()=>i(Bt()),use:e=>{e.applyToStack(a)},remove:r=>"string"==typeof r?(r=>{let i=!1;const o=e=>{const t=Lt(e.name,e.aliases);if(t.includes(r)){i=!0;for(const e of t)n.delete(e);return!1}return!0};return e=e.filter(o),t=t.filter(o),i})(r):(r=>{let i=!1;const o=e=>{if(e.middleware===r){i=!0;for(const t of Lt(e.name,e.aliases))n.delete(t);return!1}return!0};return e=e.filter(o),t=t.filter(o),i})(r),removeByTag:r=>{let i=!1;const o=e=>{const{tags:t,name:o,aliases:s}=e;if(t&&t.includes(r)){const e=Lt(o,s);for(const t of e)n.delete(t);return i=!0,!1}return!0};return e=e.filter(o),t=t.filter(o),i},concat:e=>{const t=i(Bt());return t.use(e),t.identifyOnResolve(r||t.identifyOnResolve()||(e.identifyOnResolve?.()??!1)),t},applyToStack:i,identify:()=>s(!0).map((e=>{const t=e.step??e.relation+" "+e.toMiddleware;return Dt(e.name,e.aliases)+" - "+t})),identifyOnResolve:e=>("boolean"==typeof e&&(r=e),r),resolve:(e,t)=>{for(const r of s().map((e=>e.middleware)).reverse())e=r(e,t);return r&&console.log(a.identify()),e}};return a},zt={initialize:5,serialize:4,build:3,finalizeRequest:2,deserialize:1},jt={high:3,normal:2,low:1};class qt{constructor(e){this.config=e,this.middlewareStack=Bt()}send(e,t,r){const n="function"!=typeof t?t:void 0,i="function"==typeof t?t:r;let o;if(void 0===n&&!0===this.config.cacheMiddleware){this.handlers||(this.handlers=new WeakMap);const t=this.handlers;t.has(e.constructor)?o=t.get(e.constructor):(o=e.resolveMiddleware(this.middlewareStack,this.config,n),t.set(e.constructor,o))}else delete this.handlers,o=e.resolveMiddleware(this.middlewareStack,this.config,n);if(!i)return o(e).then((e=>e.output));o(e).then((e=>i(null,e.output)),(e=>i(e))).catch((()=>{}))}destroy(){this.config?.requestHandler?.destroy?.(),delete this.handlers}}class Wt{constructor(){this.middlewareStack=Bt()}static classBuilder(){return new Ht}resolveMiddlewareWithContext(e,t,r,{middlewareFn:n,clientName:i,commandName:o,inputFilterSensitiveLog:s,outputFilterSensitiveLog:a,smithyContext:c,additionalContext:u,CommandCtor:d}){for(const i of n.bind(this)(d,e,t,r))this.middlewareStack.use(i);const l=e.concat(this.middlewareStack),{logger:h}=t,f={logger:h,clientName:i,commandName:o,inputFilterSensitiveLog:s,outputFilterSensitiveLog:a,[q]:{commandInstance:this,...c},...u},{requestHandler:p}=t;return l.resolve((e=>p.handle(e.request,r||{})),f)}}class Ht{constructor(){this._init=()=>{},this._ep={},this._middlewareFn=()=>[],this._commandName="",this._clientName="",this._additionalContext={},this._smithyContext={},this._inputFilterSensitiveLog=e=>e,this._outputFilterSensitiveLog=e=>e,this._serializer=null,this._deserializer=null}init(e){this._init=e}ep(e){return this._ep=e,this}m(e){return this._middlewareFn=e,this}s(e,t,r={}){return this._smithyContext={service:e,operation:t,...r},this}c(e={}){return this._additionalContext=e,this}n(e,t){return this._clientName=e,this._commandName=t,this}f(e=e=>e,t=e=>e){return this._inputFilterSensitiveLog=e,this._outputFilterSensitiveLog=t,this}ser(e){return this._serializer=e,this}de(e){return this._deserializer=e,this}build(){const e=this;let t;return t=class extends Wt{static getEndpointParameterInstructions(){return e._ep}constructor(...[t]){super(),this.serialize=e._serializer,this.deserialize=e._deserializer,this.input=t??{},e._init(this)}resolveMiddleware(r,n,i){return this.resolveMiddlewareWithContext(r,n,i,{CommandCtor:t,middlewareFn:e._middlewareFn,clientName:e._clientName,commandName:e._commandName,inputFilterSensitiveLog:e._inputFilterSensitiveLog,outputFilterSensitiveLog:e._outputFilterSensitiveLog,smithyContext:e._smithyContext,additionalContext:e._additionalContext})}}}}const Kt="***SensitiveInformation***",Vt=e=>{switch(e){case"true":return!0;case"false":return!1;default:throw new Error(`Unable to parse boolean value "${e}"`)}},Qt=Math.ceil(2**127*(2-2**-23)),Gt=e=>{const t=(e=>{if(null!=e){if("string"==typeof e){const t=parseFloat(e);if(!Number.isNaN(t))return String(t)!==String(e)&&lr.warn(dr(`Expected number but observed string: ${e}`)),t}if("number"==typeof e)return e;throw new TypeError(`Expected number, got ${typeof e}: ${e}`)}})(e);if(void 0!==t&&!Number.isNaN(t)&&t!==1/0&&t!==-1/0&&Math.abs(t)>Qt)throw new TypeError(`Expected 32-bit float, got ${e}`);return t},Jt=e=>{if(null!=e){if(Number.isInteger(e)&&!Number.isNaN(e))return e;throw new TypeError(`Expected integer, got ${typeof e}: ${e}`)}},Xt=e=>er(e,32),Zt=e=>er(e,16),Yt=e=>er(e,8),er=(e,t)=>{const r=Jt(e);if(void 0!==r&&tr(r,t)!==r)throw new TypeError(`Expected ${t}-bit integer, got ${e}`);return r},tr=(e,t)=>{switch(t){case 32:return Int32Array.of(e)[0];case 16:return Int16Array.of(e)[0];case 8:return Int8Array.of(e)[0]}},rr=(e,t)=>{if(null==e){if(t)throw new TypeError(`Expected a non-null value for ${t}`);throw new TypeError("Expected a non-null value")}return e},nr=e=>{if(null==e)return;if("object"==typeof e&&!Array.isArray(e))return e;const t=Array.isArray(e)?"array":typeof e;throw new TypeError(`Expected object, got ${t}: ${e}`)},ir=e=>{if(null!=e){if("string"==typeof e)return e;if(["boolean","number","bigint"].includes(typeof e))return lr.warn(dr(`Expected string, got ${typeof e}: ${e}`)),String(e);throw new TypeError(`Expected string, got ${typeof e}: ${e}`)}},or=/(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g,sr=e=>{const t=e.match(or);if(null===t||t[0].length!==e.length)throw new TypeError("Expected real number, got implicit NaN");return parseFloat(e)},ar=e=>Jt("string"==typeof e?sr(e):e),cr=e=>Xt("string"==typeof e?sr(e):e),ur=e=>Zt("string"==typeof e?sr(e):e),dr=e=>String(new TypeError(e).stack||e).split("\n").slice(0,5).filter((e=>!e.includes("stackTraceWarning"))).join("\n"),lr={warn:console.warn},hr=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],fr=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function pr(e){const t=e.getUTCFullYear(),r=e.getUTCMonth(),n=e.getUTCDay(),i=e.getUTCDate(),o=e.getUTCHours(),s=e.getUTCMinutes(),a=e.getUTCSeconds(),c=o<10?`0${o}`:`${o}`,u=s<10?`0${s}`:`${s}`,d=a<10?`0${a}`:`${a}`;return`${hr[n]}, ${i<10?`0${i}`:`${i}`} ${fr[r]} ${t} ${c}:${u}:${d} GMT`}const gr=new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(([-+]\d{2}\:\d{2})|[zZ])$/),mr=e=>{if(null==e)return;if("string"!=typeof e)throw new TypeError("RFC-3339 date-times must be expressed as strings");const t=gr.exec(e);if(!t)throw new TypeError("Invalid RFC-3339 date-time value");const[r,n,i,o,s,a,c,u,d]=t,l=ur(Pr(n)),h=Rr(i,"month",1,12),f=Rr(o,"day",1,31),p=kr(l,h,f,{hours:s,minutes:a,seconds:c,fractionalMilliseconds:u});return"Z"!=d.toUpperCase()&&p.setTime(p.getTime()-Or(d)),p},yr=new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/),vr=new RegExp(/^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/),br=new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? (\d{4})$/),wr=e=>{if(null==e)return;if("string"!=typeof e)throw new TypeError("RFC-7231 date-times must be expressed as strings");let t=yr.exec(e);if(t){const[e,r,n,i,o,s,a,c]=t;return kr(ur(Pr(i)),xr(n),Rr(r,"day",1,31),{hours:o,minutes:s,seconds:a,fractionalMilliseconds:c})}if(t=vr.exec(e),t){const[e,r,n,i,o,s,a,c]=t;return Er(kr(Sr(i),xr(n),Rr(r,"day",1,31),{hours:o,minutes:s,seconds:a,fractionalMilliseconds:c}))}if(t=br.exec(e),t){const[e,r,n,i,o,s,a,c]=t;return kr(ur(Pr(c)),xr(r),Rr(n.trimLeft(),"day",1,31),{hours:i,minutes:o,seconds:s,fractionalMilliseconds:a})}throw new TypeError("Invalid RFC-7231 date-time value")},kr=(e,t,r,n)=>{const i=t-1;return Tr(e,i,r),new Date(Date.UTC(e,i,r,Rr(n.hours,"hour",0,23),Rr(n.minutes,"minute",0,59),Rr(n.seconds,"seconds",0,60),_r(n.fractionalMilliseconds)))},Sr=e=>{const t=(new Date).getUTCFullYear(),r=100*Math.floor(t/100)+ur(Pr(e));return re.getTime()-(new Date).getTime()>15768e8?new Date(Date.UTC(e.getUTCFullYear()-100,e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds())):e,xr=e=>{const t=fr.indexOf(e);if(t<0)throw new TypeError(`Invalid month: ${e}`);return t+1},Ar=[31,28,31,30,31,30,31,31,30,31,30,31],Tr=(e,t,r)=>{let n=Ar[t];if(1===t&&Cr(e)&&(n=29),r>n)throw new TypeError(`Invalid day for ${fr[t]} in ${e}: ${r}`)},Cr=e=>e%4==0&&(e%100!=0||e%400==0),Rr=(e,t,r,n)=>{const i=(e=>Yt("string"==typeof e?sr(e):e))(Pr(e));if(in)throw new TypeError(`${t} must be between ${r} and ${n}, inclusive`);return i},_r=e=>null==e?0:1e3*(e=>Gt("string"==typeof e?sr(e):e))("0."+e),Or=e=>{const t=e[0];let r=1;if("+"==t)r=1;else{if("-"!=t)throw new TypeError(`Offset direction, ${t}, must be "+" or "-"`);r=-1}return r*(60*Number(e.substring(1,3))+Number(e.substring(4,6)))*60*1e3},Pr=e=>{let t=0;for(;t{Object.entries(t).filter((([,e])=>void 0!==e)).forEach((([t,r])=>{null!=e[t]&&""!==e[t]||(e[t]=r)}));const r=e.message||e.Message||"UnknownError";return e.message=r,delete e.Message,e},Nr=e=>({httpStatusCode:e.statusCode,requestId:e.headers["x-amzn-requestid"]??e.headers["x-amzn-request-id"]??e.headers["x-amz-request-id"],extendedRequestId:e.headers["x-amz-id-2"],cfId:e.headers["x-amz-cf-id"]}),Fr=e=>{switch(e){case"standard":case"cross-region":return{retryMode:"standard",connectionTimeout:3100};case"in-region":return{retryMode:"standard",connectionTimeout:1100};case"mobile":return{retryMode:"standard",connectionTimeout:3e4};default:return{}}},$r=e=>{const t=[];for(const r in z){const n=z[r];void 0!==e[n]&&t.push({algorithmId:()=>n,checksumConstructor:()=>e[n]})}return{_checksumAlgorithms:t,addChecksumAlgorithm(e){this._checksumAlgorithms.push(e)},checksumAlgorithms(){return this._checksumAlgorithms}}},Ur=e=>{const t={};return e.checksumAlgorithms().forEach((e=>{t[e.algorithmId()]=e.checksumConstructor()})),t},Lr=e=>{let t=e.retryStrategy;return{setRetryStrategy(e){t=e},retryStrategy:()=>t}},Dr=e=>{const t={};return t.retryStrategy=e.retryStrategy(),t},Br=e=>({...$r(e),...Lr(e)}),zr=e=>({...Ur(e),...Dr(e)}),jr=e=>Array.isArray(e)?e:[e],qr=e=>{const t="#text";for(const r in e)e.hasOwnProperty(r)&&void 0!==e[r][t]?e[r]=e[r][t]:"object"==typeof e[r]&&null!==e[r]&&(e[r]=qr(e[r]));return e},Wr=e=>null!=e,Hr=function(){const e=Object.getPrototypeOf(this).constructor,t=new(Function.bind.apply(String,[null,...arguments]));return Object.setPrototypeOf(t,e.prototype),t};Hr.prototype=Object.create(String.prototype,{constructor:{value:Hr,enumerable:!1,writable:!0,configurable:!0}}),Object.setPrototypeOf(Hr,String);class Kr{trace(){}debug(){}info(){}warn(){}error(){}}function Vr(e,t,r){let n,i,o;if(void 0===t&&void 0===r)n={},o=e;else{if(n=e,"function"==typeof t)return i=t,o=r,Qr(n,i,o);o=t}for(const e of Object.keys(o))Array.isArray(o[e])?Gr(n,null,o,e):n[e]=o[e];return n}const Qr=(e,t,r)=>Vr(e,Object.entries(r).reduce(((e,[r,n])=>(Array.isArray(n)?e[r]=n:e[r]="function"==typeof n?[t,n()]:[t,n],e)),{})),Gr=(e,t,r,n)=>{if(null!==t){let i=r[n];"function"==typeof i&&(i=[,i]);const[o=Jr,s=Xr,a=n]=i;return void(("function"==typeof o&&o(t[a])||"function"!=typeof o&&o)&&(e[n]=s(t[a])))}let[i,o]=r[n];if("function"==typeof o){let t;const r=void 0===i&&null!=(t=o()),s="function"==typeof i&&!!i(void 0)||"function"!=typeof i&&!!i;r?e[n]=t:s&&(e[n]=o())}else{const t=void 0===i&&null!=o,r="function"==typeof i&&!!i(o)||"function"!=typeof i&&!!i;(t||r)&&(e[n]=o)}},Jr=e=>null!=e,Xr=e=>e;function Zr(e){return(e.includes(",")||e.includes('"'))&&(e=`"${e.replace(/"/g,'\\"')}"`),e}function Yr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var en={},tn={};!function(e){const t=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",r="["+t+"]["+(t+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040")+"]*",n=new RegExp("^"+r+"$");e.isExist=function(e){return void 0!==e},e.isEmptyObject=function(e){return 0===Object.keys(e).length},e.merge=function(e,t,r){if(t){const n=Object.keys(t),i=n.length;for(let o=0;o5&&"xml"===n)return pn("InvalidXml","XML declaration allowed only at the start of the document.",mn(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function an(e,t){if(e.length>t+5&&"-"===e[t+1]&&"-"===e[t+2]){for(t+=3;t"===e[t+2]){t+=2;break}}else if(e.length>t+8&&"D"===e[t+1]&&"O"===e[t+2]&&"C"===e[t+3]&&"T"===e[t+4]&&"Y"===e[t+5]&&"P"===e[t+6]&&"E"===e[t+7]){let r=1;for(t+=8;t"===e[t]&&(r--,0===r))break}else if(e.length>t+9&&"["===e[t+1]&&"C"===e[t+2]&&"D"===e[t+3]&&"A"===e[t+4]&&"T"===e[t+5]&&"A"===e[t+6]&&"["===e[t+7])for(t+=8;t"===e[t+2]){t+=2;break}return t}en.validate=function(e,t){t=Object.assign({},nn,t);const r=[];let n=!1,i=!1;"\ufeff"===e[0]&&(e=e.substr(1));for(let s=0;s"!==e[s]&&" "!==e[s]&&"\t"!==e[s]&&"\n"!==e[s]&&"\r"!==e[s];s++)u+=e[s];if(u=u.trim(),"/"===u[u.length-1]&&(u=u.substring(0,u.length-1),s--),o=u,!rn.isName(o)){let t;return t=0===u.trim().length?"Invalid space after '<'.":"Tag '"+u+"' is an invalid name.",pn("InvalidTag",t,mn(e,s))}const d=dn(e,s);if(!1===d)return pn("InvalidAttr","Attributes for '"+u+"' have open quote.",mn(e,s));let l=d.value;if(s=d.index,"/"===l[l.length-1]){const r=s-l.length;l=l.substring(0,l.length-1);const i=hn(l,t);if(!0!==i)return pn(i.err.code,i.err.msg,mn(e,r+i.err.line));n=!0}else if(c){if(!d.tagClosed)return pn("InvalidTag","Closing tag '"+u+"' doesn't have proper closing.",mn(e,s));if(l.trim().length>0)return pn("InvalidTag","Closing tag '"+u+"' can't have attributes or invalid starting.",mn(e,a));if(0===r.length)return pn("InvalidTag","Closing tag '"+u+"' has not been opened.",mn(e,a));{const t=r.pop();if(u!==t.tagName){let r=mn(e,t.tagStartPos);return pn("InvalidTag","Expected closing tag '"+t.tagName+"' (opened in line "+r.line+", col "+r.col+") instead of closing tag '"+u+"'.",mn(e,a))}0==r.length&&(i=!0)}}else{const o=hn(l,t);if(!0!==o)return pn(o.err.code,o.err.msg,mn(e,s-l.length+o.err.line));if(!0===i)return pn("InvalidXml","Multiple possible root nodes found.",mn(e,s));-1!==t.unpairedTags.indexOf(u)||r.push({tagName:u,tagStartPos:a}),n=!0}for(s++;s0)||pn("InvalidXml","Invalid '"+JSON.stringify(r.map((e=>e.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):pn("InvalidXml","Start tag expected.",1)};const cn='"',un="'";function dn(e,t){let r="",n="",i=!1;for(;t"===e[t]&&""===n){i=!0;break}r+=e[t]}return""===n&&{value:r,index:t,tagClosed:i}}const ln=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function hn(e,t){const r=rn.getAllMatches(e,ln),n={};for(let e=0;e!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,r){return e}};vn.buildOptions=function(e){return Object.assign({},bn,e)},vn.defaultOptions=bn;const wn=tn;function kn(e,t){let r="";for(;t"===e[t]){if(o?"-"===e[t-1]&&"-"===e[t-2]&&(o=!1,n--):n--,0===n)break}else"["===e[t]?i=!0:s+=e[t];else{if(i&&En(e,t))t+=7,[entityName,val,t]=kn(e,t+1),-1===val.indexOf("&")&&(r[Cn(entityName)]={regx:RegExp(`&${entityName};`,"g"),val:val});else if(i&&xn(e,t))t+=8;else if(i&&An(e,t))t+=8;else if(i&&Tn(e,t))t+=9;else{if(!Sn)throw new Error("Invalid DOCTYPE");o=!0}n++,s=""}if(0!==n)throw new Error("Unclosed DOCTYPE")}return{entities:r,i:t}};const _n=/^[-+]?0x[a-fA-F0-9]+$/,On=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,Pn={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};const In=tn,Mn=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){"__proto__"===e&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){"__proto__"===e.tagname&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}},Nn=Rn,Fn=function(e,t={}){if(t=Object.assign({},Pn,t),!e||"string"!=typeof e)return e;let r=e.trim();if(void 0!==t.skipLike&&t.skipLike.test(r))return e;if("0"===e)return 0;if(t.hex&&_n.test(r))return function(e,t){if(parseInt)return parseInt(e,t);if(Number.parseInt)return Number.parseInt(e,t);if(window&&window.parseInt)return window.parseInt(e,t);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}(r,16);if(-1!==r.search(/[eE]/)){const n=r.match(/^([-\+])?(0*)([0-9]*(\.[0-9]*)?[eE][-\+]?[0-9]+)$/);if(n){if(t.leadingZeros)r=(n[1]||"")+n[3];else if("0"!==n[2]||"."!==n[3][0])return e;return t.eNotation?Number(r):e}return e}{const n=On.exec(r);if(n){const i=n[1],o=n[2];let s=function(e){if(e&&-1!==e.indexOf("."))return"."===(e=e.replace(/0+$/,""))?e="0":"."===e[0]?e="0"+e:"."===e[e.length-1]&&(e=e.substr(0,e.length-1)),e;return e}(n[3]);if(!t.leadingZeros&&o.length>0&&i&&"."!==r[2])return e;if(!t.leadingZeros&&o.length>0&&!i&&"."!==r[1])return e;if(t.leadingZeros&&o===e)return 0;{const n=Number(r),a=""+n;return-1!==a.search(/[eE]/)?t.eNotation?n:e:-1!==r.indexOf(".")?"0"===a&&""===s||a===s||i&&a==="-"+s?n:e:o?s===a||i+s===a?n:e:r===a||r===i+a?n:e}}return e}};function $n(e){const t=Object.keys(e);for(let r=0;r0)){s||(e=this.replaceEntitiesValue(e));const n=this.options.tagValueProcessor(t,e,r,i,o);if(null==n)return e;if(typeof n!=typeof e||n!==e)return n;if(this.options.trimValues)return Gn(e,this.options.parseTagValue,this.options.numberParseOptions);return e.trim()===e?Gn(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function Ln(e){if(this.options.removeNSPrefix){const t=e.split(":"),r="/"===e.charAt(0)?"/":"";if("xmlns"===t[0])return"";2===t.length&&(e=r+t[1])}return e}const Dn=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function Bn(e,t,r){if(!this.options.ignoreAttributes&&"string"==typeof e){const r=In.getAllMatches(e,Dn),n=r.length,i={};for(let e=0;e",o,"Closing Tag is not closed.");let s=e.substring(o+2,t).trim();if(this.options.removeNSPrefix){const e=s.indexOf(":");-1!==e&&(s=s.substr(e+1))}this.options.transformTagName&&(s=this.options.transformTagName(s)),r&&(n=this.saveTextToParentTag(n,r,i));const a=i.substring(i.lastIndexOf(".")+1);if(s&&-1!==this.options.unpairedTags.indexOf(s))throw new Error(`Unpaired tag can not be used as closing tag: `);let c=0;a&&-1!==this.options.unpairedTags.indexOf(a)?(c=i.lastIndexOf(".",i.lastIndexOf(".")-1),this.tagsNodeStack.pop()):c=i.lastIndexOf("."),i=i.substring(0,c),r=this.tagsNodeStack.pop(),n="",o=t}else if("?"===e[o+1]){let t=Vn(e,o,!1,"?>");if(!t)throw new Error("Pi Tag is not closed.");if(n=this.saveTextToParentTag(n,r,i),this.options.ignoreDeclaration&&"?xml"===t.tagName||this.options.ignorePiTags);else{const e=new Mn(t.tagName);e.add(this.options.textNodeName,""),t.tagName!==t.tagExp&&t.attrExpPresent&&(e[":@"]=this.buildAttributesMap(t.tagExp,i,t.tagName)),this.addChild(r,e,i)}o=t.closeIndex+1}else if("!--"===e.substr(o+1,3)){const t=Kn(e,"--\x3e",o+4,"Comment is not closed.");if(this.options.commentPropName){const s=e.substring(o+4,t-2);n=this.saveTextToParentTag(n,r,i),r.add(this.options.commentPropName,[{[this.options.textNodeName]:s}])}o=t}else if("!D"===e.substr(o+1,2)){const t=Nn(e,o);this.docTypeEntities=t.entities,o=t.i}else if("!["===e.substr(o+1,2)){const t=Kn(e,"]]>",o,"CDATA is not closed.")-2,s=e.substring(o+9,t);n=this.saveTextToParentTag(n,r,i);let a=this.parseTextData(s,r.tagname,i,!0,!1,!0,!0);null==a&&(a=""),this.options.cdataPropName?r.add(this.options.cdataPropName,[{[this.options.textNodeName]:s}]):r.add(this.options.textNodeName,a),o=t+2}else{let s=Vn(e,o,this.options.removeNSPrefix),a=s.tagName;const c=s.rawTagName;let u=s.tagExp,d=s.attrExpPresent,l=s.closeIndex;this.options.transformTagName&&(a=this.options.transformTagName(a)),r&&n&&"!xml"!==r.tagname&&(n=this.saveTextToParentTag(n,r,i,!1));const h=r;if(h&&-1!==this.options.unpairedTags.indexOf(h.tagname)&&(r=this.tagsNodeStack.pop(),i=i.substring(0,i.lastIndexOf("."))),a!==t.tagname&&(i+=i?"."+a:a),this.isItStopNode(this.options.stopNodes,i,a)){let t="";if(u.length>0&&u.lastIndexOf("/")===u.length-1)"/"===a[a.length-1]?(a=a.substr(0,a.length-1),i=i.substr(0,i.length-1),u=a):u=u.substr(0,u.length-1),o=s.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(a))o=s.closeIndex;else{const r=this.readStopNodeData(e,c,l+1);if(!r)throw new Error(`Unexpected end of ${c}`);o=r.i,t=r.tagContent}const n=new Mn(a);a!==u&&d&&(n[":@"]=this.buildAttributesMap(u,i,a)),t&&(t=this.parseTextData(t,a,i,!0,d,!0,!0)),i=i.substr(0,i.lastIndexOf(".")),n.add(this.options.textNodeName,t),this.addChild(r,n,i)}else{if(u.length>0&&u.lastIndexOf("/")===u.length-1){"/"===a[a.length-1]?(a=a.substr(0,a.length-1),i=i.substr(0,i.length-1),u=a):u=u.substr(0,u.length-1),this.options.transformTagName&&(a=this.options.transformTagName(a));const e=new Mn(a);a!==u&&d&&(e[":@"]=this.buildAttributesMap(u,i,a)),this.addChild(r,e,i),i=i.substr(0,i.lastIndexOf("."))}else{const e=new Mn(a);this.tagsNodeStack.push(r),a!==u&&d&&(e[":@"]=this.buildAttributesMap(u,i,a)),this.addChild(r,e,i),r=e}n="",o=l}}else n+=e[o]}return t.child};function jn(e,t,r){const n=this.options.updateTag(t.tagname,r,t[":@"]);!1===n||("string"==typeof n?(t.tagname=n,e.addChild(t)):e.addChild(t))}const qn=function(e){if(this.options.processEntities){for(let t in this.docTypeEntities){const r=this.docTypeEntities[t];e=e.replace(r.regx,r.val)}for(let t in this.lastEntities){const r=this.lastEntities[t];e=e.replace(r.regex,r.val)}if(this.options.htmlEntities)for(let t in this.htmlEntities){const r=this.htmlEntities[t];e=e.replace(r.regex,r.val)}e=e.replace(this.ampEntity.regex,this.ampEntity.val)}return e};function Wn(e,t,r,n){return e&&(void 0===n&&(n=0===Object.keys(t.child).length),void 0!==(e=this.parseTextData(e,t.tagname,r,!1,!!t[":@"]&&0!==Object.keys(t[":@"]).length,n))&&""!==e&&t.add(this.options.textNodeName,e),e=""),e}function Hn(e,t,r){const n="*."+r;for(const r in e){const i=e[r];if(n===i||t===i)return!0}return!1}function Kn(e,t,r,n){const i=e.indexOf(t,r);if(-1===i)throw new Error(n);return i+t.length-1}function Vn(e,t,r,n=">"){const i=function(e,t,r=">"){let n,i="";for(let o=t;o",r,`${t} is not closed`);if(e.substring(r+2,o).trim()===t&&(i--,0===i))return{tagContent:e.substring(n,r),i:o};r=o}else if("?"===e[r+1]){r=Kn(e,"?>",r+1,"StopNode is not closed.")}else if("!--"===e.substr(r+1,3)){r=Kn(e,"--\x3e",r+3,"StopNode is not closed.")}else if("!["===e.substr(r+1,2)){r=Kn(e,"]]>",r,"StopNode is not closed.")-2}else{const n=Vn(e,r,">");if(n){(n&&n.tagName)===t&&"/"!==n.tagExp[n.tagExp.length-1]&&i++,r=n.closeIndex}}}function Gn(e,t,r){if(t&&"string"==typeof e){const t=e.trim();return"true"===t||"false"!==t&&Fn(e,r)}return In.isExist(e)?e:""}var Jn=class{constructor(e){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,16))}},this.addExternalEntities=$n,this.parseXml=zn,this.parseTextData=Un,this.resolveNameSpace=Ln,this.buildAttributesMap=Bn,this.isItStopNode=Hn,this.replaceEntitiesValue=qn,this.readStopNodeData=Qn,this.saveTextToParentTag=Wn,this.addChild=jn}},Xn={};function Zn(e,t,r){let n;const i={};for(let o=0;o0&&(i[t.textNodeName]=n):void 0!==n&&(i[t.textNodeName]=n),i}function Yn(e){const t=Object.keys(e);for(let e=0;e`,o=!1;continue}if(c===t.commentPropName){i+=n+`\x3c!--${a[c][0][t.textNodeName]}--\x3e`,o=!0;continue}if("?"===c[0]){const e=ui(a[":@"],t),r="?xml"===c?"":n;let s=a[c][0][t.textNodeName];s=0!==s.length?" "+s:"",i+=r+`<${c}${s}${e}?>`,o=!0;continue}let d=n;""!==d&&(d+=t.indentBy);const l=n+`<${c}${ui(a[":@"],t)}`,h=ai(a[c],t,u,d);-1!==t.unpairedTags.indexOf(c)?t.suppressUnpairedNode?i+=l+">":i+=l+"/>":h&&0!==h.length||!t.suppressEmptyNode?h&&h.endsWith(">")?i+=l+`>${h}${n}`:(i+=l+">",h&&""!==n&&(h.includes("/>")||h.includes("`):i+=l+"/>",o=!0}return i}function ci(e){const t=Object.keys(e);for(let r=0;r0&&t.processEntities)for(let r=0;r0&&(r="\n"),ai(e,t,"",r)},fi={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function pi(e){this.options=Object.assign({},fi,e),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=yi),this.processTextOrObjNode=gi,this.options.format?(this.indentate=mi,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function gi(e,t,r){const n=this.j2x(e,r+1);return void 0!==e[this.options.textNodeName]&&1===Object.keys(e).length?this.buildTextValNode(e[this.options.textNodeName],t,n.attrStr,r):this.buildObjectNode(n.val,t,n.attrStr,r)}function mi(e){return this.options.indentBy.repeat(e)}function yi(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}pi.prototype.build=function(e){return this.options.preserveOrder?hi(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0).val)},pi.prototype.j2x=function(e,t){let r="",n="";for(let i in e)if(Object.prototype.hasOwnProperty.call(e,i))if(void 0===e[i])this.isAttribute(i)&&(n+="");else if(null===e[i])this.isAttribute(i)?n+="":"?"===i[0]?n+=this.indentate(t)+"<"+i+"?"+this.tagEndChar:n+=this.indentate(t)+"<"+i+"/"+this.tagEndChar;else if(e[i]instanceof Date)n+=this.buildTextValNode(e[i],i,"",t);else if("object"!=typeof e[i]){const o=this.isAttribute(i);if(o)r+=this.buildAttrPairStr(o,""+e[i]);else if(i===this.options.textNodeName){let t=this.options.tagValueProcessor(i,""+e[i]);n+=this.replaceEntitiesValue(t)}else n+=this.buildTextValNode(e[i],i,"",t)}else if(Array.isArray(e[i])){const r=e[i].length;let o="",s="";for(let a=0;a"+e+i}},pi.prototype.closeTag=function(e){let t="";return-1!==this.options.unpairedTags.indexOf(e)?this.options.suppressUnpairedNode||(t="/"):t=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(n)+`\x3c!--${e}--\x3e`+this.newLine;if("?"===t[0])return this.indentate(n)+"<"+t+r+"?"+this.tagEndChar;{let i=this.options.tagValueProcessor(t,e);return i=this.replaceEntitiesValue(i),""===i?this.indentate(n)+"<"+t+r+this.closeTag(t)+this.tagEndChar:this.indentate(n)+"<"+t+r+">"+i+"0&&this.options.processEntities)for(let t=0;t((e,t)=>Xe(e,t).then((e=>t.utf8Encoder(e))))(e,t).then((e=>{if(e.length){const t=new vi.XMLParser({attributeNamePrefix:"",htmlEntities:!0,ignoreAttributes:!1,ignoreDeclaration:!0,parseTagValue:!1,trimValues:!1,tagValueProcessor:(e,t)=>""===t.trim()&&t.includes("\n")?"":void 0});let r;t.addEntity("#xD","\r"),t.addEntity("#10","\n");try{r=t.parse(e,!0)}catch(t){throw t&&"object"==typeof t&&Object.defineProperty(t,"$responseBodyText",{value:e}),t}const n="#text",i=Object.keys(r)[0],o=r[i];return o[n]&&(o[i]=o[n],delete o[n]),qr(o)}return{}})),wi=async(e,t)=>{const r=await bi(e,t);return r.Error&&(r.Error.message=r.Error.message??r.Error.Message),r},ki=[Y.CRC32,Y.CRC32C,Y.SHA1,Y.SHA256],Si=[Y.SHA256,Y.SHA1,Y.CRC32,Y.CRC32C],Ei=e=>e===Y.MD5?"content-md5":`x-amz-checksum-${e.toLowerCase()}`,xi=e=>void 0!==e&&"string"!=typeof e&&!ArrayBuffer.isView(e)&&!At(e);function Ai(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))}function Ti(e,t){var r,n,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return s.next=a(0),s.throw=a(1),s.return=a(2),"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(a){return function(c){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;s&&(s=0,a[0]&&(o=0)),o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1](new TextEncoder).encode(e);function Ri(e){return e instanceof Uint8Array?e:"string"==typeof e?Ci(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e)}function _i(e){return"string"==typeof e?0===e.length:0===e.byteLength}function Oi(e){return new Uint8Array([(4278190080&e)>>24,(16711680&e)>>16,(65280&e)>>8,255&e])}function Pi(e){if(!Uint32Array.from){for(var t=new Uint32Array(e.length),r=0;r=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(e),i=n.next();!i.done;i=n.next()){var o=i.value;this.checksum=this.checksum>>>8^Ni[255&(this.checksum^o)]}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return this},e.prototype.digest=function(){return(4294967295^this.checksum)>>>0},e}(),Ni=Pi([0,4067132163,3778769143,324072436,3348797215,904991772,648144872,3570033899,2329499855,2024987596,1809983544,2575936315,1296289744,3207089363,2893594407,1578318884,274646895,3795141740,4049975192,51262619,3619967088,632279923,922689671,3298075524,2592579488,1760304291,2075979607,2312596564,1562183871,2943781820,3156637768,1313733451,549293790,3537243613,3246849577,871202090,3878099393,357341890,102525238,4101499445,2858735121,1477399826,1264559846,3107202533,1845379342,2677391885,2361733625,2125378298,820201905,3263744690,3520608582,598981189,4151959214,85089709,373468761,3827903834,3124367742,1213305469,1526817161,2842354314,2107672161,2412447074,2627466902,1861252501,1098587580,3004210879,2688576843,1378610760,2262928035,1955203488,1742404180,2511436119,3416409459,969524848,714683780,3639785095,205050476,4266873199,3976438427,526918040,1361435347,2739821008,2954799652,1114974503,2529119692,1691668175,2005155131,2247081528,3690758684,697762079,986182379,3366744552,476452099,3993867776,4250756596,255256311,1640403810,2477592673,2164122517,1922457750,2791048317,1412925310,1197962378,3037525897,3944729517,427051182,170179418,4165941337,746937522,3740196785,3451792453,1070968646,1905808397,2213795598,2426610938,1657317369,3053634322,1147748369,1463399397,2773627110,4215344322,153784257,444234805,3893493558,1021025245,3467647198,3722505002,797665321,2197175160,1889384571,1674398607,2443626636,1164749927,3070701412,2757221520,1446797203,137323447,4198817972,3910406976,461344835,3484808360,1037989803,781091935,3705997148,2460548119,1623424788,1939049696,2180517859,1429367560,2807687179,3020495871,1180866812,410100952,3927582683,4182430767,186734380,3756733383,763408580,1053836080,3434856499,2722870694,1344288421,1131464017,2971354706,1708204729,2545590714,2229949006,1988219213,680717673,3673779818,3383336350,1002577565,4010310262,493091189,238226049,4233660802,2987750089,1082061258,1395524158,2705686845,1972364758,2279892693,2494862625,1725896226,952904198,3399985413,3656866545,731699698,4283874585,222117402,510512622,3959836397,3280807620,837199303,582374963,3504198960,68661723,4135334616,3844915500,390545967,1230274059,3141532936,2825850620,1510247935,2395924756,2091215383,1878366691,2644384480,3553878443,565732008,854102364,3229815391,340358836,3861050807,4117890627,119113024,1493875044,2875275879,3090270611,1247431312,2660249211,1828433272,2141937292,2378227087,3811616794,291187481,34330861,4032846830,615137029,3603020806,3314634738,939183345,1776939221,2609017814,2295496738,2058945313,2926798794,1545135305,1330124605,3173225534,4084100981,17165430,307568514,3762199681,888469610,3332340585,3587147933,665062302,2042050490,2346497209,2559330125,1793573966,3190661285,1279665062,1595330642,2910671697]);function Fi(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))}function $i(e,t){var r,n,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return s.next=a(0),s.throw=a(1),s.return=a(2),"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(a){return function(c){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;s&&(s=0,a[0]&&(o=0)),o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(e),i=n.next();!i.done;i=n.next()){var o=i.value;this.checksum=this.checksum>>>8^Di[255&(this.checksum^o)]}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return this},e.prototype.digest=function(){return(4294967295^this.checksum)>>>0},e}(),Di=Pi([0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117]);const Bi=(e,t)=>({[Y.MD5]:t.md5,[Y.CRC32]:Ui,[Y.CRC32C]:Ii,[Y.SHA1]:t.sha1,[Y.SHA256]:t.sha256}[e]),zi=(e,t)=>{const r=new e;return r.update(Re(t||"")),r.digest()},ji={name:"flexibleChecksumsMiddleware",step:"build",tags:["BODY_CHECKSUM"],override:!0},qi=(e,t)=>(r,n)=>async i=>{if(!K.isInstance(i.request))return r(i);const{request:o,input:s}=i,{body:a,headers:c}=o,{base64Encoder:u,streamHasher:d}=e,{requestChecksumRequired:l,requestAlgorithmMember:h}=t,f=((e,{requestChecksumRequired:t,requestAlgorithmMember:r},n)=>{const i=n?re:te;if(!r||!e[r])return t?i:void 0;const o=e[r];if(!ki.includes(o))throw new Error(`The checksum algorithm "${o}" is not supported by the client. Select one of ${ki}.`);return o})(s,{requestChecksumRequired:l,requestAlgorithmMember:h},!!n.isS3ExpressBucket);let p=a,g=c;if(f){switch(f){case Y.CRC32:ie(n,"FLEXIBLE_CHECKSUMS_REQ_CRC32","U");break;case Y.CRC32C:ie(n,"FLEXIBLE_CHECKSUMS_REQ_CRC32C","V");break;case Y.SHA1:ie(n,"FLEXIBLE_CHECKSUMS_REQ_SHA1","X");break;case Y.SHA256:ie(n,"FLEXIBLE_CHECKSUMS_REQ_SHA256","Y")}const t=Ei(f),r=Bi(f,e);if(xi(a)){const{getAwsChunkedEncodingStream:n,bodyLengthChecker:i}=e;p=n(a,{base64Encoder:u,bodyLengthChecker:i,checksumLocationName:t,checksumAlgorithmFn:r,streamHasher:d}),g={...c,"content-encoding":c["content-encoding"]?`${c["content-encoding"]},aws-chunked`:"aws-chunked","transfer-encoding":"chunked","x-amz-decoded-content-length":c["content-length"],"x-amz-content-sha256":"STREAMING-UNSIGNED-PAYLOAD-TRAILER","x-amz-trailer":t},delete g["content-length"]}else if(!((e,t)=>{const r=e.toLowerCase();for(const e of Object.keys(t))if(r===e.toLowerCase())return!0;return!1})(t,c)){const e=await zi(r,a);g={...c,[t]:u(e)}}}return await r({...i,request:{...o,headers:g,body:p}})},Wi=(e=[])=>{const t=[];for(const r of Si)e.includes(r)&&ki.includes(r)&&t.push(r);return t};function Hi(e){return new Blob([e]).stream()}const Ki=async(e,{checksumAlgorithmFn:t,base64Encoder:r})=>r(await zi(t,e)),Vi={name:"flexibleChecksumsResponseMiddleware",toMiddleware:"deserializerMiddleware",relation:"after",tags:["BODY_CHECKSUM"],override:!0},Qi=(e,t)=>(r,n)=>async i=>{if(!K.isInstance(i.request))return r(i);const o=i.input,s=await r(i),a=s.response;let c;const{requestValidationModeMember:u,responseAlgorithms:d}=t;if(u&&"ENABLED"===o[u]){const{clientName:t,commandName:r}=n;if("S3Client"===t&&"GetObjectCommand"===r&&Wi(d).every((e=>{const t=Ei(e),r=a.headers[t];return!r||(e=>{const t=e.lastIndexOf("-");if(-1!==t){const r=e.slice(t+1);if(!r.startsWith("0")){const e=parseInt(r,10);if(!isNaN(e)&&e>=1&&e<=1e4)return!0}}return!1})(r)})))return s;const i=xi(a.body);i&&(c=await e.streamCollector(a.body),a.body=Hi(c)),await(async(e,{config:t,responseAlgorithms:r})=>{const n=Wi(r),{body:i,headers:o}=e;for(const r of n){const n=Ei(r),s=o[n];if(s){const o=Bi(r,t),{base64Encoder:a}=t;if(xi(i))return void(e.body=Je({expectedChecksum:s,checksumSourceLocation:n,checksum:new o,source:i,base64Encoder:a}));const c=await Ki(i,{checksumAlgorithmFn:o,base64Encoder:a});if(c===s)break;throw new Error(`Checksum mismatch: expected "${c}" but received "${s}" in response header "${n}".`)}}})(s.response,{config:e,responseAlgorithms:d}),i&&c&&(a.body=Hi(c))}return s},Gi=(e,t)=>({applyToStack:r=>{r.add(qi(e,t),ji),r.addRelativeTo(Qi(e,t),Vi)}});const Ji={name:"hostHeaderMiddleware",step:"build",priority:"low",tags:["HOST"],override:!0},Xi=e=>({applyToStack:t=>{t.add((e=>t=>async r=>{if(!K.isInstance(r.request))return t(r);const{request:n}=r,{handlerProtocol:i=""}=e.requestHandler.metadata||{};if(i.indexOf("h2")>=0&&!n.headers[":authority"])delete n.headers.host,n.headers[":authority"]=n.hostname+(n.port?":"+n.port:"");else if(!n.headers.host){let e=n.hostname;null!=n.port&&(e+=`:${n.port}`),n.headers.host=e}return t(r)})(e),Ji)}}),Zi={name:"loggerMiddleware",tags:["LOGGER"],step:"initialize",override:!0},Yi="X-Amzn-Trace-Id",eo={step:"build",tags:["RECURSION_DETECTION"],name:"recursionDetectionMiddleware",override:!0,priority:"low"},to=e=>({applyToStack:t=>{t.add((e=>t=>async r=>{const{request:n}=r;if(!K.isInstance(n)||"node"!==e.runtime||n.headers.hasOwnProperty(Yi))return t(r);const i=process.env.AWS_LAMBDA_FUNCTION_NAME,o=process.env._X_AMZN_TRACE_ID,s=e=>"string"==typeof e&&e.length>0;return s(i)&&s(o)&&(n.headers[Yi]=o),t({...r,request:n})})(e),eo)}});const ro={step:"finalizeRequest",tags:["CHECK_CONTENT_LENGTH_HEADER"],name:"getCheckContentLengthHeaderPlugin",override:!0},no=e=>({applyToStack:e=>{e.add(((e,t)=>async r=>{const{request:n}=r;if(K.isInstance(n)&&!("content-length"in n.headers)){const e="Are you using a Stream of unknown length as the Body of a PutObject request? Consider using Upload instead from @aws-sdk/lib-storage.";"function"!=typeof t?.logger?.warn||t.logger instanceof Kr?console.warn(e):t.logger.warn(e)}return e({...r})}),ro)}}),io={tags:["REGION_REDIRECT","S3"],name:"regionRedirectEndpointMiddleware",override:!0,relation:"before",toMiddleware:"endpointV2Middleware"};const oo={step:"initialize",tags:["REGION_REDIRECT","S3"],name:"regionRedirectMiddleware",override:!0},so=e=>({applyToStack:t=>{t.add(function(e){return(t,r)=>async n=>{try{return await t(n)}catch(i){if(e.followRegionRedirects&&(301===i?.$metadata?.httpStatusCode||400===i?.$metadata?.httpStatusCode&&"IllegalLocationConstraintException"===i?.name)){try{const t=i.$response.headers["x-amz-bucket-region"];r.logger?.debug(`Redirecting from ${await e.region()} to ${t}`),r.__s3RegionRedirect=t}catch(e){throw new Error("Region redirect failed: "+e)}return t(n)}throw i}}}(e),oo),t.addRelativeTo((e=>(t,r)=>async n=>{const i=await e.region(),o=e.region;let s=()=>{};r.__s3RegionRedirect&&(Object.defineProperty(e,"region",{writable:!1,value:async()=>r.__s3RegionRedirect}),s=()=>Object.defineProperty(e,"region",{writable:!0,value:o}));try{const o=await t(n);if(r.__s3RegionRedirect&&(s(),i!==await e.region()))throw new Error("Region was not restored following S3 region redirect.");return o}catch(e){throw s(),e}})(e),io)}}),ao={tags:["S3"],name:"s3ExpiresMiddleware",override:!0,relation:"after",toMiddleware:"deserializerMiddleware"},co=e=>({applyToStack:e=>{e.addRelativeTo(((e,t)=>async r=>{const n=await e(r),{response:i}=n;if(V.isInstance(i)&&i.headers.expires){i.headers.expiresstring=i.headers.expires;try{wr(i.headers.expires)}catch(e){t.logger?.warn(`AWS SDK Warning for ${t.clientName}::${t.commandName} response parsing (${i.headers.expires}): ${e}`),delete i.headers.expires}}return n}),ao)}});class uo{constructor(e={}){this.data=e,this.lastPurgeTime=Date.now()}get(e){const t=this.data[e];if(t)return t}set(e,t){return this.data[e]=t,t}delete(e){delete this.data[e]}async purgeExpired(){const e=Date.now();if(!(this.lastPurgeTime+uo.EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS>e))for(const t in this.data){const r=this.data[t];if(!r.isRefreshing){const n=await r.identity;n.expiration&&n.expiration.getTime(){if((e.expiration?.getTime()??0){n.set(r,new lo(Promise.resolve(e)))}))),e})):n.set(r,new lo(this.getIdentity(r))).identity}async getIdentity(e){await this.cache.purgeExpired().catch((e=>{console.warn("Error while clearing expired entries in S3ExpressIdentityCache: \n"+e)}));const t=await this.createSessionFn(e);if(!t.Credentials?.AccessKeyId||!t.Credentials?.SecretAccessKey)throw new Error("s3#createSession response credential missing AccessKeyId or SecretAccessKey.");return{accessKeyId:t.Credentials.AccessKeyId,secretAccessKey:t.Credentials.SecretAccessKey,sessionToken:t.Credentials.SessionToken,expiration:t.Credentials.Expiration?new Date(t.Credentials.Expiration):void 0}}}var fo;ho.REFRESH_WINDOW_MS=6e4,function(e){e.ENV="env",e.CONFIG="shared config entry"}(fo||(fo={}));const po="X-Amz-S3session-Token",go=po.toLowerCase();class mo extends Nt{async signWithCredentials(e,t,r){const n=yo(t);e.headers[go]=t.sessionToken;return vo(this,n),this.signRequest(e,r??{})}async presignWithCredentials(e,t,r){const n=yo(t);delete e.headers[go],e.headers[po]=t.sessionToken,e.query=e.query??{},e.query[po]=t.sessionToken;return vo(this,n),this.presign(e,r)}}function yo(e){return{accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey,expiration:e.expiration}}function vo(e,t){const r=setTimeout((()=>{throw new Error("SignatureV4S3Express credential override was created but not called.")}),10),n=e.credentialProvider;e.credentialProvider=()=>(clearTimeout(r),e.credentialProvider=n,Promise.resolve(t))}const bo={name:"s3ExpressMiddleware",step:"build",tags:["S3","S3_EXPRESS"],override:!0},wo=e=>({applyToStack:t=>{t.add((e=>(t,r)=>async n=>{if(r.endpointV2){const t=r.endpointV2,i="sigv4-s3express"===t.properties?.authSchemes?.[0]?.name;if(("S3Express"===t.properties?.backend||"Directory"===t.properties?.bucketType)&&(ie(r,"S3_EXPRESS_BUCKET","J"),r.isS3ExpressBucket=!0),i){const t=n.input.Bucket;if(t){const i=await e.s3ExpressIdentityProvider.getS3ExpressIdentity(await e.credentials(),{Bucket:t});r.s3ExpressIdentity=i,K.isInstance(n.request)&&i.sessionToken&&(n.request.headers[go]=i.sessionToken)}}}return t(n)})(e),bo)}}),ko=e=>e=>{throw e},So=(e,t)=>{},Eo=e=>(t,r)=>async n=>{if(!K.isInstance(n.request))return t(n);const i=he(r).selectedHttpAuthScheme;if(!i)throw new Error("No HttpAuthScheme was selected: unable to sign request");const{httpAuthOption:{signingProperties:o={}},identity:s,signer:a}=i;let c;c=r.s3ExpressIdentity?await(async(e,t,r,n)=>{const i=await n.signWithCredentials(r,e,{});if(i.headers["X-Amz-Security-Token"]||i.headers["x-amz-security-token"])throw new Error("X-Amz-Security-Token must not be set for s3-express requests.");return i})(r.s3ExpressIdentity,0,n.request,await e.signer()):await a.sign(n.request,s,o);const u=await t({...n,request:c}).catch((a.errorHandler||ko)(o));return(a.successHandler||So)(u.response,o),u},xo={CopyObjectCommand:!0,UploadPartCopyCommand:!0,CompleteMultipartUploadCommand:!0},Ao=e=>(t,r)=>async n=>{const i=await t(n),{response:o}=i;if(!V.isInstance(o))return i;const{statusCode:s,body:a}=o;if(s<200||s>=300)return i;if(!("function"==typeof a?.stream||"function"==typeof a?.pipe||"function"==typeof a?.tee))return i;let c=a,u=a;!a||"object"!=typeof a||a instanceof Uint8Array||([c,u]=await async function(e){return"function"==typeof e.stream&&(e=e.stream()),e.tee()}(a)),o.body=u;const d=await To(c,{streamCollector:async e=>async function(e,t){let r=0;const n=[],i=e.getReader();let o=!1;for(;!o;){const{done:e,value:s}=await i.read();if(s&&(n.push(s),r+=s?.byteLength??0),r>=t)break;o=e}i.releaseLock();const s=new Uint8Array(Math.min(t,r));let a=0;for(const e of n){if(e.byteLength>s.byteLength-a){s.set(e.subarray(0,s.byteLength-a),a);break}s.set(e,a),a+=e.length}return s}(e,3e3)});"function"==typeof c?.destroy&&c.destroy();const l=e.utf8Encoder(d.subarray(d.length-16));if(0===d.length&&xo[r.commandName]){const e=new Error("S3 aborted request");throw e.name="InternalError",e}return l&&l.endsWith("")&&(o.statusCode=400),i},To=(e=new Uint8Array,t)=>e instanceof Uint8Array?Promise.resolve(e):t.streamCollector(e)||Promise.resolve(new Uint8Array),Co={relation:"after",toMiddleware:"deserializerMiddleware",tags:["THROW_200_EXCEPTIONS","S3"],name:"throw200ExceptionsMiddleware",override:!0},Ro=e=>({applyToStack:t=>{t.addRelativeTo(Ao(e),Co)}});const _o={name:"bucketEndpointMiddleware",override:!0,relation:"after",toMiddleware:"endpointV2Middleware"};const Oo={step:"initialize",tags:["VALIDATE_BUCKET_NAME"],name:"validateBucketNameMiddleware",override:!0},Po=e=>({applyToStack:t=>{t.add(function({bucketEndpoint:e}){return t=>async r=>{const{input:{Bucket:n}}=r;if(!e&&"string"==typeof n&&!("string"==typeof(i=n)&&0===i.indexOf("arn:")&&i.split(":").length>=6)&&n.indexOf("/")>=0){const e=new Error(`Bucket name shouldn't contain '/', received '${n}'`);throw e.name="InvalidBucketName",e}var i;return t({...r})}}(e),Oo),t.addRelativeTo(function(e){return(t,r)=>async n=>{if(e.bucketEndpoint){const e=r.endpointV2;if(e){const t=n.input.Bucket;if("string"==typeof t)try{const n=new URL(t);r.endpointV2={...e,url:n}}catch(e){const n=`@aws-sdk/middleware-sdk-s3: bucketEndpoint=true was set but Bucket=${t} could not be parsed as URL.`;throw"NoOpLogger"===r.logger?.constructor?.name?console.warn(n):r.logger?.warn?.(n),e}}}return t(n)}}(e),_o)}});const Io=new RegExp("^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$"),Mo=e=>Io.test(e)||e.startsWith("[")&&e.endsWith("]"),No=new RegExp("^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$"),Fo=(e,t=!1)=>{if(!t)return No.test(e);const r=e.split(".");for(const e of r)if(!Fo(e))return!1;return!0},$o={},Uo="endpoints";function Lo(e){return"object"!=typeof e||null==e?e:"ref"in e?`$${Lo(e.ref)}`:"fn"in e?`${e.fn}(${(e.argv||[]).map(Lo).join(", ")})`:JSON.stringify(e,null,2)}class Do extends Error{constructor(e){super(e),this.name="EndpointError"}}const Bo=(e,t)=>(e=>{const t=e.split("."),r=[];for(const n of t){const t=n.indexOf("[");if(-1!==t){if(n.indexOf("]")!==n.length-1)throw new Do(`Path: '${e}' does not end with ']'`);const i=n.slice(t+1,-1);if(Number.isNaN(parseInt(i)))throw new Do(`Invalid array index: '${i}' in path: '${e}'`);0!==t&&r.push(n.slice(0,t)),r.push(i)}else r.push(n)}return r})(t).reduce(((r,n)=>{if("object"!=typeof r)throw new Do(`Index '${n}' in '${t}' not found in '${JSON.stringify(e)}'`);return Array.isArray(r)?r[parseInt(n)]:r[n]}),e),zo={[B.HTTP]:80,[B.HTTPS]:443},jo={booleanEquals:(e,t)=>e===t,getAttr:Bo,isSet:e=>null!=e,isValidHostLabel:Fo,not:e=>!e,parseURL:e=>{const t=(()=>{try{if(e instanceof URL)return e;if("object"==typeof e&&"hostname"in e){const{hostname:t,port:r,protocol:n="",path:i="",query:o={}}=e,s=new URL(`${n}//${t}${r?`:${r}`:""}${i}`);return s.search=Object.entries(o).map((([e,t])=>`${e}=${t}`)).join("&"),s}return new URL(e)}catch(e){return null}})();if(!t)return console.error(`Unable to parse ${JSON.stringify(e)} as a whatwg URL.`),null;const r=t.href,{host:n,hostname:i,pathname:o,protocol:s,search:a}=t;if(a)return null;const c=s.slice(0,-1);if(!Object.values(B).includes(c))return null;const u=Mo(i);return{scheme:c,authority:`${n}${r.includes(`${n}:${zo[c]}`)||"string"==typeof e&&e.includes(`${n}:${zo[c]}`)?`:${zo[c]}`:""}`,path:o,normalizedPath:o.endsWith("/")?o:`${o}/`,isIp:u}},stringEquals:(e,t)=>e===t,substring:(e,t,r,n)=>t>=r||e.lengthencodeURIComponent(e).replace(/[!*'()]/g,(e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`))},qo=(e,t)=>{const r=[],n={...t.endpointParams,...t.referenceRecord};let i=0;for(;i{if("string"==typeof e)return qo(e,r);if(e.fn)return Ho(e,r);if(e.ref)return(({ref:e},t)=>({...t.endpointParams,...t.referenceRecord}[e]))(e,r);throw new Do(`'${t}': ${String(e)} is not a string, function or reference.`)},Ho=({fn:e,argv:t},r)=>{const n=t.map((e=>["boolean","number"].includes(typeof e)?e:Wo(e,"arg",r))),i=e.split(".");return i[0]in $o&&null!=i[1]?$o[i[0]][i[1]](...n):jo[e](...n)},Ko=({assign:e,...t},r)=>{if(e&&e in r.referenceRecord)throw new Do(`'${e}' is already defined in Reference Record.`);const n=Ho(t,r);return r.logger?.debug?.(`${Uo} evaluateCondition: ${Lo(t)} = ${Lo(n)}`),{result:""===n||!!n,...null!=e&&{toAssign:{name:e,value:n}}}},Vo=(e=[],t)=>{const r={};for(const n of e){const{result:e,toAssign:i}=Ko(n,{...t,referenceRecord:{...t.referenceRecord,...r}});if(!e)return{result:e};i&&(r[i.name]=i.value,t.logger?.debug?.(`${Uo} assign: ${i.name} := ${Lo(i.value)}`))}return{result:!0,referenceRecord:r}},Qo=(e,t)=>Object.entries(e).reduce(((e,[r,n])=>({...e,[r]:n.map((e=>{const n=Wo(e,"Header value entry",t);if("string"!=typeof n)throw new Do(`Header '${r}' value '${n}' is not a string`);return n}))})),{}),Go=(e,t)=>{if(Array.isArray(e))return e.map((e=>Go(e,t)));switch(typeof e){case"string":return qo(e,t);case"object":if(null===e)throw new Do(`Unexpected endpoint property: ${e}`);return Jo(e,t);case"boolean":return e;default:throw new Do("Unexpected endpoint property type: "+typeof e)}},Jo=(e,t)=>Object.entries(e).reduce(((e,[r,n])=>({...e,[r]:Go(n,t)})),{}),Xo=(e,t)=>{const r=Wo(e,"Endpoint URL",t);if("string"==typeof r)try{return new URL(r)}catch(e){throw console.error(`Failed to construct URL with ${r}`,e),e}throw new Do("Endpoint URL must be a string, got "+typeof r)},Zo=(e,t)=>{const{conditions:r,endpoint:n}=e,{result:i,referenceRecord:o}=Vo(r,t);if(!i)return;const s={...t,referenceRecord:{...t.referenceRecord,...o}},{url:a,properties:c,headers:u}=n;return t.logger?.debug?.(`${Uo} Resolving endpoint from template: ${Lo(n)}`),{...null!=u&&{headers:Qo(u,s)},...null!=c&&{properties:Jo(c,s)},url:Xo(a,s)}},Yo=(e,t)=>{const{conditions:r,error:n}=e,{result:i,referenceRecord:o}=Vo(r,t);if(i)throw new Do(Wo(n,"Error",{...t,referenceRecord:{...t.referenceRecord,...o}}))},es=(e,t)=>{const{conditions:r,rules:n}=e,{result:i,referenceRecord:o}=Vo(r,t);if(i)return ts(n,{...t,referenceRecord:{...t.referenceRecord,...o}})},ts=(e,t)=>{for(const r of e)if("endpoint"===r.type){const e=Zo(r,t);if(e)return e}else if("error"===r.type)Yo(r,t);else{if("tree"!==r.type)throw new Do(`Unknown endpoint rule: ${r}`);{const e=es(r,t);if(e)return e}}throw new Do("Rules evaluation failed")},rs=(e,t=!1)=>{if(t){for(const t of e.split("."))if(!rs(t))return!1;return!0}return!!Fo(e)&&(!(e.length<3||e.length>63)&&(e===e.toLowerCase()&&!Mo(e)))};let ns={partitions:[{id:"aws",outputs:{dnsSuffix:"amazonaws.com",dualStackDnsSuffix:"api.aws",implicitGlobalRegion:"us-east-1",name:"aws",supportsDualStack:!0,supportsFIPS:!0},regionRegex:"^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$",regions:{"af-south-1":{description:"Africa (Cape Town)"},"ap-east-1":{description:"Asia Pacific (Hong Kong)"},"ap-northeast-1":{description:"Asia Pacific (Tokyo)"},"ap-northeast-2":{description:"Asia Pacific (Seoul)"},"ap-northeast-3":{description:"Asia Pacific (Osaka)"},"ap-south-1":{description:"Asia Pacific (Mumbai)"},"ap-south-2":{description:"Asia Pacific (Hyderabad)"},"ap-southeast-1":{description:"Asia Pacific (Singapore)"},"ap-southeast-2":{description:"Asia Pacific (Sydney)"},"ap-southeast-3":{description:"Asia Pacific (Jakarta)"},"ap-southeast-4":{description:"Asia Pacific (Melbourne)"},"ap-southeast-5":{description:"Asia Pacific (Malaysia)"},"aws-global":{description:"AWS Standard global region"},"ca-central-1":{description:"Canada (Central)"},"ca-west-1":{description:"Canada West (Calgary)"},"eu-central-1":{description:"Europe (Frankfurt)"},"eu-central-2":{description:"Europe (Zurich)"},"eu-north-1":{description:"Europe (Stockholm)"},"eu-south-1":{description:"Europe (Milan)"},"eu-south-2":{description:"Europe (Spain)"},"eu-west-1":{description:"Europe (Ireland)"},"eu-west-2":{description:"Europe (London)"},"eu-west-3":{description:"Europe (Paris)"},"il-central-1":{description:"Israel (Tel Aviv)"},"me-central-1":{description:"Middle East (UAE)"},"me-south-1":{description:"Middle East (Bahrain)"},"sa-east-1":{description:"South America (Sao Paulo)"},"us-east-1":{description:"US East (N. Virginia)"},"us-east-2":{description:"US East (Ohio)"},"us-west-1":{description:"US West (N. California)"},"us-west-2":{description:"US West (Oregon)"}}},{id:"aws-cn",outputs:{dnsSuffix:"amazonaws.com.cn",dualStackDnsSuffix:"api.amazonwebservices.com.cn",implicitGlobalRegion:"cn-northwest-1",name:"aws-cn",supportsDualStack:!0,supportsFIPS:!0},regionRegex:"^cn\\-\\w+\\-\\d+$",regions:{"aws-cn-global":{description:"AWS China global region"},"cn-north-1":{description:"China (Beijing)"},"cn-northwest-1":{description:"China (Ningxia)"}}},{id:"aws-us-gov",outputs:{dnsSuffix:"amazonaws.com",dualStackDnsSuffix:"api.aws",implicitGlobalRegion:"us-gov-west-1",name:"aws-us-gov",supportsDualStack:!0,supportsFIPS:!0},regionRegex:"^us\\-gov\\-\\w+\\-\\d+$",regions:{"aws-us-gov-global":{description:"AWS GovCloud (US) global region"},"us-gov-east-1":{description:"AWS GovCloud (US-East)"},"us-gov-west-1":{description:"AWS GovCloud (US-West)"}}},{id:"aws-iso",outputs:{dnsSuffix:"c2s.ic.gov",dualStackDnsSuffix:"c2s.ic.gov",implicitGlobalRegion:"us-iso-east-1",name:"aws-iso",supportsDualStack:!1,supportsFIPS:!0},regionRegex:"^us\\-iso\\-\\w+\\-\\d+$",regions:{"aws-iso-global":{description:"AWS ISO (US) global region"},"us-iso-east-1":{description:"US ISO East"},"us-iso-west-1":{description:"US ISO WEST"}}},{id:"aws-iso-b",outputs:{dnsSuffix:"sc2s.sgov.gov",dualStackDnsSuffix:"sc2s.sgov.gov",implicitGlobalRegion:"us-isob-east-1",name:"aws-iso-b",supportsDualStack:!1,supportsFIPS:!0},regionRegex:"^us\\-isob\\-\\w+\\-\\d+$",regions:{"aws-iso-b-global":{description:"AWS ISOB (US) global region"},"us-isob-east-1":{description:"US ISOB East (Ohio)"}}},{id:"aws-iso-e",outputs:{dnsSuffix:"cloud.adc-e.uk",dualStackDnsSuffix:"cloud.adc-e.uk",implicitGlobalRegion:"eu-isoe-west-1",name:"aws-iso-e",supportsDualStack:!1,supportsFIPS:!0},regionRegex:"^eu\\-isoe\\-\\w+\\-\\d+$",regions:{"eu-isoe-west-1":{description:"EU ISOE West"}}},{id:"aws-iso-f",outputs:{dnsSuffix:"csp.hci.ic.gov",dualStackDnsSuffix:"csp.hci.ic.gov",implicitGlobalRegion:"us-isof-south-1",name:"aws-iso-f",supportsDualStack:!1,supportsFIPS:!0},regionRegex:"^us\\-isof\\-\\w+\\-\\d+$",regions:{}}],version:"1.1"};const is={isVirtualHostableS3Bucket:rs,parseArn:e=>{const t=e.split(":");if(t.length<6)return null;const[r,n,i,o,s,...a]=t;if("arn"!==r||""===n||""===i||""===a.join(":"))return null;return{partition:n,service:i,region:o,accountId:s,resourceId:a.map((e=>e.split("/"))).flat()}},partition:e=>{const{partitions:t}=ns;for(const r of t){const{regions:t,outputs:n}=r;for(const[r,i]of Object.entries(t))if(r===e)return{...n,...i}}for(const r of t){const{regionRegex:t,outputs:n}=r;if(new RegExp(t).test(e))return{...n}}const r=t.find((e=>"aws"===e.id));if(!r)throw new Error("Provided region was not found in the partition array or regex, and default partition with id 'aws' doesn't exist.");return{...r.outputs}}};$o.aws=is;const os=/\d{12}\.ddb/;const ss="user-agent",as="x-amz-user-agent",cs=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w]/g,us=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w\#]/g;const ds=e=>(t,r)=>async n=>{const{request:i}=n;if(!K.isInstance(i))return t(n);const{headers:o}=i,s=r?.userAgent?.map(ls)||[],a=(await e.defaultUserAgentProvider()).map(ls);await async function(e,t,r){const n=r.request;if("rpc-v2-cbor"===n?.headers?.["smithy-protocol"]&&ie(e,"PROTOCOL_RPC_V2_CBOR","M"),"function"==typeof t.retryStrategy){const r=await t.retryStrategy();"function"==typeof r.acquireInitialRetryToken?r.constructor?.name?.includes("Adaptive")?ie(e,"RETRY_MODE_ADAPTIVE","F"):ie(e,"RETRY_MODE_STANDARD","E"):ie(e,"RETRY_MODE_LEGACY","D")}if("function"==typeof t.accountIdEndpointMode){const r=e.endpointV2;switch(String(r?.url?.hostname).match(os)&&ie(e,"ACCOUNT_ID_ENDPOINT","O"),await(t.accountIdEndpointMode?.())){case"disabled":ie(e,"ACCOUNT_ID_MODE_DISABLED","Q");break;case"preferred":ie(e,"ACCOUNT_ID_MODE_PREFERRED","P");break;case"required":ie(e,"ACCOUNT_ID_MODE_REQUIRED","R")}}const i=e.__smithy_context?.selectedHttpAuthScheme?.identity;if(i?.$source){const t=i;t.accountId&&ie(e,"RESOLVED_ACCOUNT_ID","T");for(const[r,n]of Object.entries(t.$source??{}))ie(e,r,n)}}(r,e,n);const c=r;a.push(`m/${function(e){let t="";for(const r in e){const n=e[r];if(!(t.length+n.length+1<=1024))break;t.length?t+=","+n:t+=n}return t}(Object.assign({},r.__smithy_context?.features,c.__aws_sdk_context?.features))}`);const u=e?.customUserAgent?.map(ls)||[],d=await e.userAgentAppId();d&&a.push(ls([`app/${d}`]));const l=[].concat([...a,...s,...u]).join(" "),h=[...a.filter((e=>e.startsWith("aws-sdk-"))),...u].join(" ");return"browser"!==e.runtime?(h&&(o[as]=o[as]?`${o[ss]} ${h}`:h),o[ss]=l):o[as]=l,t({...n,request:i})},ls=e=>{const t=e[0].split("/").map((e=>e.replace(cs,"-"))).join("/"),r=e[1]?.replace(us,"-"),n=t.indexOf("/"),i=t.substring(0,n);let o=t.substring(n+1);return"api"===i&&(o=o.toLowerCase()),[i,o,r].filter((e=>e&&e.length>0)).reduce(((e,t,r)=>{switch(r){case 0:return t;case 1:return`${e}/${t}`;default:return`${e}#${t}`}}),"")},hs={name:"getUserAgentMiddleware",step:"build",priority:"low",tags:["SET_USER_AGENT","USER_AGENT"],override:!0},fs=e=>"string"==typeof e&&(e.startsWith("fips-")||e.endsWith("-fips")),ps=e=>fs(e)?["fips-aws-global","aws-fips"].includes(e)?"us-east-1":e.replace(/fips-(dkr-|prod-)?|-fips/,""):e,gs="content-length";const ms={step:"build",tags:["SET_CONTENT_LENGTH","CONTENT_LENGTH"],name:"contentLengthMiddleware",override:!0},ys=e=>({applyToStack:t=>{var r;t.add((r=e.bodyLengthChecker,e=>async t=>{const n=t.request;if(K.isInstance(n)){const{body:e,headers:t}=n;if(e&&-1===Object.keys(t).map((e=>e.toLowerCase())).indexOf(gs))try{const t=r(e);n.headers={...n.headers,[gs]:String(t)}}catch(e){}}return e({...t,request:n})}),ms)}}),vs=/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/,bs=/(\d+\.){3}\d+/,ws=/\.\./,ks=e=>vs.test(e)&&!bs.test(e)&&!ws.test(e),Ss=e=>{const[t,r,n,,,i]=e.split(":"),o="arn"===t&&e.split(":").length>=6,s=Boolean(o&&r&&n&&i);if(o&&!s)throw new Error(`Invalid ARN: ${e} was an invalid ARN.`);return s},Es=(e,t,r)=>{const n=async()=>{const n=r[e]??r[t];return"function"==typeof n?n():n};return"credentialScope"===e||"CredentialScope"===t?async()=>{const e="function"==typeof r.credentials?await r.credentials():r.credentials;return e?.credentialScope??e?.CredentialScope}:"accountId"===e||"AccountId"===t?async()=>{const e="function"==typeof r.credentials?await r.credentials():r.credentials;return e?.accountId??e?.AccountId}:"endpoint"===e||"endpoint"===t?async()=>{const e=await n();if(e&&"object"==typeof e){if("url"in e)return e.url.href;if("hostname"in e){const{protocol:t,hostname:r,port:n,path:i}=e;return`${t}//${r}${n?":"+n:""}${i}`}}return e}:n},xs=async e=>{};const As=e=>{if("string"==typeof e)return As(new URL(e));const{hostname:t,pathname:r,port:n,protocol:i,search:o}=e;let s;return o&&(s=function(e){const t={};if(e=e.replace(/^\?/,""))for(const r of e.split("&")){let[e,n=null]=r.split("=");e=decodeURIComponent(e),n&&(n=decodeURIComponent(n)),e in t?Array.isArray(t[e])?t[e].push(n):t[e]=[t[e],n]:t[e]=n}return t}(o)),{hostname:t,port:n?parseInt(n):void 0,protocol:i,path:r,query:s}},Ts=e=>"object"==typeof e?"url"in e?As(e.url):e:As(e),Cs=async(e,t,r)=>{const n={},i=t?.getEndpointParameterInstructions?.()||{};for(const[t,o]of Object.entries(i))switch(o.type){case"staticContextParams":n[t]=o.value;break;case"contextParams":n[t]=e[o.name];break;case"clientContextParams":case"builtInParams":n[t]=await Es(o.name,t,r)();break;default:throw new Error("Unrecognized endpoint parameter instruction: "+JSON.stringify(o))}return 0===Object.keys(i).length&&Object.assign(n,r),"s3"===String(r.serviceId).toLowerCase()&&await(async e=>{const t=e?.Bucket||"";if("string"==typeof e.Bucket&&(e.Bucket=t.replace(/#/g,encodeURIComponent("#")).replace(/\?/g,encodeURIComponent("?"))),Ss(t)){if(!0===e.ForcePathStyle)throw new Error("Path-style addressing cannot be used with ARN buckets")}else(!ks(t)||-1!==t.indexOf(".")&&!String(e.Endpoint).startsWith("http:")||t.toLowerCase()!==t||t.length<3)&&(e.ForcePathStyle=!0);return e.DisableMultiRegionAccessPoints&&(e.disableMultiRegionAccessPoints=!0,e.DisableMRAP=!0),e})(n),n},Rs=({config:e,instructions:t})=>(r,n)=>async i=>{e.endpoint&&function(e,t,r){e.__smithy_context?e.__smithy_context.features||(e.__smithy_context.features={}):e.__smithy_context={features:{}},e.__smithy_context.features[t]=r}(n,"ENDPOINT_OVERRIDE","N");const o=await(async(e,t,r,n)=>{if(!r.endpoint){let e;e=r.serviceConfiguredEndpoint?await r.serviceConfiguredEndpoint():await xs(r.serviceId),e&&(r.endpoint=()=>Promise.resolve(Ts(e)))}const i=await Cs(e,t,r);if("function"!=typeof r.endpointProvider)throw new Error("config.endpointProvider is not set.");return r.endpointProvider(i,n)})(i.input,{getEndpointParameterInstructions:()=>t},{...e},n);n.endpointV2=o,n.authSchemes=o.properties?.authSchemes;const s=n.authSchemes?.[0];if(s){n.signing_region=s.signingRegion,n.signing_service=s.signingName;const e=he(n),t=e?.selectedHttpAuthScheme?.httpAuthOption;t&&(t.signingProperties=Object.assign(t.signingProperties||{},{signing_region:s.signingRegion,signingRegion:s.signingRegion,signing_service:s.signingName,signingName:s.signingName,signingRegionSet:s.signingRegionSet},s.properties))}return r({...i})},_s={step:"serialize",tags:["ENDPOINT_PARAMETERS","ENDPOINT_V2","ENDPOINT"],name:"endpointV2Middleware",override:!0,relation:"before",toMiddleware:ye.name},Os=(e,t)=>({applyToStack:r=>{r.addRelativeTo(Rs({config:e,instructions:t}),_s)}});var Ps;!function(e){e.STANDARD="standard",e.ADAPTIVE="adaptive"}(Ps||(Ps={}));const Is=Ps.STANDARD,Ms=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],Ns=["TimeoutError","RequestTimeout","RequestTimeoutException"],Fs=[500,502,503,504],$s=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],Us=e=>429===e.$metadata?.httpStatusCode||Ms.includes(e.name)||1==e.$retryable?.throttling,Ls=e=>(e=>e.$metadata?.clockSkewCorrected)(e)||Ns.includes(e.name)||$s.includes(e?.code||"")||Fs.includes(e.$metadata?.httpStatusCode||0);class Ds{constructor(e){this.currentCapacity=0,this.enabled=!1,this.lastMaxRate=0,this.measuredTxRate=0,this.requestCount=0,this.lastTimestamp=0,this.timeWindow=0,this.beta=e?.beta??.7,this.minCapacity=e?.minCapacity??1,this.minFillRate=e?.minFillRate??.5,this.scaleConstant=e?.scaleConstant??.4,this.smooth=e?.smooth??.8;const t=this.getCurrentTimeInSeconds();this.lastThrottleTime=t,this.lastTxRateBucket=Math.floor(this.getCurrentTimeInSeconds()),this.fillRate=this.minFillRate,this.maxCapacity=this.minCapacity}getCurrentTimeInSeconds(){return Date.now()/1e3}async getSendToken(){return this.acquireTokenBucket(1)}async acquireTokenBucket(e){if(this.enabled){if(this.refillTokenBucket(),e>this.currentCapacity){const t=(e-this.currentCapacity)/this.fillRate*1e3;await new Promise((e=>Ds.setTimeoutFn(e,t)))}this.currentCapacity=this.currentCapacity-e}}refillTokenBucket(){const e=this.getCurrentTimeInSeconds();if(!this.lastTimestamp)return void(this.lastTimestamp=e);const t=(e-this.lastTimestamp)*this.fillRate;this.currentCapacity=Math.min(this.maxCapacity,this.currentCapacity+t),this.lastTimestamp=e}updateClientSendingRate(e){let t;if(this.updateMeasuredRate(),Us(e)){const e=this.enabled?Math.min(this.measuredTxRate,this.fillRate):this.measuredTxRate;this.lastMaxRate=e,this.calculateTimeWindow(),this.lastThrottleTime=this.getCurrentTimeInSeconds(),t=this.cubicThrottle(e),this.enableTokenBucket()}else this.calculateTimeWindow(),t=this.cubicSuccess(this.getCurrentTimeInSeconds());const r=Math.min(t,2*this.measuredTxRate);this.updateTokenBucketRate(r)}calculateTimeWindow(){this.timeWindow=this.getPrecise(Math.pow(this.lastMaxRate*(1-this.beta)/this.scaleConstant,1/3))}cubicThrottle(e){return this.getPrecise(e*this.beta)}cubicSuccess(e){return this.getPrecise(this.scaleConstant*Math.pow(e-this.lastThrottleTime-this.timeWindow,3)+this.lastMaxRate)}enableTokenBucket(){this.enabled=!0}updateTokenBucketRate(e){this.refillTokenBucket(),this.fillRate=Math.max(e,this.minFillRate),this.maxCapacity=Math.max(e,this.minCapacity),this.currentCapacity=Math.min(this.currentCapacity,this.maxCapacity)}updateMeasuredRate(){const e=this.getCurrentTimeInSeconds(),t=Math.floor(2*e)/2;if(this.requestCount++,t>this.lastTxRateBucket){const e=this.requestCount/(t-this.lastTxRateBucket);this.measuredTxRate=this.getPrecise(e*this.smooth+this.measuredTxRate*(1-this.smooth)),this.requestCount=0,this.lastTxRateBucket=t}}getPrecise(e){return parseFloat(e.toFixed(8))}}Ds.setTimeoutFn=setTimeout;const Bs=({retryDelay:e,retryCount:t,retryCost:r})=>({getRetryCount:()=>t,getRetryDelay:()=>Math.min(2e4,e),getRetryCost:()=>r});class zs{constructor(e){this.maxAttempts=e,this.mode=Ps.STANDARD,this.capacity=500,this.retryBackoffStrategy=(()=>{let e=100;return{computeNextBackoffDelay:t=>Math.floor(Math.min(2e4,Math.random()*2**t*e)),setDelayBase:t=>{e=t}}})(),this.maxAttemptsProvider="function"==typeof e?e:async()=>e}async acquireInitialRetryToken(e){return Bs({retryDelay:100,retryCount:0})}async refreshRetryTokenForRetry(e,t){const r=await this.getMaxAttempts();if(this.shouldRetry(e,t,r)){const r=t.errorType;this.retryBackoffStrategy.setDelayBase("THROTTLING"===r?500:100);const n=this.retryBackoffStrategy.computeNextBackoffDelay(e.getRetryCount()),i=t.retryAfterHint?Math.max(t.retryAfterHint.getTime()-Date.now()||0,n):n,o=this.getCapacityCost(r);return this.capacity-=o,Bs({retryDelay:i,retryCount:e.getRetryCount()+1,retryCost:o})}throw new Error("No retry token available")}recordSuccess(e){this.capacity=Math.max(500,this.capacity+(e.getRetryCost()??1))}getCapacity(){return this.capacity}async getMaxAttempts(){try{return await this.maxAttemptsProvider()}catch(e){return console.warn("Max attempts provider could not resolve. Using default of 3"),3}}shouldRetry(e,t,r){return e.getRetryCount()+1=this.getCapacityCost(t.errorType)&&this.isRetryableError(t.errorType)}getCapacityCost(e){return"TRANSIENT"===e?10:5}isRetryableError(e){return"THROTTLING"===e||"TRANSIENT"===e}}class js{constructor(e,t){this.maxAttemptsProvider=e,this.mode=Ps.ADAPTIVE;const{rateLimiter:r}=t??{};this.rateLimiter=r??new Ds,this.standardRetryStrategy=new zs(e)}async acquireInitialRetryToken(e){return await this.rateLimiter.getSendToken(),this.standardRetryStrategy.acquireInitialRetryToken(e)}async refreshRetryTokenForRetry(e,t){return this.rateLimiter.updateClientSendingRate(t),this.standardRetryStrategy.refreshRetryTokenForRetry(e,t)}recordSuccess(e){this.rateLimiter.updateClientSendingRate({}),this.standardRetryStrategy.recordSuccess(e)}}let qs;const Ws=new Uint8Array(16);function Hs(){if(!qs&&(qs="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!qs))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return qs(Ws)}const Ks=[];for(let e=0;e<256;++e)Ks.push((e+256).toString(16).slice(1));var Vs={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Qs(e,t,r){if(Vs.randomUUID&&!t&&!e)return Vs.randomUUID();const n=(e=e||{}).random||(e.rng||Hs)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=n[e];return t}return function(e,t=0){return Ks[e[t+0]]+Ks[e[t+1]]+Ks[e[t+2]]+Ks[e[t+3]]+"-"+Ks[e[t+4]]+Ks[e[t+5]]+"-"+Ks[e[t+6]]+Ks[e[t+7]]+"-"+Ks[e[t+8]]+Ks[e[t+9]]+"-"+Ks[e[t+10]]+Ks[e[t+11]]+Ks[e[t+12]]+Ks[e[t+13]]+Ks[e[t+14]]+Ks[e[t+15]]}(n)}const Gs=e=>e?.body instanceof ReadableStream,Js=e=>void 0!==e.acquireInitialRetryToken&&void 0!==e.refreshRetryTokenForRetry&&void 0!==e.recordSuccess,Xs=e=>{const t={error:e,errorType:Zs(e)},r=ta(e.$response);return r&&(t.retryAfterHint=r),t},Zs=e=>Us(e)?"THROTTLING":Ls(e)?"TRANSIENT":(e=>{if(void 0!==e.$metadata?.httpStatusCode){const t=e.$metadata.httpStatusCode;return 500<=t&&t<=599&&!Ls(e)}return!1})(e)?"SERVER_ERROR":"CLIENT_ERROR",Ys={name:"retryMiddleware",tags:["RETRY"],step:"finalizeRequest",priority:"high",override:!0},ea=e=>({applyToStack:t=>{t.add((e=>(t,r)=>async n=>{let i=await e.retryStrategy();const o=await e.maxAttempts();if(!Js(i))return i?.mode&&(r.userAgent=[...r.userAgent||[],["cfg/retry-mode",i.mode]]),i.retry(t,n);{let e=await i.acquireInitialRetryToken(r.partition_id),a=new Error,c=0,u=0;const{request:d}=n,l=K.isInstance(d);for(l&&(d.headers["amz-sdk-invocation-id"]=Qs());;)try{l&&(d.headers["amz-sdk-request"]=`attempt=${c+1}; max=${o}`);const{response:r,output:s}=await t(n);return i.recordSuccess(e),s.$metadata.attempts=c+1,s.$metadata.totalRetryDelay=u,{response:r,output:s}}catch(t){const n=Xs(t);if(a=(s=t)instanceof Error?s:s instanceof Object?Object.assign(new Error,s):"string"==typeof s?new Error(s):new Error(`AWS SDK error wrapper for ${s}`),l&&Gs(d))throw(r.logger instanceof Kr?console:r.logger)?.warn("An error was encountered in a non-retryable streaming request."),a;try{e=await i.refreshRetryTokenForRetry(e,n)}catch(e){throw a.$metadata||(a.$metadata={}),a.$metadata.attempts=c+1,a.$metadata.totalRetryDelay=u,a}c=e.getRetryCount();const o=e.getRetryDelay();u+=o,await new Promise((e=>setTimeout(e,o)))}}var s})(e),Ys)}}),ta=e=>{if(!V.isInstance(e))return;const t=Object.keys(e.headers).find((e=>"retry-after"===e.toLowerCase()));if(!t)return;const r=e.headers[t],n=Number(r);if(!Number.isNaN(n))return new Date(1e3*n);return new Date(r)},ra=null;class na{constructor(e){this.sigv4Signer=new mo(e),this.signerOptions=e}async sign(e,t={}){if("*"===t.signingRegion){if("node"!==this.signerOptions.runtime)throw new Error("This request requires signing with SigV4Asymmetric algorithm. It's only available in Node.js");return this.getSigv4aSigner().sign(e,t)}return this.sigv4Signer.sign(e,t)}async signWithCredentials(e,t,r={}){if("*"===r.signingRegion){if("node"!==this.signerOptions.runtime)throw new Error("This request requires signing with SigV4Asymmetric algorithm. It's only available in Node.js");return this.getSigv4aSigner().signWithCredentials(e,t,r)}return this.sigv4Signer.signWithCredentials(e,t,r)}async presign(e,t={}){if("*"===t.signingRegion){if("node"!==this.signerOptions.runtime)throw new Error("This request requires signing with SigV4Asymmetric algorithm. It's only available in Node.js");return this.getSigv4aSigner().presign(e,t)}return this.sigv4Signer.presign(e,t)}async presignWithCredentials(e,t,r={}){if("*"===r.signingRegion)throw new Error("Method presignWithCredentials is not supported for [signingRegion=*].");return this.sigv4Signer.presignWithCredentials(e,t,r)}getSigv4aSigner(){if(!this.sigv4aSigner){let e=null;try{if(e=ra,"function"!=typeof e)throw new Error}catch(e){throw e.message=`${e.message}\nPlease check whether you have installed the "@aws-sdk/signature-v4-crt" package explicitly. \nYou must also register the package by calling [require("@aws-sdk/signature-v4-crt");] or an ESM equivalent such as [import "@aws-sdk/signature-v4-crt";]. \nFor more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`,e}this.sigv4aSigner=new e({...this.signerOptions,signingAlgorithm:1})}return this.sigv4aSigner}}const ia="required",oa="type",sa="conditions",aa="fn",ca="argv",ua="ref",da="assign",la="url",ha="properties",fa="backend",pa="authSchemes",ga="disableDoubleEncoding",ma="signingName",ya="signingRegion",va="headers",ba="signingRegionSet",wa=!0,ka="isSet",Sa="booleanEquals",Ea="error",xa="aws.partition",Aa="stringEquals",Ta="getAttr",Ca="name",Ra="substring",_a="bucketSuffix",Oa="parseURL",Pa="{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}",Ia="endpoint",Ma="tree",Na="aws.isVirtualHostableS3Bucket",Fa="{url#scheme}://{Bucket}.{url#authority}{url#path}",$a="not",Ua="{url#scheme}://{url#authority}{url#path}",La="hardwareType",Da="regionPrefix",Ba="bucketAliasSuffix",za="outpostId",ja="isValidHostLabel",qa="sigv4a",Wa="s3-outposts",Ha="s3",Ka="{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}",Va="https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}",Qa="https://{Bucket}.s3.{partitionResult#dnsSuffix}",Ga="aws.parseArn",Ja="bucketArn",Xa="arnType",Za="s3-object-lambda",Ya="accesspoint",ec="accessPointName",tc="{url#scheme}://{accessPointName}-{bucketArn#accountId}.{url#authority}{url#path}",rc="mrapPartition",nc="outpostType",ic="arnPrefix",oc="{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}",sc="https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",ac="https://s3.{partitionResult#dnsSuffix}",cc={[ia]:!1,[oa]:"String"},uc={[ia]:!0,default:!1,[oa]:"Boolean"},dc={[ia]:!1,[oa]:"Boolean"},lc={[aa]:Sa,[ca]:[{[ua]:"Accelerate"},!0]},hc={[aa]:Sa,[ca]:[{[ua]:"UseFIPS"},!0]},fc={[aa]:Sa,[ca]:[{[ua]:"UseDualStack"},!0]},pc={[aa]:ka,[ca]:[{[ua]:"Endpoint"}]},gc={[aa]:xa,[ca]:[{[ua]:"Region"}],[da]:"partitionResult"},mc={[aa]:Aa,[ca]:[{[aa]:Ta,[ca]:[{[ua]:"partitionResult"},Ca]},"aws-cn"]},yc={[aa]:ka,[ca]:[{[ua]:"Bucket"}]},vc={[ua]:"Bucket"},bc={[aa]:Oa,[ca]:[{[ua]:"Endpoint"}],[da]:"url"},wc={[aa]:Sa,[ca]:[{[aa]:Ta,[ca]:[{[ua]:"url"},"isIp"]},!0]},kc={[ua]:"url"},Sc={[aa]:"uriEncode",[ca]:[vc],[da]:"uri_encoded_bucket"},Ec={[fa]:"S3Express",[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:"s3express",[ya]:"{Region}"}]},xc={},Ac={[aa]:Na,[ca]:[vc,!1]},Tc={[Ea]:"S3Express bucket name is not a valid virtual hostable name.",[oa]:Ea},Cc={[fa]:"S3Express",[pa]:[{[ga]:!0,[Ca]:"sigv4-s3express",[ma]:"s3express",[ya]:"{Region}"}]},Rc={[aa]:ka,[ca]:[{[ua]:"UseS3ExpressControlEndpoint"}]},_c={[aa]:Sa,[ca]:[{[ua]:"UseS3ExpressControlEndpoint"},!0]},Oc={[aa]:$a,[ca]:[pc]},Pc={[Ea]:"Unrecognized S3Express bucket name format.",[oa]:Ea},Ic={[aa]:$a,[ca]:[yc]},Mc={[ua]:La},Nc={[sa]:[Oc],[Ea]:"Expected a endpoint to be specified but no endpoint was found",[oa]:Ea},Fc={[pa]:[{[ga]:!0,[Ca]:qa,[ma]:Wa,[ba]:["*"]},{[ga]:!0,[Ca]:"sigv4",[ma]:Wa,[ya]:"{Region}"}]},$c={[aa]:Sa,[ca]:[{[ua]:"ForcePathStyle"},!1]},Uc={[ua]:"ForcePathStyle"},Lc={[aa]:Sa,[ca]:[{[ua]:"Accelerate"},!1]},Dc={[aa]:Aa,[ca]:[{[ua]:"Region"},"aws-global"]},Bc={[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:Ha,[ya]:"us-east-1"}]},zc={[aa]:$a,[ca]:[Dc]},jc={[aa]:Sa,[ca]:[{[ua]:"UseGlobalEndpoint"},!0]},qc={[la]:"https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",[ha]:{[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:Ha,[ya]:"{Region}"}]},[va]:{}},Wc={[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:Ha,[ya]:"{Region}"}]},Hc={[aa]:Sa,[ca]:[{[ua]:"UseGlobalEndpoint"},!1]},Kc={[aa]:Sa,[ca]:[{[ua]:"UseDualStack"},!1]},Vc={[la]:"https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},Qc={[aa]:Sa,[ca]:[{[ua]:"UseFIPS"},!1]},Gc={[la]:"https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},Jc={[la]:"https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},Xc={[aa]:Sa,[ca]:[{[aa]:Ta,[ca]:[kc,"isIp"]},!1]},Zc={[la]:Ka,[ha]:Wc,[va]:{}},Yc={[la]:Fa,[ha]:Wc,[va]:{}},eu={[Ia]:Yc,[oa]:Ia},tu={[la]:Va,[ha]:Wc,[va]:{}},ru={[la]:"https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},nu={[Ea]:"Invalid region: region was not a valid DNS name.",[oa]:Ea},iu={[ua]:Ja},ou={[ua]:Xa},su={[aa]:Ta,[ca]:[iu,"service"]},au={[ua]:ec},cu={[sa]:[fc],[Ea]:"S3 Object Lambda does not support Dual-stack",[oa]:Ea},uu={[sa]:[lc],[Ea]:"S3 Object Lambda does not support S3 Accelerate",[oa]:Ea},du={[sa]:[{[aa]:ka,[ca]:[{[ua]:"DisableAccessPoints"}]},{[aa]:Sa,[ca]:[{[ua]:"DisableAccessPoints"},!0]}],[Ea]:"Access points are not supported for this operation",[oa]:Ea},lu={[sa]:[{[aa]:ka,[ca]:[{[ua]:"UseArnRegion"}]},{[aa]:Sa,[ca]:[{[ua]:"UseArnRegion"},!1]},{[aa]:$a,[ca]:[{[aa]:Aa,[ca]:[{[aa]:Ta,[ca]:[iu,"region"]},"{Region}"]}]}],[Ea]:"Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`",[oa]:Ea},hu={[aa]:Ta,[ca]:[{[ua]:"bucketPartition"},Ca]},fu={[aa]:Ta,[ca]:[iu,"accountId"]},pu={[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:Za,[ya]:"{bucketArn#region}"}]},gu={[Ea]:"Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName}`",[oa]:Ea},mu={[Ea]:"Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`",[oa]:Ea},yu={[Ea]:"Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)",[oa]:Ea},vu={[Ea]:"Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`",[oa]:Ea},bu={[Ea]:"Invalid ARN: The ARN may only contain a single resource component after `accesspoint`.",[oa]:Ea},wu={[Ea]:"Invalid ARN: Expected a resource of the format `accesspoint:` but no name was provided",[oa]:Ea},ku={[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:Ha,[ya]:"{bucketArn#region}"}]},Su={[pa]:[{[ga]:!0,[Ca]:qa,[ma]:Wa,[ba]:["*"]},{[ga]:!0,[Ca]:"sigv4",[ma]:Wa,[ya]:"{bucketArn#region}"}]},Eu={[aa]:Ga,[ca]:[vc]},xu={[la]:"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Wc,[va]:{}},Au={[la]:"https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Wc,[va]:{}},Tu={[la]:"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Wc,[va]:{}},Cu={[la]:oc,[ha]:Wc,[va]:{}},Ru={[la]:"https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Wc,[va]:{}},_u={[ua]:"UseObjectLambdaEndpoint"},Ou={[pa]:[{[ga]:!0,[Ca]:"sigv4",[ma]:Za,[ya]:"{Region}"}]},Pu={[la]:"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},Iu={[la]:"https://s3-fips.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},Mu={[la]:"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},Nu={[la]:Ua,[ha]:Wc,[va]:{}},Fu={[la]:"https://s3.{Region}.{partitionResult#dnsSuffix}",[ha]:Wc,[va]:{}},$u=[{[ua]:"Region"}],Uu=[{[ua]:"Endpoint"}],Lu=[vc],Du=[fc],Bu=[lc],zu=[pc,bc],ju=[{[aa]:ka,[ca]:[{[ua]:"DisableS3ExpressSessionAuth"}]},{[aa]:Sa,[ca]:[{[ua]:"DisableS3ExpressSessionAuth"},!0]}],qu=[wc],Wu=[Sc],Hu=[Ac],Ku=[hc],Vu=[{[aa]:Ra,[ca]:[vc,6,14,!0],[da]:"s3expressAvailabilityZoneId"},{[aa]:Ra,[ca]:[vc,14,16,!0],[da]:"s3expressAvailabilityZoneDelim"},{[aa]:Aa,[ca]:[{[ua]:"s3expressAvailabilityZoneDelim"},"--"]}],Qu=[{[sa]:[hc],[Ia]:{[la]:"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[ha]:Ec,[va]:{}},[oa]:Ia},{[Ia]:{[la]:"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[ha]:Ec,[va]:{}},[oa]:Ia}],Gu=[{[aa]:Ra,[ca]:[vc,6,15,!0],[da]:"s3expressAvailabilityZoneId"},{[aa]:Ra,[ca]:[vc,15,17,!0],[da]:"s3expressAvailabilityZoneDelim"},{[aa]:Aa,[ca]:[{[ua]:"s3expressAvailabilityZoneDelim"},"--"]}],Ju=[{[sa]:[hc],[Ia]:{[la]:"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[ha]:Cc,[va]:{}},[oa]:Ia},{[Ia]:{[la]:"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[ha]:Cc,[va]:{}},[oa]:Ia}],Xu=[yc],Zu=[{[aa]:ja,[ca]:[{[ua]:za},!1]}],Yu=[{[aa]:Aa,[ca]:[{[ua]:Da},"beta"]}],ed=[gc],td=[{[aa]:ja,[ca]:[{[ua]:"Region"},!1]}],rd=[{[aa]:Aa,[ca]:[{[ua]:"Region"},"us-east-1"]}],nd=[{[aa]:Aa,[ca]:[ou,Ya]}],id=[{[aa]:Ta,[ca]:[iu,"resourceId[1]"],[da]:ec},{[aa]:$a,[ca]:[{[aa]:Aa,[ca]:[au,""]}]}],od=[iu,"resourceId[1]"],sd=[{[aa]:$a,[ca]:[{[aa]:Aa,[ca]:[{[aa]:Ta,[ca]:[iu,"region"]},""]}]}],ad=[{[aa]:$a,[ca]:[{[aa]:ka,[ca]:[{[aa]:Ta,[ca]:[iu,"resourceId[2]"]}]}]}],cd=[iu,"resourceId[2]"],ud=[{[aa]:xa,[ca]:[{[aa]:Ta,[ca]:[iu,"region"]}],[da]:"bucketPartition"}],dd=[{[aa]:Aa,[ca]:[hu,{[aa]:Ta,[ca]:[{[ua]:"partitionResult"},Ca]}]}],ld=[{[aa]:ja,[ca]:[{[aa]:Ta,[ca]:[iu,"region"]},!0]}],hd=[{[aa]:ja,[ca]:[fu,!1]}],fd=[{[aa]:ja,[ca]:[au,!1]}],pd=[{[aa]:ja,[ca]:[{[ua]:"Region"},!0]}],gd={version:"1.0",parameters:{Bucket:cc,Region:cc,UseFIPS:uc,UseDualStack:uc,Endpoint:cc,ForcePathStyle:uc,Accelerate:uc,UseGlobalEndpoint:uc,UseObjectLambdaEndpoint:dc,Key:cc,Prefix:cc,CopySource:cc,DisableAccessPoints:dc,DisableMultiRegionAccessPoints:uc,UseArnRegion:dc,UseS3ExpressControlEndpoint:dc,DisableS3ExpressSessionAuth:dc},rules:[{[sa]:[{[aa]:ka,[ca]:$u}],rules:[{[sa]:[lc,hc],error:"Accelerate cannot be used with FIPS",[oa]:Ea},{[sa]:[fc,pc],error:"Cannot set dual-stack in combination with a custom endpoint.",[oa]:Ea},{[sa]:[pc,hc],error:"A custom endpoint cannot be combined with FIPS",[oa]:Ea},{[sa]:[pc,lc],error:"A custom endpoint cannot be combined with S3 Accelerate",[oa]:Ea},{[sa]:[hc,gc,mc],error:"Partition does not support FIPS",[oa]:Ea},{[sa]:[yc,{[aa]:Ra,[ca]:[vc,0,6,wa],[da]:_a},{[aa]:Aa,[ca]:[{[ua]:_a},"--x-s3"]}],rules:[{[sa]:Du,error:"S3Express does not support Dual-stack.",[oa]:Ea},{[sa]:Bu,error:"S3Express does not support S3 Accelerate.",[oa]:Ea},{[sa]:zu,rules:[{[sa]:ju,rules:[{[sa]:qu,rules:[{[sa]:Wu,rules:[{endpoint:{[la]:Pa,[ha]:Ec,[va]:xc},[oa]:Ia}],[oa]:Ma}],[oa]:Ma},{[sa]:Hu,rules:[{endpoint:{[la]:Fa,[ha]:Ec,[va]:xc},[oa]:Ia}],[oa]:Ma},Tc],[oa]:Ma},{[sa]:qu,rules:[{[sa]:Wu,rules:[{endpoint:{[la]:Pa,[ha]:Cc,[va]:xc},[oa]:Ia}],[oa]:Ma}],[oa]:Ma},{[sa]:Hu,rules:[{endpoint:{[la]:Fa,[ha]:Cc,[va]:xc},[oa]:Ia}],[oa]:Ma},Tc],[oa]:Ma},{[sa]:[Rc,_c],rules:[{[sa]:[Sc,Oc],rules:[{[sa]:Ku,endpoint:{[la]:"https://s3express-control-fips.{Region}.amazonaws.com/{uri_encoded_bucket}",[ha]:Ec,[va]:xc},[oa]:Ia},{endpoint:{[la]:"https://s3express-control.{Region}.amazonaws.com/{uri_encoded_bucket}",[ha]:Ec,[va]:xc},[oa]:Ia}],[oa]:Ma}],[oa]:Ma},{[sa]:Hu,rules:[{[sa]:ju,rules:[{[sa]:Vu,rules:Qu,[oa]:Ma},{[sa]:Gu,rules:Qu,[oa]:Ma},Pc],[oa]:Ma},{[sa]:Vu,rules:Ju,[oa]:Ma},{[sa]:Gu,rules:Ju,[oa]:Ma},Pc],[oa]:Ma},Tc],[oa]:Ma},{[sa]:[Ic,Rc,_c],rules:[{[sa]:zu,endpoint:{[la]:Ua,[ha]:Ec,[va]:xc},[oa]:Ia},{[sa]:Ku,endpoint:{[la]:"https://s3express-control-fips.{Region}.amazonaws.com",[ha]:Ec,[va]:xc},[oa]:Ia},{endpoint:{[la]:"https://s3express-control.{Region}.amazonaws.com",[ha]:Ec,[va]:xc},[oa]:Ia}],[oa]:Ma},{[sa]:[yc,{[aa]:Ra,[ca]:[vc,49,50,wa],[da]:La},{[aa]:Ra,[ca]:[vc,8,12,wa],[da]:Da},{[aa]:Ra,[ca]:[vc,0,7,wa],[da]:Ba},{[aa]:Ra,[ca]:[vc,32,49,wa],[da]:za},{[aa]:xa,[ca]:$u,[da]:"regionPartition"},{[aa]:Aa,[ca]:[{[ua]:Ba},"--op-s3"]}],rules:[{[sa]:Zu,rules:[{[sa]:[{[aa]:Aa,[ca]:[Mc,"e"]}],rules:[{[sa]:Yu,rules:[Nc,{[sa]:zu,endpoint:{[la]:"https://{Bucket}.ec2.{url#authority}",[ha]:Fc,[va]:xc},[oa]:Ia}],[oa]:Ma},{endpoint:{[la]:"https://{Bucket}.ec2.s3-outposts.{Region}.{regionPartition#dnsSuffix}",[ha]:Fc,[va]:xc},[oa]:Ia}],[oa]:Ma},{[sa]:[{[aa]:Aa,[ca]:[Mc,"o"]}],rules:[{[sa]:Yu,rules:[Nc,{[sa]:zu,endpoint:{[la]:"https://{Bucket}.op-{outpostId}.{url#authority}",[ha]:Fc,[va]:xc},[oa]:Ia}],[oa]:Ma},{endpoint:{[la]:"https://{Bucket}.op-{outpostId}.s3-outposts.{Region}.{regionPartition#dnsSuffix}",[ha]:Fc,[va]:xc},[oa]:Ia}],[oa]:Ma},{error:'Unrecognized hardware type: "Expected hardware type o or e but got {hardwareType}"',[oa]:Ea}],[oa]:Ma},{error:"Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`.",[oa]:Ea}],[oa]:Ma},{[sa]:Xu,rules:[{[sa]:[pc,{[aa]:$a,[ca]:[{[aa]:ka,[ca]:[{[aa]:Oa,[ca]:Uu}]}]}],error:"Custom endpoint `{Endpoint}` was not a valid URI",[oa]:Ea},{[sa]:[$c,Ac],rules:[{[sa]:ed,rules:[{[sa]:td,rules:[{[sa]:[lc,mc],error:"S3 Accelerate cannot be used in this region",[oa]:Ea},{[sa]:[fc,hc,Lc,Oc,Dc],endpoint:{[la]:"https://{Bucket}.s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[fc,hc,Lc,Oc,zc,jc],rules:[{endpoint:qc,[oa]:Ia}],[oa]:Ma},{[sa]:[fc,hc,Lc,Oc,zc,Hc],endpoint:qc,[oa]:Ia},{[sa]:[Kc,hc,Lc,Oc,Dc],endpoint:{[la]:"https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,hc,Lc,Oc,zc,jc],rules:[{endpoint:Vc,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,hc,Lc,Oc,zc,Hc],endpoint:Vc,[oa]:Ia},{[sa]:[fc,Qc,lc,Oc,Dc],endpoint:{[la]:"https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[fc,Qc,lc,Oc,zc,jc],rules:[{endpoint:Gc,[oa]:Ia}],[oa]:Ma},{[sa]:[fc,Qc,lc,Oc,zc,Hc],endpoint:Gc,[oa]:Ia},{[sa]:[fc,Qc,Lc,Oc,Dc],endpoint:{[la]:"https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[fc,Qc,Lc,Oc,zc,jc],rules:[{endpoint:Jc,[oa]:Ia}],[oa]:Ma},{[sa]:[fc,Qc,Lc,Oc,zc,Hc],endpoint:Jc,[oa]:Ia},{[sa]:[Kc,Qc,Lc,pc,bc,wc,Dc],endpoint:{[la]:Ka,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,Qc,Lc,pc,bc,Xc,Dc],endpoint:{[la]:Fa,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,Qc,Lc,pc,bc,wc,zc,jc],rules:[{[sa]:rd,endpoint:Zc,[oa]:Ia},{endpoint:Zc,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,Qc,Lc,pc,bc,Xc,zc,jc],rules:[{[sa]:rd,endpoint:Yc,[oa]:Ia},eu],[oa]:Ma},{[sa]:[Kc,Qc,Lc,pc,bc,wc,zc,Hc],endpoint:Zc,[oa]:Ia},{[sa]:[Kc,Qc,Lc,pc,bc,Xc,zc,Hc],endpoint:Yc,[oa]:Ia},{[sa]:[Kc,Qc,lc,Oc,Dc],endpoint:{[la]:Va,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,Qc,lc,Oc,zc,jc],rules:[{[sa]:rd,endpoint:tu,[oa]:Ia},{endpoint:tu,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,Qc,lc,Oc,zc,Hc],endpoint:tu,[oa]:Ia},{[sa]:[Kc,Qc,Lc,Oc,Dc],endpoint:{[la]:Qa,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,Qc,Lc,Oc,zc,jc],rules:[{[sa]:rd,endpoint:{[la]:Qa,[ha]:Wc,[va]:xc},[oa]:Ia},{endpoint:ru,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,Qc,Lc,Oc,zc,Hc],endpoint:ru,[oa]:Ia}],[oa]:Ma},nu],[oa]:Ma}],[oa]:Ma},{[sa]:[pc,bc,{[aa]:Aa,[ca]:[{[aa]:Ta,[ca]:[kc,"scheme"]},"http"]},{[aa]:Na,[ca]:[vc,wa]},$c,Qc,Kc,Lc],rules:[{[sa]:ed,rules:[{[sa]:td,rules:[eu],[oa]:Ma},nu],[oa]:Ma}],[oa]:Ma},{[sa]:[$c,{[aa]:Ga,[ca]:Lu,[da]:Ja}],rules:[{[sa]:[{[aa]:Ta,[ca]:[iu,"resourceId[0]"],[da]:Xa},{[aa]:$a,[ca]:[{[aa]:Aa,[ca]:[ou,""]}]}],rules:[{[sa]:[{[aa]:Aa,[ca]:[su,Za]}],rules:[{[sa]:nd,rules:[{[sa]:id,rules:[cu,uu,{[sa]:sd,rules:[du,{[sa]:ad,rules:[lu,{[sa]:ud,rules:[{[sa]:ed,rules:[{[sa]:dd,rules:[{[sa]:ld,rules:[{[sa]:[{[aa]:Aa,[ca]:[fu,""]}],error:"Invalid ARN: Missing account id",[oa]:Ea},{[sa]:hd,rules:[{[sa]:fd,rules:[{[sa]:zu,endpoint:{[la]:tc,[ha]:pu,[va]:xc},[oa]:Ia},{[sa]:Ku,endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:pu,[va]:xc},[oa]:Ia},{endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:pu,[va]:xc},[oa]:Ia}],[oa]:Ma},gu],[oa]:Ma},mu],[oa]:Ma},yu],[oa]:Ma},vu],[oa]:Ma}],[oa]:Ma}],[oa]:Ma},bu],[oa]:Ma},{error:"Invalid ARN: bucket ARN is missing a region",[oa]:Ea}],[oa]:Ma},wu],[oa]:Ma},{error:"Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `{arnType}`",[oa]:Ea}],[oa]:Ma},{[sa]:nd,rules:[{[sa]:id,rules:[{[sa]:sd,rules:[{[sa]:nd,rules:[{[sa]:sd,rules:[du,{[sa]:ad,rules:[lu,{[sa]:ud,rules:[{[sa]:ed,rules:[{[sa]:[{[aa]:Aa,[ca]:[hu,"{partitionResult#name}"]}],rules:[{[sa]:ld,rules:[{[sa]:[{[aa]:Aa,[ca]:[su,Ha]}],rules:[{[sa]:hd,rules:[{[sa]:fd,rules:[{[sa]:Bu,error:"Access Points do not support S3 Accelerate",[oa]:Ea},{[sa]:[hc,fc],endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:ku,[va]:xc},[oa]:Ia},{[sa]:[hc,Kc],endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:ku,[va]:xc},[oa]:Ia},{[sa]:[Qc,fc],endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:ku,[va]:xc},[oa]:Ia},{[sa]:[Qc,Kc,pc,bc],endpoint:{[la]:tc,[ha]:ku,[va]:xc},[oa]:Ia},{[sa]:[Qc,Kc],endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:ku,[va]:xc},[oa]:Ia}],[oa]:Ma},gu],[oa]:Ma},mu],[oa]:Ma},{error:"Invalid ARN: The ARN was not for the S3 service, found: {bucketArn#service}",[oa]:Ea}],[oa]:Ma},yu],[oa]:Ma},vu],[oa]:Ma}],[oa]:Ma}],[oa]:Ma},bu],[oa]:Ma}],[oa]:Ma}],[oa]:Ma},{[sa]:[{[aa]:ja,[ca]:[au,wa]}],rules:[{[sa]:Du,error:"S3 MRAP does not support dual-stack",[oa]:Ea},{[sa]:Ku,error:"S3 MRAP does not support FIPS",[oa]:Ea},{[sa]:Bu,error:"S3 MRAP does not support S3 Accelerate",[oa]:Ea},{[sa]:[{[aa]:Sa,[ca]:[{[ua]:"DisableMultiRegionAccessPoints"},wa]}],error:"Invalid configuration: Multi-Region Access Point ARNs are disabled.",[oa]:Ea},{[sa]:[{[aa]:xa,[ca]:$u,[da]:rc}],rules:[{[sa]:[{[aa]:Aa,[ca]:[{[aa]:Ta,[ca]:[{[ua]:rc},Ca]},{[aa]:Ta,[ca]:[iu,"partition"]}]}],rules:[{endpoint:{[la]:"https://{accessPointName}.accesspoint.s3-global.{mrapPartition#dnsSuffix}",[ha]:{[pa]:[{[ga]:wa,name:qa,[ma]:Ha,[ba]:["*"]}]},[va]:xc},[oa]:Ia}],[oa]:Ma},{error:"Client was configured for partition `{mrapPartition#name}` but bucket referred to partition `{bucketArn#partition}`",[oa]:Ea}],[oa]:Ma}],[oa]:Ma},{error:"Invalid Access Point Name",[oa]:Ea}],[oa]:Ma},wu],[oa]:Ma},{[sa]:[{[aa]:Aa,[ca]:[su,Wa]}],rules:[{[sa]:Du,error:"S3 Outposts does not support Dual-stack",[oa]:Ea},{[sa]:Ku,error:"S3 Outposts does not support FIPS",[oa]:Ea},{[sa]:Bu,error:"S3 Outposts does not support S3 Accelerate",[oa]:Ea},{[sa]:[{[aa]:ka,[ca]:[{[aa]:Ta,[ca]:[iu,"resourceId[4]"]}]}],error:"Invalid Arn: Outpost Access Point ARN contains sub resources",[oa]:Ea},{[sa]:[{[aa]:Ta,[ca]:od,[da]:za}],rules:[{[sa]:Zu,rules:[lu,{[sa]:ud,rules:[{[sa]:ed,rules:[{[sa]:dd,rules:[{[sa]:ld,rules:[{[sa]:hd,rules:[{[sa]:[{[aa]:Ta,[ca]:cd,[da]:nc}],rules:[{[sa]:[{[aa]:Ta,[ca]:[iu,"resourceId[3]"],[da]:ec}],rules:[{[sa]:[{[aa]:Aa,[ca]:[{[ua]:nc},Ya]}],rules:[{[sa]:zu,endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.{url#authority}",[ha]:Su,[va]:xc},[oa]:Ia},{endpoint:{[la]:"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.s3-outposts.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ha]:Su,[va]:xc},[oa]:Ia}],[oa]:Ma},{error:"Expected an outpost type `accesspoint`, found {outpostType}",[oa]:Ea}],[oa]:Ma},{error:"Invalid ARN: expected an access point name",[oa]:Ea}],[oa]:Ma},{error:"Invalid ARN: Expected a 4-component resource",[oa]:Ea}],[oa]:Ma},mu],[oa]:Ma},yu],[oa]:Ma},vu],[oa]:Ma}],[oa]:Ma}],[oa]:Ma},{error:"Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `{outpostId}`",[oa]:Ea}],[oa]:Ma},{error:"Invalid ARN: The Outpost Id was not set",[oa]:Ea}],[oa]:Ma},{error:"Invalid ARN: Unrecognized format: {Bucket} (type: {arnType})",[oa]:Ea}],[oa]:Ma},{error:"Invalid ARN: No ARN type specified",[oa]:Ea}],[oa]:Ma},{[sa]:[{[aa]:Ra,[ca]:[vc,0,4,!1],[da]:ic},{[aa]:Aa,[ca]:[{[ua]:ic},"arn:"]},{[aa]:$a,[ca]:[{[aa]:ka,[ca]:[Eu]}]}],error:"Invalid ARN: `{Bucket}` was not a valid ARN",[oa]:Ea},{[sa]:[{[aa]:Sa,[ca]:[Uc,wa]},Eu],error:"Path-style addressing cannot be used with ARN buckets",[oa]:Ea},{[sa]:Wu,rules:[{[sa]:ed,rules:[{[sa]:[Lc],rules:[{[sa]:[fc,Oc,hc,Dc],endpoint:{[la]:"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[fc,Oc,hc,zc,jc],rules:[{endpoint:xu,[oa]:Ia}],[oa]:Ma},{[sa]:[fc,Oc,hc,zc,Hc],endpoint:xu,[oa]:Ia},{[sa]:[Kc,Oc,hc,Dc],endpoint:{[la]:"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,Oc,hc,zc,jc],rules:[{endpoint:Au,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,Oc,hc,zc,Hc],endpoint:Au,[oa]:Ia},{[sa]:[fc,Oc,Qc,Dc],endpoint:{[la]:"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[fc,Oc,Qc,zc,jc],rules:[{endpoint:Tu,[oa]:Ia}],[oa]:Ma},{[sa]:[fc,Oc,Qc,zc,Hc],endpoint:Tu,[oa]:Ia},{[sa]:[Kc,pc,bc,Qc,Dc],endpoint:{[la]:oc,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,pc,bc,Qc,zc,jc],rules:[{[sa]:rd,endpoint:Cu,[oa]:Ia},{endpoint:Cu,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,pc,bc,Qc,zc,Hc],endpoint:Cu,[oa]:Ia},{[sa]:[Kc,Oc,Qc,Dc],endpoint:{[la]:sc,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Kc,Oc,Qc,zc,jc],rules:[{[sa]:rd,endpoint:{[la]:sc,[ha]:Wc,[va]:xc},[oa]:Ia},{endpoint:Ru,[oa]:Ia}],[oa]:Ma},{[sa]:[Kc,Oc,Qc,zc,Hc],endpoint:Ru,[oa]:Ia}],[oa]:Ma},{error:"Path-style addressing cannot be used with S3 Accelerate",[oa]:Ea}],[oa]:Ma}],[oa]:Ma}],[oa]:Ma},{[sa]:[{[aa]:ka,[ca]:[_u]},{[aa]:Sa,[ca]:[_u,wa]}],rules:[{[sa]:ed,rules:[{[sa]:pd,rules:[cu,uu,{[sa]:zu,endpoint:{[la]:Ua,[ha]:Ou,[va]:xc},[oa]:Ia},{[sa]:Ku,endpoint:{[la]:"https://s3-object-lambda-fips.{Region}.{partitionResult#dnsSuffix}",[ha]:Ou,[va]:xc},[oa]:Ia},{endpoint:{[la]:"https://s3-object-lambda.{Region}.{partitionResult#dnsSuffix}",[ha]:Ou,[va]:xc},[oa]:Ia}],[oa]:Ma},nu],[oa]:Ma}],[oa]:Ma},{[sa]:[Ic],rules:[{[sa]:ed,rules:[{[sa]:pd,rules:[{[sa]:[hc,fc,Oc,Dc],endpoint:{[la]:"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[hc,fc,Oc,zc,jc],rules:[{endpoint:Pu,[oa]:Ia}],[oa]:Ma},{[sa]:[hc,fc,Oc,zc,Hc],endpoint:Pu,[oa]:Ia},{[sa]:[hc,Kc,Oc,Dc],endpoint:{[la]:"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[hc,Kc,Oc,zc,jc],rules:[{endpoint:Iu,[oa]:Ia}],[oa]:Ma},{[sa]:[hc,Kc,Oc,zc,Hc],endpoint:Iu,[oa]:Ia},{[sa]:[Qc,fc,Oc,Dc],endpoint:{[la]:"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Qc,fc,Oc,zc,jc],rules:[{endpoint:Mu,[oa]:Ia}],[oa]:Ma},{[sa]:[Qc,fc,Oc,zc,Hc],endpoint:Mu,[oa]:Ia},{[sa]:[Qc,Kc,pc,bc,Dc],endpoint:{[la]:Ua,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Qc,Kc,pc,bc,zc,jc],rules:[{[sa]:rd,endpoint:Nu,[oa]:Ia},{endpoint:Nu,[oa]:Ia}],[oa]:Ma},{[sa]:[Qc,Kc,pc,bc,zc,Hc],endpoint:Nu,[oa]:Ia},{[sa]:[Qc,Kc,Oc,Dc],endpoint:{[la]:ac,[ha]:Bc,[va]:xc},[oa]:Ia},{[sa]:[Qc,Kc,Oc,zc,jc],rules:[{[sa]:rd,endpoint:{[la]:ac,[ha]:Wc,[va]:xc},[oa]:Ia},{endpoint:Fu,[oa]:Ia}],[oa]:Ma},{[sa]:[Qc,Kc,Oc,zc,Hc],endpoint:Fu,[oa]:Ia}],[oa]:Ma},nu],[oa]:Ma}],[oa]:Ma}],[oa]:Ma},{error:"A region must be set when sending requests to S3.",[oa]:Ea}]},md=new class{constructor({size:e,params:t}){this.data=new Map,this.parameters=[],this.capacity=e??50,t&&(this.parameters=t)}get(e,t){const r=this.hash(e);if(!1===r)return t();if(!this.data.has(r)){if(this.data.size>this.capacity+10){const e=this.data.keys();let t=0;for(;;){const{value:r,done:n}=e.next();if(this.data.delete(r),n||++t>10)break}}this.data.set(r,t())}return this.data.get(r)}size(){return this.data.size}hash(e){let t="";const{parameters:r}=this;if(0===r.length)return!1;for(const n of r){const r=String(e[n]??"");if(r.includes("|;"))return!1;t+=r+"|;"}return t}}({size:50,params:["Accelerate","Bucket","DisableAccessPoints","DisableMultiRegionAccessPoints","DisableS3ExpressSessionAuth","Endpoint","ForcePathStyle","Region","UseArnRegion","UseDualStack","UseFIPS","UseGlobalEndpoint","UseObjectLambdaEndpoint","UseS3ExpressControlEndpoint"]}),yd=(e,t={})=>md.get(e,(()=>((e,t)=>{const{endpointParams:r,logger:n}=t,{parameters:i,rules:o}=e;t.logger?.debug?.(`${Uo} Initial EndpointParams: ${Lo(r)}`);const s=Object.entries(i).filter((([,e])=>null!=e.default)).map((([e,t])=>[e,t.default]));if(s.length>0)for(const[e,t]of s)r[e]=r[e]??t;const a=Object.entries(i).filter((([,e])=>e.required)).map((([e])=>e));for(const e of a)if(null==r[e])throw new Do(`Missing required parameter: '${e}'`);const c=ts(o,{endpointParams:r,logger:n,referenceRecord:{}});return t.logger?.debug?.(`${Uo} Resolved endpoint: ${Lo(c)}`),c})(gd,{endpointParams:e,logger:t.logger})));$o.aws=is;const vd=(bd=async(e,t,r)=>({operation:he(t).operation,region:await fe(e.region)()||(()=>{throw new Error("expected `region` to be configured for `aws.auth#sigv4`")})()}),async(e,t,r)=>{if(!r)throw new Error("Could not find `input` for `defaultEndpointRuleSetHttpAuthSchemeParametersProvider`");const n=await bd(e,t,r),i=he(t)?.commandInstance?.constructor?.getEndpointParameterInstructions;if(!i)throw new Error(`getEndpointParameterInstructions() is not defined on \`${t.commandName}\``);const o=await Cs(r,{getEndpointParameterInstructions:i},e);return Object.assign(n,o)});var bd;function wd(e){return{schemeId:"aws.auth#sigv4",signingProperties:{name:"s3",region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}function kd(e){return{schemeId:"aws.auth#sigv4a",signingProperties:{name:"s3",region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}const Sd=((e,t,r)=>n=>{const i=e(n),o=i.properties?.authSchemes;if(!o)return t(n);const s=[];for(const e of o){const{name:t,properties:i={},...a}=e,c=t.toLowerCase();let u;if(t!==c&&console.warn(`HttpAuthScheme has been normalized with lowercasing: \`${t}\` to \`${c}\``),"sigv4a"===c){u="aws.auth#sigv4a";const e=o.find((e=>{const t=e.name.toLowerCase();return"sigv4a"!==t&&t.startsWith("sigv4")}));if(e)continue}else{if(!c.startsWith("sigv4"))throw new Error(`Unknown HttpAuthScheme found in \`@smithy.rules#endpointRuleSet\`: \`${c}\``);u="aws.auth#sigv4"}const d=r[u];if(!d)throw new Error(`Could not find HttpAuthOption create function for \`${u}\``);const l=d(n);l.schemeId=u,l.signingProperties={...l.signingProperties||{},...a,...i},s.push(l)}return s})(yd,(e=>{const t=[];return e.operation,t.push(wd(e)),t.push(kd(e)),t}),{"aws.auth#sigv4":wd,"aws.auth#sigv4a":kd}),Ed=e=>{const t=(e=>(e.sigv4aSigningRegionSet=Ee(e.sigv4aSigningRegionSet),e))(Ut(e));return{...t}},xd={ForcePathStyle:{type:"clientContextParams",name:"forcePathStyle"},UseArnRegion:{type:"clientContextParams",name:"useArnRegion"},DisableMultiRegionAccessPoints:{type:"clientContextParams",name:"disableMultiregionAccessPoints"},Accelerate:{type:"clientContextParams",name:"useAccelerateEndpoint"},DisableS3ExpressSessionAuth:{type:"clientContextParams",name:"disableS3ExpressSessionAuth"},UseGlobalEndpoint:{type:"builtInParams",name:"useGlobalEndpoint"},UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}};class Ad extends Ir{constructor(e){super(e),Object.setPrototypeOf(this,Ad.prototype)}}class Td extends Ad{constructor(e){super({name:"NoSuchUpload",$fault:"client",...e}),this.name="NoSuchUpload",this.$fault="client",Object.setPrototypeOf(this,Td.prototype)}}class Cd extends Ad{constructor(e){super({name:"ObjectNotInActiveTierError",$fault:"client",...e}),this.name="ObjectNotInActiveTierError",this.$fault="client",Object.setPrototypeOf(this,Cd.prototype)}}class Rd extends Ad{constructor(e){super({name:"BucketAlreadyExists",$fault:"client",...e}),this.name="BucketAlreadyExists",this.$fault="client",Object.setPrototypeOf(this,Rd.prototype)}}class _d extends Ad{constructor(e){super({name:"BucketAlreadyOwnedByYou",$fault:"client",...e}),this.name="BucketAlreadyOwnedByYou",this.$fault="client",Object.setPrototypeOf(this,_d.prototype)}}class Od extends Ad{constructor(e){super({name:"NoSuchBucket",$fault:"client",...e}),this.name="NoSuchBucket",this.$fault="client",Object.setPrototypeOf(this,Od.prototype)}}var Pd,Id;!function(e){e.visit=(e,t)=>void 0!==e.Prefix?t.Prefix(e.Prefix):void 0!==e.Tag?t.Tag(e.Tag):void 0!==e.And?t.And(e.And):t._(e.$unknown[0],e.$unknown[1])}(Pd||(Pd={})),function(e){e.visit=(e,t)=>void 0!==e.Prefix?t.Prefix(e.Prefix):void 0!==e.Tag?t.Tag(e.Tag):void 0!==e.AccessPointArn?t.AccessPointArn(e.AccessPointArn):void 0!==e.And?t.And(e.And):t._(e.$unknown[0],e.$unknown[1])}(Id||(Id={}));class Md extends Ad{constructor(e){super({name:"InvalidObjectState",$fault:"client",...e}),this.name="InvalidObjectState",this.$fault="client",Object.setPrototypeOf(this,Md.prototype),this.StorageClass=e.StorageClass,this.AccessTier=e.AccessTier}}class Nd extends Ad{constructor(e){super({name:"NoSuchKey",$fault:"client",...e}),this.name="NoSuchKey",this.$fault="client",Object.setPrototypeOf(this,Nd.prototype)}}class Fd extends Ad{constructor(e){super({name:"NotFound",$fault:"client",...e}),this.name="NotFound",this.$fault="client",Object.setPrototypeOf(this,Fd.prototype)}}const $d=e=>({...e,...e.SecretAccessKey&&{SecretAccessKey:Kt},...e.SessionToken&&{SessionToken:Kt}}),Ud=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Kt},...e.Credentials&&{Credentials:$d(e.Credentials)}}),Ld=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Kt}}),Dd=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt}}),Bd=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:Kt}});class zd extends Ad{constructor(e){super({name:"EncryptionTypeMismatch",$fault:"client",...e}),this.name="EncryptionTypeMismatch",this.$fault="client",Object.setPrototypeOf(this,zd.prototype)}}class jd extends Ad{constructor(e){super({name:"InvalidRequest",$fault:"client",...e}),this.name="InvalidRequest",this.$fault="client",Object.setPrototypeOf(this,jd.prototype)}}class qd extends Ad{constructor(e){super({name:"InvalidWriteOffset",$fault:"client",...e}),this.name="InvalidWriteOffset",this.$fault="client",Object.setPrototypeOf(this,qd.prototype)}}class Wd extends Ad{constructor(e){super({name:"TooManyParts",$fault:"client",...e}),this.name="TooManyParts",this.$fault="client",Object.setPrototypeOf(this,Wd.prototype)}}class Hd extends Ad{constructor(e){super({name:"ObjectAlreadyInActiveTierError",$fault:"client",...e}),this.name="ObjectAlreadyInActiveTierError",this.$fault="client",Object.setPrototypeOf(this,Hd.prototype)}}var Kd;!function(e){e.visit=(e,t)=>void 0!==e.Records?t.Records(e.Records):void 0!==e.Stats?t.Stats(e.Stats):void 0!==e.Progress?t.Progress(e.Progress):void 0!==e.Cont?t.Cont(e.Cont):void 0!==e.End?t.End(e.End):t._(e.$unknown[0],e.$unknown[1])}(Kd||(Kd={}));const Vd=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Kt}}),Qd=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:Kt},...e.SSEKMSKeyId&&{SSEKMSKeyId:Kt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Kt}}),Gd=async(e,t)=>{const r=Ye(e,t),n=Vr({},Wr,{[rp]:e[Yh],[Tp]:e[ef],[Cp]:e[sf],[_p]:e[of],[Rp]:[()=>Wr(e[Ml]),()=>e[Ml].toString()]});r.bp("/"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1);const i=Vr({[Kf]:[,""]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Jd=async(e,t)=>{const r=Ye(e,t),n=Vr({},Wr,{[hp]:e[xh],[Sp]:e[Kh],[Jf]:[()=>Wr(e[Il]),()=>e[Il].toString()],[op]:e[rh],[Of]:e[fh],[dp]:[()=>Wr(e[ph]),()=>pr(e[ph]).toString()],[lp]:[()=>Wr(e[gh]),()=>e[gh].toString()]});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=Vr({[Lp]:[,"DeleteObject"],[Qf]:[,e[lf]]});return r.m("DELETE").h(n).q(i).b(undefined),r.build()},Xd=async(e,t)=>{const r=Ye(e,t),n=Vr({},Wr,{[Of]:e[fh],[Pf]:[()=>Wr(e[mh]),()=>pr(e[mh]).toString()],[If]:e[yh],[Mf]:[()=>Wr(e[wh]),()=>pr(e[wh]).toString()],[Df]:e[Uh],[Op]:e[tf],[Pp]:e[rf],[Ip]:e[nf],[Sp]:e[Kh],[op]:e[rh],[Yf]:e[ql]});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=Vr({[Lp]:[,"GetObject"],[Bf]:[,e[Dh]],[zf]:[,e[Bh]],[jf]:[,e[zh]],[qf]:[,e[jh]],[Wf]:[,e[qh]],[Hf]:[()=>void 0!==e.ResponseExpires,()=>pr(e[Wh]).toString()],[Qf]:[,e[lf]],[Uf]:[()=>void 0!==e.PartNumber,()=>e[$h].toString()]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Zd=async(e,t)=>{const r=Ye(e,t),n=Vr({},Wr,{[Sp]:e[Kh],[op]:e[rh],[vp]:[()=>Wr(e[Mh]),()=>(e[Mh]||[]).map(Zr).join(", ")]});r.bp("/"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1);const i=Vr({[Ff]:[,"2"],[xf]:[,e[Zl]],[Tf]:[,e[ih]],[$f]:[()=>void 0!==e.MaxKeys,()=>e[Ah].toString()],[Lf]:[,e[Nh]],[Ef]:[,e[Jl]],[_f]:[()=>void 0!==e.FetchOwner,()=>e[ah].toString()],[Vf]:[,e[Jh]]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Yd=async(e,t)=>{const r=Ye(e,t),n=Vr({},Wr,{[Sf]:e[Gl]||"application/octet-stream",[Gf]:e[Rl],[gf]:e[$l],[mf]:e[Dl],[yf]:e[Bl],[vf]:e[zl],[bf]:[()=>Wr(e[jl]),()=>e[jl].toString()],[wf]:e[Wl],[Ap]:e[Fl],[Xf]:e[Ul],[Zf]:e[Ll],[ep]:e[Vl],[tp]:e[Ql],[Af]:[()=>Wr(e[th]),()=>pr(e[th]).toString()],[Of]:e[fh],[If]:e[yh],[sp]:e[ch],[ap]:e[uh],[cp]:e[dh],[up]:e[lh],[$p]:[()=>Wr(e[hf]),()=>e[hf].toString()],[Tp]:e[ef],[xp]:e[Zh],[Up]:e[ff],[Op]:e[tf],[Pp]:e[rf],[Ip]:e[nf],[Cp]:e[sf],[_p]:e[of],[Rp]:[()=>Wr(e[Ml]),()=>e[Ml].toString()],[Sp]:e[Kh],[Mp]:e[uf],[mp]:e[Ph],[yp]:[()=>Wr(e[Ih]),()=>{return(t=e[Ih],t.toISOString().replace(".000Z","Z")).toString();var t}],[gp]:e[Oh],[op]:e[rh],...void 0!==e.Metadata&&Object.keys(e.Metadata).reduce(((t,r)=>(t[`x-amz-meta-${r.toLowerCase()}`]=e.Metadata[r],t)),{})});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=Vr({[Lp]:[,"PutObject"]});let o,s;return void 0!==e.Body&&(s=e.Body,o=s),r.m("PUT").h(n).q(i).b(o),r.build()},el=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return ol(e,t);const r=Vr({$metadata:Cl(e),[ef]:[,e.headers[Tp]],[sf]:[,e.headers[Cp]],[of]:[,e.headers[_p]],[Ml]:[()=>void 0!==e.headers[Rp],()=>Vt(e.headers[Rp])]}),n=rr(nr(await bi(e.body,t)),"body");return null!=n[Nl]&&(r[Nl]=Tl(n[Nl])),r},tl=async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return ol(e,t);const r=Vr({$metadata:Cl(e),[Yl]:[()=>void 0!==e.headers[np],()=>Vt(e.headers[np])],[lf]:[,e.headers[Fp]],[Lh]:[,e.headers[kp]]});return await Xe(e.body,t),r},rl=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return ol(e,t);const r=Vr({$metadata:Cl(e),[Yl]:[()=>void 0!==e.headers[np],()=>Vt(e.headers[np])],[Ol]:[,e.headers[pf]],[sh]:[,e.headers[ip]],[Gh]:[,e.headers[wp]],[Eh]:[()=>void 0!==e.headers[Nf],()=>rr(wr(e.headers[Nf]))],[jl]:[()=>void 0!==e.headers[bf],()=>ar(e.headers[bf])],[oh]:[,e.headers[Cf]],[Ul]:[,e.headers[Xf]],[Ll]:[,e.headers[Zf]],[Vl]:[,e.headers[ep]],[Ql]:[,e.headers[tp]],[Th]:[()=>void 0!==e.headers[fp],()=>cr(e.headers[fp])],[lf]:[,e.headers[Fp]],[$l]:[,e.headers[gf]],[Dl]:[,e.headers[mf]],[Bl]:[,e.headers[yf]],[zl]:[,e.headers[vf]],[Kl]:[,e.headers[kf]],[Gl]:[,e.headers[Sf]],[th]:[()=>void 0!==e.headers[Af],()=>rr(wr(e.headers[Af]))],[nh]:[,e.headers[Rf]],[ff]:[,e.headers[Up]],[ef]:[,e.headers[Tp]],[tf]:[,e.headers[Op]],[nf]:[,e.headers[Ip]],[sf]:[,e.headers[Cp]],[Ml]:[()=>void 0!==e.headers[Rp],()=>Vt(e.headers[Rp])],[Zh]:[,e.headers[xp]],[Lh]:[,e.headers[kp]],[Vh]:[,e.headers[Ep]],[Fh]:[()=>void 0!==e.headers[pp],()=>cr(e.headers[pp])],[df]:[()=>void 0!==e.headers[Np],()=>cr(e.headers[Np])],[Ph]:[,e.headers[mp]],[Ih]:[()=>void 0!==e.headers[yp],()=>rr(mr(e.headers[yp]))],[Oh]:[,e.headers[gp]],Metadata:[,Object.keys(e.headers).filter((e=>e.startsWith("x-amz-meta-"))).reduce(((t,r)=>(t[r.substring(11)]=e.headers[r],t)),{})]}),n=e.body;return t.sdkStreamMixin(n),r.Body=n,r},nl=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return ol(e,t);const r=Vr({$metadata:Cl(e),[Lh]:[,e.headers[kp]]}),n=rr(nr(await bi(e.body,t)),"body");return""===n.CommonPrefixes?r[Hl]=[]:null!=n[Hl]&&(r[Hl]=kl(jr(n[Hl]))),""===n.Contents?r[Xl]=[]:null!=n[Xl]&&(r[Xl]=El(jr(n[Xl]))),null!=n[Jl]&&(r[Jl]=ir(n[Jl])),null!=n[Zl]&&(r[Zl]=ir(n[Zl])),null!=n[ih]&&(r[ih]=ir(n[ih])),null!=n[bh]&&(r[bh]=Vt(n[bh])),null!=n[Sh]&&(r[Sh]=cr(n[Sh])),null!=n[Ah]&&(r[Ah]=cr(n[Ah])),null!=n[Ch]&&(r[Ch]=ir(n[Ch])),null!=n[Rh]&&(r[Rh]=ir(n[Rh])),null!=n[Nh]&&(r[Nh]=ir(n[Nh])),null!=n[Jh]&&(r[Jh]=ir(n[Jh])),r},il=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return ol(e,t);const r=Vr({$metadata:Cl(e),[sh]:[,e.headers[ip]],[oh]:[,e.headers[Cf]],[Ul]:[,e.headers[Xf]],[Ll]:[,e.headers[Zf]],[Vl]:[,e.headers[ep]],[Ql]:[,e.headers[tp]],[ef]:[,e.headers[Tp]],[lf]:[,e.headers[Fp]],[tf]:[,e.headers[Op]],[nf]:[,e.headers[Ip]],[sf]:[,e.headers[Cp]],[of]:[,e.headers[_p]],[Ml]:[()=>void 0!==e.headers[Rp],()=>Vt(e.headers[Rp])],[cf]:[()=>void 0!==e.headers[bp],()=>ar(e.headers[bp])],[Lh]:[,e.headers[kp]]});return await Xe(e.body,t),r},ol=async(e,t)=>{const r={...e,body:await wi(e.body,t)},n=((e,t)=>void 0!==t?.Error?.Code?t.Error.Code:void 0!==t?.Code?t.Code:404==e.statusCode?"NotFound":void 0)(e,r.body);switch(n){case"NoSuchUpload":case"com.amazonaws.s3#NoSuchUpload":throw await ml(r,t);case"ObjectNotInActiveTierError":case"com.amazonaws.s3#ObjectNotInActiveTierError":throw await bl(r,t);case"BucketAlreadyExists":case"com.amazonaws.s3#BucketAlreadyExists":throw await cl(r,t);case"BucketAlreadyOwnedByYou":case"com.amazonaws.s3#BucketAlreadyOwnedByYou":throw await ul(r,t);case"NoSuchBucket":case"com.amazonaws.s3#NoSuchBucket":throw await pl(r,t);case"InvalidObjectState":case"com.amazonaws.s3#InvalidObjectState":throw await ll(r,t);case"NoSuchKey":case"com.amazonaws.s3#NoSuchKey":throw await gl(r,t);case"NotFound":case"com.amazonaws.s3#NotFound":throw await yl(r,t);case"EncryptionTypeMismatch":case"com.amazonaws.s3#EncryptionTypeMismatch":throw await dl(r,t);case"InvalidRequest":case"com.amazonaws.s3#InvalidRequest":throw await hl(r,t);case"InvalidWriteOffset":case"com.amazonaws.s3#InvalidWriteOffset":throw await fl(r,t);case"TooManyParts":case"com.amazonaws.s3#TooManyParts":throw await wl(r,t);case"ObjectAlreadyInActiveTierError":case"com.amazonaws.s3#ObjectAlreadyInActiveTierError":throw await vl(r,t);default:const i=r.body;return sl({output:e,parsedBody:i,errorCode:n})}},sl=(al=Ad,({output:e,parsedBody:t,errorCode:r})=>{(({output:e,parsedBody:t,exceptionCtor:r,errorCode:n})=>{const i=Nr(e),o=i.httpStatusCode?i.httpStatusCode+"":void 0,s=new r({name:t?.code||t?.Code||n||o||"UnknownError",$fault:"client",$metadata:i});throw Mr(s,t)})({output:e,parsedBody:t,exceptionCtor:al,errorCode:r})});var al;const cl=async(e,t)=>{const r=Vr({});e.body;const n=new Rd({$metadata:Cl(e),...r});return Mr(n,e.body)},ul=async(e,t)=>{const r=Vr({});e.body;const n=new _d({$metadata:Cl(e),...r});return Mr(n,e.body)},dl=async(e,t)=>{const r=Vr({});e.body;const n=new zd({$metadata:Cl(e),...r});return Mr(n,e.body)},ll=async(e,t)=>{const r=Vr({}),n=e.body;null!=n[Pl]&&(r[Pl]=ir(n[Pl])),null!=n[Zh]&&(r[Zh]=ir(n[Zh]));const i=new Md({$metadata:Cl(e),...r});return Mr(i,e.body)},hl=async(e,t)=>{const r=Vr({});e.body;const n=new jd({$metadata:Cl(e),...r});return Mr(n,e.body)},fl=async(e,t)=>{const r=Vr({});e.body;const n=new qd({$metadata:Cl(e),...r});return Mr(n,e.body)},pl=async(e,t)=>{const r=Vr({});e.body;const n=new Od({$metadata:Cl(e),...r});return Mr(n,e.body)},gl=async(e,t)=>{const r=Vr({});e.body;const n=new Nd({$metadata:Cl(e),...r});return Mr(n,e.body)},ml=async(e,t)=>{const r=Vr({});e.body;const n=new Td({$metadata:Cl(e),...r});return Mr(n,e.body)},yl=async(e,t)=>{const r=Vr({});e.body;const n=new Fd({$metadata:Cl(e),...r});return Mr(n,e.body)},vl=async(e,t)=>{const r=Vr({});e.body;const n=new Hd({$metadata:Cl(e),...r});return Mr(n,e.body)},bl=async(e,t)=>{const r=Vr({});e.body;const n=new Cd({$metadata:Cl(e),...r});return Mr(n,e.body)},wl=async(e,t)=>{const r=Vr({});e.body;const n=new Wd({$metadata:Cl(e),...r});return Mr(n,e.body)},kl=(e,t)=>(e||[]).filter((e=>null!=e)).map((e=>(e=>{const t={};return null!=e[Nh]&&(t[Nh]=ir(e[Nh])),t})(e))),Sl=(e,t)=>{const r={};return null!=e[kh]&&(r[kh]=ir(e[kh])),null!=e[Eh]&&(r[Eh]=rr(mr(e[Eh]))),null!=e[oh]&&(r[oh]=ir(e[oh])),""===e.ChecksumAlgorithm?r[Fl]=[]:null!=e[Fl]&&(r[Fl]=(e=>(e||[]).filter((e=>null!=e)).map((e=>ir(e))))(jr(e[Fl]))),null!=e[cf]&&(r[cf]=ar(e[cf])),null!=e[Zh]&&(r[Zh]=ir(e[Zh])),null!=e[_h]&&(r[_h]=xl(e[_h])),null!=e[Qh]&&(r[Qh]=Al(e[Qh])),r},El=(e,t)=>(e||[]).filter((e=>null!=e)).map((e=>Sl(e))),xl=(e,t)=>{const r={};return null!=e[eh]&&(r[eh]=ir(e[eh])),null!=e[hh]&&(r[hh]=ir(e[hh])),r},Al=(e,t)=>{const r={};return null!=e[vh]&&(r[vh]=Vt(e[vh])),null!=e[Hh]&&(r[Hh]=rr(mr(e[Hh]))),r},Tl=(e,t)=>{const r={};return null!=e[_l]&&(r[_l]=ir(e[_l])),null!=e[Xh]&&(r[Xh]=ir(e[Xh])),null!=e[af]&&(r[af]=ir(e[af])),null!=e[sh]&&(r[sh]=rr(mr(e[sh]))),r},Cl=e=>({httpStatusCode:e.statusCode,requestId:e.headers["x-amzn-requestid"]??e.headers["x-amzn-request-id"]??e.headers["x-amz-request-id"],extendedRequestId:e.headers["x-amz-id-2"],cfId:e.headers["x-amz-cf-id"]}),Rl="ACL",_l="AccessKeyId",Ol="AcceptRanges",Pl="AccessTier",Il="BypassGovernanceRetention",Ml="BucketKeyEnabled",Nl="Credentials",Fl="ChecksumAlgorithm",$l="CacheControl",Ul="ChecksumCRC32",Ll="ChecksumCRC32C",Dl="ContentDisposition",Bl="ContentEncoding",zl="ContentLanguage",jl="ContentLength",ql="ChecksumMode",Wl="ContentMD5",Hl="CommonPrefixes",Kl="ContentRange",Vl="ChecksumSHA1",Ql="ChecksumSHA256",Gl="ContentType",Jl="ContinuationToken",Xl="Contents",Zl="Delimiter",Yl="DeleteMarker",eh="DisplayName",th="Expires",rh="ExpectedBucketOwner",nh="ExpiresString",ih="EncodingType",oh="ETag",sh="Expiration",ah="FetchOwner",ch="GrantFullControl",uh="GrantRead",dh="GrantReadACP",lh="GrantWriteACP",hh="ID",fh="IfMatch",ph="IfMatchLastModifiedTime",gh="IfMatchSize",mh="IfModifiedSince",yh="IfNoneMatch",vh="IsRestoreInProgress",bh="IsTruncated",wh="IfUnmodifiedSince",kh="Key",Sh="KeyCount",Eh="LastModified",xh="MFA",Ah="MaxKeys",Th="MissingMeta",Ch="Name",Rh="NextContinuationToken",_h="Owner",Oh="ObjectLockLegalHoldStatus",Ph="ObjectLockMode",Ih="ObjectLockRetainUntilDate",Mh="OptionalObjectAttributes",Nh="Prefix",Fh="PartsCount",$h="PartNumber",Uh="Range",Lh="RequestCharged",Dh="ResponseCacheControl",Bh="ResponseContentDisposition",zh="ResponseContentEncoding",jh="ResponseContentLanguage",qh="ResponseContentType",Wh="ResponseExpires",Hh="RestoreExpiryDate",Kh="RequestPayer",Vh="ReplicationStatus",Qh="RestoreStatus",Gh="Restore",Jh="StartAfter",Xh="SecretAccessKey",Zh="StorageClass",Yh="SessionMode",ef="ServerSideEncryption",tf="SSECustomerAlgorithm",rf="SSECustomerKey",nf="SSECustomerKeyMD5",of="SSEKMSEncryptionContext",sf="SSEKMSKeyId",af="SessionToken",cf="Size",uf="Tagging",df="TagCount",lf="VersionId",hf="WriteOffsetBytes",ff="WebsiteRedirectLocation",pf="accept-ranges",gf="cache-control",mf="content-disposition",yf="content-encoding",vf="content-language",bf="content-length",wf="content-md5",kf="content-range",Sf="content-type",Ef="continuation-token",xf="delimiter",Af="expires",Tf="encoding-type",Cf="etag",Rf="expiresstring",_f="fetch-owner",Of="if-match",Pf="if-modified-since",If="if-none-match",Mf="if-unmodified-since",Nf="last-modified",Ff="list-type",$f="max-keys",Uf="partNumber",Lf="prefix",Df="range",Bf="response-cache-control",zf="response-content-disposition",jf="response-content-encoding",qf="response-content-language",Wf="response-content-type",Hf="response-expires",Kf="session",Vf="start-after",Qf="versionId",Gf="x-amz-acl",Jf="x-amz-bypass-governance-retention",Xf="x-amz-checksum-crc32",Zf="x-amz-checksum-crc32c",Yf="x-amz-checksum-mode",ep="x-amz-checksum-sha1",tp="x-amz-checksum-sha256",rp="x-amz-create-session-mode",np="x-amz-delete-marker",ip="x-amz-expiration",op="x-amz-expected-bucket-owner",sp="x-amz-grant-full-control",ap="x-amz-grant-read",cp="x-amz-grant-read-acp",up="x-amz-grant-write-acp",dp="x-amz-if-match-last-modified-time",lp="x-amz-if-match-size",hp="x-amz-mfa",fp="x-amz-missing-meta",pp="x-amz-mp-parts-count",gp="x-amz-object-lock-legal-hold",mp="x-amz-object-lock-mode",yp="x-amz-object-lock-retain-until-date",vp="x-amz-optional-object-attributes",bp="x-amz-object-size",wp="x-amz-restore",kp="x-amz-request-charged",Sp="x-amz-request-payer",Ep="x-amz-replication-status",xp="x-amz-storage-class",Ap="x-amz-sdk-checksum-algorithm",Tp="x-amz-server-side-encryption",Cp="x-amz-server-side-encryption-aws-kms-key-id",Rp="x-amz-server-side-encryption-bucket-key-enabled",_p="x-amz-server-side-encryption-context",Op="x-amz-server-side-encryption-customer-algorithm",Pp="x-amz-server-side-encryption-customer-key",Ip="x-amz-server-side-encryption-customer-key-md5",Mp="x-amz-tagging",Np="x-amz-tagging-count",Fp="x-amz-version-id",$p="x-amz-write-offset-bytes",Up="x-amz-website-redirect-location",Lp="x-id";class Dp extends(Wt.classBuilder().ep({...xd,DisableS3ExpressSessionAuth:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),Ro(r)]})).s("AmazonS3","CreateSession",{}).n("S3Client","CreateSessionCommand").f(Ld,Ud).ser(Gd).de(el).build()){}var Bp="3.701.0";function zp(e){return"string"==typeof e?0===e.length:0===e.byteLength}var jp={name:"SHA-1"},qp={name:"HMAC",hash:jp},Wp=new Uint8Array([218,57,163,238,94,107,75,13,50,85,191,239,149,96,24,144,175,216,7,9]);const Hp={};function Kp(){return"undefined"!=typeof window?window:"undefined"!=typeof self?self:Hp}var Vp=function(){function e(e){this.toHash=new Uint8Array(0),void 0!==e&&(this.key=new Promise((function(t,r){Kp().crypto.subtle.importKey("raw",Qp(e),qp,!1,["sign"]).then(t,r)})),this.key.catch((function(){})))}return e.prototype.update=function(e){if(!zp(e)){var t=Qp(e),r=new Uint8Array(this.toHash.byteLength+t.byteLength);r.set(this.toHash,0),r.set(t,this.toHash.byteLength),this.toHash=r}},e.prototype.digest=function(){var e=this;return this.key?this.key.then((function(t){return Kp().crypto.subtle.sign(qp,t,e.toHash).then((function(e){return new Uint8Array(e)}))})):zp(this.toHash)?Promise.resolve(Wp):Promise.resolve().then((function(){return Kp().crypto.subtle.digest(jp,e.toHash)})).then((function(e){return Promise.resolve(new Uint8Array(e))}))},e.prototype.reset=function(){this.toHash=new Uint8Array(0)},e}();function Qp(e){return"string"==typeof e?(t=e,(new TextEncoder).encode(t)):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e);var t}var Gp=["decrypt","digest","encrypt","exportKey","generateKey","importKey","sign","verify"];function Jp(e){return!(!function(e){if("object"==typeof e&&"object"==typeof e.crypto){return"function"==typeof e.crypto.getRandomValues}return!1}(e)||"object"!=typeof e.crypto.subtle)&&function(e){return e&&Gp.every((function(t){return"function"==typeof e[t]}))}(e.crypto.subtle)}var Xp=function(){function e(e){if(!Jp(Kp()))throw new Error("SHA1 not supported");this.hash=new Vp(e)}return e.prototype.update=function(e,t){this.hash.update(Ri(e))},e.prototype.digest=function(){return this.hash.digest()},e.prototype.reset=function(){this.hash.reset()},e}(),Zp={name:"SHA-256"},Yp={name:"HMAC",hash:Zp},eg=new Uint8Array([227,176,196,66,152,252,28,20,154,251,244,200,153,111,185,36,39,174,65,228,100,155,147,76,164,149,153,27,120,82,184,85]),tg=function(){function e(e){this.toHash=new Uint8Array(0),this.secret=e,this.reset()}return e.prototype.update=function(e){if(!_i(e)){var t=Ri(e),r=new Uint8Array(this.toHash.byteLength+t.byteLength);r.set(this.toHash,0),r.set(t,this.toHash.byteLength),this.toHash=r}},e.prototype.digest=function(){var e=this;return this.key?this.key.then((function(t){return Kp().crypto.subtle.sign(Yp,t,e.toHash).then((function(e){return new Uint8Array(e)}))})):_i(this.toHash)?Promise.resolve(eg):Promise.resolve().then((function(){return Kp().crypto.subtle.digest(Zp,e.toHash)})).then((function(e){return Promise.resolve(new Uint8Array(e))}))},e.prototype.reset=function(){var e=this;this.toHash=new Uint8Array(0),this.secret&&void 0!==this.secret&&(this.key=new Promise((function(t,r){Kp().crypto.subtle.importKey("raw",Ri(e.secret),Yp,!1,["sign"]).then(t,r)})),this.key.catch((function(){})))},e}();function rg(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))}function ng(e,t){var r,n,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return s.next=a(0),s.throw=a(1),s.return=a(2),"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(a){return function(c){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;s&&(s=0,a[0]&&(o=0)),o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]ag)throw new Error("Cannot hash more than 2^53 - 1 bits");for(;r>0;)this.buffer[this.bufferLength++]=e[t++],r--,this.bufferLength===ig&&(this.hashBuffer(),this.bufferLength=0)},e.prototype.digest=function(){if(!this.finished){var e=8*this.bytesHashed,t=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),r=this.bufferLength;if(t.setUint8(this.bufferLength++,128),r%ig>=56){for(var n=this.bufferLength;n>>24&255,i[4*n+1]=this.state[n]>>>16&255,i[4*n+2]=this.state[n]>>>8&255,i[4*n+3]=this.state[n]>>>0&255;return i},e.prototype.hashBuffer=function(){for(var e=this.buffer,t=this.state,r=t[0],n=t[1],i=t[2],o=t[3],s=t[4],a=t[5],c=t[6],u=t[7],d=0;d>>17|l<<15)^(l>>>19|l<<13)^l>>>10,f=((l=this.temp[d-15])>>>7|l<<25)^(l>>>18|l<<14)^l>>>3;this.temp[d]=(h+this.temp[d-7]|0)+(f+this.temp[d-16]|0)}var p=(((s>>>6|s<<26)^(s>>>11|s<<21)^(s>>>25|s<<7))+(s&a^~s&c)|0)+(u+(og[d]+this.temp[d]|0)|0)|0,g=((r>>>2|r<<30)^(r>>>13|r<<19)^(r>>>22|r<<10))+(r&n^r&i^n&i)|0;u=c,c=a,a=s,s=o+p|0,o=i,i=n,n=r,r=p+g|0}t[0]+=r,t[1]+=n,t[2]+=i,t[3]+=o,t[4]+=s,t[5]+=a,t[6]+=c,t[7]+=u},e}(),ug=function(){function e(e){this.secret=e,this.hash=new cg,this.reset()}return e.prototype.update=function(e){if(!_i(e)&&!this.error)try{this.hash.update(Ri(e))}catch(e){this.error=e}},e.prototype.digestSync=function(){if(this.error)throw this.error;return this.outer?(this.outer.finished||this.outer.update(this.hash.digest()),this.outer.digest()):this.hash.digest()},e.prototype.digest=function(){return rg(this,void 0,void 0,(function(){return ng(this,(function(e){return[2,this.digestSync()]}))}))},e.prototype.reset=function(){if(this.hash=new cg,this.secret){this.outer=new cg;var e=function(e){var t=Ri(e);if(t.byteLength>ig){var r=new cg;r.update(t),t=r.digest()}var n=new Uint8Array(ig);return n.set(t),n}(this.secret),t=new Uint8Array(ig);t.set(e);for(var r=0;r0&&r[1]||""},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||""},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[1]){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,r,n){void 0===n&&(n=!1);var i=e.getVersionPrecision(t),o=e.getVersionPrecision(r),s=Math.max(i,o),a=0,c=e.map([t,r],(function(t){var r=s-e.getVersionPrecision(t),n=t+new Array(r+1).join(".0");return e.map(n.split("."),(function(e){return new Array(20-e.length).join("0")+e})).reverse()}));for(n&&(a=s-Math.min(i,o)),s-=1;s>=a;){if(c[0][s]>c[1][s])return 1;if(c[0][s]===c[1][s]){if(s===a)return 0;s-=1}else if(c[0][s]1?i-1:0),s=1;s0){var s=Object.keys(r),c=a.default.find(s,(function(e){return t.isOS(e)}));if(c){var u=this.satisfies(r[c]);if(void 0!==u)return u}var d=a.default.find(s,(function(e){return t.isPlatform(e)}));if(d){var l=this.satisfies(r[d]);if(void 0!==l)return l}}if(o>0){var h=Object.keys(i),f=a.default.find(h,(function(e){return t.isBrowser(e,!0)}));if(void 0!==f)return this.compareVersion(i[f])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),n=e.toLowerCase(),i=a.default.getBrowserTypeByAlias(n);return t&&i&&(n=i.toLowerCase()),n===r},t.compareVersion=function(e){var t=[0],r=e,n=!1,i=this.getBrowserVersion();if("string"==typeof i)return">"===e[0]||"<"===e[0]?(r=e.substr(1),"="===e[1]?(n=!0,r=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?r=e.substr(1):"~"===e[0]&&(n=!0,r=e.substr(1)),t.indexOf(a.default.compareVersions(i,r,n))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=u,e.exports=t.default},92:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=/version\/(\d+(\.?_?\d+)+)/i,s=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},r=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},r=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},r=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},r=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},r=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},r=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},r=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},r=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},r=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},r=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},r=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},r=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},r=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},r=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},r=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},r=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},r=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},r=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},r=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},r=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},r=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},r=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},r=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},r=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:"Android Browser"},r=i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},r=i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},r=i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:i.default.getFirstMatch(t,e),version:i.default.getSecondMatch(t,e)}}}];t.default=s,e.exports=t.default},93:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=r(18),s=[{test:[/Roku\/DVP/],describe:function(e){var t=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:o.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=i.default.getWindowsVersionName(t);return{name:o.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:o.OS_MAP.iOS},r=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),r=i.default.getMacOSVersionName(t),n={name:o.OS_MAP.MacOS,version:t};return r&&(n.versionName=r),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:o.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),r=i.default.getAndroidVersionName(t),n={name:o.OS_MAP.Android,version:t};return r&&(n.versionName=r),n}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),r={name:o.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||i.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:o.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:o.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:o.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.PlayStation4,version:t}}}];t.default=s,e.exports=t.default},94:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=r(18),s=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=i.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",r={type:o.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(r.model=t),r}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=i.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:o.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"blackberry"===e.getBrowserName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return"bada"===e.getBrowserName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"windows phone"===e.getBrowserName()},describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return"android"===e.getOSName(!0)&&t>=3},describe:function(){return{type:o.PLATFORMS_MAP.tablet}}},{test:function(e){return"android"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"macos"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return"windows"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop}}},{test:function(e){return"linux"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop}}},{test:function(e){return"playstation 4"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.tv}}},{test:function(e){return"roku"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.tv}}}];t.default=s,e.exports=t.default},95:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=r(18),s=[{test:function(e){return"microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return{name:o.ENGINE_MAP.Blink};var t=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:o.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:o.ENGINE_MAP.Trident},r=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:o.ENGINE_MAP.Presto},r=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:o.ENGINE_MAP.Gecko},r=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:o.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:o.ENGINE_MAP.WebKit},r=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=s,e.exports=t.default}});var hg=Yr(lg.exports);const fg=({serviceId:e,clientVersion:t})=>async r=>{const n="undefined"!=typeof window&&window?.navigator?.userAgent?hg.parse(window.navigator.userAgent):void 0,i=[["aws-sdk-js",t],["ua","2.1"],[`os/${n?.os?.name||"other"}`,n?.os?.version],["lang/js"],["md/browser",`${n?.browser?.name??"unknown"}_${n?.browser?.version??"unknown"}`]];e&&i.push([`api/${e}`,t]);const o=await(r?.userAgentAppId?.());return o&&i.push([`app/${o}`]),i};class pg{constructor(e){if(this.bytes=e,8!==e.byteLength)throw new Error("Int64 buffers must be exactly 8 bytes")}static fromNumber(e){if(e>0x8000000000000000||e<-0x8000000000000000)throw new Error(`${e} is too large (or, if negative, too small) to represent as an Int64`);const t=new Uint8Array(8);for(let r=7,n=Math.abs(Math.round(e));r>-1&&n>0;r--,n/=256)t[r]=n;return e<0&&gg(t),new pg(t)}valueOf(){const e=this.bytes.slice(0),t=128&e[0];return t&&gg(e),parseInt(qe(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}}function gg(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,0===e[t]);t--);}class mg{constructor(e,t){this.toUtf8=e,this.fromUtf8=t}format(e){const t=[];for(const r of Object.keys(e)){const n=this.fromUtf8(r);t.push(Uint8Array.from([n.byteLength]),n,this.formatHeaderValue(e[r]))}const r=new Uint8Array(t.reduce(((e,t)=>e+t.byteLength),0));let n=0;for(const e of t)r.set(e,n),n+=e.byteLength;return r}formatHeaderValue(e){switch(e.type){case"boolean":return Uint8Array.from([e.value?0:1]);case"byte":return Uint8Array.from([2,e.value]);case"short":const t=new DataView(new ArrayBuffer(3));return t.setUint8(0,3),t.setInt16(1,e.value,!1),new Uint8Array(t.buffer);case"integer":const r=new DataView(new ArrayBuffer(5));return r.setUint8(0,4),r.setInt32(1,e.value,!1),new Uint8Array(r.buffer);case"long":const n=new Uint8Array(9);return n[0]=5,n.set(e.value.bytes,1),n;case"binary":const i=new DataView(new ArrayBuffer(3+e.value.byteLength));i.setUint8(0,6),i.setUint16(1,e.value.byteLength,!1);const o=new Uint8Array(i.buffer);return o.set(e.value,3),o;case"string":const s=this.fromUtf8(e.value),a=new DataView(new ArrayBuffer(3+s.byteLength));a.setUint8(0,7),a.setUint16(1,s.byteLength,!1);const c=new Uint8Array(a.buffer);return c.set(s,3),c;case"timestamp":const u=new Uint8Array(9);return u[0]=8,u.set(pg.fromNumber(e.value.valueOf()).bytes,1),u;case"uuid":if(!Cg.test(e.value))throw new Error(`Invalid UUID received: ${e.value}`);const d=new Uint8Array(17);return d[0]=9,d.set(je(e.value.replace(/\-/g,"")),1),d}}parse(e){const t={};let r=0;for(;re,isEndOfStream:()=>t}}getAvailableMessages(){const e=this.messageBuffer;this.messageBuffer=[];const t=this.isEndOfStream;return{getMessages:()=>e,isEndOfStream:()=>t}}encode({headers:e,body:t}){const r=this.headerMarshaller.format(e),n=r.byteLength+t.byteLength+16,i=new Uint8Array(n),o=new DataView(i.buffer,i.byteOffset,i.byteLength),s=new Li;return o.setUint32(0,n,!1),o.setUint32(4,r.byteLength,!1),o.setUint32(8,s.update(i.subarray(0,8)).digest(),!1),i.set(r,12),i.set(t,r.byteLength+12),o.setUint32(n-4,s.update(i.subarray(8,n-4)).digest(),!1),i}decode(e){const{headers:t,body:r}=function({byteLength:e,byteOffset:t,buffer:r}){if(e<16)throw new Error("Provided message too short to accommodate event stream message overhead");const n=new DataView(r,t,e),i=n.getUint32(0,!1);if(e!==i)throw new Error("Reported message length does not match received message length");const o=n.getUint32(4,!1),s=n.getUint32(8,!1),a=n.getUint32(e-4,!1),c=(new Li).update(new Uint8Array(r,t,8));if(s!==c.digest())throw new Error(`The prelude checksum specified in the message (${s}) does not match the calculated CRC32 checksum (${c.digest()})`);if(c.update(new Uint8Array(r,t+8,e-12)),a!==c.digest())throw new Error(`The message checksum (${c.digest()}) did not match the expected value of ${a}`);return{headers:new DataView(r,t+8+4,o),body:new Uint8Array(r,t+8+4+o,i-o-16)}}(e);return{headers:this.headerMarshaller.parse(t),body:r}}formatHeaders(e){return this.headerMarshaller.format(e)}}class _g{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.inputStream){const t=this.options.decoder.decode(e);yield t}}}class Og{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.messageStream){const t=this.options.encoder.encode(e);yield t}this.options.includeEndFrame&&(yield new Uint8Array(0))}}class Pg{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.messageStream){const t=await this.options.deserializer(e);void 0!==t&&(yield t)}}}class Ig{constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(const e of this.options.inputStream){const t=this.options.serializer(e);yield t}}}function Mg(e,t){return async function(r){const{value:n}=r.headers[":message-type"];if("error"===n){const e=new Error(r.headers[":error-message"].value||"UnknownError");throw e.name=r.headers[":error-code"].value,e}if("exception"===n){const n=r.headers[":exception-type"].value,i={[n]:r},o=await e(i);if(o.$unknown){const e=new Error(t(r.body));throw e.name=n,e}throw o[n]}if("event"===n){const t={[r.headers[":event-type"].value]:r},n=await e(t);if(n.$unknown)return;return n}throw Error(`Unrecognizable event type: ${r.headers[":event-type"].value}`)}}class Ng{constructor({utf8Encoder:e,utf8Decoder:t}){this.eventStreamCodec=new Rg(e,t),this.utfEncoder=e}deserialize(e,t){const r=function(e){let t=0,r=0,n=null,i=null;const o=e=>{if("number"!=typeof e)throw new Error("Attempted to allocate an event message where size was not a number: "+e);t=e,r=4,n=new Uint8Array(e),new DataView(n.buffer).setUint32(0,e,!1)};return{[Symbol.asyncIterator]:async function*(){const s=e[Symbol.asyncIterator]();for(;;){const{value:e,done:a}=await s.next();if(a){if(!t)return;if(t!==r)throw new Error("Truncated event message received.");return void(yield n)}const c=e.length;let u=0;for(;u{const t=e[Symbol.asyncIterator]();return new ReadableStream({async pull(e){const{done:r,value:n}=await t.next();if(r)return e.close();e.enqueue(n)}})})(r):r}}const $g=e=>"function"==typeof ReadableStream&&e instanceof ReadableStream,Ug=e=>new Fg(e);const Lg=async function(e,t){const r=new e;return await async function(e,t,r=1048576){const n=e.size;let i=0;for(;i{r.update(e)})),r.digest()},Dg=64,Bg=[1732584193,4023233417,2562383102,271733878];class zg{constructor(){this.reset()}update(e){if(function(e){if("string"==typeof e)return 0===e.length;return 0===e.byteLength}(e))return;if(this.finished)throw new Error("Attempted to update an already finished hash.");const t=function(e){if("string"==typeof e)return Ce(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT);return new Uint8Array(e)}(e);let r=0,{byteLength:n}=t;for(this.bytesHashed+=n;n>0;)this.buffer.setUint8(this.bufferLength++,t[r++]),n--,this.bufferLength===Dg&&(this.hashBuffer(),this.bufferLength=0)}async digest(){if(!this.finished){const{buffer:e,bufferLength:t,bytesHashed:r}=this,n=8*r;if(e.setUint8(this.bufferLength++,128),t%Dg>=56){for(let t=this.bufferLength;t>>0,!0),e.setUint32(60,Math.floor(n/4294967296),!0),this.hashBuffer(),this.finished=!0}const e=new DataView(new ArrayBuffer(16));for(let t=0;t<4;t++)e.setUint32(4*t,this.state[t],!0);return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}hashBuffer(){const{buffer:e,state:t}=this;let r=t[0],n=t[1],i=t[2],o=t[3];r=qg(r,n,i,o,e.getUint32(0,!0),7,3614090360),o=qg(o,r,n,i,e.getUint32(4,!0),12,3905402710),i=qg(i,o,r,n,e.getUint32(8,!0),17,606105819),n=qg(n,i,o,r,e.getUint32(12,!0),22,3250441966),r=qg(r,n,i,o,e.getUint32(16,!0),7,4118548399),o=qg(o,r,n,i,e.getUint32(20,!0),12,1200080426),i=qg(i,o,r,n,e.getUint32(24,!0),17,2821735955),n=qg(n,i,o,r,e.getUint32(28,!0),22,4249261313),r=qg(r,n,i,o,e.getUint32(32,!0),7,1770035416),o=qg(o,r,n,i,e.getUint32(36,!0),12,2336552879),i=qg(i,o,r,n,e.getUint32(40,!0),17,4294925233),n=qg(n,i,o,r,e.getUint32(44,!0),22,2304563134),r=qg(r,n,i,o,e.getUint32(48,!0),7,1804603682),o=qg(o,r,n,i,e.getUint32(52,!0),12,4254626195),i=qg(i,o,r,n,e.getUint32(56,!0),17,2792965006),n=qg(n,i,o,r,e.getUint32(60,!0),22,1236535329),r=Wg(r,n,i,o,e.getUint32(4,!0),5,4129170786),o=Wg(o,r,n,i,e.getUint32(24,!0),9,3225465664),i=Wg(i,o,r,n,e.getUint32(44,!0),14,643717713),n=Wg(n,i,o,r,e.getUint32(0,!0),20,3921069994),r=Wg(r,n,i,o,e.getUint32(20,!0),5,3593408605),o=Wg(o,r,n,i,e.getUint32(40,!0),9,38016083),i=Wg(i,o,r,n,e.getUint32(60,!0),14,3634488961),n=Wg(n,i,o,r,e.getUint32(16,!0),20,3889429448),r=Wg(r,n,i,o,e.getUint32(36,!0),5,568446438),o=Wg(o,r,n,i,e.getUint32(56,!0),9,3275163606),i=Wg(i,o,r,n,e.getUint32(12,!0),14,4107603335),n=Wg(n,i,o,r,e.getUint32(32,!0),20,1163531501),r=Wg(r,n,i,o,e.getUint32(52,!0),5,2850285829),o=Wg(o,r,n,i,e.getUint32(8,!0),9,4243563512),i=Wg(i,o,r,n,e.getUint32(28,!0),14,1735328473),n=Wg(n,i,o,r,e.getUint32(48,!0),20,2368359562),r=Hg(r,n,i,o,e.getUint32(20,!0),4,4294588738),o=Hg(o,r,n,i,e.getUint32(32,!0),11,2272392833),i=Hg(i,o,r,n,e.getUint32(44,!0),16,1839030562),n=Hg(n,i,o,r,e.getUint32(56,!0),23,4259657740),r=Hg(r,n,i,o,e.getUint32(4,!0),4,2763975236),o=Hg(o,r,n,i,e.getUint32(16,!0),11,1272893353),i=Hg(i,o,r,n,e.getUint32(28,!0),16,4139469664),n=Hg(n,i,o,r,e.getUint32(40,!0),23,3200236656),r=Hg(r,n,i,o,e.getUint32(52,!0),4,681279174),o=Hg(o,r,n,i,e.getUint32(0,!0),11,3936430074),i=Hg(i,o,r,n,e.getUint32(12,!0),16,3572445317),n=Hg(n,i,o,r,e.getUint32(24,!0),23,76029189),r=Hg(r,n,i,o,e.getUint32(36,!0),4,3654602809),o=Hg(o,r,n,i,e.getUint32(48,!0),11,3873151461),i=Hg(i,o,r,n,e.getUint32(60,!0),16,530742520),n=Hg(n,i,o,r,e.getUint32(8,!0),23,3299628645),r=Kg(r,n,i,o,e.getUint32(0,!0),6,4096336452),o=Kg(o,r,n,i,e.getUint32(28,!0),10,1126891415),i=Kg(i,o,r,n,e.getUint32(56,!0),15,2878612391),n=Kg(n,i,o,r,e.getUint32(20,!0),21,4237533241),r=Kg(r,n,i,o,e.getUint32(48,!0),6,1700485571),o=Kg(o,r,n,i,e.getUint32(12,!0),10,2399980690),i=Kg(i,o,r,n,e.getUint32(40,!0),15,4293915773),n=Kg(n,i,o,r,e.getUint32(4,!0),21,2240044497),r=Kg(r,n,i,o,e.getUint32(32,!0),6,1873313359),o=Kg(o,r,n,i,e.getUint32(60,!0),10,4264355552),i=Kg(i,o,r,n,e.getUint32(24,!0),15,2734768916),n=Kg(n,i,o,r,e.getUint32(52,!0),21,1309151649),r=Kg(r,n,i,o,e.getUint32(16,!0),6,4149444226),o=Kg(o,r,n,i,e.getUint32(44,!0),10,3174756917),i=Kg(i,o,r,n,e.getUint32(8,!0),15,718787259),n=Kg(n,i,o,r,e.getUint32(36,!0),21,3951481745),t[0]=r+t[0]&4294967295,t[1]=n+t[1]&4294967295,t[2]=i+t[2]&4294967295,t[3]=o+t[3]&4294967295}reset(){this.state=Uint32Array.from(Bg),this.buffer=new DataView(new ArrayBuffer(Dg)),this.bufferLength=0,this.bytesHashed=0,this.finished=!1}}function jg(e,t,r,n,i,o){return((t=(t+e&4294967295)+(n+o&4294967295)&4294967295)<>>32-i)+r&4294967295}function qg(e,t,r,n,i,o,s){return jg(t&r|~t&n,e,t,i,o,s)}function Wg(e,t,r,n,i,o,s){return jg(t&n|r&~n,e,t,i,o,s)}function Hg(e,t,r,n,i,o,s){return jg(t^r^n,e,t,i,o,s)}function Kg(e,t,r,n,i,o,s){return jg(r^(t|~n),e,t,i,o,s)}const Vg="function"==typeof TextEncoder?new TextEncoder:null,Qg=e=>{if("string"==typeof e){if(Vg)return Vg.encode(e).byteLength;let t=e.length;for(let r=t-1;r>=0;r--){const n=e.charCodeAt(r);n>127&&n<=2047?t++:n>2047&&n<=65535&&(t+=2),n>=56320&&n<=57343&&r--}return t}if("number"==typeof e.byteLength)return e.byteLength;if("number"==typeof e.size)return e.size;throw new Error(`Body Length computation failed for ${e}`)},Gg=["in-region","cross-region","mobile","standard","legacy"],Jg=()=>{const e="undefined"!=typeof window&&window?.navigator?.userAgent?hg.parse(window.navigator.userAgent):void 0,t=e?.platform?.type;return"tablet"===t||"mobile"===t},Xg=e=>{const t=(({defaultsMode:e}={})=>((e,t,r)=>{let n,i,o,s=!1;const a=async()=>{i||(i=e());try{n=await i,o=!0,s=!1}finally{i=void 0}return n};return void 0===t?async e=>(o&&!e?.forceRefresh||(n=await a()),n):async e=>(o&&!e?.forceRefresh||(n=await a()),s?n:r&&!r(n)?(s=!0,n):t(n)?(await a(),n):n)})((async()=>{const t="function"==typeof e?await e():e;switch(t?.toLowerCase()){case"auto":return Promise.resolve(Jg()?"mobile":"standard");case"mobile":case"in-region":case"cross-region":case"standard":case"legacy":return Promise.resolve(t?.toLocaleLowerCase());case void 0:return Promise.resolve("legacy");default:throw new Error(`Invalid parameter for "defaultsMode", expect ${Gg.join(", ")}, got ${t}`)}})))(e),r=()=>t().then(Fr),n=(e=>({apiVersion:"2006-03-01",base64Decoder:e?.base64Decoder??Te,base64Encoder:e?.base64Encoder??Oe,disableHostPrefix:e?.disableHostPrefix??!1,endpointProvider:e?.endpointProvider??yd,extensions:e?.extensions??[],getAwsChunkedEncodingStream:e?.getAwsChunkedEncodingStream??Ie,httpAuthSchemeProvider:e?.httpAuthSchemeProvider??Sd,httpAuthSchemes:e?.httpAuthSchemes??[{schemeId:"aws.auth#sigv4",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4"),signer:new de},{schemeId:"aws.auth#sigv4a",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4a"),signer:new le}],logger:e?.logger??new Kr,sdkStreamMixin:e?.sdkStreamMixin??Ke,serviceId:e?.serviceId??"S3",signerConstructor:e?.signerConstructor??na,signingEscapePath:e?.signingEscapePath??!1,urlParser:e?.urlParser??As,useArnRegion:e?.useArnRegion??!1,utf8Decoder:e?.utf8Decoder??Ce,utf8Encoder:e?.utf8Encoder??_e}))(e);return{...n,...e,runtime:"browser",defaultsMode:t,bodyLengthChecker:e?.bodyLengthChecker??Qg,credentialDefaultProvider:e?.credentialDefaultProvider??(e=>()=>Promise.reject(new Error("Credential is missing"))),defaultUserAgentProvider:e?.defaultUserAgentProvider??fg({serviceId:n.serviceId,clientVersion:Bp}),eventStreamSerdeProvider:e?.eventStreamSerdeProvider??Ug,maxAttempts:e?.maxAttempts??3,md5:e?.md5??zg,region:e?.region??(i="Region is missing",()=>Promise.reject(i)),requestHandler:Le.create(e?.requestHandler??r),retryMode:e?.retryMode??(async()=>(await r()).retryMode||Is),sha1:e?.sha1??Xp,sha256:e?.sha256??dg,streamCollector:e?.streamCollector??De,streamHasher:e?.streamHasher??Lg,useDualstackEndpoint:e?.useDualstackEndpoint??(()=>Promise.resolve(false)),useFipsEndpoint:e?.useFipsEndpoint??(()=>Promise.resolve(false))};var i},Zg=e=>{let t=async()=>{if(void 0===e.region)throw new Error("Region is missing from runtimeConfig");const t=e.region;return"string"==typeof t?t:t()};return{setRegion(e){t=e},region:()=>t}},Yg=e=>{const t=e.httpAuthSchemes;let r=e.httpAuthSchemeProvider,n=e.credentials;return{setHttpAuthScheme(e){const r=t.findIndex((t=>t.schemeId===e.schemeId));-1===r?t.push(e):t.splice(r,1,e)},httpAuthSchemes:()=>t,setHttpAuthSchemeProvider(e){r=e},httpAuthSchemeProvider:()=>r,setCredentials(e){n=e},credentials:()=>n}},em=e=>({httpAuthSchemes:e.httpAuthSchemes(),httpAuthSchemeProvider:e.httpAuthSchemeProvider(),credentials:e.credentials()});class tm extends qt{constructor(...[e]){const t=Xg(e||{});var r;const n=function(e){const t=Ee(e.userAgentAppId??void 0);return{...e,customUserAgent:"string"==typeof e.customUserAgent?[[e.customUserAgent]]:e.customUserAgent,userAgentAppId:async()=>{const r=await t();if(!function(e){return void 0===e||"string"==typeof e&&e.length<=50}(r)){const t="NoOpLogger"!==e.logger?.constructor?.name&&e.logger?e.logger:console;"string"!=typeof r?t?.warn("userAgentAppId must be a string or undefined."):r.length>50&&t?.warn("The provided userAgentAppId exceeds the maximum length of 50 characters.")}return r}}}((r=t,{...r,useFipsEndpoint:r.useFipsEndpoint??!1,useDualstackEndpoint:r.useDualstackEndpoint??!1,forcePathStyle:r.forcePathStyle??!1,useAccelerateEndpoint:r.useAccelerateEndpoint??!1,useGlobalEndpoint:r.useGlobalEndpoint??!1,disableMultiregionAccessPoints:r.disableMultiregionAccessPoints??!1,defaultSigningName:"s3"}));var i;const o=(e=>({...e,eventStreamMarshaller:e.eventStreamSerdeProvider(e)}))((e=>{const t=e.tls??!0,{endpoint:r}=e,n=null!=r?async()=>Ts(await fe(r)()):void 0,i=!!r,o={...e,endpoint:n,tls:t,isCustomEndpoint:i,useDualstackEndpoint:fe(e.useDualstackEndpoint??!1),useFipsEndpoint:fe(e.useFipsEndpoint??!1)};let s;return o.serviceConfiguredEndpoint=async()=>(e.serviceId&&!s&&(s=xs(e.serviceId)),s),o})((e=>{const{region:t,useFipsEndpoint:r}=e;if(!t)throw new Error("Region is missing");return{...e,region:async()=>{if("string"==typeof t)return ps(t);const e=await t();return ps(e)},useFipsEndpoint:async()=>{const e="string"==typeof t?t:await t();return!!fs(e)||("function"!=typeof r?Promise.resolve(!!r):r())}}})((e=>{const{retryStrategy:t}=e,r=fe(e.maxAttempts??3);return{...e,maxAttempts:r,retryStrategy:async()=>t||(await fe(e.retryMode)()===Ps.ADAPTIVE?new js(r):new zs(r))}})((i=n,{...i,requestChecksumCalculation:fe(i.requestChecksumCalculation??X),responseChecksumValidation:fe(i.responseChecksumValidation??Z)}))))),s=((e,{session:t})=>{const[r,n]=t;return{...e,forcePathStyle:e.forcePathStyle??!1,useAccelerateEndpoint:e.useAccelerateEndpoint??!1,disableMultiregionAccessPoints:e.disableMultiregionAccessPoints??!1,followRegionRedirects:e.followRegionRedirects??!1,s3ExpressIdentityProvider:e.s3ExpressIdentityProvider??new ho((async e=>r().send(new n({Bucket:e,SessionMode:"ReadWrite"})))),bucketEndpoint:e.bucketEndpoint??!1}})(Ed(o),{session:[()=>this,Dp]}),a=((e,t)=>{const r={...Zg(e),...Br(e),...U(e),...Yg(e)};return t.forEach((e=>e.configure(r))),{...e,...(i=r,{region:i.region()}),...zr(r),...(n=r,{httpHandler:n.httpHandler()}),...em(r)};var n,i})(s,e?.extensions||[]);super(a),this.config=a,this.middlewareStack.use((e=>({applyToStack:t=>{t.add(ds(e),hs)}}))(this.config)),this.middlewareStack.use(ea(this.config)),this.middlewareStack.use(ys(this.config)),this.middlewareStack.use(Xi(this.config)),this.middlewareStack.use((this.config,{applyToStack:e=>{e.add(((e,t)=>async r=>{try{const n=await e(r),{clientName:i,commandName:o,logger:s,dynamoDbDocumentClientOptions:a={}}=t,{overrideInputFilterSensitiveLog:c,overrideOutputFilterSensitiveLog:u}=a,d=c??t.inputFilterSensitiveLog,l=u??t.outputFilterSensitiveLog,{$metadata:h,...f}=n.output;return s?.info?.({clientName:i,commandName:o,input:d(r.input),output:l(f),metadata:h}),n}catch(e){const{clientName:n,commandName:i,logger:o,dynamoDbDocumentClientOptions:s={}}=t,{overrideInputFilterSensitiveLog:a}=s,c=a??t.inputFilterSensitiveLog;throw o?.error?.({clientName:n,commandName:i,input:c(r.input),error:e,metadata:e.$metadata}),e}}),Zi)}})),this.middlewareStack.use(to(this.config)),this.middlewareStack.use(((e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:r})=>({applyToStack:n=>{n.addRelativeTo(pe(e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:r}),ge)}}))(this.config,{httpAuthSchemeParametersProvider:vd,identityProviderConfigProvider:async e=>new tt({"aws.auth#sigv4":e.credentials,"aws.auth#sigv4a":e.credentials})})),this.middlewareStack.use(Se(this.config)),this.middlewareStack.use(Po(this.config)),this.middlewareStack.use(G(this.config)),this.middlewareStack.use(so(this.config)),this.middlewareStack.use(wo(this.config)),this.middlewareStack.use((e=>({applyToStack:t=>{t.addRelativeTo(Eo(e),ke)}}))(this.config))}destroy(){super.destroy()}}const rm={name:"ssecMiddleware",step:"initialize",tags:["SSE"],override:!0},nm=e=>({applyToStack:t=>{var r;t.add((r=e,e=>async t=>{const n={...t.input},i=[{target:"SSECustomerKey",hash:"SSECustomerKeyMD5"},{target:"CopySourceSSECustomerKey",hash:"CopySourceSSECustomerKeyMD5"}];for(const e of i){const t=n[e.target];if(t){let i;"string"==typeof t?im(t,r)?i=r.base64Decoder(t):(i=r.utf8Decoder(t),n[e.target]=r.base64Encoder(i)):(i=ArrayBuffer.isView(t)?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):new Uint8Array(t),n[e.target]=r.base64Encoder(i));const o=new r.md5;o.update(i),n[e.hash]=r.base64Encoder(await o.digest())}}return e({...t,input:n})}),rm)}});function im(e,t){if(!/^(?:[A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(e))return!1;try{return 32===t.base64Decoder(e).length}catch{return!1}}class om extends(Wt.classBuilder().ep({...xd,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),Ro(r)]})).s("AmazonS3","DeleteObject",{}).n("S3Client","DeleteObjectCommand").f(void 0,void 0).ser(Jd).de(tl).build()){}class sm extends(Wt.classBuilder().ep({...xd,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),Gi(r,{requestChecksumRequired:!1,requestValidationModeMember:"ChecksumMode",responseAlgorithms:["CRC32","CRC32C","SHA256","SHA1"]}),nm(r),co()]})).s("AmazonS3","GetObject",{}).n("S3Client","GetObjectCommand").f(Bd,Dd).ser(Xd).de(rl).build()){}class am extends(Wt.classBuilder().ep({...xd,Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),Ro(r)]})).s("AmazonS3","ListObjectsV2",{}).n("S3Client","ListObjectsV2Command").f(void 0,void 0).ser(Zd).de(nl).build()){}class cm extends(Wt.classBuilder().ep({...xd,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[ve(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),Gi(r,{requestAlgorithmMember:"ChecksumAlgorithm",requestAlgorithmMemberHttpHeader:"x-amz-sdk-checksum-algorithm",requestChecksumRequired:!1}),no(),Ro(r),nm(r)]})).s("AmazonS3","PutObject",{}).n("S3Client","PutObjectCommand").f(Qd,Vd).ser(Yd).de(il).build()){}class um{constructor(e){this.config=e,this.taskQueue=new p(5),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}shouldUsePathStyle(e){try{const t=new URL(e),r=t.hostname,n=/^(\d{1,3}\.){3}\d{1,3}$/.test(r),i=""!==t.port;return!n&&i}catch(e){return!0}}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return a(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:n,accessKeyId:i,secretAccessKey:o,dir:s}=this.config;s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder;let a=s+"/"+e;for(;a.startsWith("/");)a=a.substring(1);""===a||a.endsWith("/")||(a+="/");const c=new tm({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o},forcePathStyle:this.shouldUsePathStyle(t)});try{let e,t=[],r=[],i=!0;for(;i;){const o=yield c.send(new am({Bucket:n,Prefix:a,Delimiter:"/",ContinuationToken:e}));o.Contents&&(t=t.concat(o.Contents)),o.CommonPrefixes&&(r=r.concat(o.CommonPrefixes)),e=o.NextContinuationToken,i=!!e}let o=[];return t.forEach((e=>{if(!e.Key.endsWith("/")){const t=e.Key.substring(a.length);t.includes("/")||o.push({name:t,size:e.Size||0,type:"file",modified:e.LastModified?e.LastModified.toISOString():""})}})),r.forEach((e=>{const t=e.Prefix.substring(a.length).replace(/\/$/,"");t&&o.push({name:t,size:0,type:"folder",modified:""})})),o}catch(e){return console.error(e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:n,accessKeyId:i,secretAccessKey:o,dir:s}=this.config;s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder;const a=new tm({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o},forcePathStyle:this.shouldUsePathStyle(t)});let c=s+"/"+e;for(;c.startsWith("/");)c=c.substring(1);try{return yield a.send(new om({Bucket:n,Key:c})),!0}catch(e){return console.error(e),!1}}))}}class dm extends um{constructor(e){super(e)}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){let{endpoint:r,region:n,bucketName:i,accessKeyId:o,secretAccessKey:s,dir:a}=this.config;const c=new tm({endpoint:r,region:n,credentials:{accessKeyId:o,secretAccessKey:s},forcePathStyle:this.shouldUsePathStyle(r)});a=a&&"KoodoReader"===this.baseFolder?a:this.baseFolder;let u=a+"/"+t;for(;u.startsWith("/");)u=u.substring(1);try{let t=yield c.send(new cm({Bucket:i,Key:u,Body:e}));return 200===t.$metadata.httpStatusCode||(console.error("Error uploading file:",t),!1)}catch(e){return console.error("Error: ",e),!1}}))))))}))}downloadFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);let{endpoint:t,region:r,bucketName:n,accessKeyId:i,secretAccessKey:o,dir:s}=this.config;s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder;const a=new tm({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o},forcePathStyle:this.shouldUsePathStyle(t)});let c=s+"/"+e;for(;c.startsWith("/");)c=c.substring(1);try{const e=yield a.send(new sm({Bucket:n,Key:c}));if(!e.Body)return console.error("No response body"),!1;const t=yield e.Body.transformToByteArray();return this.taskQueue.setDownloadedSize(t.length),t.buffer}catch(t){return console.error("Error downloading file:",t,e),!1}}))))))}))}}class lm{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=1){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=this.baseFolder;t&&""!==t.trim()&&(n=n+"/"+t),n=n.replace(/\/+/g,"/"),n.startsWith("/")&&(n=n.substring(1));let i=[],o=0;const s=1e3;for(;;){const t=yield e.get("https://pan.baidu.com/rest/2.0/xpan/file",{params:{method:"list",access_token:r,dir:"/"+n,start:o,limit:s,order:"name",desc:0,web:1,folder:0},headers:{"User-Agent":"pan.baidu.com"}});if(t.status>=300||0!==t.data.errno){console.error("百度网盘API错误:",t.data);break}const a=t.data.list||[];if(0===a.length)break;if(i=i.concat(a),a.length({name:e.server_filename,size:e.size||0,type:e.isdir?"folder":"file",modified:new Date(1e3*e.server_mtime).toISOString(),path:e.path})))}catch(e){return console.error("获取百度网盘文件列表时发生错误:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=this.baseFolder+"/"+t;n=n.replace(/\/+/g,"/"),n.startsWith("/")&&(n=n.substring(1));const i=new URLSearchParams({async:"0",filelist:JSON.stringify(["/"+n])}),o=yield e.post(`https://pan.baidu.com/rest/2.0/xpan/file?method=filemanager&access_token=${r}&opera=delete`,i.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"pan.baidu.com"}});if(0!==o.data.errno)return console.error("百度网盘删除文件API错误:",o.data),-9===o.data.errno?console.error("文件不存在"):111===o.data.errno?console.error("有其他异步任务正在执行"):-7===o.data.errno&&console.error("文件名非法"),!1;const s=o.data.info||[];for(const e of s)if(0!==e.errno)return console.error(`文件删除失败: ${e.path}, 错误码: ${e.errno}`),!1;return!0}catch(e){return console.error("删除文件时发生错误:",e),!1}}))}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"dubox",refresh_token:e});if(!t.data.access_token)return"";this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("dubox_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dubox",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=${y.duboxClientId}&redirect_uri=${e}&scope=basic,netdisk&device_id=119827642&display=page&qrcode=1`}}class hm extends lm{constructor(e,t){super(e,t)}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return!0}))}downloadFile(e){return a(this,void 0,void 0,(function*(){return!1}))}}class fm{constructor(e,t){this.baseUrl="https://proapi.115.com",this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new p(1),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}getUploadCredentials(t){return a(this,void 0,void 0,(function*(){try{const r=yield e.get(`${this.baseUrl}/open/upload/get_token`,{headers:{Authorization:`Bearer ${t}`}});return r.status>=300||!r.data.state?(console.error("Error getting upload credentials:",r.data),null):r.data.data}catch(e){return console.error("Error occurred during get upload credentials:",e),null}}))}generateOSSPolicy(e,t,r=new Date(Date.now()+36e5)){const n={expiration:r.toISOString(),conditions:[{bucket:e},{key:t},["starts-with","$success_action_status","2"],["content-length-range",0,1073741824]]};return JSON.stringify(n)}refreshToken(){return a(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>a(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token;if(!e)throw new Error("No refresh token available");let t=yield this.thirdpartyRequest.refreshThirdToken({provider:"yiyiwu",refresh_token:e});if(!t.data.access_token)return"";if(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+18e5,!t.data.refresh_token)throw new Error("No refresh token returned");this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("yiyiwu_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return a(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"yiyiwu",redirect_uri:y.callbackUrl,code:e})).data}))}getAuthUrl(e){return`https://passportapi.115.com/open/authorize?client_id=${y.yiyiwuClientId}&response_type=code&redirect_uri=${e}`}}class pm extends fm{constructor(e,t){super(e,t)}uploadFile(e,t){return a(this,void 0,void 0,(function*(){return!0}))}downloadFile(e){return a(this,void 0,void 0,(function*(){return!1}))}}class gm{constructor(e){let{username:t,password:r,url:o,dir:s}=e;void 0===e.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=e.baseFolder,s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder,this.client=n(o,{authType:i.Password,username:t,password:r}),this.username=t,this.password=r,this.url=o,this.dir=s,this.taskQueue=new p(5)}retryOperation(e,t=1){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{let n=this.dir+"/"+r;const i=this.client.exists(n.substring(0,n.lastIndexOf("/"))),o=new Promise(((e,t)=>{setTimeout((()=>t(new Error("WebDAV exists check timeout"))),5e3)}));!1===(yield Promise.race([i,o]))&&(yield this.ensureDirectoryExists(n.substring(0,n.lastIndexOf("/"))));let s=r.split("/").pop()||"",a=new File([t],s,{lastModified:(new Date).getTime(),type:t.type}),c=this.client.getFileUploadLink(this.dir+"/"+r);const u=new URL(c);u.search="",c=u.toString();const d=btoa(this.username+":"+this.password),l=yield e.put(c,a,{headers:{Authorization:"Basic "+d},maxContentLength:1/0,maxBodyLength:1/0});return!(l.status>=300)||(console.error("Error occurred during file upload:",l),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){if(this.taskQueue.setDownloadedSize(0),-1===t.indexOf("."))return new ArrayBuffer(0);try{const r=btoa(this.username+":"+this.password);let n=this.url.endsWith("/")?this.url:this.url+"/",i=this.dir.startsWith("/")?this.dir.substring(1):this.dir;const o=yield e({url:n+i+"/"+t,method:"get",headers:{Authorization:"Basic "+r},responseType:"arraybuffer",maxContentLength:1/0,maxBodyLength:1/0,onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return o.status>=300?(console.error("Error occurred during file download:",o),!1):o.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return a(this,void 0,void 0,(function*(){try{return(yield this.client.getDirectoryContents(this.dir+"/"+e)).filter((t=>"."!==t.filename&&".."!==t.filename&&t.filename!==e)).map((e=>({name:e.basename,size:e.size||0,type:"directory"===e.type?"folder":"file",modified:e.lastmod})))}catch(t){return t.response&&404===t.response.status&&(yield this.client.createDirectory(this.dir+"/"+e)),console.error("Error listing files:",t),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){try{return yield this.client.deleteFile(this.dir+"/"+e),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}ensureDirectoryExists(e){return a(this,void 0,void 0,(function*(){try{const t=e.replace(/^\/+|\/+$/g,"").split("/").filter((e=>e.length>0));let r="";for(const e of t)r=r?`${r}/${e}`:e,(yield this.client.exists(`/${r}`))||(yield this.client.createDirectory(`/${r}`));return!0}catch(e){return console.error("Error ensuring directory exists:",e),!1}}))}}class mm{constructor(e){this.username=e.username,this.password=e.password,this.url=e.url,this.refreshTokenPromise=null,this.taskQueue=new p(3)}retryOperation(e,t=1){return a(this,void 0,void 0,(function*(){let r=0;for(;;){const n=yield e();if(n)return n;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),n;r++;const i=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${i}ms`),yield new Promise((e=>setTimeout(e,i)))}}))}listFiles(e){return a(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return a(this,void 0,void 0,(function*(){try{return(yield e.get(`${this.url}/list`,{params:{dir:t},auth:{username:this.username,password:this.password}})).data.files.map((e=>({name:e.name,size:e.size||0,type:"file"===e.type?"file":"folder",modified:e.modifiedTime})))||[]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return a(this,void 0,void 0,(function*(){try{return(yield e.delete(`${this.url}/delete`,{params:{dir:t.split("/").slice(0,-1).join("/")||"",filename:t.split("/").pop()},auth:{username:this.username,password:this.password}})).data.success}catch(e){return console.error("Error deleting file:",e),!1}}))}}class ym extends mm{constructor(e){super(e)}getAuthHeader(){return`Basic ${btoa(`${this.username}:${this.password}`)}`}uploadFile(t,r){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){try{const n=r.split("/").pop()||"",i=r.substring(0,r.lastIndexOf("/"))||"";let o=new File([t],n,{lastModified:(new Date).getTime(),type:t.type});const s=new FormData;s.append("file",o);const a=yield e.post(`${this.url}/upload?dir=${encodeURIComponent(i)}`,s,{headers:{Authorization:this.getAuthHeader(),"Content-Type":"multipart/form-data"},maxContentLength:1/0,maxBodyLength:1/0});return!(a.status>=300)||(console.error("Error occurred during file upload:",a),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return a(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>a(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const r=t.split("/").pop()||"",n=t.substring(0,t.lastIndexOf("/"))||"",i=yield e({url:`${this.url}/download`,method:"GET",params:{dir:n,filename:r},headers:{Authorization:this.getAuthHeader()},maxContentLength:1/0,maxBodyLength:1/0,responseType:"arraybuffer",onDownloadProgress:e=>{this.taskQueue.setDownloadedSize(e.loaded)}});return i.status>=300?(console.error("Error occurred during file download:",i),!1):i.data}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}const vm=["book","config","cover","font"];class bm{constructor(e,t,r){this.type=e,this.remote="dropbox"===e?new A(t,r):"microsoft"===e?new M(t,r):"google"===e?new _(t,r):"microsoft_exp"===e?new M(Object.assign(Object.assign({},t),{isExp:!0}),r):"google_exp"===e?new _(Object.assign(Object.assign({},t),{isExp:!0}),r):"s3compatible"===e?new dm(t):"webdav"===e?new gm(t):"docker"===e?new ym(t):"boxnet"===e?new E(t,r):"mega"===e?new P(t):"adrive"===e?new k(t,r):"pcloud"===e?new $(t,r):"dubox"===e?new hm(t,r):"yandex"===e?new C(t,r):"yiyiwu"===e?new pm(t,r):new N}downloadFile(e,t){return a(this,void 0,void 0,(function*(){if("cover"!==t){if(!(yield this.listFiles(t)).find((t=>e.indexOf(t)>-1)))return!1}return yield this.remote.downloadFile(t+"/"+e)}))}uploadFile(e,t,r){return a(this,void 0,void 0,(function*(){return yield this.remote.uploadFile(r,t+"/"+e)}))}deleteFile(e,t){return a(this,void 0,void 0,(function*(){return!(yield this.listFiles(t)).find((t=>e.indexOf(t)>-1))||(yield this.remote.deleteFile(t+"/"+e))}))}listFiles(e){return a(this,void 0,void 0,(function*(){return yield this.remote.listFiles(e)}))}listFileInfos(e){return a(this,void 0,void 0,(function*(){return yield this.remote.listFileInfos(e)}))}isExist(e,t){return a(this,void 0,void 0,(function*(){return(yield this.listFiles(t)).find((t=>-1!==t.indexOf(e)))}))}downloadAllFiles(){return a(this,void 0,void 0,(function*(){for(let e of vm){let t=yield this.listFiles(e);for(let r of t)yield this.downloadFile(r,e)}}))}authToken(e){return a(this,void 0,void 0,(function*(){return yield this.remote.authToken(e)}))}getAuthUrl(e){return this.remote.getAuthUrl?this.remote.getAuthUrl(e):""}getStats(){return this.remote.taskQueue.getStats()}resetCounters(){this.remote.taskQueue.resetCounters()}getDownloadedSize(){return this.remote.taskQueue.getDownloadedSize()}}const wm={notes:"SELECT * FROM notes WHERE key = ?",bookmarks:"SELECT * FROM bookmarks WHERE key = ?",books:"SELECT * FROM books WHERE key = ?",plugins:"SELECT * FROM plugins WHERE key = ?",words:"SELECT * FROM words WHERE key = ?"},km={notes:"SELECT * FROM notes WHERE bookKey = ?",bookmarks:"SELECT * FROM bookmarks WHERE bookKey = ?",words:"SELECT * FROM words WHERE bookKey = ?",books:"SELECT * FROM books WHERE key = ?"},Sm={notes:"DELETE FROM notes WHERE bookKey = ?",bookmarks:"DELETE FROM bookmarks WHERE bookKey = ?",words:"DELETE FROM words WHERE bookKey = ?"};function Em(e){for(const t in e)e.hasOwnProperty(t)&&(e[`temp-${t}`]=e[t]);return e}const xm={notes:e=>{let t=Object.assign({},e);return t.date=JSON.parse(e.date),t.tag=JSON.parse(e.tag),t},bookmarks:e=>e,books:e=>e,plugins:e=>{let t=Object.assign({},e);return e.autoValue||delete t.autoValue,e.langList?t.langList=JSON.parse(e.langList):delete t.langList,e.voiceList?t.voiceList=JSON.parse(e.voiceList):delete t.voiceList,t.config=JSON.parse(e.config),t},words:e=>{let t=Object.assign({},e);return t.date=JSON.parse(e.date),t}};var Am,Tm={sqlStatement:{createTableStatement:Em({notes:'\n CREATE TABLE IF NOT EXISTS "notes" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "date" object,\n "chapter" text,\n "chapterIndex" integer,\n "text" text,\n "cfi" text,\n "range" text,\n "notes" text,\n "percentage" text,\n "color" integer,\n "tag" array\n )\n ',bookmarks:'\n CREATE TABLE IF NOT EXISTS "bookmarks" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "cfi" text,\n "label" text,\n "percentage" text,\n "chapter" text\n );\n ',books:'\n CREATE TABLE IF NOT EXISTS "books" (\n "key" text PRIMARY KEY,\n "name" text,\n "author" text,\n "description" text,\n "md5" text,\n "cover" text,\n "format" text,\n "publisher" text,\n "size" integer,\n "page" integer,\n "path" text,\n "charset" text\n );\n ',plugins:'\n CREATE TABLE IF NOT EXISTS "plugins" (\n "key" text PRIMARY KEY,\n "type" text,\n "displayName" text,\n "icon" text,\n "version" text,\n "config" object,\n "autoValue" string,\n "langList" text,\n "voiceList" text,\n "scriptSHA256" text,\n "script" text\n );\n ',words:'\n CREATE TABLE IF NOT EXISTS "words" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "date" object,\n "word" text,\n "chapter" text\n );\n '}),getAllStatement:Em({notes:"SELECT * FROM notes",bookmarks:"SELECT * FROM bookmarks",books:"SELECT * FROM books",plugins:"SELECT * FROM plugins",words:"SELECT * FROM words"}),getPagedStatement:Em({notes:"SELECT * FROM notes LIMIT ? OFFSET ?",bookmarks:"SELECT * FROM bookmarks LIMIT ? OFFSET ?",books:"SELECT * FROM books LIMIT ? OFFSET ?",plugins:"SELECT * FROM plugins LIMIT ? OFFSET ?",words:"SELECT * FROM words LIMIT ? OFFSET ?"}),getCountStatement:Em({notes:"SELECT COUNT(*) as count FROM notes",bookmarks:"SELECT COUNT(*) as count FROM bookmarks",books:"SELECT COUNT(*) as count FROM books",plugins:"SELECT COUNT(*) as count FROM plugins",words:"SELECT COUNT(*) as count FROM words"}),saveStatement:Em({notes:"INSERT OR REPLACE INTO notes (key, bookKey, chapter, chapterIndex, text, cfi, range, notes, date, percentage, color, tag) VALUES (@key, @bookKey, @chapter, @chapterIndex, @text, @cfi, @range, @notes, @date, @percentage, @color, @tag)",bookmarks:"INSERT OR REPLACE INTO bookmarks (key, bookKey, cfi, label, percentage, chapter) VALUES (@key, @bookKey, @cfi, @label, @percentage, @chapter)",books:"INSERT OR REPLACE INTO books (key, name, author, description, md5, cover, format, publisher, size, page, path, charset) VALUES (@key, @name, @author, @description, @md5, @cover, @format, @publisher, @size, @page, @path, @charset)",plugins:"INSERT OR REPLACE INTO plugins (key, type, displayName, icon, version, config, autoValue, langList, voiceList, scriptSHA256, script) VALUES (@key, @type, @displayName, @icon, @version, @config, @autoValue, @langList, @voiceList, @scriptSHA256, @script)",words:"INSERT OR REPLACE INTO words (key, bookKey, date, word, chapter) VALUES (@key, @bookKey, @date, @word, @chapter)"}),deleteAllStatement:Em({notes:"DELETE FROM notes",bookmarks:"DELETE FROM bookmarks",books:"DELETE FROM books",plugins:"DELETE FROM plugins",words:"DELETE FROM words"}),updateStatement:Em({notes:"UPDATE notes SET bookKey = @bookKey, chapter = @chapter, chapterIndex = @chapterIndex, text = @text, cfi = @cfi, range = @range, notes = @notes, date = @date, percentage = @percentage, color = @color, tag = @tag WHERE key = @key",bookmarks:"UPDATE bookmarks SET bookKey = @bookKey, cfi = @cfi, label = @label, percentage = @percentage, chapter = @chapter WHERE key = @key",books:"UPDATE books SET name = @name, author = @author, description = @description, md5 = @md5, cover = @cover, format = @format, publisher = @publisher, size = @size, page = @page, path = @path, charset = @charset WHERE key = @key",plugins:"UPDATE plugins SET type = @type, displayName = @displayName, icon = @icon, version = @version, config = @config, autoValue = @autoValue, langList = @langList, voiceList = @voiceList, scriptSHA256 = @scriptSHA256, script = @script WHERE key = @key",words:"UPDATE words SET bookKey = @bookKey, date = @date, word = @word, chapter = @chapter WHERE key = @key"}),deleteStatement:Em({notes:"DELETE FROM notes WHERE key = ?",bookmarks:"DELETE FROM bookmarks WHERE key = ?",books:"DELETE FROM books WHERE key = ?",plugins:"DELETE FROM plugins WHERE key = ?",words:"DELETE FROM words WHERE key = ?"}),dropStatement:Em({notes:"DROP TABLE IF EXISTS notes",bookmarks:"DROP TABLE IF EXISTS bookmarks",books:"DROP TABLE IF EXISTS books",plugins:"DROP TABLE IF EXISTS plugins",words:"DROP TABLE IF EXISTS words"}),getStatement:Em(wm),getByBookKeyStatement:Em(km),getByBookKeysStatement:Em({notes:e=>`SELECT * FROM notes WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,bookmarks:e=>`SELECT * FROM bookmarks WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,words:e=>`SELECT * FROM words WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,books:e=>`SELECT * FROM books WHERE key IN (${e.map((()=>"?")).join(",")})`}),deleteByBookKeyStatement:Em(Sm)},jsonToSqlite:Em({notes:e=>{let t=Object.assign({},e);return t.date=JSON.stringify(e.date),t.tag=JSON.stringify(e.tag),t},bookmarks:e=>e,books:e=>{let t=Object.assign({},e);return t.page=e.page||0,t},plugins:e=>{let t=Object.assign({},e);return e.autoValue||(t.autoValue=null),e.langList?t.langList=JSON.stringify(e.langList):t.langList=null,e.voiceList?t.voiceList=JSON.stringify(e.voiceList):t.voiceList=null,t.config=JSON.stringify(e.config),t},words:e=>{let t=Object.assign({},e);return t.date=JSON.stringify(e.date),t}}),sqliteToJson:Em(xm)};class Cm{constructor(e,t,r,n,i,o,s,a,c,u,d,l){this.key=e,this.name=t,this.author=r,this.description=n,this.md5=i,this.cover=o,this.format=s,this.publisher=a,this.size=c,this.page=u,this.path=d,this.charset=l}}class Rm{static generateBook(e,t,r,n,i,o,s){return new Promise(((c,u)=>a(this,void 0,void 0,(function*(){try{let a,u,d,l,h,f,p,g,m="";switch([u,d,h,l,f,p]=[e,"","","","",0],t){case"pdf":case"epub":case"mobi":case"azw":case"azw3":case"fb2":g=yield s.getMetadata(),[u,d,h,l,m]=[g.name||e,g.author||"",g.description||"",g.publisher||"",g.cover||""];break;case"cbr":case"cbt":case"cbz":case"cb7":g=yield s.getMetadata(),m=g.cover;break;case"txt":g=yield s.getMetadata(o),f=g.charset}let y=t.toUpperCase();a=(new Date).getTime()+"",c(new Cm(a,u,d,h,r,m,y,l,n,p,i,f))}catch(e){console.error(e),u(e)}}))))}}Am=Rm,Rm.getRendition=(e,t,r)=>{let n,i=t.format.toUpperCase();var o,s;return"CACHE"===i?n=new r.CacheRender(e,t):"MOBI"===i||"AZW3"===i||"AZW"===i?n=new r.MobiRender(e,t):"EPUB"===i?n=new r.EpubRender(e,t):"TXT"===i?n=new r.TxtRender(e,t):"MD"===i?n=new r.MdRender(e,t):"PDF"===i?n="yes"===t.isConvertPDF?new r.PdfTextRender(e,t):new r.PdfRender(e,t):"FB2"===i?n=new r.Fb2Render(e,t):"DOCX"===i?n=new r.DocxRender(e,t):"HTML"===i||"XHTML"===i||"MHTML"===i||"HTM"===i||"XML"===i?n=new r.HtmlRender(e,t):"CBR"!==i&&"CBT"!==i&&"CBZ"!==i&&"CB7"!==i||(n=new r.ComicRender((o=e,s=new ArrayBuffer(o.byteLength),new Uint8Array(s).set(new Uint8Array(o)),s),t)),n},Rm.initMobileBook=(e,t)=>a(void 0,void 0,void 0,(function*(){try{window.ReactNativeWebView.postMessage(JSON.stringify({event:"user-agent",userAgent:navigator.userAgent}));const r=yield fetch(e);if(!r.ok)throw new Error(`Failed to download book: ${r.status} ${r.statusText}`);const n=yield r.arrayBuffer();window.ReactNativeWebView.postMessage(JSON.stringify({event:"finish-download"})),window.file_content=n;let i=Am.getRendition(n,Object.assign(Object.assign({},t),{isMobile:"yes"}),window.Kookit);window.rendition=i;let o=document.getElementById("page-area");t.format&&"TXT"===t.format.toUpperCase()?yield window.rendition.renderTo(o,t.bookLocation):yield window.rendition.renderTo(o),window.rendition.on("rendered",(()=>a(void 0,void 0,void 0,(function*(){let e=Object.assign({},window.rendition.getPosition()),r=Object.assign({},yield window.rendition.getProgress());"PDF"===t.format&&"android"===t.platform&&(e.chapterDocIndex=window.chapterDocIndex),window.ReactNativeWebView.postMessage(JSON.stringify({event:"content-loaded",bookLocation:e,progress:r})),window.rendition.tranformText()}))));const s=function(e,t){let r=0,n=null,i=null;return function(...o){const s=Date.now();s-r>=t?(r=s,e.apply(this,o)):(clearTimeout(n),i=o,n=setTimeout((()=>{r=Date.now(),e.apply(this,null!=i?i:[])}),t-(s-r)))}}((()=>a(void 0,void 0,void 0,(function*(){let e=Object.assign({},window.rendition.getPosition()),t=Object.assign({},yield window.rendition.getProgress());window.ReactNativeWebView.postMessage(JSON.stringify({event:"page-changed",bookLocation:e,progress:t}))}))),6e3);let c=null;window.rendition.on("page-changed",(()=>{c&&clearTimeout(c),c=setTimeout((()=>{s(),c=null}),window.isTouchNavigation?2e3:0)})),window.ReactNativeWebView.postMessage(JSON.stringify({event:"book-inited",chapterList:window.rendition.getChapter()}))}catch(e){window.ReactNativeWebView.postMessage(JSON.stringify({event:"error",message:"Parse book failed"}))}})),Rm.addMobileBook=(e,t,r,n,i,o,s="")=>a(void 0,void 0,void 0,(function*(){var a;try{if(window.ReactNativeWebView.postMessage(JSON.stringify({event:"user-agent",userAgent:navigator.userAgent})),"PDF"===r.toUpperCase()&&i>314572800){t=t.replace(/\.[^/.]+$/,"");let e=r.toUpperCase(),s=(new Date).getTime()+"",a=new Cm(s,t,"","",n,"",e,"",i,0,o,"");return void window.ReactNativeWebView.postMessage(JSON.stringify({event:"metadata",bookInfo:a}))}const c=yield fetch(e);if(!c.ok)throw new Error(`Failed to download book: ${c.status} ${c.statusText}`);const u=yield c.arrayBuffer();null===(a=window.ReactNativeWebView)||void 0===a||a.postMessage(JSON.stringify({event:"finish-download"})),window.file_content=u;let d=Am.getRendition(u,{format:r.toUpperCase(),readerMode:"",charset:"",animation:"",convertChinese:"no",parserRegex:s||"",isDarkMode:"no",isMobile:"yes",password:"",isConvertPDF:"no"},window.Kookit);window.rendition=d,t=t.replace(/\.[^/.]+$/,"");let l=yield Rm.generateBook(t,r,n,i,o,u,d);if(!l||!l.key)return;window.ReactNativeWebView.postMessage(JSON.stringify({event:"metadata",bookInfo:l}))}catch(e){window.ReactNativeWebView.postMessage(JSON.stringify({event:"error",message:"Parse book failed"}))}})),Rm.precacheMobileBook=(e,t)=>a(void 0,void 0,void 0,(function*(){let r=yield window.rendition.preCache(window.file_content);if(""===r)window.ReactNativeWebView.postMessage(JSON.stringify({event:"cache",cacheBase64:"",key:t}));else if("err"!==r){try{const n=`${e}/dav/${"cache-"+t+".zip"}`,i=yield fetch(n,{method:"PUT",headers:{"Content-Type":"application/octet-stream",Overwrite:"T"},body:r});if(!i.ok)throw new Error(`上传失败: ${i.status}`);console.info("文件上传成功")}catch(e){console.error("操作失败:"+e)}window.ReactNativeWebView.postMessage(JSON.stringify({event:"cache",key:t}))}else window.ReactNativeWebView.postMessage(JSON.stringify({event:"error",message:"Parse book failed"}));window.file_content=null,window.rendition=null}));const _m=m.cloudUrl,Om=m.cloudCNUrl;class Pm{constructor(e,t,r){this.TokenService=e,this.ConfigService=t,this.baseUrl="china"===r?Om:_m,this.refreshToken="",this.accessToken="",this.streamPromise=null,this.expiresAt=0}refreshUserToken(){return a(this,void 0,void 0,(function*(){if(this.refreshToken=yield this.TokenService.getToken("refresh_token"),!this.refreshToken)return{code:401,message:"refresh token not found"};let t=(yield e.post(this.baseUrl+"/api/v1/public/user/refresh_token",{refresh_token:this.refreshToken})).data;return 200===t.code&&(yield this.TokenService.setToken("access_token",t.data.access_token),yield this.TokenService.setToken("refresh_token",t.data.refresh_token),yield this.TokenService.setToken("expires_at",(1e3*t.data.expires_at).toString()),this.accessToken=t.data.access_token,this.refreshToken=t.data.refresh_token,this.expiresAt=1e3*t.data.expires_at),t}))}requestWithRetry(e){return a(this,void 0,void 0,(function*(){return Pm.requestQueue||(Pm.requestQueue=[]),new Promise(((t,r)=>{Pm.requestQueue.push({config:e,resolve:t,reject:r}),Pm.processingQueue||this.processQueue()}))}))}isTokenValid(){return a(this,void 0,void 0,(function*(){if(this.accessToken||(this.accessToken=(yield this.TokenService.getToken("access_token"))||""),!this.expiresAt){const e=yield this.TokenService.getToken("expires_at");this.expiresAt=e?parseInt(e):(new Date).getTime()+31536e9}return""!==this.accessToken&&this.expiresAt>(new Date).getTime()+6e4}))}processQueue(){return a(this,void 0,void 0,(function*(){if(!Pm.processingQueue){Pm.processingQueue=!0;try{for(;Pm.requestQueue.length>0;){const e=Pm.requestQueue.shift();try{let t=yield this.executeRequest(e.config);e.resolve(t)}catch(t){e.reject(t)}}}finally{Pm.processingQueue=!1}}}))}executeRequest(t){return a(this,void 0,void 0,(function*(){try{try{this.accessToken=(yield this.TokenService.getToken("access_token"))||""}catch(e){console.error("Error get Token:",e)}let r="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);if(t.baseURL=this.baseUrl,t.headers)t.headers.Authorization="Bearer "+this.accessToken,t.headers["X-Request-ID"]=r;else{let e=this.ConfigService.getItem("appVersion"),n=this.ConfigService.getItem("appPlatform");t.headers={Authorization:"Bearer "+this.accessToken,"X-Request-ID":r,"X-App-Version":e||"1.0.0","X-App-Platform":n||"web"}}let n=(yield e(t)).data;if(402===n.code){let r=yield this.refreshUserToken();if(200===r.code){return t.headers=t.headers||{},t.headers.Authorization="Bearer "+this.accessToken,(yield e(t)).data}return r}return 200!==n.code&&this.ConfigService.setItem("errorLog",this.ConfigService.getItem("errorLog")+"\n"+JSON.stringify({request:t.data,url:t.url,result:n,requestID:r})),n}catch(e){return console.error("Request execution error:",e),{code:503,message:"network error",data:null}}}))}requestWithStream(e,t,r){return a(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>a(this,void 0,void 0,(function*(){try{(yield this.isTokenValid())||(yield this.refreshUserToken());let n=this.accessToken||"",i="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((o,s)=>{let c=this.ConfigService.getItem("appVersion"),u=this.ConfigService.getItem("appPlatform");const d=new r(this.baseUrl+e.url,{headers:{"Content-Type":"application/json",Authorization:"Bearer "+n,"X-Request-ID":i,"X-App-Version":c||"1.0.0","X-App-Platform":u||"web"},method:e.method,body:JSON.stringify(e.data),pollingInterval:0});d.addEventListener("open",(()=>{console.info("Connection to OpenAI established.")})),d.addEventListener("message",(e=>a(this,void 0,void 0,(function*(){if(!e.data)return;const r=JSON.parse(e.data);r.done?(d.close(),o(r)):t(r.data)})))),d.addEventListener("error",(e=>{if(console.info("Error:",e),!e.data)return;const t=JSON.parse(e.data);o(t),d.close()}))}))}finally{this.streamPromise=null}})))()),this.streamPromise}))}requestWithFetch(e,t){return a(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>a(this,void 0,void 0,(function*(){try{(yield this.isTokenValid())||(yield this.refreshUserToken());let r=this.accessToken||"",n="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((i,s)=>a(this,void 0,void 0,(function*(){let s=this.ConfigService.getItem("appVersion"),c=this.ConfigService.getItem("appPlatform");var u=new o(this.baseUrl+e.url,{headers:{"Content-Type":"text/plain",Authorization:"Bearer "+r,"X-Request-ID":n,"X-App-Version":s||"1.0.0","X-App-Platform":c||"web"},payload:JSON.stringify(e.data),method:"POST"});u.addEventListener("message",(e=>a(this,void 0,void 0,(function*(){if(!e.data)return;const r=JSON.parse(e.data);r.done?(u.close(),i(r)):t(r.data)})))),u.addEventListener("open",(e=>{console.info(e,"Connection to OpenAI established.")})),u.addEventListener("error",(e=>{if(console.error(e,"Error occurred while connecting to OpenAI"),!e.data)return;const t=JSON.parse(e.data);i(t),u.close()}))}))))}finally{this.streamPromise=null}})))()),this.streamPromise}))}}Pm.processingQueue=!1,Pm.requestQueue=[];class Im extends Pm{constructor(e,t,r){super(e,t,r)}getTransStream(e,t,r){return a(this,void 0,void 0,(function*(){const n={method:"post",url:"/api/v1/pro/reader/get_llm_trans_stream",data:e};return yield this.requestWithStream(n,t,r)}))}getTransFetch(e,t){return a(this,void 0,void 0,(function*(){const r={method:"post",url:"/api/v1/pro/reader/get_llm_trans_stream",data:e};return yield this.requestWithFetch(r,t)}))}getDictionary(e){return a(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/reader/get_llm_dict",data:e};return yield this.requestWithRetry(t)}))}getSummaryStream(e,t,r){return a(this,void 0,void 0,(function*(){const n={method:"post",url:"/api/v1/pro/reader/get_llm_sum_stream",data:e};return yield this.requestWithStream(n,t,r)}))}getAnswerStream(e,t,r){return a(this,void 0,void 0,(function*(){const n={method:"post",url:"/api/v1/pro/reader/get_llm_answer_stream",data:e};return yield this.requestWithStream(n,t,r)}))}getAnswerFetch(e,t){return a(this,void 0,void 0,(function*(){const r={method:"post",url:"/api/v1/pro/reader/get_llm_answer_stream",data:e};return yield this.requestWithFetch(r,t)}))}getSummaryFetch(e,t){return a(this,void 0,void 0,(function*(){const r={method:"post",url:"/api/v1/pro/reader/get_llm_sum_stream",data:e};return yield this.requestWithFetch(r,t)}))}getGoogleFont(e){return a(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/reader/get_google_font",data:e};return yield this.requestWithRetry(t)}))}sendToKindle(e){return a(this,void 0,void 0,(function*(){let t=new FormData;t.append("file",e.file),t.append("email",e.email),t.append("file_name",e.fileName);const r={method:"post",url:"/api/v1/pro/reader/send_to_kindle",headers:{"Content-Type":"multipart/form-data"},data:t};return yield this.requestWithRetry(r)}))}detectLanguage(e){return a(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/reader/detect_language",data:e};return yield this.requestWithRetry(t)}))}}class Mm extends Pm{constructor(e,t,r){super(e,t,r),this.serverRegion=r}encryptToken(e){return a(this,void 0,void 0,(function*(){let t=e.token,r=f.encode(t),{extracted:n,remaining:i}=function(e){let t="",r="",n=[],i=1;for(;i<=e.length;)n.push(i-1),i*=2;for(let i=0;i-1){let r=t.split("#");e.encrypted_token=r[1]}const r={method:"post",url:"/api/v1/pro/thirdparty/decrypt_token",data:e};let n=yield this.requestWithRetry(r);if(t.indexOf("#")>-1&&n.data&&n.data.token){let e=t.split("#"),r=function(e,t){let r="",n=[],i=1,o=e.length+t.length;for(;i<=o;)n.push(i-1),i*=2;let s=0,a=0;for(let i=0;i{let n="";if("github"===e?n=`https://github.com/login/oauth/authorize?client_id=${y.githubClientId}&redirect_uri=${r}&scope=${v.github.scopes.join(" ")}&response_type=code`:"google"===e?n=`https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${r}&prompt=consent&response_type=code&client_id=${y.googleClientId}&scope=${v.google.scopes.join(" ")}&access_type=offline`:"facebook"===e?n=`https://www.facebook.com/v12.0/dialog/oauth?client_id=${y.facebookClientId}&redirect_uri=${r}&scope=&response_type=code`:"microsoft"===e&&(n=`https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=${y.microsoftClientId}&scope=${v.microsoft.scopes.join(" ")}&response_type=code&redirect_uri=${r}`),"manual"===t)return n;let i=JSON.stringify({deeplink:"desktop"===t?"koodo-reader://callback":"browser"===t?`${y.callbackUrl}#/login`:"",service:e});return`${n}&state=${"state|"+encodeURIComponent(i)}`}};class $m{static CompareDatabase(e,t,r){return a(this,void 0,void 0,(function*(){let n=Object.keys(e).filter((e=>e.startsWith("database.sqlite.books"))),i=Object.keys(e).filter((e=>e.startsWith("database.sqlite.notes"))),o=Object.keys(e).filter((e=>e.startsWith("database.sqlite.bookmarks"))),s=Object.keys(e).filter((e=>e.startsWith("database.sqlite.plugins"))),a=Object.keys(e).filter((e=>e.startsWith("database.sqlite.words"))),c=Object.keys(t).filter((e=>e.startsWith("database.sqlite.books"))),u=Object.keys(t).filter((e=>e.startsWith("database.sqlite.notes"))),d=Object.keys(t).filter((e=>e.startsWith("database.sqlite.bookmarks"))),l=Object.keys(t).filter((e=>e.startsWith("database.sqlite.plugins"))),h=Object.keys(t).filter((e=>e.startsWith("database.sqlite.words"))),f={books:Array.from(new Set(n.concat(c))),notes:Array.from(new Set(i.concat(u))),bookmarks:Array.from(new Set(o.concat(d))),plugins:Array.from(new Set(s.concat(l))),words:Array.from(new Set(a.concat(h)))},p={books:{save:[],update:[],delete:[],conflict:[],upload:[]},notes:{save:[],update:[],delete:[],conflict:[],upload:[]},bookmarks:{save:[],update:[],delete:[],conflict:[],upload:[]},plugins:{save:[],update:[],delete:[],conflict:[],upload:[]},words:{save:[],update:[],delete:[],conflict:[],upload:[]}},g=["books","notes","bookmarks","plugins","words"];for(let n of g)for(let i of f[n]){let o=i.split(".")[3],s=e[i],a=t[i];s?a?("save"===a.operation&&("update"!==s.operation&&"delete"!==s.operation||p[n].upload.push(o)),"delete"===a.operation&&("save"===s.operation&&(p[n].delete.push(o),e[i]=a),"update"===s.operation&&(s.timea.time&&(p[n].conflict.push(o),"cloud"===r?(p[n].delete.push(o),e[i]=a):p[n].upload.push(o))),s.operation),"update"===a.operation&&("save"===s.operation&&(p[n].update.push(o),e[i]=a),"update"===s.operation&&(s.timea.time&&p[n].upload.push(o)),"delete"===s.operation&&(s.timea.time&&p[n].upload.push(o)))):p[n].upload.push(o):(p[n].save.push(o),e[i]=a)}return{compareResult:p,syncRecords:e}}))}static CompareConfig(e,t,r){return a(this,void 0,void 0,(function*(){let n=Object.keys(e).filter((e=>e.startsWith("config.readerConfig"))),i=Object.keys(e).filter((e=>e.startsWith("config.listConfig"))),o=Object.keys(e).filter((e=>e.startsWith("config.objectConfig"))),s=Object.keys(e).filter((e=>e.startsWith("config.mapConfig"))),a=Object.keys(t).filter((e=>e.startsWith("config.readerConfig"))),c=Object.keys(t).filter((e=>e.startsWith("config.listConfig"))),u=Object.keys(t).filter((e=>e.startsWith("config.objectConfig"))),d=Object.keys(t).filter((e=>e.startsWith("config.mapConfig"))),l={readerConfig:Array.from(new Set(n.concat(a))),listConfig:Array.from(new Set(i.concat(c))),objectConfig:Array.from(new Set(o.concat(u))),mapConfig:Array.from(new Set(s.concat(d)))},h={readerConfig:{update:[],upload:[]},listConfig:{update:[],upload:[]},objectConfig:{update:[],delete:[],conflict:[],save:[],upload:[]},mapConfig:{update:[],delete:[],conflict:[],save:[],upload:[]}},f=["readerConfig","listConfig"];for(let r of f)for(let n of l[r]){let i=n,o=e[n],s=t[n];o?s?o.times.time&&h[r].upload.push(i):h[r].upload.push(i):(h[r].update.push(i),e[n]=s)}let p=["objectConfig","mapConfig"];for(let n of p)for(let i of l[n]){let o=i,s=e[i],a=t[i];s?a?("delete"===a.operation&&("update"===s.operation&&(s.timea.time&&(h[n].conflict.push(o),"cloud"===r?(h[n].delete.push(o),e[i]=a):h[n].upload.push(o))),s.operation),"update"===a.operation&&("update"===s.operation&&(s.timea.time&&h[n].upload.push(o)),"delete"===s.operation&&(s.timea.time&&h[n].upload.push(o)))):h[n].upload.push(o):(h[n].update.push(o),e[i]=a)}return{compareResult:h,syncRecords:e}}))}static compareAll(e,t,r,n,i){return a(this,void 0,void 0,(function*(){let o="cloud";if("yes"===r.getReaderConfig("isKeepLocal")){o="local";let e=r.getObjectConfig(yield n.getFingerprint(),"cloudSyncTime",{time:0,conflictMode:"cloud"}),t=yield i.getCloudConfig("config"),s=JSON.parse(t.cloudSyncTime||"{}");delete s[yield n.getFingerprint()],Object.values(s).filter((t=>"local"===t.conflictMode&&t.time>e.time)).length>0&&(o="cloud")}let{compareResult:s,syncRecords:a}=yield this.CompareDatabase(e,t,o),{compareResult:c,syncRecords:u}=yield this.CompareConfig(a,t,o),d=Object.assign(Object.assign({},s),c);return r.setAllSyncRecord(u),"local"===o&&(d.books.conflict.length>0||d.notes.conflict.length>0||d.bookmarks.conflict.length>0||d.plugins.conflict.length>0||d.words.conflict.length>0||d.objectConfig.conflict.length>0||d.mapConfig.conflict.length>0)?r.setObjectConfig(yield n.getFingerprint(),{time:(new Date).getTime(),conflictMode:"local"},"cloudSyncTime"):r.setObjectConfig(yield n.getFingerprint(),{time:(new Date).getTime(),conflictMode:"cloud"},"cloudSyncTime"),d}))}static startSync(e,t,r,n,i,o){return a(this,void 0,void 0,(function*(){let s=yield this.syncConfig(e,t,r,i,n);if(e.books.save.length>0||e.books.upload.length>0){let e=yield this.syncCover(t,o,i),r=yield this.syncBook(t,i);return[...s,...e,...r]}return s}))}static syncConfig(e,t,r,n,i){return a(this,void 0,void 0,(function*(){let o=[];for(let t of u){if(e[t].save.length+e[t].update.length>0){let n=yield i.getCloudDatabase(t);for(let i of e[t].save){let e=n.find((e=>e.key===i));e&&(yield r.saveRecord(e,t))}for(let i of e[t].update){let e=n.find((e=>e.key===i));e&&(yield r.updateRecord(e,t,!1))}}if(e[t].delete.length>0)for(let i of e[t].delete)yield r.deleteRecord(i,t),"books"===t&&(yield n.deleteOfflineBook(i))}if(e.readerConfig.update.length>0||e.listConfig.update.length>0||e.objectConfig.update.length>0||e.mapConfig.update.length>0){let r=yield i.getCloudConfig("config");for(let n of e.readerConfig.update){let e=n.split(".")[3];r.readerConfig&&t.setReaderConfig(e,JSON.parse(r.readerConfig)[e],!1)}for(let n of e.listConfig.update){let e=n.split(".")[3];r[e]&&t.setAllListConfig(JSON.parse(r[e]),e,!1)}for(let n of e.objectConfig.update){let e=n.split(".")[3],i=n.split(".")[2];r[i]&&JSON.parse(r[i])&&JSON.parse(r[i])[e]&&t.setObjectConfig(e,JSON.parse(r[i])[e],i,!1)}for(let n of e.mapConfig.update){let e=n.split(".")[3],i=n.split(".")[2];if(r[i]&&JSON.parse(r[i])&&JSON.parse(r[i])[e]){let n=JSON.parse(r[i])[e];t.setOneMapConfig(e,n,i,!1)}}}if(e.objectConfig.delete.length>0||e.mapConfig.delete.length>0){for(let r of e.objectConfig.delete){let e=r.split(".")[3],n=r.split(".")[2];t.deleteObjectConfig(e,n)}for(let r of e.mapConfig.delete){let e=r.split(".")[3],n=r.split(".")[2];t.deleteMapConfig(e,n)}}for(let t of u)e[t].upload.length>0&&o.push((()=>i.uploadDatabase(t)));return o.push((()=>i.uploadConfig("config"))),o.push((()=>i.uploadConfig("sync"))),o}))}static syncCover(e,t,r){return a(this,void 0,void 0,(function*(){let r=yield t.getLocalCoverList(),n=yield t.getCloudCoverList(),i=Array.from(new Set([...r,...n])),o=[];for(let s of i)r.includes(s)&&!n.includes(s)&&o.push((()=>t.uploadCover(s))),!r.includes(s)&&n.includes(s)&&"adrive"!==e.getItem("defaultSyncOption")&&o.push((()=>t.downloadCover(s)));return o}))}static syncBook(e,t){return a(this,void 0,void 0,(function*(){let r=yield t.getLocalBookList(),n=yield t.getCloudBookList(),i=[],o=Array.from(new Set([...r,...n]));for(let s of o){if(r.includes(s)&&!n.includes(s)){let e=s.split(".")[0],r=s.split(".")[1];i.push((()=>t.uploadBook(e,r)))}let o="yes"===e.getReaderConfig("autoOffline");if(!r.includes(s)&&n.includes(s)&&o&&"adrive"!==e.getItem("defaultSyncOption")){let e=s.split(".")[0],r=s.split(".")[1];i.push((()=>t.offlineBook(e,r.toUpperCase())))}}return i}))}static runTasksWithLimit(e,t,r){return a(this,void 0,void 0,(function*(){if("ftp"!==r&&"adrive"!==r){const r=[],n=[];for(const i of e){const e=i().then((t=>(n.splice(n.indexOf(e),1),t)));r.push(e),n.push(e),n.length>=t&&(yield Promise.race(n))}return Promise.all(r)}for(let t of e)yield t()}))}}const Um=((e,t)=>{var r;return(r=class extends e{static getReaderConfig(e){return JSON.parse(this.getItem("readerConfig")||"{}")[e]}static setReaderConfig(e,r,n=!0){let i=JSON.parse(this.getItem("readerConfig")||"{}");i[e]=r,this.setItem("readerConfig",JSON.stringify(i)),n&&this.setSyncRecord({type:"config",catergory:"readerConfig",name:t,key:e},{operation:"update",time:Date.now()})}static getAllListConfig(e){return("{}"!==this.getItem(e)&&this.getItem(e)?JSON.parse(this.getItem(e)||""):[])||[]}static deleteListConfig(e,t){let r=this.getAllListConfig(t);const n=r.indexOf(e);n>-1&&r.splice(n,1),this.setAllListConfig(r,t)}static setListConfig(e,t){let r=this.getAllListConfig(t);const n=r.indexOf(e);n>-1?(r.splice(n,1),r.unshift(e)):r.unshift(e),this.setAllListConfig(r,t)}static setAllListConfig(e,t,r=!0){this.setItem(t,JSON.stringify(e)),r&&this.setSyncRecord({type:"config",catergory:"listConfig",name:"general",key:t},{operation:"update",time:Date.now()})}static setObjectConfig(e,t,r,n=!0){let i=this.getAllObjectConfig(r);i[e]=t,n&&this.setSyncRecord({type:"config",catergory:"objectConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllObjectConfig(i,r)}static getObjectConfig(e,t,r){return this.getAllObjectConfig(t)[e]||r}static getAllObjectConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static setAllObjectConfig(e,t){this.setItem(t,JSON.stringify(e))}static deleteObjectConfig(e,t){let r=this.getAllObjectConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"objectConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllObjectConfig(r,t)}static getAllMapConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static getMapConfig(e,t){return this.getAllMapConfig(t)[e]||[]}static setAllMapConfig(e,t){this.setItem(t,JSON.stringify(e))}static setMapConfig(e,t,r){let n=this.getAllMapConfig(r);void 0===n[e]&&(n[e]=[]),t&&-1===n[e].indexOf(t)&&n[e].unshift(t),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(n,r)}static setOneMapConfig(e,t,r,n=!0){let i=this.getAllMapConfig(r);i[e]=t,n&&this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(i,r)}static deleteFromMapConfig(e,t,r){let n=this.getAllMapConfig(r),i=n[e].indexOf(t);n[e].splice(i,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(n,r)}static deleteFromAllMapConfig(e,t){let r=this.getAllMapConfig(t);Object.keys(r).forEach((n=>{let i=r[n].indexOf(e);i>-1&&(r[n].splice(i,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:n},{operation:"update",time:Date.now()}))})),this.setAllMapConfig(r,t)}static deleteMapConfig(e,t){let r=this.getAllMapConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllMapConfig(r,t)}static getFromAllMapConfig(e,t){let r=this.getAllMapConfig(t),n=[];for(let t in r)r[t]&&r[t].indexOf(e)>-1&&n.push(t);return n}static getSyncRecord(e){return JSON.parse(this.getItem("syncRecord")||"{}")[e.type+"."+e.catergory+"."+e.name+"."+e.key]||{operation:"",time:0}}static getAllSyncRecord(){return JSON.parse(this.getItem("syncRecord")||"{}")}static flushSyncRecords(){if(0===Object.keys(this.pendingSyncRecords).length)return;let e=JSON.parse(this.getItem("syncRecord")||"{}");Object.assign(e,this.pendingSyncRecords),this.setItem("syncRecord",JSON.stringify(e)),this.pendingSyncRecords={},this.syncRecordTimer=null}static setSyncRecord(e,t){const r=e.type+"."+e.catergory+"."+e.name+"."+e.key;this.pendingSyncRecords[r]=t,null!==this.syncRecordTimer&&clearTimeout(this.syncRecordTimer),this.syncRecordTimer=setTimeout((()=>{this.flushSyncRecords()}),this.DEBOUNCE_DELAY)}static setAllSyncRecord(e){this.setItem("syncRecord",JSON.stringify(e))}}).pendingSyncRecords={},r.syncRecordTimer=null,r.DEBOUNCE_DELAY=1e3,r})(class{static getItem(e){return localStorage.getItem(e)}static setItem(e,t){localStorage.setItem(e,t)}static removeItem(e){localStorage.removeItem(e)}},"browser");class Lm{static saveAllToken(e){return a(this,void 0,void 0,(function*(){if(e)if(s){const{ipcRenderer:t}=window.require("electron");t.invoke("encrypt-data",{token:e})}else{const t=yield this.encryptString(e);localStorage.setItem("encryptedToken",t)}}))}static getAllToken(){return a(this,void 0,void 0,(function*(){if(s){const{ipcRenderer:e}=window.require("electron");return yield e.invoke("decrypt-data")}{let e=localStorage.getItem("encryptedToken")||"";return e?yield this.decryptString(e):null}}))}static setToken(e,t){return a(this,void 0,void 0,(function*(){const r=JSON.parse((yield this.getAllToken())||"{}");r[e]=t,yield this.saveAllToken(JSON.stringify(r))}))}static getToken(e){return a(this,void 0,void 0,(function*(){return JSON.parse((yield this.getAllToken())||"{}")[e]||null}))}static deleteToken(e){return a(this,void 0,void 0,(function*(){const t=JSON.parse((yield this.getAllToken())||"{}");delete t[e],yield this.saveAllToken(JSON.stringify(t))}))}static encryptString(e){return a(this,void 0,void 0,(function*(){try{let t=yield this.getFingerprint();const r=yield zm(t),n="undefined"!=typeof crypto&&crypto.subtle?yield function(e,t,r={alg:"HS256",typ:"JWT"}){return a(this,void 0,void 0,(function*(){const n=Dm((new TextEncoder).encode(JSON.stringify(r))),i=Dm((new TextEncoder).encode(JSON.stringify(e))),o=(new TextEncoder).encode(`${n}.${i}`),s=yield crypto.subtle.importKey("raw",(new TextEncoder).encode(t),{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign"]);return`${n}.${i}.${Dm(yield crypto.subtle.sign("HMAC",s,o))}`}))}(e,r):function(e,t){if(!e||!t)return"";const r=h((new TextEncoder).encode(t)),n=Array.from(new Uint8Array(r)),i=(new TextEncoder).encode(e),o=new Uint8Array(i.length);for(let e=0;e=0&&r<=ay}}function Fy(e){return function(t){return null==t?void 0:t[e]}}var $y=Fy("byteLength"),Uy=Ny($y),Ly=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var Dy=Xm?function(e){return ry?ry(e)&&!Cy(e):Uy(e)&&Ly.test(Gm.call(e))}:My(!1),By=Fy("length");function zy(e,t){t=function(e){for(var t={},r=e.length,n=0;n":">",'"':""","'":"'","`":"`"},Pv=_v(Ov),Iv=_v(cv(Ov)),Mv=Wy.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},Nv=/(.)^/,Fv={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},$v=/\\|'|\r|\n|\u2028|\u2029/g;function Uv(e){return"\\"+Fv[e]}var Lv=/^\s*(\w|\$)+\s*$/;var Dv=0;function Bv(e,t,r,n,i){if(!(n instanceof t))return e.apply(r,i);var o=pv(e.prototype),s=e.apply(o,i);return uy(s)?s:o}var zv=cy((function(e,t){var r=zv.placeholder,n=function(){for(var i=0,o=t.length,s=Array(o),a=0;a1)Wv(a,t-1,r,n),i=n.length;else for(var c=0,u=a.length;c0&&(r=t.apply(this,arguments)),e<=1&&(t=null),r}}var Jv=zv(Gv,2);function Xv(e,t,r){t=Av(t,r);for(var n,i=jy(e),o=0,s=i.length;o0?0:i-1;o>=0&&o0?s=o>=0?o:Math.max(o+a,s):a=o>=0?Math.min(o+1,a):o+a+1;else if(r&&o&&a)return n[o=r(n,i)]===i?o:-1;if(i!=i)return(o=t(Qm.call(n,s,a),Iy))>=0?o+s:-1;for(o=e>0?s:a-1;o>=0&&o=3;return function(t,r,n,i){var o=!qv(t)&&jy(t),s=(o||t).length,a=e>0?0:s-1;for(i||(n=t[o?o[a]:a],a+=e);a>=0&&a=0}var gb=cy((function(e,t,r){var n,i;return Sy(t)?i=t:(t=mv(t),n=t.slice(0,-1),t=t[t.length-1]),ab(e,(function(e){var o=i;if(!o){if(n&&n.length&&(e=yv(e,n)),null==e)return;o=e[t]}return null==o?o:o.apply(e,r)}))}));function mb(e,t){return ab(e,kv(t))}function yb(e,t,r){var n,i,o=-1/0,s=-1/0;if(null==t||"number"==typeof t&&"object"!=typeof e[0]&&null!=e)for(var a=0,c=(e=qv(e)?e:av(e)).length;ao&&(o=n);else t=Av(t,r),sb(e,(function(e,r,n){((i=t(e,r,n))>s||i===-1/0&&o===-1/0)&&(o=e,s=i)}));return o}var vb=/[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;function bb(e){return e?Ry(e)?Qm.call(e):fy(e)?e.match(vb):qv(e)?ab(e,bv):av(e):[]}function wb(e,t,r){if(null==t||r)return qv(e)||(e=av(e)),e[Cv(e.length-1)];var n=bb(e),i=By(n);t=Math.max(Math.min(t,i),0);for(var o=i-1,s=0;s1&&(n=Sv(n,t[1])),t=Gy(e)):(n=Tb,t=Wv(t,!1,!1),e=Object(e));for(var i=0,o=t.length;i1&&(r=t[1])):(t=ab(Wv(t,!1,!1),String),n=function(e,r){return!pb(t,r)}),Cb(e,n,r)}));function _b(e,t,r){return Qm.call(e,0,Math.max(0,e.length-(null==t||r?1:t)))}function Ob(e,t,r){return null==e||e.length<1?null==t||r?void 0:[]:null==t||r?e[0]:_b(e,e.length-t)}function Pb(e,t,r){return Qm.call(e,null==t||r?1:t)}var Ib=cy((function(e,t){return t=Wv(t,!0,!0),lb(e,(function(e){return!pb(t,e)}))})),Mb=cy((function(e,t){return Ib(e,t)}));function Nb(e,t,r,n){ly(t)||(n=r,r=t,t=!1),null!=r&&(r=Av(r,n));for(var i=[],o=[],s=0,a=By(e);st?(n&&(clearTimeout(n),n=null),a=u,s=e.apply(i,o),n||(i=o=null)):n||!1===r.trailing||(n=setTimeout(c,d)),s};return u.cancel=function(){clearTimeout(n),a=0,n=i=o=null},u},debounce:function(e,t,r){var n,i,o,s,a,c=function(){var u=Rv()-i;t>u?n=setTimeout(c,t-u):(n=null,r||(s=e.apply(a,o)),n||(o=a=null))},u=cy((function(u){return a=this,o=u,i=Rv(),n||(n=setTimeout(c,t),r&&(s=e.apply(a,o))),s}));return u.cancel=function(){clearTimeout(n),n=o=a=null},u},wrap:function(e,t){return zv(t,e)},negate:Qv,compose:function(){var e=arguments,t=e.length-1;return function(){for(var r=t,n=e[t].apply(this,arguments);r--;)n=e[r].call(this,n);return n}},after:function(e,t){return function(){if(--e<1)return t.apply(this,arguments)}},before:Gv,once:Jv,findKey:Xv,findIndex:Yv,findLastIndex:eb,sortedIndex:tb,indexOf:nb,lastIndexOf:ib,find:ob,detect:ob,findWhere:function(e,t){return ob(e,wv(t))},each:sb,forEach:sb,map:ab,collect:ab,reduce:ub,foldl:ub,inject:ub,reduceRight:db,foldr:db,filter:lb,select:lb,reject:function(e,t,r){return lb(e,Qv(Av(t)),r)},every:hb,all:hb,some:fb,any:fb,contains:pb,includes:pb,include:pb,invoke:gb,pluck:mb,where:function(e,t){return lb(e,wv(t))},max:yb,min:function(e,t,r){var n,i,o=1/0,s=1/0;if(null==t||"number"==typeof t&&"object"!=typeof e[0]&&null!=e)for(var a=0,c=(e=qv(e)?e:av(e)).length;an||void 0===r)return 1;if(re.map((e=>e.name)),qb=e=>e.map((e=>e.author||"")),Wb=e=>e.map((e=>e.key)),Hb=(e,t)=>{let r=[];for(let n=0;n-1&&r.push(t.indexOf(e[n]));return r.length{if(-1===e.indexOf(n))for(let e=0;ee-Math.min(...r))))]};class Kb{static sortBooks(e,t,r){let n=e.map((e=>e.key)),i=(e=>e.getAllListConfig("recentBooks"))(r);if(1===t.sort||0===t.sort)return 1===t.order?Hb(i,n).reverse():Hb(i,n);if(2===t.sort){let r=jb(e),n=jb(e).sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"})));return 1===t.order?Hb(n,r).reverse():Hb(n,r)}if(3===t.sort){let r=[];for(let t=0;t{let t=e.getAllObjectConfig("readingTime");var r=[];for(let e in t)r.push([e,t[e]]);return r.sort((function(e,t){return e[1]-t[1]})),Object.keys(t)})(r),i=Wb(e);return 1===t.order?Hb(zb.union(n,i),i).reverse():Hb(zb.union(n,i),i)}if(5===t.sort){let r=qb(e),n=qb(e).sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"})));return 1===t.order?Hb(n,r).reverse():Hb(n,r)}if(6===t.sort){let n=(e=>{let t=e.getAllObjectConfig("recordLocation");var r=[];for(let e in t)r.push([e,t[e].percentage||0]);return r.sort((function(e,t){return e[1]-t[1]})),r.map((e=>e[0]))})(r),i=Wb(e);return 1===t.order?Hb(n,i).reverse():Hb(n,i)}}static sortNotes(e,t,r=[]){if(3===t.sort){let r=zb.clone(e).reverse(),n=zb.uniq(e.map((e=>({chapter:e.chapter,chapterIndex:e.chapterIndex}))));n=1===t.order?zb.sortBy(n,"chapterIndex"):zb.sortBy(n,"chapterIndex").reverse();let i=zb.uniq(n.map((e=>e.chapter))),o={};return i.forEach((e=>{o[e]=[]})),r.forEach((e=>{o[e.chapter].push(e)})),i.map((e=>({group:e,notes:o[e]})))||[]}if(2===t.sort){let r=zb.clone(e).reverse(),n=zb.uniq(e.map((e=>e.date.year+"-"+e.date.month+"-"+e.date.day)));1===t.order?n.sort():n.sort().reverse();let i={};return n.forEach((e=>{i[e]=[]})),r.forEach((e=>{n.forEach((t=>{t===e.date.year+"-"+e.date.month+"-"+e.date.day&&i[t].push(e)}))})),i||{}}if(1===t.sort){let n=zb.clone(e).reverse(),i=zb.uniq(e.map((e=>{let t=zb.findLastIndex(r,{key:e.bookKey});return t>-1?r[t].name:""})));1===t.order?i.sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"}))):i.sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"}))).reverse();let o={};return i.forEach((e=>{o[e]=[]})),n.forEach((e=>{i.forEach((t=>{let n=zb.findLastIndex(r,{key:e.bookKey});n>-1&&t===r[n].name&&o[t].push(e)}))})),o||{}}}static sortBookmarks(e,t){if(3===t.sort){let r=zb.clone(e).reverse(),n=zb.uniq(e.map((e=>({chapter:e.chapter,chapterIndex:parseInt(JSON.parse(e.cfi).chapterDocIndex)}))));n=1===t.order?zb.sortBy(n,"chapterIndex"):zb.sortBy(n,"chapterIndex").reverse();let i=zb.uniq(n.map((e=>e.chapter))),o={};return i.forEach((e=>{o[e]=[]})),r.forEach((e=>{o[e.chapter].push(e)})),i.map((e=>({group:e,bookmarks:o[e]})))||[]}}}class Vb{static getDefaultCss(e){return`::selection{background:#f3a6a68c}::-moz-selection{background:#f3a6a68c}.kookit-note:hover{cursor:pointer;}body,html{margin: 0px !important; padding: 0px !important; font-size: 18px;writing-mode: horizontal-tb !important;}.kookit-text{${this.getCustomCss(e)}}.kookit-title{${this.getCustomCss(e,!0)}}code,pre{white-space: pre-wrap;}p{margin-block: 0;margin-inline: 0;}rt span{font-size: unset !important;}${"yes"===e.getReaderConfig("isOverwriteLink")?"a{color: #0066cc !important; text-decoration: underline !important; cursor: pointer !important;}a:hover{color: #004080 !important;}a:visited{color: #6600cc !important;}":""}${"yes"===e.getReaderConfig("isMergeWord")?`h1{font-size: ${e.getReaderConfig("fontSize")||18}px !important;}`:""}${this.getComicCss(e)}`}static getCustomCss(e,t=!1){return`font-size: ${t?"":e.getReaderConfig("fontSize")?e.getReaderConfig("fontSize"):""}px !important;line-height: ${e.getReaderConfig("lineHeight")||"1.25"} !important;font-family: ${e.getReaderConfig("fontFamily")||""} !important;background-color: transparent;color: ${e.getReaderConfig("textColor")?e.getReaderConfig("textColor"):"rgba(44,47,49,1)"===e.getReaderConfig("backgroundColor")||"night"===e.getReaderConfig("appSkin")||"system"===e.getReaderConfig("appSkin")&&"yes"===e.getReaderConfig("isOSNight")?"white":""};letter-spacing: ${e.getReaderConfig("letterSpacing")||""}px !important;text-align: ${e.getReaderConfig("textAlign")?e.getReaderConfig("textAlign"):""} !important;font-weight: ${"yes"===e.getReaderConfig("isBold")?"bold !important":""};font-style: ${"yes"===e.getReaderConfig("isItalic")?"italic !important":""};text-shadow: ${"yes"===e.getReaderConfig("isShadow")?"2px 2px 2px #cccccc !important":""};text-indent: ${"yes"!==e.getReaderConfig("isIndent")||t?"yes"===e.getReaderConfig("isIndent")&&t?"0em !important":"":"2em !important"};text-decoration: ${"yes"===e.getReaderConfig("isUnderline")?"underline !important":""};padding-bottom: ${e.getReaderConfig("paraSpacing")||0}px !important;word-wrap: break-word !important; writing-mode: horizontal-tb !important; max-width: 100% !important;overflow: visible !important; margin-top: 0 !important; margin-bottom: 0 !important;`}static getComicCss(e){return`div.fs{height:unset !important;width:100% !important;min-height:100% !important;position:relative;text-align:left;vertical-align:middle;}div.fs div{height:unset !important;min-height:100% !important;width:100% !important;margin:auto;text-align:center;vertical-align:middle;}.div_view{height:unset !important;width:100% !important;min-height:100% !important;margin:auto;text-align:center;vertical-align:middle;}.singlePage{${"scroll"!==e.getReaderConfig("readerMode")?"":"max-width: 100% !important;"}${"scroll"!==e.getReaderConfig("readerMode")?"":"max-height: unset !important;"}height:${"scroll"!==e.getReaderConfig("readerMode")?"100%":"unset"}!important;width:100%!important;position: unset !important;}`}}class Qb{static mergeArray(e,t){var r=[];for(let t of e)r.push(t);for(let i of t){var n=!0;for(let t of e)if(i===t){n=!1;break}n&&r.push(i)}return r}static fuzzyQuery(e,t){for(var r=[],n=0;n-1&&r.push(n);return r}static mouseSearch(e){let t=document.querySelector(".header-search-box").value.toLowerCase(),r=[],n=[];if(!e)return[];e.forEach((e=>{r.push(e.name.toLowerCase()),n.push(e.author.toLowerCase())}));let i=this.fuzzyQuery(r,t),o=this.fuzzyQuery(n,t);return this.mergeArray(i,o)}static keywordSearch(e,t){let r=[],n=[];if(!t)return[];t.forEach((e=>{r.push(e.name.toLowerCase()),n.push(e.author.toLowerCase())}));let i=this.fuzzyQuery(r,e),o=this.fuzzyQuery(n,e);return this.mergeArray(i,o)}static keySearch(e,t){if(e&&13===e.keyCode){let r=[],n=[];if(!t)return[];t.forEach((e=>{r.push(e.name.toLowerCase()),n.push(e.author.toLowerCase())}));let i=this.fuzzyQuery(r,e.target.value.toLowerCase()),o=this.fuzzyQuery(n,e.target.value.toLowerCase());return this.mergeArray(i,o)}}static mouseNoteSearch(e){let t=document.querySelector(".header-search-box").value.toLowerCase(),r=[],n=[];e.forEach((e=>{r.push(e.notes.toLowerCase()),n.push(e.text.toLowerCase())}));let i=this.fuzzyQuery(r,t),o=this.fuzzyQuery(n,t);return this.mergeArray(i,o)}static keyNoteSearch(e,t){if(e&&13===e.keyCode){let r=[],n=[];t.forEach((e=>{r.push(e.notes.toLowerCase()),n.push(e.text.toLowerCase())}));let i=this.fuzzyQuery(r,e.target.value.toLowerCase()),o=this.fuzzyQuery(n,e.target.value.toLowerCase());return this.mergeArray(i,o)}}}export{Rm as BookHelper,g as CommonTool,Um as ConfigService,b as KookitConfig,Fm as LoginHelper,Im as ReaderRequest,Qb as SearchUtil,Kb as SortUtil,Tm as SqlStatement,Vb as StyleHelper,$m as SyncHelper,bm as SyncUtil,Mm as ThirdpartyRequest,Lm as TokenService,Nm as UserRequest}; diff --git a/src/assets/lib/kookit-extra.min.mjs b/src/assets/lib/kookit-extra.min.mjs index 74d6a979..502868c1 100644 --- a/src/assets/lib/kookit-extra.min.mjs +++ b/src/assets/lib/kookit-extra.min.mjs @@ -1 +1 @@ -import e from"axios";import t from"fs";import r from"path";import{promisify as i}from"util";import o from"stream";import{Client as s}from"basic-ftp";import{S3Client as n,ListObjectsV2Command as a,DeleteObjectCommand as d,PutObjectCommand as l,GetObjectCommand as c}from"@aws-sdk/client-s3";import{createClient as h,AuthType as u}from"webdav";import p from"ssh2-sftp-client";import f from"form-data";import{Storage as y}from"megajs";import g from"crypto";import{SSE as m}from"sse.js";import k from"electron-store";import v from"node-machine-id";function T(e,t,r,i){return new(r||(r=Promise))((function(o,s){function n(e){try{d(i.next(e))}catch(e){s(e)}}function a(e){try{d(i.throw(e))}catch(e){s(e)}}function d(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(n,a)}d((i=i.apply(e,t||[])).next())}))}const b=e=>"json"===e?"application/json":["jpg","jpeg","png","gif","bmp"].includes(e)?"image/"+e:"zip"===e?"application/zip":"epub"===e?"application/epub+zip":"txt"===e?"text/plain":"pdf"===e?"application/pdf":"mobi"===e?"application/x-mobipocket-ebook":"azw3"===e||"azw"===e?"application/vnd.amazon.ebook":"cbz"===e?"application/x-cbz":"cbr"===e?"application/x-cbr":"cbt"===e?"application/x-cbt":"cb7"===e?"application/x-cb7":"fb2"===e?"application/x-fictionbook+xml":"html"===e?"text/html":"css"===e?"text/css":"js"===e?"application/javascript":"xml"===e?"application/xml":"xhtml"===e?"application/xhtml+xml":"opf"===e?"application/oebps-package+xml":"ncx"===e?"application/x-dtbncx+xml":"mp3"===e?"audio/mpeg":"wav"===e?"audio/wav":"ogg"===e?"audio/ogg":"mp4"===e?"video/mp4":"webm"===e?"video/webm":"avi"===e?"video/x-msvideo":"wmv"===e?"video/x-ms-wmv":"flv"===e?"video/x-flv":"m3u8"===e?"application/x-mpegURL":"ts"===e?"video/MP2T":"3gp"===e?"video/3gpp":"3g2"===e?"video/3gpp2":"db"===e?"application/x-sqlite3":void 0,F={_chars:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",encode(e){if("string"!=typeof e)throw new Error("Input must be a string");let t="",r=0;const i=this._stringToUtf8Bytes(e),o=i.length;for(;r>2,d=(3&e)<<4|s>>4,l=(15&s)<<2|n>>6,c=63&n;t+=this._chars.charAt(a),t+=this._chars.charAt(d),t+=r-2>=o?"=":this._chars.charAt(l),t+=r-1>=o?"=":this._chars.charAt(c)}return t},decode(e){if("string"!=typeof e)throw new Error("Input must be a string");for(e=e.replace(/[^A-Za-z0-9+/]/g,"");e.length%4!=0;)e+="=";const t=[];let r=0;const i=e.length;for(;r>4,d=(15&o)<<4|s>>2,l=(3&s)<<6|n;t.push(a),-1!==s&&t.push(d),-1!==n&&t.push(l)}return this._utf8BytesToString(t)},_stringToUtf8Bytes(e){const t=[];for(let r=0;r>6),t.push(128|63&i);else if(55296==(64512&i)&&r+1>18),t.push(128|e>>12&63),t.push(128|e>>6&63),t.push(128|63&e)}else t.push(239,191,189),r--}else t.push(224|i>>12),t.push(128|i>>6&63),t.push(128|63&i)}return t},_utf8BytesToString(e){let t="",r=0;for(;r65535){const r=e-65536;t+=String.fromCharCode(55296|r>>10),t+=String.fromCharCode(56320|1023&r)}else t+=String.fromCharCode(e)}else t+="�"}else t+="�"}return t},encodeURL(e){return this.encode(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")},decodeURL(e){for(e=e.replace(/-/g,"+").replace(/_/g,"/");e.length%4;)e+="=";return this.decode(e)}};class w{constructor(e){this.queue=[],this.runningTasks=0,this.totalTasks=0,this.completedTasks=0,this.hasFailedTasks=!1,this.downloadedSize=0,this.maxConcurrency=e}addTask(e){return T(this,void 0,void 0,(function*(){return this.totalTasks++,new Promise(((t,r)=>{const i=()=>T(this,void 0,void 0,(function*(){try{this.runningTasks++;const r=yield e();return this.completedTasks++,t(r),r}catch(e){throw this.completedTasks++,r(e),e}finally{this.runningTasks--,this.runNext()}}));this.runningTasks0&&this.runningTasks=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=[],o=!0,s=null;for(;o;){let n;n=s?yield e.post("https://api.dropboxapi.com/2/files/list_folder/continue",{cursor:s},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}):yield e.post("https://api.dropboxapi.com/2/files/list_folder",{path:"/"+t,limit:2e3},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});const a=n.data.entries||[];i=i.concat(a),o=n.data.has_more,s=n.data.cursor}return[...new Set(i.map((e=>({name:e.name,size:e.size||0,type:e[".tag"],modified:e.client_modified}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();yield e.post("https://api.dropboxapi.com/2/files/delete_v2",{path:"/"+t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"dropbox",refresh_token:e});return this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dropbox",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://www.dropbox.com/oauth2/authorize?response_type=code&token_access_type=offline&client_id=${x}&redirect_uri=${e}`}}const Q=i(o.pipeline);class D extends L{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=t.createReadStream(r.join(this.storagePath,i));return yield e.post("https://content.dropboxapi.com/2/files/upload",n,{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/octet-stream","Dropbox-API-Arg":JSON.stringify({path:"/"+o,mode:"overwrite",autorename:!0,mute:!1})},maxContentLength:1/0,maxBodyLength:1/0}),!0}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken(),n=t.createWriteStream(r.join(this.storagePath,o)),a=yield e({url:"https://content.dropboxapi.com/2/files/download",method:"GET",responseType:"stream",headers:{Authorization:`Bearer ${s}`,"Dropbox-API-Arg":JSON.stringify({path:"/"+i})},maxContentLength:1/0,maxBodyLength:1/0});let d=0;return a.data.on("data",(e=>{d+=e.length,this.taskQueue.setDownloadedSize(d)})),yield Q(a.data,n),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class j{constructor(e,t){this.config=e,this.storagePath=t,this.taskQueue=new w(1),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getClient(){return T(this,void 0,void 0,(function*(){try{if(this.client&&!1===this.client.closed)return this.client;let{url:e,username:t,password:r,dir:i,ssl:o,port:n}=this.config;const a=new s(0);return a.ftp.verbose=!0,yield a.access({host:e,port:parseInt(n),user:t,password:r,secure:"1"===o}),this.client=a,a}catch(e){throw console.error("Error connecting to FTP server:",e),this.client=null,e}}))}uploadFile(e,t){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{let{dir:i}=this.config;i=i&&"KoodoReader"===this.baseFolder?i:this.baseFolder;const o=yield this.getClient(),s=()=>T(this,void 0,void 0,(function*(){yield o.ensureDir(r.dirname(i+"/"+t)),yield o.cd("/"),yield o.uploadFrom(r.join(this.storagePath,e),i+"/"+t)}));try{return yield s(),!0}catch(e){return console.error(e),!1}}catch(e){return console.error("Error in uploadFile:",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{let{dir:o}=this.config;o=o&&"KoodoReader"===this.baseFolder?o:this.baseFolder;const s=yield this.getClient(),n=t.createWriteStream(r.join(this.storagePath,i)),a=()=>T(this,void 0,void 0,(function*(){s.trackProgress((e=>{this.taskQueue.setDownloadedSize(e.bytes||0)})),yield s.downloadTo(n,o+"/"+e),s.trackProgress()}));try{return yield a(),!0}catch(e){return console.error(e),!1}}catch(e){return console.error("Error in downloadFile:",e),!1}}))))))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.listFilesWithoutQueue(e)}))))))}))}listFilesWithoutQueue(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;const r=yield this.getClient(),i=()=>T(this,void 0,void 0,(function*(){return yield r.list(t+"/"+e)}));try{return(yield i()).map((e=>({name:e.name,size:e.size||0,type:e.isFile?"file":"folder",modified:e.modifiedAt?e.modifiedAt.toISOString():""})))}catch(e){return console.error(e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(e){return T(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;const r=yield this.getClient(),i=()=>T(this,void 0,void 0,(function*(){yield r.remove(t+"/"+e)}));try{return yield i(),!0}catch(e){return console.error(e),!1}}))}}class U{constructor(e,t){this.isExp=!1,this.baseUrl="https://graph.microsoft.com/v1.0/me/drive/special/approot",this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new w(3),this.isExp=this.config.isExp||!1,this.baseUrl=this.isExp?"https://graph.microsoft.com/v1.0/me/drive/root":"https://graph.microsoft.com/v1.0/me/drive/special/approot",void 0===this.config.baseFolder?this.baseFolder=this.isExp?"KoodoReader":"":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);let i,o=[];if(""===t)i=`${this.baseUrl}/children`;else{const e=encodeURIComponent(t);i=`${this.baseUrl}:/${e}:/children`}for(;i;){const t=yield e.get(i,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(t.status>=300)break;const s=t.data.value||[];o=o.concat(s),i=t.data["@odata.nextLink"]||""}return[...new Set(o.map((e=>({name:e.name,size:e.size||0,type:e.folder?"folder":"file",modified:e.lastModifiedDateTime}))))]}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const i=yield e.delete(`${this.baseUrl}:/${t}`,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!(i.status>=300)||(console.error("Error deleting file:",i),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"microsoft",refresh_token:e});return this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"microsoft",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=${I}&scope=${this.isExp?"files.readwrite.all":"files.readwrite.appfolder"} offline_access&response_type=code&redirect_uri=${e}`}}const B=209715200;class M extends U{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){var s;let n=null;try{const s=yield this.refreshToken();let a=this.baseFolder+"/"+o;for(;a.startsWith("/");)a=a.substring(1);const d=r.join(this.storagePath,i),l=yield this.getFileSize(d),c=a.split(".").pop(),h=(b(c||""),`${this.baseUrl}:/${a}:/createUploadSession`),u=(yield e.post(h,{item:{"@microsoft.graph.conflictBehavior":"replace"}},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}})).data.uploadUrl;n=yield t.promises.open(d,"r");let p=0,f=Buffer.alloc(B);for(;pthis.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken();let n=this.baseFolder+"/"+i;for(;n.startsWith("/");)n=n.substring(1);const a=`${this.baseUrl}:/${n}:/content`;let d=(yield fetch(a,{headers:{Authorization:"Bearer "+s},redirect:"manual"})).headers.get("location");if(d){const i=yield e.get(d,{responseType:"stream"});let s=0;const n=t.createWriteStream(r.join(this.storagePath,o));return i.data.on("data",(e=>{s+=e.length,this.taskQueue.setDownloadedSize(s)})),yield new Promise(((e,t)=>{i.data.pipe(n),n.on("finish",(()=>{e()})),n.on("error",t)})),!0}return!1}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getFileSize(e){return T(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}class W{constructor(e,t){this.isExp=!1,this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new w(3),this.isExp=this.config.isExp||!1,void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getFileId(t,r){return T(this,void 0,void 0,(function*(){const i=yield this.refreshToken(),o=`https://www.googleapis.com/drive/v3/files?q=name='${t}'+and+'${r}'+in+parents&fields=files(id,name)`;try{const t=yield e.get(o,{headers:{Authorization:"Bearer "+i}});if(0===t.data.files.length)return"";const r=t.data.files;return r.length>0?r[0].id:null}catch(e){return console.error("Error occurred during file list retrieval:",e),""}}))}checkFolder(t){return T(this,void 0,void 0,(function*(){t=this.baseFolder+"/"+t;const r=yield this.refreshToken();if(""===t)return"root";const i=t.split("/").filter((e=>""!==e.trim()));let o="root";for(const t of i){let i=yield this.getFolderId(t,o);if(!i){const s={name:t,mimeType:"application/vnd.google-apps.folder",parents:[o]};try{i=(yield e.post("https://www.googleapis.com/drive/v3/files",s,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}catch(e){throw console.error(`Error occurred during folder creation for ${t}:`,e),e}}o=i}return o}))}getFolderId(t,r){return T(this,void 0,void 0,(function*(){const i=yield this.refreshToken(),o=`https://www.googleapis.com/drive/v3/files?q=name='${t=encodeURIComponent(t)}'+and+mimeType='application/vnd.google-apps.folder'+and+'${r}'+in+parents&fields=files(id,name)`;try{const t=(yield e.get(o,{headers:{Authorization:`Bearer ${i}`}})).data.files;return t.length>0?t[0].id:null}catch(e){throw console.error("Error occurred during fetching folder ID:",e),e}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=yield this.checkFolder(t),o=[],s="",n=!0;for(;n;){let t=`https://www.googleapis.com/drive/v3/files?q='${i}'+in+parents&fields=nextPageToken,files(id,name,size,mimeType)&pageSize=1000`;s&&(t+=`&pageToken=${s}`);const a=yield e.get(t,{headers:{Authorization:`Bearer ${r}`}}),d=a.data.files||[];o=o.concat(d),s=a.data.nextPageToken,n=!!s}return[...new Set(o.map((e=>({name:e.name,size:e.size||0,type:"application/vnd.google-apps.folder"===e.mimeType?"folder":"file",modified:e.modifiedTime}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQue(e)}))))))}))}deleteFileWithoutQue(t){return T(this,void 0,void 0,(function*(){const r=t.split("/")[1],i=yield this.checkFolder(t),o=yield this.refreshToken(),s=yield this.getFileId(r,i);if(""===s)return console.error("File not found:",r),!0;try{const t=yield e.delete(`https://www.googleapis.com/drive/v3/files/${s}`,{headers:{Authorization:`Bearer ${o}`}});return console.error("File deleted:",t),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"google",refresh_token:e});return this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"google",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${e}&prompt=consent&response_type=code&client_id=${$}&scope=https://www.googleapis.com/auth/${this.isExp?"drive":"drive.file"}&access_type=offline`}}class N extends W{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken();let n=i.split("/").pop(),a=o.split(".").pop(),d=b(a||""),l=o.split("/").slice(0,-1).join("/"),c=yield this.checkFolder(l),h=yield this.getFileId(n||"",c);const u={mimeType:d,name:n,parents:[c]},p=h?`https://www.googleapis.com/upload/drive/v3/files/${h}?uploadType=resumable`:"https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable",f=(yield e({method:h?"PATCH":"POST",url:p,data:h?null:JSON.stringify(u),headers:{Authorization:"Bearer "+s,"Content-Type":"application/json; charset=UTF-8"},maxContentLength:1/0,maxBodyLength:1/0})).headers.location;let y=yield this.getFileSize(r.join(this.storagePath,i));const g=t.createReadStream(r.join(this.storagePath,i));yield e.put(f,g,{headers:{Authorization:"Bearer "+s,"Content-Type":"application/zip","Content-Range":`bytes 0-${y-1}/${y}`},maxContentLength:1/0,maxBodyLength:1/0});return!0}catch(e){return console.error("Error occurred during upload:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken();let n=i.split("/").pop(),a=i.split("/").slice(0,-1).join("/"),d=yield this.checkFolder(a),l=yield this.getFileId(n||"",d);if(!l)return console.error("File not found"),!0;const c=`https://www.googleapis.com/drive/v3/files/${l}?alt=media`;return new Promise((i=>{const n=t.createWriteStream(r.join(this.storagePath,o));e({url:c,method:"GET",responseType:"stream",headers:{Authorization:"Bearer "+s},maxContentLength:1/0,maxBodyLength:1/0}).then((e=>{let t=0;e.data.on("data",(e=>{t+=e.length,this.taskQueue.setDownloadedSize(t)})),e.data.pipe(n),n.on("finish",(()=>{i(!0)})),n.on("error",(()=>{i(!1)}))})).catch((e=>{console.error("Error downloading file:",e),i(!1)}))}))}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getFileSize(e){return T(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}class K{constructor(e){this.config=e,this.taskQueue=new w(5),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}shouldUsePathStyle(e){try{const t=new URL(e),r=t.hostname,i=/^(\d{1,3}\.){3}\d{1,3}$/.test(r),o=""!==t.port;return!i&&o}catch(e){return!0}}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:i,accessKeyId:o,secretAccessKey:s,dir:d}=this.config;d=d&&"KoodoReader"===this.baseFolder?d:this.baseFolder;let l=d+"/"+e;for(;l.startsWith("/");)l=l.substring(1);""===l||l.endsWith("/")||(l+="/");const c=new n({endpoint:t,region:r,credentials:{accessKeyId:o,secretAccessKey:s},forcePathStyle:this.shouldUsePathStyle(t)});try{let e,t=[],r=[],o=!0;for(;o;){const s=yield c.send(new a({Bucket:i,Prefix:l,Delimiter:"/",ContinuationToken:e}));s.Contents&&(t=t.concat(s.Contents)),s.CommonPrefixes&&(r=r.concat(s.CommonPrefixes)),e=s.NextContinuationToken,o=!!e}let s=[];return t.forEach((e=>{if(!e.Key.endsWith("/")){const t=e.Key.substring(l.length);t.includes("/")||s.push({name:t,size:e.Size||0,type:"file",modified:e.LastModified?e.LastModified.toISOString():""})}})),r.forEach((e=>{const t=e.Prefix.substring(l.length).replace(/\/$/,"");t&&s.push({name:t,size:0,type:"folder",modified:""})})),s}catch(e){return console.error(e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:i,accessKeyId:o,secretAccessKey:s,dir:a}=this.config;a=a&&"KoodoReader"===this.baseFolder?a:this.baseFolder;const l=new n({endpoint:t,region:r,credentials:{accessKeyId:o,secretAccessKey:s},forcePathStyle:this.shouldUsePathStyle(t)});let c=a+"/"+e;for(;c.startsWith("/");)c=c.substring(1);try{return yield l.send(new d({Bucket:i,Key:c})),!0}catch(e){return console.error(e),!1}}))}}class q extends K{constructor(e,t){super(e),this.storagePath=t}uploadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){let{endpoint:o,region:s,bucketName:a,accessKeyId:d,secretAccessKey:c,dir:h}=this.config;const u=new n({endpoint:o,region:s,credentials:{accessKeyId:d,secretAccessKey:c},forcePathStyle:this.shouldUsePathStyle(o)});h=h&&"KoodoReader"===this.baseFolder?h:this.baseFolder;let p=h+"/"+i;for(;p.startsWith("/");)p=p.substring(1);try{let i=yield u.send(new l({Bucket:a,Key:p,Body:t.createReadStream(r.join(this.storagePath,e))}));return 200===i.$metadata.httpStatusCode||(console.error("Error uploading file:",i),!1)}catch(e){return console.error("Error: ",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);let{endpoint:o,region:s,bucketName:a,accessKeyId:d,secretAccessKey:l,dir:h}=this.config;h=h&&"KoodoReader"===this.baseFolder?h:this.baseFolder;const u=(e,t,r,i)=>new Promise(((o,s)=>T(this,void 0,void 0,(function*(){const s=yield e.send(new c({Bucket:t,Key:r}));let n=0;s.Body?(s.Body.on("data",(e=>{n+=e.length,this.taskQueue.setDownloadedSize(n)})),s.Body.pipe(i),i.on("finish",(e=>{e&&o(!1),o(!0)}))):o(!1)})))),p=()=>new Promise(((c,p)=>{const f=new n({region:s,endpoint:o,credentials:{accessKeyId:d,secretAccessKey:l},forcePathStyle:this.shouldUsePathStyle(o)});let y=t.createWriteStream(r.join(this.storagePath,i)),g=h+"/"+e;for(;g.startsWith("/");)g=g.substring(1);u(f,a,g,y).then((e=>{c(!0)})).catch((e=>{console.error(e),c(!1)}))}));try{return yield p()}catch(e){return console.error(e),!1}}))))))}))}}class J{constructor(e,t){this.storagePath=t;let{username:r,password:i,url:o,dir:s}=e;void 0===e.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=e.baseFolder,s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder,this.client=h(o,{authType:u.Password,username:r,password:i}),this.username=r,this.password=i,this.dir=s,this.taskQueue=new w(3)}retryOperation(e,t=1){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{!1===(yield this.client.exists(r.dirname(this.dir+"/"+o)))&&(yield this.ensureDirectoryExists(r.dirname(this.dir+"/"+o)));let s=this.client.createWriteStream(this.dir+"/"+o);return t.createReadStream(r.join(this.storagePath,i)).pipe(s),new Promise(((n,a)=>{s.on("finish",(()=>{n(!0)})),s.on("error",(s=>T(this,void 0,void 0,(function*(){console.error("Error occurred during file upload:",s);try{let s=t.readFileSync(r.join(this.storagePath,i)),a=this.client.getFileUploadLink(this.dir+"/"+o);const d=new URL(a);d.search="",a=d.toString();const l=Buffer.from(this.username+":"+this.password,"binary").toString("base64");yield e.put(a,s,{headers:{Authorization:"Basic "+l},maxContentLength:1/0,maxBodyLength:1/0});n(!0)}catch(e){console.error("Error occurred during file upload:",e),n(!1)}}))))}))}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){if(this.taskQueue.setDownloadedSize(0),-1===e.indexOf("."))return new ArrayBuffer(0);try{if(!1===(yield this.client.exists(this.dir+"/"+e)))return!0;let o=0,s=t.createWriteStream(r.join(this.storagePath,i)),n=this.client.createReadStream(this.dir+"/"+e);return n.on("data",(e=>{o+=e.length,this.taskQueue.setDownloadedSize(o)})),n.pipe(s),new Promise(((e,t)=>{s.on("finish",(()=>{e(!0)})),s.on("error",(t=>{e(!1)}))}))}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){try{return(yield this.client.getDirectoryContents(this.dir+"/"+e)).filter((t=>"."!==t.filename&&".."!==t.filename&&t.filename!==e)).map((e=>({name:e.basename,size:e.size||0,type:"directory"===e.type?"folder":"file",modified:e.lastmod})))}catch(t){return console.error("Error listing files:",t),t.response&&404===t.response.status&&(yield this.client.createDirectory(this.dir+"/"+e)),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){try{return yield this.client.deleteFile(this.dir+"/"+e),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}ensureDirectoryExists(e){return T(this,void 0,void 0,(function*(){try{const t=e.replace(/^\/+|\/+$/g,"").split("/").filter((e=>e.length>0));let r="";for(const e of t)r=r?`${r}/${e}`:e,(yield this.client.exists(`/${r}`))||(yield this.client.createDirectory(`/${r}`));return!0}catch(e){return console.error("Error ensuring directory exists:",e),!1}}))}}class H{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new w(3),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){var r,i;return T(this,void 0,void 0,(function*(){try{const o=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);let s=[],n=0;const a=1e3;let d=!0;for(;d;){const l=yield e.get("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${o}`,"Content-Type":"application/json"},params:{path:t?`/${t}`:"/",limit:a,offset:n,fields:"_embedded.items.name,_embedded.items.size,_embedded.items.type,_embedded.items.modified,_embedded.total"}}),c=(null===(r=l.data._embedded)||void 0===r?void 0:r.items)||[];s=s.concat(c);const h=(null===(i=l.data._embedded)||void 0===i?void 0:i.total)||0;n+=c.length,d=n({name:e.name,size:e.size||0,type:"file"===e.type?"file":"folder",modified:e.modified}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const i=yield e.delete("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${r}`,"Content-Type":"application/json"},params:{path:t?`/${t}`:"/",permanently:!1}});return 202===i.status||204===i.status}catch(e){return console.error("Error deleting file:",e),!1}}))}ensureDirectoryExists(t){var r,i;return T(this,void 0,void 0,(function*(){try{const o=yield this.refreshToken(),s=t.split("/").filter((e=>e.length>0));let n="";for(const t of s){n+="/"+t;try{yield e.get("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${o}`,"Content-Type":"application/json"},params:{path:n}})}catch(t){if(404!==(null===(r=t.response)||void 0===r?void 0:r.status))return console.error("Error checking directory:",t),!1;try{yield e.put(`https://cloud-api.yandex.net/v1/disk/resources?path=${encodeURIComponent(n)}`,null,{headers:{Authorization:`OAuth ${o}`}})}catch(e){if(409!==(null===(i=e.response)||void 0===i?void 0:i.status))return console.error("Error creating directory:",e),!1}}}return!0}catch(e){return console.error("Error ensuring directory exists:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"yandex",refresh_token:e});return this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"yandex",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://oauth.yandex.com/authorize?response_type=code&client_id=${R}&redirect_uri=${e}&force_confirm=true`}}const V=i(o.pipeline);class X extends H{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken();let n=this.baseFolder+"/"+o;for(;n.startsWith("/");)n=n.substring(1);const a=n.substring(0,n.lastIndexOf("/"));if(a){if(!(yield this.ensureDirectoryExists(a)))return console.error("Failed to create directory:",a),!1}const d=yield e.get("https://cloud-api.yandex.net/v1/disk/resources/upload",{headers:{Authorization:`OAuth ${s}`,"Content-Type":"application/json"},params:{path:`/${n}`,overwrite:!0}});if(200!==d.status)return console.error("Error getting upload URL:",d),!1;const l=d.data.href,c=t.createReadStream(r.join(this.storagePath,i));return yield e.put(l,c,{headers:{"Content-Type":"application/octet-stream"},maxContentLength:1/0,maxBodyLength:1/0}),!0}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);let s=this.baseFolder+"/"+i;for(;s.startsWith("/");)s=s.substring(1);try{const i=yield this.refreshToken(),n=yield e.get("https://cloud-api.yandex.net/v1/disk/resources/download",{headers:{Authorization:`OAuth ${i}`,"Content-Type":"application/json"},params:{path:`/${s}`}});if(200!==n.status)return console.error("Error getting download URL:",n),!1;const a=n.data.href,d=t.createWriteStream(r.join(this.storagePath,o)),l=yield e({url:a,method:"GET",responseType:"stream",maxContentLength:1/0,maxBodyLength:1/0});let c=0;return l.data.on("data",(e=>{c+=e.length,this.taskQueue.setDownloadedSize(c)})),yield V(l.data,d),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class Y{constructor(e,t){this.config=e,this.storagePath=t,this.taskQueue=new w(5),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getClient(){return T(this,void 0,void 0,(function*(){try{if(this.client)return this.client;let{url:e,username:t,password:r,dir:i,port:o}=this.config;const s=new p;return yield s.connect({host:e||"",port:o||22,username:t||"",password:r||""}),this.client=s,s}catch(e){throw console.error("Error connecting to SFTP server:",e),this.client=null,e}}))}uploadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{let{dir:o}=this.config;o=o&&"KoodoReader"===this.baseFolder?o:this.baseFolder;let s=yield this.getClient();const n=()=>new Promise(((n,a)=>T(this,void 0,void 0,(function*(){let a=t.createReadStream(r.join(this.storagePath,e)),d="/"+o+"/"+i,l="/"+o+"/"+r.dirname(i);(yield s.exists(l))||(yield s.mkdir(l,!0)),s.put(a,d).then((()=>{n(!0)})).catch((e=>{console.error(e.message),n(!1)}))}))));try{return yield n()}catch(e){return console.error(e),!1}}catch(e){return console.error("Error in uploadFile:",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{let{dir:o}=this.config;o=o&&"KoodoReader"===this.baseFolder?o:this.baseFolder;let s=yield this.getClient();const n=()=>new Promise(((n,a)=>T(this,void 0,void 0,(function*(){let a="/"+o+"/"+e,d=r.join(this.storagePath,i),l=t.createWriteStream(d);s.get(a,l).then((()=>{this.taskQueue.setDownloadedSize(l.bytesWritten||0),n(!0)})).catch((e=>{console.error(e.message),n(!1)}))}))));try{return yield n()}catch(e){return console.error(e),!1}}catch(e){return console.error("Error in downloadFile:",e),!1}}))))))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;let r=yield this.getClient();const i=()=>new Promise(((i,o)=>T(this,void 0,void 0,(function*(){let o="/"+t+"/"+e;(yield r.exists(o))||(yield r.mkdir(o,!0),i([])),r.list(o).then((e=>{i(e.map((e=>({name:e.name,size:e.size||0,type:"d"===e.type?"folder":"file",modified:e.modifyTime}))))})).catch((e=>T(this,void 0,void 0,(function*(){console.error(e.message,"list file error"),i([])}))))}))));try{return yield i()}catch(e){return console.error(e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;let r=yield this.getClient();try{return yield new Promise(((i,o)=>{let s="/"+t+"/"+e;r.delete(s).then((()=>{i(!0)})).catch((e=>{console.error(e.message),i(!1)}))}))}catch(e){return console.error(e),!1}}))}}class G{downloadFile(e,t){return T(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}uploadFile(e,t){return T(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return new Promise((e=>{e([])}))}))}authToken(e){return T(this,void 0,void 0,(function*(){return new Promise((e=>{e("")}))}))}getAuthUrl(){return""}}class Z{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new w(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getFolderIdByPath(t){return T(this,void 0,void 0,(function*(){if(""==t)return"0";const r=yield this.refreshToken(),i=t.split("/");let o="0";for(const t of i){const i=`https://api.box.com/2.0/folders/${o}/items?fields=id,name&type=folder&limit=1000`;try{const s=(yield e.get(i,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===t&&"folder"===e.type));if(s)o=s.id;else{const i={name:t,parent:{id:o},type:"folder"};o=(yield e.post("https://api.box.com/2.0/folders",i,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}}catch(e){return console.error("Error occurred during folder creation:",e),""}}return o}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=this.baseFolder+"/"+t;for(;i.startsWith("/");)i=i.substring(1);let o=yield this.getFolderIdByPath(i),s=[],n=0,a=!0;const d=1e3;for(;a;){const t=yield e.get(`https://api.box.com/2.0/folders/${o}/items`,{params:{limit:d,offset:n},headers:{Authorization:`Bearer ${r}`}}),i=t.data.entries||[];s=s.concat(i),n+=i.length,a=i.length===d&&t.data.total_count>n}return[...new Set(s.map((e=>({name:e.name,size:e.size||0,type:e.type,modified:e.content_modified_at}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=t.substring(0,t.lastIndexOf("/")),o=t.substring(t.lastIndexOf("/")+1);let s=this.baseFolder+"/"+i;for(;s.startsWith("/");)s=s.substring(1);const n=yield this.getFolderIdByPath(s);if(!n)return!0;const a=`https://api.box.com/2.0/folders/${n}/items?fields=id,name&type=file&limit=1000`,d=(yield e.get(a,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===o&&"file"===e.type));return!d||(yield e.delete(`https://api.box.com/2.0/files/${d.id}`,{headers:{Authorization:`Bearer ${r}`}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"boxnet",refresh_token:e});this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("boxnet_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"boxnet",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://account.box.com/api/oauth2/authorize?${new URLSearchParams({response_type:"code",client_id:A,redirect_uri:e,grant_type:"authorization_code",box_subject_type:"enterprise",scope:"root_readwrite"}).toString()}`}}class ee extends Z{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=o.substring(0,o.lastIndexOf("/")),a=o.substring(o.lastIndexOf("/")+1);let d=this.baseFolder+"/"+n;for(;d.startsWith("/");)d=d.substring(1);const l=yield this.getFolderIdByPath(d);if(!l)throw new Error("Folder not found");const c=yield this.listFiles(n);c.find((e=>e===a))&&(yield this.deleteFileWithoutQueue(n+"/"+a));const h=new f,u=JSON.stringify({name:a,parent:{id:l}});h.append("attributes",u),h.append("file",t.createReadStream(r.join(this.storagePath,i)));const p=yield e.post("https://upload.box.com/api/2.0/files/content",h,{headers:Object.assign({Authorization:`Bearer ${s}`},h.getHeaders()),maxContentLength:1/0,maxBodyLength:1/0});return!(p.status>=300)||(console.error("Error occurred during file upload:",p),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken(),n=i.substring(0,i.lastIndexOf("/")),a=i.substring(i.lastIndexOf("/")+1);let d=this.baseFolder+"/"+n;for(;d.startsWith("/");)d=d.substring(1);const l=yield this.getFolderIdByPath(d);if(!l)return console.error("Folder not found"),!0;const c=`https://api.box.com/2.0/folders/${l}/items?fields=id,name&type=file&limit=1000`,h=(yield e.get(c,{headers:{Authorization:`Bearer ${s}`}})).data.entries.find((e=>e.name===a&&"file"===e.type));if(!h)return console.error("File not found:",a),!0;const u=yield e({url:`https://api.box.com/2.0/files/${h.id}/content`,method:"get",responseType:"stream",headers:{Authorization:`Bearer ${s}`}});return yield new Promise(((e,i)=>{let s=0;const n=t.createWriteStream(r.join(this.storagePath,o));u.data.on("data",(e=>{s+=e.length,this.taskQueue.setDownloadedSize(s)})),u.data.pipe(n),n.on("finish",e),n.on("error",i)})),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class te{constructor(e){this.folderCreationLocks=new Map,this.config=e,this.taskQueue=new w(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getStorage(){return T(this,void 0,void 0,(function*(){if(this.storage)return this.storage;let{email:e,password:t}=this.config;return this.storage=yield new y({email:e,password:t}).ready,this.storage}))}getRoot(){return T(this,void 0,void 0,(function*(){if(this.root)return this.root;const e=(yield this.getStorage()).root;if(""===this.baseFolder)return this.root=e,this.root;let t=e.children.find((e=>e.name===this.baseFolder&&e.directory));return t||(t=yield e.mkdir(this.baseFolder)),this.root=t,this.root}))}createFolder(e,t){return T(this,void 0,void 0,(function*(){const r=`${e.nodeId}_${t}`;if(this.folderCreationLocks.has(r))return yield this.folderCreationLocks.get(r);const i=(()=>T(this,void 0,void 0,(function*(){try{let r=e.children.find((e=>e.name===t&&e.directory));return r||(r=yield e.mkdir(t),r)}finally{this.folderCreationLocks.delete(r)}})))();return this.folderCreationLocks.set(r,i),yield i}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();if(e){const r=e.split("/").filter((e=>e));for(const e of r){const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return[];t=r}}return t.children.map((e=>({name:e.name,size:e.size||0,type:e.directory?"folder":"file",modified:e.timestamp?new Date(1e3*e.timestamp).toISOString():""})))}catch(e){return console.error("Error listing MEGA files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(e){return T(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();const r=e.split("/"),i=r.pop();for(const e of r){if(!e)continue;const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return!0;t=r}const o=t.children.find((e=>e.name===i&&!e.directory));return!o||(yield o.delete(),!0)}catch(e){return console.error("Error deleting MEGA file:",e),!1}}))}}class re extends te{constructor(e,t){super(e),this.storagePath=t}uploadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{let o=yield this.getRoot();const s=i.split("/"),n=s.pop()||"";for(const e of s){if(!e)continue;let t=o.children.find((t=>t.name===e&&t.directory));t||(t=yield this.createFolder(o,e)),o=t}const a=o.children.find((e=>e.name===n&&!e.directory));a&&(yield a.delete());const d=t.createReadStream(r.join(this.storagePath,e)),l=t.statSync(r.join(this.storagePath,e)).size;return yield o.upload({name:n,size:l},d).complete,!0}catch(e){return console.error("Error occurred during MEGA file upload:",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{let o=yield this.getRoot();const s=e.split("/"),n=s.pop()||"";for(const e of s){if(!e)continue;const t=o.children.find((t=>t.name===e&&t.directory));if(!t)return!0;o=t}const a=o.children.find((e=>e.name===n&&!e.directory));if(!a)return!0;const d=t.createWriteStream(r.join(this.storagePath,i));let l=0;return new Promise((e=>{const t=a.download();t.on("data",(e=>{l+=e.length,this.taskQueue.setDownloadedSize(l)})),t.pipe(d),d.on("finish",(()=>e(!0))),d.on("error",(t=>{console.error("Error writing file:",t),e(!1)}))}))}catch(e){return console.error("Error occurred during MEGA file download:",e),!1}}))))))}))}}class ie{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.driveId="",this.refreshTokenPromise=null,this.taskQueue=new w(1),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=5){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getDriveId(){return T(this,void 0,void 0,(function*(){if(this.driveId)return this.driveId;const t=yield this.refreshToken(),r=yield e.post("https://openapi.alipan.com/adrive/v1.0/user/getDriveInfo",{},{headers:{Authorization:`Bearer ${t}`}});return this.driveId=r.data.default_drive_id,this.driveId}))}getFolderIdByPath(t){return T(this,void 0,void 0,(function*(){const r=yield this.refreshToken(),i=yield this.getDriveId();try{try{const o=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(o.data)return o.data.file_id}catch(o){const s=t.split("/").filter((e=>e));let n="",a="root";for(const t of s){n+="/"+t;try{a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:n},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}catch(o){a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:i,parent_file_id:a,name:t,type:"folder",check_name_mode:"refuse"},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}}return a}}catch(e){return console.error("Error getting/creating folder by path:",e),""}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield this.getDriveId(),o=yield this.getFolderIdByPath(this.baseFolder+"/"+t);let s=[],n="",a=!0;for(;a;){const t=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/list",{drive_id:i,parent_file_id:o,marker:n||void 0},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),d=t.data.items||[];s=s.concat(d),n=t.data.next_marker,a=!!n&&100===d.length}return[...new Set(s.map((e=>({name:e.name,size:e.size,type:e.type,modified:e.updated_at}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield this.getDriveId(),o=yield this.getFolderIdByPath(this.baseFolder+"/"+t);return!o||(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/delete",{drive_id:i,file_id:o},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}checkExists(t){var r;return T(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken(),o=yield this.getDriveId(),s=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:o,file_path:t},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}});(null===(r=s.data)||void 0===r?void 0:r.file_id)&&(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/recyclebin/trash",{drive_id:o,file_id:s.data.file_id},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}}))}catch(e){}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"adrive",refresh_token:e});this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("adrive_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"adrive",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://openapi.alipan.com/oauth/authorize?${new URLSearchParams({response_type:"code",client_id:z,redirect_uri:e,grant_type:"authorization_code",scope:"user:base,file:all:write,file:all:read"}).toString()}`}}class oe extends ie{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=yield this.getDriveId(),a=o.substring(0,o.lastIndexOf("/")),d=o.substring(o.lastIndexOf("/")+1);yield this.deleteFileWithoutQueue(o);const l=yield this.getFolderIdByPath(this.baseFolder+"/"+a),c=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:n,parent_file_id:l,name:d,type:"file",check_name_mode:"ignore"},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}),{file_id:h,upload_id:u,part_info_list:p}=c.data,f=yield t.promises.readFile(r.join(this.storagePath,i));return yield fetch(p[0].upload_url,{method:"PUT",body:f,headers:{"Content-Length":t.statSync(r.join(this.storagePath,i)).size.toString()}}),yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/complete",{drive_id:n,file_id:h,upload_id:u},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}),!0}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken(),n=yield this.getDriveId(),a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:n,file_path:this.baseFolder+"/"+i},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}})).data.file_id,d=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/getDownloadUrl",{drive_id:n,file_id:a},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}),l=yield e({url:d.data.url,method:"get",responseType:"stream"});let c=0;const h=t.createWriteStream(r.join(this.storagePath,o+".temp"));return l.data.on("data",(e=>{c+=e.length,this.taskQueue.setDownloadedSize(c)})),l.data.pipe(h),new Promise((e=>{h.on("finish",(()=>{t.renameSync(r.join(this.storagePath,o+".temp"),r.join(this.storagePath,o)),e(!0)})),h.on("error",(t=>{console.error("Error occurred during file download:",t),e(!1)}))}))}catch(e){return console.error("Error downloading file:",e),!1}}))))))}))}}class se{constructor(e,t){this.baseUrl="https://api.pcloud.com",this.config=e,this.thirdpartyRequest=t,this.taskQueue=new w(3),this.baseUrl="2"===e.region?"https://eapi.pcloud.com":"https://api.pcloud.com"}retryOperation(e,t=5){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}checkFolderExists(t,r){return T(this,void 0,void 0,(function*(){try{return 0===(yield e.get(`${this.baseUrl}/listfolder`,{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error checking folder:",e),!1}}))}createFolder(t,r){return T(this,void 0,void 0,(function*(){try{return 0===(yield e.get(`${this.baseUrl}/createfolderifnotexists`,{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error creating folder:",e),!1}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield e.get(`${this.baseUrl}/listfolder`,{params:{access_token:r,path:"/"+t,recursive:0}});return 0!==i.data.result?[]:i.data.metadata.contents.map((e=>({name:e.name,size:e.size||0,type:e.isfolder?"folder":"file",modified:e.modified})))}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield e.get(`${this.baseUrl}/deletefile`,{params:{access_token:r,path:"/"+t}});return 0===i.data.result||(console.error("Error deleting file:",i.data),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.refresh_token}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"pcloud",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://my.pcloud.com/oauth2/authorize?client_id=${O}&response_type=code&redirect_uri=${e}`}}class ne extends se{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=o.split("/").slice(0,-1).join("/");if(!(yield this.checkFolderExists(n,s))){if(!(yield this.createFolder(n,s)))return!1}const a=r.join(this.storagePath,i),d=t.createReadStream(a),l=t.statSync(a),c=r.basename(i),h=yield e({method:"put",url:`${this.baseUrl}/uploadfile`,params:{access_token:s,path:`/${n}`,renew:1,filename:c},data:d,headers:{"Content-Length":l.size,"Content-Type":"application/octet-stream"},maxContentLength:1/0,maxBodyLength:1/0});return 0===h.data.result||(console.error("Error uploading file:",h.data),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken(),n=yield e.get(`${this.baseUrl}/getfilelink`,{params:{access_token:s,path:`/${i}`}});if(0!==n.data.result)return console.error("Error getting file link:",n.data),!1;const a=r.join(this.storagePath,o),d=t.createWriteStream(a),l=`https://${n.data.hosts[0]}${n.data.path}`,c=yield e({method:"get",url:l,responseType:"stream",maxContentLength:1/0,maxBodyLength:1/0});return new Promise((e=>{let t=0;c.data.on("data",(e=>{t+=e.length,this.taskQueue.setDownloadedSize(t)})),c.data.pipe(d),d.on("finish",(()=>{e(!0)})),d.on("error",(t=>{console.error("Error writing file:",t),e(!1)}))}))}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class ae{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new w(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=1){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=this.baseFolder;t&&""!==t.trim()&&(i=i+"/"+t),i=i.replace(/\/+/g,"/"),i.startsWith("/")&&(i=i.substring(1));let o=[],s=0;const n=1e3;for(;;){const t=yield e.get("https://pan.baidu.com/rest/2.0/xpan/file",{params:{method:"list",access_token:r,dir:"/"+i,start:s,limit:n,order:"name",desc:0,web:1,folder:0},headers:{"User-Agent":"pan.baidu.com"}});if(t.status>=300||0!==t.data.errno){console.error("百度网盘API错误:",t.data);break}const a=t.data.list||[];if(0===a.length)break;if(o=o.concat(a),a.length({name:e.server_filename,size:e.size||0,type:e.isdir?"folder":"file",modified:new Date(1e3*e.server_mtime).toISOString(),path:e.path})))}catch(e){return console.error("获取百度网盘文件列表时发生错误:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=this.baseFolder+"/"+t;i=i.replace(/\/+/g,"/"),i.startsWith("/")&&(i=i.substring(1));const o=new URLSearchParams({async:"0",filelist:JSON.stringify(["/"+i])}),s=yield e.post(`https://pan.baidu.com/rest/2.0/xpan/file?method=filemanager&access_token=${r}&opera=delete`,o.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"pan.baidu.com"}});if(0!==s.data.errno)return console.error("百度网盘删除文件API错误:",s.data),-9===s.data.errno?console.error("文件不存在"):111===s.data.errno?console.error("有其他异步任务正在执行"):-7===s.data.errno&&console.error("文件名非法"),!1;const n=s.data.info||[];for(const e of n)if(0!==e.errno)return console.error(`文件删除失败: ${e.path}, 错误码: ${e.errno}`),!1;return!0}catch(e){return console.error("删除文件时发生错误:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"dubox",refresh_token:e});this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("dubox_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dubox",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=${C}&redirect_uri=${e}&scope=basic,netdisk&device_id=119827642&display=page&qrcode=1`}}const de=4194304;class le extends ae{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){var s;let n=null;try{const s=yield this.refreshToken();let a=this.baseFolder+"/"+o;a=a.replace(/\/+/g,"/"),a.startsWith("/")&&(a=a.substring(1));const d=r.join(this.storagePath,i),l=yield this.getFileSize(d),{contentMd5:c,sliceMd5:h,blockList:u}=yield this.calculateFileMd5(d,l),p=new URLSearchParams({path:"/"+a,size:l.toString(),isdir:"0",autoinit:"1",rtype:"3",block_list:JSON.stringify(u),"content-md5":c,"slice-md5":h,local_ctime:Math.floor(Date.now()/1e3).toString(),local_mtime:Math.floor(Date.now()/1e3).toString()}),y=yield e.post(`https://pan.baidu.com/rest/2.0/xpan/file?method=precreate&access_token=${s}`,p.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"pan.baidu.com"}});if(0!==y.data.errno)return console.error("预上传失败:",y.data),-7===y.data.errno?console.error("文件或目录名错误或无权访问"):-10===y.data.errno&&console.error("容量不足"),!1;const g=y.data.uploadid,m=y.data.block_list||[];if(0===m.length)return!0;const k=yield this.getUploadDomain(s,"/"+a,g);if(!k)return console.error("获取上传域名失败"),!1;n=yield t.promises.open(d,"r");for(const t of m){const r=t*de,i=Math.min(de,l-r),o=Buffer.alloc(i),{bytesRead:d}=yield n.read(o,0,i,r);if(0===d)break;const c=o.slice(0,d),h=u[t],p=new f;p.append("file",c,{filename:`chunk_${t}`,contentType:"application/octet-stream",knownLength:c.length});const y=`${k}/rest/2.0/pcs/superfile2?method=upload&access_token=${s}&type=tmpfile&path=${encodeURIComponent("/"+a)}&uploadid=${g}&partseq=${t}`,m=yield e.post(y,p,{headers:Object.assign(Object.assign({"User-Agent":"pan.baidu.com"},p.getHeaders()),{"Content-Length":p.getLengthSync().toString()}),maxContentLength:1/0,maxBodyLength:1/0,timeout:0});if(m.status>=300)throw 31024===m.data.errno?console.error("没有申请上传权限"):31299===m.data.errno?console.error("第一个分片的大小小于4MB"):31364===m.data.errno?console.error("超出分片大小限制"):31363===m.data.errno&&console.error("分片缺失"),new Error(`分片上传失败: ${JSON.stringify(m.data)}`);const v=m.data.md5;v&&v!==h&&console.warn(`分片 ${t} MD5不匹配: 期望 ${h}, 实际 ${v}`)}const v=new URLSearchParams({path:"/"+a,size:l.toString(),isdir:"0",block_list:JSON.stringify(u),uploadid:g,rtype:"3",local_ctime:Math.floor(Date.now()/1e3).toString(),local_mtime:Math.floor(Date.now()/1e3).toString()}),T=yield e.post(`https://pan.baidu.com/rest/2.0/xpan/file?method=create&access_token=${s}`,v.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"pan.baidu.com"}});return 0===T.data.errno||(console.error("创建文件失败:",T.data),-7===T.data.errno?console.error("文件或目录名错误或无权访问"):-8===T.data.errno?console.error("文件或目录已存在"):-10===T.data.errno?console.error("云端容量已满"):10===T.data.errno?console.error("创建文件失败,一般是分片问题"):31190===T.data.errno?console.error("文件不存在,一般是分片上传阶段有问题"):31355===T.data.errno?console.error("参数异常,一般是uploadid参数传的有问题"):31365===T.data.errno&&console.error("文件总大小超限"),!1)}catch(e){return console.error("文件上传过程中发生错误:",(null===(s=e.response)||void 0===s?void 0:s.data)||e.message||e),!1}finally{n&&(yield n.close())}}))))))}))}getUploadDomain(t,r,i){return T(this,void 0,void 0,(function*(){try{const o=yield e.get("https://d.pcs.baidu.com/rest/2.0/pcs/file",{params:{method:"locateupload",appid:"250528",access_token:t,path:r,uploadid:i,upload_version:"2.0"},headers:{"User-Agent":"pan.baidu.com"}});if(0!==o.data.error_code)return console.error("获取上传域名失败:",o.data),null;const s=o.data.servers||[],n=s.find((e=>e.server.startsWith("https://")));return n?n.server:s.length>0?s[0].server:(console.error("没有可用的上传服务器"),null)}catch(e){return console.error("获取上传域名时出错:",e),null}}))}calculateFileMd5(e,r){return T(this,void 0,void 0,(function*(){const i=yield t.promises.open(e,"r");try{const e=g.createHash("md5"),t=[];let o="",s=0;for(;sthis.retryOperation((()=>T(this,void 0,void 0,(function*(){var s,n;this.taskQueue.setDownloadedSize(0);try{const a=yield this.refreshToken();let d,l=this.baseFolder+"/"+i;l=l.replace(/\/+/g,"/"),l.startsWith("/")&&(l=l.substring(1));const c=yield e.get("https://pan.baidu.com/rest/2.0/xpan/file",{params:{method:"list",access_token:a,dir:"/"+l.substring(0,l.lastIndexOf("/")),web:1},headers:{"User-Agent":"pan.baidu.com"}});if(0!==c.data.errno)return console.error("获取文件列表失败:",c.data),!1;const h=l.split("/").pop(),u=null===(s=c.data.list)||void 0===s?void 0:s.find((e=>e.server_filename===h));if(!u)return console.error("文件不存在:",i),!1;const p=yield e.get("https://pan.baidu.com/rest/2.0/xpan/multimedia",{params:{method:"filemetas",access_token:a,fsids:JSON.stringify([u.fs_id]),dlink:1},headers:{"User-Agent":"pan.baidu.com"}});if(0!==p.data.errno||!(null===(n=p.data.list)||void 0===n?void 0:n[0]))return console.error("获取下载链接失败:",p.data),!1;d=p.data.list[0];const f=d.dlink,y=yield e.get(f,{responseType:"stream",params:{access_token:a},headers:{"User-Agent":"pan.baidu.com"}});let g=0;const m=t.createWriteStream(r.join(this.storagePath,o));y.data.on("data",(e=>{g+=e.length,this.taskQueue.setDownloadedSize(g)})),yield new Promise(((e,t)=>{y.data.pipe(m),m.on("finish",(()=>{e()})),m.on("error",t)}));return(yield this.getFileSize(r.join(this.storagePath,o)))===d.size||(console.error("Downloaded file size does not match expected size."),yield t.promises.unlink(r.join(this.storagePath,o)),!1)}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getFileSize(e){return T(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}class ce{constructor(e){this.username=e.username,this.password=e.password,this.url=e.url,this.refreshTokenPromise=null,this.taskQueue=new w(3)}retryOperation(e,t=1){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{return(yield e.get(`${this.url}/list`,{params:{dir:t},auth:{username:this.username,password:this.password}})).data.files.map((e=>({name:e.name,size:e.size||0,type:"file"===e.type?"file":"folder",modified:e.modifiedTime})))||[]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{return(yield e.delete(`${this.url}/delete`,{params:{dir:t.split("/").slice(0,-1).join("/")||"",filename:t.split("/").pop()},auth:{username:this.username,password:this.password}})).data.success}catch(e){return console.error("Error deleting file:",e),!1}}))}}const he=i(o.pipeline);class ue extends ce{constructor(e,t){super(e),this.storagePath=t}getAuthHeader(){return`Basic ${btoa(`${this.username}:${this.password}`)}`}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{o.split("/").pop();const s=o.substring(0,o.lastIndexOf("/"))||"",n=t.createReadStream(r.join(this.storagePath,i)),a=new f;a.append("file",n);const d=yield e.post(`${this.url}/upload?dir=${encodeURIComponent(s)}`,a,{headers:Object.assign(Object.assign({},a.getHeaders()),{Authorization:this.getAuthHeader()}),maxContentLength:1/0,maxBodyLength:1/0});return!(d.status>=300)||(console.error("Error occurred during file upload:",d),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=i.split("/").pop()||"",n=i.substring(0,i.lastIndexOf("/"))||"",a=t.createWriteStream(r.join(this.storagePath,o)),d=yield e({url:`${this.url}/download`,method:"GET",params:{dir:n,filename:s},headers:{Authorization:this.getAuthHeader()},maxContentLength:1/0,maxBodyLength:1/0,responseType:"stream"});if(d.status>=300)return console.error("Error occurred during file download:",d),a.destroy(),t.existsSync(r.join(this.storagePath,o))&&t.unlinkSync(r.join(this.storagePath,o)),!1;let l=0;return d.data.on("data",(e=>{l+=e.length,this.taskQueue.setDownloadedSize(l)})),yield he(d.data,a),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class pe{constructor(e,t){this.baseUrl="https://proapi.115.com",this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new w(1),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getUploadCredentials(t){return T(this,void 0,void 0,(function*(){try{const r=yield e.get(`${this.baseUrl}/open/upload/get_token`,{headers:{Authorization:`Bearer ${t}`}});return r.status>=300||!r.data.state?(console.error("Error getting upload credentials:",r.data),null):r.data.data}catch(e){return console.error("Error occurred during get upload credentials:",e),null}}))}generateOSSPolicy(e,t,r=new Date(Date.now()+36e5)){const i={expiration:r.toISOString(),conditions:[{bucket:e},{key:t},["starts-with","$success_action_status","2"],["content-length-range",0,1073741824]]};return JSON.stringify(i)}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token;if(!e)throw new Error("No refresh token available");let t=yield this.thirdpartyRequest.refreshThirdToken({provider:"yiyiwu",refresh_token:e});if(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+18e5,!t.data.refresh_token)throw new Error("No refresh token returned");this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("yiyiwu_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"yiyiwu",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://passportapi.115.com/open/authorize?client_id=${P}&response_type=code&redirect_uri=${e}`}}class fe extends pe{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(e,t){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){var i;try{const i=yield this.refreshToken();let o=this.baseFolder+"/"+t;o.startsWith("/")||(o="/"+o);let s=r.dirname(o),n=yield this.getFolderInfo(s,!0),a="0";if(n)a=n.file_id;else{let e=yield this.createFolder(s);if(!e)return console.error("Failed to create folder:",s),!1;a=e}const d=r.join(this.storagePath,e),l=yield this.getFileSize(d),c=yield this.calculateFileSha1(d),h=yield this.calculatePreSha1(d),u=r.basename(t);yield this.deleteFileWithoutQueue(t);let p=yield this.initializeUpload(a,u,l,c,h,i);if(!p)return console.error("Failed to initialize upload"),!1;if((6===p.status||7===p.status||8===p.status)&&(p=yield this.handleSecondAuth(a,p,d,u,l,c,h,i),!p))return console.error("Second authentication failed"),!1;if(2===p.status)return console.info(`File ${e} uploaded successfully via instant upload.`),!0;const f=yield this.getUploadCredentials(i);if(!f)return console.error("Failed to get upload credentials"),!1;return(yield this.uploadToObjectStorage(d,p,f))?(console.info(`File ${e} uploaded successfully.`),!0):(console.error("Failed to upload to object storage"),!1)}catch(e){return console.error("Error occurred during file upload:",(null===(i=e.response)||void 0===i?void 0:i.data)||e.message||e),!1}}))))))}))}calculateFileSha1(e){return T(this,void 0,void 0,(function*(){return new Promise(((r,i)=>{const o=g.createHash("sha1"),s=t.createReadStream(e);s.on("data",(e=>{o.update(e)})),s.on("end",(()=>{r(o.digest("hex"))})),s.on("error",(e=>{i(e)}))}))}))}calculatePreSha1(e){return T(this,void 0,void 0,(function*(){return new Promise(((r,i)=>{const o=g.createHash("sha1"),s=t.createReadStream(e,{start:0,end:131071});s.on("data",(e=>{o.update(e)})),s.on("end",(()=>{r(o.digest("hex"))})),s.on("error",(e=>{i(e)}))}))}))}handleSecondAuth(e,r,i,o,s,n,a,d){return T(this,void 0,void 0,(function*(){try{if(!r.sign_check)return console.error("No sign_check provided for second authentication"),null;const[l,c]=r.sign_check.split("-"),h=parseInt(l),u=parseInt(c),p=Buffer.alloc(u-h+1),f=yield t.promises.open(i,"r");try{yield f.read(p,0,p.length,h);const t=g.createHash("sha1");t.update(p);const i=t.digest("hex").toUpperCase();return yield this.initializeUpload(e,o,s,n,a,d,r.sign_key,i,r.pick_code)}finally{yield f.close()}}catch(e){return console.error("Error during second authentication:",e),null}}))}calculateOSSSignature(e,t){const r=Buffer.from(t).toString("base64");return g.createHmac("sha1",e).update(r).digest("base64")}uploadToObjectStorage(i,o,s){var n;return T(this,void 0,void 0,(function*(){try{const n=s.endpoint,a=o.bucket,d=o.object;let l;if(n.includes(a))l=n;else{l=`https://${a}.${n.replace(/^https?:\/\//,"")}`}const c=this.generateOSSPolicy(a,d),h=this.calculateOSSSignature(s.AccessKeySecret,c),u=Buffer.from(c).toString("base64"),p=new f;if(p.append("key",d),p.append("policy",u),p.append("OSSAccessKeyId",s.AccessKeyId),p.append("signature",h),p.append("x-oss-security-token",s.SecurityToken),p.append("success_action_status","200"),o.callback&&o.callback.callback){const e=Buffer.from(o.callback.callback).toString("base64");if(p.append("callback",e),o.callback.callback_var){const e=JSON.parse(o.callback.callback_var);for(const[t,r]of Object.entries(e))p.append(t,String(r))}}const y=t.createReadStream(i);p.append("file",y,r.basename(i));const g=yield e.post(l,p,{headers:Object.assign({},p.getHeaders()),maxContentLength:1/0,maxBodyLength:1/0});return 200===g.status||204===g.status||(console.error("Upload failed with status:",g.status),!1)}catch(e){return console.error("Error uploading file via REST API:",(null===(n=e.response)||void 0===n?void 0:n.data)||e.message||e),!1}}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{let s=this.baseFolder+"/"+i;s=s.replace(/\/+/g,"/"),s.startsWith("/")||(s="/"+s);const n=yield this.getFolderInfo(s,!1);if(!n||!n.pick_code)return console.error("Failed to get file info or pick_code for:",i),!1;const a=yield this.getFileDownloadUrl(n.pick_code);if(!a)return console.error("Failed to get download URL for:",i),!1;const d=yield e.get(a.url,{responseType:"stream"});let l=0;const c=t.createWriteStream(r.join(this.storagePath,o));return d.data.on("data",(e=>{l+=e.length,this.taskQueue.setDownloadedSize(l)})),yield new Promise(((e,t)=>{d.data.pipe(c),c.on("finish",(()=>{e()})),c.on("error",t)})),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();(t=this.baseFolder+"/"+t).startsWith("/")||(t="/"+t);let i=[],o=0;const s=1150;let n=!0,a=yield this.getFolderInfo(t,!0),d="";if(a)d=a.file_id;else{let e=yield this.createFolder(t);if(!e)return console.error("Failed to create folder:",t),[];d=e}if(!d)return console.error("Failed to get or create folder ID:",t),[];let l=d;for(;n;){const t={offset:o,limit:s,cur:1,show_dir:1};l&&(t.cid=l);const a=yield e.get(`${this.baseUrl}/open/ufile/files`,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"},params:t});if(a.status>=300)break;const d=a.data.data||[];i=i.concat(d),d.length({name:e.fn,size:e.fs||0,type:"0"===e.fc?"folder":"file",modified:new Date(1e3*e.upt).toISOString()})))}catch(e){return console.error("Error occurred during file list:",e),[]}}))}getFileDownloadUrl(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=new f;i.append("pick_code",t);const o=yield e.post(`${this.baseUrl}/open/ufile/downurl`,i,{headers:Object.assign({Authorization:`Bearer ${r}`},i.getHeaders())});if(o.status>=300)return console.error("Error getting download URL:",o.data),null;const s=o.data.data,n=Object.keys(s)[0];return n&&s[n]?s[n].url:(console.error("No file data found in download URL response"),null)}catch(e){return console.error("Error occurred during get download URL:",e),null}}))}initializeUpload(t,r,i,o,s,n,a,d,l){return T(this,void 0,void 0,(function*(){try{const c=new f;c.append("file_name",r),c.append("file_size",i.toString()),t?c.append("target","U_1_"+t):c.append("target","U_1_0"),c.append("fileid",o),c.append("preid",s),c.append("topupload","0"),l&&c.append("pick_code",l),a&&c.append("sign_key",a),d&&c.append("sign_val",d);const h=yield e.post(`${this.baseUrl}/open/upload/init`,c,{headers:Object.assign({Authorization:`Bearer ${n}`},c.getHeaders())});return h.status>=300||!h.data.state?(console.error("Error initializing upload:",h.data),null):h.data.data}catch(e){return console.error("Error occurred during upload initialization:",e),null}}))}createFolder(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=t.replace(/^\/+|\/+$/g,"");if(!i)return"";const o=i.split("/");let s="",n="0";for(const t of o){s=s?`${s}/${t}`:t;const i=yield this.getFolderInfo(s,!0);if(i&&i.file_id)n=i.file_id;else{const i=new f;i.append("pid",n),i.append("file_name",t);const o=yield e.post(`${this.baseUrl}/open/folder/add`,i,{headers:Object.assign({Authorization:`Bearer ${r}`},i.getHeaders())});if(o.status>=300||!o.data.state)return console.error("Error creating folder:",o.data),"";n=o.data.data.file_id}}return n}catch(e){return console.error("Error occurred during folder creation:",e),""}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();t=this.baseFolder+"/"+t;let i=yield this.getFolderInfo(t,!1);if(!i)return!0;let o=new f;o.append("file_ids",i.file_id);const s=yield e.post(`${this.baseUrl}/open/ufile/delete`,o,{headers:Object.assign({Authorization:`Bearer ${r}`},o.getHeaders())});return!(s.status>=300||!s.data.state)||(console.error("Error deleting file:",s),!1)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}getFolderInfo(t,r){return T(this,void 0,void 0,(function*(){if(""===t||"/"===t)return{file_id:"0"};t.startsWith("/")||(t="/"+t);try{const r=yield this.refreshToken();let i=new f;i.append("path",t);const o=yield e.post(`${this.baseUrl}/open/folder/get_info`,i,{headers:Object.assign(Object.assign({},i.getHeaders()),{Authorization:`Bearer ${r}`})});return o.status>=300||!o.data.state||0===o.data.data.length?(console.error("Error getting file info:",o.data),null):o.data.data}catch(e){return console.error("Error occurred during get file info:",e),null}}))}getFileSize(e){return T(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}const ye=["book","config","cover","font"];class ge{constructor(e,t,r,i){this.type=e,this.storagePath=r,this.remote="dropbox"===e?new D(t,r,i):"microsoft"===e?new M(t,r,i):"google"===e?new N(t,r,i):"microsoft_exp"===e?new M(Object.assign(Object.assign({},t),{isExp:!0}),r,i):"google_exp"===e?new N(Object.assign(Object.assign({},t),{isExp:!0}),r,i):"s3compatible"===e?new q(t,r):"webdav"===e?new J(t,r):"docker"===e?new ue(t,r):"ftp"===e?new j(t,r):"sftp"===e?new Y(t,r):"boxnet"===e?new ee(t,r,i):"mega"===e?new re(t,r):"adrive"===e?new oe(t,r,i):"pcloud"===e?new ne(t,r,i):"dubox"===e?new le(t,r,i):"yandex"===e?new X(t,r,i):"yiyiwu"===e?new fe(t,r,i):new G}downloadFile(e,i,o){return T(this,void 0,void 0,(function*(){if(t.existsSync(r.join(this.storagePath+"/"+o))||t.mkdirSync(r.join(this.storagePath+"/"+o)),"cover"!==o){if(!(yield this.listFiles(o)).find((t=>e.indexOf(t)>-1)))return!1}return yield this.remote.downloadFile(o+"/"+e,o+"/"+i)}))}uploadFile(e,t,r){return T(this,void 0,void 0,(function*(){return yield this.remote.uploadFile(r+"/"+e,r+"/"+t)}))}deleteFile(e,t){return T(this,void 0,void 0,(function*(){return!!(yield this.listFiles(t)).find((t=>e.indexOf(t)>-1))&&(yield this.remote.deleteFile(t+"/"+e))}))}isExist(e,t){return T(this,void 0,void 0,(function*(){return(yield this.listFiles(t)).find((t=>-1!==t.indexOf(e)))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return yield this.remote.listFiles(e)}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){return yield this.remote.listFileInfos(e)}))}downloadAllFiles(){return T(this,void 0,void 0,(function*(){for(let e of ye){let t=yield this.listFiles(e);for(let r of t)yield this.downloadFile(r,r,e)}}))}authToken(e){return T(this,void 0,void 0,(function*(){return yield this.remote.authToken(e)}))}getAuthUrl(e){return this.remote.getAuthUrl(e)}getStats(){return this.remote.taskQueue.getStats()}resetCounters(){this.remote.taskQueue.resetCounters()}getDownloadedSize(){return this.remote.taskQueue.getDownloadedSize()}}const me={notes:"SELECT * FROM notes WHERE key = ?",bookmarks:"SELECT * FROM bookmarks WHERE key = ?",books:"SELECT * FROM books WHERE key = ?",plugins:"SELECT * FROM plugins WHERE key = ?",words:"SELECT * FROM words WHERE key = ?"},ke={notes:"SELECT * FROM notes WHERE bookKey = ?",bookmarks:"SELECT * FROM bookmarks WHERE bookKey = ?",words:"SELECT * FROM words WHERE bookKey = ?",books:"SELECT * FROM books WHERE key = ?"},ve={notes:"DELETE FROM notes WHERE bookKey = ?",bookmarks:"DELETE FROM bookmarks WHERE bookKey = ?",words:"DELETE FROM words WHERE bookKey = ?"};function Te(e){for(const t in e)e.hasOwnProperty(t)&&(e[`temp-${t}`]=e[t]);return e}const be={notes:e=>{let t=Object.assign({},e);return t.date=JSON.parse(e.date),t.tag=JSON.parse(e.tag),t},bookmarks:e=>e,books:e=>e,plugins:e=>{let t=Object.assign({},e);return e.autoValue||delete t.autoValue,e.langList?t.langList=JSON.parse(e.langList):delete t.langList,e.voiceList?t.voiceList=JSON.parse(e.voiceList):delete t.voiceList,t.config=JSON.parse(e.config),t},words:e=>{let t=Object.assign({},e);return t.date=JSON.parse(e.date),t}};var Fe={sqlStatement:{createTableStatement:Te({notes:'\n CREATE TABLE IF NOT EXISTS "notes" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "date" object,\n "chapter" text,\n "chapterIndex" integer,\n "text" text,\n "cfi" text,\n "range" text,\n "notes" text,\n "percentage" text,\n "color" integer,\n "tag" array\n )\n ',bookmarks:'\n CREATE TABLE IF NOT EXISTS "bookmarks" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "cfi" text,\n "label" text,\n "percentage" text,\n "chapter" text\n );\n ',books:'\n CREATE TABLE IF NOT EXISTS "books" (\n "key" text PRIMARY KEY,\n "name" text,\n "author" text,\n "description" text,\n "md5" text,\n "cover" text,\n "format" text,\n "publisher" text,\n "size" integer,\n "page" integer,\n "path" text,\n "charset" text\n );\n ',plugins:'\n CREATE TABLE IF NOT EXISTS "plugins" (\n "key" text PRIMARY KEY,\n "type" text,\n "displayName" text,\n "icon" text,\n "version" text,\n "config" object,\n "autoValue" string,\n "langList" text,\n "voiceList" text,\n "scriptSHA256" text,\n "script" text\n );\n ',words:'\n CREATE TABLE IF NOT EXISTS "words" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "date" object,\n "word" text,\n "chapter" text\n );\n '}),getAllStatement:Te({notes:"SELECT * FROM notes",bookmarks:"SELECT * FROM bookmarks",books:"SELECT * FROM books",plugins:"SELECT * FROM plugins",words:"SELECT * FROM words"}),getPagedStatement:Te({notes:"SELECT * FROM notes LIMIT ? OFFSET ?",bookmarks:"SELECT * FROM bookmarks LIMIT ? OFFSET ?",books:"SELECT * FROM books LIMIT ? OFFSET ?",plugins:"SELECT * FROM plugins LIMIT ? OFFSET ?",words:"SELECT * FROM words LIMIT ? OFFSET ?"}),getCountStatement:Te({notes:"SELECT COUNT(*) as count FROM notes",bookmarks:"SELECT COUNT(*) as count FROM bookmarks",books:"SELECT COUNT(*) as count FROM books",plugins:"SELECT COUNT(*) as count FROM plugins",words:"SELECT COUNT(*) as count FROM words"}),saveStatement:Te({notes:"INSERT OR REPLACE INTO notes (key, bookKey, chapter, chapterIndex, text, cfi, range, notes, date, percentage, color, tag) VALUES (@key, @bookKey, @chapter, @chapterIndex, @text, @cfi, @range, @notes, @date, @percentage, @color, @tag)",bookmarks:"INSERT OR REPLACE INTO bookmarks (key, bookKey, cfi, label, percentage, chapter) VALUES (@key, @bookKey, @cfi, @label, @percentage, @chapter)",books:"INSERT OR REPLACE INTO books (key, name, author, description, md5, cover, format, publisher, size, page, path, charset) VALUES (@key, @name, @author, @description, @md5, @cover, @format, @publisher, @size, @page, @path, @charset)",plugins:"INSERT OR REPLACE INTO plugins (key, type, displayName, icon, version, config, autoValue, langList, voiceList, scriptSHA256, script) VALUES (@key, @type, @displayName, @icon, @version, @config, @autoValue, @langList, @voiceList, @scriptSHA256, @script)",words:"INSERT OR REPLACE INTO words (key, bookKey, date, word, chapter) VALUES (@key, @bookKey, @date, @word, @chapter)"}),deleteAllStatement:Te({notes:"DELETE FROM notes",bookmarks:"DELETE FROM bookmarks",books:"DELETE FROM books",plugins:"DELETE FROM plugins",words:"DELETE FROM words"}),updateStatement:Te({notes:"UPDATE notes SET bookKey = @bookKey, chapter = @chapter, chapterIndex = @chapterIndex, text = @text, cfi = @cfi, range = @range, notes = @notes, date = @date, percentage = @percentage, color = @color, tag = @tag WHERE key = @key",bookmarks:"UPDATE bookmarks SET bookKey = @bookKey, cfi = @cfi, label = @label, percentage = @percentage, chapter = @chapter WHERE key = @key",books:"UPDATE books SET name = @name, author = @author, description = @description, md5 = @md5, cover = @cover, format = @format, publisher = @publisher, size = @size, page = @page, path = @path, charset = @charset WHERE key = @key",plugins:"UPDATE plugins SET type = @type, displayName = @displayName, icon = @icon, version = @version, config = @config, autoValue = @autoValue, langList = @langList, voiceList = @voiceList, scriptSHA256 = @scriptSHA256, script = @script WHERE key = @key",words:"UPDATE words SET bookKey = @bookKey, date = @date, word = @word, chapter = @chapter WHERE key = @key"}),deleteStatement:Te({notes:"DELETE FROM notes WHERE key = ?",bookmarks:"DELETE FROM bookmarks WHERE key = ?",books:"DELETE FROM books WHERE key = ?",plugins:"DELETE FROM plugins WHERE key = ?",words:"DELETE FROM words WHERE key = ?"}),dropStatement:Te({notes:"DROP TABLE IF EXISTS notes",bookmarks:"DROP TABLE IF EXISTS bookmarks",books:"DROP TABLE IF EXISTS books",plugins:"DROP TABLE IF EXISTS plugins",words:"DROP TABLE IF EXISTS words"}),getStatement:Te(me),getByBookKeyStatement:Te(ke),getByBookKeysStatement:Te({notes:e=>`SELECT * FROM notes WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,bookmarks:e=>`SELECT * FROM bookmarks WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,words:e=>`SELECT * FROM words WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,books:e=>`SELECT * FROM books WHERE key IN (${e.map((()=>"?")).join(",")})`}),deleteByBookKeyStatement:Te(ve)},jsonToSqlite:Te({notes:e=>{let t=Object.assign({},e);return t.date=JSON.stringify(e.date),t.tag=JSON.stringify(e.tag),t},bookmarks:e=>e,books:e=>{let t=Object.assign({},e);return t.page=e.page||0,t},plugins:e=>{let t=Object.assign({},e);return e.autoValue||(t.autoValue=null),e.langList?t.langList=JSON.stringify(e.langList):t.langList=null,e.voiceList?t.voiceList=JSON.stringify(e.voiceList):t.voiceList=null,t.config=JSON.stringify(e.config),t},words:e=>{let t=Object.assign({},e);return t.date=JSON.stringify(e.date),t}}),sqliteToJson:Te(be)};const we=S,Se=E;class Ee{constructor(e,t){this.TokenService=e,this.ConfigService=t,this.baseUrl="china"===t.getItem("serverRegion")?Se:we,this.refreshToken="",this.accessToken="",this.streamPromise=null,this.expiresAt=0}refreshUserToken(){return T(this,void 0,void 0,(function*(){if(this.refreshToken=yield this.TokenService.getToken("refresh_token"),!this.refreshToken)return{code:401,message:"refresh token not found"};let t=(yield e.post(this.baseUrl+"/api/v1/public/user/refresh_token",{refresh_token:this.refreshToken})).data;return 200===t.code&&(yield this.TokenService.setToken("access_token",t.data.access_token),yield this.TokenService.setToken("refresh_token",t.data.refresh_token),yield this.TokenService.setToken("expires_at",(1e3*t.data.expires_at).toString()),this.accessToken=t.data.access_token,this.refreshToken=t.data.refresh_token,this.expiresAt=1e3*t.data.expires_at),t}))}requestWithRetry(e){return T(this,void 0,void 0,(function*(){return Ee.requestQueue||(Ee.requestQueue=[]),new Promise(((t,r)=>{Ee.requestQueue.push({config:e,resolve:t,reject:r}),Ee.processingQueue||this.processQueue()}))}))}isTokenValid(){return T(this,void 0,void 0,(function*(){if(this.accessToken||(this.accessToken=(yield this.TokenService.getToken("access_token"))||""),!this.expiresAt){const e=yield this.TokenService.getToken("expires_at");this.expiresAt=e?parseInt(e):(new Date).getTime()+31536e9}return""!==this.accessToken&&this.expiresAt>(new Date).getTime()+6e4}))}processQueue(){return T(this,void 0,void 0,(function*(){if(!Ee.processingQueue){Ee.processingQueue=!0;try{for(;Ee.requestQueue.length>0;){const e=Ee.requestQueue.shift();try{let t=yield this.executeRequest(e.config);e.resolve(t)}catch(t){e.reject(t)}}}finally{Ee.processingQueue=!1}}}))}executeRequest(t){return T(this,void 0,void 0,(function*(){try{try{this.accessToken=(yield this.TokenService.getToken("access_token"))||""}catch(e){console.error("Error get Token:",e)}let r="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);if(t.baseURL=this.baseUrl,t.headers)t.headers.Authorization="Bearer "+this.accessToken,t.headers["X-Request-ID"]=r;else{let e=this.ConfigService.getItem("appVersion"),i=this.ConfigService.getItem("appPlatform");t.headers={Authorization:"Bearer "+this.accessToken,"X-Request-ID":r,"X-App-Version":e||"1.0.0","X-App-Platform":i||"web"}}let i=(yield e(t)).data;if(402===i.code){let r=yield this.refreshUserToken();if(200===r.code){return t.headers=t.headers||{},t.headers.Authorization="Bearer "+this.accessToken,(yield e(t)).data}return r}return 200!==i.code&&this.ConfigService.setItem("errorLog",this.ConfigService.getItem("errorLog")+"\n"+JSON.stringify({request:t.data,url:t.url,result:i,requestID:r})),i}catch(e){return console.error("Request execution error:",e),{code:503,message:"network error",data:null}}}))}requestWithStream(e,t,r){return T(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>T(this,void 0,void 0,(function*(){try{(yield this.isTokenValid())||(yield this.refreshUserToken());let i=this.accessToken||"",o="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((s,n)=>{let a=this.ConfigService.getItem("appVersion"),d=this.ConfigService.getItem("appPlatform");const l=new r(this.baseUrl+e.url,{headers:{"Content-Type":"application/json",Authorization:"Bearer "+i,"X-Request-ID":o,"X-App-Version":a||"1.0.0","X-App-Platform":d||"web"},method:e.method,body:JSON.stringify(e.data),pollingInterval:0});l.addEventListener("open",(()=>{console.info("Connection to OpenAI established.")})),l.addEventListener("message",(e=>T(this,void 0,void 0,(function*(){if(!e.data)return;const r=JSON.parse(e.data);r.done?(l.close(),s(r)):t(r.data)})))),l.addEventListener("error",(e=>{if(console.info("Error:",e),!e.data)return;const t=JSON.parse(e.data);s(t),l.close()}))}))}finally{this.streamPromise=null}})))()),this.streamPromise}))}requestWithFetch(e,t){return T(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>T(this,void 0,void 0,(function*(){try{(yield this.isTokenValid())||(yield this.refreshUserToken());let r=this.accessToken||"",i="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((o,s)=>T(this,void 0,void 0,(function*(){let s=this.ConfigService.getItem("appVersion"),n=this.ConfigService.getItem("appPlatform");var a=new m(this.baseUrl+e.url,{headers:{"Content-Type":"text/plain",Authorization:"Bearer "+r,"X-Request-ID":i,"X-App-Version":s||"1.0.0","X-App-Platform":n||"web"},payload:JSON.stringify(e.data),method:"POST"});a.addEventListener("message",(e=>T(this,void 0,void 0,(function*(){if(!e.data)return;const r=JSON.parse(e.data);r.done?(a.close(),o(r)):t(r.data)})))),a.addEventListener("open",(e=>{console.info(e,"Connection to OpenAI established.")})),a.addEventListener("error",(e=>{if(console.error(e,"Error occurred while connecting to OpenAI"),!e.data)return;const t=JSON.parse(e.data);o(t),a.close()}))}))))}finally{this.streamPromise=null}})))()),this.streamPromise}))}}Ee.processingQueue=!1,Ee.requestQueue=[];class _e extends Ee{constructor(e,t){super(e,t)}encryptToken(e){return T(this,void 0,void 0,(function*(){let t=e.token,r=F.encode(t),{extracted:i,remaining:o}=function(e){let t="",r="",i=[],o=1;for(;o<=e.length;)i.push(o-1),o*=2;for(let o=0;o-1){let r=t.split("#");e.encrypted_token=r[1]}const r={method:"post",url:"/api/v1/pro/thirdparty/decrypt_token",data:e};let i=yield this.requestWithRetry(r);if(t.indexOf("#")>-1&&i.data&&i.data.token){let e=t.split("#"),r=function(e,t){let r="",i=[],o=1,s=e.length+t.length;for(;o<=s;)i.push(o-1),o*=2;let n=0,a=0;for(let o=0;o-1&&r.splice(i,1),this.setAllListConfig(r,t)}static setListConfig(e,t){let r=this.getAllListConfig(t);const i=r.indexOf(e);i>-1?(r.splice(i,1),r.unshift(e)):r.unshift(e),this.setAllListConfig(r,t)}static setAllListConfig(e,t,r=!0){this.setItem(t,JSON.stringify(e)),r&&this.setSyncRecord({type:"config",catergory:"listConfig",name:"general",key:t},{operation:"update",time:Date.now()})}static setObjectConfig(e,t,r,i=!0){let o=this.getAllObjectConfig(r);o[e]=t,i&&this.setSyncRecord({type:"config",catergory:"objectConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllObjectConfig(o,r)}static getObjectConfig(e,t,r){return this.getAllObjectConfig(t)[e]||r}static getAllObjectConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static setAllObjectConfig(e,t){this.setItem(t,JSON.stringify(e))}static deleteObjectConfig(e,t){let r=this.getAllObjectConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"objectConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllObjectConfig(r,t)}static getAllMapConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static getMapConfig(e,t){return this.getAllMapConfig(t)[e]||[]}static setAllMapConfig(e,t){this.setItem(t,JSON.stringify(e))}static setMapConfig(e,t,r){let i=this.getAllMapConfig(r);void 0===i[e]&&(i[e]=[]),t&&-1===i[e].indexOf(t)&&i[e].unshift(t),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(i,r)}static setOneMapConfig(e,t,r,i=!0){let o=this.getAllMapConfig(r);o[e]=t,i&&this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(o,r)}static deleteFromMapConfig(e,t,r){let i=this.getAllMapConfig(r),o=i[e].indexOf(t);i[e].splice(o,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(i,r)}static deleteFromAllMapConfig(e,t){let r=this.getAllMapConfig(t);Object.keys(r).forEach((i=>{let o=r[i].indexOf(e);o>-1&&(r[i].splice(o,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:i},{operation:"update",time:Date.now()}))})),this.setAllMapConfig(r,t)}static deleteMapConfig(e,t){let r=this.getAllMapConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllMapConfig(r,t)}static getFromAllMapConfig(e,t){let r=this.getAllMapConfig(t),i=[];for(let t in r)r[t]&&r[t].indexOf(e)>-1&&i.push(t);return i}static getSyncRecord(e){return JSON.parse(this.getItem("syncRecord")||"{}")[e.type+"."+e.catergory+"."+e.name+"."+e.key]||{operation:"",time:0}}static getAllSyncRecord(){return JSON.parse(this.getItem("syncRecord")||"{}")}static flushSyncRecords(){if(0===Object.keys(this.pendingSyncRecords).length)return;let e=JSON.parse(this.getItem("syncRecord")||"{}");Object.assign(e,this.pendingSyncRecords),this.setItem("syncRecord",JSON.stringify(e)),this.pendingSyncRecords={},this.syncRecordTimer=null}static setSyncRecord(e,t){const r=e.type+"."+e.catergory+"."+e.name+"."+e.key;this.pendingSyncRecords[r]=t,null!==this.syncRecordTimer&&clearTimeout(this.syncRecordTimer),this.syncRecordTimer=setTimeout((()=>{this.flushSyncRecords()}),this.DEBOUNCE_DELAY)}static setAllSyncRecord(e){this.setItem("syncRecord",JSON.stringify(e))}}).pendingSyncRecords={},Ce.syncRecordTimer=null,Ce.DEBOUNCE_DELAY=1e3,Ce);var Oe,Ae,Ce;let Pe;const Ie=new Uint8Array(16);function $e(){if(!Pe&&(Pe="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Pe))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Pe(Ie)}const ze=[];for(let e=0;e<256;++e)ze.push((e+256).toString(16).slice(1));var Le={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Qe(e,t,r){if(Le.randomUUID&&!t&&!e)return Le.randomUUID();const i=(e=e||{}).random||(e.rng||$e)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=i[e];return t}return function(e,t=0){return ze[e[t+0]]+ze[e[t+1]]+ze[e[t+2]]+ze[e[t+3]]+"-"+ze[e[t+4]]+ze[e[t+5]]+"-"+ze[e[t+6]]+ze[e[t+7]]+"-"+ze[e[t+8]]+ze[e[t+9]]+"-"+ze[e[t+10]]+ze[e[t+11]]+ze[e[t+12]]+ze[e[t+13]]+ze[e[t+14]]+ze[e[t+15]]}(i)}const De=new k;class je{static encrypt(e,t){let r="";for(let i=0;i"json"===e?"application/json":["jpg","jpeg","png","gif","bmp"].includes(e)?"image/"+e:"zip"===e?"application/zip":"epub"===e?"application/epub+zip":"txt"===e?"text/plain":"pdf"===e?"application/pdf":"mobi"===e?"application/x-mobipocket-ebook":"azw3"===e||"azw"===e?"application/vnd.amazon.ebook":"cbz"===e?"application/x-cbz":"cbr"===e?"application/x-cbr":"cbt"===e?"application/x-cbt":"cb7"===e?"application/x-cb7":"fb2"===e?"application/x-fictionbook+xml":"html"===e?"text/html":"css"===e?"text/css":"js"===e?"application/javascript":"xml"===e?"application/xml":"xhtml"===e?"application/xhtml+xml":"opf"===e?"application/oebps-package+xml":"ncx"===e?"application/x-dtbncx+xml":"mp3"===e?"audio/mpeg":"wav"===e?"audio/wav":"ogg"===e?"audio/ogg":"mp4"===e?"video/mp4":"webm"===e?"video/webm":"avi"===e?"video/x-msvideo":"wmv"===e?"video/x-ms-wmv":"flv"===e?"video/x-flv":"m3u8"===e?"application/x-mpegURL":"ts"===e?"video/MP2T":"3gp"===e?"video/3gpp":"3g2"===e?"video/3gpp2":"db"===e?"application/x-sqlite3":void 0,F={_chars:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",encode(e){if("string"!=typeof e)throw new Error("Input must be a string");let t="",r=0;const i=this._stringToUtf8Bytes(e),o=i.length;for(;r>2,d=(3&e)<<4|s>>4,l=(15&s)<<2|n>>6,c=63&n;t+=this._chars.charAt(a),t+=this._chars.charAt(d),t+=r-2>=o?"=":this._chars.charAt(l),t+=r-1>=o?"=":this._chars.charAt(c)}return t},decode(e){if("string"!=typeof e)throw new Error("Input must be a string");for(e=e.replace(/[^A-Za-z0-9+/]/g,"");e.length%4!=0;)e+="=";const t=[];let r=0;const i=e.length;for(;r>4,d=(15&o)<<4|s>>2,l=(3&s)<<6|n;t.push(a),-1!==s&&t.push(d),-1!==n&&t.push(l)}return this._utf8BytesToString(t)},_stringToUtf8Bytes(e){const t=[];for(let r=0;r>6),t.push(128|63&i);else if(55296==(64512&i)&&r+1>18),t.push(128|e>>12&63),t.push(128|e>>6&63),t.push(128|63&e)}else t.push(239,191,189),r--}else t.push(224|i>>12),t.push(128|i>>6&63),t.push(128|63&i)}return t},_utf8BytesToString(e){let t="",r=0;for(;r65535){const r=e-65536;t+=String.fromCharCode(55296|r>>10),t+=String.fromCharCode(56320|1023&r)}else t+=String.fromCharCode(e)}else t+="�"}else t+="�"}return t},encodeURL(e){return this.encode(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")},decodeURL(e){for(e=e.replace(/-/g,"+").replace(/_/g,"/");e.length%4;)e+="=";return this.decode(e)}};class w{constructor(e){this.queue=[],this.runningTasks=0,this.totalTasks=0,this.completedTasks=0,this.hasFailedTasks=!1,this.downloadedSize=0,this.maxConcurrency=e}addTask(e){return T(this,void 0,void 0,(function*(){return this.totalTasks++,new Promise(((t,r)=>{if(this.hasFailedTasks)return void r(new Error("Task queue has failed tasks. No new tasks can be added."));const i=()=>T(this,void 0,void 0,(function*(){try{this.runningTasks++;const r=yield e();return this.completedTasks++,t(r),r}catch(e){throw this.completedTasks++,r(e),e}finally{this.runningTasks--,this.runNext()}}));this.runningTasks0&&this.runningTasks=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=[],o=!0,s=null;for(;o;){let n;n=s?yield e.post("https://api.dropboxapi.com/2/files/list_folder/continue",{cursor:s},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}):yield e.post("https://api.dropboxapi.com/2/files/list_folder",{path:"/"+t,limit:2e3},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});const a=n.data.entries||[];i=i.concat(a),o=n.data.has_more,s=n.data.cursor}return[...new Set(i.map((e=>({name:e.name,size:e.size||0,type:e[".tag"],modified:e.client_modified}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();yield e.post("https://api.dropboxapi.com/2/files/delete_v2",{path:"/"+t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"dropbox",refresh_token:e});return t.data.access_token?(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token):""}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dropbox",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://www.dropbox.com/oauth2/authorize?response_type=code&token_access_type=offline&client_id=${R}&redirect_uri=${e}`}}const D=i(o.pipeline);class j extends Q{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=t.createReadStream(r.join(this.storagePath,i));return yield e.post("https://content.dropboxapi.com/2/files/upload",n,{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/octet-stream","Dropbox-API-Arg":JSON.stringify({path:"/"+o,mode:"overwrite",autorename:!0,mute:!1})},maxContentLength:1/0,maxBodyLength:1/0}),!0}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken(),n=t.createWriteStream(r.join(this.storagePath,o)),a=yield e({url:"https://content.dropboxapi.com/2/files/download",method:"GET",responseType:"stream",headers:{Authorization:`Bearer ${s}`,"Dropbox-API-Arg":JSON.stringify({path:"/"+i})},maxContentLength:1/0,maxBodyLength:1/0});let d=0;return a.data.on("data",(e=>{d+=e.length,this.taskQueue.setDownloadedSize(d)})),yield D(a.data,n),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class U{constructor(e,t){this.config=e,this.storagePath=t,this.taskQueue=new w(1),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getClient(){return T(this,void 0,void 0,(function*(){try{if(this.client&&!1===this.client.closed)return this.client;let{url:e,username:t,password:r,dir:i,ssl:o,port:n}=this.config;const a=new s(0);a.ftp.verbose=!0;const d=a.access({host:e,port:parseInt(n),user:t,password:r,secure:"1"===o}),l=new Promise(((e,t)=>{setTimeout((()=>t(new Error("FTP connection timeout"))),5e3)}));return yield Promise.race([d,l]),this.client=a,a}catch(e){throw console.error("Error connecting to FTP server:",e),this.client=null,e}}))}uploadFile(e,t){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{let{dir:i}=this.config;i=i&&"KoodoReader"===this.baseFolder?i:this.baseFolder;const o=yield this.getClient(),s=()=>T(this,void 0,void 0,(function*(){yield o.ensureDir(r.dirname(i+"/"+t)),yield o.cd("/"),yield o.uploadFrom(r.join(this.storagePath,e),i+"/"+t)}));try{return yield s(),!0}catch(e){return console.error(e),!1}}catch(e){return console.error("Error in uploadFile:",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{let{dir:o}=this.config;o=o&&"KoodoReader"===this.baseFolder?o:this.baseFolder;const s=yield this.getClient(),n=t.createWriteStream(r.join(this.storagePath,i)),a=()=>T(this,void 0,void 0,(function*(){s.trackProgress((e=>{this.taskQueue.setDownloadedSize(e.bytes||0)})),yield s.downloadTo(n,o+"/"+e),s.trackProgress()}));try{return yield a(),!0}catch(e){return console.error(e),!1}}catch(e){return console.error("Error in downloadFile:",e),!1}}))))))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.listFilesWithoutQueue(e)}))))))}))}listFilesWithoutQueue(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;const r=yield this.getClient(),i=()=>T(this,void 0,void 0,(function*(){return yield r.list(t+"/"+e)}));try{return(yield i()).map((e=>({name:e.name,size:e.size||0,type:e.isFile?"file":"folder",modified:e.modifiedAt?e.modifiedAt.toISOString():""})))}catch(e){return console.error(e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(e){return T(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;const r=yield this.getClient(),i=()=>T(this,void 0,void 0,(function*(){yield r.remove(t+"/"+e)}));try{return yield i(),!0}catch(e){return console.error(e),!1}}))}}class B{constructor(e,t){this.isExp=!1,this.baseUrl="https://graph.microsoft.com/v1.0/me/drive/special/approot",this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new w(3),this.isExp=this.config.isExp||!1,this.baseUrl=this.isExp?"https://graph.microsoft.com/v1.0/me/drive/root":"https://graph.microsoft.com/v1.0/me/drive/special/approot",void 0===this.config.baseFolder?this.baseFolder=this.isExp?"KoodoReader":"":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);let i,o=[];if(""===t)i=`${this.baseUrl}/children`;else{const e=encodeURIComponent(t);i=`${this.baseUrl}:/${e}:/children`}for(;i;){const t=yield e.get(i,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(t.status>=300)break;const s=t.data.value||[];o=o.concat(s),i=t.data["@odata.nextLink"]||""}return[...new Set(o.map((e=>({name:e.name,size:e.size||0,type:e.folder?"folder":"file",modified:e.lastModifiedDateTime}))))]}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const i=yield e.delete(`${this.baseUrl}:/${t}`,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!(i.status>=300)||(console.error("Error deleting file:",i),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"microsoft",refresh_token:e});return t.data.access_token?(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token):""}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"microsoft",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=${$}&scope=${this.isExp?"files.readwrite.all":"files.readwrite.appfolder"} offline_access&response_type=code&redirect_uri=${e}`}}const M=209715200;class W extends B{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){var s;let n=null;try{const s=yield this.refreshToken();let a=this.baseFolder+"/"+o;for(;a.startsWith("/");)a=a.substring(1);const d=r.join(this.storagePath,i),l=yield this.getFileSize(d),c=a.split(".").pop(),h=(b(c||""),`${this.baseUrl}:/${a}:/createUploadSession`),u=(yield e.post(h,{item:{"@microsoft.graph.conflictBehavior":"replace"}},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}})).data.uploadUrl;n=yield t.promises.open(d,"r");let p=0,f=Buffer.alloc(M);for(;pthis.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken();let n=this.baseFolder+"/"+i;for(;n.startsWith("/");)n=n.substring(1);const a=`${this.baseUrl}:/${n}:/content`;let d=(yield fetch(a,{headers:{Authorization:"Bearer "+s},redirect:"manual"})).headers.get("location");if(d){const i=yield e.get(d,{responseType:"stream"});let s=0;const n=t.createWriteStream(r.join(this.storagePath,o));return i.data.on("data",(e=>{s+=e.length,this.taskQueue.setDownloadedSize(s)})),yield new Promise(((e,t)=>{i.data.pipe(n),n.on("finish",(()=>{e()})),n.on("error",t)})),!0}return!1}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getFileSize(e){return T(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}class N{constructor(e,t){this.isExp=!1,this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new w(3),this.isExp=this.config.isExp||!1,void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getFileId(t,r){return T(this,void 0,void 0,(function*(){const i=yield this.refreshToken(),o=`https://www.googleapis.com/drive/v3/files?q=name='${t}'+and+'${r}'+in+parents&fields=files(id,name)`;try{const t=yield e.get(o,{headers:{Authorization:"Bearer "+i}});if(0===t.data.files.length)return"";const r=t.data.files;return r.length>0?r[0].id:null}catch(e){return console.error("Error occurred during file list retrieval:",e),""}}))}checkFolder(t){return T(this,void 0,void 0,(function*(){t=this.baseFolder+"/"+t;const r=yield this.refreshToken();if(""===t)return"root";const i=t.split("/").filter((e=>""!==e.trim()));let o="root";for(const t of i){let i=yield this.getFolderId(t,o);if(!i){const s={name:t,mimeType:"application/vnd.google-apps.folder",parents:[o]};try{i=(yield e.post("https://www.googleapis.com/drive/v3/files",s,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}catch(e){throw console.error(`Error occurred during folder creation for ${t}:`,e),e}}o=i}return o}))}getFolderId(t,r){return T(this,void 0,void 0,(function*(){const i=yield this.refreshToken(),o=`https://www.googleapis.com/drive/v3/files?q=name='${t=encodeURIComponent(t)}'+and+mimeType='application/vnd.google-apps.folder'+and+'${r}'+in+parents&fields=files(id,name)`;try{const t=(yield e.get(o,{headers:{Authorization:`Bearer ${i}`}})).data.files;return t.length>0?t[0].id:null}catch(e){throw console.error("Error occurred during fetching folder ID:",e),e}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=yield this.checkFolder(t),o=[],s="",n=!0;for(;n;){let t=`https://www.googleapis.com/drive/v3/files?q='${i}'+in+parents&fields=nextPageToken,files(id,name,size,mimeType)&pageSize=1000`;s&&(t+=`&pageToken=${s}`);const a=yield e.get(t,{headers:{Authorization:`Bearer ${r}`}}),d=a.data.files||[];o=o.concat(d),s=a.data.nextPageToken,n=!!s}return[...new Set(o.map((e=>({name:e.name,size:e.size||0,type:"application/vnd.google-apps.folder"===e.mimeType?"folder":"file",modified:e.modifiedTime}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQue(e)}))))))}))}deleteFileWithoutQue(t){return T(this,void 0,void 0,(function*(){const r=t.split("/")[1],i=yield this.checkFolder(t),o=yield this.refreshToken(),s=yield this.getFileId(r,i);if(""===s)return console.error("File not found:",r),!0;try{const t=yield e.delete(`https://www.googleapis.com/drive/v3/files/${s}`,{headers:{Authorization:`Bearer ${o}`}});return console.error("File deleted:",t),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"google",refresh_token:e});return t.data.access_token?(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token):""}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"google",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${e}&prompt=consent&response_type=code&client_id=${z}&scope=https://www.googleapis.com/auth/${this.isExp?"drive":"drive.file"}&access_type=offline`}}class q extends N{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken();let n=i.split("/").pop(),a=o.split(".").pop(),d=b(a||""),l=o.split("/").slice(0,-1).join("/"),c=yield this.checkFolder(l),h=yield this.getFileId(n||"",c);const u={mimeType:d,name:n,parents:[c]},p=h?`https://www.googleapis.com/upload/drive/v3/files/${h}?uploadType=resumable`:"https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable",f=(yield e({method:h?"PATCH":"POST",url:p,data:h?null:JSON.stringify(u),headers:{Authorization:"Bearer "+s,"Content-Type":"application/json; charset=UTF-8"},maxContentLength:1/0,maxBodyLength:1/0})).headers.location;let y=yield this.getFileSize(r.join(this.storagePath,i));const g=t.createReadStream(r.join(this.storagePath,i));yield e.put(f,g,{headers:{Authorization:"Bearer "+s,"Content-Type":"application/zip","Content-Range":`bytes 0-${y-1}/${y}`},maxContentLength:1/0,maxBodyLength:1/0});return!0}catch(e){return console.error("Error occurred during upload:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken();let n=i.split("/").pop(),a=i.split("/").slice(0,-1).join("/"),d=yield this.checkFolder(a),l=yield this.getFileId(n||"",d);if(!l)return console.error("File not found"),!0;const c=`https://www.googleapis.com/drive/v3/files/${l}?alt=media`;return new Promise((i=>{const n=t.createWriteStream(r.join(this.storagePath,o));e({url:c,method:"GET",responseType:"stream",headers:{Authorization:"Bearer "+s},maxContentLength:1/0,maxBodyLength:1/0}).then((e=>{let t=0;e.data.on("data",(e=>{t+=e.length,this.taskQueue.setDownloadedSize(t)})),e.data.pipe(n),n.on("finish",(()=>{i(!0)})),n.on("error",(()=>{i(!1)}))})).catch((e=>{console.error("Error downloading file:",e),i(!1)}))}))}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getFileSize(e){return T(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}class K{constructor(e){this.config=e,this.taskQueue=new w(5),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}shouldUsePathStyle(e){try{const t=new URL(e),r=t.hostname,i=/^(\d{1,3}\.){3}\d{1,3}$/.test(r),o=""!==t.port;return!i&&o}catch(e){return!0}}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:i,accessKeyId:o,secretAccessKey:s,dir:d}=this.config;d=d&&"KoodoReader"===this.baseFolder?d:this.baseFolder;let l=d+"/"+e;for(;l.startsWith("/");)l=l.substring(1);""===l||l.endsWith("/")||(l+="/");const c=new n({endpoint:t,region:r,credentials:{accessKeyId:o,secretAccessKey:s},forcePathStyle:this.shouldUsePathStyle(t)});try{let e,t=[],r=[],o=!0;for(;o;){const s=yield c.send(new a({Bucket:i,Prefix:l,Delimiter:"/",ContinuationToken:e}));s.Contents&&(t=t.concat(s.Contents)),s.CommonPrefixes&&(r=r.concat(s.CommonPrefixes)),e=s.NextContinuationToken,o=!!e}let s=[];return t.forEach((e=>{if(!e.Key.endsWith("/")){const t=e.Key.substring(l.length);t.includes("/")||s.push({name:t,size:e.Size||0,type:"file",modified:e.LastModified?e.LastModified.toISOString():""})}})),r.forEach((e=>{const t=e.Prefix.substring(l.length).replace(/\/$/,"");t&&s.push({name:t,size:0,type:"folder",modified:""})})),s}catch(e){return console.error(e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:i,accessKeyId:o,secretAccessKey:s,dir:a}=this.config;a=a&&"KoodoReader"===this.baseFolder?a:this.baseFolder;const l=new n({endpoint:t,region:r,credentials:{accessKeyId:o,secretAccessKey:s},forcePathStyle:this.shouldUsePathStyle(t)});let c=a+"/"+e;for(;c.startsWith("/");)c=c.substring(1);try{return yield l.send(new d({Bucket:i,Key:c})),!0}catch(e){return console.error(e),!1}}))}}class J extends K{constructor(e,t){super(e),this.storagePath=t}uploadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){let{endpoint:o,region:s,bucketName:a,accessKeyId:d,secretAccessKey:c,dir:h}=this.config;const u=new n({endpoint:o,region:s,credentials:{accessKeyId:d,secretAccessKey:c},forcePathStyle:this.shouldUsePathStyle(o)});h=h&&"KoodoReader"===this.baseFolder?h:this.baseFolder;let p=h+"/"+i;for(;p.startsWith("/");)p=p.substring(1);try{let i=yield u.send(new l({Bucket:a,Key:p,Body:t.createReadStream(r.join(this.storagePath,e))}));return 200===i.$metadata.httpStatusCode||(console.error("Error uploading file:",i),!1)}catch(e){return console.error("Error: ",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);let{endpoint:o,region:s,bucketName:a,accessKeyId:d,secretAccessKey:l,dir:h}=this.config;h=h&&"KoodoReader"===this.baseFolder?h:this.baseFolder;const u=(e,t,r,i)=>new Promise(((o,s)=>T(this,void 0,void 0,(function*(){const s=yield e.send(new c({Bucket:t,Key:r}));let n=0;s.Body?(s.Body.on("data",(e=>{n+=e.length,this.taskQueue.setDownloadedSize(n)})),s.Body.pipe(i),i.on("finish",(e=>{e&&o(!1),o(!0)}))):o(!1)})))),p=()=>new Promise(((c,p)=>{const f=new n({region:s,endpoint:o,credentials:{accessKeyId:d,secretAccessKey:l},forcePathStyle:this.shouldUsePathStyle(o)});let y=t.createWriteStream(r.join(this.storagePath,i)),g=h+"/"+e;for(;g.startsWith("/");)g=g.substring(1);u(f,a,g,y).then((e=>{c(!0)})).catch((e=>{console.error(e),c(!1)}))}));try{return yield p()}catch(e){return console.error(e),!1}}))))))}))}}class H{constructor(e,t){this.storagePath=t;let{username:r,password:i,url:o,dir:s}=e;void 0===e.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=e.baseFolder,s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder,this.client=h(o,{authType:u.Password,username:r,password:i}),this.username=r,this.password=i,this.dir=s,this.taskQueue=new w(3)}retryOperation(e,t=1){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=this.client.exists(r.dirname(this.dir+"/"+o)),n=new Promise(((e,t)=>{setTimeout((()=>t(new Error("WebDAV exists check timeout"))),5e3)}));!1===(yield Promise.race([s,n]))&&(yield this.ensureDirectoryExists(r.dirname(this.dir+"/"+o)));let a=this.client.createWriteStream(this.dir+"/"+o);return t.createReadStream(r.join(this.storagePath,i)).pipe(a),new Promise(((s,n)=>{a.on("finish",(()=>{s(!0)})),a.on("error",(n=>T(this,void 0,void 0,(function*(){console.error("Error occurred during file upload:",n);try{let n=t.readFileSync(r.join(this.storagePath,i)),a=this.client.getFileUploadLink(this.dir+"/"+o);const d=new URL(a);d.search="",a=d.toString();const l=Buffer.from(this.username+":"+this.password,"binary").toString("base64");yield e.put(a,n,{headers:{Authorization:"Basic "+l},maxContentLength:1/0,maxBodyLength:1/0});s(!0)}catch(e){console.error("Error occurred during file upload:",e),s(!1)}}))))}))}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){if(this.taskQueue.setDownloadedSize(0),-1===e.indexOf("."))return new ArrayBuffer(0);try{if(!1===(yield this.client.exists(this.dir+"/"+e)))return!0;let o=0,s=t.createWriteStream(r.join(this.storagePath,i)),n=this.client.createReadStream(this.dir+"/"+e);return n.on("data",(e=>{o+=e.length,this.taskQueue.setDownloadedSize(o)})),n.pipe(s),new Promise(((e,t)=>{s.on("finish",(()=>{e(!0)})),s.on("error",(t=>{e(!1)}))}))}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){try{return(yield this.client.getDirectoryContents(this.dir+"/"+e)).filter((t=>"."!==t.filename&&".."!==t.filename&&t.filename!==e)).map((e=>({name:e.basename,size:e.size||0,type:"directory"===e.type?"folder":"file",modified:e.lastmod})))}catch(t){return console.error("Error listing files:",t),t.response&&404===t.response.status&&(yield this.client.createDirectory(this.dir+"/"+e)),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){try{return yield this.client.deleteFile(this.dir+"/"+e),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}ensureDirectoryExists(e){return T(this,void 0,void 0,(function*(){try{const t=e.replace(/^\/+|\/+$/g,"").split("/").filter((e=>e.length>0));let r="";for(const e of t)r=r?`${r}/${e}`:e,(yield this.client.exists(`/${r}`))||(yield this.client.createDirectory(`/${r}`));return!0}catch(e){return console.error("Error ensuring directory exists:",e),!1}}))}}class V{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new w(3),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){var r,i;return T(this,void 0,void 0,(function*(){try{const o=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);let s=[],n=0;const a=1e3;let d=!0;for(;d;){const l=yield e.get("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${o}`,"Content-Type":"application/json"},params:{path:t?`/${t}`:"/",limit:a,offset:n,fields:"_embedded.items.name,_embedded.items.size,_embedded.items.type,_embedded.items.modified,_embedded.total"}}),c=(null===(r=l.data._embedded)||void 0===r?void 0:r.items)||[];s=s.concat(c);const h=(null===(i=l.data._embedded)||void 0===i?void 0:i.total)||0;n+=c.length,d=n({name:e.name,size:e.size||0,type:"file"===e.type?"file":"folder",modified:e.modified}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const i=yield e.delete("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${r}`,"Content-Type":"application/json"},params:{path:t?`/${t}`:"/",permanently:!1}});return 202===i.status||204===i.status}catch(e){return console.error("Error deleting file:",e),!1}}))}ensureDirectoryExists(t){var r,i;return T(this,void 0,void 0,(function*(){try{const o=yield this.refreshToken(),s=t.split("/").filter((e=>e.length>0));let n="";for(const t of s){n+="/"+t;try{yield e.get("https://cloud-api.yandex.net/v1/disk/resources",{headers:{Authorization:`OAuth ${o}`,"Content-Type":"application/json"},params:{path:n}})}catch(t){if(404!==(null===(r=t.response)||void 0===r?void 0:r.status))return console.error("Error checking directory:",t),!1;try{yield e.put(`https://cloud-api.yandex.net/v1/disk/resources?path=${encodeURIComponent(n)}`,null,{headers:{Authorization:`OAuth ${o}`}})}catch(e){if(409!==(null===(i=e.response)||void 0===i?void 0:i.status))return console.error("Error creating directory:",e),!1}}}return!0}catch(e){return console.error("Error ensuring directory exists:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"yandex",refresh_token:e});return t.data.access_token?(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,t.data.access_token):""}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"yandex",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://oauth.yandex.com/authorize?response_type=code&client_id=${O}&redirect_uri=${e}&force_confirm=true`}}const X=i(o.pipeline);class Y extends V{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken();let n=this.baseFolder+"/"+o;for(;n.startsWith("/");)n=n.substring(1);const a=n.substring(0,n.lastIndexOf("/"));if(a){if(!(yield this.ensureDirectoryExists(a)))return console.error("Failed to create directory:",a),!1}const d=yield e.get("https://cloud-api.yandex.net/v1/disk/resources/upload",{headers:{Authorization:`OAuth ${s}`,"Content-Type":"application/json"},params:{path:`/${n}`,overwrite:!0}});if(200!==d.status)return console.error("Error getting upload URL:",d),!1;const l=d.data.href,c=t.createReadStream(r.join(this.storagePath,i));return yield e.put(l,c,{headers:{"Content-Type":"application/octet-stream"},maxContentLength:1/0,maxBodyLength:1/0}),!0}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);let s=this.baseFolder+"/"+i;for(;s.startsWith("/");)s=s.substring(1);try{const i=yield this.refreshToken(),n=yield e.get("https://cloud-api.yandex.net/v1/disk/resources/download",{headers:{Authorization:`OAuth ${i}`,"Content-Type":"application/json"},params:{path:`/${s}`}});if(200!==n.status)return console.error("Error getting download URL:",n),!1;const a=n.data.href,d=t.createWriteStream(r.join(this.storagePath,o)),l=yield e({url:a,method:"GET",responseType:"stream",maxContentLength:1/0,maxBodyLength:1/0});let c=0;return l.data.on("data",(e=>{c+=e.length,this.taskQueue.setDownloadedSize(c)})),yield X(l.data,d),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class G{constructor(e,t){this.config=e,this.storagePath=t,this.taskQueue=new w(5),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getClient(){return T(this,void 0,void 0,(function*(){try{if(this.client)return this.client;let{url:e,username:t,password:r,dir:i,port:o}=this.config;const s=new p,n=s.connect({host:e||"",port:o||22,username:t||"",password:r||""}),a=new Promise(((e,t)=>{setTimeout((()=>t(new Error("SFTP connection timeout"))),5e3)}));return yield Promise.race([n,a]),this.client=s,s}catch(e){throw console.error("Error connecting to SFTP server:",e),this.client=null,e}}))}uploadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{let{dir:o}=this.config;o=o&&"KoodoReader"===this.baseFolder?o:this.baseFolder;let s=yield this.getClient();const n=()=>new Promise(((n,a)=>T(this,void 0,void 0,(function*(){let a=t.createReadStream(r.join(this.storagePath,e)),d="/"+o+"/"+i,l="/"+o+"/"+r.dirname(i);(yield s.exists(l))||(yield s.mkdir(l,!0)),s.put(a,d).then((()=>{n(!0)})).catch((e=>{console.error(e.message),n(!1)}))}))));try{return yield n()}catch(e){return console.error(e),!1}}catch(e){return console.error("Error in uploadFile:",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{let{dir:o}=this.config;o=o&&"KoodoReader"===this.baseFolder?o:this.baseFolder;let s=yield this.getClient();const n=()=>new Promise(((n,a)=>T(this,void 0,void 0,(function*(){let a="/"+o+"/"+e,d=r.join(this.storagePath,i),l=t.createWriteStream(d);s.get(a,l).then((()=>{this.taskQueue.setDownloadedSize(l.bytesWritten||0),n(!0)})).catch((e=>{console.error(e.message),n(!1)}))}))));try{return yield n()}catch(e){return console.error(e),!1}}catch(e){return console.error("Error in downloadFile:",e),!1}}))))))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;let r=yield this.getClient();const i=()=>new Promise(((i,o)=>T(this,void 0,void 0,(function*(){let o="/"+t+"/"+e;(yield r.exists(o))||(yield r.mkdir(o,!0),i([])),r.list(o).then((e=>{i(e.map((e=>({name:e.name,size:e.size||0,type:"d"===e.type?"folder":"file",modified:e.modifyTime}))))})).catch((e=>T(this,void 0,void 0,(function*(){console.error(e.message,"list file error"),i([])}))))}))));try{return yield i()}catch(e){return console.error(e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;let r=yield this.getClient();try{return yield new Promise(((i,o)=>{let s="/"+t+"/"+e;r.delete(s).then((()=>{i(!0)})).catch((e=>{console.error(e.message),i(!1)}))}))}catch(e){return console.error(e),!1}}))}}class Z{downloadFile(e,t){return T(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}uploadFile(e,t){return T(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return new Promise((e=>{e([])}))}))}authToken(e){return T(this,void 0,void 0,(function*(){return new Promise((e=>{e("")}))}))}getAuthUrl(){return""}}class ee{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new w(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getFolderIdByPath(t){return T(this,void 0,void 0,(function*(){if(""==t)return"0";const r=yield this.refreshToken(),i=t.split("/");let o="0";for(const t of i){const i=`https://api.box.com/2.0/folders/${o}/items?fields=id,name&type=folder&limit=1000`;try{const s=(yield e.get(i,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===t&&"folder"===e.type));if(s)o=s.id;else{const i={name:t,parent:{id:o},type:"folder"};o=(yield e.post("https://api.box.com/2.0/folders",i,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}}catch(e){return console.error("Error occurred during folder creation:",e),""}}return o}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=this.baseFolder+"/"+t;for(;i.startsWith("/");)i=i.substring(1);let o=yield this.getFolderIdByPath(i),s=[],n=0,a=!0;const d=1e3;for(;a;){const t=yield e.get(`https://api.box.com/2.0/folders/${o}/items`,{params:{limit:d,offset:n},headers:{Authorization:`Bearer ${r}`}}),i=t.data.entries||[];s=s.concat(i),n+=i.length,a=i.length===d&&t.data.total_count>n}return[...new Set(s.map((e=>({name:e.name,size:e.size||0,type:e.type,modified:e.content_modified_at}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=t.substring(0,t.lastIndexOf("/")),o=t.substring(t.lastIndexOf("/")+1);let s=this.baseFolder+"/"+i;for(;s.startsWith("/");)s=s.substring(1);const n=yield this.getFolderIdByPath(s);if(!n)return!0;const a=`https://api.box.com/2.0/folders/${n}/items?fields=id,name&type=file&limit=1000`,d=(yield e.get(a,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===o&&"file"===e.type));return!d||(yield e.delete(`https://api.box.com/2.0/files/${d.id}`,{headers:{Authorization:`Bearer ${r}`}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"boxnet",refresh_token:e});if(!t.data.access_token)return"";this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("boxnet_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"boxnet",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://account.box.com/api/oauth2/authorize?${new URLSearchParams({response_type:"code",client_id:A,redirect_uri:e,grant_type:"authorization_code",box_subject_type:"enterprise",scope:"root_readwrite"}).toString()}`}}class te extends ee{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=o.substring(0,o.lastIndexOf("/")),a=o.substring(o.lastIndexOf("/")+1);let d=this.baseFolder+"/"+n;for(;d.startsWith("/");)d=d.substring(1);const l=yield this.getFolderIdByPath(d);if(!l)throw new Error("Folder not found");const c=yield this.listFiles(n);c.find((e=>e===a))&&(yield this.deleteFileWithoutQueue(n+"/"+a));const h=new f,u=JSON.stringify({name:a,parent:{id:l}});h.append("attributes",u),h.append("file",t.createReadStream(r.join(this.storagePath,i)));const p=yield e.post("https://upload.box.com/api/2.0/files/content",h,{headers:Object.assign({Authorization:`Bearer ${s}`},h.getHeaders()),maxContentLength:1/0,maxBodyLength:1/0});return!(p.status>=300)||(console.error("Error occurred during file upload:",p),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken(),n=i.substring(0,i.lastIndexOf("/")),a=i.substring(i.lastIndexOf("/")+1);let d=this.baseFolder+"/"+n;for(;d.startsWith("/");)d=d.substring(1);const l=yield this.getFolderIdByPath(d);if(!l)return console.error("Folder not found"),!0;const c=`https://api.box.com/2.0/folders/${l}/items?fields=id,name&type=file&limit=1000`,h=(yield e.get(c,{headers:{Authorization:`Bearer ${s}`}})).data.entries.find((e=>e.name===a&&"file"===e.type));if(!h)return console.error("File not found:",a),!0;const u=yield e({url:`https://api.box.com/2.0/files/${h.id}/content`,method:"get",responseType:"stream",headers:{Authorization:`Bearer ${s}`}});return yield new Promise(((e,i)=>{let s=0;const n=t.createWriteStream(r.join(this.storagePath,o));u.data.on("data",(e=>{s+=e.length,this.taskQueue.setDownloadedSize(s)})),u.data.pipe(n),n.on("finish",e),n.on("error",i)})),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class re{constructor(e){this.folderCreationLocks=new Map,this.config=e,this.taskQueue=new w(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getStorage(){return T(this,void 0,void 0,(function*(){if(this.storage)return this.storage;let{email:e,password:t}=this.config;return this.storage=yield new y({email:e,password:t}).ready,this.storage}))}getRoot(){return T(this,void 0,void 0,(function*(){if(this.root)return this.root;const e=(yield this.getStorage()).root;if(""===this.baseFolder)return this.root=e,this.root;let t=e.children.find((e=>e.name===this.baseFolder&&e.directory));return t||(t=yield e.mkdir(this.baseFolder)),this.root=t,this.root}))}createFolder(e,t){return T(this,void 0,void 0,(function*(){const r=`${e.nodeId}_${t}`;if(this.folderCreationLocks.has(r))return yield this.folderCreationLocks.get(r);const i=(()=>T(this,void 0,void 0,(function*(){try{let r=e.children.find((e=>e.name===t&&e.directory));return r||(r=yield e.mkdir(t),r)}finally{this.folderCreationLocks.delete(r)}})))();return this.folderCreationLocks.set(r,i),yield i}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();if(e){const r=e.split("/").filter((e=>e));for(const e of r){const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return[];t=r}}return t.children.map((e=>({name:e.name,size:e.size||0,type:e.directory?"folder":"file",modified:e.timestamp?new Date(1e3*e.timestamp).toISOString():""})))}catch(e){return console.error("Error listing MEGA files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(e){return T(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();const r=e.split("/"),i=r.pop();for(const e of r){if(!e)continue;const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return!0;t=r}const o=t.children.find((e=>e.name===i&&!e.directory));return!o||(yield o.delete(),!0)}catch(e){return console.error("Error deleting MEGA file:",e),!1}}))}}class ie extends re{constructor(e,t){super(e),this.storagePath=t}uploadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{let o=yield this.getRoot();const s=i.split("/"),n=s.pop()||"";for(const e of s){if(!e)continue;let t=o.children.find((t=>t.name===e&&t.directory));t||(t=yield this.createFolder(o,e)),o=t}const a=o.children.find((e=>e.name===n&&!e.directory));a&&(yield a.delete());const d=t.createReadStream(r.join(this.storagePath,e)),l=t.statSync(r.join(this.storagePath,e)).size;return yield o.upload({name:n,size:l},d).complete,!0}catch(e){return console.error("Error occurred during MEGA file upload:",e),!1}}))))))}))}downloadFile(e,i){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{let o=yield this.getRoot();const s=e.split("/"),n=s.pop()||"";for(const e of s){if(!e)continue;const t=o.children.find((t=>t.name===e&&t.directory));if(!t)return!0;o=t}const a=o.children.find((e=>e.name===n&&!e.directory));if(!a)return!0;const d=t.createWriteStream(r.join(this.storagePath,i));let l=0;return new Promise((e=>{const t=a.download();t.on("data",(e=>{l+=e.length,this.taskQueue.setDownloadedSize(l)})),t.pipe(d),d.on("finish",(()=>e(!0))),d.on("error",(t=>{console.error("Error writing file:",t),e(!1)}))}))}catch(e){return console.error("Error occurred during MEGA file download:",e),!1}}))))))}))}}class oe{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.driveId="",this.refreshTokenPromise=null,this.taskQueue=new w(1),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getDriveId(){return T(this,void 0,void 0,(function*(){if(this.driveId)return this.driveId;const t=yield this.refreshToken(),r=yield e.post("https://openapi.alipan.com/adrive/v1.0/user/getDriveInfo",{},{headers:{Authorization:`Bearer ${t}`}});return this.driveId=r.data.default_drive_id,this.driveId}))}getFolderIdByPath(t){return T(this,void 0,void 0,(function*(){const r=yield this.refreshToken(),i=yield this.getDriveId();try{try{const o=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(o.data)return o.data.file_id}catch(o){const s=t.split("/").filter((e=>e));let n="",a="root";for(const t of s){n+="/"+t;try{a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:n},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}catch(o){a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:i,parent_file_id:a,name:t,type:"folder",check_name_mode:"refuse"},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}}return a}}catch(e){return console.error("Error getting/creating folder by path:",e),""}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield this.getDriveId(),o=yield this.getFolderIdByPath(this.baseFolder+"/"+t);let s=[],n="",a=!0;for(;a;){const t=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/list",{drive_id:i,parent_file_id:o,marker:n||void 0},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),d=t.data.items||[];s=s.concat(d),n=t.data.next_marker,a=!!n&&100===d.length}return[...new Set(s.map((e=>({name:e.name,size:e.size,type:e.type,modified:e.updated_at}))))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield this.getDriveId(),o=yield this.getFolderIdByPath(this.baseFolder+"/"+t);return!o||(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/delete",{drive_id:i,file_id:o},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}checkExists(t){var r;return T(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken(),o=yield this.getDriveId(),s=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:o,file_path:t},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}});(null===(r=s.data)||void 0===r?void 0:r.file_id)&&(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/recyclebin/trash",{drive_id:o,file_id:s.data.file_id},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}}))}catch(e){}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"adrive",refresh_token:e});if(!t.data.access_token)return"";this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("adrive_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"adrive",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://openapi.alipan.com/oauth/authorize?${new URLSearchParams({response_type:"code",client_id:L,redirect_uri:e,grant_type:"authorization_code",scope:"user:base,file:all:write,file:all:read"}).toString()}`}}class se extends oe{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=yield this.getDriveId(),a=o.substring(0,o.lastIndexOf("/")),d=o.substring(o.lastIndexOf("/")+1);yield this.deleteFileWithoutQueue(o);const l=yield this.getFolderIdByPath(this.baseFolder+"/"+a),c=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:n,parent_file_id:l,name:d,type:"file",check_name_mode:"ignore"},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}),{file_id:h,upload_id:u,part_info_list:p}=c.data,f=yield t.promises.readFile(r.join(this.storagePath,i));return yield fetch(p[0].upload_url,{method:"PUT",body:f,headers:{"Content-Length":t.statSync(r.join(this.storagePath,i)).size.toString()}}),yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/complete",{drive_id:n,file_id:h,upload_id:u},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}),!0}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken(),n=yield this.getDriveId(),a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:n,file_path:this.baseFolder+"/"+i},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}})).data.file_id,d=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/getDownloadUrl",{drive_id:n,file_id:a},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}),l=yield e({url:d.data.url,method:"get",responseType:"stream"});let c=0;const h=t.createWriteStream(r.join(this.storagePath,o+".temp"));return l.data.on("data",(e=>{c+=e.length,this.taskQueue.setDownloadedSize(c)})),l.data.pipe(h),new Promise((e=>{h.on("finish",(()=>{t.renameSync(r.join(this.storagePath,o+".temp"),r.join(this.storagePath,o)),e(!0)})),h.on("error",(t=>{console.error("Error occurred during file download:",t),e(!1)}))}))}catch(e){return console.error("Error downloading file:",e),!1}}))))))}))}}class ne{constructor(e,t){this.baseUrl="https://api.pcloud.com",this.config=e,this.thirdpartyRequest=t,this.taskQueue=new w(3),this.baseUrl="2"===e.region?"https://eapi.pcloud.com":"https://api.pcloud.com"}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}checkFolderExists(t,r){return T(this,void 0,void 0,(function*(){try{return 0===(yield e.get(`${this.baseUrl}/listfolder`,{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error checking folder:",e),!1}}))}createFolder(t,r){return T(this,void 0,void 0,(function*(){try{return 0===(yield e.get(`${this.baseUrl}/createfolderifnotexists`,{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error creating folder:",e),!1}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield e.get(`${this.baseUrl}/listfolder`,{params:{access_token:r,path:"/"+t,recursive:0}});return 0!==i.data.result?[]:i.data.metadata.contents.map((e=>({name:e.name,size:e.size||0,type:e.isfolder?"folder":"file",modified:e.modified})))}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield e.get(`${this.baseUrl}/deletefile`,{params:{access_token:r,path:"/"+t}});return 0===i.data.result||(console.error("Error deleting file:",i.data),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.refresh_token}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"pcloud",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://my.pcloud.com/oauth2/authorize?client_id=${P}&response_type=code&redirect_uri=${e}`}}class ae extends ne{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=o.split("/").slice(0,-1).join("/");if(!(yield this.checkFolderExists(n,s))){if(!(yield this.createFolder(n,s)))return!1}const a=r.join(this.storagePath,i),d=t.createReadStream(a),l=t.statSync(a),c=r.basename(i),h=yield e({method:"put",url:`${this.baseUrl}/uploadfile`,params:{access_token:s,path:`/${n}`,renew:1,filename:c},data:d,headers:{"Content-Length":l.size,"Content-Type":"application/octet-stream"},maxContentLength:1/0,maxBodyLength:1/0});return 0===h.data.result||(console.error("Error uploading file:",h.data),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=yield this.refreshToken(),n=yield e.get(`${this.baseUrl}/getfilelink`,{params:{access_token:s,path:`/${i}`}});if(0!==n.data.result)return console.error("Error getting file link:",n.data),!1;const a=r.join(this.storagePath,o),d=t.createWriteStream(a),l=`https://${n.data.hosts[0]}${n.data.path}`,c=yield e({method:"get",url:l,responseType:"stream",maxContentLength:1/0,maxBodyLength:1/0});return new Promise((e=>{let t=0;c.data.on("data",(e=>{t+=e.length,this.taskQueue.setDownloadedSize(t)})),c.data.pipe(d),d.on("finish",(()=>{e(!0)})),d.on("error",(t=>{console.error("Error writing file:",t),e(!1)}))}))}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class de{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new w(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=1){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=this.baseFolder;t&&""!==t.trim()&&(i=i+"/"+t),i=i.replace(/\/+/g,"/"),i.startsWith("/")&&(i=i.substring(1));let o=[],s=0;const n=1e3;for(;;){const t=yield e.get("https://pan.baidu.com/rest/2.0/xpan/file",{params:{method:"list",access_token:r,dir:"/"+i,start:s,limit:n,order:"name",desc:0,web:1,folder:0},headers:{"User-Agent":"pan.baidu.com"}});if(t.status>=300||0!==t.data.errno){console.error("百度网盘API错误:",t.data);break}const a=t.data.list||[];if(0===a.length)break;if(o=o.concat(a),a.length({name:e.server_filename,size:e.size||0,type:e.isdir?"folder":"file",modified:new Date(1e3*e.server_mtime).toISOString(),path:e.path})))}catch(e){return console.error("获取百度网盘文件列表时发生错误:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=this.baseFolder+"/"+t;i=i.replace(/\/+/g,"/"),i.startsWith("/")&&(i=i.substring(1));const o=new URLSearchParams({async:"0",filelist:JSON.stringify(["/"+i])}),s=yield e.post(`https://pan.baidu.com/rest/2.0/xpan/file?method=filemanager&access_token=${r}&opera=delete`,o.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"pan.baidu.com"}});if(0!==s.data.errno)return console.error("百度网盘删除文件API错误:",s.data),-9===s.data.errno?console.error("文件不存在"):111===s.data.errno?console.error("有其他异步任务正在执行"):-7===s.data.errno&&console.error("文件名非法"),!1;const n=s.data.info||[];for(const e of n)if(0!==e.errno)return console.error(`文件删除失败: ${e.path}, 错误码: ${e.errno}`),!1;return!0}catch(e){return console.error("删除文件时发生错误:",e),!1}}))}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token,t=yield this.thirdpartyRequest.refreshThirdToken({provider:"dubox",refresh_token:e});if(!t.data.access_token)return"";this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+1e3*t.data.expires_in,this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("dubox_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dubox",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=${C}&redirect_uri=${e}&scope=basic,netdisk&device_id=119827642&display=page&qrcode=1`}}const le=4194304;class ce extends de{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){var s;let n=null;try{const s=yield this.refreshToken();let a=this.baseFolder+"/"+o;a=a.replace(/\/+/g,"/"),a.startsWith("/")&&(a=a.substring(1));const d=r.join(this.storagePath,i),l=yield this.getFileSize(d),{contentMd5:c,sliceMd5:h,blockList:u}=yield this.calculateFileMd5(d,l),p=new URLSearchParams({path:"/"+a,size:l.toString(),isdir:"0",autoinit:"1",rtype:"3",block_list:JSON.stringify(u),"content-md5":c,"slice-md5":h,local_ctime:Math.floor(Date.now()/1e3).toString(),local_mtime:Math.floor(Date.now()/1e3).toString()}),y=yield e.post(`https://pan.baidu.com/rest/2.0/xpan/file?method=precreate&access_token=${s}`,p.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"pan.baidu.com"}});if(0!==y.data.errno)return console.error("预上传失败:",y.data),-7===y.data.errno?console.error("文件或目录名错误或无权访问"):-10===y.data.errno&&console.error("容量不足"),!1;const g=y.data.uploadid,m=y.data.block_list||[];if(0===m.length)return!0;const k=yield this.getUploadDomain(s,"/"+a,g);if(!k)return console.error("获取上传域名失败"),!1;n=yield t.promises.open(d,"r");for(const t of m){const r=t*le,i=Math.min(le,l-r),o=Buffer.alloc(i),{bytesRead:d}=yield n.read(o,0,i,r);if(0===d)break;const c=o.slice(0,d),h=u[t],p=new f;p.append("file",c,{filename:`chunk_${t}`,contentType:"application/octet-stream",knownLength:c.length});const y=`${k}/rest/2.0/pcs/superfile2?method=upload&access_token=${s}&type=tmpfile&path=${encodeURIComponent("/"+a)}&uploadid=${g}&partseq=${t}`,m=yield e.post(y,p,{headers:Object.assign(Object.assign({"User-Agent":"pan.baidu.com"},p.getHeaders()),{"Content-Length":p.getLengthSync().toString()}),maxContentLength:1/0,maxBodyLength:1/0,timeout:0});if(m.status>=300)throw 31024===m.data.errno?console.error("没有申请上传权限"):31299===m.data.errno?console.error("第一个分片的大小小于4MB"):31364===m.data.errno?console.error("超出分片大小限制"):31363===m.data.errno&&console.error("分片缺失"),new Error(`分片上传失败: ${JSON.stringify(m.data)}`);const v=m.data.md5;v&&v!==h&&console.warn(`分片 ${t} MD5不匹配: 期望 ${h}, 实际 ${v}`)}const v=new URLSearchParams({path:"/"+a,size:l.toString(),isdir:"0",block_list:JSON.stringify(u),uploadid:g,rtype:"3",local_ctime:Math.floor(Date.now()/1e3).toString(),local_mtime:Math.floor(Date.now()/1e3).toString()}),T=yield e.post(`https://pan.baidu.com/rest/2.0/xpan/file?method=create&access_token=${s}`,v.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":"pan.baidu.com"}});return 0===T.data.errno||(console.error("创建文件失败:",T.data),-7===T.data.errno?console.error("文件或目录名错误或无权访问"):-8===T.data.errno?console.error("文件或目录已存在"):-10===T.data.errno?console.error("云端容量已满"):10===T.data.errno?console.error("创建文件失败,一般是分片问题"):31190===T.data.errno?console.error("文件不存在,一般是分片上传阶段有问题"):31355===T.data.errno?console.error("参数异常,一般是uploadid参数传的有问题"):31365===T.data.errno&&console.error("文件总大小超限"),!1)}catch(e){return console.error("文件上传过程中发生错误:",(null===(s=e.response)||void 0===s?void 0:s.data)||e.message||e),!1}finally{n&&(yield n.close())}}))))))}))}getUploadDomain(t,r,i){return T(this,void 0,void 0,(function*(){try{const o=yield e.get("https://d.pcs.baidu.com/rest/2.0/pcs/file",{params:{method:"locateupload",appid:"250528",access_token:t,path:r,uploadid:i,upload_version:"2.0"},headers:{"User-Agent":"pan.baidu.com"}});if(0!==o.data.error_code)return console.error("获取上传域名失败:",o.data),null;const s=o.data.servers||[],n=s.find((e=>e.server.startsWith("https://")));return n?n.server:s.length>0?s[0].server:(console.error("没有可用的上传服务器"),null)}catch(e){return console.error("获取上传域名时出错:",e),null}}))}calculateFileMd5(e,r){return T(this,void 0,void 0,(function*(){const i=yield t.promises.open(e,"r");try{const e=g.createHash("md5"),t=[];let o="",s=0;for(;sthis.retryOperation((()=>T(this,void 0,void 0,(function*(){var s,n;this.taskQueue.setDownloadedSize(0);try{const a=yield this.refreshToken();let d,l=this.baseFolder+"/"+i;l=l.replace(/\/+/g,"/"),l.startsWith("/")&&(l=l.substring(1));const c=yield e.get("https://pan.baidu.com/rest/2.0/xpan/file",{params:{method:"list",access_token:a,dir:"/"+l.substring(0,l.lastIndexOf("/")),web:1},headers:{"User-Agent":"pan.baidu.com"}});if(0!==c.data.errno)return console.error("获取文件列表失败:",c.data),!1;const h=l.split("/").pop(),u=null===(s=c.data.list)||void 0===s?void 0:s.find((e=>e.server_filename===h));if(!u)return console.error("文件不存在:",i),!1;const p=yield e.get("https://pan.baidu.com/rest/2.0/xpan/multimedia",{params:{method:"filemetas",access_token:a,fsids:JSON.stringify([u.fs_id]),dlink:1},headers:{"User-Agent":"pan.baidu.com"}});if(0!==p.data.errno||!(null===(n=p.data.list)||void 0===n?void 0:n[0]))return console.error("获取下载链接失败:",p.data),!1;d=p.data.list[0];const f=d.dlink,y=yield e.get(f,{responseType:"stream",params:{access_token:a},headers:{"User-Agent":"pan.baidu.com"}});let g=0;const m=t.createWriteStream(r.join(this.storagePath,o));y.data.on("data",(e=>{g+=e.length,this.taskQueue.setDownloadedSize(g)})),yield new Promise(((e,t)=>{y.data.pipe(m),m.on("finish",(()=>{e()})),m.on("error",t)}));return(yield this.getFileSize(r.join(this.storagePath,o)))===d.size||(console.error("Downloaded file size does not match expected size."),yield t.promises.unlink(r.join(this.storagePath,o)),!1)}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getFileSize(e){return T(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}class he{constructor(e){this.username=e.username,this.password=e.password,this.url=e.url,this.refreshTokenPromise=null,this.taskQueue=new w(3)}retryOperation(e,t=1){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{return(yield e.get(`${this.url}/list`,{params:{dir:t},auth:{username:this.username,password:this.password}})).data.files.map((e=>({name:e.name,size:e.size||0,type:"file"===e.type?"file":"folder",modified:e.modifiedTime})))||[]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{return(yield e.delete(`${this.url}/delete`,{params:{dir:t.split("/").slice(0,-1).join("/")||"",filename:t.split("/").pop()},auth:{username:this.username,password:this.password}})).data.success}catch(e){return console.error("Error deleting file:",e),!1}}))}}const ue=i(o.pipeline);class pe extends he{constructor(e,t){super(e),this.storagePath=t}getAuthHeader(){return`Basic ${btoa(`${this.username}:${this.password}`)}`}uploadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){try{o.split("/").pop();const s=o.substring(0,o.lastIndexOf("/"))||"",n=t.createReadStream(r.join(this.storagePath,i)),a=new f;a.append("file",n);const d=yield e.post(`${this.url}/upload?dir=${encodeURIComponent(s)}`,a,{headers:Object.assign(Object.assign({},a.getHeaders()),{Authorization:this.getAuthHeader()}),maxContentLength:1/0,maxBodyLength:1/0});return!(d.status>=300)||(console.error("Error occurred during file upload:",d),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{const s=i.split("/").pop()||"",n=i.substring(0,i.lastIndexOf("/"))||"",a=t.createWriteStream(r.join(this.storagePath,o)),d=yield e({url:`${this.url}/download`,method:"GET",params:{dir:n,filename:s},headers:{Authorization:this.getAuthHeader()},maxContentLength:1/0,maxBodyLength:1/0,responseType:"stream"});if(d.status>=300)return console.error("Error occurred during file download:",d),a.destroy(),t.existsSync(r.join(this.storagePath,o))&&t.unlinkSync(r.join(this.storagePath,o)),!1;let l=0;return d.data.on("data",(e=>{l+=e.length,this.taskQueue.setDownloadedSize(l)})),yield ue(d.data,a),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class fe{constructor(e,t){this.baseUrl="https://proapi.115.com",this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new w(1),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return T(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getUploadCredentials(t){return T(this,void 0,void 0,(function*(){try{const r=yield e.get(`${this.baseUrl}/open/upload/get_token`,{headers:{Authorization:`Bearer ${t}`}});return r.status>=300||!r.data.state?(console.error("Error getting upload credentials:",r.data),null):r.data.data}catch(e){return console.error("Error occurred during get upload credentials:",e),null}}))}generateOSSPolicy(e,t,r=new Date(Date.now()+36e5)){const i={expiration:r.toISOString(),conditions:[{bucket:e},{key:t},["starts-with","$success_action_status","2"],["content-length-range",0,1073741824]]};return JSON.stringify(i)}refreshToken(){return T(this,void 0,void 0,(function*(){return this.config.access_token&&this.config.expires_at>(new Date).getTime()?this.config.access_token:(this.refreshTokenPromise||(this.refreshTokenPromise=(()=>T(this,void 0,void 0,(function*(){try{let e=this.config.refresh_token;if(!e)throw new Error("No refresh token available");let t=yield this.thirdpartyRequest.refreshThirdToken({provider:"yiyiwu",refresh_token:e});if(!t.data.access_token)return"";if(this.config.access_token=t.data.access_token,this.config.expires_at=(new Date).getTime()+18e5,!t.data.refresh_token)throw new Error("No refresh token returned");this.config.refresh_token=t.data.refresh_token;let r=yield this.thirdpartyRequest.encryptToken({token:JSON.stringify({refresh_token:t.data.refresh_token,access_token:t.data.access_token,expires_at:this.config.expires_at})});return 200===r.code&&(yield this.thirdpartyRequest.TokenService.setToken("yiyiwu_token",r.data.encrypted_token)),t.data.access_token}finally{this.refreshTokenPromise=null}})))()),this.refreshTokenPromise)}))}authToken(e){return T(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"yiyiwu",redirect_uri:_,code:e})).data}))}getAuthUrl(e){return`https://passportapi.115.com/open/authorize?client_id=${I}&response_type=code&redirect_uri=${e}`}}class ye extends fe{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(e,t){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){var i;try{const i=yield this.refreshToken();let o=this.baseFolder+"/"+t;o.startsWith("/")||(o="/"+o);let s=r.dirname(o),n=yield this.getFolderInfo(s,!0),a="0";if(n)a=n.file_id;else{let e=yield this.createFolder(s);if(!e)return console.error("Failed to create folder:",s),!1;a=e}const d=r.join(this.storagePath,e),l=yield this.getFileSize(d),c=yield this.calculateFileSha1(d),h=yield this.calculatePreSha1(d),u=r.basename(t);yield this.deleteFileWithoutQueue(t);let p=yield this.initializeUpload(a,u,l,c,h,i);if(!p)return console.error("Failed to initialize upload"),!1;if((6===p.status||7===p.status||8===p.status)&&(p=yield this.handleSecondAuth(a,p,d,u,l,c,h,i),!p))return console.error("Second authentication failed"),!1;if(2===p.status)return console.info(`File ${e} uploaded successfully via instant upload.`),!0;const f=yield this.getUploadCredentials(i);if(!f)return console.error("Failed to get upload credentials"),!1;return(yield this.uploadToObjectStorage(d,p,f))?(console.info(`File ${e} uploaded successfully.`),!0):(console.error("Failed to upload to object storage"),!1)}catch(e){return console.error("Error occurred during file upload:",(null===(i=e.response)||void 0===i?void 0:i.data)||e.message||e),!1}}))))))}))}calculateFileSha1(e){return T(this,void 0,void 0,(function*(){return new Promise(((r,i)=>{const o=g.createHash("sha1"),s=t.createReadStream(e);s.on("data",(e=>{o.update(e)})),s.on("end",(()=>{r(o.digest("hex"))})),s.on("error",(e=>{i(e)}))}))}))}calculatePreSha1(e){return T(this,void 0,void 0,(function*(){return new Promise(((r,i)=>{const o=g.createHash("sha1"),s=t.createReadStream(e,{start:0,end:131071});s.on("data",(e=>{o.update(e)})),s.on("end",(()=>{r(o.digest("hex"))})),s.on("error",(e=>{i(e)}))}))}))}handleSecondAuth(e,r,i,o,s,n,a,d){return T(this,void 0,void 0,(function*(){try{if(!r.sign_check)return console.error("No sign_check provided for second authentication"),null;const[l,c]=r.sign_check.split("-"),h=parseInt(l),u=parseInt(c),p=Buffer.alloc(u-h+1),f=yield t.promises.open(i,"r");try{yield f.read(p,0,p.length,h);const t=g.createHash("sha1");t.update(p);const i=t.digest("hex").toUpperCase();return yield this.initializeUpload(e,o,s,n,a,d,r.sign_key,i,r.pick_code)}finally{yield f.close()}}catch(e){return console.error("Error during second authentication:",e),null}}))}calculateOSSSignature(e,t){const r=Buffer.from(t).toString("base64");return g.createHmac("sha1",e).update(r).digest("base64")}uploadToObjectStorage(i,o,s){var n;return T(this,void 0,void 0,(function*(){try{const n=s.endpoint,a=o.bucket,d=o.object;let l;if(n.includes(a))l=n;else{l=`https://${a}.${n.replace(/^https?:\/\//,"")}`}const c=this.generateOSSPolicy(a,d),h=this.calculateOSSSignature(s.AccessKeySecret,c),u=Buffer.from(c).toString("base64"),p=new f;if(p.append("key",d),p.append("policy",u),p.append("OSSAccessKeyId",s.AccessKeyId),p.append("signature",h),p.append("x-oss-security-token",s.SecurityToken),p.append("success_action_status","200"),o.callback&&o.callback.callback){const e=Buffer.from(o.callback.callback).toString("base64");if(p.append("callback",e),o.callback.callback_var){const e=JSON.parse(o.callback.callback_var);for(const[t,r]of Object.entries(e))p.append(t,String(r))}}const y=t.createReadStream(i);p.append("file",y,r.basename(i));const g=yield e.post(l,p,{headers:Object.assign({},p.getHeaders()),maxContentLength:1/0,maxBodyLength:1/0});return 200===g.status||204===g.status||(console.error("Upload failed with status:",g.status),!1)}catch(e){return console.error("Error uploading file via REST API:",(null===(n=e.response)||void 0===n?void 0:n.data)||e.message||e),!1}}))}downloadFile(i,o){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){this.taskQueue.setDownloadedSize(0);try{let s=this.baseFolder+"/"+i;s=s.replace(/\/+/g,"/"),s.startsWith("/")||(s="/"+s);const n=yield this.getFolderInfo(s,!1);if(!n||!n.pick_code)return console.error("Failed to get file info or pick_code for:",i),!1;const a=yield this.getFileDownloadUrl(n.pick_code);if(!a)return console.error("Failed to get download URL for:",i),!1;const d=yield e.get(a.url,{responseType:"stream"});let l=0;const c=t.createWriteStream(r.join(this.storagePath,o));return d.data.on("data",(e=>{l+=e.length,this.taskQueue.setDownloadedSize(l)})),yield new Promise(((e,t)=>{d.data.pipe(c),c.on("finish",(()=>{e()})),c.on("error",t)})),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return(yield this.listFileInfos(e)).map((e=>e.name))}))}listFileInfos(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();(t=this.baseFolder+"/"+t).startsWith("/")||(t="/"+t);let i=[],o=0;const s=1150;let n=!0,a=yield this.getFolderInfo(t,!0),d="";if(a)d=a.file_id;else{let e=yield this.createFolder(t);if(!e)return console.error("Failed to create folder:",t),[];d=e}if(!d)return console.error("Failed to get or create folder ID:",t),[];let l=d;for(;n;){const t={offset:o,limit:s,cur:1,show_dir:1};l&&(t.cid=l);const a=yield e.get(`${this.baseUrl}/open/ufile/files`,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"},params:t});if(a.status>=300)break;const d=a.data.data||[];i=i.concat(d),d.length({name:e.fn,size:e.fs||0,type:"0"===e.fc?"folder":"file",modified:new Date(1e3*e.upt).toISOString()})))}catch(e){return console.error("Error occurred during file list:",e),[]}}))}getFileDownloadUrl(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=new f;i.append("pick_code",t);const o=yield e.post(`${this.baseUrl}/open/ufile/downurl`,i,{headers:Object.assign({Authorization:`Bearer ${r}`},i.getHeaders())});if(o.status>=300)return console.error("Error getting download URL:",o.data),null;const s=o.data.data,n=Object.keys(s)[0];return n&&s[n]?s[n].url:(console.error("No file data found in download URL response"),null)}catch(e){return console.error("Error occurred during get download URL:",e),null}}))}initializeUpload(t,r,i,o,s,n,a,d,l){return T(this,void 0,void 0,(function*(){try{const c=new f;c.append("file_name",r),c.append("file_size",i.toString()),t?c.append("target","U_1_"+t):c.append("target","U_1_0"),c.append("fileid",o),c.append("preid",s),c.append("topupload","0"),l&&c.append("pick_code",l),a&&c.append("sign_key",a),d&&c.append("sign_val",d);const h=yield e.post(`${this.baseUrl}/open/upload/init`,c,{headers:Object.assign({Authorization:`Bearer ${n}`},c.getHeaders())});return h.status>=300||!h.data.state?(console.error("Error initializing upload:",h.data),null):h.data.data}catch(e){return console.error("Error occurred during upload initialization:",e),null}}))}createFolder(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=t.replace(/^\/+|\/+$/g,"");if(!i)return"";const o=i.split("/");let s="",n="0";for(const t of o){s=s?`${s}/${t}`:t;const i=yield this.getFolderInfo(s,!0);if(i&&i.file_id)n=i.file_id;else{const i=new f;i.append("pid",n),i.append("file_name",t);const o=yield e.post(`${this.baseUrl}/open/folder/add`,i,{headers:Object.assign({Authorization:`Bearer ${r}`},i.getHeaders())});if(o.status>=300||!o.data.state)return console.error("Error creating folder:",o.data),"";n=o.data.data.file_id}}return n}catch(e){return console.error("Error occurred during folder creation:",e),""}}))}deleteFile(e){return T(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>T(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return T(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();t=this.baseFolder+"/"+t;let i=yield this.getFolderInfo(t,!1);if(!i)return!0;let o=new f;o.append("file_ids",i.file_id);const s=yield e.post(`${this.baseUrl}/open/ufile/delete`,o,{headers:Object.assign({Authorization:`Bearer ${r}`},o.getHeaders())});return!(s.status>=300||!s.data.state)||(console.error("Error deleting file:",s),!1)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}getFolderInfo(t,r){return T(this,void 0,void 0,(function*(){if(""===t||"/"===t)return{file_id:"0"};t.startsWith("/")||(t="/"+t);try{const r=yield this.refreshToken();let i=new f;i.append("path",t);const o=yield e.post(`${this.baseUrl}/open/folder/get_info`,i,{headers:Object.assign(Object.assign({},i.getHeaders()),{Authorization:`Bearer ${r}`})});return o.status>=300||!o.data.state||0===o.data.data.length?(console.error("Error getting file info:",o.data),null):o.data.data}catch(e){return console.error("Error occurred during get file info:",e),null}}))}getFileSize(e){return T(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}const ge=["book","config","cover","font"];class me{constructor(e,t,r,i){this.type=e,this.storagePath=r,this.remote="dropbox"===e?new j(t,r,i):"microsoft"===e?new W(t,r,i):"google"===e?new q(t,r,i):"microsoft_exp"===e?new W(Object.assign(Object.assign({},t),{isExp:!0}),r,i):"google_exp"===e?new q(Object.assign(Object.assign({},t),{isExp:!0}),r,i):"s3compatible"===e?new J(t,r):"webdav"===e?new H(t,r):"docker"===e?new pe(t,r):"ftp"===e?new U(t,r):"sftp"===e?new G(t,r):"boxnet"===e?new te(t,r,i):"mega"===e?new ie(t,r):"adrive"===e?new se(t,r,i):"pcloud"===e?new ae(t,r,i):"dubox"===e?new ce(t,r,i):"yandex"===e?new Y(t,r,i):"yiyiwu"===e?new ye(t,r,i):new Z}downloadFile(e,i,o){return T(this,void 0,void 0,(function*(){if(t.existsSync(r.join(this.storagePath+"/"+o))||t.mkdirSync(r.join(this.storagePath+"/"+o)),"cover"!==o){if(!(yield this.listFiles(o)).find((t=>e.indexOf(t)>-1)))return!1}return yield this.remote.downloadFile(o+"/"+e,o+"/"+i)}))}uploadFile(e,t,r){return T(this,void 0,void 0,(function*(){return yield this.remote.uploadFile(r+"/"+e,r+"/"+t)}))}deleteFile(e,t){return T(this,void 0,void 0,(function*(){return!!(yield this.listFiles(t)).find((t=>e.indexOf(t)>-1))&&(yield this.remote.deleteFile(t+"/"+e))}))}isExist(e,t){return T(this,void 0,void 0,(function*(){return(yield this.listFiles(t)).find((t=>-1!==t.indexOf(e)))}))}listFiles(e){return T(this,void 0,void 0,(function*(){return yield this.remote.listFiles(e)}))}listFileInfos(e){return T(this,void 0,void 0,(function*(){return yield this.remote.listFileInfos(e)}))}downloadAllFiles(){return T(this,void 0,void 0,(function*(){for(let e of ge){let t=yield this.listFiles(e);for(let r of t)yield this.downloadFile(r,r,e)}}))}authToken(e){return T(this,void 0,void 0,(function*(){return yield this.remote.authToken(e)}))}getAuthUrl(e){return this.remote.getAuthUrl(e)}getStats(){return this.remote.taskQueue.getStats()}resetCounters(){this.remote.taskQueue.resetCounters()}getDownloadedSize(){return this.remote.taskQueue.getDownloadedSize()}}const ke={notes:"SELECT * FROM notes WHERE key = ?",bookmarks:"SELECT * FROM bookmarks WHERE key = ?",books:"SELECT * FROM books WHERE key = ?",plugins:"SELECT * FROM plugins WHERE key = ?",words:"SELECT * FROM words WHERE key = ?"},ve={notes:"SELECT * FROM notes WHERE bookKey = ?",bookmarks:"SELECT * FROM bookmarks WHERE bookKey = ?",words:"SELECT * FROM words WHERE bookKey = ?",books:"SELECT * FROM books WHERE key = ?"},Te={notes:"DELETE FROM notes WHERE bookKey = ?",bookmarks:"DELETE FROM bookmarks WHERE bookKey = ?",words:"DELETE FROM words WHERE bookKey = ?"};function be(e){for(const t in e)e.hasOwnProperty(t)&&(e[`temp-${t}`]=e[t]);return e}const Fe={notes:e=>{let t=Object.assign({},e);return t.date=JSON.parse(e.date),t.tag=JSON.parse(e.tag),t},bookmarks:e=>e,books:e=>e,plugins:e=>{let t=Object.assign({},e);return e.autoValue||delete t.autoValue,e.langList?t.langList=JSON.parse(e.langList):delete t.langList,e.voiceList?t.voiceList=JSON.parse(e.voiceList):delete t.voiceList,t.config=JSON.parse(e.config),t},words:e=>{let t=Object.assign({},e);return t.date=JSON.parse(e.date),t}};var we={sqlStatement:{createTableStatement:be({notes:'\n CREATE TABLE IF NOT EXISTS "notes" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "date" object,\n "chapter" text,\n "chapterIndex" integer,\n "text" text,\n "cfi" text,\n "range" text,\n "notes" text,\n "percentage" text,\n "color" integer,\n "tag" array\n )\n ',bookmarks:'\n CREATE TABLE IF NOT EXISTS "bookmarks" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "cfi" text,\n "label" text,\n "percentage" text,\n "chapter" text\n );\n ',books:'\n CREATE TABLE IF NOT EXISTS "books" (\n "key" text PRIMARY KEY,\n "name" text,\n "author" text,\n "description" text,\n "md5" text,\n "cover" text,\n "format" text,\n "publisher" text,\n "size" integer,\n "page" integer,\n "path" text,\n "charset" text\n );\n ',plugins:'\n CREATE TABLE IF NOT EXISTS "plugins" (\n "key" text PRIMARY KEY,\n "type" text,\n "displayName" text,\n "icon" text,\n "version" text,\n "config" object,\n "autoValue" string,\n "langList" text,\n "voiceList" text,\n "scriptSHA256" text,\n "script" text\n );\n ',words:'\n CREATE TABLE IF NOT EXISTS "words" (\n "key" text PRIMARY KEY,\n "bookKey" text,\n "date" object,\n "word" text,\n "chapter" text\n );\n '}),getAllStatement:be({notes:"SELECT * FROM notes",bookmarks:"SELECT * FROM bookmarks",books:"SELECT * FROM books",plugins:"SELECT * FROM plugins",words:"SELECT * FROM words"}),getPagedStatement:be({notes:"SELECT * FROM notes LIMIT ? OFFSET ?",bookmarks:"SELECT * FROM bookmarks LIMIT ? OFFSET ?",books:"SELECT * FROM books LIMIT ? OFFSET ?",plugins:"SELECT * FROM plugins LIMIT ? OFFSET ?",words:"SELECT * FROM words LIMIT ? OFFSET ?"}),getCountStatement:be({notes:"SELECT COUNT(*) as count FROM notes",bookmarks:"SELECT COUNT(*) as count FROM bookmarks",books:"SELECT COUNT(*) as count FROM books",plugins:"SELECT COUNT(*) as count FROM plugins",words:"SELECT COUNT(*) as count FROM words"}),saveStatement:be({notes:"INSERT OR REPLACE INTO notes (key, bookKey, chapter, chapterIndex, text, cfi, range, notes, date, percentage, color, tag) VALUES (@key, @bookKey, @chapter, @chapterIndex, @text, @cfi, @range, @notes, @date, @percentage, @color, @tag)",bookmarks:"INSERT OR REPLACE INTO bookmarks (key, bookKey, cfi, label, percentage, chapter) VALUES (@key, @bookKey, @cfi, @label, @percentage, @chapter)",books:"INSERT OR REPLACE INTO books (key, name, author, description, md5, cover, format, publisher, size, page, path, charset) VALUES (@key, @name, @author, @description, @md5, @cover, @format, @publisher, @size, @page, @path, @charset)",plugins:"INSERT OR REPLACE INTO plugins (key, type, displayName, icon, version, config, autoValue, langList, voiceList, scriptSHA256, script) VALUES (@key, @type, @displayName, @icon, @version, @config, @autoValue, @langList, @voiceList, @scriptSHA256, @script)",words:"INSERT OR REPLACE INTO words (key, bookKey, date, word, chapter) VALUES (@key, @bookKey, @date, @word, @chapter)"}),deleteAllStatement:be({notes:"DELETE FROM notes",bookmarks:"DELETE FROM bookmarks",books:"DELETE FROM books",plugins:"DELETE FROM plugins",words:"DELETE FROM words"}),updateStatement:be({notes:"UPDATE notes SET bookKey = @bookKey, chapter = @chapter, chapterIndex = @chapterIndex, text = @text, cfi = @cfi, range = @range, notes = @notes, date = @date, percentage = @percentage, color = @color, tag = @tag WHERE key = @key",bookmarks:"UPDATE bookmarks SET bookKey = @bookKey, cfi = @cfi, label = @label, percentage = @percentage, chapter = @chapter WHERE key = @key",books:"UPDATE books SET name = @name, author = @author, description = @description, md5 = @md5, cover = @cover, format = @format, publisher = @publisher, size = @size, page = @page, path = @path, charset = @charset WHERE key = @key",plugins:"UPDATE plugins SET type = @type, displayName = @displayName, icon = @icon, version = @version, config = @config, autoValue = @autoValue, langList = @langList, voiceList = @voiceList, scriptSHA256 = @scriptSHA256, script = @script WHERE key = @key",words:"UPDATE words SET bookKey = @bookKey, date = @date, word = @word, chapter = @chapter WHERE key = @key"}),deleteStatement:be({notes:"DELETE FROM notes WHERE key = ?",bookmarks:"DELETE FROM bookmarks WHERE key = ?",books:"DELETE FROM books WHERE key = ?",plugins:"DELETE FROM plugins WHERE key = ?",words:"DELETE FROM words WHERE key = ?"}),dropStatement:be({notes:"DROP TABLE IF EXISTS notes",bookmarks:"DROP TABLE IF EXISTS bookmarks",books:"DROP TABLE IF EXISTS books",plugins:"DROP TABLE IF EXISTS plugins",words:"DROP TABLE IF EXISTS words"}),getStatement:be(ke),getByBookKeyStatement:be(ve),getByBookKeysStatement:be({notes:e=>`SELECT * FROM notes WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,bookmarks:e=>`SELECT * FROM bookmarks WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,words:e=>`SELECT * FROM words WHERE bookKey IN (${e.map((()=>"?")).join(",")})`,books:e=>`SELECT * FROM books WHERE key IN (${e.map((()=>"?")).join(",")})`}),deleteByBookKeyStatement:be(Te)},jsonToSqlite:be({notes:e=>{let t=Object.assign({},e);return t.date=JSON.stringify(e.date),t.tag=JSON.stringify(e.tag),t},bookmarks:e=>e,books:e=>{let t=Object.assign({},e);return t.page=e.page||0,t},plugins:e=>{let t=Object.assign({},e);return e.autoValue||(t.autoValue=null),e.langList?t.langList=JSON.stringify(e.langList):t.langList=null,e.voiceList?t.voiceList=JSON.stringify(e.voiceList):t.voiceList=null,t.config=JSON.stringify(e.config),t},words:e=>{let t=Object.assign({},e);return t.date=JSON.stringify(e.date),t}}),sqliteToJson:be(Fe)};const Se=S,Ee=E;class _e{constructor(e,t,r){this.TokenService=e,this.ConfigService=t,this.baseUrl="china"===r?Ee:Se,this.refreshToken="",this.accessToken="",this.streamPromise=null,this.expiresAt=0}refreshUserToken(){return T(this,void 0,void 0,(function*(){if(this.refreshToken=yield this.TokenService.getToken("refresh_token"),!this.refreshToken)return{code:401,message:"refresh token not found"};let t=(yield e.post(this.baseUrl+"/api/v1/public/user/refresh_token",{refresh_token:this.refreshToken})).data;return 200===t.code&&(yield this.TokenService.setToken("access_token",t.data.access_token),yield this.TokenService.setToken("refresh_token",t.data.refresh_token),yield this.TokenService.setToken("expires_at",(1e3*t.data.expires_at).toString()),this.accessToken=t.data.access_token,this.refreshToken=t.data.refresh_token,this.expiresAt=1e3*t.data.expires_at),t}))}requestWithRetry(e){return T(this,void 0,void 0,(function*(){return _e.requestQueue||(_e.requestQueue=[]),new Promise(((t,r)=>{_e.requestQueue.push({config:e,resolve:t,reject:r}),_e.processingQueue||this.processQueue()}))}))}isTokenValid(){return T(this,void 0,void 0,(function*(){if(this.accessToken||(this.accessToken=(yield this.TokenService.getToken("access_token"))||""),!this.expiresAt){const e=yield this.TokenService.getToken("expires_at");this.expiresAt=e?parseInt(e):(new Date).getTime()+31536e9}return""!==this.accessToken&&this.expiresAt>(new Date).getTime()+6e4}))}processQueue(){return T(this,void 0,void 0,(function*(){if(!_e.processingQueue){_e.processingQueue=!0;try{for(;_e.requestQueue.length>0;){const e=_e.requestQueue.shift();try{let t=yield this.executeRequest(e.config);e.resolve(t)}catch(t){e.reject(t)}}}finally{_e.processingQueue=!1}}}))}executeRequest(t){return T(this,void 0,void 0,(function*(){try{try{this.accessToken=(yield this.TokenService.getToken("access_token"))||""}catch(e){console.error("Error get Token:",e)}let r="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);if(t.baseURL=this.baseUrl,t.headers)t.headers.Authorization="Bearer "+this.accessToken,t.headers["X-Request-ID"]=r;else{let e=this.ConfigService.getItem("appVersion"),i=this.ConfigService.getItem("appPlatform");t.headers={Authorization:"Bearer "+this.accessToken,"X-Request-ID":r,"X-App-Version":e||"1.0.0","X-App-Platform":i||"web"}}let i=(yield e(t)).data;if(402===i.code){let r=yield this.refreshUserToken();if(200===r.code){return t.headers=t.headers||{},t.headers.Authorization="Bearer "+this.accessToken,(yield e(t)).data}return r}return 200!==i.code&&this.ConfigService.setItem("errorLog",this.ConfigService.getItem("errorLog")+"\n"+JSON.stringify({request:t.data,url:t.url,result:i,requestID:r})),i}catch(e){return console.error("Request execution error:",e),{code:503,message:"network error",data:null}}}))}requestWithStream(e,t,r){return T(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>T(this,void 0,void 0,(function*(){try{(yield this.isTokenValid())||(yield this.refreshUserToken());let i=this.accessToken||"",o="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((s,n)=>{let a=this.ConfigService.getItem("appVersion"),d=this.ConfigService.getItem("appPlatform");const l=new r(this.baseUrl+e.url,{headers:{"Content-Type":"application/json",Authorization:"Bearer "+i,"X-Request-ID":o,"X-App-Version":a||"1.0.0","X-App-Platform":d||"web"},method:e.method,body:JSON.stringify(e.data),pollingInterval:0});l.addEventListener("open",(()=>{console.info("Connection to OpenAI established.")})),l.addEventListener("message",(e=>T(this,void 0,void 0,(function*(){if(!e.data)return;const r=JSON.parse(e.data);r.done?(l.close(),s(r)):t(r.data)})))),l.addEventListener("error",(e=>{if(console.info("Error:",e),!e.data)return;const t=JSON.parse(e.data);s(t),l.close()}))}))}finally{this.streamPromise=null}})))()),this.streamPromise}))}requestWithFetch(e,t){return T(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>T(this,void 0,void 0,(function*(){try{(yield this.isTokenValid())||(yield this.refreshUserToken());let r=this.accessToken||"",i="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((o,s)=>T(this,void 0,void 0,(function*(){let s=this.ConfigService.getItem("appVersion"),n=this.ConfigService.getItem("appPlatform");var a=new m(this.baseUrl+e.url,{headers:{"Content-Type":"text/plain",Authorization:"Bearer "+r,"X-Request-ID":i,"X-App-Version":s||"1.0.0","X-App-Platform":n||"web"},payload:JSON.stringify(e.data),method:"POST"});a.addEventListener("message",(e=>T(this,void 0,void 0,(function*(){if(!e.data)return;const r=JSON.parse(e.data);r.done?(a.close(),o(r)):t(r.data)})))),a.addEventListener("open",(e=>{console.info(e,"Connection to OpenAI established.")})),a.addEventListener("error",(e=>{if(console.error(e,"Error occurred while connecting to OpenAI"),!e.data)return;const t=JSON.parse(e.data);o(t),a.close()}))}))))}finally{this.streamPromise=null}})))()),this.streamPromise}))}}_e.processingQueue=!1,_e.requestQueue=[];class xe extends _e{constructor(e,t,r){super(e,t,r),this.serverRegion=r}encryptToken(e){return T(this,void 0,void 0,(function*(){let t=e.token,r=F.encode(t),{extracted:i,remaining:o}=function(e){let t="",r="",i=[],o=1;for(;o<=e.length;)i.push(o-1),o*=2;for(let o=0;o-1){let r=t.split("#");e.encrypted_token=r[1]}const r={method:"post",url:"/api/v1/pro/thirdparty/decrypt_token",data:e};let i=yield this.requestWithRetry(r);if(t.indexOf("#")>-1&&i.data&&i.data.token){let e=t.split("#"),r=function(e,t){let r="",i=[],o=1,s=e.length+t.length;for(;o<=s;)i.push(o-1),o*=2;let n=0,a=0;for(let o=0;o-1&&r.splice(i,1),this.setAllListConfig(r,t)}static setListConfig(e,t){let r=this.getAllListConfig(t);const i=r.indexOf(e);i>-1?(r.splice(i,1),r.unshift(e)):r.unshift(e),this.setAllListConfig(r,t)}static setAllListConfig(e,t,r=!0){this.setItem(t,JSON.stringify(e)),r&&this.setSyncRecord({type:"config",catergory:"listConfig",name:"general",key:t},{operation:"update",time:Date.now()})}static setObjectConfig(e,t,r,i=!0){let o=this.getAllObjectConfig(r);o[e]=t,i&&this.setSyncRecord({type:"config",catergory:"objectConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllObjectConfig(o,r)}static getObjectConfig(e,t,r){return this.getAllObjectConfig(t)[e]||r}static getAllObjectConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static setAllObjectConfig(e,t){this.setItem(t,JSON.stringify(e))}static deleteObjectConfig(e,t){let r=this.getAllObjectConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"objectConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllObjectConfig(r,t)}static getAllMapConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static getMapConfig(e,t){return this.getAllMapConfig(t)[e]||[]}static setAllMapConfig(e,t){this.setItem(t,JSON.stringify(e))}static setMapConfig(e,t,r){let i=this.getAllMapConfig(r);void 0===i[e]&&(i[e]=[]),t&&-1===i[e].indexOf(t)&&i[e].unshift(t),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(i,r)}static setOneMapConfig(e,t,r,i=!0){let o=this.getAllMapConfig(r);o[e]=t,i&&this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(o,r)}static deleteFromMapConfig(e,t,r){let i=this.getAllMapConfig(r),o=i[e].indexOf(t);i[e].splice(o,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(i,r)}static deleteFromAllMapConfig(e,t){let r=this.getAllMapConfig(t);Object.keys(r).forEach((i=>{let o=r[i].indexOf(e);o>-1&&(r[i].splice(o,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:i},{operation:"update",time:Date.now()}))})),this.setAllMapConfig(r,t)}static deleteMapConfig(e,t){let r=this.getAllMapConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllMapConfig(r,t)}static getFromAllMapConfig(e,t){let r=this.getAllMapConfig(t),i=[];for(let t in r)r[t]&&r[t].indexOf(e)>-1&&i.push(t);return i}static getSyncRecord(e){return JSON.parse(this.getItem("syncRecord")||"{}")[e.type+"."+e.catergory+"."+e.name+"."+e.key]||{operation:"",time:0}}static getAllSyncRecord(){return JSON.parse(this.getItem("syncRecord")||"{}")}static flushSyncRecords(){if(0===Object.keys(this.pendingSyncRecords).length)return;let e=JSON.parse(this.getItem("syncRecord")||"{}");Object.assign(e,this.pendingSyncRecords),this.setItem("syncRecord",JSON.stringify(e)),this.pendingSyncRecords={},this.syncRecordTimer=null}static setSyncRecord(e,t){const r=e.type+"."+e.catergory+"."+e.name+"."+e.key;this.pendingSyncRecords[r]=t,null!==this.syncRecordTimer&&clearTimeout(this.syncRecordTimer),this.syncRecordTimer=setTimeout((()=>{this.flushSyncRecords()}),this.DEBOUNCE_DELAY)}static setAllSyncRecord(e){this.setItem("syncRecord",JSON.stringify(e))}}).pendingSyncRecords={},Ce.syncRecordTimer=null,Ce.DEBOUNCE_DELAY=1e3,Ce);var Pe,Ae,Ce;let Ie;const $e=new Uint8Array(16);function ze(){if(!Ie&&(Ie="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Ie))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Ie($e)}const Le=[];for(let e=0;e<256;++e)Le.push((e+256).toString(16).slice(1));var Qe={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function De(e,t,r){if(Qe.randomUUID&&!t&&!e)return Qe.randomUUID();const i=(e=e||{}).random||(e.rng||ze)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=i[e];return t}return function(e,t=0){return Le[e[t+0]]+Le[e[t+1]]+Le[e[t+2]]+Le[e[t+3]]+"-"+Le[e[t+4]]+Le[e[t+5]]+"-"+Le[e[t+6]]+Le[e[t+7]]+"-"+Le[e[t+8]]+Le[e[t+9]]+"-"+Le[e[t+10]]+Le[e[t+11]]+Le[e[t+12]]+Le[e[t+13]]+Le[e[t+14]]+Le[e[t+15]]}(i)}const je=new k;class Ue{static encrypt(e,t){let r="";for(let i=0;ie?parseFloat(e+""):0,d=(e,t)=>c(void 0,void 0,void 0,(function*(){let n="";if(e&&e.load){let t=yield fetch(yield e.load()).then((e=>e.blob()));n=yield t.text()}return t||(e&&e.loadAsset&&(n=yield u(n,e.loadAsset)),n=f(n)),n})),h=e=>Array.from(e.querySelectorAll("img, image")),u=(e,t)=>c(void 0,void 0,void 0,(function*(){let n=(new DOMParser).parseFromString(e,"text/html"),i=h(n);for(let e=0;e{let t=(new DOMParser).parseFromString(e,"text/html"),n=h(t);if(0===n.length)return e;for(let e=0;e{var n=document.createElement("iframe");n.style.width=t?100*(t-.4)+"%":"100%",n.style.margin="0",n.style.border="0",n.style.padding="0",n.style.minHeight="calc(100% - 2px)",n.style.fontSize="100%",n.style.font="inherit",n.scrolling="no",n.tabIndex=0,n.id="kookit-iframe",n.style.verticalAlign="baseline",e.innerHTML="",e.appendChild(n),t&&(e.scrollLeft=e.scrollWidth/2-e.clientWidth/2)},m=(e,t,n)=>{let i=Math.floor(n.clientWidth/12),r=i%2==0?i:i-1;return{totalPage:"scroll"===e?Math.floor(n.scrollHeight/(n.clientHeight-50)):"single"===e?Math.round(parseFloat(t.body.scrollWidth/(t.body.clientWidth+r)+"")):2*Math.round(parseFloat(t.body.scrollWidth/(t.body.clientWidth+r)+"")),currentPage:"scroll"===e?Math.floor(n.scrollTop/(n.clientHeight-50))+1:Math.round(parseFloat(g(t.body.scrollLeft)/(t.body.clientWidth+r)+""))+1}},B=e=>{var t;let n=e.querySelectorAll("a, article, cite, div, li, p, span, pre, dt, dd, table, bold, font, blockquote");for(let e=0;ec(void 0,void 0,void 0,(function*(){const t=new Image;t.src=e;try{yield t.decode()}catch(e){console.error(e)}return t})),C=(e,t,n,i)=>c(void 0,void 0,void 0,(function*(){var r,o;let s=Math.floor(e.clientWidth/12),a=s%2==0?s:s-1;e.clientWidth;let l=i.querySelectorAll("img, image");for(let s of l){let l=s.parentElement,A=null==l?void 0:l.parentElement,c=0,g=0,d=s.naturalWidth,h=s.naturalHeight;if("image"===s.tagName){let e=yield w(s.getAttribute("xlink:href"));d=e.naturalWidth,h=e.naturalHeight}if(n.startsWith("CB")&&"scroll"===t)g=l.offsetWidth;else if(n.startsWith("CB")&&"single"===t)c=e.clientHeight,g=e.clientWidth;else if(l&&d&&h&&l.clientHeight&&l.clientWidth){h/d>l.clientHeight/l.clientWidth?(c=l.clientHeight,g=parseInt(c*d/h+"")):(g=l.clientWidth,c=parseInt(g*h/d+"")),c>i.body.clientHeight&&"scroll"!==t&&(g=parseInt(g*(i.body.clientHeight/c)+""),c=i.body.clientHeight),l.style.textIndent="0px"}else l&&l.clientWidth&&l.clientWidth>0?(g=l.clientWidth,c=l.clientHeight,l.style.textIndent="0px"):A&&"BODY"!==A.tagName&&A.clientWidth&&A.clientWidth>0?(g=A.clientWidth,c=A.clientHeight,A.style.textIndent="0px"):(g=e.clientWidth,c=e.clientHeight);g=g?Math.min("scroll"===t||"single"===t?e.clientWidth:(e.clientWidth-a)/2,g):"scroll"===t||"single"===t?e.clientWidth:(e.clientWidth-a)/2,d&&h&&(d>h||c/g>h/d?c=g*(h/d):g=c*(d/h)),(g||c)&&s.setAttribute("style",(s.getAttribute("style")?s.getAttribute("style"):"")+";"+`max-width: ${g>0?g+"px":""};max-height:${c>0?c+"px":""}; margin: 0 auto; min-width: 0px; min-height: 0px; ${n.startsWith("CB")?`margin-left: calc(100% - ${s.clientWidth}px);`:""}`),"image"===s.tagName&&(null===(r=s.parentElement)||void 0===r||r.setAttribute("width",g),null===(o=s.parentElement)||void 0===o||o.setAttribute("height",c)),n.startsWith("CB")&&"scroll"===t&&s.setAttribute("style",(s.getAttribute("style")?s.getAttribute("style"):"")+";margin-left: 0px; width: 100%;"),n.startsWith("CB")&&"scroll"!==t&&s.setAttribute("style",(s.getAttribute("style")?s.getAttribute("style"):"")+`;margin-left: calc(50% - ${s.getBoundingClientRect().width/2}px);`)}})),y=(e,t,n)=>{let i=n.createElement("style");if(i.id="default-style",i.textContent="p,empty-line{display: inherit;margin-block-start: inherit;margin-block-end: inherit;margin-inline-start: inherit;margin-inline-end: inherit;}body{margin: 0px}",n.head.appendChild(i),"scroll"===t)return;let r="double"===t?2:1,o=Math.floor(e.clientWidth/12),s=o%2==0?o:o-1;n.body.setAttribute("style",`width: ${e.clientWidth+"px"};height: 100%;overflow-y: hidden;overflow-X: hidden;padding-left: 0px;padding-right: 0px;margin: 0px;box-sizing: border-box;touch-action:none; overscroll-behavior: none;max-width: inherit;column-fill: auto;column-gap: ${s}px; column-width: ${(e.clientWidth-s)/r}px;`)};function E(e){const t=e.getSelection();if(!t)return null;if(t.rangeCount>0){return t.getRangeAt(0).startContainer.parentElement}return null}const I=e=>"string"==typeof e||e instanceof String;class b{constructor(e){this.book=e,this.chapterList=[],this.flattenChapters=[],this.chapterDocList=[]}unescapeHtml(e){if(!e)return"";return(new DOMParser).parseFromString(e,"text/html").documentElement.textContent||""}getChapter(e){return c(this,void 0,void 0,(function*(){return this.chapterList=e?yield Promise.all(e.map(((e,t)=>c(this,void 0,void 0,(function*(){let n=t;try{n=e.href&&(yield this.book.resolveHref(e.href))?(yield this.book.resolveHref(e.href)).index:n}catch(e){console.error(e)}return{label:this.unescapeHtml(e.label)?this.unescapeHtml(e.label):n+"",href:e.href?e.href:"title"+n,index:n,subitems:e.subitems?yield this.getChapter(e.subitems):[]}}))))):yield Promise.all(this.book.sections.map(((e,t)=>c(this,void 0,void 0,(function*(){return{label:e&&e.label&&this.unescapeHtml(e.label)?this.unescapeHtml(e.label):t+"",href:e&&e.href?e.href:"title"+t,index:t,subitems:e&&e.subitems?yield this.getChapter(e.subitems):[]}}))))),this.flattenChapters=this.flatChapter(this.chapterList),this.chapterList}))}getChapterDoc(){return c(this,void 0,void 0,(function*(){const e=this.flattenChapters.map((e=>e.index));return this.book.sections.map(((t,n)=>e.indexOf(n)>-1?{label:this.unescapeHtml(this.flattenChapters[e.indexOf(n)].label),href:this.flattenChapters[e.indexOf(n)].href,text:t}:{label:"",href:"",text:t}))}))}flatChapter(e){let t=[];for(let n=0;n0?(t.push(e[n]),t=t.concat(this.flatChapter(e[n].subitems))):t.push(e[n]);return t}getMetadata(){return new Promise(((e,t)=>c(this,void 0,void 0,(function*(){const n=this.book.metadata;let i=n.author&&n.author[0]&&n.author[0].name&&I(n.author[0].name)?n.author[0].name:n.author&&n.author[0]&&I(n.author[0])?n.author[0]:n.author&&I(n.author)?n.author:"";try{const t=yield this.book.getCover();var r=new FileReader;r.readAsDataURL(t),r.onloadend=()=>{e(Object.assign(Object.assign({},n),{name:n.title,author:i,description:n.description,publisher:n.publisher,cover:r.result}))}}catch(r){console.error(r);try{e(Object.assign(Object.assign({},n),{name:n.title,author:i,description:n.description,publisher:n.publisher,cover:""}))}catch(e){console.error(e),t(e)}}}))))}}const v=(e,t)=>[-1,...t,e.length].reduce((({xs:t,a:n},i)=>({xs:t?.concat([e.slice(n+1,i)])??[],a:i})),{}).xs,x=/\d/,Q=/^epubcfi\((.*)\)$/,D=e=>e.replace(/[\^[\](),;=]/g,"^$&"),S=(e,t)=>{return n=([e])=>e===t,e.map(((e,t,i)=>n(e,t,i)?t:null)).filter((e=>null!=e));var n},k=e=>{const t=[];let n;for(const[i,r]of e){if("/"===i)t.push({index:r});else{const e=t[t.length-1];if(":"===i)e.offset=r;else if("~"===i)e.temporal=r;else if("@"===i)e.spatial=(e.spatial??[]).concat(r);else if(";s"===i)e.side=r;else if("["===i){if("/"!==n||!r){e.text=(e.text??[]).concat(r);continue}e.id=r}}n=i}return t},M=e=>v(e,S(e,"!")).map(k),F=e=>{const t=(e=>{const t=[];let n,i,r="";const o=e=>(t.push(e),n=null,r=""),s=e=>(r+=e,i=!1);for(const t of Array.from(e.trim()).concat(""))if("^"!==t||i){if("!"===n)o(["!"]);else if(","===n)o([","]);else if("/"===n||":"===n){if(x.test(t)){s(t);continue}o([n,parseInt(r)])}else if("~"===n){if(x.test(t)||"."===t){s(t);continue}o(["~",parseFloat(r)])}else if("@"===n){if(":"===t){o(["@",parseFloat(r)]),n="@";continue}if(x.test(t)||"."===t){s(t);continue}o(["@",parseFloat(r)])}else{if("["===n){";"!==t||i?","!==t||i?"]"!==t||i?s(t):o(["[",r]):(o(["[",r]),n="["):(o(["[",r]),n=";");continue}if(n?.startsWith(";")){"="!==t||i?";"!==t||i?"]"!==t||i?s(t):o([n,r]):(o([n,r]),n=";"):(n=`;${r}`,r="");continue}}"/"!==t&&":"!==t&&"~"!==t&&"@"!==t&&"["!==t&&"!"!==t&&","!==t||(n=t)}else i=!0;return t})((n=e,n.match(Q)?.[1]??n));var n;const i=S(t,",");if(!i.length)return M(t);const[r,o,s]=v(t,i).map(M);return{parent:r,start:o,end:s}},Y=({index:e,id:t,offset:n,temporal:i,spatial:r,text:o,side:s})=>{const a=s?`;s=${s}`:"";return`/${e}`+(t?`[${D(t)}${a}]`:"")+(null!=n&&e%2?`:${n}`:"")+(i?`~${i}`:"")+(r?`@${r.join(":")}`:"")+(o||!t&&s?"["+(o?.map(D)?.join(",")??"")+a+"]":"")},L=e=>e.parent?[e.parent,e.start,e.end].map(L).join(","):e.map((e=>e.map(Y).join(""))).join("!"),T=e=>{return t=L(e),Q.test(t)?t:`epubcfi(${t})`;var t},R=(e,t)=>{return"string"==typeof e?T(R(F(e),t)):e.parent?(n=e.parent,i=e[t?"end":"start"],n.slice(0,-1).concat([n[n.length-1].concat(i[0])]).concat(i.slice(1))):e;var n,i},H=({nodeType:e})=>3===e||4===e,G=({nodeType:e})=>1===e,O=e=>{const t=Array.from(e.childNodes).filter((e=>H(e)||G(e))).reduce(((e,t)=>{let n=e[e.length-1];return n?H(t)?Array.isArray(n)?n.push(t):H(n)?e[e.length-1]=[n,t]:e.push(t):G(n)?e.push(null,t):e.push(t):e.push(t),e}),[]);return G(t[0])&&t.unshift("first"),G(t[t.length-1])&&t.push("last"),t.unshift("before"),t.push("after"),t},U=(e,t)=>e?O(e)[t]:null,N=(e,t)=>{const{id:n}=t[t.length-1];if(n){const t=e.ownerDocument.getElementById(n);if(t)return{node:t,offset:0}}for(const{index:n}of t){const t=U(e,n);if("first"===t)return{node:e.firstChild??e};if("last"===t)return{node:e.lastChild??e};if("before"===t)return{node:e,before:!0};if("after"===t)return{node:e,after:!0};e=t}const{offset:i}=t[t.length-1];if(!Array.isArray(e))return{node:e,offset:i};let r=0;for(const t of e){const{length:e}=t.nodeValue;if(r+e>=i)return{node:t,offset:i-r};r+=e}},W=(e,t)=>{const{parentNode:n,id:i}=e,r=O(n),o=r.findIndex((t=>Array.isArray(t)?t.some((t=>t===e)):t===e)),s=r[o];if(Array.isArray(s)){let n=0;for(const i of s){if(i===e){n+=t;break}n+=i.nodeValue.length}t=n}const a={id:i,index:o,offset:t};return n!==e.ownerDocument.documentElement?W(n).concat(a):[a]},P=(e,t)=>N(e.documentElement,R(t)).node,K="urn:oasis:names:tc:opendocument:xmlns:container",z="http://www.w3.org/1999/xhtml",q="http://www.idpf.org/2007/opf",j="http://www.idpf.org/2007/ops",J="http://purl.org/dc/elements/1.1/",V="http://www.w3.org/2001/04/xmlenc#",X="http://www.daisy.org/z3986/2005/ncx/",Z="http://www.w3.org/1999/xlink",_="http://www.w3.org/ns/SMIL",$={XML:"application/xml",NCX:"application/x-dtbncx+xml",XHTML:"application/xhtml+xml",HTML:"text/html",CSS:"text/css",SVG:"image/svg+xml",JS:/\/(x-)?(javascript|ecmascript)/},ee=e=>e.toLowerCase().replace(/[-:](.)/g,((e,t)=>t.toUpperCase())),te=(e,t,n)=>n?n=>n.getAttribute(e)?.split(/\s/)?.includes(t):"function"==typeof t?n=>t(n.getAttribute(e)):n=>n.getAttribute(e)===t,ne=(...e)=>t=>t?Object.fromEntries(e.map((e=>[ee(e),t.getAttribute(e)]))):null,ie=e=>{return t=e?.textContent,t?t.trim().replace(/\s{2,}/g," "):"";var t},re=(e,t)=>{const n=e.lookupNamespaceURI(null)===t||e.lookupPrefix(t),i=n?(e,n)=>e=>e.namespaceURI===t&&e.localName===n:(e,t)=>e=>e.localName===t;return{$:(e,t)=>[...e.children].find(i(e,t)),$$:(e,t)=>[...e.children].filter(i(e,t)),$$$:n?(e,n)=>[...e.getElementsByTagNameNS(t,n)]:(e,n)=>[...e.getElementsByTagName(t,n)]}},oe=(e,t)=>{try{const n="whatever://whatever/";return decodeURI(new URL(e,n+t).href.replace(n,""))}catch(t){return console.warn(t),e}},se=e=>/^(?!blob)\w+:/i.test(e),ae=async(e,t,n)=>{const i=[];e.replace(t,((...e)=>(i.push(e),null)));const r=[];for(const e of i)r.push(await n(...e));return e.replace(t,(()=>r.shift()))},le=e=>e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),Ae={attrs:["dir","xml:lang"]},ce={name:"alternate-script",many:!0,...Ae,props:["file-as"]},ge={many:!0,...Ae,props:[{name:"role",many:!0,attrs:["scheme"]},"file-as",ce]},de=[{name:"title",many:!0,...Ae,props:["title-type","display-seq","file-as",ce]},{name:"identifier",many:!0,props:[{name:"identifier-type",attrs:["scheme"]}]},{name:"language",many:!0},{name:"creator",...ge},{name:"contributor",...ge},{name:"publisher",...Ae,props:["file-as",ce]},{name:"description",...Ae,props:[ce]},{name:"rights",...Ae,props:[ce]},{name:"date"},{name:"dcterms:modified",type:"meta"},{name:"subject",many:!0,...Ae,props:["term","authority",ce]},{name:"belongs-to-collection",type:"meta",many:!0,...Ae,props:["collection-type","group-position","dcterms:identifier","file-as",ce,{name:"belongs-to-collection",recursive:!0}]}],he=(e,t=e=>e)=>{const{$:n,$$:i,$$$:r}=re(e,z),o=e=>i=>{const r=n(i,"a")??n(i,"span"),o=n(i,"ol"),a=(e=>e?decodeURI(t(e)):null)(r?.getAttribute("href")),l={label:ie(r)||r?.getAttribute("title"),href:a,subitems:s(o)};return e&&(l.type=r?.getAttributeNS(j,"type")?.split(/\s/)),l},s=(e,t)=>e?i(e,"li").map(o(t)):null,a=(e,t)=>s(n(e,"ol"),t),l=r(e,"nav");let A=null,c=null,g=null,d=[];for(const e of l){const t=e.getAttributeNS(j,"type")?.split(/\s/)??[];t.includes("toc")?A??=a(e):t.includes("page-list")?c??=a(e):t.includes("landmarks")?g??=a(e,!0):d.push({label:ie(e.firstElementChild),type:t,list:a(e)})}return{toc:A,pageList:c,landmarks:g,others:d}},ue=(e,t=e=>e)=>{const{$:n,$$:i}=re(e,X),r=e=>{const o=n(e,"navLabel"),s=n(e,"content"),a=ie(o),l=(e=>e?decodeURI(t(e)):null)(s.getAttribute("src"));if("navPoint"===e.localName){const t=i(e,"navPoint");return{label:a,href:l,subitems:t.length?t.map(r):null}}return{label:a,href:l}},o=(e,t)=>i(e,t).map(r),s=(t,i)=>{const r=n(e.documentElement,t);return r?o(r,i):null};return{toc:s("navMap","navPoint"),pageList:s("pageList","pageTarget"),others:i(e.documentElement,"navList").map((e=>({label:ie(n(e,"navLabel")),list:o(e,"navTarget")})))}},fe=e=>{if(!e)return;const t=e.split(":").map((e=>parseFloat(e)));if(3===t.length){const[e,n,i]=t;return 60*e*60+60*n+i}if(2===t.length){const[e,n]=t;return 60*e+n}const[n,i]=e.split(/(?=[^\d.])/);return parseFloat(n)*("h"===i?3600:"min"===i?60:"ms"===i?.001:1)},pe=/([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})/,me=e=>ie(e.getElementById(e.documentElement.getAttribute("unique-identifier"))??e.getElementsByTagNameNS(J,"identifier")[0]),Be=async(e,t,n)=>{const i=new Uint8Array(await n.slice(0,t).arrayBuffer());t=Math.min(t,i.length);for(var r=0;r{const t=(new TextEncoder).encode(e),n=await globalThis.crypto.subtle.digest("SHA-1",t);return new Uint8Array(n)},Ce=(e=we)=>({"http://www.idpf.org/2008/embedding":{key:t=>e(me(t).replaceAll(/[\u0020\u0009\u000d\u000a]/g,"")),decode:(e,t)=>Be(e,1040,t)},"http://ns.adobe.com/pdf/enc#RC":{key:e=>{const t=(e=>{for(const t of e.getElementsByTagNameNS(J,"identifier")){const[e]=ie(t).split(":").slice(-1);if(pe.test(e))return e}return""})(e).replaceAll("-","");return Uint8Array.from({length:16},((e,n)=>parseInt(t.slice(2*n,2*n+2),16)))},decode:(e,t)=>Be(e,1024,t)}});class ye{#e=new Map;#t=new Map;#n;constructor(e){this.#n=e}async init(e,t){if(!e)return;const n=Array.from(e.getElementsByTagNameNS(V,"EncryptedData"),(e=>({algorithm:e.getElementsByTagNameNS(V,"EncryptionMethod")[0]?.getAttribute("Algorithm"),uri:e.getElementsByTagNameNS(V,"CipherReference")[0]?.getAttribute("URI")})));for(const{algorithm:e,uri:i}of n){if(!this.#t.has(e)){const n=this.#n[e];if(!n){console.warn("Unknown encryption algorithm");continue}const i=await n.key(t);this.#t.set(e,(e=>n.decode(i,e)))}this.#e.set(i,e)}}getDecoder(e){return this.#t.get(this.#e.get(e))??(e=>e)}}class Ee{constructor({opf:e,resolveHref:t}){this.opf=e;const{$:n,$$:i,$$$:r}=re(e,q),o=n(e.documentElement,"manifest"),s=n(e.documentElement,"spine"),a=i(s,"itemref");this.manifest=i(o,"item").map(ne("href","id","media-type","properties","media-overlay")).map((e=>(e.href=t(e.href),e.properties=e.properties?.split(/\s/),e))),0===this.manifest.length&&(this.manifest=Array.from(o.children).map((e=>{const n=ne("href","id","media-type","properties","media-overlay")(e);return n.href=t(n.href),n.properties=n.properties?.split(/\s/),n}))),this.spine=a.map(ne("idref","id","linear","properties")).map((e=>(e.properties=e.properties?.split(/\s/),e))),this.pageProgressionDirection=s.getAttribute("page-progression-direction"),this.navPath=this.getItemByProperty("nav")?.href,this.ncxPath=(this.getItemByID(s.getAttribute("toc"))??this.manifest.find((e=>e.mediaType===$.NCX)))?.href;const l=n(e.documentElement,"guide");l&&(this.guide=i(l,"reference").map(ne("type","title","href")).map((({type:e,title:n,href:i})=>({label:n,type:e.split(/\s/),href:t(i)})))),this.cover=this.getItemByProperty("cover-image")??this.getItemByID("cover-image")??this.getItemByID(r(e,"meta").find(te("name","cover"))?.getAttribute("content"))??this.getItemByHref(r(e,"meta").find(te("name","cover"))?.getAttribute("content"))??this.getItemByID("cover.jpg")??this.getItemByID("cover.png")??this.getItemByID("cover.jpeg")??this.getItemByHref(this.guide?.find((e=>e.type.includes("cover")&&!e.href.includes("html")&&!e.href.includes("xhtml")&&!e.href.includes("xml")))?.href)??this.getItemByID("cover"),this.cover&&this.cover.href&&(this.cover.href.includes("xml")||this.cover.href.includes("xhtml")||this.cover.href.includes("html"))&&(this.cover=this.manifest.find((e=>e.href.toLowerCase().includes("cover")&&(e.href.includes("png")||e.href.includes("jpg")||e.href.includes("jpeg"))))),this.cfis=(e=>{const t=[],{parentNode:n}=e[0],i=W(n);for(const[r,o]of O(n).entries()){const n=e[t.length];o===n&&t.push(T([i.concat({id:n.id,index:r})]))}return t})(a)}getItemByID(e){return this.manifest.find((t=>t.id===e))}getItemByHref(e){return this.manifest.find((t=>t.href===e))}getItemByProperty(e){return this.manifest.find((t=>t.properties?.includes(e)))}resolveCFI(e){const t=F(e),n=(t.parent??t).shift();let i=P(this.opf,n);i&&"idref"!==i.nodeName&&(n.at(-1).id=null,i=P(this.opf,n));const r=i?.getAttribute("idref");return{index:this.spine.findIndex((e=>e.idref===r)),anchor:e=>((e,t)=>{const n=R(t),i=R(t,!0),r=e.documentElement,o=N(r,n[0]),s=N(r,i[0]),a=e.createRange();return o.before?a.setStartBefore(o.node):o.after?a.setStartAfter(o.node):a.setStart(o.node,o.offset),s.before?a.setEndBefore(s.node):s.after?a.setEndAfter(s.node):a.setEnd(s.node,s.offset),a})(e,t)}}}class Ie{#i=new Map;#r=new Map;#o=new Map;allowScript=!1;constructor({loadText:e,loadBlob:t,resources:n}){this.loadText=e,this.loadBlob=t,this.manifest=n.manifest,this.assets=n.manifest}createURL(e,t,n,i){if(!t)return"";const r=URL.createObjectURL(new Blob([t],{type:n}));if(this.#i.set(e,r),this.#o.set(e,1),i){const t=this.#r.get(i);t?t.push(e):this.#r.set(i,[e])}return r}ref(e,t){const n=this.#r.get(t);return n?.includes(e)||(this.#o.set(e,this.#o.get(e)+1),n?n.push(e):this.#r.set(t,[e])),this.#i.get(e)}unref(e){if(!this.#o.has(e))return;const t=this.#o.get(e)-1;if(t<1){URL.revokeObjectURL(this.#i.get(e)),this.#i.delete(e),this.#o.delete(e);const t=this.#r.get(e);if(t)for(;t.length;)this.unref(t.pop());this.#r.delete(e)}else this.#o.set(e,t)}async loadItem(e,t=[]){if(!e)return null;const{href:n,mediaType:i}=e,r=$.JS.test(e.mediaType);if(r&&!this.allowScript)return null;const o=t.at(-1);if(this.#i.has(n))return this.ref(n,o);return(r||[$.XHTML,$.HTML,$.CSS,$.SVG].includes(i))&&t.every((e=>e!==n))?this.loadReplaced(e,t):this.createURL(n,await this.loadBlob(n),i,o)}async loadHref(e,t,n=[]){if(se(e))return e;const i=oe(e,t);let r=this.manifest.find((e=>e.href===i));return r||(r={href:i,mediaType:""}),this.loadItem(r,n.concat(t))}async loadReplaced(e,t=[]){const{href:n,mediaType:i}=e,r=t.at(-1),o=await this.loadText(n);if(!o)return null;if([$.XHTML,$.HTML,$.SVG].includes(i)){let s=(new DOMParser).parseFromString(o.trim(),i);if(i===$.XHTML&&s.querySelector("parsererror")&&(console.warn(s.querySelector("parsererror").innerText),e.mediaType=$.HTML,s=(new DOMParser).parseFromString(o.trim(),e.mediaType)),[$.XHTML,$.SVG].includes(e.mediaType)){let e=s.firstChild;for(;e instanceof ProcessingInstruction;){if(e.data){const i=await ae(e.data,/(?:^|\s*)(href\s*=\s*['"])([^'"]*)(['"])/i,((e,i,r,o)=>this.loadHref(r,n,t).then((e=>`${i}${e}${o}`))));e.replaceWith(s.createProcessingInstruction(e.target,i))}e=e.nextSibling}}const a=async(e,i)=>e.setAttribute(i,await this.loadHref(e.getAttribute(i),n,t));for(const e of s.querySelectorAll("link[href]"))await a(e,"href");for(const e of s.querySelectorAll("[src]"))await a(e,"src");for(const e of s.querySelectorAll("[poster]"))await a(e,"poster");for(const e of s.querySelectorAll("object[data]"))await a(e,"data");for(const e of s.querySelectorAll("[*|href]:not([href]"))e.setAttributeNS(Z,"href",await this.loadHref(e.getAttributeNS(Z,"href"),n,t));for(const e of s.querySelectorAll("style"))e.textContent&&(e.textContent=await this.replaceCSS(e.textContent,n,t));for(const e of s.querySelectorAll("[style]"))e.setAttribute("style",await this.replaceCSS(e.getAttribute("style"),n,t));const l=(new XMLSerializer).serializeToString(s);return this.createURL(n,l,e.mediaType,r)}const s=i===$.CSS?await this.replaceCSS(o,n,t):await this.replaceString(o,n,t);return this.createURL(n,s,i,r)}async replaceCSS(e,t,n=[]){const i=await ae(e,/url\(\s*["']?([^'"\n]*?)\s*["']?\s*\)/gi,((e,i)=>this.loadHref(i,t,n).then((e=>`url("${e}")`)))),r=await ae(i,/@import\s*["']([^"'\n]*?)["']/gi,((e,i)=>this.loadHref(i,t,n).then((e=>`@import "${e}"`)))),o=window?.innerWidth??800,s=window?.innerHeight??600;return r.replace(/-epub-/gi,"").replace(/(\d*\.?\d+)vw/gi,((e,t)=>parseFloat(t)*o/100+"px")).replace(/(\d*\.?\d+)vh/gi,((e,t)=>parseFloat(t)*s/100+"px")).replace(/page-break-(after|before|inside)/gi,((e,t)=>`-webkit-column-break-${t}`))}replaceString(e,t,n=[]){const i=new Map,r=this.assets.map((e=>{if(e.href===t)return;const n=((e,t)=>{if(!e)return t;const n=e.replace(/\/$/,"").split("/"),i=t.replace(/\/$/,"").split("/"),r=(n.length>i.length?n:i).findIndex(((e,t)=>n[t]!==i[t]));return r<0?"":Array(n.length-r).fill("..").concat(i.slice(r)).join("/")})((e=>e.slice(0,e.lastIndexOf("/")+1))(t),e.href),r=encodeURI(n),o="/"+e.href,s=encodeURI(o),a=new Set([n,r,o,s]);for(const t of a)i.set(t,e);return Array.from(a)})).flat().filter((e=>e));if(!r.length)return e;const o=new RegExp(r.map(le).join("|"),"g");return ae(e,o,(async e=>this.loadItem(i.get(e.replace(/^\//,"")),n.concat(t))))}unloadItem(e){this.unref(e?.href)}}const be=e=>{for(const t of e){if("page-spread-left"===t||"rendition:page-spread-left"===t)return"left";if("page-spread-right"===t||"rendition:page-spread-right"===t)return"right";if("rendition:page-spread-center"===t)return"center"}};class ve{parser=new DOMParser;#s;constructor({loadText:e,loadBlob:t,getSize:n,sha1:i}){this.loadText=e,this.loadBlob=t,this.getSize=n,this.#s=new ye(Ce(i))}#a(e){return e&&e.includes("opf:scheme")&&(e=e.replaceAll("opf:scheme","scheme")),e&&(e=e.replace(/^\uFEFF/,"").replace(//g,((e,t)=>`\x3c!--${t.replace(/--/g,"- -")}--\x3e`)).replace(/&(?!(?:amp|lt|gt|quot|apos|#\d+|#x[\da-fA-F]+);)/g,"&").replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g,"")),e?this.parser.parseFromString(e.trim(),$.XML):null}async#l(e){return this.#a(await this.loadText(e))}async init(){const e=await this.#l("META-INF/container.xml");if(!e)throw new Error("Failed to load container file");const t=Array.from(e.getElementsByTagNameNS(K,"rootfile"),ne("full-path","media-type")).filter((e=>"application/oebps-package+xml"===e.mediaType));if(!t.length)throw new Error("No package document defined in container");const n=t[0].fullPath,i=await this.#l(n);if(!i)throw new Error("Failed to load package document");if(i.querySelector("parsererror"))throw new Error("Package document is not a valid XML");const r=await this.#l("META-INF/encryption.xml");await this.#s.init(r,i),this.resources=new Ee({opf:i,resolveHref:e=>oe(e,n)});const o=new Ie({loadText:this.loadText,loadBlob:e=>Promise.resolve(this.loadBlob(e)).then(this.#s.getDecoder(e)),resources:this.resources});this.sections=this.resources.spine.map(((e,t)=>{const{idref:n,linear:i,properties:r=[]}=e,s=this.resources.getItemByID(n);return s?{id:this.resources.getItemByID(n)?.href,load:()=>o.loadItem(s),unload:()=>o.unloadItem(s),createDocument:()=>this.loadDocument(s),size:this.getSize(s.href),cfi:this.resources.cfis[t],linear:i,pageSpread:be(r),resolveHref:e=>oe(e,s.href),loadMediaOverlay:()=>this.loadMediaOverlay(s)}:(console.warn(`Could not find item with ID "${n}" in manifest`),null)}));const{navPath:s,ncxPath:a}=this.resources;if(s)try{const e=e=>oe(e,s),t=he(await this.#l(s),e);this.toc=t.toc,this.pageList=t.pageList,this.landmarks=t.landmarks}catch(e){console.warn(e)}if((!this.toc||0===this.toc.length)&&a)try{const e=e=>oe(e,a),t=ue(await this.#l(a),e);this.toc=t.toc,this.pageList=t.pageList}catch(e){console.warn(e)}this.landmarks??=this.resources.guide;const{metadata:l,rendition:A,media:c}=(e=>{const{$:t,$$:n}=re(e,q),i=t(e.documentElement,"metadata"),r=Array.from(i.children),o=(e,t)=>{if(!t)return null;const{props:n=[],attrs:i=[]}=e,s=ie(t);if(!n.length&&!i.length)return s;const a=t.getAttribute("id"),l=a?r.filter(te("refines","#"+a)):[];return Object.fromEntries([["value",s]].concat(n.map((t=>{const{many:n,recursive:i}=t,r="string"==typeof t?t:t.name,s=te("property",r),a=i?e:t;return[ee(r),n?l.filter(s).map((e=>o(a,e))):o(a,l.find(s))]}))).concat(i.map((e=>[ee(e),t.getAttribute(e)]))))},s=r.filter(te("refines",null)),a=e=>Object.fromEntries(n(i,"meta").filter(te("property",(t=>t?.startsWith(e)))).map((t=>[t.getAttribute("property").replace(e,""),ie(t)])));return{metadata:Object.fromEntries(de.map((e=>{const{type:t,name:n,many:i}=e,r="meta"===t?e=>e.namespaceURI===q&&e.getAttribute("property")===n:e=>e.namespaceURI===J&&e.localName===n;return[ee(n),i?s.filter(r).map((t=>o(e,t))):o(e,s.find(r))]}))),rendition:a("rendition:"),media:a("media:")}})(i);this.rendition=A,this.media=c,c.duration=fe(c.duration),this.dir=this.resources.pageProgressionDirection,this.rawMetadata=l;const g=l?.title?.[0];this.metadata={title:g?.value,sortAs:g?.fileAs,language:l?.language,identifier:me(i),description:l?.description?.value,publisher:l?.publisher?.value,published:l?.date,modified:l?.dctermsModified,subject:l?.subject?.filter((({value:e,code:t})=>e||t))?.map((({value:e,code:t,scheme:n})=>({name:e,code:t,scheme:n}))),rights:l?.rights?.value};const d={art:"artist",aut:"author",bkp:"producer",clr:"colorist",edt:"editor",ill:"illustrator",trl:"translator",pbl:"publisher"},h=e=>t=>{const n=[...new Set(t.role?.map((({value:t,scheme:n})=>(n&&"marc:relators"!==n?null:d[t])??e)))],i={name:t.value,sortAs:t.fileAs};return[n?.length?n:[e],i]};return l?.creator?.map(h("author"))?.concat(l?.contributor?.map?.(h("contributor")))?.forEach((([e,t])=>e.forEach((e=>{this.metadata[e]?this.metadata[e].push(t):this.metadata[e]=[t]})))),this}async loadDocument(e){const t=await this.loadText(e.href);return this.parser.parseFromString(t.trim(),e.mediaType)}async loadMediaOverlay(e){const t=e.mediaOverlay;if(!t)return null;const n=this.resources.getItemByID(t),i=((e,t=e=>e)=>{const{$:n,$$$:i}=re(e,_);return i(e,"par").map((e=>{const i=n(e,"text")?.getAttribute("src")?.split("#")?.[1],r=n(e,"audio");return r?{id:i,audio:{src:(o=r.getAttribute("src"),o?decodeURI(t(o)):null),clipBegin:fe(r.getAttribute("clipBegin")),clipEnd:fe(r.getAttribute("clipEnd"))}}:{id:i};var o}))})(await this.#l(n.href),(e=>oe(e,n.href)));return i}resolveCFI(e){return this.resources.resolveCFI(e)}resolveHref(e){const[t,n]=e.split("#"),i=this.resources.getItemByHref(decodeURI(t));if(!i)return null;return{index:this.resources.spine.findIndex((({idref:e})=>e===i.id)),anchor:n?e=>((e,t)=>e.getElementById(t)??e.querySelector(`[name="${CSS.escape(t)}"]`))(e,n):()=>0}}splitTOCHref(e){return e?.split("#")??[]}getTOCFragment(e,t){return e.getElementById(t)??e.querySelector(`[name="${CSS.escape(t)}"]`)}isExternal(e){return se(e)}async getCover(){const e=this.resources?.cover;return e?.href?new Blob([await this.loadBlob(e.href)],{type:e.mediaType}):null}async getCalibreBookmarks(){const e=await this.loadText("META-INF/calibre_bookmarks.txt"),t="encoding=json+base64:";if(e?.startsWith(t)){const t=atob(e.slice(21));return JSON.parse(t)}}}const xe={"㐷":"傌","㐹":"㑶","㐽":"偑","㑇":"㑳","㑈":"倲","㑔":"㑯","㑩":"儸","㓆":"𠗣","㓥":"劏","㓰":"劃","㔉":"劚","㖊":"噚","㖞":"喎","㘎":"㘚","㚯":"㜄","㛀":"媰","㛟":"𡞵","㛠":"𡢃","㛣":"㜏","㛤":"孋","㛿":"𡠹","㟆":"㠏","㟜":"𡾱","㟥":"嵾","㡎":"幓","㤘":"㥮","㤽":"懤","㥪":"慺","㧏":"掆","㧐":"㩳","㧑":"撝","㧟":"擓","㧰":"擽","㨫":"㩜","㭎":"棡","㭏":"椲","㭣":"𣙎","㭤":"樢","㭴":"樫","㱩":"殰","㱮":"殨","㲿":"瀇","㳔":"濧","㳕":"灡","㳠":"澾","㳡":"濄","㳢":"𣾷","㳽":"瀰","㴋":"潚","㶉":"鸂","㶶":"燶","㶽":"煱","㺍":"獱","㻅":"璯","㻏":"𤫩","㻘":"𤪺","䀥":"䁻","䁖":"瞜","䂵":"碽","䃅":"磾","䅉":"稏","䅟":"穇","䅪":"𥢢","䇲":"筴","䉤":"籔","䌶":"䊷","䌷":"紬","䌸":"縳","䌹":"絅","䌺":"䋙","䌻":"䋚","䌼":"綐","䌽":"綵","䌾":"䋻","䌿":"䋹","䍀":"繿","䍁":"繸","䍠":"䍦","䎬":"䎱","䏝":"膞","䑽":"𦪙","䓓":"薵","䓕":"薳","䓖":"藭","䓨":"罃","䗖":"螮","䘛":"𧝞","䘞":"𧜗","䙊":"𧜵","䙌":"䙡","䙓":"襬","䜣":"訢","䜤":"鿁","䜥":"𧩙","䜧":"䜀","䜩":"讌","䝙":"貙","䞌":"𧵳","䞍":"䝼","䞎":"𧶧","䞐":"賰","䟢":"躎","䢀":"𨊰","䢁":"𨊸","䢂":"𨋢","䥺":"釾","䥽":"鏺","䥾":"䥱","䥿":"𨯅","䦀":"𨦫","䦁":"𨧜","䦂":"䥇","䦃":"鐯","䦅":"鐥","䦆":"钁","䦶":"䦛","䦷":"䦟","䩄":"靦","䭪":"𩞯","䯃":"𩣑","䯄":"騧","䯅":"䯀","䲝":"䱽","䲞":"𩶘","䲟":"鮣","䲠":"鰆","䲡":"鰌","䲢":"鰧","䲣":"䱷","䴓":"鳾","䴔":"鵁","䴕":"鴷","䴖":"鶄","䴗":"鶪","䴘":"鷉","䴙":"鸊","䶮":"龑","万":"萬","与":"與","丑":"醜","专":"專","业":"業","丛":"叢","东":"東","丝":"絲","丢":"丟","两":"兩","严":"嚴","丧":"喪","个":"個","丰":"豐","临":"臨","为":"爲","丽":"麗","举":"舉","么":"麼","义":"義","乌":"烏","乐":"樂","乔":"喬","习":"習","乡":"鄉","书":"書","买":"買","乱":"亂","了":"了","争":"爭","于":"於","亏":"虧","云":"雲","亘":"亙","亚":"亞","产":"產","亩":"畝","亲":"親","亵":"褻","亸":"嚲","亿":"億","仅":"僅","仆":"僕","仇":"仇","从":"從","仑":"侖","仓":"倉","仪":"儀","们":"們","价":"價","仿":"仿","众":"衆","优":"優","伙":"夥","会":"會","伛":"傴","伞":"傘","伟":"偉","传":"傳","伡":"俥","伣":"俔","伤":"傷","伥":"倀","伦":"倫","伧":"傖","伪":"僞","伫":"佇","体":"體","余":"餘","佛":"佛","佣":"傭","佥":"僉","侠":"俠","侣":"侶","侥":"僥","侦":"偵","侧":"側","侨":"僑","侩":"儈","侪":"儕","侬":"儂","侭":"儘","俊":"俊","俣":"俁","俦":"儔","俨":"儼","俩":"倆","俪":"儷","俫":"倈","俭":"儉","修":"修","借":"借","债":"債","倾":"傾","偬":"傯","偻":"僂","偾":"僨","偿":"償","傤":"儎","傥":"儻","傧":"儐","储":"儲","傩":"儺","僵":"僵","儿":"兒","克":"克","兑":"兌","兖":"兗","党":"黨","兰":"蘭","关":"關","兴":"興","兹":"茲","养":"養","兽":"獸","冁":"囅","内":"內","冈":"岡","册":"冊","写":"寫","军":"軍","农":"農","冬":"冬","冯":"馮","冲":"衝","决":"決","况":"況","冻":"凍","净":"淨","凄":"悽","准":"準","凉":"涼","凌":"凌","减":"減","凑":"湊","凛":"凜","几":"幾","凤":"鳳","凫":"鳧","凭":"憑","凯":"凱","凶":"兇","出":"出","击":"擊","凿":"鑿","刍":"芻","划":"劃","刘":"劉","则":"則","刚":"剛","创":"創","删":"刪","别":"別","刬":"剗","刭":"剄","刮":"刮","制":"制","刹":"剎","刽":"劊","刾":"㓨","刿":"劌","剀":"剴","剂":"劑","剐":"剮","剑":"劍","剥":"剝","剧":"劇","劝":"勸","办":"辦","务":"務","劢":"勱","动":"動","励":"勵","劲":"勁","劳":"勞","势":"勢","勋":"勳","勚":"勩","匀":"勻","匦":"匭","匮":"匱","区":"區","医":"醫","千":"千","升":"升","华":"華","协":"協","单":"單","卖":"賣","卜":"卜","占":"佔","卢":"盧","卤":"滷","卧":"臥","卫":"衛","却":"卻","卷":"卷","卺":"巹","厂":"廠","厅":"廳","历":"歷","厉":"厲","压":"壓","厌":"厭","厍":"厙","厐":"龎","厕":"廁","厘":"釐","厢":"廂","厣":"厴","厦":"廈","厨":"廚","厩":"廄","厮":"廝","县":"縣","叁":"叄","参":"參","叆":"靉","叇":"靆","双":"雙","发":"發","变":"變","叙":"敘","叠":"疊","只":"只","台":"臺","叶":"葉","号":"號","叹":"嘆","叽":"嘰","吁":"籲","吃":"喫","合":"合","吊":"吊","同":"同","后":"後","向":"向","吓":"嚇","吕":"呂","吗":"嗎","吨":"噸","听":"聽","启":"啓","吴":"吳","呐":"吶","呒":"嘸","呓":"囈","呕":"嘔","呖":"嚦","呗":"唄","员":"員","呙":"咼","呛":"嗆","呜":"嗚","周":"周","咏":"詠","咙":"嚨","咛":"嚀","咝":"噝","咤":"吒","咨":"諮","咸":"鹹","咽":"咽","哄":"哄","响":"響","哑":"啞","哒":"噠","哓":"嘵","哔":"嗶","哕":"噦","哗":"譁","哙":"噲","哜":"嚌","哝":"噥","哟":"喲","唇":"脣","唛":"嘜","唝":"嗊","唠":"嘮","唡":"啢","唢":"嗩","唤":"喚","啧":"嘖","啬":"嗇","啭":"囀","啮":"齧","啯":"嘓","啰":"囉","啴":"嘽","啸":"嘯","喂":"喂","喷":"噴","喽":"嘍","喾":"嚳","嗫":"囁","嗳":"噯","嘘":"噓","嘤":"嚶","嘱":"囑","噜":"嚕","噪":"噪","嚣":"囂","回":"回","团":"團","园":"園","困":"困","囱":"囪","围":"圍","囵":"圇","国":"國","图":"圖","圆":"圓","圣":"聖","圹":"壙","场":"場","坏":"壞","块":"塊","坚":"堅","坛":"壇","坜":"壢","坝":"壩","坞":"塢","坟":"墳","坠":"墜","垄":"壟","垅":"壠","垆":"壚","垒":"壘","垦":"墾","垩":"堊","垫":"墊","垭":"埡","垯":"墶","垱":"壋","垲":"塏","垴":"堖","埘":"塒","埙":"壎","埚":"堝","堑":"塹","堕":"墮","塆":"壪","墙":"牆","壮":"壯","声":"聲","壳":"殼","壶":"壺","壸":"壼","处":"處","备":"備","复":"復","够":"夠","夫":"夫","头":"頭","夸":"誇","夹":"夾","夺":"奪","奁":"奩","奂":"奐","奋":"奮","奖":"獎","奥":"奧","奸":"奸","妆":"妝","妇":"婦","妈":"媽","妩":"嫵","妪":"嫗","妫":"嬀","姗":"姍","姜":"姜","姹":"奼","娄":"婁","娅":"婭","娆":"嬈","娇":"嬌","娈":"孌","娘":"娘","娱":"娛","娲":"媧","娴":"嫺","婳":"嫿","婴":"嬰","婵":"嬋","婶":"嬸","媪":"媼","媭":"嬃","嫒":"嬡","嫔":"嬪","嫱":"嬙","嬷":"嬤","孙":"孫","学":"學","孪":"孿","宁":"寧","它":"它","宝":"寶","实":"實","宠":"寵","审":"審","宪":"憲","宫":"宮","家":"家","宽":"寬","宾":"賓","寝":"寢","对":"對","寻":"尋","导":"導","寿":"壽","将":"將","尔":"爾","尘":"塵","尝":"嘗","尧":"堯","尴":"尷","尸":"屍","尽":"盡","局":"局","层":"層","屃":"屓","屉":"屜","届":"屆","属":"屬","屡":"屢","屦":"屨","屿":"嶼","岁":"歲","岂":"豈","岖":"嶇","岗":"崗","岘":"峴","岚":"嵐","岛":"島","岩":"巖","岭":"嶺","岳":"嶽","岽":"崬","岿":"巋","峃":"嶨","峄":"嶧","峡":"峽","峣":"嶢","峤":"嶠","峥":"崢","峦":"巒","峰":"峯","崂":"嶗","崃":"崍","崄":"嶮","崭":"嶄","嵘":"嶸","嵚":"嶔","嵝":"嶁","巅":"巔","巨":"巨","巩":"鞏","巯":"巰","币":"幣","布":"布","帅":"帥","师":"師","帏":"幃","帐":"帳","帘":"簾","帜":"幟","带":"帶","帧":"幀","席":"席","帮":"幫","帱":"幬","帻":"幘","帼":"幗","幂":"冪","干":"幹","并":"並","幸":"幸","广":"廣","庄":"莊","庆":"慶","床":"牀","庐":"廬","庑":"廡","库":"庫","应":"應","庙":"廟","庞":"龐","废":"廢","庵":"庵","庼":"廎","廪":"廩","开":"開","异":"異","弃":"棄","弑":"弒","张":"張","弥":"彌","弦":"弦","弪":"弳","弯":"彎","弹":"彈","强":"強","归":"歸","当":"當","录":"錄","彟":"彠","彦":"彥","彨":"彲","彩":"彩","彻":"徹","征":"徵","径":"徑","徕":"徠","御":"御","忆":"憶","忏":"懺","志":"志","忧":"憂","念":"念","忾":"愾","怀":"懷","态":"態","怂":"慫","怃":"憮","怄":"慪","怅":"悵","怆":"愴","怜":"憐","总":"總","怼":"懟","怿":"懌","恋":"戀","恒":"恆","恤":"恤","恳":"懇","恶":"惡","恸":"慟","恹":"懨","恺":"愷","恻":"惻","恼":"惱","恽":"惲","悦":"悅","悫":"愨","悬":"懸","悭":"慳","悮":"悞","悯":"憫","惊":"驚","惧":"懼","惨":"慘","惩":"懲","惫":"憊","惬":"愜","惭":"慚","惮":"憚","惯":"慣","愈":"愈","愠":"慍","愤":"憤","愦":"憒","愿":"願","慑":"懾","慭":"憖","懑":"懣","懒":"懶","懔":"懍","戆":"戇","戋":"戔","戏":"戲","戗":"戧","战":"戰","戚":"戚","戬":"戩","戯":"戱","户":"戶","才":"才","扎":"扎","扑":"撲","托":"託","扣":"扣","执":"執","扩":"擴","扪":"捫","扫":"掃","扬":"揚","扰":"擾","折":"折","抚":"撫","抛":"拋","抟":"摶","抠":"摳","抡":"掄","抢":"搶","护":"護","报":"報","抵":"抵","担":"擔","拐":"拐","拟":"擬","拢":"攏","拣":"揀","拥":"擁","拦":"攔","拧":"擰","拨":"撥","择":"擇","挂":"掛","挚":"摯","挛":"攣","挜":"掗","挝":"撾","挞":"撻","挟":"挾","挠":"撓","挡":"擋","挢":"撟","挣":"掙","挤":"擠","挥":"揮","挦":"撏","挨":"挨","挽":"挽","捝":"挩","捞":"撈","损":"損","捡":"撿","换":"換","捣":"搗","据":"據","掳":"擄","掴":"摑","掷":"擲","掸":"撣","掺":"摻","掼":"摜","揽":"攬","揾":"搵","揿":"撳","搀":"攙","搁":"擱","搂":"摟","搄":"揯","搅":"攪","搜":"搜","携":"攜","摄":"攝","摅":"攄","摆":"擺","摇":"搖","摈":"擯","摊":"攤","撄":"攖","撑":"撐","撵":"攆","撷":"擷","撸":"擼","撺":"攛","擜":"㩵","擞":"擻","攒":"攢","敌":"敵","敚":"敓","敛":"斂","敩":"斆","数":"數","斋":"齋","斓":"斕","斗":"鬥","斩":"斬","断":"斷","旋":"旋","无":"無","旧":"舊","时":"時","旷":"曠","旸":"暘","昆":"昆","昙":"曇","昵":"暱","昼":"晝","昽":"曨","显":"顯","晋":"晉","晒":"曬","晓":"曉","晔":"曄","晕":"暈","晖":"暉","暂":"暫","暅":"𣈶","暗":"暗","暧":"曖","曲":"曲","术":"術","朱":"朱","朴":"樸","机":"機","杀":"殺","杂":"雜","权":"權","杆":"杆","杠":"槓","条":"條","来":"來","杨":"楊","杩":"榪","杯":"杯","杰":"傑","松":"松","板":"板","极":"極","构":"構","枞":"樅","枢":"樞","枣":"棗","枥":"櫪","枧":"梘","枨":"棖","枪":"槍","枫":"楓","枭":"梟","柜":"櫃","柠":"檸","柽":"檉","栀":"梔","栅":"柵","标":"標","栈":"棧","栉":"櫛","栊":"櫳","栋":"棟","栌":"櫨","栎":"櫟","栏":"欄","树":"樹","栖":"棲","栗":"栗","样":"樣","核":"核","栾":"欒","桠":"椏","桡":"橈","桢":"楨","档":"檔","桤":"榿","桥":"橋","桦":"樺","桧":"檜","桨":"槳","桩":"樁","桪":"樳","梁":"梁","梦":"夢","梼":"檮","梾":"棶","梿":"槤","检":"檢","棁":"梲","棂":"欞","椁":"槨","椝":"槼","椟":"櫝","椠":"槧","椢":"槶","椤":"欏","椫":"樿","椭":"橢","椮":"槮","楼":"樓","榄":"欖","榅":"榲","榇":"櫬","榈":"櫚","榉":"櫸","榝":"樧","槚":"檟","槛":"檻","槟":"檳","槠":"櫧","横":"橫","樯":"檣","樱":"櫻","橥":"櫫","橱":"櫥","橹":"櫓","橼":"櫞","檩":"檁","欢":"歡","欤":"歟","欧":"歐","欲":"欲","歼":"殲","殁":"歿","殇":"殤","残":"殘","殒":"殞","殓":"殮","殚":"殫","殡":"殯","殴":"毆","毁":"毀","毂":"轂","毕":"畢","毙":"斃","毡":"氈","毵":"毿","毶":"𣯶","氇":"氌","气":"氣","氢":"氫","氩":"氬","氲":"氳","汇":"匯","汉":"漢","汤":"湯","汹":"洶","沄":"澐","沈":"沈","沟":"溝","没":"沒","沣":"灃","沤":"漚","沥":"瀝","沦":"淪","沧":"滄","沨":"渢","沩":"潙","沪":"滬","沾":"沾","泛":"泛","泞":"濘","注":"注","泪":"淚","泶":"澩","泷":"瀧","泸":"瀘","泺":"濼","泻":"瀉","泼":"潑","泽":"澤","泾":"涇","洁":"潔","洒":"灑","洼":"窪","浃":"浹","浅":"淺","浆":"漿","浇":"澆","浈":"湞","浉":"溮","浊":"濁","测":"測","浍":"澮","济":"濟","浏":"瀏","浐":"滻","浑":"渾","浒":"滸","浓":"濃","浔":"潯","浕":"濜","涂":"塗","涌":"湧","涚":"涗","涛":"濤","涝":"澇","涞":"淶","涟":"漣","涠":"潿","涡":"渦","涢":"溳","涣":"渙","涤":"滌","润":"潤","涧":"澗","涨":"漲","涩":"澀","淀":"澱","渊":"淵","渌":"淥","渍":"漬","渎":"瀆","渐":"漸","渑":"澠","渔":"漁","渖":"瀋","渗":"滲","温":"溫","游":"遊","湾":"灣","湿":"溼","溁":"濚","溃":"潰","溅":"濺","溆":"漵","溇":"漊","滗":"潷","滚":"滾","滞":"滯","滟":"灩","滠":"灄","满":"滿","滢":"瀅","滤":"濾","滥":"濫","滦":"灤","滨":"濱","滩":"灘","滪":"澦","漓":"漓","潆":"瀠","潇":"瀟","潋":"瀲","潍":"濰","潜":"潛","潴":"瀦","澛":"瀂","澜":"瀾","濑":"瀨","濒":"瀕","灏":"灝","灭":"滅","灯":"燈","灵":"靈","灶":"竈","灾":"災","灿":"燦","炀":"煬","炉":"爐","炖":"燉","炜":"煒","炝":"熗","点":"點","炼":"煉","炽":"熾","烁":"爍","烂":"爛","烃":"烴","烛":"燭","烟":"煙","烦":"煩","烧":"燒","烨":"燁","烩":"燴","烫":"燙","烬":"燼","热":"熱","焕":"煥","焖":"燜","焘":"燾","煴":"熅","熏":"燻","爱":"愛","爷":"爺","牍":"牘","牦":"犛","牵":"牽","牺":"犧","犊":"犢","状":"狀","犷":"獷","犸":"獁","犹":"猶","狈":"狽","狝":"獮","狞":"獰","独":"獨","狭":"狹","狮":"獅","狯":"獪","狰":"猙","狱":"獄","狲":"猻","猃":"獫","猎":"獵","猕":"獼","猡":"玀","猪":"豬","猫":"貓","猬":"蝟","献":"獻","獭":"獺","玑":"璣","玙":"璵","玚":"瑒","玛":"瑪","玩":"玩","玮":"瑋","环":"環","现":"現","玱":"瑲","玺":"璽","珐":"琺","珑":"瓏","珰":"璫","珲":"琿","琎":"璡","琏":"璉","琐":"瑣","琼":"瓊","瑶":"瑤","瑷":"璦","瑸":"璸","璇":"璇","璎":"瓔","瓒":"瓚","瓮":"甕","瓯":"甌","电":"電","画":"畫","畅":"暢","畴":"疇","疖":"癤","疗":"療","疟":"瘧","疠":"癘","疡":"瘍","疬":"癧","疭":"瘲","疮":"瘡","疯":"瘋","疱":"皰","疴":"痾","症":"症","痈":"癰","痉":"痙","痒":"癢","痖":"瘂","痨":"癆","痪":"瘓","痫":"癇","痴":"癡","瘅":"癉","瘆":"瘮","瘗":"瘞","瘘":"瘻","瘪":"癟","瘫":"癱","瘾":"癮","瘿":"癭","癞":"癩","癣":"癬","癫":"癲","皂":"皁","皑":"皚","皱":"皺","皲":"皸","盏":"盞","盐":"鹽","监":"監","盖":"蓋","盗":"盜","盘":"盤","眍":"瞘","眦":"眥","眬":"矓","睁":"睜","睐":"睞","睑":"瞼","瞆":"瞶","瞒":"瞞","瞩":"矚","矩":"矩","矫":"矯","矶":"磯","矾":"礬","矿":"礦","砀":"碭","码":"碼","砖":"磚","砗":"硨","砚":"硯","砜":"碸","砺":"礪","砻":"礱","砾":"礫","础":"礎","硁":"硜","硕":"碩","硖":"硤","硗":"磽","硙":"磑","硚":"礄","确":"確","硵":"磠","硷":"礆","碍":"礙","碛":"磧","碜":"磣","碱":"鹼","礼":"禮","祃":"禡","祎":"禕","祢":"禰","祯":"禎","祷":"禱","祸":"禍","禀":"稟","禄":"祿","禅":"禪","离":"離","私":"私","秃":"禿","秆":"稈","秋":"秋","种":"種","秘":"祕","积":"積","称":"稱","秽":"穢","秾":"穠","稆":"穭","税":"稅","稣":"穌","稳":"穩","穑":"穡","穞":"穭","穷":"窮","窃":"竊","窍":"竅","窎":"窵","窑":"窯","窜":"竄","窝":"窩","窥":"窺","窦":"竇","窭":"窶","竖":"豎","竞":"競","笃":"篤","笋":"筍","笔":"筆","笕":"筧","笺":"箋","笼":"籠","笾":"籩","筑":"築","筚":"篳","筛":"篩","筜":"簹","筝":"箏","筹":"籌","筼":"篔","签":"籤","筿":"篠","简":"簡","箓":"籙","箦":"簀","箧":"篋","箨":"籜","箩":"籮","箪":"簞","箫":"簫","篑":"簣","篓":"簍","篮":"籃","篯":"籛","篱":"籬","簖":"籪","籁":"籟","籴":"糴","类":"類","籼":"秈","粜":"糶","粝":"糲","粤":"粵","粪":"糞","粮":"糧","粽":"糉","糁":"糝","糇":"餱","糍":"餈","系":"系","紧":"緊","絷":"縶","緼":"縕","縆":"緪","纟":"糹","纠":"糾","纡":"紆","红":"紅","纣":"紂","纤":"纖","纥":"紇","约":"約","级":"級","纨":"紈","纩":"纊","纪":"紀","纫":"紉","纬":"緯","纭":"紜","纮":"紘","纯":"純","纰":"紕","纱":"紗","纲":"綱","纳":"納","纴":"紝","纵":"縱","纶":"綸","纷":"紛","纸":"紙","纹":"紋","纺":"紡","纻":"紵","纼":"紖","纽":"紐","纾":"紓","线":"線","绀":"紺","绁":"紲","绂":"紱","练":"練","组":"組","绅":"紳","细":"細","织":"織","终":"終","绉":"縐","绊":"絆","绋":"紼","绌":"絀","绍":"紹","绎":"繹","经":"經","绐":"紿","绑":"綁","绒":"絨","结":"結","绔":"絝","绕":"繞","绖":"絰","绗":"絎","绘":"繪","给":"給","绚":"絢","绛":"絳","络":"絡","绝":"絕","绞":"絞","统":"統","绠":"綆","绡":"綃","绢":"絹","绣":"繡","绤":"綌","绥":"綏","绦":"絛","继":"繼","绨":"綈","绩":"績","绪":"緒","绫":"綾","绬":"緓","续":"續","绮":"綺","绯":"緋","绰":"綽","绱":"鞝","绲":"緄","绳":"繩","维":"維","绵":"綿","绶":"綬","绷":"繃","绸":"綢","绹":"綯","绺":"綹","绻":"綣","综":"綜","绽":"綻","绾":"綰","绿":"綠","缀":"綴","缁":"緇","缂":"緙","缃":"緗","缄":"緘","缅":"緬","缆":"纜","缇":"緹","缈":"緲","缉":"緝","缊":"縕","缋":"繢","缌":"緦","缍":"綞","缎":"緞","缏":"緶","缐":"線","缑":"緱","缒":"縋","缓":"緩","缔":"締","缕":"縷","编":"編","缗":"緡","缘":"緣","缙":"縉","缚":"縛","缛":"縟","缜":"縝","缝":"縫","缞":"縗","缟":"縞","缠":"纏","缡":"縭","缢":"縊","缣":"縑","缤":"繽","缥":"縹","缦":"縵","缧":"縲","缨":"纓","缩":"縮","缪":"繆","缫":"繅","缬":"纈","缭":"繚","缮":"繕","缯":"繒","缰":"繮","缱":"繾","缲":"繰","缳":"繯","缴":"繳","缵":"纘","罂":"罌","网":"網","罗":"羅","罚":"罰","罢":"罷","罴":"羆","羁":"羈","羟":"羥","羡":"羨","群":"羣","翘":"翹","翙":"翽","翚":"翬","耢":"耮","耧":"耬","耸":"聳","耻":"恥","聂":"聶","聋":"聾","职":"職","聍":"聹","联":"聯","聩":"聵","聪":"聰","肃":"肅","肠":"腸","肤":"膚","肮":"骯","肴":"餚","肾":"腎","肿":"腫","胀":"脹","胁":"脅","胄":"胄","胆":"膽","背":"背","胜":"勝","胡":"胡","胧":"朧","胨":"腖","胪":"臚","胫":"脛","胶":"膠","脉":"脈","脍":"膾","脏":"髒","脐":"臍","脑":"腦","脓":"膿","脔":"臠","脚":"腳","脱":"脫","脶":"腡","脸":"臉","腊":"臘","腌":"醃","腘":"膕","腭":"齶","腻":"膩","腼":"靦","腽":"膃","腾":"騰","膑":"臏","膻":"羶","臜":"臢","致":"致","舆":"輿","舍":"舍","舣":"艤","舰":"艦","舱":"艙","舻":"艫","艰":"艱","艳":"豔","艺":"藝","节":"節","芈":"羋","芗":"薌","芜":"蕪","芦":"蘆","芸":"芸","苁":"蓯","苇":"葦","苈":"藶","苋":"莧","苌":"萇","苍":"蒼","苎":"苧","苏":"蘇","苔":"苔","苧":"薴","苹":"蘋","范":"範","茎":"莖","茏":"蘢","茑":"蔦","茔":"塋","茕":"煢","茧":"繭","荆":"荊","荐":"薦","荙":"薘","荚":"莢","荛":"蕘","荜":"蓽","荝":"萴","荞":"蕎","荟":"薈","荠":"薺","荡":"蕩","荣":"榮","荤":"葷","荥":"滎","荦":"犖","荧":"熒","荨":"蕁","荩":"藎","荪":"蓀","荫":"蔭","荬":"蕒","荭":"葒","荮":"葤","药":"藥","莅":"蒞","莱":"萊","莲":"蓮","莳":"蒔","莴":"萵","莶":"薟","获":"獲","莸":"蕕","莹":"瑩","莺":"鶯","莼":"蓴","萚":"蘀","萝":"蘿","萤":"螢","营":"營","萦":"縈","萧":"蕭","萨":"薩","葱":"蔥","蒀":"蒕","蒇":"蕆","蒉":"蕢","蒋":"蔣","蒌":"蔞","蒏":"醟","蒙":"蒙","蓝":"藍","蓟":"薊","蓠":"蘺","蓣":"蕷","蓥":"鎣","蓦":"驀","蔂":"虆","蔑":"蔑","蔷":"薔","蔹":"蘞","蔺":"藺","蔼":"藹","蕰":"薀","蕲":"蘄","蕴":"蘊","薮":"藪","藓":"蘚","藴":"蘊","蘖":"櫱","虏":"虜","虑":"慮","虚":"虛","虫":"蟲","虬":"虯","虮":"蟣","虱":"蝨","虽":"雖","虾":"蝦","虿":"蠆","蚀":"蝕","蚁":"蟻","蚂":"螞","蚃":"蠁","蚕":"蠶","蚝":"蠔","蚬":"蜆","蛊":"蠱","蛎":"蠣","蛏":"蟶","蛮":"蠻","蛰":"蟄","蛱":"蛺","蛲":"蟯","蛳":"螄","蛴":"蠐","蜕":"蛻","蜗":"蝸","蜡":"蠟","蝇":"蠅","蝈":"蟈","蝉":"蟬","蝎":"蠍","蝼":"螻","蝾":"蠑","螀":"螿","螨":"蟎","蟏":"蠨","衅":"釁","衔":"銜","补":"補","表":"表","衬":"襯","衮":"袞","袄":"襖","袅":"嫋","袆":"褘","袜":"襪","袭":"襲","袯":"襏","装":"裝","裆":"襠","裈":"褌","裢":"褳","裣":"襝","裤":"褲","裥":"襉","褛":"褸","褴":"襤","襕":"襴","见":"見","观":"觀","觃":"覎","规":"規","觅":"覓","视":"視","觇":"覘","览":"覽","觉":"覺","觊":"覬","觋":"覡","觌":"觿","觍":"覥","觎":"覦","觏":"覯","觐":"覲","觑":"覷","觞":"觴","触":"觸","觯":"觶","訚":"誾","詟":"讋","誉":"譽","誊":"謄","讠":"訁","计":"計","订":"訂","讣":"訃","认":"認","讥":"譏","讦":"訐","讧":"訌","讨":"討","让":"讓","讪":"訕","讫":"訖","讬":"託","训":"訓","议":"議","讯":"訊","记":"記","讱":"訒","讲":"講","讳":"諱","讴":"謳","讵":"詎","讶":"訝","讷":"訥","许":"許","讹":"訛","论":"論","讻":"訩","讼":"訟","讽":"諷","设":"設","访":"訪","诀":"訣","证":"證","诂":"詁","诃":"訶","评":"評","诅":"詛","识":"識","诇":"詗","诈":"詐","诉":"訴","诊":"診","诋":"詆","诌":"謅","词":"詞","诎":"詘","诏":"詔","诐":"詖","译":"譯","诒":"詒","诓":"誆","诔":"誄","试":"試","诖":"詿","诗":"詩","诘":"詰","诙":"詼","诚":"誠","诛":"誅","诜":"詵","话":"話","诞":"誕","诟":"詬","诠":"詮","诡":"詭","询":"詢","诣":"詣","诤":"諍","该":"該","详":"詳","诧":"詫","诨":"諢","诩":"詡","诪":"譸","诫":"誡","诬":"誣","语":"語","诮":"誚","误":"誤","诰":"誥","诱":"誘","诲":"誨","诳":"誑","说":"說","诵":"誦","诶":"誒","请":"請","诸":"諸","诹":"諏","诺":"諾","读":"讀","诼":"諑","诽":"誹","课":"課","诿":"諉","谀":"諛","谁":"誰","谂":"諗","调":"調","谄":"諂","谅":"諒","谆":"諄","谇":"誶","谈":"談","谉":"讅","谊":"誼","谋":"謀","谌":"諶","谍":"諜","谎":"謊","谏":"諫","谐":"諧","谑":"謔","谒":"謁","谓":"謂","谔":"諤","谕":"諭","谖":"諼","谗":"讒","谘":"諮","谙":"諳","谚":"諺","谛":"諦","谜":"謎","谝":"諞","谞":"諝","谟":"謨","谠":"讜","谡":"謖","谢":"謝","谣":"謠","谤":"謗","谥":"諡","谦":"謙","谧":"謐","谨":"謹","谩":"謾","谪":"謫","谫":"譾","谬":"謬","谭":"譚","谮":"譖","谯":"譙","谰":"讕","谱":"譜","谲":"譎","谳":"讞","谴":"譴","谵":"譫","谶":"讖","谷":"谷","豮":"豶","贝":"貝","贞":"貞","负":"負","贠":"貟","贡":"貢","财":"財","责":"責","贤":"賢","败":"敗","账":"賬","货":"貨","质":"質","贩":"販","贪":"貪","贫":"貧","贬":"貶","购":"購","贮":"貯","贯":"貫","贰":"貳","贱":"賤","贲":"賁","贳":"貰","贴":"貼","贵":"貴","贶":"貺","贷":"貸","贸":"貿","费":"費","贺":"賀","贻":"貽","贼":"賊","贽":"贄","贾":"賈","贿":"賄","赀":"貲","赁":"賃","赂":"賂","赃":"贓","资":"資","赅":"賅","赆":"贐","赇":"賕","赈":"賑","赉":"賚","赊":"賒","赋":"賦","赌":"賭","赍":"齎","赎":"贖","赏":"賞","赐":"賜","赑":"贔","赒":"賙","赓":"賡","赔":"賠","赕":"賧","赖":"賴","赗":"賵","赘":"贅","赙":"賻","赚":"賺","赛":"賽","赜":"賾","赝":"贗","赞":"贊","赟":"贇","赠":"贈","赡":"贍","赢":"贏","赣":"贛","赪":"赬","赵":"趙","赶":"趕","趋":"趨","趱":"趲","趸":"躉","跃":"躍","跄":"蹌","跖":"蹠","跞":"躒","践":"踐","跶":"躂","跷":"蹺","跸":"蹕","跹":"躚","跻":"躋","踌":"躊","踪":"蹤","踬":"躓","踯":"躑","蹑":"躡","蹒":"蹣","蹰":"躕","蹿":"躥","躏":"躪","躜":"躦","躯":"軀","輼":"轀","车":"車","轧":"軋","轨":"軌","轩":"軒","轪":"軑","轫":"軔","转":"轉","轭":"軛","轮":"輪","软":"軟","轰":"轟","轱":"軲","轲":"軻","轳":"轤","轴":"軸","轵":"軹","轶":"軼","轷":"軤","轸":"軫","轹":"轢","轺":"軺","轻":"輕","轼":"軾","载":"載","轾":"輊","轿":"轎","辀":"輈","辁":"輇","辂":"輅","较":"較","辄":"輒","辅":"輔","辆":"輛","辇":"輦","辈":"輩","辉":"輝","辊":"輥","辋":"輞","辌":"輬","辍":"輟","辎":"輜","辏":"輳","辐":"輻","辑":"輯","辒":"轀","输":"輸","辔":"轡","辕":"轅","辖":"轄","辗":"輾","辘":"轆","辙":"轍","辚":"轔","辞":"辭","辟":"闢","辩":"辯","辫":"辮","边":"邊","辽":"遼","达":"達","迁":"遷","过":"過","迈":"邁","运":"運","还":"還","这":"這","进":"進","远":"遠","违":"違","连":"連","迟":"遲","迩":"邇","迳":"逕","迹":"跡","适":"適","选":"選","逊":"遜","递":"遞","逦":"邐","逻":"邏","遗":"遺","遥":"遙","邓":"鄧","邝":"鄺","邬":"鄔","邮":"郵","邹":"鄒","邺":"鄴","邻":"鄰","郁":"鬱","郏":"郟","郐":"鄶","郑":"鄭","郓":"鄆","郦":"酈","郧":"鄖","郸":"鄲","酂":"酇","酝":"醞","酦":"醱","酱":"醬","酸":"酸","酽":"釅","酾":"釃","酿":"釀","醖":"醞","采":"採","释":"釋","里":"裏","鉴":"鑑","銮":"鑾","錾":"鏨","钅":"釒","钆":"釓","钇":"釔","针":"針","钉":"釘","钊":"釗","钋":"釙","钌":"釕","钍":"釷","钎":"釺","钏":"釧","钐":"釤","钑":"鈒","钒":"釩","钓":"釣","钔":"鍆","钕":"釹","钖":"鍚","钗":"釵","钘":"鈃","钙":"鈣","钚":"鈈","钛":"鈦","钜":"鉅","钝":"鈍","钞":"鈔","钟":"鍾","钠":"鈉","钡":"鋇","钢":"鋼","钣":"鈑","钤":"鈐","钥":"鑰","钦":"欽","钧":"鈞","钨":"鎢","钩":"鉤","钪":"鈧","钫":"鈁","钬":"鈥","钭":"鈄","钮":"鈕","钯":"鈀","钰":"鈺","钱":"錢","钲":"鉦","钳":"鉗","钴":"鈷","钵":"鉢","钶":"鈳","钷":"鉕","钸":"鈽","钹":"鈸","钺":"鉞","钻":"鑽","钼":"鉬","钽":"鉭","钾":"鉀","钿":"鈿","铀":"鈾","铁":"鐵","铂":"鉑","铃":"鈴","铄":"鑠","铅":"鉛","铆":"鉚","铇":"鉋","铈":"鈰","铉":"鉉","铊":"鉈","铋":"鉍","铌":"鈮","铍":"鈹","铎":"鐸","铏":"鉶","铐":"銬","铑":"銠","铒":"鉺","铓":"鋩","铔":"錏","铕":"銪","铖":"鋮","铗":"鋏","铘":"鋣","铙":"鐃","铚":"銍","铛":"鐺","铜":"銅","铝":"鋁","铞":"銱","铟":"銦","铠":"鎧","铡":"鍘","铢":"銖","铣":"銑","铤":"鋌","铥":"銩","铦":"銛","铧":"鏵","铨":"銓","铩":"鎩","铪":"鉿","铫":"銚","铬":"鉻","铭":"銘","铮":"錚","铯":"銫","铰":"鉸","铱":"銥","铲":"鏟","铳":"銃","铴":"鐋","铵":"銨","银":"銀","铷":"銣","铸":"鑄","铹":"鐒","铺":"鋪","铻":"鋙","铼":"錸","铽":"鋱","链":"鏈","铿":"鏗","销":"銷","锁":"鎖","锂":"鋰","锃":"鋥","锄":"鋤","锅":"鍋","锆":"鋯","锇":"鋨","锈":"鏽","锉":"銼","锊":"鋝","锋":"鋒","锌":"鋅","锍":"鋶","锎":"鐦","锏":"鐧","锐":"銳","锑":"銻","锒":"鋃","锓":"鋟","锔":"鋦","锕":"錒","锖":"錆","锗":"鍺","锘":"鍩","错":"錯","锚":"錨","锛":"錛","锜":"錡","锝":"鍀","锞":"錁","锟":"錕","锠":"錩","锡":"錫","锢":"錮","锣":"鑼","锤":"錘","锥":"錐","锦":"錦","锧":"鑕","锨":"鍁","锩":"錈","锪":"鍃","锫":"錇","锬":"錟","锭":"錠","键":"鍵","锯":"鋸","锰":"錳","锱":"錙","锲":"鍥","锳":"鍈","锴":"鍇","锵":"鏘","锶":"鍶","锷":"鍔","锸":"鍤","锹":"鍬","锺":"鍾","锻":"鍛","锼":"鎪","锽":"鍠","锾":"鍰","锿":"鎄","镀":"鍍","镁":"鎂","镂":"鏤","镃":"鎡","镄":"鐨","镅":"鎇","镆":"鏌","镇":"鎮","镈":"鎛","镉":"鎘","镊":"鑷","镋":"钂","镌":"鐫","镍":"鎳","镎":"鎿","镏":"鎦","镐":"鎬","镑":"鎊","镒":"鎰","镓":"鎵","镔":"鑌","镕":"鎔","镖":"鏢","镗":"鏜","镘":"鏝","镙":"鏍","镚":"鏰","镛":"鏞","镜":"鏡","镝":"鏑","镞":"鏃","镟":"鏇","镠":"鏐","镡":"鐔","镢":"钁","镣":"鐐","镤":"鏷","镥":"鑥","镦":"鐓","镧":"鑭","镨":"鐠","镩":"鑹","镪":"鏹","镫":"鐙","镬":"鑊","镭":"鐳","镮":"鐶","镯":"鐲","镰":"鐮","镱":"鐿","镲":"鑔","镳":"鑣","镴":"鑞","镵":"鑱","镶":"鑲","长":"長","门":"門","闩":"閂","闪":"閃","闫":"閆","闬":"閈","闭":"閉","问":"問","闯":"闖","闰":"閏","闱":"闈","闲":"閒","闳":"閎","间":"間","闵":"閔","闶":"閌","闷":"悶","闸":"閘","闹":"鬧","闺":"閨","闻":"聞","闼":"闥","闽":"閩","闾":"閭","闿":"闓","阀":"閥","阁":"閣","阂":"閡","阃":"閫","阄":"鬮","阅":"閱","阆":"閬","阇":"闍","阈":"閾","阉":"閹","阊":"閶","阋":"鬩","阌":"閿","阍":"閽","阎":"閻","阏":"閼","阐":"闡","阑":"闌","阒":"闃","阓":"闠","阔":"闊","阕":"闋","阖":"闔","阗":"闐","阘":"闒","阙":"闕","阚":"闞","阛":"闤","队":"隊","阳":"陽","阴":"陰","阵":"陣","阶":"階","际":"際","陆":"陸","陇":"隴","陈":"陳","陉":"陘","陕":"陝","陦":"隯","陧":"隉","陨":"隕","险":"險","随":"隨","隐":"隱","隶":"隸","隽":"雋","难":"難","雇":"僱","雏":"雛","雕":"雕","雠":"讎","雳":"靂","雾":"霧","霁":"霽","霉":"黴","霡":"霢","霭":"靄","靓":"靚","靔":"靝","静":"靜","面":"面","靥":"靨","鞑":"韃","鞒":"鞽","鞯":"韉","鞲":"韝","韦":"韋","韧":"韌","韨":"韍","韩":"韓","韪":"韙","韫":"韞","韬":"韜","韵":"韻","页":"頁","顶":"頂","顷":"頃","顸":"頇","项":"項","顺":"順","须":"須","顼":"頊","顽":"頑","顾":"顧","顿":"頓","颀":"頎","颁":"頒","颂":"頌","颃":"頏","预":"預","颅":"顱","领":"領","颇":"頗","颈":"頸","颉":"頡","颊":"頰","颋":"頲","颌":"頜","颍":"潁","颎":"熲","颏":"頦","颐":"頤","频":"頻","颒":"頮","颓":"頹","颔":"頷","颕":"頴","颖":"穎","颗":"顆","题":"題","颙":"顒","颚":"顎","颛":"顓","颜":"顏","额":"額","颞":"顳","颟":"顢","颠":"顛","颡":"顙","颢":"顥","颣":"纇","颤":"顫","颥":"顬","颦":"顰","颧":"顴","风":"風","飏":"颺","飐":"颭","飑":"颮","飒":"颯","飓":"颶","飔":"颸","飕":"颼","飖":"颻","飗":"飀","飘":"飄","飙":"飆","飚":"飈","飞":"飛","飨":"饗","餍":"饜","饣":"飠","饤":"飣","饥":"飢","饦":"飥","饧":"餳","饨":"飩","饩":"餼","饪":"飪","饫":"飫","饬":"飭","饭":"飯","饮":"飲","饯":"餞","饰":"飾","饱":"飽","饲":"飼","饳":"飿","饴":"飴","饵":"餌","饶":"饒","饷":"餉","饸":"餄","饹":"餎","饺":"餃","饻":"餏","饼":"餅","饽":"餑","饾":"餖","饿":"餓","馀":"餘","馁":"餒","馂":"餕","馃":"餜","馄":"餛","馅":"餡","馆":"館","馇":"餷","馈":"饋","馉":"餶","馊":"餿","馋":"饞","馌":"饁","馍":"饃","馎":"餺","馏":"餾","馐":"饈","馑":"饉","馒":"饅","馓":"饊","馔":"饌","馕":"饢","马":"馬","驭":"馭","驮":"馱","驯":"馴","驰":"馳","驱":"驅","驲":"馹","驳":"駁","驴":"驢","驵":"駔","驶":"駛","驷":"駟","驸":"駙","驹":"駒","驺":"騶","驻":"駐","驼":"駝","驽":"駑","驾":"駕","驿":"驛","骀":"駘","骁":"驍","骂":"罵","骃":"駰","骄":"驕","骅":"驊","骆":"駱","骇":"駭","骈":"駢","骉":"驫","骊":"驪","骋":"騁","验":"驗","骍":"騂","骎":"駸","骏":"駿","骐":"騏","骑":"騎","骒":"騍","骓":"騅","骔":"騌","骕":"驌","骖":"驂","骗":"騙","骘":"騭","骙":"騤","骚":"騷","骛":"騖","骜":"驁","骝":"騮","骞":"騫","骟":"騸","骠":"驃","骡":"騾","骢":"驄","骣":"驏","骤":"驟","骥":"驥","骦":"驦","骧":"驤","髅":"髏","髋":"髖","髌":"髕","鬓":"鬢","鬶":"鬹","魇":"魘","魉":"魎","鱼":"魚","鱽":"魛","鱾":"魢","鱿":"魷","鲀":"魨","鲁":"魯","鲂":"魴","鲃":"䰾","鲄":"魺","鲅":"鮁","鲆":"鮃","鲇":"鮎","鲈":"鱸","鲉":"鮋","鲊":"鮓","鲋":"鮒","鲌":"鮊","鲍":"鮑","鲎":"鱟","鲏":"鮍","鲐":"鮐","鲑":"鮭","鲒":"鮚","鲓":"鮳","鲔":"鮪","鲕":"鮞","鲖":"鮦","鲗":"鰂","鲘":"鮜","鲙":"鱠","鲚":"鱭","鲛":"鮫","鲜":"鮮","鲝":"鮺","鲞":"鯗","鲟":"鱘","鲠":"鯁","鲡":"鱺","鲢":"鰱","鲣":"鰹","鲤":"鯉","鲥":"鰣","鲦":"鰷","鲧":"鯀","鲨":"鯊","鲩":"鯇","鲪":"鮶","鲫":"鯽","鲬":"鯒","鲭":"鯖","鲮":"鯪","鲯":"鯕","鲰":"鯫","鲱":"鯡","鲲":"鯤","鲳":"鯧","鲴":"鯝","鲵":"鯢","鲶":"鯰","鲷":"鯛","鲸":"鯨","鲹":"鰺","鲺":"鯴","鲻":"鯔","鲼":"鱝","鲽":"鰈","鲾":"鰏","鲿":"鱨","鳀":"鯷","鳁":"鰮","鳂":"鰃","鳃":"鰓","鳄":"鱷","鳅":"鰍","鳆":"鰒","鳇":"鰉","鳈":"鰁","鳉":"鱂","鳊":"鯿","鳋":"鰠","鳌":"鰲","鳍":"鰭","鳎":"鰨","鳏":"鰥","鳐":"鰩","鳑":"鰟","鳒":"鰜","鳓":"鰳","鳔":"鰾","鳕":"鱈","鳖":"鱉","鳗":"鰻","鳘":"鰵","鳙":"鱅","鳚":"䲁","鳛":"鰼","鳜":"鱖","鳝":"鱔","鳞":"鱗","鳟":"鱒","鳠":"鱯","鳡":"鱤","鳢":"鱧","鳣":"鱣","鳤":"䲘","鸟":"鳥","鸠":"鳩","鸡":"雞","鸢":"鳶","鸣":"鳴","鸤":"鳲","鸥":"鷗","鸦":"鴉","鸧":"鶬","鸨":"鴇","鸩":"鴆","鸪":"鴣","鸫":"鶇","鸬":"鸕","鸭":"鴨","鸮":"鴞","鸯":"鴦","鸰":"鴒","鸱":"鴟","鸲":"鴝","鸳":"鴛","鸴":"鷽","鸵":"鴕","鸶":"鷥","鸷":"鷙","鸸":"鴯","鸹":"鴰","鸺":"鵂","鸻":"鴴","鸼":"鵃","鸽":"鴿","鸾":"鸞","鸿":"鴻","鹀":"鵐","鹁":"鵓","鹂":"鸝","鹃":"鵑","鹄":"鵠","鹅":"鵝","鹆":"鵒","鹇":"鷳","鹈":"鵜","鹉":"鵡","鹊":"鵲","鹋":"鶓","鹌":"鵪","鹍":"鵾","鹎":"鵯","鹏":"鵬","鹐":"鵮","鹑":"鶉","鹒":"鶊","鹓":"鵷","鹔":"鷫","鹕":"鶘","鹖":"鶡","鹗":"鶚","鹘":"鶻","鹙":"鶖","鹚":"鷀","鹛":"鶥","鹜":"鶩","鹝":"鷊","鹞":"鷂","鹟":"鶲","鹠":"鶹","鹡":"鶺","鹢":"鷁","鹣":"鶼","鹤":"鶴","鹥":"鷖","鹦":"鸚","鹧":"鷓","鹨":"鷚","鹩":"鷯","鹪":"鷦","鹫":"鷲","鹬":"鷸","鹭":"鷺","鹮":"䴉","鹯":"鸇","鹰":"鷹","鹱":"鸌","鹲":"鸏","鹳":"鸛","鹴":"鸘","鹾":"鹺","麦":"麥","麸":"麩","麹":"麴","麺":"麪","麽":"麼","黄":"黃","黉":"黌","黡":"黶","黩":"黷","黪":"黲","黾":"黽","鼋":"黿","鼌":"鼂","鼍":"鼉","鼹":"鼴","齐":"齊","齑":"齏","齿":"齒","龀":"齔","龁":"齕","龂":"齗","龃":"齟","龄":"齡","龅":"齙","龆":"齠","龇":"齜","龈":"齦","龉":"齬","龊":"齪","龋":"齲","龌":"齷","龙":"龍","龚":"龔","龛":"龕","龟":"龜","鿎":"䃮","鿏":"䥑","鿒":"鿓","鿔":"鎶","𠀾":"𠁞","𠆲":"儣","𠆿":"𠌥","𠇹":"俓","𠉂":"㒓","𠉗":"𠏢","𠋆":"儭","𠚳":"𠠎","𠛅":"剾","𠛆":"𠞆","𠛾":"𪟖","𠡠":"勑","𠮶":"嗰","𠯟":"哯","𠯠":"噅","𠰱":"㘉","𠰷":"嚧","𠱞":"囃","𠲥":"𡅏","𠴛":"𡃕","𠴢":"𡄔","𠵸":"𡄣","𠵾":"㗲","𡋀":"𡓾","𡋗":"𡑭","𡋤":"壗","𡍣":"𡔖","𡒄":"壈","𡝠":"㜷","𡞋":"㜗","𡞱":"㜢","𡠟":"孎","𡥧":"孻","𡭜":"𡮉","𡭬":"𡮣","𡳃":"𡳳","𡳒":"𦘧","𡶴":"嵼","𡸃":"𡽗","𡺃":"嶈","𡺄":"嶘","𢋈":"㢝","𢗓":"㦛","𢘙":"𢤱","𢘝":"𢣚","𢘞":"𢣭","𢙏":"愻","𢙐":"憹","𢙑":"𢠼","𢙒":"憢","𢙓":"懀","𢛯":"㦎","𢠁":"懎","𢢐":"𤢻","𢧐":"戰","𢫊":"𢷮","𢫞":"𢶫","𢫬":"摋","𢬍":"擫","𢬦":"𢹿","𢭏":"擣","𢽾":"斅","𣃁":"斸","𣆐":"曥","𣈣":"𣋋","𣍨":"𦢈","𣍯":"腪","𣍰":"脥","𣎑":"臗","𣏢":"槫","𣐕":"桱","𣐤":"欍","𣑶":"𣠲","𣒌":"楇","𣓿":"橯","𣔌":"樤","𣗊":"樠","𣗋":"欓","𣗙":"㰙","𣘐":"㯤","𣘓":"𣞻","𣘴":"檭","𣘷":"𣝕","𣚚":"欘","𣞎":"𣠩","𣨼":"殢","𣭤":"𣯴","𣯣":"𣯩","𣱝":"氭","𣲗":"湋","𣲘":"潕","𣳆":"㵗","𣶩":"澅","𣶫":"𣿉","𣶭":"𪷓","𣷷":"𤅶","𣸣":"濆","𣺼":"灙","𣺽":"𤁣","𣽷":"瀃","𤆡":"熓","𤆢":"㷍","𤇃":"爄","𤇄":"熌","𤇭":"爖","𤇹":"熚","𤈶":"熉","𤈷":"㷿","𤊀":"𤒎","𤊰":"𤓩","𤋏":"熡","𤎺":"𤓎","𤎻":"𤑳","𤙯":"𤛮","𤝢":"𤢟","𤞃":"獩","𤞤":"玁","𤠋":"㺏","𤦀":"瓕","𤩽":"瓛","𤳄":"𤳸","𤶊":"癐","𤶧":"𤸫","𤻊":"㿗","𤽯":"㿧","𤾀":"皟","𤿲":"麬","𥁢":"䀉","𥅘":"𥌃","𥅴":"䀹","𥅿":"𥊝","𥆧":"瞤","𥇢":"䁪","𥎝":"䂎","𥐟":"礒","𥐯":"𥖅","𥐰":"𥕥","𥐻":"碙","𥞦":"𥞵","𥧂":"𥨐","𥩟":"竚","𥩺":"𥪂","𥫣":"籅","𥬀":"䉙","𥬞":"籋","𥬠":"篘","𥭉":"𥵊","𥮋":"𥸠","𥮜":"䉲","𥮾":"篸","𥱔":"𥵃","𥹥":"𥼽","𥺅":"䊭","𥺇":"𥽖","𦈈":"𥿊","𦈉":"緷","𦈋":"綇","𦈌":"綀","𦈎":"繟","𦈏":"緍","𦈐":"縺","𦈑":"緸","𦈒":"𦂅","𦈓":"䋿","𦈔":"縎","𦈕":"緰","𦈖":"䌈","𦈗":"𦃄","𦈘":"䌋","𦈙":"䌰","𦈚":"縬","𦈛":"繓","𦈜":"䌖","𦈝":"繏","𦈞":"䌟","𦈟":"䌝","𦈠":"䌥","𦈡":"繻","𦍠":"䍽","𦛨":"朥","𦝼":"膢","𦟗":"𦣎","𦨩":"𦪽","𦰏":"蓧","𦰴":"䕳","𦶟":"爇","𦶻":"𦾟","𦻕":"蘟","𧉐":"𧕟","𧉞":"䗿","𧌥":"𧎈","𧏖":"蠙","𧏗":"蠀","𧑏":"蠾","𧒭":"𧔥","𧜭":"䙱","𧝝":"襰","𧝧":"𧟀","𧮪":"詀","𧳕":"𧳟","𧹑":"䞈","𧹒":"買","𧹓":"𧶔","𧹔":"賬","𧹕":"𝻻","𧹖":"賟","𧹗":"贃","𧿈":"𨇁","𨀁":"躘","𨀱":"𨄣","𨁴":"𨅍","𨂺":"𨈊","𨄄":"𨈌","𨅛":"䠱","𨅫":"𨇞","𨅬":"躝","𨉗":"軉","𨐅":"軗","𨐆":"𨊻","𨐇":"𨏠","𨐈":"輄","𨐉":"𨎮","𨐊":"𨏥","𨑹":"䢨","𨟳":"𨣞","𨠨":"𨣧","𨡙":"𨢿","𨡺":"𨣈","𨤰":"𨤻","𨰾":"鎷","𨰿":"釳","𨱀":"𨥛","𨱁":"鈠","𨱂":"鈋","𨱃":"鈲","𨱄":"鈯","𨱅":"鉁","𨱆":"龯","𨱇":"銶","𨱈":"鋉","𨱉":"鍄","𨱊":"𨧱","𨱋":"錂","𨱌":"鏆","𨱍":"鎯","𨱎":"鍮","𨱏":"鎝","𨱐":"𨫒","𨱑":"鐄","𨱒":"鏉","𨱓":"鐎","𨱔":"鐏","𨱕":"𨮂","𨱖":"䥩","𨷿":"䦳","𨸀":"𨳕","𨸁":"𨳑","𨸂":"閍","𨸃":"閐","𨸄":"䦘","𨸅":"𨴗","𨸆":"𨵩","𨸇":"𨵸","𨸉":"𨶀","𨸊":"𨶏","𨸋":"𨶲","𨸌":"𨶮","𨸎":"𨷲","𨸘":"𨽏","𨸟":"䧢","𩏼":"䪏","𩏽":"𩏪","𩏾":"𩎢","𩏿":"䪘","𩐀":"䪗","𩓋":"顂","𩖕":"𩓣","𩖖":"顃","𩖗":"䫴","𩙥":"颰","𩙦":"𩗀","𩙧":"䬞","𩙨":"𩘹","𩙩":"𩘀","𩙪":"颷","𩙫":"颾","𩙬":"𩘺","𩙭":"𩘝","𩙮":"䬘","𩙯":"䬝","𩙰":"𩙈","𩟿":"𩚛","𩠀":"𩚥","𩠁":"𩚵","𩠂":"𩛆","𩠃":"𩛩","𩠅":"𩟐","𩠆":"𩜦","𩠇":"䭀","𩠈":"䭃","𩠉":"𩜇","𩠊":"𩜵","𩠋":"𩝔","𩠌":"餸","𩠎":"𩞄","𩠏":"𩞦","𩠠":"𩠴","𩡖":"𩡣","𩧦":"𩡺","𩧨":"駎","𩧩":"𩤊","𩧪":"䮾","𩧫":"駚","𩧬":"𩢡","𩧭":"䭿","𩧮":"𩢾","𩧯":"驋","𩧰":"䮝","𩧱":"𩥉","𩧲":"駧","𩧳":"𩢸","𩧴":"駩","𩧵":"𩢴","𩧶":"𩣏","𩧸":"𩣫","𩧺":"駶","𩧻":"𩣵","𩧼":"𩣺","𩧿":"䮠","𩨀":"騔","𩨁":"䮞","𩨂":"驄","𩨃":"騝","𩨄":"騪","𩨅":"𩤸","𩨆":"𩤙","𩨇":"䮫","𩨈":"騟","𩨉":"𩤲","𩨊":"騚","𩨋":"𩥄","𩨌":"𩥑","𩨍":"𩥇","𩨎":"龭","𩨏":"䮳","𩨐":"𩧆","𩩈":"䯤","𩬣":"𩭙","𩬤":"𩰀","𩭹":"鬖","𩯒":"𩯳","𩰰":"𩰹","𩲒":"𩳤","𩴌":"𩴵","𩽹":"魥","𩽺":"𩵩","𩽻":"𩵹","𩽼":"鯶","𩽽":"𩶱","𩽾":"鮟","𩽿":"𩶰","𩾁":"鯄","𩾂":"䲖","𩾃":"鮸","𩾄":"𩷰","𩾅":"𩸃","𩾆":"𩸦","𩾇":"鯱","𩾈":"䱙","𩾊":"䱬","𩾋":"䱰","𩾌":"鱇","𩾎":"𩽇","𪉂":"䲰","𪉃":"鳼","𪉄":"𩿪","𪉅":"𪀦","𪉆":"鴲","𪉈":"鴜","𪉉":"𪁈","𪉊":"鷨","𪉋":"𪀾","𪉌":"𪁖","𪉍":"鵚","𪉎":"𪂆","𪉏":"𪃏","𪉐":"𪃍","𪉑":"鷔","𪉒":"𪄕","𪉔":"𪄆","𪉕":"𪇳","𪎈":"䴬","𪎉":"麲","𪎊":"麨","𪎋":"䴴","𪎌":"麳","𪑅":"䵳","𪔭":"𪔵","𪚏":"𪘀","𪚐":"𪘯","𪜎":"𠿕","𪞝":"凙","𪟎":"㔋","𪟝":"勣","𪠀":"𧷎","𪠟":"㓄","𪠡":"𠬙","𪠳":"唓","𪠵":"㖮","𪠸":"嚛","𪠺":"𠽃","𪠽":"噹","𪡀":"嘺","𪡃":"嘪","𪡋":"噞","𪡏":"嗹","𪡛":"㗿","𪡞":"嘳","𪡺":"𡃄","𪢌":"㘓","𪢐":"𡃤","𪢒":"𡂡","𪢕":"嚽","𪢖":"𡅯","𪢠":"囒","𪢮":"圞","𪢸":"墲","𪣆":"埬","𪣒":"堚","𪣻":"塿","𪤄":"𡓁","𪤚":"壣","𪥠":"𧹈","𪥫":"孇","𪥰":"嬣","𪥿":"嬻","𪧀":"孾","𪧘":"寠","𪨊":"㞞","𪨗":"屩","𪨧":"崙","𪨩":"𡸗","𪨶":"輋","𪨷":"巗","𪨹":"𡹬","𪩇":"㟺","𪩎":"巊","𪩘":"巘","𪩛":"𡿖","𪩷":"幝","𪩸":"幩","𪪏":"廬","𪪑":"㢗","𪪞":"廧","𪪴":"𢍰","𪪼":"彃","𪫌":"徿","𪫡":"𢤩","𪫷":"㦞","𪫺":"憸","𪬚":"𢣐","𪬯":"𢤿","𪭝":"𢯷","𪭢":"摐","𪭧":"擟","𪭯":"𢶒","𪭵":"掚","𪭾":"撊","𪮃":"㨻","𪮋":"㩋","𪮖":"撧","𪮳":"𢺳","𪮶":"攋","𪯋":"㪎","𪰶":"曊","𪱥":"膹","𪱷":"梖","𪲎":"櫅","𪲔":"欐","𪲛":"檵","𪲮":"櫠","𪳍":"欇","𪳗":"𣜬","𪴙":"欑","𪵑":"毊","𪵣":"霼","𪵱":"濿","𪶄":"溡","𪶒":"𤄷","𪶮":"𣽏","𪷍":"㵾","𪷽":"灒","𪸕":"熂","𪸩":"煇","𪹀":"𤑹","𪹠":"𤓌","𪹳":"爥","𪹹":"𤒻","𪺣":"𤘀","𪺪":"𤜆","𪺭":"犞","𪺷":"獊","𪺸":"𤠮","𪺻":"㺜","𪺽":"猌","𪻐":"瑽","𪻨":"瓄","𪻲":"瑻","𪻺":"璝","𪼋":"㻶","𪼴":"𤬅","𪽈":"畼","𪽝":"𤳷","𪽪":"痮","𪽭":"𤷃","𪽮":"㿖","𪽴":"𤺔","𪽷":"瘱","𪾔":"盨","𪾢":"睍","𪾣":"眝","𪾦":"矑","𪾸":"矉","𪿊":"𥏝","𪿞":"𥖲","𪿫":"礮","𪿵":"𥗇","𫀌":"𥜰","𫀓":"𥜐","𫀨":"䅐","𫀬":"䅳","𫀮":"𥢷","𫁂":"䆉","𫁟":"竱","𫁡":"鴗","𫁱":"𥶽","𫁲":"䉑","𫁳":"𥯤","𫁷":"䉶","𫁺":"𥴼","𫂃":"簢","𫂆":"簂","𫂈":"䉬","𫂖":"𥴨","𫂿":"𥻦","𫃗":"𩏷","𫄙":"糺","𫄚":"䊺","𫄛":"紟","𫄜":"䋃","𫄝":"𥾯","𫄞":"䋔","𫄟":"絁","𫄠":"絙","𫄡":"絧","𫄢":"絥","𫄣":"繷","𫄤":"繨","𫄥":"纚","𫄦":"𦀖","𫄧":"綖","𫄨":"絺","𫄩":"䋦","𫄪":"𦅇","𫄫":"綟","𫄬":"緤","𫄭":"緮","𫄮":"䋼","𫄯":"𦃩","𫄰":"縍","𫄱":"繬","𫄲":"縸","𫄳":"縰","𫄴":"繂","𫄵":"𦅈","𫄶":"繈","𫄷":"繶","𫄸":"纁","𫄹":"纗","𫅅":"䍤","𫅗":"羵","𫅥":"𦒀","𫅭":"䎙","𫅼":"𦔖","𫆏":"聻","𫆝":"𦟼","𫆫":"𦡝","𫇘":"𦧺","𫇛":"艣","𫇪":"𦱌","𫇭":"蔿","𫇴":"蒭","𫇽":"蕽","𫈉":"蕳","𫈎":"葝","𫈟":"蔯","𫈵":"蕝","𫉁":"薆","𫉄":"藷","𫊪":"䗅","𫊮":"蠦","𫊸":"蟜","𫊹":"𧒯","𫊻":"蟳","𫋇":"蟂","𫋌":"蟘","𫋲":"䙔","𫋷":"襗","𫋹":"襓","𫋻":"襘","𫌀":"襀","𫌇":"襵","𫌋":"𧞫","𫌨":"覼","𫌪":"覛","𫌫":"𧡴","𫌬":"𧢄","𫌭":"覹","𫌯":"䚩","𫍐":"𧭹","𫍙":"訑","𫍚":"訞","𫍛":"訜","𫍜":"詓","𫍝":"諫","𫍞":"𧦝","𫍟":"𧦧","𫍠":"䛄","𫍡":"詑","𫍢":"譊","𫍣":"詷","𫍤":"譑","𫍥":"誂","𫍦":"譨","𫍧":"誺","𫍨":"誫","𫍩":"諣","𫍪":"誋","𫍫":"䛳","𫍬":"誷","𫍭":"𧩕","𫍮":"誳","𫍯":"諴","𫍰":"諰","𫍱":"諯","𫍲":"謏","𫍳":"諥","𫍴":"謱","𫍵":"謸","𫍶":"𧩼","𫍷":"謉","𫍸":"謆","𫍹":"謯","𫍺":"𧫝","𫍻":"譆","𫍼":"𧬤","𫍽":"譞","𫍾":"𧭈","𫍿":"譾","𫎆":"豵","𫎌":"貗","𫎦":"贚","𫎧":"䝭","𫎨":"𧸘","𫎩":"賝","𫎪":"䞋","𫎫":"贉","𫎬":"贑","𫎭":"䞓","𫎱":"䟐","𫎳":"䟆","𫎸":"𧽯","𫎺":"䟃","𫏃":"䠆","𫏆":"蹳","𫏋":"蹻","𫏌":"𨂐","𫏐":"蹔","𫏑":"𨇽","𫏕":"𨆪","𫏞":"𨇰","𫏨":"𨇤","𫐄":"軏","𫐅":"軕","𫐆":"轣","𫐇":"軜","𫐈":"軷","𫐉":"軨","𫐊":"軬","𫐋":"𨎌","𫐌":"軿","𫐍":"𨌈","𫐎":"輢","𫐏":"輖","𫐐":"輗","𫐑":"輨","𫐒":"輷","𫐓":"輮","𫐔":"𨍰","𫐕":"轊","𫐖":"轇","𫐗":"轐","𫐘":"轗","𫐙":"轠","𫐷":"遱","𫑘":"鄟","𫑡":"鄳","𫑷":"醶","𫓥":"釟","𫓦":"釨","𫓧":"鈇","𫓨":"鈛","𫓩":"鏦","𫓪":"鈆","𫓫":"𨥟","𫓬":"鉔","𫓭":"鉠","𫓮":"𨪕","𫓯":"銈","𫓰":"銊","𫓱":"鐈","𫓲":"銁","𫓳":"𨰋","𫓴":"鉾","𫓵":"鋠","𫓶":"鋗","𫓷":"𫒡","𫓸":"錽","𫓹":"錤","𫓺":"鐪","𫓻":"錜","𫓼":"𨨛","𫓽":"錝","𫓾":"錥","𫓿":"𨨢","𫔀":"鍊","𫔁":"鐼","𫔂":"鍉","𫔃":"𨰲","𫔄":"鍒","𫔅":"鎍","𫔆":"䥯","𫔇":"鎞","𫔈":"鎙","𫔉":"𨰃","𫔊":"鏥","𫔋":"䥗","𫔌":"鏾","𫔍":"鐇","𫔎":"鐍","𫔏":"𨬖","𫔐":"𨭸","𫔑":"𨭖","𫔒":"𨮳","𫔓":"𨯟","𫔔":"鑴","𫔕":"𨰥","𫔖":"𨲳","𫔭":"開","𫔮":"閒","𫔯":"閗","𫔰":"閞","𫔲":"𨴹","𫔴":"閵","𫔵":"䦯","𫔶":"闑","𫔽":"𨼳","𫕚":"𩀨","𫕥":"霣","𫕨":"𩅙","𫖃":"靧","𫖅":"䪊","𫖇":"鞾","𫖑":"𩎖","𫖒":"韠","𫖓":"𩏂","𫖔":"韛","𫖕":"韝","𫖖":"𩏠","𫖪":"𩑔","𫖫":"䪴","𫖬":"䪾","𫖭":"𩒎","𫖮":"顗","𫖯":"頫","𫖰":"䫂","𫖱":"䫀","𫖲":"䫟","𫖳":"頵","𫖴":"𩔳","𫖵":"𩓥","𫖶":"顅","𫖷":"𩔑","𫖸":"願","𫖹":"顣","𫖺":"䫶","𫗇":"䫻","𫗈":"𩗓","𫗉":"𩗴","𫗊":"䬓","𫗋":"飋","𫗚":"𩟗","𫗞":"飦","𫗟":"䬧","𫗠":"餦","𫗡":"𩚩","𫗢":"飵","𫗣":"飶","𫗤":"𩛌","𫗥":"餫","𫗦":"餔","𫗧":"餗","𫗨":"𩛡","𫗩":"饠","𫗪":"餧","𫗫":"餬","𫗬":"餪","𫗭":"餵","𫗮":"餭","𫗯":"餱","𫗰":"䭔","𫗱":"䭑","𫗳":"𩝽","𫗴":"饘","𫗵":"饟","𫘛":"馯","𫘜":"馼","𫘝":"駃","𫘞":"駞","𫘟":"駊","𫘠":"駤","𫘡":"駫","𫘣":"駻","𫘤":"騃","𫘥":"騉","𫘦":"騊","𫘧":"騄","𫘨":"騠","𫘩":"騜","𫘪":"騵","𫘫":"騴","𫘬":"騱","𫘭":"騻","𫘮":"䮰","𫘯":"驓","𫘰":"驙","𫘱":"驨","𫘽":"鬠","𫙂":"𩯁","𫚈":"鱮","𫚉":"魟","𫚊":"鰑","𫚋":"鱄","𫚌":"魦","𫚍":"魵","𫚎":"𩶁","𫚏":"䱁","𫚐":"䱀","𫚑":"鮅","𫚒":"鮄","𫚓":"鮤","𫚔":"鮰","𫚕":"鰤","𫚖":"鮆","𫚗":"鮯","𫚘":"𩻮","𫚙":"鯆","𫚚":"鮿","𫚛":"鮵","𫚜":"䲅","𫚝":"𩸄","𫚞":"鯬","𫚟":"𩸡","𫚠":"䱧","𫚡":"鯞","𫚢":"鰋","𫚣":"鯾","𫚤":"鰦","𫚥":"鰕","𫚦":"鰫","𫚧":"鰽","𫚨":"𩻗","𫚩":"𩻬","𫚪":"鱊","𫚫":"鱢","𫚬":"𩼶","𫚭":"鱲","𫛚":"鳽","𫛛":"鳷","𫛜":"鴀","𫛝":"鴅","𫛞":"鴃","𫛟":"鸗","𫛠":"𩿤","𫛡":"鴔","𫛢":"鸋","𫛣":"鴥","𫛤":"鴐","𫛥":"鵊","𫛦":"鴮","𫛧":"𪀖","𫛨":"鵧","𫛩":"鴳","𫛪":"鴽","𫛫":"鶰","𫛬":"䳜","𫛭":"鵟","𫛮":"䳤","𫛯":"鶭","𫛰":"䳢","𫛱":"鵫","𫛲":"鵰","𫛳":"鵩","𫛴":"鷤","𫛵":"鶌","𫛶":"鶒","𫛷":"鶦","𫛸":"鶗","𫛹":"𪃧","𫛺":"䳧","𫛻":"𪃒","𫛼":"䳫","𫛽":"鷅","𫛾":"𪆷","𫜀":"鷐","𫜁":"鷩","𫜂":"𪅂","𫜃":"鷣","𫜄":"鷷","𫜅":"䴋","𫜊":"𪉸","𫜑":"麷","𫜒":"䴱","𫜓":"𪌭","𫜔":"䴽","𫜕":"𪍠","𫜙":"䵴","𫜟":"𪓰","𫜨":"𪶕","𫜩":"齧","𫜪":"齩","𫜫":"𫜦","𫜬":"齰","𫜭":"齭","𫜮":"齴","𫜯":"𪙏","𫜰":"齾","𫜲":"龓","𫜳":"䶲","𫝈":"㑮","𫝋":"𠐊","𫝦":"㛝","𫝧":"㜐","𫝨":"媈","𫝩":"嬦","𫝪":"𡟫","𫝫":"婡","𫝬":"嬇","𫝭":"孆","𫝮":"孄","𫝵":"嶹","𫞅":"𦠅","𫞗":"潣","𫞚":"澬","𫞛":"㶆","𫞝":"灍","𫞠":"爧","𫞡":"爃","𫞢":"𤛱","𫞣":"㹽","𫞥":"珼","𫞦":"璾","𫞧":"𤩂","𫞨":"璼","𫞩":"璊","𫞷":"𥢶","𫟃":"絍","𫟄":"綋","𫟅":"綡","𫟆":"緟","𫟇":"𦆲","𫟑":"䖅","𫟕":"䕤","𫟞":"訨","𫟟":"詊","𫟠":"譂","𫟡":"誴","𫟢":"䜖","𫟤":"䡐","𫟥":"䡩","𫟦":"䡵","𫟫":"𨞺","𫟬":"𨟊","𫟲":"釚","𫟳":"釲","𫟴":"鈖","𫟵":"鈗","𫟶":"銏","𫟷":"鉝","𫟸":"鉽","𫟹":"鉷","𫟺":"䤤","𫟻":"銂","𫟼":"鐽","𫟽":"𨧰","𫟾":"𨩰","𫟿":"鎈","𫠀":"䥄","𫠁":"鑉","𫠂":"閝","𫠅":"韚","𫠆":"頍","𫠇":"𩖰","𫠈":"䫾","𫠊":"䮄","𫠋":"騼","𫠌":"𩦠","𫠏":"𩵦","𫠐":"魽","𫠑":"䱸","𫠒":"鱆","𫠖":"𩿅","𫠜":"齯","𫢸":"僤","𫧃":"𣍐","𫧮":"𪋿","𫫇":"噁","𫬐":"㘔","𫭟":"塸","𫭢":"埨","𫭼":"𡑍","𫮃":"墠","𫰛":"娙","𫵷":"㠣","𫶇":"嵽","𫷷":"廞","𫸩":"彄","𬀩":"暐","𬀪":"晛","𬂩":"梜","𬃊":"櫍","𬇕":"澫","𬇙":"浿","𬇹":"漍","𬉼":"熰","𬊈":"燖","𬊤":"燀","𬍛":"瓅","𬍡":"璗","𬍤":"璕","𬒈":"礐","𬒗":"𥗽","𬕂":"篢","𬘓":"紃","𬘘":"紞","𬘡":"絪","𬘩":"綎","𬘫":"綄","𬘬":"綪","𬘭":"綝","𬘯":"綧","𬙂":"縯","𬙊":"纆","𬙋":"纕","𬜬":"蔄","𬜯":"䓣","𬞟":"蘋","𬟁":"虉","𬟽":"蝀","𬣙":"訏","𬣞":"詝","𬣡":"諓","𬣳":"詪","𬤇":"諲","𬤊":"諟","𬤝":"譓","𬨂":"軝","𬨎":"輶","𬩽":"鄩","𬪩":"醲","𬬩":"釴","𬬭":"錀","𬬮":"鋹","𬬱":"釿","𬬸":"鉥","𬬹":"鉮","𬬻":"鑪","𬬿":"鉊","𬭁":"鉧","𬭊":"𨧀","𬭎":"鋐","𬭚":"錞","𬭛":"𨨏","𬭤":"鍭","𬭩":"鎓","𬭬":"鏏","𬭭":"鏚","𬭯":"䥕","𬭳":"𨭎","𬭶":"𨭆","𬭸":"鏻","𬭼":"鐩","𬮱":"闉","𬮿":"隑","𬯀":"隮","𬯎":"隤","𬱖":"頔","𬱟":"頠","𬳵":"駓","𬳶":"駉","𬳽":"駪","𬳿":"駼","𬴂":"騑","𬴃":"騞","𬴊":"驎","𬶋":"鮈","𬶍":"鮀","𬶏":"鮠","𬶐":"鮡","𬶟":"鯻","𬶠":"鰊","𬶨":"鱀","𬶭":"鰶","𬶮":"鱚","𬷕":"鵏","𬸘":"鶠","𬸚":"鸑","𬸣":"鶱","𬸦":"鷟","𬸪":"鷭","𬸯":"鷿","𬹼":"齘","𬺈":"齮","𬺓":"齼","𰬸":"繐","𰰨":"菕","𰶎":"譅","𰾄":"鋂","𰾭":"鑀","𱊜":"𪈼"},Qe={"㑮":"𫝈","㑯":"㑔","㑳":"㑇","㑶":"㐹","㒓":"𠉂","㓄":"𪠟","㓨":"刾","㔋":"𪟎","㖮":"𪠵","㗲":"𠵾","㗿":"𪡛","㘉":"𠰱","㘓":"𪢌","㘔":"𫬐","㘚":"㘎","㛝":"𫝦","㜄":"㚯","㜏":"㛣","㜐":"𫝧","㜗":"𡞋","㜢":"𡞱","㜷":"𡝠","㞞":"𪨊","㟺":"𪩇","㠏":"㟆","㠣":"𫵷","㢗":"𪪑","㢝":"𢋈","㥮":"㤘","㦎":"𢛯","㦛":"𢗓","㦞":"𪫷","㨻":"𪮃","㩋":"𪮋","㩜":"㨫","㩳":"㧐","㩵":"擜","㪎":"𪯋","㯤":"𣘐","㰙":"𣗙","㵗":"𣳆","㵾":"𪷍","㶆":"𫞛","㷍":"𤆢","㷿":"𤈷","㸇":"𤎺","㹽":"𫞣","㺏":"𤠋","㺜":"𪺻","㻶":"𪼋","㿖":"𪽮","㿗":"𤻊","㿧":"𤽯","䀉":"𥁢","䀹":"𥅴","䁪":"𥇢","䁻":"䀥","䂎":"𥎝","䃮":"鿎","䅐":"𫀨","䅳":"𫀬","䆉":"𫁂","䉑":"𫁲","䉙":"𥬀","䉬":"𫂈","䉲":"𥮜","䉶":"𫁷","䊭":"𥺅","䊷":"䌶","䊺":"𫄚","䋃":"𫄜","䋔":"𫄞","䋙":"䌺","䋚":"䌻","䋦":"𫄩","䋹":"䌿","䋻":"䌾","䋼":"𫄮","䋿":"𦈓","䌈":"𦈖","䌋":"𦈘","䌖":"𦈜","䌝":"𦈟","䌟":"𦈞","䌥":"𦈠","䌰":"𦈙","䍤":"𫅅","䍦":"䍠","䍽":"𦍠","䎙":"𫅭","䎱":"䎬","䓣":"𬜯","䕤":"𫟕","䕳":"𦰴","䖅":"𫟑","䗅":"𫊪","䗿":"𧉞","䙔":"𫋲","䙡":"䙌","䙱":"𧜭","䚩":"𫌯","䛄":"𫍠","䛳":"𫍫","䜀":"䜧","䜖":"𫟢","䝭":"𫎧","䝻":"𧹕","䝼":"䞍","䞈":"𧹑","䞋":"𫎪","䞓":"𫎭","䟃":"𫎺","䟆":"𫎳","䟐":"𫎱","䠆":"𫏃","䠱":"𨅛","䡐":"𫟤","䡩":"𫟥","䡵":"𫟦","䢨":"𨑹","䤤":"𫟺","䥄":"𫠀","䥇":"䦂","䥑":"鿏","䥕":"𬭯","䥗":"𫔋","䥩":"𨱖","䥯":"𫔆","䥱":"䥾","䦘":"𨸄","䦛":"䦶","䦟":"䦷","䦯":"𫔵","䦳":"𨷿","䧢":"𨸟","䪊":"𫖅","䪏":"𩏼","䪗":"𩐀","䪘":"𩏿","䪴":"𫖫","䪾":"𫖬","䫀":"𫖱","䫂":"𫖰","䫟":"𫖲","䫴":"𩖗","䫶":"𫖺","䫻":"𫗇","䫾":"𫠈","䬓":"𫗊","䬘":"𩙮","䬝":"𩙯","䬞":"𩙧","䬧":"𫗟","䭀":"𩠇","䭃":"𩠈","䭑":"𫗱","䭔":"𫗰","䭿":"𩧭","䮄":"𫠊","䮝":"𩧰","䮞":"𩨁","䮠":"𩧿","䮫":"𩨇","䮰":"𫘮","䮳":"𩨏","䮾":"𩧪","䯀":"䯅","䯤":"𩩈","䰾":"鲃","䱀":"𫚐","䱁":"𫚏","䱙":"𩾈","䱧":"𫚠","䱬":"𩾊","䱰":"𩾋","䱷":"䲣","䱸":"𫠑","䱽":"䲝","䲁":"鳚","䲅":"𫚜","䲖":"𩾂","䲘":"鳤","䲰":"𪉂","䳜":"𫛬","䳢":"𫛰","䳤":"𫛮","䳧":"𫛺","䳫":"𫛼","䴉":"鹮","䴋":"𫜅","䴬":"𪎈","䴱":"𫜒","䴴":"𪎋","䴽":"𫜔","䵳":"𪑅","䵴":"𫜙","䶕":"𫜨","䶲":"𫜳","丟":"丢","並":"并","乾":"干","亂":"乱","亙":"亘","亞":"亚","佇":"伫","佈":"布","佔":"占","併":"并","來":"来","侖":"仑","侶":"侣","侷":"局","俁":"俣","係":"系","俓":"𠇹","俔":"伣","俠":"侠","俥":"伡","俬":"私","倀":"伥","倆":"俩","倈":"俫","倉":"仓","個":"个","們":"们","倖":"幸","倫":"伦","倲":"㑈","偉":"伟","偑":"㐽","側":"侧","偵":"侦","偽":"伪","傌":"㐷","傑":"杰","傖":"伧","傘":"伞","備":"备","傢":"家","傭":"佣","傯":"偬","傳":"传","傴":"伛","債":"债","傷":"伤","傾":"倾","僂":"偻","僅":"仅","僉":"佥","僑":"侨","僕":"仆","僞":"伪","僤":"𫢸","僥":"侥","僨":"偾","僱":"雇","價":"价","儀":"仪","儁":"俊","儂":"侬","億":"亿","儈":"侩","儉":"俭","儎":"","儐":"","儔":"俦","儕":"侪","儘":"尽","償":"偿","儣":"𠆲","優":"优","儭":"𠋆","儲":"储","儷":"俪","儸":"㑩","儺":"傩","儻":"傥","儼":"俨","兇":"凶","兌":"兑","兒":"儿","兗":"兖","內":"内","兩":"两","冊":"册","冑":"胄","冪":"幂","凈":"净","凍":"冻","凙":"𪞝","凜":"凛","凱":"凯","別":"别","刪":"删","剄":"刭","則":"则","剋":"克","剎":"刹","剗":"刬","剛":"刚","剝":"剥","剮":"剐","剴":"剀","創":"创","剷":"铲","剾":"𠛅","劃":"划","劇":"剧","劉":"刘","劊":"刽","劌":"刿","劍":"剑","劏":"㓥","劑":"剂","劚":"㔉","勁":"劲","勑":"𠡠","動":"动","務":"务","勛":"勋","勝":"胜","勞":"劳","勢":"势","勣":"𪟝","勩":"勚","勱":"劢","勳":"勋","勵":"励","勸":"劝","勻":"匀","匭":"匦","匯":"汇","匱":"匮","區":"区","協":"协","卹":"恤","卻":"却","卽":"即","厙":"厍","厠":"厕","厤":"历","厭":"厌","厲":"厉","厴":"厣","參":"参","叄":"叁","叢":"丛","吒":"咤","吳":"吴","吶":"呐","呂":"吕","咼":"呙","員":"员","哯":"𠯟","唄":"呗","唓":"𪠳","唸":"念","問":"问","啓":"启","啞":"哑","啟":"启","啢":"唡","喎":"㖞","喚":"唤","喪":"丧","喫":"吃","喬":"乔","單":"单","喲":"哟","嗆":"呛","嗇":"啬","嗊":"唝","嗎":"吗","嗚":"呜","嗩":"唢","嗰":"𠮶","嗶":"哔","嗹":"𪡏","嘆":"叹","嘍":"喽","嘓":"啯","嘔":"呕","嘖":"啧","嘗":"尝","嘜":"唛","嘩":"哗","嘪":"𪡃","嘮":"唠","嘯":"啸","嘰":"叽","嘳":"𪡞","嘵":"哓","嘸":"呒","嘺":"𪡀","嘽":"啴","噁":"恶","噅":"𠯠","噓":"嘘","噚":"㖊","噝":"咝","噞":"𪡋","噠":"哒","噥":"哝","噦":"哕","噯":"嗳","噲":"哙","噴":"喷","噸":"吨","噹":"当","嚀":"咛","嚇":"吓","嚌":"哜","嚐":"尝","嚕":"噜","嚙":"啮","嚛":"𪠸","嚥":"咽","嚦":"呖","嚧":"𠰷","嚨":"咙","嚮":"向","嚲":"亸","嚳":"喾","嚴":"严","嚶":"嘤","嚽":"𪢕","囀":"啭","囁":"嗫","囂":"嚣","囃":"𠱞","囅":"冁","囈":"呓","囉":"啰","囌":"苏","囑":"嘱","囒":"𪢠","囪":"囱","圇":"囵","國":"国","圍":"围","園":"园","圓":"圆","圖":"图","團":"团","圞":"𪢮","垻":"坝","埡":"垭","埨":"𫭢","埬":"𪣆","埰":"采","執":"执","堅":"坚","堊":"垩","堖":"垴","堚":"𪣒","堝":"埚","堯":"尧","報":"报","場":"场","塊":"块","塋":"茔","塏":"垲","塒":"埘","塗":"涂","塚":"冢","塢":"坞","塤":"埙","塵":"尘","塸":"𫭟","塹":"堑","塿":"𪣻","墊":"垫","墜":"坠","墠":"𫮃","墮":"堕","墰":"坛","墲":"𪢸","墳":"坟","墶":"垯","墻":"墙","墾":"垦","壇":"坛","壈":"𡒄","壋":"垱","壎":"埙","壓":"压","壗":"𡋤","壘":"垒","壙":"圹","壚":"垆","壜":"坛","壞":"坏","壟":"垄","壠":"垅","壢":"坜","壣":"𪤚","壩":"坝","壪":"塆","壯":"壮","壺":"壶","壼":"壸","壽":"寿","夠":"够","夢":"梦","夥":"伙","夾":"夹","奐":"奂","奧":"奥","奩":"奁","奪":"夺","奬":"奖","奮":"奋","奼":"姹","妝":"妆","姍":"姗","姦":"奸","娙":"𫰛","娛":"娱","婁":"娄","婡":"𫝫","婦":"妇","婭":"娅","媈":"𫝨","媧":"娲","媯":"妫","媰":"㛀","媼":"媪","媽":"妈","嫋":"袅","嫗":"妪","嫵":"妩","嫺":"娴","嫻":"娴","嫿":"婳","嬀":"妫","嬃":"媭","嬇":"𫝬","嬈":"娆","嬋":"婵","嬌":"娇","嬙":"嫱","嬡":"嫒","嬣":"𪥰","嬤":"嬷","嬦":"𫝩","嬪":"嫔","嬰":"婴","嬸":"婶","嬻":"𪥿","孃":"娘","孄":"𫝮","孆":"𫝭","孇":"𪥫","孋":"㛤","孌":"娈","孎":"𡠟","孫":"孙","學":"学","孻":"𡥧","孾":"𪧀","孿":"孪","宮":"宫","寀":"采","寠":"𪧘","寢":"寝","實":"实","寧":"宁","審":"审","寫":"写","寬":"宽","寵":"宠","寶":"宝","將":"将","專":"专","尋":"寻","對":"对","導":"导","尷":"尴","屆":"届","屍":"尸","屓":"屃","屜":"屉","屢":"屡","層":"层","屨":"屦","屩":"𪨗","屬":"属","岡":"冈","峯":"峰","峴":"岘","島":"岛","峽":"峡","崍":"崃","崑":"昆","崗":"岗","崙":"仑","崢":"峥","崬":"岽","嵐":"岚","嵗":"岁","嵼":"𡶴","嵽":"𫶇","嵾":"㟥","嶁":"嵝","嶄":"崭","嶇":"岖","嶈":"𡺃","嶔":"嵚","嶗":"崂","嶘":"𡺄","嶠":"峤","嶢":"峣","嶧":"峄","嶨":"峃","嶮":"崄","嶸":"嵘","嶹":"𫝵","嶺":"岭","嶼":"屿","嶽":"岳","巊":"𪩎","巋":"岿","巒":"峦","巔":"巅","巖":"岩","巗":"𪨷","巘":"𪩘","巰":"巯","巹":"卺","帥":"帅","師":"师","帳":"帐","帶":"带","幀":"帧","幃":"帏","幓":"㡎","幗":"帼","幘":"帻","幝":"𪩷","幟":"帜","幣":"币","幩":"𪩸","幫":"帮","幬":"帱","幹":"干","幾":"几","庫":"库","廁":"厕","廂":"厢","廄":"厩","廈":"厦","廎":"庼","廕":"荫","廚":"厨","廝":"厮","廞":"𫷷","廟":"庙","廠":"厂","廡":"庑","廢":"废","廣":"广","廧":"𪪞","廩":"廪","廬":"庐","廳":"厅","弒":"弑","弔":"吊","弳":"弪","張":"张","強":"强","彃":"𪪼","彄":"𫸩","彆":"别","彈":"弹","彌":"弥","彎":"弯","彔":"录","彙":"汇","彠":"彟","彥":"彦","彫":"雕","彲":"彨","彷":"彷","彿":"佛","後":"后","徑":"径","從":"从","徠":"徕","復":"复","徵":"征","徹":"彻","徿":"𪫌","恆":"恒","恥":"耻","悅":"悦","悞":"悮","悵":"怅","悶":"闷","悽":"凄","惡":"恶","惱":"恼","惲":"恽","惻":"恻","愛":"爱","愜":"惬","愨":"悫","愴":"怆","愷":"恺","愻":"𢙏","愾":"忾","慄":"栗","態":"态","慍":"愠","慘":"惨","慚":"惭","慟":"恸","慣":"惯","慤":"悫","慪":"怄","慫":"怂","慮":"虑","慳":"悭","慶":"庆","慺":"㥪","慼":"戚","慾":"欲","憂":"忧","憊":"惫","憐":"怜","憑":"凭","憒":"愦","憖":"慭","憚":"惮","憢":"𢙒","憤":"愤","憫":"悯","憮":"怃","憲":"宪","憶":"忆","憸":"𪫺","憹":"𢙐","懀":"𢙓","懇":"恳","應":"应","懌":"怿","懍":"懔","懎":"𢠁","懞":"蒙","懟":"怼","懣":"懑","懤":"㤽","懨":"恹","懲":"惩","懶":"懒","懷":"怀","懸":"悬","懺":"忏","懼":"惧","懾":"慑","戀":"恋","戇":"戆","戔":"戋","戧":"戗","戩":"戬","戰":"战","戱":"戯","戲":"戏","戶":"户","拋":"抛","挩":"捝","挱":"挲","挾":"挟","捨":"舍","捫":"扪","捱":"挨","捲":"卷","掃":"扫","掄":"抡","掆":"㧏","掗":"挜","掙":"挣","掚":"𪭵","掛":"挂","採":"采","揀":"拣","揚":"扬","換":"换","揮":"挥","揯":"搄","損":"损","搖":"摇","搗":"捣","搵":"揾","搶":"抢","摋":"𢫬","摐":"𪭢","摑":"掴","摜":"掼","摟":"搂","摯":"挚","摳":"抠","摶":"抟","摺":"折","摻":"掺","撈":"捞","撊":"𪭾","撏":"挦","撐":"撑","撓":"挠","撝":"㧑","撟":"挢","撣":"掸","撥":"拨","撧":"𪮖","撫":"抚","撲":"扑","撳":"揿","撻":"挞","撾":"挝","撿":"捡","擁":"拥","擄":"掳","擇":"择","擊":"击","擋":"挡","擓":"㧟","擔":"担","據":"据","擟":"𪭧","擠":"挤","擣":"捣","擫":"𢬍","擬":"拟","擯":"摈","擰":"拧","擱":"搁","擲":"掷","擴":"扩","擷":"撷","擺":"摆","擻":"擞","擼":"撸","擽":"㧰","擾":"扰","攄":"摅","攆":"撵","攋":"𪮶","攏":"拢","攔":"拦","攖":"撄","攙":"搀","攛":"撺","攜":"携","攝":"摄","攢":"攒","攣":"挛","攤":"摊","攪":"搅","攬":"揽","敎":"教","敓":"敚","敗":"败","敘":"叙","敵":"敌","數":"数","斂":"敛","斃":"毙","斅":"𢽾","斆":"敩","斕":"斓","斬":"斩","斷":"断","斸":"𣃁","於":"于","旂":"旗","旣":"既","昇":"升","時":"时","晉":"晋","晛":"𬀪","晝":"昼","暈":"晕","暉":"晖","暐":"𬀩","暘":"旸","暢":"畅","暫":"暂","曄":"晔","曆":"历","曇":"昙","曉":"晓","曊":"𪰶","曏":"向","曖":"暧","曠":"旷","曥":"𣆐","曨":"昽","曬":"晒","書":"书","會":"会","朥":"𦛨","朧":"胧","朮":"术","東":"东","枴":"拐","柵":"栅","柺":"拐","査":"查","桱":"𣐕","桿":"杆","梔":"栀","梖":"𪱷","梘":"枧","梜":"𬂩","條":"条","梟":"枭","梲":"棁","棄":"弃","棊":"棋","棖":"枨","棗":"枣","棟":"栋","棡":"㭎","棧":"栈","棲":"栖","棶":"梾","椏":"桠","椲":"㭏","楇":"𣒌","楊":"杨","楓":"枫","楨":"桢","業":"业","極":"极","榘":"矩","榦":"干","榪":"杩","榮":"荣","榲":"榅","榿":"桤","構":"构","槍":"枪","槓":"杠","槤":"梿","槧":"椠","槨":"椁","槫":"𣏢","槮":"椮","槳":"桨","槶":"椢","槼":"椝","樁":"桩","樂":"乐","樅":"枞","樑":"梁","樓":"楼","標":"标","樞":"枢","樠":"𣗊","樢":"㭤","樣":"样","樤":"𣔌","樧":"榝","樫":"㭴","樳":"桪","樸":"朴","樹":"树","樺":"桦","樿":"椫","橈":"桡","橋":"桥","機":"机","橢":"椭","橫":"横","橯":"𣓿","檁":"檩","檉":"柽","檔":"档","檜":"桧","檟":"槚","檢":"检","檣":"樯","檭":"𣘴","檮":"梼","檯":"台","檳":"槟","檵":"𪲛","檸":"柠","檻":"槛","櫃":"柜","櫅":"𪲎","櫍":"𬃊","櫓":"橹","櫚":"榈","櫛":"栉","櫝":"椟","櫞":"橼","櫟":"栎","櫠":"𪲮","櫥":"橱","櫧":"槠","櫨":"栌","櫪":"枥","櫫":"橥","櫬":"榇","櫱":"蘖","櫳":"栊","櫸":"榉","櫻":"樱","欄":"栏","欅":"榉","欇":"𪳍","權":"权","欍":"𣐤","欏":"椤","欐":"𪲔","欑":"𪴙","欒":"栾","欓":"𣗋","欖":"榄","欘":"𣚚","欞":"棂","欽":"钦","歎":"叹","歐":"欧","歟":"欤","歡":"欢","歲":"岁","歷":"历","歸":"归","歿":"殁","殘":"残","殞":"殒","殢":"𣨼","殤":"殇","殨":"㱮","殫":"殚","殭":"僵","殮":"殓","殯":"殡","殰":"㱩","殲":"歼","殺":"杀","殻":"壳","殼":"壳","毀":"毁","毆":"殴","毊":"𪵑","毿":"毵","氂":"牦","氈":"毡","氌":"氇","氣":"气","氫":"氢","氬":"氩","氭":"𣱝","氳":"氲","氾":"泛","汎":"泛","汙":"污","決":"决","沒":"没","沖":"冲","況":"况","泝":"溯","洩":"泄","洶":"汹","浹":"浃","浿":"𬇙","涇":"泾","涗":"涚","涼":"凉","淒":"凄","淚":"泪","淥":"渌","淨":"净","淩":"凌","淪":"沦","淵":"渊","淶":"涞","淺":"浅","渙":"涣","減":"减","渢":"沨","渦":"涡","測":"测","渾":"浑","湊":"凑","湋":"𣲗","湞":"浈","湧":"涌","湯":"汤","溈":"沩","準":"准","溝":"沟","溡":"𪶄","溫":"温","溮":"浉","溳":"涢","溼":"湿","滄":"沧","滅":"灭","滌":"涤","滎":"荥","滙":"汇","滬":"沪","滯":"滞","滲":"渗","滷":"卤","滸":"浒","滻":"浐","滾":"滚","滿":"满","漁":"渔","漊":"溇","漍":"𬇹","漚":"沤","漢":"汉","漣":"涟","漬":"渍","漲":"涨","漵":"溆","漸":"渐","漿":"浆","潁":"颍","潑":"泼","潔":"洁","潕":"𣲘","潙":"沩","潚":"㴋","潛":"潜","潣":"𫞗","潤":"润","潯":"浔","潰":"溃","潷":"滗","潿":"涠","澀":"涩","澅":"𣶩","澆":"浇","澇":"涝","澐":"沄","澗":"涧","澠":"渑","澤":"泽","澦":"滪","澩":"泶","澫":"𬇕","澬":"𫞚","澮":"浍","澱":"淀","澾":"㳠","濁":"浊","濃":"浓","濄":"㳡","濆":"𣸣","濕":"湿","濘":"泞","濚":"溁","濛":"蒙","濜":"浕","濟":"济","濤":"涛","濧":"㳔","濫":"滥","濰":"潍","濱":"滨","濺":"溅","濼":"泺","濾":"滤","濿":"𪵱","瀂":"澛","瀃":"𣽷","瀅":"滢","瀆":"渎","瀇":"㲿","瀉":"泻","瀋":"沈","瀏":"浏","瀕":"濒","瀘":"泸","瀝":"沥","瀟":"潇","瀠":"潆","瀦":"潴","瀧":"泷","瀨":"濑","瀰":"弥","瀲":"潋","瀾":"澜","灃":"沣","灄":"滠","灍":"𫞝","灑":"洒","灒":"𪷽","灕":"漓","灘":"滩","灙":"𣺼","灝":"灏","灡":"㳕","灣":"湾","灤":"滦","灧":"滟","灩":"滟","災":"灾","為":"为","烏":"乌","烴":"烃","無":"无","煇":"𪸩","煉":"炼","煒":"炜","煙":"烟","煢":"茕","煥":"焕","煩":"烦","煬":"炀","煱":"㶽","熂":"𪸕","熅":"煴","熉":"𤈶","熌":"𤇄","熒":"荧","熓":"𤆡","熗":"炝","熚":"𤇹","熡":"𤋏","熰":"𬉼","熱":"热","熲":"颎","熾":"炽","燀":"𬊤","燁":"烨","燈":"灯","燉":"炖","燒":"烧","燖":"𬊈","燙":"烫","燜":"焖","營":"营","燦":"灿","燬":"毁","燭":"烛","燴":"烩","燶":"㶶","燻":"熏","燼":"烬","燾":"焘","爃":"𫞡","爄":"𤇃","爇":"𦶟","爍":"烁","爐":"炉","爖":"𤇭","爛":"烂","爥":"𪹳","爧":"𫞠","爭":"争","爲":"为","爺":"爷","爾":"尔","牀":"床","牆":"墙","牘":"牍","牴":"牴","牽":"牵","犖":"荦","犛":"牦","犞":"𪺭","犢":"犊","犧":"牺","狀":"状","狹":"狭","狽":"狈","猌":"𪺽","猙":"狰","猶":"犹","猻":"狲","獁":"犸","獃":"呆","獄":"狱","獅":"狮","獊":"𪺷","獎":"奖","獨":"独","獩":"𤞃","獪":"狯","獫":"猃","獮":"狝","獰":"狞","獱":"㺍","獲":"获","獵":"猎","獷":"犷","獸":"兽","獺":"獭","獻":"献","獼":"猕","玀":"猡","玁":"𤞤","珼":"𫞥","現":"现","琱":"雕","琺":"珐","琿":"珲","瑋":"玮","瑒":"玚","瑣":"琐","瑤":"瑶","瑩":"莹","瑪":"玛","瑲":"玱","瑻":"𪻲","瑽":"𪻐","璉":"琏","璊":"𫞩","璕":"𬍤","璗":"𬍡","璝":"𪻺","璡":"琎","璣":"玑","璦":"瑷","璫":"珰","璯":"㻅","環":"环","璵":"玙","璸":"瑸","璼":"𫞨","璽":"玺","璾":"𫞦","璿":"璇","瓄":"𪻨","瓅":"𬍛","瓊":"琼","瓏":"珑","瓔":"璎","瓕":"𤦀","瓚":"瓒","瓛":"𤩽","甌":"瓯","甕":"瓮","產":"产","産":"产","甦":"苏","甯":"宁","畝":"亩","畢":"毕","畫":"画","異":"异","畵":"画","當":"当","畼":"𪽈","疇":"畴","疊":"叠","痙":"痉","痠":"酸","痮":"𪽪","痾":"疴","瘂":"痖","瘋":"疯","瘍":"疡","瘓":"痪","瘞":"瘗","瘡":"疮","瘧":"疟","瘮":"瘆","瘱":"𪽷","瘲":"疭","瘺":"瘘","瘻":"瘘","療":"疗","癆":"痨","癇":"痫","癉":"瘅","癐":"𤶊","癒":"愈","癘":"疠","癟":"瘪","癡":"痴","癢":"痒","癤":"疖","癥":"症","癧":"疬","癩":"癞","癬":"癣","癭":"瘿","癮":"瘾","癰":"痈","癱":"瘫","癲":"癫","發":"发","皁":"皂","皚":"皑","皟":"𤾀","皰":"疱","皸":"皲","皺":"皱","盃":"杯","盜":"盗","盞":"盏","盡":"尽","監":"监","盤":"盘","盧":"卢","盨":"𪾔","盪":"荡","眝":"𪾣","眞":"真","眥":"眦","眾":"众","睍":"𪾢","睏":"困","睜":"睁","睞":"睐","瞘":"眍","瞜":"䁖","瞞":"瞒","瞤":"𥆧","瞭":"瞭","瞶":"瞆","瞼":"睑","矇":"蒙","矉":"𪾸","矑":"𪾦","矓":"眬","矚":"瞩","矯":"矫","硃":"朱","硜":"硁","硤":"硖","硨":"砗","硯":"砚","碕":"埼","碙":"𥐻","碩":"硕","碭":"砀","碸":"砜","確":"确","碼":"码","碽":"䂵","磑":"硙","磚":"砖","磠":"硵","磣":"碜","磧":"碛","磯":"矶","磽":"硗","磾":"䃅","礄":"硚","礆":"硷","礎":"础","礐":"𬒈","礒":"𥐟","礙":"碍","礦":"矿","礪":"砺","礫":"砾","礬":"矾","礮":"𪿫","礱":"砻","祇":"祇","祕":"秘","祿":"禄","禍":"祸","禎":"祯","禕":"祎","禡":"祃","禦":"御","禪":"禅","禮":"礼","禰":"祢","禱":"祷","禿":"秃","秈":"籼","稅":"税","稈":"秆","稏":"䅉","稜":"棱","稟":"禀","種":"种","稱":"称","穀":"谷","穇":"䅟","穌":"稣","積":"积","穎":"颖","穠":"秾","穡":"穑","穢":"秽","穩":"稳","穫":"获","穭":"穞","窩":"窝","窪":"洼","窮":"穷","窯":"窑","窵":"窎","窶":"窭","窺":"窥","竄":"窜","竅":"窍","竇":"窦","竈":"灶","竊":"窃","竚":"𥩟","竪":"竖","竱":"𫁟","競":"竞","筆":"笔","筍":"笋","筧":"笕","筴":"䇲","箇":"个","箋":"笺","箏":"筝","節":"节","範":"范","築":"筑","篋":"箧","篔":"筼","篘":"𥬠","篠":"筿","篢":"𬕂","篤":"笃","篩":"筛","篳":"筚","篸":"𥮾","簀":"箦","簂":"𫂆","簍":"篓","簑":"蓑","簞":"箪","簡":"简","簢":"𫂃","簣":"篑","簫":"箫","簹":"筜","簽":"签","簾":"帘","籃":"篮","籅":"𥫣","籋":"𥬞","籌":"筹","籔":"䉤","籙":"箓","籛":"篯","籜":"箨","籟":"籁","籠":"笼","籤":"签","籩":"笾","籪":"簖","籬":"篱","籮":"箩","籲":"吁","粵":"粤","糉":"粽","糝":"糁","糞":"粪","糧":"粮","糰":"团","糲":"粝","糴":"籴","糶":"粜","糹":"纟","糺":"𫄙","糾":"纠","紀":"纪","紂":"纣","紃":"𬘓","約":"约","紅":"红","紆":"纡","紇":"纥","紈":"纨","紉":"纫","紋":"纹","納":"纳","紐":"纽","紓":"纾","純":"纯","紕":"纰","紖":"纼","紗":"纱","紘":"纮","紙":"纸","級":"级","紛":"纷","紜":"纭","紝":"纴","紞":"𬘘","紟":"𫄛","紡":"纺","紬":"䌷","紮":"扎","細":"细","紱":"绂","紲":"绁","紳":"绅","紵":"纻","紹":"绍","紺":"绀","紼":"绋","紿":"绐","絀":"绌","絁":"𫄟","終":"终","絃":"弦","組":"组","絅":"䌹","絆":"绊","絍":"𫟃","絎":"绗","結":"结","絕":"绝","絙":"𫄠","絛":"绦","絝":"绔","絞":"绞","絡":"络","絢":"绚","絥":"𫄢","給":"给","絧":"𫄡","絨":"绒","絪":"𬘡","絰":"绖","統":"统","絲":"丝","絳":"绛","絶":"绝","絹":"绢","絺":"𫄨","綀":"𦈌","綁":"绑","綃":"绡","綄":"𬘫","綆":"绠","綇":"𦈋","綈":"绨","綉":"绣","綋":"𫟄","綌":"绤","綎":"𬘩","綏":"绥","綐":"䌼","綑":"捆","經":"经","綖":"𫄧","綜":"综","綝":"𬘭","綞":"缍","綟":"𫄫","綠":"绿","綡":"𫟅","綢":"绸","綣":"绻","綧":"𬘯","綪":"𬘬","綫":"线","綬":"绶","維":"维","綯":"绹","綰":"绾","綱":"纲","網":"网","綳":"绷","綴":"缀","綵":"彩","綸":"纶","綹":"绺","綺":"绮","綻":"绽","綽":"绰","綾":"绫","綿":"绵","緄":"绲","緇":"缁","緊":"紧","緋":"绯","緍":"𦈏","緑":"绿","緒":"绪","緓":"绬","緔":"绱","緗":"缃","緘":"缄","緙":"缂","線":"线","緝":"缉","緞":"缎","緟":"𫟆","締":"缔","緡":"缗","緣":"缘","緤":"𫄬","緦":"缌","編":"编","緩":"缓","緬":"缅","緮":"𫄭","緯":"纬","緰":"𦈕","緱":"缑","緲":"缈","練":"练","緶":"缏","緷":"𦈉","緸":"𦈑","緹":"缇","緻":"致","緼":"缊","縈":"萦","縉":"缙","縊":"缢","縋":"缒","縍":"𫄰","縎":"𦈔","縐":"绉","縑":"缣","縕":"缊","縗":"缞","縛":"缚","縝":"缜","縞":"缟","縟":"缛","縣":"县","縧":"绦","縫":"缝","縬":"𦈚","縭":"缡","縮":"缩","縯":"𬙂","縰":"𫄳","縱":"纵","縲":"缧","縳":"䌸","縴":"纤","縵":"缦","縶":"絷","縷":"缕","縸":"𫄲","縹":"缥","縺":"𦈐","總":"总","績":"绩","繂":"𫄴","繃":"绷","繅":"缫","繆":"缪","繈":"𫄶","繏":"𦈝","繐":"𰬸","繒":"缯","繓":"𦈛","織":"织","繕":"缮","繚":"缭","繞":"绕","繟":"𦈎","繡":"绣","繢":"缋","繨":"𫄤","繩":"绳","繪":"绘","繫":"系","繬":"𫄱","繭":"茧","繮":"缰","繯":"缳","繰":"缲","繳":"缴","繶":"𫄷","繷":"𫄣","繸":"䍁","繹":"绎","繻":"𦈡","繼":"继","繽":"缤","繾":"缱","繿":"䍀","纁":"𫄸","纆":"𬙊","纇":"颣","纈":"缬","纊":"纩","續":"续","纍":"累","纏":"缠","纓":"缨","纔":"才","纕":"𬙋","纖":"纤","纗":"𫄹","纘":"缵","纚":"𫄥","纜":"缆","缽":"钵","罃":"䓨","罈":"坛","罌":"罂","罎":"坛","罰":"罚","罵":"骂","罷":"罢","羅":"罗","羆":"罴","羈":"羁","羋":"芈","羣":"群","羥":"羟","羨":"羡","義":"义","羵":"𫅗","羶":"膻","習":"习","翫":"玩","翬":"翚","翹":"翘","翽":"翙","耬":"耧","耮":"耢","聖":"圣","聞":"闻","聯":"联","聰":"聪","聲":"声","聳":"耸","聵":"聩","聶":"聂","職":"职","聹":"聍","聻":"𫆏","聽":"听","聾":"聋","肅":"肃","脅":"胁","脈":"脉","脛":"胫","脣":"唇","脥":"𣍰","脩":"修","脫":"脱","脹":"胀","腎":"肾","腖":"胨","腡":"脶","腦":"脑","腪":"𣍯","腫":"肿","腳":"脚","腸":"肠","膃":"腽","膕":"腘","膚":"肤","膞":"䏝","膠":"胶","膢":"𦝼","膩":"腻","膹":"𪱥","膽":"胆","膾":"脍","膿":"脓","臉":"脸","臍":"脐","臏":"膑","臗":"𣎑","臘":"腊","臚":"胪","臟":"脏","臠":"脔","臢":"臜","臥":"卧","臨":"临","臺":"台","與":"与","興":"兴","舉":"举","舊":"旧","舘":"馆","艙":"舱","艣":"𫇛","艤":"舣","艦":"舰","艫":"舻","艱":"艰","艷":"艳","芻":"刍","苧":"苎","茲":"兹","荊":"荆","莊":"庄","莖":"茎","莢":"荚","莧":"苋","菕":"𰰨","華":"华","菴":"庵","菸":"烟","萇":"苌","萊":"莱","萬":"万","萴":"荝","萵":"莴","葉":"叶","葒":"荭","葝":"𫈎","葤":"荮","葦":"苇","葯":"药","葷":"荤","蒍":"𫇭","蒐":"搜","蒓":"莼","蒔":"莳","蒕":"蒀","蒞":"莅","蒭":"𫇴","蒼":"苍","蓀":"荪","蓆":"席","蓋":"盖","蓧":"𦰏","蓮":"莲","蓯":"苁","蓴":"莼","蓽":"荜","蔄":"𬜬","蔔":"卜","蔘":"参","蔞":"蒌","蔣":"蒋","蔥":"葱","蔦":"茑","蔭":"荫","蔯":"𫈟","蔿":"𫇭","蕁":"荨","蕆":"蒇","蕎":"荞","蕒":"荬","蕓":"芸","蕕":"莸","蕘":"荛","蕝":"𫈵","蕢":"蒉","蕩":"荡","蕪":"芜","蕭":"萧","蕳":"𫈉","蕷":"蓣","蕽":"𫇽","薀":"蕰","薆":"𫉁","薈":"荟","薊":"蓟","薌":"芗","薑":"姜","薔":"蔷","薘":"荙","薟":"莶","薦":"荐","薩":"萨","薳":"䓕","薴":"苧","薵":"䓓","薹":"苔","薺":"荠","藉":"藉","藍":"蓝","藎":"荩","藝":"艺","藥":"药","藪":"薮","藭":"䓖","藴":"蕴","藶":"苈","藷":"𫉄","藹":"蔼","藺":"蔺","蘀":"萚","蘄":"蕲","蘆":"芦","蘇":"苏","蘊":"蕴","蘋":"苹","蘚":"藓","蘞":"蔹","蘟":"𦻕","蘢":"茏","蘭":"兰","蘺":"蓠","蘿":"萝","虆":"蔂","虉":"𬟁","處":"处","虛":"虚","虜":"虏","號":"号","虧":"亏","虯":"虬","蛺":"蛱","蛻":"蜕","蜆":"蚬","蝀":"𬟽","蝕":"蚀","蝟":"猬","蝦":"虾","蝨":"虱","蝸":"蜗","螄":"蛳","螞":"蚂","螢":"萤","螮":"䗖","螻":"蝼","螿":"螀","蟂":"𫋇","蟄":"蛰","蟈":"蝈","蟎":"螨","蟘":"𫋌","蟜":"𫊸","蟣":"虮","蟬":"蝉","蟯":"蛲","蟲":"虫","蟳":"𫊻","蟶":"蛏","蟻":"蚁","蠀":"𧏗","蠁":"蚃","蠅":"蝇","蠆":"虿","蠍":"蝎","蠐":"蛴","蠑":"蝾","蠔":"蚝","蠙":"𧏖","蠟":"蜡","蠣":"蛎","蠦":"𫊮","蠨":"蟏","蠱":"蛊","蠶":"蚕","蠻":"蛮","蠾":"𧑏","衆":"众","衊":"蔑","術":"术","衕":"同","衚":"胡","衛":"卫","衝":"冲","衹":"衹","袞":"衮","裊":"袅","裏":"里","補":"补","裝":"装","裡":"里","製":"制","複":"复","褌":"裈","褘":"袆","褲":"裤","褳":"裢","褸":"褛","褻":"亵","襀":"𫌀","襇":"裥","襉":"裥","襏":"袯","襓":"𫋹","襖":"袄","襗":"𫋷","襘":"𫋻","襝":"裣","襠":"裆","襤":"褴","襪":"袜","襬":"摆","襯":"衬","襰":"𧝝","襲":"袭","襴":"襕","襵":"𫌇","覆":"覆","覈":"核","見":"见","覎":"觃","規":"规","覓":"觅","視":"视","覘":"觇","覛":"𫌪","覡":"觋","覥":"觍","覦":"觎","親":"亲","覬":"觊","覯":"觏","覲":"觐","覷":"觑","覹":"𫌭","覺":"觉","覼":"𫌨","覽":"览","覿":"觌","觀":"观","觴":"觞","觶":"觯","觸":"触","訁":"讠","訂":"订","訃":"讣","計":"计","訊":"讯","訌":"讧","討":"讨","訏":"𬣙","訐":"讦","訑":"𫍙","訒":"讱","訓":"训","訕":"讪","訖":"讫","託":"托","記":"记","訛":"讹","訜":"𫍛","訝":"讶","訞":"𫍚","訟":"讼","訢":"䜣","訣":"诀","訥":"讷","訨":"𫟞","訩":"讻","訪":"访","設":"设","許":"许","訴":"诉","訶":"诃","診":"诊","註":"注","証":"证","詀":"𧮪","詁":"诂","詆":"诋","詊":"𫟟","詎":"讵","詐":"诈","詑":"𫍡","詒":"诒","詓":"𫍜","詔":"诏","評":"评","詖":"诐","詗":"诇","詘":"诎","詛":"诅","詝":"𬣞","詞":"词","詠":"咏","詡":"诩","詢":"询","詣":"诣","試":"试","詩":"诗","詪":"𬣳","詫":"诧","詬":"诟","詭":"诡","詮":"诠","詰":"诘","話":"话","該":"该","詳":"详","詵":"诜","詷":"𫍣","詼":"诙","詿":"诖","誂":"𫍥","誄":"诔","誅":"诛","誆":"诓","誇":"夸","誋":"𫍪","誌":"志","認":"认","誑":"诳","誒":"诶","誕":"诞","誘":"诱","誚":"诮","語":"语","誠":"诚","誡":"诫","誣":"诬","誤":"误","誥":"诰","誦":"诵","誨":"诲","說":"说","誫":"𫍨","説":"说","誰":"谁","課":"课","誳":"𫍮","誴":"𫟡","誶":"谇","誷":"𫍬","誹":"诽","誺":"𫍧","誼":"谊","誾":"訚","調":"调","諂":"谄","諄":"谆","談":"谈","諉":"诿","請":"请","諍":"诤","諏":"诹","諑":"诼","諒":"谅","諓":"𬣡","論":"论","諗":"谂","諛":"谀","諜":"谍","諝":"谞","諞":"谝","諟":"𬤊","諡":"谥","諢":"诨","諣":"𫍩","諤":"谔","諥":"𫍳","諦":"谛","諧":"谐","諫":"谏","諭":"谕","諮":"咨","諯":"𫍱","諰":"𫍰","諱":"讳","諲":"𬤇","諳":"谙","諴":"𫍯","諶":"谌","諷":"讽","諸":"诸","諺":"谚","諼":"谖","諾":"诺","謀":"谋","謁":"谒","謂":"谓","謄":"誊","謅":"诌","謆":"𫍸","謉":"𫍷","謊":"谎","謎":"谜","謏":"𫍲","謐":"谧","謔":"谑","謖":"谡","謗":"谤","謙":"谦","謚":"谥","講":"讲","謝":"谢","謠":"谣","謡":"谣","謨":"谟","謫":"谪","謬":"谬","謭":"谫","謯":"𫍹","謱":"𫍴","謳":"讴","謸":"𫍵","謹":"谨","謾":"谩","譁":"哗","譂":"𫟠","譅":"𰶎","譆":"𫍻","證":"证","譊":"𫍢","譎":"谲","譏":"讥","譑":"𫍤","譓":"𬤝","譖":"谮","識":"识","譙":"谯","譚":"谭","譜":"谱","譞":"𫍽","譟":"噪","譨":"𫍦","譫":"谵","譭":"毁","譯":"译","議":"议","譴":"谴","護":"护","譸":"诪","譽":"誉","譾":"谫","讀":"读","讅":"谉","變":"变","讋":"詟","讌":"䜩","讎":"雠","讒":"谗","讓":"让","讕":"谰","讖":"谶","讚":"赞","讜":"谠","讞":"谳","豈":"岂","豎":"竖","豐":"丰","豔":"艳","豬":"猪","豵":"𫎆","豶":"豮","貓":"猫","貗":"𫎌","貙":"䝙","貝":"贝","貞":"贞","貟":"贠","負":"负","財":"财","貢":"贡","貧":"贫","貨":"货","販":"贩","貪":"贪","貫":"贯","責":"责","貯":"贮","貰":"贳","貲":"赀","貳":"贰","貴":"贵","貶":"贬","買":"买","貸":"贷","貺":"贶","費":"费","貼":"贴","貽":"贻","貿":"贸","賀":"贺","賁":"贲","賂":"赂","賃":"赁","賄":"贿","賅":"赅","資":"资","賈":"贾","賊":"贼","賑":"赈","賒":"赊","賓":"宾","賕":"赇","賙":"赒","賚":"赉","賜":"赐","賝":"𫎩","賞":"赏","賟":"𧹖","賠":"赔","賡":"赓","賢":"贤","賣":"卖","賤":"贱","賦":"赋","賧":"赕","質":"质","賫":"赍","賬":"账","賭":"赌","賰":"䞐","賴":"赖","賵":"赗","賺":"赚","賻":"赙","購":"购","賽":"赛","賾":"赜","贃":"𧹗","贄":"贽","贅":"赘","贇":"赟","贈":"赠","贉":"𫎫","贊":"赞","贋":"赝","贍":"赡","贏":"赢","贐":"赆","贑":"𫎬","贓":"赃","贔":"赑","贖":"赎","贗":"赝","贚":"𫎦","贛":"赣","贜":"赃","赬":"赪","趕":"赶","趙":"赵","趨":"趋","趲":"趱","跡":"迹","踐":"践","踰":"逾","踴":"踊","蹌":"跄","蹔":"𫏐","蹕":"跸","蹟":"迹","蹠":"跖","蹣":"蹒","蹤":"踪","蹳":"𫏆","蹺":"跷","蹻":"𫏋","躂":"跶","躉":"趸","躊":"踌","躋":"跻","躍":"跃","躎":"䟢","躑":"踯","躒":"跞","躓":"踬","躕":"蹰","躘":"𨀁","躚":"跹","躝":"𨅬","躡":"蹑","躥":"蹿","躦":"躜","躪":"躏","軀":"躯","軉":"𨉗","車":"车","軋":"轧","軌":"轨","軍":"军","軏":"𫐄","軑":"轪","軒":"轩","軔":"轫","軕":"𫐅","軗":"𨐅","軛":"轭","軜":"𫐇","軝":"𬨂","軟":"软","軤":"轷","軨":"𫐉","軫":"轸","軬":"𫐊","軲":"轱","軷":"𫐈","軸":"轴","軹":"轵","軺":"轺","軻":"轲","軼":"轶","軾":"轼","軿":"𫐌","較":"较","輄":"𨐈","輅":"辂","輇":"辁","輈":"辀","載":"载","輊":"轾","輋":"𪨶","輒":"辄","輓":"挽","輔":"辅","輕":"轻","輖":"𫐏","輗":"𫐐","輛":"辆","輜":"辎","輝":"辉","輞":"辋","輟":"辍","輢":"𫐎","輥":"辊","輦":"辇","輨":"𫐑","輩":"辈","輪":"轮","輬":"辌","輮":"𫐓","輯":"辑","輳":"辏","輶":"𬨎","輷":"𫐒","輸":"输","輻":"辐","輼":"辒","輾":"辗","輿":"舆","轀":"辒","轂":"毂","轄":"辖","轅":"辕","轆":"辘","轇":"𫐖","轉":"转","轊":"𫐕","轍":"辙","轎":"轿","轐":"𫐗","轔":"辚","轗":"𫐘","轟":"轰","轠":"𫐙","轡":"辔","轢":"轹","轣":"𫐆","轤":"轳","辦":"办","辭":"辞","辮":"辫","辯":"辩","農":"农","迴":"回","逕":"迳","這":"这","連":"连","週":"周","進":"进","遊":"游","運":"运","過":"过","達":"达","違":"违","遙":"遥","遜":"逊","遞":"递","遠":"远","遡":"溯","適":"适","遱":"𫐷","遲":"迟","遷":"迁","選":"选","遺":"遗","遼":"辽","邁":"迈","還":"还","邇":"迩","邊":"边","邏":"逻","邐":"逦","郟":"郏","郵":"邮","鄆":"郓","鄉":"乡","鄒":"邹","鄔":"邬","鄖":"郧","鄟":"𫑘","鄧":"邓","鄩":"𬩽","鄭":"郑","鄰":"邻","鄲":"郸","鄳":"𫑡","鄴":"邺","鄶":"郐","鄺":"邝","酇":"酂","酈":"郦","醃":"腌","醖":"酝","醜":"丑","醞":"酝","醟":"蒏","醣":"糖","醫":"医","醬":"酱","醱":"酦","醲":"𬪩","醶":"𫑷","釀":"酿","釁":"衅","釃":"酾","釅":"酽","釋":"释","釐":"厘","釒":"钅","釓":"钆","釔":"钇","釕":"钌","釗":"钊","釘":"钉","釙":"钋","釚":"𫟲","針":"针","釟":"𫓥","釣":"钓","釤":"钐","釦":"扣","釧":"钏","釨":"𫓦","釩":"钒","釲":"𫟳","釳":"𨰿","釴":"𬬩","釵":"钗","釷":"钍","釹":"钕","釺":"钎","釾":"䥺","釿":"𬬱","鈀":"钯","鈁":"钫","鈃":"钘","鈄":"钭","鈅":"钥","鈆":"𫓪","鈇":"𫓧","鈈":"钚","鈉":"钠","鈋":"𨱂","鈍":"钝","鈎":"钩","鈐":"钤","鈑":"钣","鈒":"钑","鈔":"钞","鈕":"钮","鈖":"𫟴","鈗":"𫟵","鈛":"𫓨","鈞":"钧","鈠":"𨱁","鈡":"钟","鈣":"钙","鈥":"钬","鈦":"钛","鈧":"钪","鈮":"铌","鈯":"𨱄","鈰":"铈","鈲":"𨱃","鈳":"钶","鈴":"铃","鈷":"钴","鈸":"钹","鈹":"铍","鈺":"钰","鈽":"钸","鈾":"铀","鈿":"钿","鉀":"钾","鉁":"𨱅","鉅":"巨","鉆":"钻","鉈":"铊","鉉":"铉","鉊":"𬬿","鉋":"铇","鉍":"铋","鉑":"铂","鉔":"𫓬","鉕":"钷","鉗":"钳","鉚":"铆","鉛":"铅","鉝":"𫟷","鉞":"钺","鉠":"𫓭","鉢":"钵","鉤":"钩","鉥":"𬬸","鉦":"钲","鉧":"𬭁","鉬":"钼","鉭":"钽","鉮":"𬬹","鉳":"锫","鉶":"铏","鉷":"𫟹","鉸":"铰","鉺":"铒","鉻":"铬","鉽":"𫟸","鉾":"𫓴","鉿":"铪","銀":"银","銁":"𫓲","銂":"𫟻","銃":"铳","銅":"铜","銈":"𫓯","銊":"𫓰","銍":"铚","銏":"𫟶","銑":"铣","銓":"铨","銖":"铢","銘":"铭","銚":"铫","銛":"铦","銜":"衔","銠":"铑","銣":"铷","銥":"铱","銦":"铟","銨":"铵","銩":"铥","銪":"铕","銫":"铯","銬":"铐","銱":"铞","銳":"锐","銶":"𨱇","銷":"销","銹":"锈","銻":"锑","銼":"锉","鋁":"铝","鋂":"𰾄","鋃":"锒","鋅":"锌","鋇":"钡","鋉":"𨱈","鋌":"铤","鋏":"铗","鋐":"𬭎","鋒":"锋","鋗":"𫓶","鋙":"铻","鋝":"锊","鋟":"锓","鋠":"𫓵","鋣":"铘","鋤":"锄","鋥":"锃","鋦":"锔","鋨":"锇","鋩":"铓","鋪":"铺","鋭":"锐","鋮":"铖","鋯":"锆","鋰":"锂","鋱":"铽","鋶":"锍","鋸":"锯","鋹":"𬬮","鋼":"钢","錀":"𬬭","錁":"锞","錂":"𨱋","錄":"录","錆":"锖","錇":"锫","錈":"锩","錏":"铔","錐":"锥","錒":"锕","錕":"锟","錘":"锤","錙":"锱","錚":"铮","錛":"锛","錜":"𫓻","錝":"𫓽","錞":"𬭚","錟":"锬","錠":"锭","錡":"锜","錢":"钱","錤":"𫓹","錥":"𫓾","錦":"锦","錨":"锚","錩":"锠","錫":"锡","錮":"锢","錯":"错","録":"录","錳":"锰","錶":"表","錸":"铼","錼":"镎","錽":"𫓸","鍀":"锝","鍁":"锨","鍃":"锪","鍄":"𨱉","鍅":"钫","鍆":"钔","鍇":"锴","鍈":"锳","鍉":"𫔂","鍊":"炼","鍋":"锅","鍍":"镀","鍒":"𫔄","鍔":"锷","鍘":"铡","鍚":"钖","鍛":"锻","鍠":"锽","鍤":"锸","鍥":"锲","鍩":"锘","鍬":"锹","鍭":"𬭤","鍮":"𨱎","鍰":"锾","鍵":"键","鍶":"锶","鍺":"锗","鍼":"针","鍾":"钟","鎂":"镁","鎄":"锿","鎇":"镅","鎈":"𫟿","鎊":"镑","鎌":"镰","鎍":"𫔅","鎓":"𬭩","鎔":"镕","鎖":"锁","鎘":"镉","鎙":"𫔈","鎚":"锤","鎛":"镈","鎝":"𨱏","鎞":"𫔇","鎡":"镃","鎢":"钨","鎣":"蓥","鎦":"镏","鎧":"铠","鎩":"铩","鎪":"锼","鎬":"镐","鎭":"镇","鎮":"镇","鎯":"𨱍","鎰":"镒","鎲":"镋","鎳":"镍","鎵":"镓","鎶":"鿔","鎷":"𨰾","鎸":"镌","鎿":"镎","鏃":"镞","鏆":"𨱌","鏇":"旋","鏈":"链","鏉":"𨱒","鏌":"镆","鏍":"镙","鏏":"𬭬","鏐":"镠","鏑":"镝","鏗":"铿","鏘":"锵","鏚":"𬭭","鏜":"镗","鏝":"镘","鏞":"镛","鏟":"铲","鏡":"镜","鏢":"镖","鏤":"镂","鏥":"𫔊","鏦":"𫓩","鏨":"錾","鏰":"镚","鏵":"铧","鏷":"镤","鏹":"镪","鏺":"䥽","鏻":"𬭸","鏽":"锈","鏾":"𫔌","鐃":"铙","鐄":"𨱑","鐇":"𫔍","鐈":"𫓱","鐋":"铴","鐍":"𫔎","鐎":"𨱓","鐏":"𨱔","鐐":"镣","鐒":"铹","鐓":"镦","鐔":"镡","鐘":"钟","鐙":"镫","鐝":"镢","鐠":"镨","鐥":"䦅","鐦":"锎","鐧":"锏","鐨":"镄","鐩":"𬭼","鐪":"𫓺","鐫":"镌","鐮":"镰","鐯":"䦃","鐲":"镯","鐳":"镭","鐵":"铁","鐶":"镮","鐸":"铎","鐺":"铛","鐼":"𫔁","鐽":"𫟼","鐿":"镱","鑀":"𰾭","鑄":"铸","鑉":"𫠁","鑊":"镬","鑌":"镔","鑑":"鉴","鑒":"鉴","鑔":"镲","鑕":"锧","鑞":"镴","鑠":"铄","鑣":"镳","鑥":"镥","鑪":"𬬻","鑭":"镧","鑰":"钥","鑱":"镵","鑲":"镶","鑴":"𫔔","鑷":"镊","鑹":"镩","鑼":"锣","鑽":"钻","鑾":"銮","鑿":"凿","钁":"镢","钂":"镋","長":"长","門":"门","閂":"闩","閃":"闪","閆":"闫","閈":"闬","閉":"闭","開":"开","閌":"闶","閍":"𨸂","閎":"闳","閏":"闰","閐":"𨸃","閑":"闲","閒":"闲","間":"间","閔":"闵","閗":"𫔯","閘":"闸","閝":"𫠂","閞":"𫔰","閡":"阂","閣":"阁","閤":"合","閥":"阀","閨":"闺","閩":"闽","閫":"阃","閬":"阆","閭":"闾","閱":"阅","閲":"阅","閵":"𫔴","閶":"阊","閹":"阉","閻":"阎","閼":"阏","閽":"阍","閾":"阈","閿":"阌","闃":"阒","闆":"板","闇":"暗","闈":"闱","闉":"𬮱","闊":"阔","闋":"阕","闌":"阑","闍":"阇","闐":"阗","闑":"𫔶","闒":"阘","闓":"闿","闔":"阖","闕":"阙","闖":"闯","關":"关","闞":"阚","闠":"阓","闡":"阐","闢":"辟","闤":"阛","闥":"闼","阪":"阪","陘":"陉","陝":"陕","陞":"升","陣":"阵","陰":"阴","陳":"陈","陸":"陆","陽":"阳","隉":"陧","隊":"队","階":"阶","隑":"𬮿","隕":"陨","際":"际","隤":"𬯎","隨":"随","險":"险","隮":"𬯀","隯":"陦","隱":"隐","隴":"陇","隸":"隶","隻":"只","雋":"隽","雖":"虽","雙":"双","雛":"雏","雜":"杂","雞":"鸡","離":"离","難":"难","雲":"云","電":"电","霑":"沾","霢":"霡","霣":"𫕥","霧":"雾","霼":"𪵣","霽":"霁","靂":"雳","靄":"霭","靆":"叇","靈":"灵","靉":"叆","靚":"靓","靜":"静","靝":"靔","靦":"腼","靧":"𫖃","靨":"靥","鞏":"巩","鞝":"绱","鞦":"秋","鞽":"鞒","鞾":"𫖇","韁":"缰","韃":"鞑","韆":"千","韉":"鞯","韋":"韦","韌":"韧","韍":"韨","韓":"韩","韙":"韪","韚":"𫠅","韛":"𫖔","韜":"韬","韝":"鞲","韞":"韫","韠":"𫖒","韻":"韵","響":"响","頁":"页","頂":"顶","頃":"顷","項":"项","順":"顺","頇":"顸","須":"须","頊":"顼","頌":"颂","頍":"𫠆","頎":"颀","頏":"颃","預":"预","頑":"顽","頒":"颁","頓":"顿","頔":"𬱖","頗":"颇","領":"领","頜":"颌","頠":"𬱟","頡":"颉","頤":"颐","頦":"颏","頫":"𫖯","頭":"头","頮":"颒","頰":"颊","頲":"颋","頴":"颕","頵":"𫖳","頷":"颔","頸":"颈","頹":"颓","頻":"频","頽":"颓","顂":"𩓋","顃":"𩖖","顅":"𫖶","顆":"颗","題":"题","額":"额","顎":"颚","顏":"颜","顒":"颙","顓":"颛","顔":"颜","顗":"𫖮","願":"愿","顙":"颡","顛":"颠","類":"类","顢":"颟","顣":"𫖹","顥":"颢","顧":"顾","顫":"颤","顬":"颥","顯":"显","顰":"颦","顱":"颅","顳":"颞","顴":"颧","風":"风","颭":"飐","颮":"飑","颯":"飒","颰":"𩙥","颱":"台","颳":"刮","颶":"飓","颷":"𩙪","颸":"飔","颺":"飏","颻":"飖","颼":"飕","颾":"𩙫","飀":"飗","飄":"飘","飆":"飙","飈":"飚","飋":"𫗋","飛":"飞","飠":"饣","飢":"饥","飣":"饤","飥":"饦","飦":"𫗞","飩":"饨","飪":"饪","飫":"饫","飭":"饬","飯":"饭","飱":"飧","飲":"饮","飴":"饴","飵":"𫗢","飶":"𫗣","飼":"饲","飽":"饱","飾":"饰","飿":"饳","餃":"饺","餄":"饸","餅":"饼","餈":"糍","餉":"饷","養":"养","餌":"饵","餎":"饹","餏":"饻","餑":"饽","餒":"馁","餓":"饿","餔":"𫗦","餕":"馂","餖":"饾","餗":"𫗧","餘":"余","餚":"肴","餛":"馄","餜":"馃","餞":"饯","餡":"馅","餦":"𫗠","餧":"𫗪","館":"馆","餪":"𫗬","餫":"𫗥","餬":"糊","餭":"𫗮","餱":"糇","餳":"饧","餵":"喂","餶":"馉","餷":"馇","餸":"𩠌","餺":"馎","餼":"饩","餾":"馏","餿":"馊","饁":"馌","饃":"馍","饅":"馒","饈":"馐","饉":"馑","饊":"馓","饋":"馈","饌":"馔","饑":"饥","饒":"饶","饗":"飨","饘":"𫗴","饜":"餍","饞":"馋","饟":"𫗵","饠":"𫗩","饢":"馕","馬":"马","馭":"驭","馮":"冯","馯":"𫘛","馱":"驮","馳":"驰","馴":"驯","馹":"驲","馼":"𫘜","駁":"驳","駃":"𫘝","駉":"𬳶","駊":"𫘟","駎":"𩧨","駐":"驻","駑":"驽","駒":"驹","駓":"𬳵","駔":"驵","駕":"驾","駘":"骀","駙":"驸","駚":"𩧫","駛":"驶","駝":"驼","駞":"𫘞","駟":"驷","駡":"骂","駢":"骈","駤":"𫘠","駧":"𩧲","駩":"𩧴","駪":"𬳽","駫":"𫘡","駭":"骇","駰":"骃","駱":"骆","駶":"𩧺","駸":"骎","駻":"𫘣","駼":"𬳿","駿":"骏","騁":"骋","騂":"骍","騃":"𫘤","騄":"𫘧","騅":"骓","騉":"𫘥","騊":"𫘦","騌":"骔","騍":"骒","騎":"骑","騏":"骐","騑":"𬴂","騔":"𩨀","騖":"骛","騙":"骗","騚":"𩨊","騜":"𫘩","騝":"𩨃","騞":"𬴃","騟":"𩨈","騠":"𫘨","騤":"骙","騧":"䯄","騪":"𩨄","騫":"骞","騭":"骘","騮":"骝","騰":"腾","騱":"𫘬","騴":"𫘫","騵":"𫘪","騶":"驺","騷":"骚","騸":"骟","騻":"𫘭","騼":"𫠋","騾":"骡","驀":"蓦","驁":"骜","驂":"骖","驃":"骠","驄":"骢","驅":"驱","驊":"骅","驋":"𩧯","驌":"骕","驍":"骁","驎":"𬴊","驏":"骣","驓":"𫘯","驕":"骄","驗":"验","驙":"𫘰","驚":"惊","驛":"驿","驟":"骤","驢":"驴","驤":"骧","驥":"骥","驦":"骦","驨":"𫘱","驪":"骊","驫":"骉","骯":"肮","髏":"髅","髒":"脏","體":"体","髕":"髌","髖":"髋","髮":"发","鬆":"松","鬍":"胡","鬖":"𩭹","鬚":"须","鬠":"𫘽","鬢":"鬓","鬥":"斗","鬧":"闹","鬨":"哄","鬩":"阋","鬮":"阄","鬱":"郁","鬹":"鬶","魎":"魉","魘":"魇","魚":"鱼","魛":"鱽","魟":"𫚉","魢":"鱾","魥":"𩽹","魦":"𫚌","魨":"鲀","魯":"鲁","魴":"鲂","魵":"𫚍","魷":"鱿","魺":"鲄","魽":"𫠐","鮀":"𬶍","鮁":"鲅","鮃":"鲆","鮄":"𫚒","鮅":"𫚑","鮆":"𫚖","鮈":"𬶋","鮊":"鲌","鮋":"鲉","鮍":"鲏","鮎":"鲇","鮐":"鲐","鮑":"鲍","鮒":"鲋","鮓":"鲊","鮚":"鲒","鮜":"鲘","鮝":"鲞","鮞":"鲕","鮟":"𩽾","鮠":"𬶏","鮡":"𬶐","鮣":"䲟","鮤":"𫚓","鮦":"鲖","鮪":"鲔","鮫":"鲛","鮭":"鲑","鮮":"鲜","鮯":"𫚗","鮰":"𫚔","鮳":"鲓","鮵":"𫚛","鮶":"鲪","鮸":"3","鮺":"鲝","鮿":"𫚚","鯀":"鲧","鯁":"鲠","鯄":"𩾁","鯆":"𫚙","鯇":"鲩","鯉":"鲤","鯊":"鲨","鯒":"鲬","鯔":"鲻","鯕":"鲯","鯖":"鲭","鯗":"鲞","鯛":"鲷","鯝":"鲴","鯞":"𫚡","鯡":"鲱","鯢":"鲵","鯤":"鲲","鯧":"鲳","鯨":"鲸","鯪":"鲮","鯫":"鲰","鯬":"𫚞","鯰":"鲶","鯱":"𩾇","鯴":"鲺","鯶":"𩽼","鯷":"鳀","鯻":"𬶟","鯽":"鲫","鯾":"𫚣","鯿":"鳊","鰁":"鳈","鰂":"鲗","鰃":"鳂","鰆":"䲠","鰈":"鲽","鰉":"鳇","鰊":"𬶠","鰋":"𫚢","鰌":"䲡","鰍":"鳅","鰏":"鲾","鰐":"鳄","鰑":"𫚊","鰒":"鳆","鰓":"鳃","鰕":"𫚥","鰛":"鳁","鰜":"鳒","鰟":"鳑","鰠":"鳋","鰣":"鲥","鰤":"𫚕","鰥":"鳏","鰦":"𫚤","鰧":"䲢","鰨":"鳎","鰩":"鳐","鰫":"𫚦","鰭":"鳍","鰮":"鳁","鰱":"鲢","鰲":"鳌","鰳":"鳓","鰵":"鳘","鰶":"𬶭","鰷":"鲦","鰹":"鲣","鰺":"鲹","鰻":"鳗","鰼":"鳛","鰽":"𫚧","鰾":"鳔","鱀":"𬶨","鱂":"鳉","鱄":"𫚋","鱅":"鳙","鱆":"𫠒","鱇":"𩾌","鱈":"鳕","鱉":"鳖","鱊":"𫚪","鱒":"鳟","鱔":"鳝","鱖":"鳜","鱗":"鳞","鱘":"鲟","鱚":"𬶮","鱝":"鲼","鱟":"鲎","鱠":"鲙","鱢":"𫚫","鱣":"鳣","鱤":"鳡","鱧":"鳢","鱨":"鲿","鱭":"鲚","鱮":"𫚈","鱯":"鳠","鱲":"𫚭","鱷":"鳄","鱸":"鲈","鱺":"鲡","鳥":"鸟","鳧":"凫","鳩":"鸠","鳬":"凫","鳲":"鸤","鳳":"凤","鳴":"鸣","鳶":"鸢","鳷":"𫛛","鳼":"𪉃","鳽":"𫛚","鳾":"䴓","鴀":"𫛜","鴃":"𫛞","鴅":"𫛝","鴆":"鸩","鴇":"鸨","鴉":"鸦","鴐":"𫛤","鴒":"鸰","鴔":"𫛡","鴕":"鸵","鴗":"𫁡","鴛":"鸳","鴜":"𪉈","鴝":"鸲","鴞":"鸮","鴟":"鸱","鴣":"鸪","鴥":"𫛣","鴦":"鸯","鴨":"鸭","鴮":"𫛦","鴯":"鸸","鴰":"鸹","鴲":"𪉆","鴳":"𫛩","鴴":"鸻","鴷":"䴕","鴻":"鸿","鴽":"𫛪","鴿":"鸽","鵁":"䴔","鵂":"鸺","鵃":"鸼","鵊":"𫛥","鵏":"𬷕","鵐":"鹀","鵑":"鹃","鵒":"鹆","鵓":"鹁","鵚":"𪉍","鵜":"鹈","鵝":"鹅","鵟":"𫛭","鵠":"鹄","鵡":"鹉","鵧":"𫛨","鵩":"𫛳","鵪":"鹌","鵫":"𫛱","鵬":"鹏","鵮":"鹐","鵯":"鹎","鵰":"雕","鵲":"鹊","鵷":"鹓","鵾":"鹍","鶄":"䴖","鶇":"鸫","鶉":"鹑","鶊":"鹒","鶌":"𫛵","鶒":"𫛶","鶓":"鹋","鶖":"鹙","鶗":"𫛸","鶘":"鹕","鶚":"鹗","鶠":"𬸘","鶡":"鹖","鶥":"鹛","鶦":"𫛷","鶩":"鹜","鶪":"䴗","鶬":"鸧","鶭":"𫛯","鶯":"莺","鶰":"𫛫","鶱":"𬸣","鶲":"鹟","鶴":"鹤","鶹":"鹠","鶺":"鹡","鶻":"鹘","鶼":"鹣","鶿":"鹚","鷀":"鹚","鷁":"鹢","鷂":"鹞","鷄":"鸡","鷅":"𫛽","鷉":"䴘","鷊":"鹝","鷐":"𫜀","鷓":"鹧","鷔":"𪉑","鷖":"鹥","鷗":"鸥","鷙":"鸷","鷚":"鹨","鷟":"𬸦","鷣":"𫜃","鷤":"𫛴","鷥":"鸶","鷦":"鹪","鷨":"𪉊","鷩":"𫜁","鷫":"鹔","鷭":"𬸪","鷯":"鹩","鷲":"鹫","鷳":"鹇","鷴":"鹇","鷷":"𫜄","鷸":"鹬","鷹":"鹰","鷺":"鹭","鷽":"鸴","鷿":"𬸯","鸂":"㶉","鸇":"鹯","鸊":"䴙","鸋":"𫛢","鸌":"鹱","鸏":"鹲","鸑":"𬸚","鸕":"鸬","鸗":"𫛟","鸘":"鹴","鸚":"鹦","鸛":"鹳","鸝":"鹂","鸞":"鸾","鹵":"卤","鹹":"咸","鹺":"鹾","鹼":"碱","鹽":"盐","麗":"丽","麥":"麦","麨":"𪎊","麩":"麸","麪":"面","麫":"面","麬":"𤿲","麯":"曲","麲":"𪎉","麳":"𪎌","麴":"曲","麵":"面","麷":"𫜑","麼":"么","麽":"么","黃":"黄","黌":"黉","點":"点","黨":"党","黲":"黪","黴":"霉","黶":"黡","黷":"黩","黽":"黾","黿":"鼋","鼂":"鼌","鼉":"鼍","鼕":"冬","鼴":"鼹","齊":"齐","齋":"斋","齎":"赍","齏":"齑","齒":"齿","齔":"龀","齕":"龁","齗":"龂","齘":"𬹼","齙":"龅","齜":"龇","齟":"龃","齠":"龆","齡":"龄","齣":"出","齦":"龈","齧":"啮","齩":"𫜪","齪":"龊","齬":"龉","齭":"𫜭","齮":"𬺈","齯":"𫠜","齰":"𫜬","齲":"龋","齴":"𫜮","齶":"腭","齷":"龌","齼":"𬺓","齾":"𫜰","龍":"龙","龎":"厐","龐":"庞","龑":"䶮","龓":"𫜲","龔":"龚","龕":"龛","龜":"龟","龭":"𩨎","龯":"𨱆","鿁":"䜤","鿓":"鿒","𠁞":"𠀾","𠌥":"𠆿","𠏢":"𠉗","𠐊":"𫝋","𠗣":"㓆","𠞆":"𠛆","𠠎":"𠚳","𠬙":"𪠡","𠽃":"𪠺","𠿕":"𪜎","𡂡":"𪢒","𡃄":"𪡺","𡃕":"𠴛","𡃤":"𪢐","𡄔":"𠴢","𡄣":"𠵸","𡅏":"𠲥","𡅯":"𪢖","𡑍":"𫭼","𡑭":"𡋗","𡓁":"𪤄","𡓾":"𡋀","𡔖":"𡍣","𡞵":"㛟","𡟫":"𫝪","𡠹":"㛿","𡢃":"㛠","𡮉":"𡭜","𡮣":"𡭬","𡳳":"𡳃","𡸗":"𪨩","𡹬":"𪨹","𡻕":"岁","𡽗":"𡸃","𡾱":"㟜","𡿖":"𪩛","𢍰":"𪪴","𢠼":"𢙑","𢣐":"𪬚","𢣚":"𢘝","𢣭":"𢘞","𢤩":"𪫡","𢤱":"𢘙","𢤿":"𪬯","𢯷":"𪭝","𢶒":"𪭯","𢶫":"𢫞","𢷮":"𢫊","𢹿":"𢬦","𢺳":"𪮳","𣈶":"暅","𣋋":"𣈣","𣍐":"𫧃","𣙎":"㭣","𣜬":"𪳗","𣝕":"𣘷","𣞻":"𣘓","𣠩":"𣞎","𣠲":"𣑶","𣯩":"𣯣","𣯴":"𣭤","𣯶":"毶","𣽏":"𪶮","𣾷":"㳢","𣿉":"𣶫","𤁣":"𣺽","𤄷":"𪶒","𤅶":"𣷷","𤑳":"𤎻","𤑹":"𪹀","𤒎":"𤊀","𤒻":"𪹹","𤓌":"𪹠","𤓎":"𤎺","𤓩":"𤊰","𤘀":"𪺣","𤛮":"𤙯","𤛱":"𫞢","𤜆":"𪺪","𤠮":"𪺸","𤢟":"𤝢","𤢻":"𢢐","𤩂":"𫞧","𤪺":"㻘","𤫩":"㻏","𤬅":"𪼴","𤳷":"𪽝","𤳸":"𤳄","𤷃":"𪽭","𤸫":"𤶧","𤺔":"𪽴","𥊝":"𥅿","𥌃":"𥅘","𥏝":"𪿊","𥕥":"𥐰","𥖅":"𥐯","𥖲":"𪿞","𥗇":"𪿵","𥗽":"𬒗","𥜐":"𫀓","𥜰":"𫀌","𥞵":"𥞦","𥢢":"䅪","𥢶":"𫞷","𥢷":"𫀮","𥨐":"𥧂","𥪂":"𥩺","𥯤":"𫁳","𥴨":"𫂖","𥴼":"𫁺","𥵃":"𥱔","𥵊":"𥭉","𥶽":"𫁱","𥸠":"𥮋","𥻦":"𫂿","𥼽":"𥹥","𥽖":"𥺇","𥾯":"𫄝","𥿊":"𦈈","𦀖":"𫄦","𦂅":"𦈒","𦃄":"𦈗","𦃩":"𫄯","𦅇":"𫄪","𦅈":"𫄵","𦆲":"𫟇","𦒀":"𫅥","𦔖":"𫅼","𦘧":"𡳒","𦟼":"𫆝","𦠅":"𫞅","𦡝":"𫆫","𦢈":"𣍨","𦣎":"𦟗","𦧺":"𫇘","𦪙":"䑽","𦪽":"𦨩","𦱌":"𫇪","𦾟":"𦶻","𧎈":"𧌥","𧒯":"𫊹","𧔥":"𧒭","𧕟":"𧉐","𧜗":"䘞","𧜵":"䙊","𧝞":"䘛","𧞫":"𫌋","𧟀":"𧝧","𧡴":"𫌫","𧢄":"𫌬","𧦝":"𫍞","𧦧":"𫍟","𧩕":"𫍭","𧩙":"𬣥","𧩼":"𫍶","𧫝":"𫍺","𧬤":"𫍼","𧭈":"𫍾","𧭹":"𫍐","𧳟":"𧳕","𧵳":"䞌","𧶔":"𧹓","𧶧":"䞎","𧷎":"𪠀","𧸘":"𫎨","𧹈":"𪥠","𧽯":"𫎸","𨂐":"𫏌","𨄣":"𨀱","𨅍":"𨁴","𨆪":"𫏕","𨇁":"𧿈","𨇞":"𨅫","𨇤":"𫏨","𨇰":"𫏞","𨇽":"𫏑","𨈊":"𨂺","𨈌":"𨄄","𨊰":"䢀","𨊸":"䢁","𨊻":"𨐆","𨋢":"䢂","𨌈":"𫐍","𨍰":"𫐔","𨎌":"𫐋","𨎮":"𨐉","𨏠":"𨐇","𨏥":"𨐊","𨞺":"𫟫","𨟊":"𫟬","𨢿":"𨡙","𨣈":"𨡺","𨣞":"𨟳","𨣧":"𨠨","𨤻":"𨤰","𨥛":"𨱀","𨥟":"𫓫","𨦫":"䦀","𨧀":"𬭊","𨧜":"䦁","𨧰":"𫟽","𨧱":"𨱊","𨨏":"𬭛","𨨛":"𫓼","𨨢":"𫓽","𨩰":"𫟾","𨪕":"𫓮","𨫒":"𨱐","𨬖":"𫔏","𨭆":"𬭶","𨭎":"𬭳","𨭖":"𫔑","𨭸":"𫔐","𨮂":"𨱕","𨮳":"𫔒","𨯅":"䥿","𨯟":"𫔓","𨰃":"𫔉","𨰋":"𫓳","𨰥":"𫔕","𨰲":"𫔃","𨲳":"𫔖","𨳑":"𨸁","𨳕":"𨸀","𨴗":"𨸅","𨴹":"𫔲","𨵩":"𨸆","𨵸":"𨸇","𨶀":"𨸉","𨶏":"𨸊","𨶮":"𨸌","𨶲":"𨸋","𨷲":"𨸎","𨼳":"𫔽","𨽏":"𨸘","𩀨":"𫕚","𩅙":"𫕨","𩎖":"𫖑","𩎢":"𩏾","𩏂":"𫖓","𩏠":"𫖖","𩏪":"𩏽","𩏷":"𫃗","𩑔":"𫖪","𩒎":"𫖭","𩓣":"𩖕","𩓥":"𫖵","𩔑":"𫖷","𩔳":"𫖴","𩖰":"𫠇","𩗀":"𩙦","𩗓":"𫗈","𩗴":"𫗉","𩘀":"𩙩","𩘝":"𩙭","𩘹":"𩙨","𩘺":"𩙬","𩙈":"𩙰","𩚛":"𩟿","𩚥":"𩠀","𩚩":"𫗡","𩚵":"𩠁","𩛆":"𩠂","𩛌":"𫗤","𩛡":"𫗨","𩛩":"𩠃","𩜇":"𩠉","𩜦":"𩠆","𩜵":"𩠊","𩝔":"𩠋","𩝽":"𫗳","𩞄":"𩠎","𩞦":"𩠏","𩞯":"䭪","𩟐":"𩠅","𩟗":"𫗚","𩠴":"𩠠","𩡣":"𩡖","𩡺":"𩧦","𩢡":"𩧬","𩢴":"𩧵","𩢸":"𩧳","𩢾":"𩧮","𩣏":"𩧶","𩣑":"䯃","𩣫":"𩧸","𩣵":"𩧻","𩣺":"𩧼","𩤊":"𩧩","𩤙":"𩨆","𩤲":"𩨉","𩤸":"𩨅","𩥄":"𩨋","𩥇":"𩨍","𩥉":"𩧱","𩥑":"𩨌","𩦠":"𫠌","𩧆":"𩨐","𩭙":"𩬣","𩯁":"𫙂","𩯳":"𩯒","𩰀":"𩬤","𩰹":"𩰰","𩳤":"𩲒","𩴵":"𩴌","𩵦":"𫠏","𩵩":"𩽺","𩵹":"𩽻","𩶁":"𫚎","𩶘":"䲞","𩶰":"𩽿","𩶱":"𩽽","𩷰":"𩾄","𩸃":"𩾅","𩸄":"𫚝","𩸡":"𫚟","𩸦":"𩾆","𩻗":"𫚨","𩻬":"𫚩","𩻮":"𫚘","𩼶":"𫚬","𩽇":"𩾎","𩿅":"𫠖","𩿤":"𫛠","𩿪":"𪉄","𪀖":"𫛧","𪀦":"𪉅","𪀾":"𪉋","𪁈":"𪉉","𪁖":"𪉌","𪂆":"𪉎","𪃍":"𪉐","𪃏":"𪉏","𪃒":"𫛻","𪃧":"𫛹","𪄆":"𪉔","𪄕":"𪉒","𪅂":"𫜂","𪆷":"𫛾","𪇳":"𪉕","𪈼":"𱊜","𪉸":"𫜊","𪋿":"𫧮","𪌭":"𫜓","𪍠":"𫜕","𪓰":"𫜟","𪔵":"𪔭","𪘀":"𪚏","𪘯":"𪚐","𪙏":"𫜯","𪟖":"𠛾","𪷓":"𣶭","𫒡":"𫓷","𫜦":"𫜫"};function De(e,t){var n,i,r,o,s="";if(o=t?xe:Qe,"string"!=typeof e)return e;for(n=0;n13312&&r<40899||r>63744&&r<64106)){s+=i;continue}let t=o[i];s+=t||i}return s}var Se=function(e){return De(e,!0)},ke=function(e){return De(e,!1)};let Me=["章","节","回","節","卷","部","輯","辑","話","集","话","篇"," "," "],Fe=[],Ye=["CHAPTER","Chapter","序章","前言","声明","写在前面的话","后记","楔子","后序","章节目录","尾声","聲明","寫在前面的話","後記","後序","章節目錄","尾聲"];const Le=e=>e.trim().replace(/(\r\n|\n|\r|\t)/gm,"").substring(0,100).split("").filter((e=>"="!==e&&"-"!==e&&"_"!==e&&"+"!==e)).join(""),Te=(e,t="")=>t?new RegExp(t).test(e):e&&e.length<40&&!Re(e)&&(He(e)||e.startsWith("第")&&Ge(e)||e.startsWith("卷")&&Oe(e)||e.indexOf("第")>-1&&e.lastIndexOf("第")<7&&Ge(e.substr(e.indexOf("第")))),Re=e=>Fe.filter((t=>e.indexOf(t)>-1)).length>0,He=e=>Ye.filter((t=>e.startsWith(t))).length>0,Ge=e=>{let t=!1;for(let n=0;n!(!/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341\u767e\u5343\u4e07\u842c\u96f6]+$/.test(e.substring(1,e.indexOf(" ")))&&!/^\d+$/.test(e.substring(1,e.indexOf(" "))))||(!(!/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341\u767e\u5343\u4e07\u842c\u96f6]+$/.test(e.substring(1,e.indexOf(" ")))&&!/^\d+$/.test(e.substring(1,e.indexOf(" "))))||!(!/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341\u767e\u5343\u4e07\u842c\u96f6]+$/.test(e.substring(1))&&!/^\d+$/.test(e.substring(1))));let Ue=!1;const Ne=e=>Array.from(e.querySelectorAll("h1,h2,h3,h4,h5,h6,p,div,ul,dl,ol,li,dt,dd,pre,blockquote,address,kookitmarker")),We=(e,t,n,i,r,o,s)=>c(void 0,void 0,void 0,(function*(){let a=Math.floor(e.clientWidth/12),l=a%2==0?a:a-1;const A=e.clientWidth;if("mimical"===t&&"yes"!==s){let e=document.getElementById("book");e&&(e.style.display="block",n>0?o():n<0&&r(),setTimeout((()=>{if(!e)return{};e.style.display="none"}),1e3))}const c=i.body.scrollLeft,g=A+l;if(n>0){const e=Math.round(c/g),n=Math.max(0,e-1)*g;i.body.scrollTo({top:0,left:n,behavior:"sliding"===t&&"yes"!==s?"smooth":"auto"})}else if(n<0){const e=(Math.round(c/g)+1)*g;i.body.scrollTo({top:0,left:e,behavior:"sliding"===t&&"yes"!==s?"smooth":"auto"})}})),Pe=(t,n,i,r)=>{let o=e.findLastIndex(i,(e=>e.href===n||e.href&&e.href.includes("#")&&e.href.includes(n)));return n&&e.findLastIndex(i,(e=>e.href===n||e.href&&e.href.includes("#")&&e.href.includes(n)))>-1||(o=t),"prev"===r?Object.assign(Object.assign({},i[o-1]),{index:o-1}):Object.assign(Object.assign({},i[o+1]),{index:o+1})},Ke=(e,t,n,i,r,o,s,a)=>c(void 0,void 0,void 0,(function*(){let t=parseInt(o.chapterDocIndex||"0"),l=o.chapterHref||"";if(0===t)return;let A=Pe(t,l,n,"prev");A&&(o.text="prevChapter",o.page="",yield je(A.index,A.label,A.href,n,e,i,r,o,s,a))})),ze=e=>{if(!e)return!1;if("IMG"===e.tagName)return!0;if(e.textContent){let t=e.textContent.trim();if(/^(\[|\()([a-zA-Z0-9]+)(\]|\))$|^\d+$/.test(t))return!0;if(t.toLowerCase().indexOf("footnote")>-1||t.toLowerCase().indexOf("脚注")>-1||t.toLowerCase().indexOf("注释")>-1||t.toLowerCase().indexOf("fn")>-1)return!0}return!1},qe=e=>c(void 0,void 0,void 0,(function*(){const t=yield fetch(e),n=yield t.blob();return new Promise(((e,t)=>{const i=new FileReader;i.onloadend=()=>e(i.result),i.onerror=t,i.readAsDataURL(n)}))})),je=(t,n,i,r,o,s,a,l,A,g)=>c(void 0,void 0,void 0,(function*(){if(A.body.innerHTML="",g.height="0px",A.body.scrollTo(0,0),n&&!t||r[t]&&r[t].label&&n&&n!==r[t].label&&-1===i.indexOf("#")){let i=e.findLastIndex(r,{label:n});-1!==i&&(t=i)}if(-1===t&&i.indexOf("#")>-1){let n=i.split("#")[0],o=e.findLastIndex(r,(e=>e.href===n||e.href&&e.href.includes("#")&&e.href.includes(n)));-1!==o&&(t=o)}(-1===t||t>r.length-1)&&(t=0);let h=yield d(r[t].text,!1),u=function(e){const t=e.match(/]*)>/i);if(!t)return{};const n=t[1],i={},r=/([\w-]+)\s*=\s*(?:"([^"]*)"|'([^']*)'|([^>\s]+))/g;let o;for(;null!==(o=r.exec(n));){const e=o[2]||o[3]||o[4]||"";i[o[1]]=e}return i}(h);if(A.body.innerHTML=h,u.style?A.body.setAttribute("style",A.body.getAttribute("style")||""):u.class?A.body.setAttribute("class",u.class):u.id?A.body.setAttribute("id",u.id):u.class?u.id||A.body.removeAttribute("id"):A.body.removeAttribute("class"),yield Je(A),yield Ve(A),!n){let e=t;for(;e>=0;){if(r[e].label){n=r[e].label;break}e--}}l.chapterTitle=n,l.chapterHref=i,l.chapterDocIndex=t+"",l.percentage=r.slice(0,t).map((e=>e.text&&e.text.size||1)).reduce(((e,t)=>e+t),0)/r.map((e=>e.text&&e.text.size||1)).reduce(((e,t)=>e+t),0)+"",l.text="",yield((e,t,n,i,r)=>c(void 0,void 0,void 0,(function*(){if(yield Promise.race([Promise.all(Array.from([...r.images,...r.querySelectorAll("image")]).map((e=>e.complete?Promise.resolve(0!==e.naturalHeight):new Promise((t=>{e.addEventListener("load",(()=>t(!0))),e.addEventListener("error",(()=>t(!1)))}))))),new Promise(((e,t)=>{setTimeout((()=>{e("image load timeout")}),10)}))]),yield C(e,t,n,r),B(r),"scroll"!==t){if(i.height=e.clientHeight+"px","double"===t){let t=Math.floor(e.clientWidth/12),n=t%2==0?t:t-1,i=(e.clientWidth+n)/2;if((r.body.scrollWidth-r.body.clientWidth)/i%2==1){let e=document.createElement("div");e.setAttribute("style","height: "+r.body.clientHeight+"px; display: inline-block; width: "+(i-n)+"px"),r.body.appendChild(e)}}}else i.height=r.body.scrollHeight+"px",i.height=r.body.scrollHeight+300+"px"})))(o,s,a,g,A),yield Xe(o,s,"","","","",A)}));const Je=e=>c(void 0,void 0,void 0,(function*(){let t=Array.from(e.getElementsByTagName("link"));if(0===t.length)return;let n=[];for(let e=0;e{i.addEventListener("load",e)})))}try{yield Promise.race([Promise.all(n),new Promise(((e,t)=>{setTimeout((()=>{e("css load timeout")}),10)}))])}catch(e){console.error(e)}})),Ve=e=>c(void 0,void 0,void 0,(function*(){var t;let n=Array.from(e.body.childNodes);for(let i=0;ic(void 0,void 0,void 0,(function*(){let a=0,l=s.body;if(o&&"scroll"!==t){let t=Math.floor(e.clientWidth/12),n=t%2==0?t:t-1;a=((A=getComputedStyle(e).width,parseFloat(A.substring(0,A.length-2)))+n)*(parseInt(o)-1)}else if(n){let r=Ne(s.body).filter(((e,t)=>Le(e.textContent)&&(Le(e.textContent)===Le(n)||Le(e.textContent)===ke(Le(n))||Le(e.textContent)===Se(Le(n)))&&(Math.abs(t-parseInt(i))<2||"search"===i||"ignore"===i||"next"===i)));if(0===r.length)return;l=Ze(r[0],e,t),a=l?g(l.offsetLeft)-g(l.marginLeft||parseFloat(getComputedStyle(l).marginLeft)):"prevChapter"===n?s.body.scrollWidth:0}else if(r&&r.indexOf("#")>-1){let n=CSS.escape(r.split("#").reverse()[0]);if(!s.body.querySelector("#"+CSS.escape(n)))return;l=Ze(s.body.querySelector("#"+CSS.escape(n))||s.body,e,t),a=l?g(l.offsetLeft)-g(l.marginLeft||parseFloat(getComputedStyle(l).marginLeft)):0}var A;"scroll"!==t?s.body.scrollTo(a,0):l.scrollIntoView()})),Ze=(e,t,n)=>{let i=Math.floor(t.clientWidth/12),r=i%2==0?i:i-1,o=g(e.offsetLeft)-g(e.marginLeft||parseFloat(getComputedStyle(e).marginLeft));return"scroll"===n||"scroll"!==n&&_e(parseInt(o+""),(t.clientWidth+r)/2)?e:e.parentElement?Ze(e.parentElement,t,n):e},_e=(e,t)=>{for(let n=e-10;n<=e+10;n++)if(n%t==0)return!0;return!1},$e=(e,t,n,i,r,o,s)=>c(void 0,void 0,void 0,(function*(){var a,l;if(Ue)return;let A=Ne(o.body),c=A.filter((n=>st(e,n,t)&&(n.textContent||"").trim())),g=c[0];s&&(g=s);let d=0;for(let n=0;ne.text&&e.text.size||1)).reduce(((e,t)=>e+t),0);r.percentage=i.slice(0,parseInt(r.chapterDocIndex)).map((e=>e.text&&e.text.size||1)).reduce(((e,t)=>e+t),0)/e+((null===(a=i.find(((e,t)=>t===parseInt(r.chapterDocIndex))))||void 0===a?void 0:a.text.size)||0)/e*(d/A.length)+""}else r.page=(null===(l=yield m(t,o,e))||void 0===l?void 0:l.currentPage)+"";Ue=!0,setTimeout((()=>{Ue=!1}),100)})),et=(e,t,n)=>{let i=Math.floor(t.clientWidth/12),r=i%2==0?i:i-1;return Math.abs(e.offsetLeft-Ze(e,t,n).offsetLeft)>(t.clientWidth+r)/2},tt=(t,n,i)=>{let r=i.chapterHref||"",o=r.lastIndexOf("#"),s="";s=-1===o?r:r.substring(0,o);for(let r=0;r-1&&(i.chapterHref=t,i.chapterTitle=n[r].label)}}},nt=(e,t,n,i,r,o,s,a)=>c(void 0,void 0,void 0,(function*(){let t=parseInt(o.chapterDocIndex||"0"),l=o.chapterHref||"";if(t>=n.length-1)return void(o.percentage="1");let A=Pe(t,l,n,"next");A&&(o.page="",yield je(A.index,A.label,A.href,n,e,i,r,o,s,a))})),it=(e,t,n)=>{let i=Ne(n.body).filter((e=>!ot(e))),r=i.filter((n=>st(e,n,t)&&(n.textContent||"").trim()));return r=r.filter((e=>{if(!(e.textContent||"").trim())return!1;let t=e.parentElement;for(;t&&t!==n.body;){if(i.includes(t))return!1;t=t.parentElement}return!0})),r.filter((e=>{var t;return"img"!==e.textContent&&!(null===(t=e.textContent)||void 0===t?void 0:t.startsWith("img"))})).map((e=>e.textContent))},rt=(e,t,n)=>{if(n.querySelectorAll('span[data-highlight="true"]').forEach((e=>{const t=e.parentNode;t&&t.replaceChild(n.createTextNode(e.textContent||""),e)})),!e.trim())return;let i=Array.from(n.body.querySelectorAll("span, p, div, h1, h2, h3, h4, h5, h6 ")).filter((t=>{const n=t.textContent||"";return n.trim()&&n.indexOf(e)>-1}));if(i.length>0){const r=i=>{var r;if(i.nodeType===Node.TEXT_NODE){const o=i.textContent||"",s=o.indexOf(e);if(s>-1){const a=o.substring(0,s),l=o.substring(s+e.length),A=n.createElement("span");A.setAttribute("style",t),A.setAttribute("data-highlight","true"),A.textContent=e;const c=n.createDocumentFragment();return a&&c.appendChild(n.createTextNode(a)),c.appendChild(A),l&&c.appendChild(n.createTextNode(l)),null===(r=i.parentNode)||void 0===r||r.replaceChild(c,i),!0}}return!1},o=e=>{if(r(e))return!0;const t=Array.from(e.childNodes);for(const e of t)if(o(e))return!0;return!1};for(let e=0;e{var t=e.children;let n=!1;var i=/^(address|kookitmarker|section|blockquote|body|center|dir|div|dl|fieldset|form|h[1-6]|hr|isindex|menu|noframes|noscript|ol|p|pre|table|ul|dd|dt|frameset|li|tbody|td|tfoot|th|thead|tr|html)$/i;if(Array.from(t).filter((e=>i.test(e.nodeName))).length<3)return!1;for(var r=0;r{var i=!1,r=t.getBoundingClientRect();if("scroll"!==n&&t.textContent&&t.textContent.trim()){let t=r.left;i=t>-10&&t<=e.clientWidth}else if("scroll"===n&&t.textContent&&t.textContent.trim()){let t=r.top;i=t>=e.scrollTop&&t<=e.scrollTop+e.clientHeight}else if("scroll"!==n){let t=r.left;i=t>=0&&t<=e.clientWidth}return i};class at{constructor(){this.callbacks={},this.callbacks.base={}}on(e,t){const n=this;if(void 0===e||""===e)return console.warn("wrong names"),!1;if(void 0===t)return console.warn("wrong callback"),!1;return this.resolveNames(e).forEach((function(e){const i=n.resolveName(e);n.callbacks[i.namespace]instanceof Object||(n.callbacks[i.namespace]={}),n.callbacks[i.namespace][i.value]instanceof Array||(n.callbacks[i.namespace][i.value]=[]),n.callbacks[i.namespace][i.value].push(t)})),this}off(e){const t=this;if(void 0===e||""===e)return console.warn("wrong name"),!1;return this.resolveNames(e).forEach((function(e){const n=t.resolveName(e);if("base"!==n.namespace&&""===n.value)delete t.callbacks[n.namespace];else if("base"===n.namespace)for(const e in t.callbacks)t.callbacks[e]instanceof Object&&t.callbacks[e][n.value]instanceof Array&&(delete t.callbacks[e][n.value],0===Object.keys(t.callbacks[e]).length&&delete t.callbacks[e]);else t.callbacks[n.namespace]instanceof Object&&t.callbacks[n.namespace][n.value]instanceof Array&&(delete t.callbacks[n.namespace][n.value],0===Object.keys(t.callbacks[n.namespace]).length&&delete t.callbacks[n.namespace])})),this}trigger(e,t=[]){if(void 0===e||""===e)return console.warn("wrong name"),!1;const n=this;const i=t instanceof Array?t:[];let r=this.resolveNames(e);r=this.resolveName(r[0]),setTimeout((()=>{if("base"===r.namespace)for(const e in n.callbacks){if(n.callbacks[e]instanceof Object&&n.callbacks[e][r.value]instanceof Array&&n.callbacks[e][r.value])n.callbacks[e][r.value].forEach((function(e){e.apply(n,i)}));else if(this.callbacks[r.namespace]instanceof Object&&n.callbacks[r.namespace][r.value]){if(""===r.value)return console.warn("wrong name"),this;n.callbacks[r.namespace][r.value].forEach((function(e){e.apply(n,i)}))}return null}}),100)}resolveNames(e){let t=e;return t=t.replace(/[^a-zA-Z0-9 ,/.]/g,""),t=t.replace(/[,/]+/g," "),t=t.split(" "),t}resolveName(e){const t={},n=e.split(".");return t.original=e,t.value=n[0],t.namespace="base",n.length>1&&""!==n[1]&&(t.namespace=n[1]),t}}const lt=Node.ELEMENT_NODE,At=Node.TEXT_NODE,ct=Node.CDATA_SECTION_NODE;function gt(e,t,n){let i,r,o,s=0,a=0,l=!0;for(r=0;rthis.compare(e,t)))}static compare(e,t){let n=e.get(),i=t.get();if(e.isRange||t.isRange){if(e.isRange&&t.isRange){const e=this.comparePath(n.from,i.from);return e||this.comparePath(n.to,i.to)}return e.isRange&&(n=n.from),t.isRange&&(i=i.from),this.comparePath(n,i)}return this.comparePath(n,i)}static compareParts(e,t){const n=Math.max(e.length,t.length);let i,r,o,s;for(i=0;i=n)return"img"===a.tagName.toLowerCase()&&i?{node:a,offset:i}:{node:a,offset:0}}else{if(l+=1,l===n)return"img"===a.tagName.toLowerCase()&&i?{node:a,offset:i}:{node:a,offset:0};if(l>n)return o?{node:o,offset:this.trueLength(e,o.textContent)}:{node:t,offset:0}}o=a;break;case At:case ct:if(0!==l&&l%2!=0||(l+=1),l===n){const t=this.trueLength(e,a.textContent);if(!(i>=t))return{node:a,offset:i};i-=t}o=a;break;default:continue}if(n>l){const n={relativeToNode:"after",offset:0};return n.node=o||t,this.isTextNode(n.node)&&(n.offset=this.trueLength(e,n.node.textContent.length)),n}}isTextNode(e){return!!e&&(e.nodeType===At||e.nodeType===ct)}correctOffset(e,t,n,i){let r,o=t;if("string"==typeof i?r=this.decodeEntities(e,i):(i.pre=this.decodeEntities(e,i.pre),i.post=this.decodeEntities(e,i.post),r=i.pre+"."+i.post),!this.isTextNode(t))return{node:t,offset:0};for(;this.isTextNode(o.previousSibling);)o=o.previousSibling;const s=o;let a;const l=[];let A="",c=0;for(;this.isTextNode(o)&&(a=this.decodeEntities(e,o.textContent),l[c]=a.length,A+=a,o.nextSibling);)o=o.nextSibling,c++;const g=i.pre?i.pre.length:0,d=function(e,t,n){n=n||0;const i=[];let r,o=0;do{if(r=e.match(t),!r)break;i.push(r.index+n),o+=r.index+r.length,e=e.slice(r.index+r.length)}while(o=l[c];){if(h-=l[c],h<0)return{node:t,offset:n};const e=[];if(!o.nextSibling||c+1>=e.length)return{node:t,offset:n};c++,o=o.nextSibling}return{node:o,offset:h}}resolveNode(e,t,n,i){if(i=Object.assign({},i||{}),!n)throw new Error("Missing DOM argument");let r;if(0===e&&(r=n.querySelector("package")),!r)for(const e of n.childNodes)if(e.nodeType===lt){r=e;break}if(r=n,!r)throw new Error("Document incompatible with CFIs");let o,s,a=r,l=0;for(o=t.length-1;o>=0;o--)if(s=t[o],!i.ignoreIDs&&s.nodeID&&(a=n.getElementById(s.nodeID))){l=o+1;break}a||(a=r);let A={node:a,offset:0};for(o=l;othis.parts.length-2)throw new Error("index is out of bounds");const i=this.parts[e];if(!i)throw new Error("Missing CFI part for index: "+e);let r=this.resolveNode(e,i,t,n).node;const o=r.tagName.toLowerCase();if("itemref"===o&&"spine"===r.parentNode.tagName.toLowerCase()){const e=r.getAttribute("idref");if(!e)throw new Error("Referenced node had not 'idref' attribute");if(r=t.getElementById(e),!r)throw new Error("Specified node is missing from manifest");const n=r.getAttribute("href");if(!n)throw new Error("Manifest item is missing href attribute");return n}if("iframe"===o||"embed"===o){const e=r.getAttribute("src");if(!e)throw new Error(o+" element is missing 'src' attribute");return e}if("object"===o){const e=r.getAttribute("data");if(!e)throw new Error(o+" element is missing 'data' attribute");return e}if("image"===o||"use"===o){const e=r.getAttribute("xlink:href");if(!e)throw new Error(o+" element is missing 'xlink:href' attribute");return e}throw new Error("No URI found")}deepClone(e){return JSON.parse(JSON.stringify(e))}resolveLocation(e,t){const n=t.length-1,i=t[n];if(!i)throw new Error("Missing CFI part for index: "+n);const r=this.resolveNode(n,i,e),o=this.deepClone(i[i.length-1]);return delete o.nodeIndex,o.offset||delete r.offset,Object.assign(Object.assign({},o),r)}resolveLast(e,t){if(t=Object.assign({range:!1},t||{}),!this.isRange)return this.resolveLocation(e,this.parts);if(t.range){const t=e.createRange(),n=this.getFrom();"before"===n.relativeToNode?t.setStartBefore(n.node,n.offset):"after"===n.relativeToNode?t.setStartAfter(n.node,n.offset):t.setStart(n.node,n.offset);const i=this.getTo();return"before"===i.relativeToNode?t.setEndBefore(i.node,i.offset):"after"===i.relativeToNode?t.setEndAfter(i.node,i.offset):t.setEnd(i.node,i.offset),t}return{from:this.resolveLocation(e,this.getFrom()),to:this.resolveLocation(e,this.getTo()),isRange:!0}}resolve(e,t){return this.resolveLast(e,t)}}const ft=["color-0","color-1","color-2","color-3","line-0","line-1","line-2","line-3"],pt=["#FEF3CD","#FBFACC","#CEFACD","#CDE9FA"],mt=["#FF0000","#000080","#0000FF","#2EFF2E"],Bt=["#fac106","#ebe702","#0be603","#0493e6"],wt=(e,n,i,r,o,s)=>{var a,l;let A=ft[n],c=s.contentWindow||(null===(a=s.contentDocument)||void 0===a?void 0:a.defaultView),g=e;g=[g];let d=t.getSelection(s);d.restoreCharacterRanges(o,g);let h=d.getRangeAt(0);Et(h,A,i,r,o),c&&c.getSelection()&&(null===(l=c.getSelection())||void 0===l||l.empty())},Ct=(e,t,n,i,r,o,s)=>{let a=ft[t],l=s.querySelector(".noteLayer"),A=s.querySelector("#koodoPDFLayer");var c=r.getViewport({scale:o});let g=[];for(let t=0;t{e.heighte.width-t.width)),f=[];for(let e=0;e{if(r===e)return!1;const o=i.bottom;return Math.abs(n-o)=t.right||i.left<=t.left&&Math.abs(i.right-t.right)<5||Math.abs(i.left-t.left)<5&&i.right>=t.right)}))||f.push(t)}for(let e=0;e-1?"background-color: ":"border-bottom: ")+(a.indexOf("color")>-1?Bt[a.split("-")[1]]:`2px solid ${mt[a.split("-")[1]]}`)+"; left:"+(t.left+parseFloat(getComputedStyle(A).marginLeft))+"px; top:"+t.top+"px;width:"+t.width+"px; height:"+t.height+"px; z-index: 1; cursor: pointer; opacity: "+(a.indexOf("color")>-1?.3:1)+";"),null==p||p.setAttribute("data-key",n),null==p||p.setAttribute("class","kookit-note"),null==p||p.addEventListener("click",(e=>{e&&e.target&&e.target.dataset&&e.target.dataset.key&&i(e)})),p.ontouchend=e=>{window.isSwiping||(e&&e.target&&e.target.dataset&&e.target.dataset.key&&i(e),e.preventDefault(),e.stopPropagation())},l.appendChild(p))}},yt=e=>{const t=e.querySelectorAll(".kookit-note");for(let e=0;e{const o=e.nativeRange.getClientRects(),s=[],a=Array.from(o).sort(((e,t)=>e.width-t.width)),l=a.length?Math.max(...Array.from(o).map((e=>e.width))):0;for(let e=0;eMath.abs(t.bottom-e.bottom)<5&&t.width===l&&Math.abs(t.left-e.left)-1?"background-color: ":"border-bottom: ")+(t.indexOf("color")>-1?pt[t.split("-")[1]]+";opacity: 1":`2px solid ${mt[t.split("-")[1]]}`)+";left:"+(Math.min(o.left,o.x)+r.body.scrollLeft)+"px; top:"+(Math.min(o.top,o.y)+r.body.scrollTop)+"px;width:"+o.width+"px; height:"+o.height+"px; z-index:-1;opacity: "+(t.indexOf("color")>-1?.8:1)+"; cursor: pointer;"),A.setAttribute("class"," kookit-note"),A.setAttribute("data-key",n),r.body.appendChild(A);var c=document.createElement("span");null==c||c.setAttribute("style","position: absolute;left:"+(Math.min(o.left,o.x)+r.body.scrollLeft)+"px; top:"+(Math.min(o.top,o.y)+r.body.scrollTop)+"px;width:"+o.width+"px; height:"+o.height+"px; z-index:1;"),c.setAttribute("class"," kookit-note"),c.setAttribute("data-key",n),c.addEventListener("click",(e=>{e&&e.target&&e.target.dataset&&e.target.dataset.key&&i(e)})),c.ontouchend=e=>{window.isSwiping||(e&&e.target&&e.target.dataset&&e.target.dataset.key&&i(e),e.preventDefault(),e.stopPropagation())},r.body.appendChild(c)}};const It=(e,t,n)=>{!function(e){let t=document.getElementById("book");t&&t.remove();const n=document.createElement("div");n.id="book";const i=document.createElement("canvas");i.id="pageflip-canvas";const r=document.createElement("div");r.id="pages";for(let t=0;t{d+1{d-1>=0&&(p[d-1].target=1,d=Math.max(d-1,0))},mouseDownHandler:E,mouseUpHandler:I,mouseMoveHandler:y}}}function y(e){if(!m)return;const t=e.touches[0],n=t.screenX,i=t.screenY;f.x=n-m.offsetLeft-o/2,f.y=i-m.offsetTop}function E(e){const t=e.touches[0];A=t.screenX,t.screenX=0?p[d-1].dragging=!0:t.screenX>window.screen.width/2&&d+1a/4*1&&c-A>0?(p[n].target=1,d=Math.max(d-1,0)):n===d?p[n].target=1:n===d-1&&(p[n].target=-1)),p[n].dragging=!1}function b(e){var i=1-Math.abs(e.progress),r=.5*a*(1-e.progress),s=a*e.progress+r,A=20*i,c=.5*a*Math.max(Math.min(1-e.progress,.5),0),d=.5*a*Math.max(Math.min(i,.5),0),h=.5*a*Math.max(Math.min(i,.5),0);e.page.style.width=Math.max(s,0)+"px",u.save(),u.translate(0+o/2,g+0),u.strokeStyle=("no"===t?"rgba(0,0,0,":"rgba(255,255,255,")+.05*i+")",u.lineWidth=30*i,u.beginPath(),u.moveTo(s-r,.5*-A),u.lineTo(s-r,l+.5*A),u.stroke();var f=u.createLinearGradient(s,0,s+d,0);f.addColorStop(0,("no"===t?"rgba(0,0,0,":"rgba(255,255,255,")+.2*i+")"),f.addColorStop(.8,("no"===t?"rgba(0,0,0,":"rgba(255,255,255,")+"0.0)"),u.fillStyle=f,u.beginPath(),u.moveTo(s,0),u.lineTo(s+d,0),u.lineTo(s+d,l),u.lineTo(s,l),u.fill();var p=u.createLinearGradient(s-r-h,0,s-r,0);p.addColorStop(0,("no"===t?"rgba(0,0,0,":"rgba(255,255,255,")+"0.0)"),p.addColorStop(1,("no"===t?"rgba(0,0,0,":"rgba(255,255,255,")+.15*+i+")"),u.fillStyle=p,u.beginPath(),u.moveTo(s-r-h,0),u.lineTo(s-r,0),u.lineTo(s-r,l),u.lineTo(s-r-h,l),u.fill();var m=u.createLinearGradient(s-c,0,s,0);n?(m.addColorStop(.35,n),m.addColorStop(.73,n),m.addColorStop(.9,n),m.addColorStop(1,n)):"no"===t?(m.addColorStop(.35,"#fafafa"),m.addColorStop(.73,"#eeeeee"),m.addColorStop(.9,"#fafafa"),m.addColorStop(1,"#e2e2e2")):(m.addColorStop(.35,"#333"),m.addColorStop(.73,"#444"),m.addColorStop(.9,"#333"),m.addColorStop(1,"#444")),u.fillStyle=m,u.strokeStyle=("no"===t?"rgba(0,0,0,":"rgba(255,255,255,")+"0.06)",u.lineWidth=.5,u.beginPath(),u.moveTo(s,0),u.lineTo(s,l),u.quadraticCurveTo(s,l+2*A,s-r,l+A),u.lineTo(s-r,-A),u.quadraticCurveTo(s,2*-A,s,0),u.fill(),u.stroke(),u.restore()}},bt=(e,t)=>{var n;const i=t.getElementById("pdf-container-"+e);if(!i)return;let r=document.createElement("iframe");r.style.position="absolute",r.style.top="0",r.style.left="0",r.style.width="100%",r.style.height="100%",r.style.border="0",r.style.margin="0",r.style.padding="0",r.style.fontSize="100%",r.style.font="inherit",r.scrolling="no",r.tabIndex=0,r.id="pdf-iframe-"+e;let o=document.createElement("style");return o.id="default-style",o.textContent="p,empty-line{display: inherit;margin-block-start: inherit;margin-block-end: inherit;margin-inline-start: inherit;margin-inline-end: inherit;}body{margin: 0px}",i.appendChild(r),null===(n=r.contentDocument)||void 0===n||n.head.appendChild(o),r},vt=(e,t,n)=>c(void 0,void 0,void 0,(function*(){let i=n.getElementById("pdf-container-"+e);if(i)if("scroll"!==t){let e=i?g(i.offsetLeft)-g(i.marginLeft||parseFloat(getComputedStyle(i).marginLeft)):0;n.body.scrollTo(e,0)}else i.scrollIntoView()})),xt=(e,t,n,i)=>{var r=!1,o=t.getBoundingClientRect();if("scroll"!==n){let e=o.left;r=e>-10&&e<=i.body.clientWidth}else{let t=o.top,n=o.bottom;r=t-10>=e.scrollTop&&t+10<=e.scrollTop+e.clientHeight||n-10>=e.scrollTop&&n+10<=e.scrollTop+e.clientHeight||t+10<=e.scrollTop&&n-10>=e.scrollTop+e.clientHeight}return r},Qt=(e,t,n)=>{if(n.querySelectorAll('span[data-highlight="true"]').forEach((e=>{const t=(e.getAttribute("style")||"").replace(/background(?:-color)?\s*:[^;]+;?/gi,"").trim();t?e.setAttribute("style",t):e.removeAttribute("style"),e.removeAttribute("data-highlight")})),!e.trim())return;let i=n.querySelectorAll("p,span"),r=Array.from(i).filter(((t,n)=>(t.textContent||"").trim()&&t.textContent===e));r.length>0&&(r[0].setAttribute("style",(r[0].getAttribute("style")||"")+t),r[0].setAttribute("data-highlight","true"))},Dt=(e,t,n,i,r,o,s,a,l)=>c(void 0,void 0,void 0,(function*(){let e=Math.floor(i.body.clientWidth/12),A=e%2==0?e:e-1;const c=i.body.clientWidth;if("mimical"===t&&"yes"!==s){let e=document.getElementById("book");e&&(e.style.display="block",n>0?o():n<0&&r(),setTimeout((()=>{if(!e)return{};e.style.display="none"}),1e3))}if(n>0)if("single"===l){let e=i.querySelector("#pdf-container-"+(a-1));e&&e.scrollIntoView()}else i.body.scrollBy(-(c+A)/2,0);else if(n<0)if("single"===l){let e=i.querySelector("#pdf-container-"+(a+1));e&&e.scrollIntoView()}else i.body.scrollBy((c+A)/2,0)})),St=e=>c(void 0,void 0,void 0,(function*(){const t=1600,n=e.getViewport({scale:1}),i=document.createElement("canvas"),r=i.getContext("2d");i.width=t,i.height=t/n.width*n.height;const o={canvasContext:r,viewport:e.getViewport({scale:t/n.width})};yield e.render(o).promise;const s=i.toDataURL("image/jpeg",1),a=function(e){const t=e.length-23;return Math.ceil(.75*t)}(s);return{imageURL:s,size:a}}));function kt(e){return c(this,void 0,void 0,(function*(){try{const t=yield fetch(e),n=yield t.blob();return yield new Promise(((e,t)=>{const i=new FileReader;i.onloadend=()=>e(i.result),i.onerror=t,i.readAsDataURL(n)}))}catch(e){throw console.error("转换失败:",e),e}}))}function Mt(){return window.visualViewport?window.visualViewport.offsetLeft:window.pageXOffset||document.documentElement.scrollLeft||0}function Ft(){return window.visualViewport?window.visualViewport.offsetTop:window.pageYOffset||document.documentElement.scrollTop||0}const Yt=(e,t,n)=>c(void 0,void 0,void 0,(function*(){if(!e.target)return;e.preventDefault(),e.stopPropagation();let t=n.getTargetHref(e),i=yield n.handleLinkJump(t,e);if(!i.handled)return!1;if(i.external)return window.ReactNativeWebView.postMessage(JSON.stringify(Object.assign({event:"link-clicked",href:t,footnote:""},i))),!0;let r=yield n.getFootnoteContent(i.node);return window.ReactNativeWebView.postMessage(JSON.stringify(Object.assign({event:"link-clicked",href:t,footnote:r.handled?r.content:"",rect:e.target.getBoundingClientRect()},i))),!0}));function Lt(e){if("A"===e.tagName)return e;let t=e;for(;t&&"BODY"!==t.tagName;){if("A"===t.tagName)return t;t=t.parentElement}return null}function Tt(e,t,n){const i=3*t+e+1;return n.layout.A.area.includes(i)?n.touchControlA:n.layout.B.area.includes(i)?n.touchControlB:n.layout.C.area.includes(i)?n.touchControlC:"right"}const Rt=(e,n,i,r,o,s,a,l)=>{var A;let g=n.contentWindow||(null===(A=n.contentDocument)||void 0===A?void 0:A.defaultView),d=l.getDocument(),h=0,u=0,f=0,p=0;const m=30;let B=Math.floor(i.clientWidth/12),w=B%2==0?B:B-1,C=i.clientWidth+w,y=null,E=!1,I=0;e.addEventListener("touchend",(function(t){window.isSwiping=!1,window.isTouchNavigation=!0,y&&clearTimeout(y),y=setTimeout((()=>{window.isTouchNavigation=!1,y=null}),4e3);let n=(new Date).getTime();if(n-p<=300)return void t.preventDefault();p=n;const A=t.changedTouches[0],c=Date.now();let B=A.screenX,I=A.screenY;const v=c-h,x=B-u,Q=I-f;if(E&&"mimical"===o&&"scroll"!==r)return E=!1,l.mouseUpHandler(t),A.screenXwindow.innerWidth/4*1&&B-u>0&&(l.prev(),E=!1),void setTimeout((()=>{let e=document.getElementById("book");e&&(e.style.display="none")}),400);if(E&&"sliding"===o&&"scroll"!==r){let Y="PDF"===s?d:e;if(window.scrollAnimationId&&cancelAnimationFrame(window.scrollAnimationId),Math.abs(Y.body.scrollWidth-Y.body.scrollLeft-i.clientWidth)<10)return b&&clearTimeout(b),void(b=setTimeout((()=>{l.next(),E=!1}),300));if(0===Y.body.scrollLeft)return b&&clearTimeout(b),void(b=setTimeout((()=>{l.prev(),E=!1}),300));Y.body.style.transform="";let L,T=Y.body.scrollLeft;const R=Math.round(T/C),H=Math.abs(x)/window.innerWidth,G=.1;L=x>0&&H>G?(R-1)*C:x<0&&H>G?(R+1)*C:R*C,L=Math.max(0,Math.min(L,Y.body.scrollWidth-C)),Y.body.scrollWidth-L1-Math.pow(1-e,3);function K(e){const t=e-O;if(t>=W)return Y.body.scrollLeft=L,Y.body.style.willChange="auto",l.record(),void(E=!1);const n=P(t/W),i=U+N*n;Y.body.scrollLeft=i,window.scrollAnimationId=requestAnimationFrame(K)}window.scrollAnimationId=requestAnimationFrame(K)}else{var D=g.getSelection().toString(),S=Math.abs(x)>=m||Math.abs(Q)>=m;if(!D||"PDF"===s&&("PDF"!==s||S)){if(v>500){const z=t.target;if(!z)return;if(Lt(z))return;if("IMG"===z.tagName||"image"===z.tagName){const q=z.src||z.getAttribute("xlink:href");return void(q.startsWith("blob:")&&kt(q).then((e=>{window.ReactNativeWebView.postMessage(JSON.stringify({event:"view-image",imgSrc:e}))})))}}if(v<500&&Math.abs(x)=m||Math.abs(Q)>=m)&&(window.ReactNativeWebView.postMessage(JSON.stringify({event:"swipe"})),"scroll"===r&&Math.abs(i.scrollHeight-i.scrollTop-i.clientHeight)<10&&window.ReactNativeWebView.postMessage(JSON.stringify({event:"scroll-bottom"})),"scroll"===r&&0===i.scrollTop&&window.ReactNativeWebView.postMessage(JSON.stringify({event:"scroll-top"})))}else window.ReactNativeWebView.postMessage(JSON.stringify({event:"select-text-after-touch",selectedText:D}))}}),!1),e.addEventListener("touchstart",(function(e){h=Date.now();const t=e.target;if(!t)return;if(Lt(t))return;e.touches.length>1&&e.preventDefault();const n=e.touches[0];u=n.screenX,f=n.screenY}),!1),e.addEventListener("touchmove",(function(t){if(!E&&Math.abs(t.touches[0].screenX-u)<=10)return;if(t.preventDefault(),window.visualViewport.scale>1&&"PDF"===s)return void t.preventDefault();const n=t.touches[0],i=n.screenX,a=n.screenY,A=i-u,c=a-f;if((Math.abs(A)>10||Math.abs(c)>10)&&(window.isSwiping=!0),!E&&Math.abs(A)>Math.abs(c)&&Math.abs(A)>10){if(E=!0,I=i,e.body.style.transform="translateZ(0)","mimical"===o&&"scroll"!==r){let e=document.getElementById("book");e&&(e.style.display="block",l.mouseDownHandler(t))}}else if(E&&"mimical"===o&&"scroll"!==r&&l.mouseMoveHandler(t),E&&"sliding"===o&&"scroll"!==r){let t="PDF"===s?d:e;const n=i-I,r=t.body.scrollLeft;t.body.scrollLeft=r-n,I=i,requestAnimationFrame((()=>{}))}}),!1),e.addEventListener("click",(e=>{Yt(e,0,l)}),!0);let b=null,v=0,x=0,Q=e=>c(void 0,void 0,void 0,(function*(){var n,r;const o=g.getSelection().toString().trim();if(o){var a=g.getSelection().getRangeAt(0);let d=l.getPageSize();var A=a.getBoundingClientRect();if("PDF"===s){let e=a.getClientRects();if(e.length>0){e=Array.from(e).filter((e=>Math.abs(e.height-d.sectionHeight)>10&&Math.abs(e.width-d.sectionWidth)>10&&e.height>0&&e.width>0));let t=1/0,n=1/0,i=-1/0,r=-1/0;for(let o=0;o{1===x&&Q(e)}),600):Q(e),e.preventDefault(),e.stopPropagation(),!1;{const e=t.src||t.getAttribute("xlink:href");e.startsWith("blob:")&&kt(e).then((e=>{window.ReactNativeWebView.postMessage(JSON.stringify({event:"view-image",imgSrc:e}))}))}}};let D=0,S=0,k=0;e.addEventListener("selectstart",(t=>{x=0,v=Date.now(),S=Mt(),k=Ft(),"scroll"!==r&&(D=e.body.scrollLeft)}),!1);let M=0;let F=null;e.addEventListener("selectionchange",(t=>{F&&clearTimeout(F),F=setTimeout((()=>{Q(t),F=null}),1e3);if(!g.getSelection().toString().trim())return;D>0&&(e.body.scrollLeft=D),x++;const n=Date.now();n-M>=3e3&&(M=n,window.ReactNativeWebView.postMessage(JSON.stringify({event:"selection-change"})))}),!1)},Ht=(e,n,i,r,o,s,a,l)=>{var A;let g=n.contentWindow||(null===(A=n.contentDocument)||void 0===A?void 0:A.defaultView),d=l.getDocument(),h=0,u=0,f=0,p=0;let m=Math.floor(i.clientWidth/12),B=m%2==0?m:m-1,w=null,C=!1,y=0;e.addEventListener("touchend",(function(n){var A,m;return c(this,void 0,void 0,(function*(){window.isSwiping=!1,window.isTouchNavigation=!0,w&&clearTimeout(w),w=setTimeout((()=>{window.isTouchNavigation=!1,w=null}),4e3);let c=(new Date).getTime();if(c-p<=300)return void n.preventDefault();p=c;const y=n.changedTouches[0],I=Date.now(),b=y.screenX,v=y.screenY,x=I-h,Q=b-u,D=v-f;if(C&&"mimical"===o&&"scroll"!==r)return C=!1,l.mouseUpHandler(n),bwindow.innerWidth/4*1&&b-u>0&&(l.prev(),C=!1),void setTimeout((()=>{let e=document.getElementById("book");e&&(e.style.display="none")}),400);if(C&&"sliding"===o&&"scroll"!==r){let Y="PDF"===s?d:e;if(window.scrollAnimationId&&cancelAnimationFrame(window.scrollAnimationId),Math.abs(Y.body.scrollWidth-Y.body.scrollLeft-i.clientWidth)<10)return E&&clearTimeout(E),void(E=setTimeout((()=>{l.next(),C=!1}),300));if(0===Y.body.scrollLeft)return E&&clearTimeout(E),void(E=setTimeout((()=>{l.prev(),C=!1}),300));Y.body.style.transform="";let L,T=i.clientWidth+B,R=Y.body.scrollLeft;const H=Math.round(R/T),G=Math.abs(Q)/window.innerWidth,O=.1;L=Q>0&&G>O?(H-1)*T:Q<0&&G>O?(H+1)*T:H*T,L=Math.max(0,Math.min(L,Y.body.scrollWidth-T)),Y.body.scrollWidth-L1-Math.pow(1-e,3);function z(e){const t=e-U;if(t>=P)return Y.body.scrollLeft=L,Y.body.style.willChange="auto",l.record(),void(C=!1);const n=K(t/P),i=N+W*n;Y.body.scrollLeft=i,window.scrollAnimationId=requestAnimationFrame(z)}return void(window.scrollAnimationId=requestAnimationFrame(z))}const S=g.getSelection().toString().trim();if(S){var k=g.getSelection().getRangeAt(0).getBoundingClientRect(),M=l.getPageSize(),F={top:k.top-i.scrollTop,left:k.left,width:k.width,height:k.height,screenWidth:window.innerWidth,screenHeight:window.innerHeight,sectionHeight:M.sectionHeight,sectionWidth:M.sectionWidth,gap:M.gap,scale:window.visualViewport.scale,offsetLeft:Mt(),offsetTop:Ft()};t.init();let q=null;if("PDF"===s){let j=n.target.ownerDocument,J=null===(A=null==j?void 0:j.defaultView)||void 0===A?void 0:A.frameElement,V=(null==J?void 0:J.getAttribute("id"))||"",X=V?parseInt(V.split("-").reverse()[0]):0;F.chapterDocIndex=X,q=yield l.getHightlightCoords(X);let Z=J.parentElement;Z&&(F.top=F.top+parseFloat(getComputedStyle(Z).top))}else q=yield l.getHightlightCoords();window.ReactNativeWebView.postMessage(JSON.stringify({event:"select-text",selectedText:S,position:F,range:q}))}else{if(x>500){const _=n.target;if(!_)return;if(Lt(_))return;if("IMG"===_.tagName||"image"===_.tagName){const $=_.src||_.getAttribute("xlink:href");return void($.startsWith("blob:")&&kt($).then((e=>{window.ReactNativeWebView.postMessage(JSON.stringify({event:"view-image",imgSrc:e}))})))}}if(x<500&&Math.abs(Q)<30&&Math.abs(D)<30){const ee=document.documentElement.clientWidth,te=document.documentElement.clientHeight;let ne=Math.min(Math.max(b,0),ee),ie=Math.min(Math.max(v,0),te);if("PDF"===s&&"double"===r){let ae=n.target.ownerDocument,le=null===(m=null==ae?void 0:ae.defaultView)||void 0===m?void 0:m.frameElement,Ae=(null==le?void 0:le.getAttribute("id"))||"";(Ae?parseInt(Ae.split("-").reverse()[0]):0)%2==1&&(ne+=ee/2)}const re=ee/3,oe=te/3;let se=Tt(Math.min(Math.floor(ne/re),2),Math.min(Math.floor(ie/oe),2),a);window.ReactNativeWebView.postMessage(JSON.stringify({event:se}))}else(Math.abs(Q)>=30||Math.abs(D)>=30)&&(window.ReactNativeWebView.postMessage(JSON.stringify({event:"swipe"})),"scroll"===r&&Math.abs(i.scrollHeight-i.scrollTop-i.clientHeight)<10&&window.ReactNativeWebView.postMessage(JSON.stringify({event:"scroll-bottom"})),"scroll"===r&&0===i.scrollTop&&window.ReactNativeWebView.postMessage(JSON.stringify({event:"scroll-top"})))}}))}),{passive:!1}),e.addEventListener("touchstart",(function(e){const t=e.target;if(!t)return;if(Lt(t))return;const n=e.touches[0];h=Date.now(),u=n.screenX,f=n.screenY}),{passive:!1}),e.addEventListener("touchmove",(function(t){const n=g.getSelection().toString().trim();if(!C&&Math.abs(t.touches[0].screenX-u)<=10||n)return;if(window.visualViewport.scale>1&&"PDF"===s)return;"scroll"!==r&&t.preventDefault();const i=t.touches[0],a=i.screenX,A=i.screenY,c=a-u,h=A-f;if(!C&&Math.abs(c)>Math.abs(h)&&Math.abs(c)>10){if(C=!0,y=a,"mimical"===o&&"scroll"!==r){window.isSwiping=!0;let e=document.getElementById("book");e&&(e.style.display="block",l.mouseDownHandler(t))}}else if(C&&"mimical"===o&&"scroll"!==r&&l.mouseMoveHandler(t),C&&"sliding"===o&&"scroll"!==r){window.isSwiping=!0;let t="PDF"===s?d:e;const n=a-y,i=t.body.scrollLeft;t.body.scrollLeft=i-n,y=a,requestAnimationFrame((()=>{}))}}),{passive:!1}),e.addEventListener("click",(e=>{Yt(e,0,l)}),!0);let E=null;e.body.oncontextmenu=function(e){return e.preventDefault(),e.stopPropagation(),!1};let I=0;e.addEventListener("selectionchange",(e=>{if(!g.getSelection().toString().trim())return;const t=Date.now();t-I>=3e3&&(I=t,window.ReactNativeWebView.postMessage(JSON.stringify({event:"selection-change"})))}),{passive:!1})};class Gt extends at{constructor(e){super(),this.tranformText=()=>{let e=this.getDocument();e&&("Simplified To Traditional"===this.convertChinese?e.querySelectorAll("h1,h2,h3,h4,h5,h6,p,div,ul,dl,ol,pre,li,dt,dd,blockquote,address,kookitmarker").forEach((e=>{e.innerHTML=e.innerHTML.split("").map((e=>Se(e))).join("")})):"Traditional To Simplified"===this.convertChinese&&e.querySelectorAll("h1,h2,h3,h4,h5,h6,p,div,ul,dl,ol,pre,li,dt,dd,blockquote,address,kookitmarker").forEach((e=>{e.innerHTML=e.innerHTML.split("").map((e=>ke(e))).join("")})),"yes"===this.isIndent&&e.querySelectorAll("h1,h2,h3,h4,h5,h6,p,div,ul,dl,ol,pre,li,dt,dd,blockquote,address").forEach((e=>{for(let t of e.childNodes){if(t.nodeType===Node.TEXT_NODE){const e=t.nodeValue||"",n=e.match(/^(\s+)/);n&&(t.nodeValue=e.replace(/^\s+/,"".repeat(n[0].length)));break}if(t.nodeType===Node.ELEMENT_NODE&&"img"===t.tagName.toLowerCase()){e.setAttribute("style",(e.getAttribute("style")||"")+"text-indent: 0em !important;");break}}})))},this.addPageAnimation=e=>{if("mimical"===this.animation){let t=this.getProgress();if(!t)return;const n=It(t.totalPage,this.isDarkMode,e);n&&(this.flipToNextPage=n.flipToNextPage,this.flipToPrevPage=n.flipToPrevPage,this.mouseDownHandler=n.mouseDownHandler,this.mouseUpHandler=n.mouseUpHandler,this.mouseMoveHandler=n.mouseMoveHandler)}},this.readerMode=e.readerMode,this.animation=e.animation,this.format=e.format,this.convertChinese=e.convertChinese,this.isIndent=e.isIndent,this.isDarkMode=e.isDarkMode,this.isMobile=e.isMobile,this.chapterList=[],this.chapterDocList=[],this.flattenChapters=[],this.book="",this.element="",this.tempLocation={},this.flipToNextPage=()=>{},this.flipToPrevPage=()=>{},this.mouseDownHandler=()=>{},this.mouseUpHandler=()=>{},this.mouseMoveHandler=e=>{},this.touchEventSet={},"yes"===this.isMobile&&(console.log=function(...e){window.ReactNativeWebView.postMessage(e.map((e=>String(e))).join(", "))},console.info=function(...e){window.ReactNativeWebView.postMessage(e.map((e=>String(e))).join(", "))},console.error=function(...e){window.ReactNativeWebView.postMessage(e.map((e=>String(e))).join(", "))})}getPageSize(){let e="double"===this.readerMode?2:1,t=Math.floor(this.element.clientWidth/12),n=t%2==0?t:t-1,i=this.getIframe();if(!i)return;let r=null==i?void 0:i.getBoundingClientRect().height;return{width:this.element.clientWidth,height:this.element.clientHeight,left:this.element.offsetLeft,top:this.element.offsetTop,scrollTop:this.element.scrollTop,scrollLeft:this.element.scrollWidth/2-this.element.clientWidth/2,sectionWidth:(this.element.clientWidth-n)/e,sectionHeight:r,gap:n}}scrollToText(e){let t=this.getDocument();if(!t)return;let n=Ne(t.body).filter((e=>!ot(e))).filter((t=>(t.textContent||"").indexOf(e)>-1));if(n.length>0){let e=n[0],i=e?g(e.offsetLeft)-g(e.marginLeft||parseFloat(getComputedStyle(e).marginLeft)):0,r=e?g(e.offsetTop)-g(e.marginTop||parseFloat(getComputedStyle(e).marginTop)):0;"scroll"!==this.readerMode?t.body.scrollTo(i,0):this.element.scrollTo(0,r)}}goToPage(e){return c(this,void 0,void 0,(function*(){if("scroll"===this.readerMode){e<0&&(e=1);let t=(e-1)*(this.element.clientHeight-50);this.element.scrollTo(0,t)}else{let t=this.getDocument();if(!t)return;let n=Math.floor(this.element.clientWidth/12),i=n%2==0?n:n-1;const r=this.element.clientWidth+i;"double"===this.readerMode?e=(e%2==0?e-2:e-1)/2:e-=1,e<0&&(e=0);const o=e*r;t.body.scrollTo({top:0,left:o,behavior:"sliding"===this.animation&&"yes"!==this.isMobile?"smooth":"auto"})}yield this.record()}))}resolveChapter(e){let t=e;t=t.replace(/^#/,"").replace(/^\.\//,"").replace(/^\//,""),t.startsWith("../")&&(t=t.replace(/^\.\.\//,""));let n=-1;0===this.flattenChapters.length&&this.flatChapter(this.chapterList);for(let e=0;e-1){let t=this.flattenChapters[n];return e.startsWith("kindle")?this.chapterDocList[t.index].href===e?t:null:t}for(let e=0;e-1){let e=this.chapterDocList[n];return{label:e.label||"",href:e.href,index:n}}for(let e=0;e-1?{label:this.chapterDocList[n].label||"",href:this.chapterDocList[n].href,index:n}:null}flatChapter(e){let t=[];for(let n=0;n0?(t.push(e[n]),t=t.concat(this.flatChapter(e[n].subitems))):t.push(e[n]);return this.flattenChapters=t,t}getChapter(){return this.chapterList}getChapterDoc(){return this.chapterDocList}goToPercentage(e){return c(this,void 0,void 0,(function*(){if(0===this.flattenChapters.length&&this.flatChapter(this.chapterList),this.flattenChapters.length>0){let t=1===e?this.flattenChapters.length-1:Math.floor(this.flattenChapters.length*e);yield this.goToChapter(this.flattenChapters[t].index.toString(),this.flattenChapters[t].href,this.flattenChapters[t].label)}}))}goToChapterIndex(e){return c(this,void 0,void 0,(function*(){0===this.flattenChapters.length&&this.flatChapter(this.chapterList),this.flattenChapters.length>0&&(yield this.goToChapter(this.flattenChapters[e].index,this.flattenChapters[e].href,this.flattenChapters[e].label))}))}goToChapterDocIndex(e){return c(this,void 0,void 0,(function*(){this.chapterDocList.length>0&&(yield this.goToChapter(e,this.chapterDocList[e].href,this.chapterDocList[e].label))}))}goToChapter(e,t,n){return c(this,void 0,void 0,(function*(){let i=this.getDocument(),r=this.getIframe();if(i&&r){if(yield je(parseInt(e),n,t,this.chapterDocList,this.element,this.readerMode,this.format,this.tempLocation,i,r),t&&t.startsWith("kindle")){let e=yield this.book.resolveHref(t);if(e.anchor){let t=e.anchor(i);t&&(yield this.goToNode(t))}}t&&t.indexOf("#")>-1&&(yield Xe(this.element,this.readerMode,"","",t,"",i)),yield this.record(),this.trigger("rendered")}}))}goToPosition(e){return c(this,void 0,void 0,(function*(){let n=this.getDocument(),i=this.getIframe();if(!n||!i)return;let r=JSON.parse(e);this.tempLocation={text:r.text,chapterTitle:r.chapterTitle,chapterDocIndex:r.chapterDocIndex,chapterHref:r.chapterHref,count:r.count,page:r.page,percentage:r.percentage};let{text:o,chapterTitle:s,chapterDocIndex:a,chapterHref:l,count:A,page:c,cfi:g}=r;if(yield je(parseInt(a),s,l,this.chapterDocList,this.element,this.readerMode,this.format,this.tempLocation,n,i),g){const e=new ut(g,{});let t=this.getDocument();if(!t)return;const{node:n,offset:i}=e.resolve(t,{});if(n){let e=null,t=n;for(;t;){const n=t;if(n.tagName&&"h1,h2,h3,h4,h5,h6,p,div,ul,dl,ol,pre,li,dt,dd,blockquote,address,kookitmarker".indexOf(n.tagName.toLowerCase())>-1){e=n;break}t=t.parentNode}e&&(A="ignore",o=e.textContent)}}yield Xe(this.element,this.readerMode,o,A,"",c,n),t.init(),yield this.record(),this.trigger("rendered")}))}getDocument(){let e=document.getElementById("page-area");if(!e)return null;let t=e.getElementsByTagName("iframe")[0];if(!t)return null;let n=t.contentDocument;return n||null}getIframe(){let e=document.getElementById("page-area");if(!e)return null;let t=e.getElementsByTagName("iframe")[0];return t||null}goToNode(e){return c(this,void 0,void 0,(function*(){let t=this.getDocument();if(!t)return;if(!e)return;let n=Ze(e,this.element,this.readerMode),i=n?g(n.offsetLeft)-g(n.marginLeft||parseFloat(getComputedStyle(n).marginLeft)):0,r=n?g(n.offsetTop)-g(n.marginTop||parseFloat(getComputedStyle(n).marginTop)):0;"scroll"!==this.readerMode?t.body.scrollTo(i,0):this.element.scrollTo(0,r),yield this.record(),this.trigger("rendered")}))}removeContent(){this.element.innerHTML=""}prev(){return c(this,void 0,void 0,(function*(){let e=this.getDocument(),t=this.getIframe();if(e&&t){if("scroll"===this.readerMode&&0===g(this.element.scrollTop)||"scroll"!==this.readerMode&&0===g(e.body.scrollLeft)){if("0"===this.tempLocation.chapterDocIndex)return;"mimical"===this.animation&&"scroll"!==this.readerMode&&"yes"===this.isMobile&&(yield new Promise((e=>setTimeout(e,500)))),yield Ke(this.element,this.flatChapter(this.chapterList),this.chapterDocList,this.readerMode,this.format,this.tempLocation,e,t),parseInt(this.tempLocation.chapterDocIndex||"-1")>-1&&("scroll"===this.readerMode?this.element.scrollTo(0,e.body.scrollHeight):e.body.scrollTo(e.body.scrollWidth,0)),this.trigger("rendered")}else"scroll"===this.readerMode?this.element.scrollBy({left:0,top:-(this.element.clientHeight-50),behavior:"smooth"}):yield We(this.element,this.animation,1,e,this.flipToNextPage,this.flipToPrevPage,this.isMobile);yield this.record()}}))}next(){return c(this,void 0,void 0,(function*(){let e=this.getDocument(),t=this.getIframe();if(e&&t){if(Math.abs(e.body.scrollWidth-g(e.body.scrollLeft)-e.body.clientWidth)<50&&"scroll"!==this.readerMode||Math.abs(this.element.scrollHeight-g(this.element.scrollTop)-this.element.clientHeight)<20&&"scroll"===this.readerMode)return"mimical"===this.animation&&"scroll"!==this.readerMode&&"yes"===this.isMobile&&(yield new Promise((e=>setTimeout(e,500)))),yield nt(this.element,this.flatChapter(this.chapterList),this.chapterDocList,this.readerMode,this.format,this.tempLocation,e,t),void this.trigger("rendered");"scroll"===this.readerMode?Math.abs(this.element.scrollHeight-g(this.element.scrollTop)-this.element.clientHeight)-(this.element.clientHeight-50)<20&&Math.abs(this.element.scrollHeight-g(this.element.scrollTop)-this.element.clientHeight)>20?this.element.scrollTo({left:0,top:this.element.scrollHeight-20,behavior:"smooth"}):this.element.scrollBy({left:0,top:this.element.clientHeight-50,behavior:"smooth"}):yield We(this.element,this.animation,-1,e,this.flipToNextPage,this.flipToPrevPage,this.isMobile),yield this.record()}}))}prevChapter(){return c(this,void 0,void 0,(function*(){let e=this.getDocument(),t=this.getIframe();e&&t&&(yield Ke(this.element,this.flatChapter(this.chapterList),this.chapterDocList,this.readerMode,this.format,this.tempLocation,e,t),yield this.record(),this.trigger("rendered"))}))}nextChapter(){return c(this,void 0,void 0,(function*(){let e=this.getDocument(),t=this.getIframe();e&&t&&(yield nt(this.element,this.flatChapter(this.chapterList),this.chapterDocList,this.readerMode,this.format,this.tempLocation,e,t),yield this.record(),this.trigger("rendered"))}))}visibleText(){return c(this,void 0,void 0,(function*(){let e=this.getDocument();return e?it(this.element,this.readerMode,e):""}))}audioText(){return c(this,void 0,void 0,(function*(){let e=this.getDocument();return e?((e,t,n)=>{let i=Ne(n.body).filter((e=>!ot(e))),r=i.filter((e=>{if(!(e.textContent||"").trim())return!1;let t=e.parentElement;for(;t&&t!==n.body;){if(i.includes(t))return!1;t=t.parentElement}return!0})).filter((e=>{var t;return"img"!==e.textContent&&!(null===(t=e.textContent)||void 0===t?void 0:t.startsWith("img"))})).map((e=>e.textContent)),o=0,s=it(e,t,n);if(s&&s.length>0){let e=s[0];o=r.indexOf(e)}return r.slice(o)})(this.element,this.readerMode,e):""}))}chapterText(){return c(this,void 0,void 0,(function*(){let e=this.getDocument();return e&&e.body.textContent||""}))}autoScroll(e,t){if(!this.getDocument())return;if(this.scrollTimer&&(cancelAnimationFrame(this.scrollTimer),this.scrollTimer=null),this.recordTimer&&(clearInterval(this.recordTimer),this.recordTimer=null),"no"===t||"scroll"!==this.readerMode)return;let n=0,i=0;const r=()=>{if(n+=e,i++,Math.abs(e)<1){if((Math.abs(n)>=.5||i%Math.max(1,Math.floor(30/Math.abs(e)))==0)&&Math.abs(n)>=.1){const e=Math.round(10*n)/10;this.element.scrollBy({left:0,top:e,behavior:"auto"}),n=0,i=0}}else if(Math.abs(n)>=1){const e=Math.floor(n);this.element.scrollBy({left:0,top:e,behavior:"auto"}),n-=e}this.scrollTimer=requestAnimationFrame(r)};this.scrollTimer=requestAnimationFrame(r),this.recordTimer=setInterval((()=>{"scroll"===this.readerMode&&Math.abs(this.element.scrollHeight-this.element.scrollTop-this.element.clientHeight)<10&&this.nextChapter(),this.record()}),3e3)}autoScrollIOS(e,t){let n=this.getDocument();if(!n)return;if(this.scrollTimer&&(clearInterval(this.scrollTimer),this.scrollTimer=null),this.recordTimer&&(clearInterval(this.recordTimer),this.recordTimer=null),"no"===t||"scroll"!==this.readerMode)return;let i=0,r=this.element.scrollTop;this.scrollTimer=setInterval((()=>{i+=e,n&&(n.body.style.transform=`translateY(-${i}px)`,Math.abs(i)>=50&&(n.body.style.transform="translateY(0px)",r+=i,this.element.scrollTo({left:0,top:r,behavior:"auto"}),i=0))}),30),this.recordTimer=setInterval((()=>{"scroll"===this.readerMode&&Math.abs(this.element.scrollHeight-this.element.scrollTop-this.element.clientHeight)<10&&this.nextChapter(),this.record()}),3e3)}highlightSearchNode(e,t){let n=this.getDocument();n&&rt(e,t,n)}highlightAudioNode(e,t){let n=this.getDocument();n&&((e,t,n,i,r)=>{if(n.querySelectorAll('span[data-highlight="true"]').forEach((e=>{const t=e.parentNode;t&&t.replaceChild(n.createTextNode(e.textContent||""),e)})),!e.trim())return;let o=Ne(n.body).filter((e=>st(i,e,r)&&(e.textContent||"").trim())).filter((t=>{const n=t.textContent||"";return n.trim()&&n.indexOf(e)>-1}));if(o.length>0){const i=i=>{var r;if(i.nodeType===Node.TEXT_NODE){const o=i.textContent||"",s=o.indexOf(e);if(s>-1){const a=o.substring(0,s),l=o.substring(s+e.length),A=n.createElement("span");A.setAttribute("style",t),A.setAttribute("data-highlight","true"),A.textContent=e;const c=n.createDocumentFragment();return a&&c.appendChild(n.createTextNode(a)),c.appendChild(A),l&&c.appendChild(n.createTextNode(l)),null===(r=i.parentNode)||void 0===r||r.replaceChild(c,i),!0}}return!1},r=e=>{if(i(e))return!0;const t=Array.from(e.childNodes);for(const e of t)if(r(e))return!0;return!1};r(o[0])}})(e,t,n,this.element,this.readerMode)}doSearch(e){return c(this,void 0,void 0,(function*(){return"PDF"===this.format?yield((e,t)=>c(void 0,void 0,void 0,(function*(){let n=[];for(let i=0;i{const n=e.transform[5];let i=null;for(const[t,r]of o.entries()){const o=r[0].transform[5];if(Math.abs(n-o){r.sort(((e,t)=>e.transform[4]-t.transform[4]));const s=r.map((e=>e.str)).join("");s.indexOf(e)>-1&&n.push({excerpt:s,cfi:JSON.stringify({text:s+"#"+i+"#"+o,chapterTitle:t[i].label,chapterDocIndex:i,chapterHref:t[i].href,count:"search",percentage:i/t.length,keyword:e})})}))}return n})))(e,this.chapterDocList):yield((e,t)=>c(void 0,void 0,void 0,(function*(){var n;let i=[];for(let r=0;r!ot(e)));for(let o=0;o-1&&i.push({excerpt:(null===(n=s[o].textContent)||void 0===n?void 0:n.substring(a-100,a+100))||"",cfi:JSON.stringify({text:s[o].textContent,chapterTitle:t[r].label,chapterDocIndex:r,chapterHref:t[r].href,count:"search",percentage:r/t.length,keyword:e})})}}return i})))(e,this.chapterDocList)}))}getProgress(){let e=this.getDocument();if(e)return m(this.readerMode,e,this.element)}record(){return c(this,void 0,void 0,(function*(){""!==this.animation&&(yield new Promise((e=>setTimeout(e,1e3))));let e=this.getDocument();e&&(yield $e(this.element,this.readerMode,this.flatChapter(this.chapterList),this.chapterDocList,this.tempLocation,e,null),this.trigger("page-changed"))}))}getPosition(){return this.tempLocation}getNotePosition(){return c(this,void 0,void 0,(function*(){let e=this.getDocument();if(!e)return;let t=E(e);return t?(yield $e(this.element,this.readerMode,this.flatChapter(this.chapterList),this.chapterDocList,this.tempLocation,e,t),this.tempLocation):void 0}))}setStyle(e){let t=this.getDocument();if(t){var n=document.createElement("style");n.innerHTML=e,t.head.appendChild(n)}}getHightlightCoords(){return c(this,void 0,void 0,(function*(){let e=this.getDocument(),n=this.getIframe();if(e&&n)return t.getSelection(n).saveCharacterRanges(e.body)[0]}))}renderHighlighters(e,t){return c(this,void 0,void 0,(function*(){e=e.reverse();let n=this.getDocument(),i=this.getIframe();if(n&&i){yt(n);for(let r=0;rsetTimeout(e,5))),wt(JSON.parse(o.range),o.color,o.key,t,n,i)}catch(e){return void console.error(e,"Exception has been caught when restore character ranges.")}}}}))}removeOneNote(e,t){let n=this.getDocument();if(!n)return;const i=n.querySelectorAll(".kookit-note");for(let t=0;t{let t=e.contentDocument;t&&n.push(t)})),[e,...n]}getAllIframes(){let e=this.getIframe();if(!e)return[];if("PDF"!==this.format)return[e];let t=this.getDocument();if(!t)return[];let n=t.querySelectorAll("iframe"),i=[];return n.forEach((e=>{let t=e;i.push(t)})),[e,...i]}addTouchEvent(e,t){let n=this.getAllDocuments(),i=this.getAllIframes();for(let r=0;r-1)){let i=this.resolveChapter(e);if(i)return yield this.goToChapter(i.index,i.href,i.label),{handled:!0};let r=yield this.book.resolveHref(e),o=this.tempLocation.chapterDocIndex;if(r.index===parseInt(o)){let e=r.anchor(n);if(!e)return{handled:!1};let t=e.getAttribute("id")||"";r=Object.assign(Object.assign({},r),{id:t})}if(!r.anchor)return{handled:!1};let s=this.getPosition();if(r.index!==parseInt(s.chapterDocIndex)){yield this.goToChapterDocIndex(r.index);let i=r.anchor(n);return yield this.goToNode(i),ze(t.target)?{handled:!0,isShowMenu:!0,isJump:!0,href:e,node:i}:{handled:!0}}{let t=r.anchor(n);t&&(e="#"+t.getAttribute("id"))}}if(e&&this.resolveChapter(e)){let t=this.resolveChapter(e);return t?(yield this.goToChapter(t.index,t.href,t.label),{handled:!0}):{handled:!1}}if(e&&this.book.resolveHref&&this.book.resolveHref(e)){let t=yield this.book.resolveHref(e);return t?(yield this.goToChapter(t.index,t.href,t.label),{handled:!0}):{handled:!1}}if(e&&e.indexOf("#")>-1){let i=e.split("#").reverse()[0],r=n.body.querySelector("#"+CSS.escape(i));t.target.getBoundingClientRect();let o=!1;if(!r){if(0!==e.indexOf("#")){for(;e.startsWith(".");)e=e.substring(1);let t=this.resolveChapter(e.split("#")[0]);if(!t)return{handled:!1};yield this.goToChapter(t.index,t.href,t.label)}if(r=n.body.querySelector("#"+CSS.escape(i)),!r)return{handled:!1};o=!0,yield this.goToNode(r)}return ze(t.target)?{handled:!0,isShowMenu:!0,isJump:o,href:e,node:r}:{handled:!0}}return!e||-1!==e.indexOf("../")||0!==e.indexOf("http")&&0!==e.indexOf("mailto")||-1!==e.indexOf("OEBPF")||-1!==e.indexOf("OEBPS")||-1!==e.indexOf("footnote")||-1!==e.indexOf("blob")||-1!==e.indexOf("data:application")?{handled:!1}:{handled:!0,href:e,external:!0}}))}getFootnoteContent(e){return c(this,void 0,void 0,(function*(){if(ze(e)||!e.textContent.trim()){let t=e.nextSibling,n=e.textContent;for(;t&&(t.tagName!==e.tagName||!n.trim());)n+=t.textContent,t=t.nextSibling;n.trim()&&n.trim().length<=3e3&&((e=document.createElement("div")).innerHTML=n)}let t=e.innerHTML;return e.textContent.trim()?e.textContent.trim()&&e.textContent.trim().length>3e3?{handled:!1}:(t=yield(n=t,c(void 0,void 0,void 0,(function*(){const e=(new DOMParser).parseFromString(n,"text/html"),t=Array.from(e.getElementsByTagName("img"));for(const e of t)if(e.src&&e.src.startsWith("blob:"))try{const t=yield qe(e.src);e.src=t,e.style.maxWidth="100%"}catch(e){console.error("Error converting blob to data URL:",e)}return e.body.innerHTML}))),{handled:!0,content:t}):{handled:!1};var n}))}}const Ot={svg:"image/svg+xml",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",zip:"application/zip",rar:"application/x-rar-compressed","7z":"application/x-7z-compressed",tar:"application/x-tar",html:"text/html",htm:"text/html",xml:"text/xml",xhtml:"application/xhtml+xml",css:"text/css"},Ut={"image/svg+xml":"svg","image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp","application/zip":"zip","application/x-rar-compressed":"rar","application/x-7z-compressed":"7z","application/x-tar":"tar","text/html":"html","text/xml":"xml","application/xhtml+xml":"xhtml","text/css":"css"},Nt=t=>c(void 0,void 0,void 0,(function*(){let i=yield n.loadAsync(t);var r=i.file("toc.json");let o=[];r&&(o=JSON.parse(yield r.async("string")));var s=i.file("sections.json");let a=[];s&&(a=JSON.parse(yield s.async("string")));const l={getCover:()=>""};return l.sections=a.map(((e,t)=>({id:e.href,load:()=>(e=>c(void 0,void 0,void 0,(function*(){var t=i.file("chapters/"+e+".html");let n="";return t&&(n=yield t.async("string")),URL.createObjectURL(new Blob([n],{type:"text/html"}))})))(t),unload:()=>{},loadAsset:e=>(e=>c(void 0,void 0,void 0,(function*(){var t=i.file(e);let n;return t&&(n=yield t.async("arraybuffer")),URL.createObjectURL(new Blob([n],{type:Ot[e.split(".").reverse()[0]]}))})))(e)}))),l.toc=o.map((e=>({label:e.label,href:e.href,subitems:e.subitems}))),l.rendition={layout:"pre-paginated"},l.resolveHref=t=>({index:e.findLastIndex(a,{href:t})}),l.splitTOCHref=e=>[e,null],l.getTOCFragment=e=>e.documentElement,l})),Wt=e=>new Promise(((t,i)=>c(void 0,void 0,void 0,(function*(){let i=new b(e),r=yield i.getChapter(e.toc),o=yield i.getChapterDoc(),s=r,a=o.map((e=>({href:e.href,label:e.label}))),l=yield Promise.all(o.map((e=>c(void 0,void 0,void 0,(function*(){let t="";if(e.text&&e.text.load){let n=yield fetch(yield e.text.load()).then((e=>e.blob()));t=yield n.text()}return t}))))),A=new n;A.file("toc.json",JSON.stringify(s)),A.file("sections.json",JSON.stringify(a));let g=[];for(let e=0;ee.blob()));i.file(t+"."+Ut[o.type],o);let s="imgs/"+e+"/"+t+"."+Ut[o.type];n[t].src=s,n[t].getAttribute("xlink:href")&&n[t].setAttribute("xlink:href",s)}catch(e){console.error(e)}}let i=Array.from(t.getElementsByTagName("link"));for(let t=0;te.blob()));r.file(t+"."+Ut[i.type],i),n.href="css/"+e+"/"+t+"."+Ut[i.type]}catch(e){console.error(e)}}g.push(t.documentElement.innerHTML)}let d=A.folder("chapters");if(d){for(let e=0;ec(void 0,void 0,void 0,(function*(){t(yield new Response(e).arrayBuffer())})))).catch((e=>{t("err")}))}})))),Pt=4294967295,Kt=65535,zt=134695760,qt=zt,jt=33639248,Jt=101075792,Vt=22,Xt=void 0,Zt="undefined",_t="function";let $t=2;try{typeof navigator!=Zt&&navigator.hardwareConcurrency&&($t=navigator.hardwareConcurrency)}catch(e){}const en={workerURI:"./core/web-worker.js",wasmURI:"./core/streams/zlib/zlib-streams.wasm",chunkSize:65536,maxWorkers:$t,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,CompressionStream:typeof CompressionStream!=Zt&&CompressionStream,DecompressionStream:typeof DecompressionStream!=Zt&&DecompressionStream},tn=Object.assign({},en);function nn(e){const{baseURI:t,chunkSize:n,maxWorkers:i,terminateWorkerTimeout:r,useCompressionStream:o,useWebWorkers:s,CompressionStream:a,DecompressionStream:l,CompressionStreamZlib:A,DecompressionStreamZlib:c,workerURI:g,wasmURI:d}=e;rn("baseURI",t),rn("wasmURI",d),rn("workerURI",g),rn("chunkSize",n),rn("maxWorkers",i),rn("terminateWorkerTimeout",r),rn("useCompressionStream",o),rn("useWebWorkers",s),rn("CompressionStream",a),rn("DecompressionStream",l),rn("CompressionStreamZlib",A),rn("DecompressionStreamZlib",c)}function rn(e,t){t!==Xt&&(tn[e]=t)}const on="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";let sn,an,ln,An;function cn(e,t,n={}){const i="number"==typeof n.level?n.level:-1,r="number"==typeof n.outBuffer?n.outBuffer:65536,o="number"==typeof n.inBufferSize?n.inBufferSize:65536;return new TransformStream({start(){let n;if(this.out=an(r),this.in=an(o),this.inBufferSize=o,this._scratch=new Uint8Array(r),e?(this._process=sn.deflate_process,this._last_consumed=sn.deflate_last_consumed,this._end=sn.deflate_end,this.streamHandle=sn.deflate_new(),n="gzip"===t?sn.deflate_init_gzip(this.streamHandle,i):"deflate-raw"===t?sn.deflate_init_raw(this.streamHandle,i):sn.deflate_init(this.streamHandle,i)):"deflate64-raw"===t?(this._process=sn.inflate9_process,this._last_consumed=sn.inflate9_last_consumed,this._end=sn.inflate9_end,this.streamHandle=sn.inflate9_new(),n=sn.inflate9_init_raw(this.streamHandle)):(this._process=sn.inflate_process,this._last_consumed=sn.inflate_last_consumed,this._end=sn.inflate_end,this.streamHandle=sn.inflate_new(),n="deflate-raw"===t?sn.inflate_init_raw(this.streamHandle):"gzip"===t?sn.inflate_init_gzip(this.streamHandle):sn.inflate_init(this.streamHandle)),0!==n)throw new Error("init failed:"+n)},transform(t,n){try{const i=t,o=new Uint8Array(An.buffer),s=this._process,a=this._last_consumed,l=this.out,A=this._scratch;let c=0;for(;c>24&255;if(l&&(s.set(n.subarray(o,o+l),0),t.enqueue(s.slice(0,l))),1===A||0===l)break}}catch(e){t.error(e)}finally{if(this._end&&this.streamHandle){const e=this._end(this.streamHandle);0!==e&&t.error(new Error("end error:"+e))}this.in&&ln&&ln(this.in),this.out&&ln&&ln(this.out)}}})}let gn=!1;async function dn(e,{baseURI:t}){if(!gn){let i,r;try{try{r=new URL(e,t)}catch(e){}const n=await fetch(r);i=await n.arrayBuffer()}catch(t){if(!e.startsWith("data:application/wasm;base64,"))throw t;i=function(e){const t=e.split(",")[1],n=atob(t),i=n.length,r=new Uint8Array(i);for(let e=0;eo||o===Xt&&!A.length&&l?i.close():this.chunkOffset+=t}});return n}}class mn extends pn{constructor(e){super(),Object.assign(this,{blob:e,size:e.size})}async readUint8Array(e,t){const n=this,i=e+t,r=e||it&&(o=o.slice(e,i)),new Uint8Array(o)}}class Bn extends fn{constructor(e){super();const t=new TransformStream,n=[];e&&n.push(["Content-Type",e]),Object.defineProperty(this,un,{get:()=>t.writable}),this.blob=new Response(t.readable,{headers:n}).blob()}getData(){return this.blob}}class wn extends Bn{constructor(e){super(e),Object.assign(this,{encoding:e,utf8:!e||"utf-8"==e.toLowerCase()})}async getData(){const{encoding:e,utf8:t}=this,n=await super.getData();if(n.text&&t)return n.text();{const t=new FileReader;return new Promise(((i,r)=>{Object.assign(t,{onload:({target:e})=>i(e.result),onerror:()=>r(t.error)}),t.readAsText(n,e)}))}}}class Cn extends pn{constructor(e){super(),this.readers=e}async init(){const e=this,{readers:t}=e;e.lastDiskNumber=0,e.lastDiskOffset=0,await Promise.all(t.map((async(n,i)=>{await n.init(),i!=t.length-1&&(e.lastDiskOffset+=n.size),e.size+=n.size}))),super.init()}async readUint8Array(e,t,n=0){const i=this,{readers:r}=this;let o,s=n;-1==s&&(s=r.length-1);let a=e;for(;r[s]&&a>=r[s].size;)a-=r[s].size,s++;const l=r[s];if(l){const r=l.size;if(a+t<=r)o=await vn(l,a,t);else{const s=r-a;o=new Uint8Array(t);const A=await vn(l,a,s);o.set(A,0);const c=await i.readUint8Array(e+s,t-s,n);o.set(c,s),A.length+c.length=s?(await a(t.subarray(0,s)),await l(),n.diskOffset+=i.size,n.diskNumber++,o=null,await this.write(t.subarray(s))):await a(t);else{const{value:s,done:a}=await e.next();if(a&&!s)throw new Error("Writer iterator completed too soon");i=s,i.size=0,i.maxSize&&(n.maxSize=i.maxSize),n.availableSize=n.maxSize,await bn(i),r=s.writable,o=r.getWriter(),await this.write(t)}},async close(){await o.ready,await l()}});async function a(e){const t=e.length;t&&(await o.ready,await o.write(e),i.size+=t,n.size+=t,n.availableSize-=t)}async function l(){await o.close()}Object.defineProperty(n,un,{get:()=>s})}}class En{constructor(e){return Array.isArray(e)&&(e=new Cn(e)),e instanceof ReadableStream&&(e={readable:e}),e}}class In{constructor(e){return e.writable===Xt&&typeof e.next==_t&&(e=new yn(e)),e instanceof WritableStream&&(e={writable:e}),e.size===Xt&&(e.size=0),e instanceof yn||Object.assign(e,{diskNumber:0,diskOffset:0,availableSize:1/0,maxSize:1/0}),e}}async function bn(e,t){if(!e.init||e.initialized)return Promise.resolve();await e.init(t)}function vn(e,t,n,i){return e.readUint8Array(t,n,i)}const xn=[];for(let e=0;e<256;e++){let t=e;for(let e=0;e<8;e++)1&t?t=t>>>1^3988292384:t>>>=1;xn[e]=t}class Qn{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let n=0,i=0|e.length;n>>8^xn[255&(t^e[n])];this.crc=t}get(){return~this.crc}}class Dn extends TransformStream{constructor(){let e;const t=new Qn;super({transform(e,n){t.append(e),n.enqueue(e)},flush(){const n=new Uint8Array(4);new DataView(n.buffer).setUint32(0,t.get()),e.value=n}}),e=this}}const Sn={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const n=e[e.length-1],i=Sn.getPartial(n);return 32===i?e.concat(t):Sn._shiftRight(t,i,0|n,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const n=e[t-1];return 32*(t-1)+Sn.getPartial(n)},clamp(e,t){if(32*e.length0&&t&&(e[n-1]=Sn.partial(t,e[n-1]&2147483648>>t-1,1)),e},partial:(e,t,n)=>32===e?t:(n?0|t:t<<32-e)+1099511627776*e,getPartial:e=>Math.round(e/1099511627776)||32,_shiftRight(e,t,n,i){for(void 0===i&&(i=[]);t>=32;t-=32)i.push(n),n=0;if(0===t)return i.concat(e);for(let r=0;r>>t),n=e[r]<<32-t;const r=e.length?e[e.length-1]:0,o=Sn.getPartial(r);return i.push(Sn.partial(t+o&31,t+o>32?n:i.pop(),1)),i}},kn={bytes:{fromBits(e){const t=Sn.bitLength(e)/8,n=new Uint8Array(t);let i;for(let r=0;r>>24,i<<=8;return n},toBits(e){const t=[];let n,i=0;for(n=0;n9007199254740991)throw new Error("Cannot hash more than 2^53 - 1 bits");const o=new Uint32Array(n);let s=0;for(let e=t.blockSize+i-(t.blockSize+i&t.blockSize-1);e<=r;e+=t.blockSize)t._block(o.subarray(16*s,16*(s+1))),s+=1;return n.splice(0,16*s),t}finalize(){const e=this;let t=e._buffer;const n=e._h;t=Sn.concat(t,[Sn.partial(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(Math.floor(e._length/4294967296)),t.push(0|e._length);t.length;)e._block(t.splice(0,16));return e.reset(),n}_f(e,t,n,i){return e<=19?t&n|~t&i:e<=39?t^n^i:e<=59?t&n|t&i|n&i:e<=79?t^n^i:void 0}_S(e,t){return t<>>32-e}_block(e){const t=this,n=t._h,i=Array(80);for(let t=0;t<16;t++)i[t]=e[t];let r=n[0],o=n[1],s=n[2],a=n[3],l=n[4];for(let e=0;e<=79;e++){e>=16&&(i[e]=t._S(1,i[e-3]^i[e-8]^i[e-14]^i[e-16]));const n=t._S(5,r)+t._f(e,o,s,a)+l+i[e]+t._key[Math.floor(e/20)]|0;l=a,a=s,s=t._S(30,o),o=r,r=n}n[0]=n[0]+r|0,n[1]=n[1]+o|0,n[2]=n[2]+s|0,n[3]=n[3]+a|0,n[4]=n[4]+l|0}}},Fn={aes:class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const n=t._tables[0][4],i=t._tables[1],r=e.length;let o,s,a,l=1;if(4!==r&&6!==r&&8!==r)throw new Error("invalid aes key size");for(t._key=[s=e.slice(0),a=[]],o=r;o<4*r+28;o++){let e=s[o-1];(o%r==0||8===r&&o%r==4)&&(e=n[e>>>24]<<24^n[e>>16&255]<<16^n[e>>8&255]<<8^n[255&e],o%r==0&&(e=e<<8^e>>>24^l<<24,l=l<<1^283*(l>>7))),s[o]=s[o-r]^e}for(let e=0;o;e++,o--){const t=s[3&e?o:o-4];a[e]=o<=4||e<4?t:i[0][n[t>>>24]]^i[1][n[t>>16&255]]^i[2][n[t>>8&255]]^i[3][n[255&t]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){const e=this._tables[0],t=this._tables[1],n=e[4],i=t[4],r=[],o=[];let s,a,l,A;for(let e=0;e<256;e++)o[(r[e]=e<<1^283*(e>>7))^e]=e;for(let c=s=0;!n[c];c^=a||1,s=o[s]||1){let o=s^s<<1^s<<2^s<<3^s<<4;o=o>>8^255&o^99,n[c]=o,i[o]=c,A=r[l=r[a=r[c]]];let g=16843009*A^65537*l^257*a^16843008*c,d=257*r[o]^16843008*o;for(let n=0;n<4;n++)e[n][c]=d=d<<24^d>>>8,t[n][o]=g=g<<24^g>>>8}for(let n=0;n<5;n++)e[n]=e[n].slice(0),t[n]=t[n].slice(0)}_crypt(e,t){if(4!==e.length)throw new Error("invalid aes block size");const n=this._key[t],i=n.length/4-2,r=[0,0,0,0],o=this._tables[t],s=o[0],a=o[1],l=o[2],A=o[3],c=o[4];let g,d,h,u=e[0]^n[0],f=e[t?3:1]^n[1],p=e[2]^n[2],m=e[t?1:3]^n[3],B=4;for(let e=0;e>>24]^a[f>>16&255]^l[p>>8&255]^A[255&m]^n[B],d=s[f>>>24]^a[p>>16&255]^l[m>>8&255]^A[255&u]^n[B+1],h=s[p>>>24]^a[m>>16&255]^l[u>>8&255]^A[255&f]^n[B+2],m=s[m>>>24]^a[u>>16&255]^l[f>>8&255]^A[255&p]^n[B+3],B+=4,u=g,f=d,p=h;for(let e=0;e<4;e++)r[t?3&-e:e]=c[u>>>24]<<24^c[f>>16&255]<<16^c[p>>8&255]<<8^c[255&m]^n[B++],g=u,u=f,f=p,p=m,m=g;return r}}},Yn={getRandomValues(e){const t=new Uint32Array(e.buffer),n=e=>{let t=987654321;const n=4294967295;return function(){t=36969*(65535&t)+(t>>16)&n;return(((t<<16)+(e=18e3*(65535&e)+(e>>16)&n)&n)/4294967296+.5)*(Math.random()>.5?1:-1)}};for(let i,r=0;r>24))e+=1<<24;else{let t=e>>16&255,n=e>>8&255,i=255&e;255===t?(t=0,255===n?(n=0,255===i?i=0:++i):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=i}return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,n){let i;if(!(i=t.length))return[];const r=Sn.bitLength(t);for(let r=0;rnew Tn.hmacSha1(kn.bytes.toBits(e)),pbkdf2(e,t,n,i){if(n=n||1e4,i<0||n<0)throw new Error("invalid params to pbkdf2");const r=1+(i>>5)<<2;let o,s,a,l,A;const c=new ArrayBuffer(r),g=new DataView(c);let d=0;const h=Sn;for(t=kn.bytes.toBits(t),A=1;d<(r||1);A++){for(o=s=e.encrypt(h.concat(t,[A])),a=1;ar&&(e=(new n).update(e).finalize());for(let t=0;tthis.resolveReady=e)),password:Ai(e,t),signed:n,strength:i-1,pending:new Uint8Array})},async transform(e,t){const n=this,{password:i,strength:o,resolveReady:s,ready:a}=n;i?(await async function(e,t,n,i){const r=await li(e,t,n,gi(i,0,qn[t])),o=gi(i,qn[t]);if(r[0]!=o[0]||r[1]!=o[1])throw new Error(Hn)}(n,o,i,gi(e,0,qn[o]+2)),e=gi(e,qn[o]+2),r?t.error(new Error(On)):s()):await a;const l=new Uint8Array(e.length-Jn-(e.length-Jn)%Nn);t.enqueue(ai(n,e,l,0,Jn,!0))},async flush(e){const{signed:t,ctr:n,hmac:i,pending:r,ready:o}=this;if(i&&n){await o;const s=gi(r,0,r.length-Jn),a=gi(r,r.length-Jn);let l=new Uint8Array;if(s.length){const e=hi($n,s);i.update(e);const t=n.update(e);l=di($n,t)}if(t){const e=gi(di($n,i.digest()),0,Jn);for(let t=0;tthis.resolveReady=e)),password:Ai(e,t),strength:n-1,pending:new Uint8Array})},async transform(e,t){const n=this,{password:i,strength:r,resolveReady:o,ready:s}=n;let a=new Uint8Array;i?(a=await async function(e,t,n){const i=Un(new Uint8Array(qn[t])),r=await li(e,t,n,i);return ci(i,r)}(n,r,i),o()):await s;const l=new Uint8Array(a.length+e.length-e.length%Nn);l.set(a,0),t.enqueue(ai(n,e,l,a.length,0))},async flush(e){const{ctr:t,hmac:n,pending:r,ready:o}=this;if(n&&t){await o;let s=new Uint8Array;if(r.length){const e=t.update(hi($n,r));n.update(e),s=di($n,e)}i.signature=di($n,n.digest()).slice(0,Jn),e.enqueue(ci(s,i.signature))}}}),i=this}}function ai(e,t,n,i,r,o){const{ctr:s,hmac:a,pending:l}=e,A=t.length-r;let c;for(l.length&&(t=ci(l,t),n=function(e,t){if(t&&t>e.length){const n=e;(e=new Uint8Array(t)).set(n,0)}return e}(n,A-A%Nn)),c=0;c<=A-Nn;c+=Nn){const e=hi($n,gi(t,c,c+Nn));o&&a.update(e);const r=s.update(e);o||a.update(r),n.set(di($n,r),c+i)}return e.pending=gi(t,c),n}async function li(e,t,n,i){e.password=null;const r=await async function(e,t,n,i,r){if(!ii)return Tn.importKey(t);try{return await Zn.importKey(e,t,n,i,r)}catch(e){return ii=!1,Tn.importKey(t)}}("raw",n,Pn,!1,zn),o=await async function(e,t,n){if(!ri)return Tn.pbkdf2(t,e.salt,Kn.iterations,n);try{return await Zn.deriveBits(e,t,n)}catch(i){return ri=!1,Tn.pbkdf2(t,e.salt,Kn.iterations,n)}}(Object.assign({salt:i},Kn),r,8*(2*jn[t]+2)),s=new Uint8Array(o),a=hi($n,gi(s,0,jn[t])),l=hi($n,gi(s,jn[t],2*jn[t])),A=gi(s,2*jn[t]);return Object.assign(e,{keys:{key:a,authentication:l,passwordVerification:A},ctr:new ti(new ei(a),Array.from(Vn)),hmac:new ni(l)}),A}function Ai(e,t){return t===Xt?function(e){if(typeof TextEncoder==Zt){e=unescape(encodeURIComponent(e));const t=new Uint8Array(e.length);for(let n=0;n>>24]),r=~e.crcKey2.get(),e.keys=[n,i,r]}function Ci(e){const t=2|e.keys[2];return yi(Math.imul(t,1^t)>>>8)}function yi(e){return 255&e}function Ei(e){return 4294967295&e}const Ii="Invalid uncompressed size";class bi extends TransformStream{constructor(e,{chunkSize:t,CompressionStreamZlib:n,CompressionStream:i}){super({});const{compressed:r,encrypted:o,useCompressionStream:s,zipCrypto:a,signed:l,level:A}=e,c=this;let g,d,h=super.readable;o&&!a||!l||(g=new Dn,h=Di(h,g)),r&&(h=Qi(h,s,{level:A,chunkSize:t},i,n,i)),o&&(a?h=Di(h,new fi(e)):(d=new si(e),h=Di(h,d))),xi(c,h,(()=>{let e;o&&!a&&(e=d.signature),o&&!a||!l||(e=new DataView(g.value.buffer).getUint32(0)),c.signature=e}))}}class vi extends TransformStream{constructor(e,{chunkSize:t,DecompressionStreamZlib:n,DecompressionStream:i}){super({});const{zipCrypto:r,encrypted:o,signed:s,signature:a,compressed:l,useCompressionStream:A,deflate64:c}=e;let g,d,h=super.readable;o&&(r?h=Di(h,new ui(e)):(d=new oi(e),h=Di(h,d))),l&&(h=Qi(h,A,{chunkSize:t,deflate64:c},i,n,i)),o&&!r||!s||(g=new Dn,h=Di(h,g)),xi(this,h,(()=>{if((!o||r)&&s){const e=new DataView(g.value.buffer);if(a!=e.getUint32(0,!1))throw new Error(Gn)}}))}}function xi(e,t,n){t=Di(t,new TransformStream({flush:n})),Object.defineProperty(e,"readable",{get:()=>t})}function Qi(e,t,n,i,r,o){const s=t&&i?i:r||o,a=n.deflate64?"deflate64-raw":"deflate-raw";try{e=Di(e,new s(a,n))}catch(i){if(!t)throw i;if(r)e=Di(e,new r(a,n));else{if(!o)throw i;e=Di(e,new o(a,n))}}return e}function Di(e,t){return e.pipeThrough(t)}const Si="message",ki="start",Mi="pull",Fi="data",Yi="close",Li="inflate";class Ti extends TransformStream{constructor(e,t){super({});const n=this,{codecType:i}=e;let r;i.startsWith("deflate")?r=bi:i.startsWith(Li)&&(r=vi),n.outputSize=0;let o=0;const s=new r(e,t),a=super.readable,l=new TransformStream({transform(e,t){e&&e.length&&(o+=e.length,t.enqueue(e))},flush(){Object.assign(n,{inputSize:o})}}),A=new TransformStream({transform(t,i){if(t&&t.length&&(i.enqueue(t),n.outputSize+=t.length,e.outputSize!==Xt&&n.outputSize>e.outputSize))throw new Error(Ii)},flush(){const{signature:e}=s;Object.assign(n,{signature:e,inputSize:o})}});Object.defineProperty(n,"readable",{get:()=>a.pipeThrough(l).pipeThrough(s).pipeThrough(A)})}}class Ri extends TransformStream{constructor(e){let t;super({transform:function n(i,r){if(t){const e=new Uint8Array(t.length+i.length);e.set(t),e.set(i,t.length),i=e,t=null}i.length>e?(r.enqueue(i.slice(0,e)),n(i.slice(e),r)):t=i},flush(e){t&&t.length&&e.enqueue(t)}})}}let Hi=typeof Worker!=Zt;class Gi{constructor(e,{readable:t,writable:n},{options:i,config:r,streamOptions:o,useWebWorkers:s,transferStreams:a,workerURI:l},A){const{signal:c}=o;return Object.assign(e,{busy:!0,readable:t.pipeThrough(new Ri(r.chunkSize)).pipeThrough(new Oi(o),{signal:c}),writable:n,options:Object.assign({},i),workerURI:l,transferStreams:a,terminate:()=>new Promise((t=>{const{worker:n,busy:i}=e;n?(i?e.resolveTerminated=t:(n.terminate(),t()),e.interface=null):t()})),onTaskFinished(){const{resolveTerminated:t}=e;t&&(e.resolveTerminated=null,e.terminated=!0,e.worker.terminate(),t()),e.busy=!1,A(e)}}),(s&&Hi?Wi:Ni)(e,r)}}class Oi extends TransformStream{constructor({onstart:e,onprogress:t,size:n,onend:i}){let r=0;super({async start(){e&&await Ui(e,n)},async transform(e,i){r+=e.length,t&&await Ui(t,r,n),i.enqueue(e)},async flush(){i&&await Ui(i,r)}})}}async function Ui(e,...t){try{await e(...t)}catch(e){}}function Ni(e,t){return{run:()=>async function({options:e,readable:t,writable:n,onTaskFinished:i},r){let o;try{if(!e.useCompressionStream&&!gn){let{wasmURI:e}=r;typeof e==_t&&(e=e()),await dn(e,r)}o=new Ti(e,r),await t.pipeThrough(o).pipeTo(n,{preventClose:!0,preventAbort:!0});const{signature:i,inputSize:s,outputSize:a}=o;return{signature:i,inputSize:s,outputSize:a}}catch(e){throw o&&(e.outputSize=o.outputSize),e}finally{i()}}(e,t)}}function Wi(e,t){const{baseURI:n,chunkSize:i}=t;let{wasmURI:r}=t;if(!e.interface){let o;typeof r==_t&&(r=r());try{o=function(e,t,n){const i={type:"module"};let r,o;typeof e==_t&&(e=e());if(e.startsWith("data:")||e.startsWith("blob:"))try{o=new Worker(e)}catch(t){o=new Worker(e,i)}else{try{r=new URL(e,t)}catch(t){r=e}o=new Worker(r,i)}return o.addEventListener(Si,(e=>async function({data:e},t){const{type:n,value:i,messageId:r,result:o,error:s}=e,{reader:a,writer:l,resolveResult:A,rejectResult:c,onTaskFinished:g}=t;try{if(s){const{message:e,stack:t,code:n,name:i,outputSize:r}=s,o=new Error(e);Object.assign(o,{stack:t,code:n,name:i,outputSize:r}),d(o)}else{if(n==Mi){const{value:e,done:n}=await a.read();Ki({type:Fi,value:e,done:n,messageId:r},t)}n==Fi&&(await l.ready,await l.write(new Uint8Array(i)),Ki({type:"ack",messageId:r},t)),n==Yi&&d(null,o)}}catch(s){Ki({type:Yi,messageId:r},t),d(s)}function d(e,t){e?c(e):A(t),l&&l.releaseLock(),g()}}(e,n))),o}(e.workerURI,n,e)}catch(n){return Hi=!1,Ni(e,t)}Object.assign(e,{worker:o,interface:{run:()=>async function(e,t){let n,i;const r=new Promise(((e,t)=>{n=e,i=t}));Object.assign(e,{reader:null,writer:null,resolveResult:n,rejectResult:i,result:r});const{readable:o,options:s}=e,{writable:a,closed:l}=function(e){let t;const n=new Promise((e=>t=e)),i=new WritableStream({async write(t){const n=e.getWriter();await n.ready,await n.write(t),n.releaseLock()},close(){t()},abort:t=>e.getWriter().abort(t)});return{writable:i,closed:n}}(e.writable),A=Ki({type:ki,options:s,config:t,readable:o,writable:a},e);A||Object.assign(e,{reader:o.getReader(),writer:a.getWriter()});const c=await r;A||await a.getWriter().close();return await l,c}(e,{chunkSize:i,wasmURI:r,baseURI:n})}})}return e.interface}let Pi=!0;function Ki(e,{worker:t,writer:n,onTaskFinished:i,transferStreams:r}){try{const{value:n,readable:i,writable:o}=e,s=[];if(n&&(n.byteLength!e.busy));if(n)return Vi(n),new Gi(n,e,t,h);if(zi.lengthqi.push({resolve:n,stream:e,workerOptions:t})))}()).run();function h(e){if(qi.length){const[{resolve:t,stream:n,workerOptions:i}]=qi.splice(0,1);t(new Gi(e,n,i,h))}else e.worker?(Vi(e),function(e,t){const{config:n}=t,{terminateWorkerTimeout:i}=n;Number.isFinite(i)&&i>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout((async()=>{zi=zi.filter((t=>t!=e));try{await e.terminate()}catch(e){}}),i))}(e,t)):zi=zi.filter((t=>t!=e))}}function Vi(e){const{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}const Xi="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split(""),Zi=256==Xi.length;function _i(e,t){return t&&"cp437"==t.trim().toLowerCase()?function(e){if(Zi){let t="";for(let n=0;nthis[t]=e[t]))}}const fr="File format is not recognized",pr="Zip64 extra field not found",mr="Compression method not supported",Br="Split zip file",wr="Overlapping entry found",Cr="utf-8",yr="cp437",Er=[[ir,Pt],[rr,Pt],[or,Pt],[sr,Kt]],Ir={[Kt]:{getValue:Lr,bytes:4},[Pt]:{getValue:Tr,bytes:8}};class br{constructor(e,t={}){Object.assign(this,{reader:new En(e),options:t,config:tn,readRanges:[]})}async*getEntriesGenerator(e={}){const t=this;let{reader:n}=t;const{config:i}=t;if(await bn(n),n.size!==Xt&&n.readUint8Array||(n=new mn(await new Response(n.readable).blob()),await bn(n)),n.size=0;e--)if(s[e]==o[0]&&s[e+1]==o[1]&&s[e+2]==o[2]&&s[e+3]==o[3])return{offset:r+e,buffer:s.slice(e,e+i).buffer}}}(n,101010256,n.size,Vt,1048560);if(!r){throw Lr(Rr(await vn(n,0,4)))==zt?new Error(Br):new Error("End of central directory not found")}const o=Rr(r);let s=Lr(o,12),a=Lr(o,16);const l=r.offset,A=Yr(o,20),c=l+Vt+A;let g=Yr(o,4);const d=n.lastDiskNumber||0;let h=Yr(o,6),u=Yr(o,8),f=0,p=0;if(a==Pt||s==Pt||u==Kt||h==Kt){const e=Rr(await vn(n,r.offset-20,20));if(117853008==Lr(e,0)){a=Tr(e,8);let t=await vn(n,a,56,-1),i=Rr(t);const o=r.offset-20-56;if(Lr(i,0)!=Jt&&a!=o){const e=a;a=o,a>e&&(f=a-e),t=await vn(n,a,56,-1),i=Rr(t)}if(Lr(i,0)!=Jt)throw new Error("End of Zip64 central directory locator not found");g==Kt&&(g=Lr(i,16)),h==Kt&&(h=Lr(i,20)),u==Kt&&(u=Tr(i,32)),s==Pt&&(s=Tr(i,40)),a-=s}}if(a>=n.size&&(f=n.size-a-s-Vt,a=n.size-s-Vt),d!=g)throw new Error(Br);if(a<0)throw new Error(fr);let m=0,B=await vn(n,a,s,h),w=Rr(B);if(s){const e=r.offset-s;if(Lr(w,m)!=jt&&a!=e){const t=a;a=e,a>t&&(f+=a-t),B=await vn(n,a,s,h),w=Rr(B)}}const C=r.offset-a-(n.lastDiskOffset||0);if(s!=C&&C>=0&&(s=C,B=await vn(n,a,s,h),w=Rr(B)),a<0||a>=n.size)throw new Error(fr);const y=Sr(t,e,"filenameEncoding"),E=Sr(t,e,"commentEncoding");for(let r=0;r>8),d=c>>8==3,h=B.subarray(a,l),C=Yr(w,m+32),I=A+C,b=B.subarray(A,I),v=s,x=s,Q=Lr(w,m+38),D=g&&!(16&~Fr(w,m+38))||d&&16384==(Q>>16&61440)||h.length&&h.at(-1)=="/".charCodeAt(0),S=d&&!!(Q>>16&73),k=Lr(w,m+42)+f;Object.assign(o,{versionMadeBy:c,msDosCompatible:g,compressedSize:0,uncompressedSize:0,commentLength:C,directory:D,offset:k,diskNumberStart:Yr(w,m+34),internalFileAttributes:Yr(w,m+36),externalFileAttributes:Q,rawFilename:h,filenameUTF8:v,commentUTF8:x,rawExtraField:B.subarray(l,A),executable:S}),o.internalFileAttribute=o.internalFileAttributes,o.externalFileAttribute=o.externalFileAttributes;const M=Sr(t,e,"decodeText")||_i,F=v?Cr:y||yr,Y=x?Cr:E||yr;let L=M(h,F);L===Xt&&(L=_i(h,F));let T=M(b,Y);T===Xt&&(T=_i(b,Y)),Object.assign(o,{rawComment:b,filename:L,comment:T,directory:D||L.endsWith("/")}),p=Math.max(k,p),Qr(o,o,w,m+6),o.zipCrypto=o.encrypted&&!o.extraFieldAES;const R=new ur(o);R.getData=(e,n)=>o.getData(e,R,t.readRanges,n),R.arrayBuffer=async e=>{const n=new TransformStream,[i]=await Promise.all([new Response(n.readable).arrayBuffer(),o.getData(n,R,t.readRanges,e)]);return i},m=I;const{onprogress:H}=e;if(H)try{await H(r+1,u,new ur(o))}catch(e){}yield R}const I=Sr(t,e,"extractPrependedData"),b=Sr(t,e,"extractAppendedData");return I&&(t.prependedData=p>0?await vn(n,0,p):new Uint8Array),t.comment=A?await vn(n,l+Vt,A):new Uint8Array,b&&(t.appendedData=c>>8&255:h>>>24&255),outputSize:E?p:f,signature:h,compressed:0!=c&&!E,encrypted:r.encrypted&&!E,useWebWorkers:Sr(r,i,"useWebWorkers"),useCompressionStream:U,transferStreams:Sr(r,i,"transferStreams"),deflate64:O,checkPasswordOnly:Y},config:g,streamOptions:{signal:F,size:k,onstart:R,onprogress:H,onend:G}};let W;L&&await async function({reader:e,fileEntry:t,offset:n,diskNumberStart:i,signature:r,compressedSize:o,uncompressedSize:s,dataOffset:a,dataDescriptor:l,extraFieldZip64:A,readRanges:c}){let g=0;if(i)for(let t=0;t=e.start&&h.start>1,dataDescriptor:!(8&~i),languageEncodingFlag:!(2048&~i)},rawLastModDate:o,lastModDate:kr(o),filenameLength:Yr(t,n+22),extraFieldLength:Yr(t,n+24)})}function Qr(e,t,n,i,r){const{rawExtraField:o}=t,s=t.extraField=new Map,a=Rr(new Uint8Array(o));let l=0;try{for(;lt[e]==n));for(let r=0,o=0;r=5&&(o.push(ar),s.push(lr));let a=1;o.forEach(((n,r)=>{if(e.data.length>=a+4){const o=Lr(i,a);t[n]=e[n]=new Date(1e3*o);const l=s[r];e[l]=o}a+=4}))}(f,t,r),t.extraFieldExtendedTimestamp=f);const p=s.get(6534);p&&(t.extraFieldUSDZ=p)}function Dr(e,t,n,i,r){const o=Rr(e.data),s=new Qn;s.append(r[n]);const a=Rr(new Uint8Array(4));a.setUint32(0,s.get(),!0);const l=Lr(o,1);Object.assign(e,{version:Fr(o,0),[t]:_i(e.data.subarray(5)),valid:!r.bitFlag.languageEncodingFlag&&l==Lr(a,0)}),e.valid&&(i[t]=e[t],i[t+"UTF8"]=!0)}function Sr(e,t,n){return t[n]===Xt?e.options[n]:t[n]}function kr(e){const t=(4294901760&e)>>16,n=65535&e;try{return new Date(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&n)>>11,(2016&n)>>5,2*(31&n),0)}catch(e){}}function Mr(e){return new Date(Number(e/BigInt(1e4)-BigInt(116444736e5)))}function Fr(e,t){return e.getUint8(t)}function Yr(e,t){return e.getUint16(t,!0)}function Lr(e,t){return e.getUint32(t,!0)}function Tr(e,t){return Number(e.getBigUint64(t,!0))}function Rr(e){return new DataView(e.buffer)}let Hr;try{Hr=import.meta.url}catch(e){}nn({baseURI:Hr,CompressionStreamZlib:class{constructor(e="deflate",t){return cn(!0,e,t)}},DecompressionStreamZlib:class{constructor(e="deflate",t){return cn(!1,e,t)}}});const Gr={application:{"andrew-inset":"ez",annodex:"anx","atom+xml":"atom","atomcat+xml":"atomcat","atomserv+xml":"atomsrv",bbolin:"lin","cu-seeme":"cu","davmount+xml":"davmount",dsptype:"tsp",ecmascript:["es","ecma"],futuresplash:"spl",hta:"hta","java-archive":"jar","java-serialized-object":"ser","java-vm":"class",m3g:"m3g","mac-binhex40":"hqx",mathematica:["nb","ma","mb"],msaccess:"mdb",msword:["doc","dot","wiz"],mxf:"mxf",oda:"oda",ogg:"ogx",pdf:"pdf","pgp-keys":"key","pgp-signature":["asc","sig"],"pics-rules":"prf",postscript:["ps","ai","eps","epsi","epsf","eps2","eps3"],rar:"rar","rdf+xml":"rdf","rss+xml":"rss",rtf:"rtf","xhtml+xml":["xhtml","xht"],xml:["xml","xsl","xsd","xpdl"],"xspf+xml":"xspf",zip:"zip","vnd.android.package-archive":"apk","vnd.cinderella":"cdy","vnd.google-earth.kml+xml":"kml","vnd.google-earth.kmz":"kmz","vnd.mozilla.xul+xml":"xul","vnd.ms-excel":["xls","xlb","xlt","xlm","xla","xlc","xlw"],"vnd.ms-pki.seccat":"cat","vnd.ms-pki.stl":"stl","vnd.ms-powerpoint":["ppt","pps","pot","ppa","pwz"],"vnd.oasis.opendocument.chart":"odc","vnd.oasis.opendocument.database":"odb","vnd.oasis.opendocument.formula":"odf","vnd.oasis.opendocument.graphics":"odg","vnd.oasis.opendocument.graphics-template":"otg","vnd.oasis.opendocument.image":"odi","vnd.oasis.opendocument.presentation":"odp","vnd.oasis.opendocument.presentation-template":"otp","vnd.oasis.opendocument.spreadsheet":"ods","vnd.oasis.opendocument.spreadsheet-template":"ots","vnd.oasis.opendocument.text":"odt","vnd.oasis.opendocument.text-master":["odm","otm"],"vnd.oasis.opendocument.text-template":"ott","vnd.oasis.opendocument.text-web":"oth","vnd.openxmlformats-officedocument.spreadsheetml.sheet":"xlsx","vnd.openxmlformats-officedocument.spreadsheetml.template":"xltx","vnd.openxmlformats-officedocument.presentationml.presentation":"pptx","vnd.openxmlformats-officedocument.presentationml.slideshow":"ppsx","vnd.openxmlformats-officedocument.presentationml.template":"potx","vnd.openxmlformats-officedocument.wordprocessingml.document":"docx","vnd.openxmlformats-officedocument.wordprocessingml.template":"dotx","vnd.smaf":"mmf","vnd.stardivision.calc":"sdc","vnd.stardivision.chart":"sds","vnd.stardivision.draw":"sda","vnd.stardivision.impress":"sdd","vnd.stardivision.math":["sdf","smf"],"vnd.stardivision.writer":["sdw","vor"],"vnd.stardivision.writer-global":"sgl","vnd.sun.xml.calc":"sxc","vnd.sun.xml.calc.template":"stc","vnd.sun.xml.draw":"sxd","vnd.sun.xml.draw.template":"std","vnd.sun.xml.impress":"sxi","vnd.sun.xml.impress.template":"sti","vnd.sun.xml.math":"sxm","vnd.sun.xml.writer":"sxw","vnd.sun.xml.writer.global":"sxg","vnd.sun.xml.writer.template":"stw","vnd.symbian.install":["sis","sisx"],"vnd.visio":["vsd","vst","vss","vsw","vsdx","vssx","vstx","vssm","vstm"],"vnd.wap.wbxml":"wbxml","vnd.wap.wmlc":"wmlc","vnd.wap.wmlscriptc":"wmlsc","vnd.wordperfect":"wpd","vnd.wordperfect5.1":"wp5","x-123":"wk","x-7z-compressed":"7z","x-abiword":"abw","x-apple-diskimage":"dmg","x-bcpio":"bcpio","x-bittorrent":"torrent","x-cbr":["cbr","cba","cbt","cb7"],"x-cbz":"cbz","x-cdf":["cdf","cda"],"x-cdlink":"vcd","x-chess-pgn":"pgn","x-cpio":"cpio","x-csh":"csh","x-director":["dir","dxr","cst","cct","cxt","w3d","fgd","swa"],"x-dms":"dms","x-doom":"wad","x-dvi":"dvi","x-httpd-eruby":"rhtml","x-font":"pcf.Z","x-freemind":"mm","x-gnumeric":"gnumeric","x-go-sgf":"sgf","x-graphing-calculator":"gcf","x-gtar":["gtar","taz"],"x-hdf":"hdf","x-httpd-php":["phtml","pht","php"],"x-httpd-php-source":"phps","x-httpd-php3":"php3","x-httpd-php3-preprocessed":"php3p","x-httpd-php4":"php4","x-httpd-php5":"php5","x-ica":"ica","x-info":"info","x-internet-signup":["ins","isp"],"x-iphone":"iii","x-iso9660-image":"iso","x-java-jnlp-file":"jnlp","x-jmol":"jmz","x-killustrator":"kil","x-latex":"latex","x-lyx":"lyx","x-lzx":"lzx","x-maker":["frm","fb","fbdoc"],"x-ms-wmd":"wmd","x-msdos-program":["com","exe","bat","dll"],"x-netcdf":["nc"],"x-ns-proxy-autoconfig":["pac","dat"],"x-nwc":"nwc","x-object":"o","x-oz-application":"oza","x-pkcs7-certreqresp":"p7r","x-python-code":["pyc","pyo"],"x-qgis":["qgs","shp","shx"],"x-quicktimeplayer":"qtl","x-redhat-package-manager":["rpm","rpa"],"x-ruby":"rb","x-sh":"sh","x-shar":"shar","x-shockwave-flash":["swf","swfl"],"x-silverlight":"scr","x-stuffit":"sit","x-sv4cpio":"sv4cpio","x-sv4crc":"sv4crc","x-tar":"tar","x-tex-gf":"gf","x-tex-pk":"pk","x-texinfo":["texinfo","texi"],"x-trash":["~","%","bak","old","sik"],"x-ustar":"ustar","x-wais-source":"src","x-wingz":"wz","x-x509-ca-cert":["crt","der","cer"],"x-xcf":"xcf","x-xfig":"fig","x-xpinstall":"xpi",applixware:"aw","atomsvc+xml":"atomsvc","ccxml+xml":"ccxml","cdmi-capability":"cdmia","cdmi-container":"cdmic","cdmi-domain":"cdmid","cdmi-object":"cdmio","cdmi-queue":"cdmiq","docbook+xml":"dbk","dssc+der":"dssc","dssc+xml":"xdssc","emma+xml":"emma","epub+zip":"epub",exi:"exi","font-tdpfr":"pfr","gml+xml":"gml","gpx+xml":"gpx",gxf:"gxf",hyperstudio:"stk","inkml+xml":["ink","inkml"],ipfix:"ipfix","jsonml+json":"jsonml","lost+xml":"lostxml","mads+xml":"mads",marc:"mrc","marcxml+xml":"mrcx","mathml+xml":["mathml","mml"],mbox:"mbox","mediaservercontrol+xml":"mscml","metalink+xml":"metalink","metalink4+xml":"meta4","mets+xml":"mets","mods+xml":"mods",mp21:["m21","mp21"],mp4:"mp4s","oebps-package+xml":"opf","omdoc+xml":"omdoc",onenote:["onetoc","onetoc2","onetmp","onepkg"],oxps:"oxps","patch-ops-error+xml":"xer","pgp-encrypted":"pgp",pkcs10:"p10","pkcs7-mime":["p7m","p7c"],"pkcs7-signature":"p7s",pkcs8:"p8","pkix-attr-cert":"ac","pkix-crl":"crl","pkix-pkipath":"pkipath",pkixcmp:"pki","pls+xml":"pls","prs.cww":"cww","pskc+xml":"pskcxml","reginfo+xml":"rif","relax-ng-compact-syntax":"rnc","resource-lists+xml":"rl","resource-lists-diff+xml":"rld","rls-services+xml":"rs","rpki-ghostbusters":"gbr","rpki-manifest":"mft","rpki-roa":"roa","rsd+xml":"rsd","sbml+xml":"sbml","scvp-cv-request":"scq","scvp-cv-response":"scs","scvp-vp-request":"spq","scvp-vp-response":"spp",sdp:"sdp","set-payment-initiation":"setpay","set-registration-initiation":"setreg","shf+xml":"shf","sparql-query":"rq","sparql-results+xml":"srx",srgs:"gram","srgs+xml":"grxml","sru+xml":"sru","ssdl+xml":"ssdl","ssml+xml":"ssml","tei+xml":["tei","teicorpus"],"thraud+xml":"tfi","timestamped-data":"tsd","vnd.3gpp.pic-bw-large":"plb","vnd.3gpp.pic-bw-small":"psb","vnd.3gpp.pic-bw-var":"pvb","vnd.3gpp2.tcap":"tcap","vnd.3m.post-it-notes":"pwn","vnd.accpac.simply.aso":"aso","vnd.accpac.simply.imp":"imp","vnd.acucobol":"acu","vnd.acucorp":["atc","acutc"],"vnd.adobe.air-application-installer-package+zip":"air","vnd.adobe.formscentral.fcdt":"fcdt","vnd.adobe.fxp":["fxp","fxpl"],"vnd.adobe.xdp+xml":"xdp","vnd.adobe.xfdf":"xfdf","vnd.ahead.space":"ahead","vnd.airzip.filesecure.azf":"azf","vnd.airzip.filesecure.azs":"azs","vnd.amazon.ebook":"azw","vnd.americandynamics.acc":"acc","vnd.amiga.ami":"ami","vnd.anser-web-certificate-issue-initiation":"cii","vnd.anser-web-funds-transfer-initiation":"fti","vnd.antix.game-component":"atx","vnd.apple.installer+xml":"mpkg","vnd.apple.mpegurl":"m3u8","vnd.aristanetworks.swi":"swi","vnd.astraea-software.iota":"iota","vnd.audiograph":"aep","vnd.blueice.multipass":"mpm","vnd.bmi":"bmi","vnd.businessobjects":"rep","vnd.chemdraw+xml":"cdxml","vnd.chipnuts.karaoke-mmd":"mmd","vnd.claymore":"cla","vnd.cloanto.rp9":"rp9","vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"vnd.cluetrust.cartomobile-config":"c11amc","vnd.cluetrust.cartomobile-config-pkg":"c11amz","vnd.commonspace":"csp","vnd.contact.cmsg":"cdbcmsg","vnd.cosmocaller":"cmc","vnd.crick.clicker":"clkx","vnd.crick.clicker.keyboard":"clkk","vnd.crick.clicker.palette":"clkp","vnd.crick.clicker.template":"clkt","vnd.crick.clicker.wordbank":"clkw","vnd.criticaltools.wbs+xml":"wbs","vnd.ctc-posml":"pml","vnd.cups-ppd":"ppd","vnd.curl.car":"car","vnd.curl.pcurl":"pcurl","vnd.dart":"dart","vnd.data-vision.rdz":"rdz","vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"vnd.dece.ttml+xml":["uvt","uvvt"],"vnd.dece.unspecified":["uvx","uvvx"],"vnd.dece.zip":["uvz","uvvz"],"vnd.denovo.fcselayout-link":"fe_launch","vnd.dna":"dna","vnd.dolby.mlp":"mlp","vnd.dpgraph":"dpg","vnd.dreamfactory":"dfac","vnd.ds-keypoint":"kpxx","vnd.dvb.ait":"ait","vnd.dvb.service":"svc","vnd.dynageo":"geo","vnd.ecowin.chart":"mag","vnd.enliven":"nml","vnd.epson.esf":"esf","vnd.epson.msf":"msf","vnd.epson.quickanime":"qam","vnd.epson.salt":"slt","vnd.epson.ssf":"ssf","vnd.eszigno3+xml":["es3","et3"],"vnd.ezpix-album":"ez2","vnd.ezpix-package":"ez3","vnd.fdf":"fdf","vnd.fdsn.mseed":"mseed","vnd.fdsn.seed":["seed","dataless"],"vnd.flographit":"gph","vnd.fluxtime.clip":"ftc","vnd.framemaker":["fm","frame","maker","book"],"vnd.frogans.fnc":"fnc","vnd.frogans.ltf":"ltf","vnd.fsc.weblaunch":"fsc","vnd.fujitsu.oasys":"oas","vnd.fujitsu.oasys2":"oa2","vnd.fujitsu.oasys3":"oa3","vnd.fujitsu.oasysgp":"fg5","vnd.fujitsu.oasysprs":"bh2","vnd.fujixerox.ddd":"ddd","vnd.fujixerox.docuworks":"xdw","vnd.fujixerox.docuworks.binder":"xbd","vnd.fuzzysheet":"fzs","vnd.genomatix.tuxedo":"txd","vnd.geogebra.file":"ggb","vnd.geogebra.tool":"ggt","vnd.geometry-explorer":["gex","gre"],"vnd.geonext":"gxt","vnd.geoplan":"g2w","vnd.geospace":"g3w","vnd.gmx":"gmx","vnd.grafeq":["gqf","gqs"],"vnd.groove-account":"gac","vnd.groove-help":"ghf","vnd.groove-identity-message":"gim","vnd.groove-injector":"grv","vnd.groove-tool-message":"gtm","vnd.groove-tool-template":"tpl","vnd.groove-vcard":"vcg","vnd.hal+xml":"hal","vnd.handheld-entertainment+xml":"zmm","vnd.hbci":"hbci","vnd.hhe.lesson-player":"les","vnd.hp-hpgl":"hpgl","vnd.hp-hpid":"hpid","vnd.hp-hps":"hps","vnd.hp-jlyt":"jlt","vnd.hp-pcl":"pcl","vnd.hp-pclxl":"pclxl","vnd.hydrostatix.sof-data":"sfd-hdstx","vnd.ibm.minipay":"mpy","vnd.ibm.modcap":["afp","listafp","list3820"],"vnd.ibm.rights-management":"irm","vnd.ibm.secure-container":"sc","vnd.iccprofile":["icc","icm"],"vnd.igloader":"igl","vnd.immervision-ivp":"ivp","vnd.immervision-ivu":"ivu","vnd.insors.igm":"igm","vnd.intercon.formnet":["xpw","xpx"],"vnd.intergeo":"i2g","vnd.intu.qbo":"qbo","vnd.intu.qfx":"qfx","vnd.ipunplugged.rcprofile":"rcprofile","vnd.irepository.package+xml":"irp","vnd.is-xpr":"xpr","vnd.isac.fcs":"fcs","vnd.jam":"jam","vnd.jcp.javame.midlet-rms":"rms","vnd.jisp":"jisp","vnd.joost.joda-archive":"joda","vnd.kahootz":["ktz","ktr"],"vnd.kde.karbon":"karbon","vnd.kde.kchart":"chrt","vnd.kde.kformula":"kfo","vnd.kde.kivio":"flw","vnd.kde.kontour":"kon","vnd.kde.kpresenter":["kpr","kpt"],"vnd.kde.kspread":"ksp","vnd.kde.kword":["kwd","kwt"],"vnd.kenameaapp":"htke","vnd.kidspiration":"kia","vnd.kinar":["kne","knp"],"vnd.koan":["skp","skd","skt","skm"],"vnd.kodak-descriptor":"sse","vnd.las.las+xml":"lasxml","vnd.llamagraphics.life-balance.desktop":"lbd","vnd.llamagraphics.life-balance.exchange+xml":"lbe","vnd.lotus-1-2-3":"123","vnd.lotus-approach":"apr","vnd.lotus-freelance":"pre","vnd.lotus-notes":"nsf","vnd.lotus-organizer":"org","vnd.lotus-screencam":"scm","vnd.lotus-wordpro":"lwp","vnd.macports.portpkg":"portpkg","vnd.mcd":"mcd","vnd.medcalcdata":"mc1","vnd.mediastation.cdkey":"cdkey","vnd.mfer":"mwf","vnd.mfmp":"mfm","vnd.micrografx.flo":"flo","vnd.micrografx.igx":"igx","vnd.mif":"mif","vnd.mobius.daf":"daf","vnd.mobius.dis":"dis","vnd.mobius.mbk":"mbk","vnd.mobius.mqy":"mqy","vnd.mobius.msl":"msl","vnd.mobius.plc":"plc","vnd.mobius.txf":"txf","vnd.mophun.application":"mpn","vnd.mophun.certificate":"mpc","vnd.ms-artgalry":"cil","vnd.ms-cab-compressed":"cab","vnd.ms-excel.addin.macroenabled.12":"xlam","vnd.ms-excel.sheet.binary.macroenabled.12":"xlsb","vnd.ms-excel.sheet.macroenabled.12":"xlsm","vnd.ms-excel.template.macroenabled.12":"xltm","vnd.ms-fontobject":"eot","vnd.ms-htmlhelp":"chm","vnd.ms-ims":"ims","vnd.ms-lrm":"lrm","vnd.ms-officetheme":"thmx","vnd.ms-powerpoint.addin.macroenabled.12":"ppam","vnd.ms-powerpoint.presentation.macroenabled.12":"pptm","vnd.ms-powerpoint.slide.macroenabled.12":"sldm","vnd.ms-powerpoint.slideshow.macroenabled.12":"ppsm","vnd.ms-powerpoint.template.macroenabled.12":"potm","vnd.ms-project":["mpp","mpt"],"vnd.ms-word.document.macroenabled.12":"docm","vnd.ms-word.template.macroenabled.12":"dotm","vnd.ms-works":["wps","wks","wcm","wdb"],"vnd.ms-wpl":"wpl","vnd.ms-xpsdocument":"xps","vnd.mseq":"mseq","vnd.musician":"mus","vnd.muvee.style":"msty","vnd.mynfc":"taglet","vnd.neurolanguage.nlu":"nlu","vnd.nitf":["ntf","nitf"],"vnd.noblenet-directory":"nnd","vnd.noblenet-sealer":"nns","vnd.noblenet-web":"nnw","vnd.nokia.n-gage.data":"ngdat","vnd.nokia.n-gage.symbian.install":"n-gage","vnd.nokia.radio-preset":"rpst","vnd.nokia.radio-presets":"rpss","vnd.novadigm.edm":"edm","vnd.novadigm.edx":"edx","vnd.novadigm.ext":"ext","vnd.oasis.opendocument.chart-template":"otc","vnd.oasis.opendocument.formula-template":"odft","vnd.oasis.opendocument.image-template":"oti","vnd.olpc-sugar":"xo","vnd.oma.dd2+xml":"dd2","vnd.openofficeorg.extension":"oxt","vnd.openxmlformats-officedocument.presentationml.slide":"sldx","vnd.osgeo.mapguide.package":"mgp","vnd.osgi.dp":"dp","vnd.osgi.subsystem":"esa","vnd.palm":["pdb","pqa","oprc"],"vnd.pawaafile":"paw","vnd.pg.format":"str","vnd.pg.osasli":"ei6","vnd.picsel":"efif","vnd.pmi.widget":"wg","vnd.pocketlearn":"plf","vnd.powerbuilder6":"pbd","vnd.previewsystems.box":"box","vnd.proteus.magazine":"mgz","vnd.publishare-delta-tree":"qps","vnd.pvi.ptid1":"ptid","vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"vnd.realvnc.bed":"bed","vnd.recordare.musicxml":"mxl","vnd.recordare.musicxml+xml":"musicxml","vnd.rig.cryptonote":"cryptonote","vnd.rn-realmedia":"rm","vnd.rn-realmedia-vbr":"rmvb","vnd.route66.link66+xml":"link66","vnd.sailingtracker.track":"st","vnd.seemail":"see","vnd.sema":"sema","vnd.semd":"semd","vnd.semf":"semf","vnd.shana.informed.formdata":"ifm","vnd.shana.informed.formtemplate":"itp","vnd.shana.informed.interchange":"iif","vnd.shana.informed.package":"ipk","vnd.simtech-mindmapper":["twd","twds"],"vnd.smart.teacher":"teacher","vnd.solent.sdkm+xml":["sdkm","sdkd"],"vnd.spotfire.dxp":"dxp","vnd.spotfire.sfs":"sfs","vnd.stepmania.package":"smzip","vnd.stepmania.stepchart":"sm","vnd.sus-calendar":["sus","susp"],"vnd.svd":"svd","vnd.syncml+xml":"xsm","vnd.syncml.dm+wbxml":"bdm","vnd.syncml.dm+xml":"xdm","vnd.tao.intent-module-archive":"tao","vnd.tcpdump.pcap":["pcap","cap","dmp"],"vnd.tmobile-livetv":"tmo","vnd.trid.tpt":"tpt","vnd.triscape.mxs":"mxs","vnd.trueapp":"tra","vnd.ufdl":["ufd","ufdl"],"vnd.uiq.theme":"utz","vnd.umajin":"umj","vnd.unity":"unityweb","vnd.uoml+xml":"uoml","vnd.vcx":"vcx","vnd.visionary":"vis","vnd.vsf":"vsf","vnd.webturbo":"wtb","vnd.wolfram.player":"nbp","vnd.wqd":"wqd","vnd.wt.stf":"stf","vnd.xara":"xar","vnd.xfdl":"xfdl","vnd.yamaha.hv-dic":"hvd","vnd.yamaha.hv-script":"hvs","vnd.yamaha.hv-voice":"hvp","vnd.yamaha.openscoreformat":"osf","vnd.yamaha.openscoreformat.osfpvg+xml":"osfpvg","vnd.yamaha.smaf-audio":"saf","vnd.yamaha.smaf-phrase":"spf","vnd.yellowriver-custom-menu":"cmp","vnd.zul":["zir","zirz"],"vnd.zzazz.deck+xml":"zaz","voicexml+xml":"vxml",widget:"wgt",winhlp:"hlp","wsdl+xml":"wsdl","wspolicy+xml":"wspolicy","x-ace-compressed":"ace","x-authorware-bin":["aab","x32","u32","vox"],"x-authorware-map":"aam","x-authorware-seg":"aas","x-blorb":["blb","blorb"],"x-bzip":"bz","x-bzip2":["bz2","boz"],"x-cfs-compressed":"cfs","x-chat":"chat","x-conference":"nsc","x-dgc-compressed":"dgc","x-dtbncx+xml":"ncx","x-dtbook+xml":"dtb","x-dtbresource+xml":"res","x-eva":"eva","x-font-bdf":"bdf","x-font-ghostscript":"gsf","x-font-linux-psf":"psf","x-font-pcf":"pcf","x-font-snf":"snf","x-font-ttf":["ttf","ttc"],"x-font-type1":["pfa","pfb","pfm","afm"],"x-freearc":"arc","x-gca-compressed":"gca","x-glulx":"ulx","x-gramps-xml":"gramps","x-install-instructions":"install","x-lzh-compressed":["lzh","lha"],"x-mie":"mie","x-mobipocket-ebook":["prc","mobi"],"x-ms-application":"application","x-ms-shortcut":"lnk","x-ms-xbap":"xbap","x-msbinder":"obd","x-mscardfile":"crd","x-msclip":"clp","application/x-ms-installer":"msi","x-msmediaview":["mvb","m13","m14"],"x-msmetafile":["wmf","wmz","emf","emz"],"x-msmoney":"mny","x-mspublisher":"pub","x-msschedule":"scd","x-msterminal":"trm","x-mswrite":"wri","x-nzb":"nzb","x-pkcs12":["p12","pfx"],"x-pkcs7-certificates":["p7b","spc"],"x-research-info-systems":"ris","x-silverlight-app":"xap","x-sql":"sql","x-stuffitx":"sitx","x-subrip":"srt","x-t3vm-image":"t3","x-tex-tfm":"tfm","x-tgif":"obj","x-xliff+xml":"xlf","x-xz":"xz","x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"xaml+xml":"xaml","xcap-diff+xml":"xdf","xenc+xml":"xenc","xml-dtd":"dtd","xop+xml":"xop","xproc+xml":"xpl","xslt+xml":"xslt","xv+xml":["mxml","xhvml","xvml","xvm"],yang:"yang","yin+xml":"yin",envoy:"evy",fractals:"fif","internet-property-stream":"acx",olescript:"axs","vnd.ms-outlook":"msg","vnd.ms-pkicertstore":"sst","x-compress":"z","x-perfmon":["pma","pmc","pmr","pmw"],"ynd.ms-pkipko":"pko",gzip:["gz","tgz"],"smil+xml":["smi","smil"],"vnd.debian.binary-package":["deb","udeb"],"vnd.hzn-3d-crossword":"x3d","vnd.sqlite3":["db","sqlite","sqlite3","db-wal","sqlite-wal","db-shm","sqlite-shm"],"vnd.wap.sic":"sic","vnd.wap.slc":"slc","x-krita":["kra","krz"],"x-perl":["pm","pl"],yaml:["yaml","yml"]},audio:{amr:"amr","amr-wb":"awb",annodex:"axa",basic:["au","snd"],flac:"flac",midi:["mid","midi","kar","rmi"],mpeg:["mpga","mpega","mp3","m4a","mp2a","m2a","m3a"],mpegurl:"m3u",ogg:["oga","ogg","spx"],"prs.sid":"sid","x-aiff":"aifc","x-gsm":"gsm","x-ms-wma":"wma","x-ms-wax":"wax","x-pn-realaudio":"ram","x-realaudio":"ra","x-sd2":"sd2",adpcm:"adp",mp4:"mp4a",s3m:"s3m",silk:"sil","vnd.dece.audio":["uva","uvva"],"vnd.digital-winds":"eol","vnd.dra":"dra","vnd.dts":"dts","vnd.dts.hd":"dtshd","vnd.lucent.voice":"lvp","vnd.ms-playready.media.pya":"pya","vnd.nuera.ecelp4800":"ecelp4800","vnd.nuera.ecelp7470":"ecelp7470","vnd.nuera.ecelp9600":"ecelp9600","vnd.rip":"rip",webm:"weba","x-caf":"caf","x-matroska":"mka","x-pn-realaudio-plugin":"rmp",xm:"xm",aac:"aac",aiff:["aiff","aif","aff"],opus:"opus",wav:"wav"},chemical:{"x-alchemy":"alc","x-cache":["cac","cache"],"x-cache-csf":"csf","x-cactvs-binary":["cbin","cascii","ctab"],"x-cdx":"cdx","x-chem3d":"c3d","x-cif":"cif","x-cmdf":"cmdf","x-cml":"cml","x-compass":"cpa","x-crossfire":"bsd","x-csml":["csml","csm"],"x-ctx":"ctx","x-cxf":["cxf","cef"],"x-embl-dl-nucleotide":["emb","embl"],"x-gamess-input":["inp","gam","gamin"],"x-gaussian-checkpoint":["fch","fchk"],"x-gaussian-cube":"cub","x-gaussian-input":["gau","gjc","gjf"],"x-gaussian-log":"gal","x-gcg8-sequence":"gcg","x-genbank":"gen","x-hin":"hin","x-isostar":["istr","ist"],"x-jcamp-dx":["jdx","dx"],"x-kinemage":"kin","x-macmolecule":"mcm","x-macromodel-input":"mmod","x-mdl-molfile":"mol","x-mdl-rdfile":"rd","x-mdl-rxnfile":"rxn","x-mdl-sdfile":"sd","x-mdl-tgf":"tgf","x-mmcif":"mcif","x-mol2":"mol2","x-molconn-Z":"b","x-mopac-graph":"gpt","x-mopac-input":["mop","mopcrt","zmt"],"x-mopac-out":"moo","x-ncbi-asn1":"asn","x-ncbi-asn1-ascii":["prt","ent"],"x-ncbi-asn1-binary":"val","x-rosdal":"ros","x-swissprot":"sw","x-vamas-iso14976":"vms","x-vmd":"vmd","x-xtel":"xtel","x-xyz":"xyz"},font:{otf:"otf",woff:"woff",woff2:"woff2"},image:{gif:"gif",ief:"ief",jpeg:["jpeg","jpg","jpe","jfif","jfif-tbnl","jif"],pcx:"pcx",png:"png","svg+xml":["svg","svgz"],tiff:["tiff","tif"],"vnd.djvu":["djvu","djv"],"vnd.wap.wbmp":"wbmp","x-canon-cr2":"cr2","x-canon-crw":"crw","x-cmu-raster":"ras","x-coreldraw":"cdr","x-coreldrawpattern":"pat","x-coreldrawtemplate":"cdt","x-corelphotopaint":"cpt","x-epson-erf":"erf","x-icon":"ico","x-jg":"art","x-jng":"jng","x-nikon-nef":"nef","x-olympus-orf":"orf","x-portable-anymap":"pnm","x-portable-bitmap":"pbm","x-portable-graymap":"pgm","x-portable-pixmap":"ppm","x-rgb":"rgb","x-xbitmap":"xbm","x-xpixmap":"xpm","x-xwindowdump":"xwd",bmp:"bmp",cgm:"cgm",g3fax:"g3",ktx:"ktx","prs.btif":"btif",sgi:"sgi","vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"vnd.dwg":"dwg","vnd.dxf":"dxf","vnd.fastbidsheet":"fbs","vnd.fpx":"fpx","vnd.fst":"fst","vnd.fujixerox.edmics-mmr":"mmr","vnd.fujixerox.edmics-rlc":"rlc","vnd.ms-modi":"mdi","vnd.ms-photo":"wdp","vnd.net-fpx":"npx","vnd.xiff":"xif",webp:"webp","x-3ds":"3ds","x-cmx":"cmx","x-freehand":["fh","fhc","fh4","fh5","fh7"],"x-pict":["pic","pct"],"x-tga":"tga","cis-cod":"cod",avif:"avifs",heic:["heif","heic"],pjpeg:["pjpg"],"vnd.adobe.photoshop":"psd","x-adobe-dng":"dng","x-fuji-raf":"raf","x-icns":"icns","x-kodak-dcr":"dcr","x-kodak-k25":"k25","x-kodak-kdc":"kdc","x-minolta-mrw":"mrw","x-panasonic-raw":["raw","rw2","rwl"],"x-pentax-pef":["pef","ptx"],"x-sigma-x3f":"x3f","x-sony-arw":"arw","x-sony-sr2":"sr2","x-sony-srf":"srf"},message:{rfc822:["eml","mime","mht","mhtml","nws"]},model:{iges:["igs","iges"],mesh:["msh","mesh","silo"],vrml:["wrl","vrml"],"x3d+vrml":["x3dv","x3dvz"],"x3d+xml":"x3dz","x3d+binary":["x3db","x3dbz"],"vnd.collada+xml":"dae","vnd.dwf":"dwf","vnd.gdl":"gdl","vnd.gtw":"gtw","vnd.mts":"mts","vnd.usdz+zip":"usdz","vnd.vtu":"vtu"},text:{"cache-manifest":["manifest","appcache"],calendar:["ics","icz","ifb"],css:"css",csv:"csv",h323:"323",html:["html","htm","shtml","stm"],iuls:"uls",plain:["txt","text","brf","conf","def","list","log","in","bas","diff","ksh"],richtext:"rtx",scriptlet:["sct","wsc"],texmacs:"tm","tab-separated-values":"tsv","vnd.sun.j2me.app-descriptor":"jad","vnd.wap.wml":"wml","vnd.wap.wmlscript":"wmls","x-bibtex":"bib","x-boo":"boo","x-c++hdr":["h++","hpp","hxx","hh"],"x-c++src":["c++","cpp","cxx","cc"],"x-component":"htc","x-dsrc":"d","x-diff":"patch","x-haskell":"hs","x-java":"java","x-literate-haskell":"lhs","x-moc":"moc","x-pascal":["p","pas","pp","inc"],"x-pcs-gcd":"gcd","x-python":"py","x-scala":"scala","x-setext":"etx","x-tcl":["tcl","tk"],"x-tex":["tex","ltx","sty","cls"],"x-vcalendar":"vcs","x-vcard":"vcf",n3:"n3","prs.lines.tag":"dsc",sgml:["sgml","sgm"],troff:["t","tr","roff","man","me","ms"],turtle:"ttl","uri-list":["uri","uris","urls"],vcard:"vcard","vnd.curl":"curl","vnd.curl.dcurl":"dcurl","vnd.curl.scurl":"scurl","vnd.curl.mcurl":"mcurl","vnd.dvb.subtitle":"sub","vnd.fly":"fly","vnd.fmi.flexstor":"flx","vnd.graphviz":"gv","vnd.in3d.3dml":"3dml","vnd.in3d.spot":"spot","x-asm":["s","asm"],"x-c":["c","h","dic"],"x-fortran":["f","for","f77","f90"],"x-opml":"opml","x-nfo":"nfo","x-sfv":"sfv","x-uuencode":"uu",webviewhtml:"htt",javascript:"js",json:"json",markdown:["md","markdown","mdown","markdn"],"vnd.wap.si":"si","vnd.wap.sl":"sl"},video:{avif:"avif","3gpp":"3gp",annodex:"axv",dl:"dl",dv:["dif","dv"],fli:"fli",gl:"gl",mpeg:["mpeg","mpg","mpe","m1v","m2v","mp2","mpa","mpv2"],mp4:["mp4","mp4v","mpg4"],quicktime:["qt","mov"],ogg:"ogv","vnd.mpegurl":["mxu","m4u"],"x-flv":"flv","x-la-asf":["lsf","lsx"],"x-mng":"mng","x-ms-asf":["asf","asx","asr"],"x-ms-wm":"wm","x-ms-wmv":"wmv","x-ms-wmx":"wmx","x-ms-wvx":"wvx","x-msvideo":"avi","x-sgi-movie":"movie","x-matroska":["mpv","mkv","mk3d","mks"],"3gpp2":"3g2",h261:"h261",h263:"h263",h264:"h264",jpeg:"jpgv",jpm:["jpm","jpgm"],mj2:["mj2","mjp2"],"vnd.dece.hd":["uvh","uvvh"],"vnd.dece.mobile":["uvm","uvvm"],"vnd.dece.pd":["uvp","uvvp"],"vnd.dece.sd":["uvs","uvvs"],"vnd.dece.video":["uvv","uvvv"],"vnd.dvb.file":"dvb","vnd.fvt":"fvt","vnd.ms-playready.media.pyv":"pyv","vnd.uvvu.mp4":["uvu","uvvu"],"vnd.vivo":"viv",webm:"webm","x-f4v":"f4v","x-m4v":"m4v","x-ms-vob":"vob","x-smv":"smv",mp2t:"ts"},"x-conference":{"x-cooltalk":"ice"},"x-world":{"x-vrml":["vrm","flr","wrz","xaf","xof"]}};(()=>{const e={};for(const t of Object.keys(Gr))for(const n of Object.keys(Gr[t])){const i=Gr[t][n];if("string"==typeof i)e[i]=t+"/"+n;else for(let r=0;r"data:text/javascript,"+encodeURIComponent('(t=>{"function"==typeof define&&define.amd?define(t):t()})(function(){"use strict";const{Array:t,Object:e,Number:n,Math:s,Error:r,Uint8Array:o,Uint16Array:i,Uint32Array:c,Int32Array:a,Map:h,DataView:l,Promise:u,TextEncoder:f,crypto:w,postMessage:p,TransformStream:d,ReadableStream:y,WritableStream:m,CompressionStream:g,DecompressionStream:b}=self,S=void 0,v="undefined",k="function",z=[];for(let t=0;256>t;t++){let e=t;for(let t=0;8>t;t++)1&e?e=e>>>1^3988292384:e>>>=1;z[t]=e}class C{constructor(t){this.t=t||-1}append(t){let e=0|this.t;for(let n=0,s=0|t.length;s>n;n++)e=e>>>8^z[255&(e^t[n])];this.t=e}get(){return~this.t}}class A extends d{constructor(){let t;const e=new C;super({transform(t,n){e.append(t),n.enqueue(t)},flush(){const n=new o(4);new l(n.buffer).setUint32(0,e.get()),t.value=n}}),t=this}}const x={concat(t,e){if(0===t.length||0===e.length)return t.concat(e);const n=t[t.length-1],s=x.o(n);return 32===s?t.concat(e):x.i(e,s,0|n,t.slice(0,t.length-1))},h(t){const e=t.length;if(0===e)return 0;const n=t[e-1];return 32*(e-1)+x.o(n)},l(t,e){if(32*t.length0&&e&&(t[n-1]=x.u(e,t[n-1]&2147483648>>e-1,1)),t},u:(t,e,n)=>32===t?e:(n?0|e:e<<32-t)+1099511627776*t,o:t=>s.round(t/1099511627776)||32,i(t,e,n,s){for(void 0===s&&(s=[]);e>=32;e-=32)s.push(n),n=0;if(0===e)return s.concat(t);for(let r=0;r>>e),n=t[r]<<32-e;const r=t.length?t[t.length-1]:0,o=x.o(r);return s.push(x.u(e+o&31,e+o>32?n:s.pop(),1)),s}},I={bytes:{p(t){const e=x.h(t)/8,n=new o(e);let s;for(let r=0;e>r;r++)3&r||(s=t[r/4]),n[r]=s>>>24,s<<=8;return n},m(t){const e=[];let n,s=0;for(n=0;n9007199254740991)throw new r("Cannot hash more than 2^53 - 1 bits");const i=new c(n);let a=0;for(let t=e.blockSize+s-(e.blockSize+s&e.blockSize-1);o>=t;t+=e.blockSize)e.R(i.subarray(16*a,16*(a+1))),a+=1;return n.splice(0,16*a),e}P(){const t=this;let e=t.C;const n=t.k;e=x.concat(e,[x.u(1,1)]);for(let t=e.length+2;15&t;t++)e.push(0);for(e.push(s.floor(t.A/4294967296)),e.push(0|t.A);e.length;)t.R(e.splice(0,16));return t.reset(),n}U(t,e,n,s){return t>19?t>39?t>59?t>79?void 0:e^n^s:e&n|e&s|n&s:e^n^s:e&n|~e&s}V(t,e){return e<>>32-t}R(e){const n=this,r=n.k,o=t(80);for(let t=0;16>t;t++)o[t]=e[t];let i=r[0],c=r[1],a=r[2],h=r[3],l=r[4];for(let t=0;79>=t;t++){16>t||(o[t]=n.V(1,o[t-3]^o[t-8]^o[t-14]^o[t-16]));const e=n.V(5,i)+n.U(t,c,a,h)+l+o[t]+n.v[s.floor(t/20)]|0;l=h,h=a,a=n.V(30,c),c=i,i=e}r[0]=r[0]+i|0,r[1]=r[1]+c|0,r[2]=r[2]+a|0,r[3]=r[3]+h|0,r[4]=r[4]+l|0}},P={getRandomValues(t){const e=new c(t.buffer),n=t=>{let e=987654321;const n=4294967295;return()=>(e=36969*(65535&e)+(e>>16)&n,(((e<<16)+(t=18e3*(65535&t)+(t>>16)&n)&n)/4294967296+.5)*(s.random()>.5?1:-1))};for(let r,o=0;onew U._(I.bytes.m(t)),B(t,e,n,s){if(n=n||1e4,0>s||0>n)throw new r("invalid params to pbkdf2");const o=1+(s>>5)<<2;let i,c,a,h,u;const f=new ArrayBuffer(o),w=new l(f);let p=0;const d=x;for(e=I.bytes.m(e),u=1;(o||1)>p;u++){for(i=c=t.encrypt(d.concat(e,[u])),a=1;n>a;a++)for(c=t.encrypt(c),h=0;hp&&ar&&(t=(new n).update(t).P());for(let e=0;r>e;e++)s[0][e]=909522486^t[e],s[1][e]=1549556828^t[e];e.M[0].update(s[0]),e.M[1].update(s[1]),e.K=new n(e.M[0])}reset(){const t=this;t.K=new t.D(t.M[0]),t.W=!1}update(t){this.W=!0,this.K.update(t)}digest(){const t=this,e=t.K.P(),n=new t.D(t.M[1]).update(e).P();return t.reset(),n}encrypt(t){if(this.W)throw new r("encrypt on already updated hmac called!");return this.update(t),this.digest(t)}}},V=typeof w!=v&&typeof w.getRandomValues==k,_="Invalid password",B="Invalid signature",D="zipjs-abort-check-password";function M(t){return V?w.getRandomValues(t):P.getRandomValues(t)}const K=16,W={name:"PBKDF2"},E=e.assign({hash:{name:"HMAC"}},W),L=e.assign({iterations:1e3,hash:{name:"SHA-1"}},W),O=["deriveBits"],T=[8,12,16],j=[16,24,32],H=10,Z=[0,0,0,0],F=typeof w!=v,N=F&&w.subtle,q=F&&typeof N!=v,G=I.bytes,J=class{constructor(t){const e=this;e.L=[[[],[],[],[],[]],[[],[],[],[],[]]],e.L[0][0][0]||e.O();const n=e.L[0][4],s=e.L[1],o=t.length;let i,c,a,h=1;if(4!==o&&6!==o&&8!==o)throw new r("invalid aes key size");for(e.v=[c=t.slice(0),a=[]],i=o;4*o+28>i;i++){let t=c[i-1];(i%o===0||8===o&&i%o===4)&&(t=n[t>>>24]<<24^n[t>>16&255]<<16^n[t>>8&255]<<8^n[255&t],i%o===0&&(t=t<<8^t>>>24^h<<24,h=h<<1^283*(h>>7))),c[i]=c[i-o]^t}for(let t=0;i;t++,i--){const e=c[3&t?i:i-4];a[t]=4>=i||4>t?e:s[0][n[e>>>24]]^s[1][n[e>>16&255]]^s[2][n[e>>8&255]]^s[3][n[255&e]]}}encrypt(t){return this.T(t,0)}decrypt(t){return this.T(t,1)}O(){const t=this.L[0],e=this.L[1],n=t[4],s=e[4],r=[],o=[];let i,c,a,h;for(let t=0;256>t;t++)o[(r[t]=t<<1^283*(t>>7))^t]=t;for(let l=i=0;!n[l];l^=c||1,i=o[i]||1){let o=i^i<<1^i<<2^i<<3^i<<4;o=o>>8^255&o^99,n[l]=o,s[o]=l,h=r[a=r[c=r[l]]];let u=16843009*h^65537*a^257*c^16843008*l,f=257*r[o]^16843008*o;for(let n=0;4>n;n++)t[n][l]=f=f<<24^f>>>8,e[n][o]=u=u<<24^u>>>8}for(let n=0;5>n;n++)t[n]=t[n].slice(0),e[n]=e[n].slice(0)}T(t,e){if(4!==t.length)throw new r("invalid aes block size");const n=this.v[e],s=n.length/4-2,o=[0,0,0,0],i=this.L[e],c=i[0],a=i[1],h=i[2],l=i[3],u=i[4];let f,w,p,d=t[0]^n[0],y=t[e?3:1]^n[1],m=t[2]^n[2],g=t[e?1:3]^n[3],b=4;for(let t=0;s>t;t++)f=c[d>>>24]^a[y>>16&255]^h[m>>8&255]^l[255&g]^n[b],w=c[y>>>24]^a[m>>16&255]^h[g>>8&255]^l[255&d]^n[b+1],p=c[m>>>24]^a[g>>16&255]^h[d>>8&255]^l[255&y]^n[b+2],g=c[g>>>24]^a[d>>16&255]^h[y>>8&255]^l[255&m]^n[b+3],b+=4,d=f,y=w,m=p;for(let t=0;4>t;t++)o[e?3&-t:t]=u[d>>>24]<<24^u[y>>16&255]<<16^u[m>>8&255]<<8^u[255&g]^n[b++],f=d,d=y,y=m,m=g,g=f;return o}},Q=class{constructor(t,e){this.j=t,this.H=e,this.Z=e}reset(){this.Z=this.H}update(t){return this.F(this.j,t,this.Z)}N(t){if(255&~(t>>24))t+=1<<24;else{let e=t>>16&255,n=t>>8&255,s=255&t;255===e?(e=0,255===n?(n=0,255===s?s=0:++s):++n):++e,t=0,t+=e<<16,t+=n<<8,t+=s}return t}q(t){0===(t[0]=this.N(t[0]))&&(t[1]=this.N(t[1]))}F(t,e,n){let s;if(!(s=e.length))return[];const r=x.h(e);for(let r=0;s>r;r+=4){this.q(n);const s=t.encrypt(n);e[r]^=s[0],e[r+1]^=s[1],e[r+2]^=s[2],e[r+3]^=s[3]}return x.l(e,r)}},X=U._;let Y=F&&q&&typeof N.importKey==k,$=F&&q&&typeof N.deriveBits==k;class tt extends d{constructor({password:t,rawPassword:n,signed:s,encryptionStrength:i,checkPasswordOnly:c}){super({start(){e.assign(this,{ready:new u(t=>this.G=t),password:rt(t,n),signed:s,J:i-1,pending:new o})},async transform(t,e){const n=this,{password:s,J:i,G:a,ready:h}=n;s?(await(async(t,e,n,s)=>{const o=await st(t,e,n,it(s,0,T[e])),i=it(s,T[e]);if(o[0]!=i[0]||o[1]!=i[1])throw new r(_)})(n,i,s,it(t,0,T[i]+2)),t=it(t,T[i]+2),c?e.error(new r(D)):a()):await h;const l=new o(t.length-H-(t.length-H)%K);e.enqueue(nt(n,t,l,0,H,!0))},async flush(t){const{signed:e,X:n,Y:s,pending:i,ready:c}=this;if(s&&n){await c;const a=it(i,0,i.length-H),h=it(i,i.length-H);let l=new o;if(a.length){const t=at(G,a);s.update(t);const e=n.update(t);l=ct(G,e)}if(e){const t=it(ct(G,s.digest()),0,H);for(let e=0;H>e;e++)if(t[e]!=h[e])throw new r(B)}t.enqueue(l)}}})}}class et extends d{constructor({password:t,rawPassword:n,encryptionStrength:s}){let r;super({start(){e.assign(this,{ready:new u(t=>this.G=t),password:rt(t,n),J:s-1,pending:new o})},async transform(t,e){const n=this,{password:s,J:r,G:i,ready:c}=n;let a=new o;s?(a=await(async(t,e,n)=>{const s=M(new o(T[e]));return ot(s,await st(t,e,n,s))})(n,r,s),i()):await c;const h=new o(a.length+t.length-t.length%K);h.set(a,0),e.enqueue(nt(n,t,h,a.length,0))},async flush(t){const{X:e,Y:n,pending:s,ready:i}=this;if(n&&e){await i;let c=new o;if(s.length){const t=e.update(at(G,s));n.update(t),c=ct(G,t)}r.signature=ct(G,n.digest()).slice(0,H),t.enqueue(ot(c,r.signature))}}}),r=this}}function nt(t,e,n,s,r,i){const{X:c,Y:a,pending:h}=t,l=e.length-r;let u;for(h.length&&(e=ot(h,e),n=((t,e)=>{if(e&&e>t.length){const n=t;(t=new o(e)).set(n,0)}return t})(n,l-l%K)),u=0;l-K>=u;u+=K){const t=at(G,it(e,u,u+K));i&&a.update(t);const r=c.update(t);i||a.update(r),n.set(ct(G,r),u+s)}return t.pending=it(e,u),n}async function st(n,s,r,i){n.password=null;const c=await(async(t,e,n,s,r)=>{if(!Y)return U.importKey(e);try{return await N.importKey("raw",e,n,!1,r)}catch(t){return Y=!1,U.importKey(e)}})(0,r,E,0,O),a=await(async(t,e,n)=>{if(!$)return U.B(e,t.salt,L.iterations,n);try{return await N.deriveBits(t,e,n)}catch(s){return $=!1,U.B(e,t.salt,L.iterations,n)}})(e.assign({salt:i},L),c,8*(2*j[s]+2)),h=new o(a),l=at(G,it(h,0,j[s])),u=at(G,it(h,j[s],2*j[s])),f=it(h,2*j[s]);return e.assign(n,{keys:{key:l,$:u,passwordVerification:f},X:new Q(new J(l),t.from(Z)),Y:new X(u)}),f}function rt(t,e){return e===S?(t=>{if(typeof f==v){const e=new o((t=unescape(encodeURIComponent(t))).length);for(let n=0;n>>24]),o=~t.et.get(),t.keys=[n,r,o]}function dt(t){const e=2|t.keys[2];return yt(s.imul(e,1^e)>>>8)}function yt(t){return 255&t}function mt(t){return 4294967295&t}class gt extends d{constructor(t,{chunkSize:e,nt:n,CompressionStream:s}){super({});const{compressed:r,encrypted:o,useCompressionStream:i,zipCrypto:c,signed:a,level:h}=t,u=this;let f,w,p=super.readable;o&&!c||!a||(f=new A,p=kt(p,f)),r&&(p=vt(p,i,{level:h,chunkSize:e},s,n,s)),o&&(c?p=kt(p,new lt(t)):(w=new et(t),p=kt(p,w))),St(u,p,()=>{let t;o&&!c&&(t=w.signature),o&&!c||!a||(t=new l(f.value.buffer).getUint32(0)),u.signature=t})}}class bt extends d{constructor(t,{chunkSize:e,st:n,DecompressionStream:s}){super({});const{zipCrypto:o,encrypted:i,signed:c,signature:a,compressed:h,useCompressionStream:u,rt:f}=t;let w,p,d=super.readable;i&&(o?d=kt(d,new ht(t)):(p=new tt(t),d=kt(d,p))),h&&(d=vt(d,u,{chunkSize:e,rt:f},s,n,s)),i&&!o||!c||(w=new A,d=kt(d,w)),St(this,d,()=>{if((!i||o)&&c){const t=new l(w.value.buffer);if(a!=t.getUint32(0,!1))throw new r(B)}})}}function St(t,n,s){n=kt(n,new d({flush:s})),e.defineProperty(t,"readable",{get:()=>n})}function vt(t,e,n,s,r,o){const i=e&&s?s:r||o,c=n.rt?"deflate64-raw":"deflate-raw";try{t=kt(t,new i(c,n))}catch(s){if(!e)throw s;if(r)t=kt(t,new r(c,n));else{if(!o)throw s;t=kt(t,new o(c,n))}}return t}function kt(t,e){return t.pipeThrough(e)}const zt="data",Ct="close";class At extends d{constructor(t,n){super({});const s=this,{codecType:o}=t;let i;o.startsWith("deflate")?i=gt:o.startsWith("inflate")&&(i=bt),s.outputSize=0;let c=0;const a=new i(t,n),h=super.readable,l=new d({transform(t,e){t&&t.length&&(c+=t.length,e.enqueue(t))},flush(){e.assign(s,{inputSize:c})}}),u=new d({transform(e,n){if(e&&e.length&&(n.enqueue(e),s.outputSize+=e.length,t.outputSize!==S&&s.outputSize>t.outputSize))throw new r("Invalid uncompressed size")},flush(){const{signature:t}=a;e.assign(s,{signature:t,inputSize:c})}});e.defineProperty(s,"readable",{get:()=>h.pipeThrough(l).pipeThrough(a).pipeThrough(u)})}}class xt extends d{constructor(t){let e;super({transform:function n(s,r){if(e){const t=new o(e.length+s.length);t.set(e),t.set(s,e.length),s=t,e=null}s.length>t?(r.enqueue(s.slice(0,t)),n(s.slice(t),r)):e=s},flush(t){e&&e.length&&t.enqueue(e)}})}}let It,Rt,Pt,Ut;function Vt(t,e,n={}){const i="number"==typeof n.level?n.level:-1,c="number"==typeof n.ot?n.ot:65536,a="number"==typeof n.it?n.it:65536;return new d({start(){let n;if(this.ct=Rt(c),this.in=Rt(a),this.it=a,this.ht=new o(c),t?(this.lt=It.deflate_process,this.ut=It.deflate_last_consumed,this.ft=It.deflate_end,this.wt=It.deflate_new(),n="gzip"===e?It.deflate_init_gzip(this.wt,i):"deflate-raw"===e?It.deflate_init_raw(this.wt,i):It.deflate_init(this.wt,i)):"deflate64-raw"===e?(this.lt=It.inflate9_process,this.ut=It.inflate9_last_consumed,this.ft=It.inflate9_end,this.wt=It.inflate9_new(),n=It.inflate9_init_raw(this.wt)):(this.lt=It.inflate_process,this.ut=It.inflate_last_consumed,this.ft=It.inflate_end,this.wt=It.inflate_new(),n="deflate-raw"===e?It.inflate_init_raw(this.wt):"gzip"===e?It.inflate_init_gzip(this.wt):It.inflate_init(this.wt)),0!==n)throw new r("init failed:"+n)},transform(e,n){try{const i=e,a=new o(Ut.buffer),h=this.lt,l=this.ut,u=this.ct,f=this.ht;let w=0;for(;w=e||(this.in&&Pt&&Pt(this.in),this.in=Rt(e),this.it=e),a.set(i.subarray(w,w+e),this.in);const o=h(this.wt,this.in,e,u,c,0);if(!t&&0>o)throw new r("process error:"+o);const p=16777215&o;p&&(f.set(a.subarray(u,u+p),0),n.enqueue(f.slice(0,p)));const d=l(this.wt);if(0===d)break;w+=d}}catch(t){this.ft&&this.wt&&this.ft(this.wt),this.in&&Pt&&Pt(this.in),this.ct&&Pt&&Pt(this.ct),n.error(t)}},flush(e){try{const n=new o(Ut.buffer),s=this.lt,i=this.ct,a=this.ht;for(;;){const o=s(this.wt,0,0,i,c,4);if(!t&&0>o)throw new r("process error:"+o);const h=16777215&o,l=o>>24&255;if(h&&(a.set(n.subarray(i,i+h),0),e.enqueue(a.slice(0,h))),1===l||0===h)break}}catch(t){e.error(t)}finally{if(this.ft&&this.wt){const t=this.ft(this.wt);0!==t&&e.error(new r("end error:"+t))}this.in&&Pt&&Pt(this.in),this.ct&&Pt&&Pt(this.ct)}}})}class _t{constructor(t="deflate",e){return Vt(!0,t,e)}}class Bt{constructor(t="deflate",e){return Vt(!1,t,e)}}let Dt=!1;const Mt=new h,Kt=new h;let Wt,Et=0;async function Lt(t){try{const{options:e,config:s}=t;Dt||e.useCompressionStream||await(async(t,{baseURI:e})=>{if(!Dt){let s,r;try{try{r=new URL(t,e)}catch(t){}const n=await fetch(r);s=await n.arrayBuffer()}catch(e){if(!t.startsWith("data:application/wasm;base64,"))throw e;s=(t=>{const e=t.split(",")[1],n=atob(e),s=n.length,r=new o(s);for(let t=0;s>t;++t)r[t]=n.charCodeAt(t);return r.buffer})(t)}n=(await WebAssembly.instantiate(s)).instance.exports,It=n,({malloc:Rt,free:Pt,memory:Ut}=It),Dt=!0}var n})(t.config.wasmURI,t.config),s.CompressionStream=self.CompressionStream,s.DecompressionStream=self.DecompressionStream,s.nt=_t,s.st=Bt;const r={highWaterMark:1},i=t.readable||new y({async pull(t){const e=new u(t=>Mt.set(Et,t));Ot({type:"pull",messageId:Et}),Et=(Et+1)%n.MAX_SAFE_INTEGER;const{value:s,done:r}=await e;t.enqueue(s),r&&t.close()}},r),c=t.writable||new m({async write(t){let e;const s=new u(t=>e=t);Kt.set(Et,e),Ot({type:zt,value:t,messageId:Et}),Et=(Et+1)%n.MAX_SAFE_INTEGER,await s}},r),a=new At(e,s);Wt=new AbortController;const{signal:h}=Wt;await i.pipeThrough(a).pipeThrough(new xt(s.chunkSize)).pipeTo(c,{signal:h,preventClose:!0,preventAbort:!0}),await c.getWriter().close();const{signature:l,inputSize:f,outputSize:w}=a;Ot({type:Ct,result:{signature:l,inputSize:f,outputSize:w}})}catch(t){t.outputSize=0,Tt(t)}}function Ot(t){let{value:e}=t;if(e)if(e.length)try{e=new o(e),t.value=e.buffer,p(t,[t.value])}catch(e){p(t)}else p(t);else p(t)}function Tt(t=new r("Unknown error")){const{message:e,stack:n,code:s,name:o,outputSize:i}=t;p({error:{message:e,stack:n,code:s,name:o,outputSize:i}})}addEventListener("message",({data:t})=>{const{type:e,messageId:n,value:s,done:r}=t;try{if("start"==e&&Lt(t),e==zt){const t=Mt.get(n);Mt.delete(n),t({value:new o(s),done:r})}if("ack"==e){const t=Kt.get(n);Kt.delete(n),t()}e==Ct&&Wt.abort()}catch(t){Tt(t)}})});\n')})}(nn),function(e){e({wasmURI:()=>"data:application/wasm;base64,"+(e=>{e=(e=>{const t=(e=(e+"").replace(/[^A-Za-z0-9+/=]/g,"")).length,n=[];for(let i=0;t>i;i+=4){const t=on.indexOf(e[i])<<18|on.indexOf(e[i+1])<<12|(63&on.indexOf(e[i+2]))<<6|63&on.indexOf(e[i+3]);n.push(t>>16&255),"="!==e[i+2]&&n.push(t>>8&255),"="!==e[i+3]&&n.push(255&t)}return new Uint8Array(n)})(e);let t=new Uint8Array(1024),n=0;for(let r=0;re;e++)t[n++]=t[l+e]}else{const s=o;i(n+s);for(let i=0;s>i&&r{let t="";const n=e.length;let i=0;for(;n>i+2;i+=3){const n=e[i]<<16|e[i+1]<<8|e[i+2];t+=on[n>>18&63]+on[n>>12&63]+on[n>>6&63]+on[63&n]}const r=n-i;if(1===r){const n=e[i]<<16;t+=on[n>>18&63]+on[n>>12&63]+"=="}else if(2===r){const n=e[i]<<16|e[i+1]<<8;t+=on[n>>18&63]+on[n>>12&63]+on[n>>6&63]+"="}return t})(new Uint8Array(t.buffer.slice(0,n)));function i(e){if(t.lengthi;)i*=2;const r=new Uint8Array(i);r.set(t.subarray(0,n)),t=r}}})("EwBhc20BAAAAAUULYAF/AX9gAn+BAAYCA3+CAAeAAA0BAIAAFwMAYAaAABCDABOBABoDAGAAgAADgAANAQSBABUDAGAHgwAegAAfEQNCQQcABAMABAgIAAEABQEKgABaggADAQWBAAcCAQGBAAcQAwIABQYAAgIFBAkEBAkDBoAAAR4AAQQCAQQBAQMEBwICBAUBcAENDQUGAQGCAoICBgiAAJgiQdDVBAsHigQcBm1lbW9yeQIADGluZmxhdGU5X25ldwAHDYYADwdpbml0AAgRigAQB19yYXcAChCGABQJcHJvY2VzcwALhwBGBmVuZAAOFoYADxBsYXN0X2NvbnN1bWVkABELhAAZgwBthQA2gwBsARKFAFiHAGsBFIUAf4MAEwdnemlwABUPhQAUhQB+ARaGAFaBAH0CGBWFAA6NAHwCZGWJAHyFAA6CAHwCGhCJAA+CAHwCGxGKABOCAHwCHA+FABSFAHwBHYYAVoEAfAkfBGZyZWUAAhWFABWMAIMKBm1hbGxvYwABC4IAVQppYWxpemUAABlfgAAPFmRpcmVjdF9mdW5jdGlvbl90YWJsZQGAABwbZW1zY3JpcHRlbl9zdGFja19yZXN0b3JlAAUcjgAbAmdlgABvDnVycmVudAAGIl9fY3hhgABbBGNyZW2AABIGX2V4Y2VwggBdBnJlZmNvdYAAJS09CRIBAEEBCwwAISIMDxcZHj41ODsK3OQCQQIAC78nAQt/IwBBEGsiCiQAAkCPAAISIABB9AFNBEBBpCcoAgAiA0EQgAASBgtqQfgDcYEACRBJGyIGQQN2IgB2IgFBA3EEgQAyBgFBf3NBAYAAHwZqIgJBA3SAABkMzCdqIgAgASgC1CcigAAGBAgiBUaCAFIJIANBfiACd3E2gAKmEQELIAUgADYCDCAAIAU2AggLgABIAwhqIYAANwEgggBGgAAFBHI2AgSBAA8DaiIBgQBNAwRBAYEAEgcMCwsgBkGsggCfAwhNDYAAG4EAhgRBAiAAgQA1BQAgAmtygAA1BAB0cWiBAKMDdCIAggCPgAAfggCPgAAGiwCPBQF3cSIDhgCRAQKBAJEBAoQAkQEAgABogwCFgAAKAmoigACMggDfBSAGayIFgwCMgAAZAgFqgQAuCgAgCARAIAhBeHGBAG4EIQFBuIEAoAQhAgJ/gABlAQGAABkHA3Z0IgdxRYQAeAIgB4AAPoAAPIEAdYEBIQMLIQOBAOmAAHaAAByEAIQBAYMAB4AAnIEAi4IBHIAAVgIgBIAAOYAA/oIAdYABCwJBqIIBCQILRYABCQULaEECdIAA5gMpIgKBAS4CeHGAAKoHIQQgAiEBA4IBqAUoAhAiAIAAg4EACgEUgAAKAQ2AAH6AARCEACqAANmBAW4FBEkiARuAADaAAUkBIIAACYABOAEhgQCnAgsggABUAxghCYAAFoAACQQMIgBHgABIgAAKAQiAADeEAcaAALEDCAwKggApBRQiAQR/gAHIAhRqgAFTgQB3AwFFDYAA2Q5BEGoLIQUDQCAFIQcgAYABmgMUaiGAAgWCADACDQCAAOUBEIQAEIAAMQYNAAsgB0GAAFsIAAwJC0F/IQaAAB8Dv39LggAnAQuAAhKAALUCIQaEAP4IB0UNAEEfIQiAAf6CAPKAAsQD//8HgALGgAHBASaBAlgGdmciAGt2ggKlCkEBdGtBPmohCAuEAvEBCIUBNQEBgQGeAgAhgQIKgQAHgAA8ARmAAB0DAXZrgABXCAhBH0cbdCEChQFJhQE0BAMgBE+AAJMBAYAAtwMDIgSAAIYBAIAAfwEBgABEAQOBAj+CAWgBA4AB04EC1AYddkEEcWqCANwCRhuAAB0CAxuAAGQBAoAAj4ABZIEA7oEAMQIFcoMAhAEFgALPAQiBAruAAO6AAs8CB3GBAa4DAyAAhQHhASGAAR2CAcCAAUyIAcIBAoABvgEhgABsgQHJgwHEAQWBAAmFAVOAAZMBAYMBbwMLIgCCAHIBBYABOQIgBIMDTYAAQYEAywEFgQHnAQiAADmAAAmEAeeAAAqNAeeAApOAABaDAecBBYIB54AAD4QB5wEFggHngAErgAJ6gAD7gwHnggOAiAHnggAQhAHnAQODAecBB4cD2AEFgQSCgwNDgASmgACNgQKfA0EQT4AAjYIDi4ABMoYDgQIFaoEAk4AAV4UDroEDVYAAF4YDuwEFiwRAgAFfgAQnASGAAeWAA0aBADqBA1aAA3SBAJmBA2WAAm+AAEoBsIIAiAICSYAAiAGwgAAfggCBgQAsArwngAADgQAbgwCIgQA3iQCNhgQxhQBLhAJKAS+ABD8FAn9B/CqAADuAAFMChCuAAAiBAmgFiCtCfzeAAFcGgCtCgKCAgAABAQSBAA4R/CogCkEMakFwcUHYqtWqBXOBAHoCkCuCAScDQeAqgwAIBoAgCyIBaoAFooABkwFrgARcgQSZBU0NCEHcgQBkAiIFgABmAdSCAAoBCIAEowUiCSAITYABRwUJSXINCYAC+YAARQMtAACAApCAAm+FBfqEANiBADkE5CohAIMCWoEAP4EBjYAAPAEIggJqA2pJDYEC24ECEoICQwRBABAEgAV3An9GgAH5AwEhA4AAyYIBHQFBgACTgAP7gAYhgQL8AWuBBVMBaoICzQNxaiGAAEABA4EAqwEDhACrgQERgwCrgANFA2oiB4AAcYABSgEHgACrAQSAACqAAF+AAWMFRw0BDAWBADiAAEyAAOuBABaCAkKAAFOBAJUBRoAE/gECggMVgQCKgAEJBUEwaiADgQC4gAHtAwwEC4MBcYEDIAMgA2uBAIkHAmtxIgIQBIMALoAFZYAAloIAK4AAnIAAzQRHDQILgQFoAeCBAJYCQQSBBayABaiEAOmCAPKBAGgBcoEFJANNcg2AA1OAAFCAA+gIBkEoak0NBQuAAM6DANGBAM+CAawB2IIADgEAgQJOAtgqgQNJAQCBAYWDAXEBBIcBcYMA04EDa4AA1QIiBYAA14IAEoMBa4EAxwG0gwJ7gQFKgAB7ARuBBC0BtIMCvYICaQNB6CqBBjABAIAAUIIAFQVBxCdBf4EACALIJ4MCe4EADAHwgwJAgQHggwbPgwewgAZQAdSAAxCBBlgC2CeBBSeAALsDQSBHgAB5gQMBBANBKGuAABABeIAA6QFBgQJrgAHegwMOhAegggbOgAN0hQMIBAJqQSiBA2wEwCdBjIEBe4ED4IABzoABgQFNgQZkAktygwDaBAxBCHGBAAqAAdkCBWqBADCAAFGABM0CIASCAGaACFGCA3QCsCeDA4+BAU+AAC2AAImDAG+AAKWCAG+AAFaQAG8BA4IBEwIMBoMAB4UBPQMgAkuIATWDAfsBBYIBgAICQIEGmYQBgoEE94QBegMBDAKBBZwCLQCBAK2ABOABC4QBroEJLIMBrgEEgQJpgQc8ggKMAyIFSYQHWQEIggZMlAFAAQeQAUABB5kBQIAAYgIFQYAH+IEAQQNqQS+AAE+AACgBBIAFTIAJlAMBQRuCCSwJQewqKQIANwIQgAALAeSDAAsBCIAAFIIJW4EAcI0CIIQCDIAAIAEYgASvggITgACYgwS/gAAFAQSBCZCAAM+BAv4DIARGgQbpgwVJAX6ACcMBBIMIL4AGdoQAtoIIwQEAgAjyAwJB/4EKQ4AACIQJD4AAFYQKUIAFKoEJ34AJDQEChQkNgAARggkNggmCgQE2AQuABsOAANqBCQ2AAGCABnUCQQyABbIBCIEFLwEfggczAf+EB90BAoAH3YAAGZAH3YAAsYAAxQY2AhwgBEKCAQ8BAIAHOQNB1CmACZqCBOuDCDeAAq+BCjUBA4IAigGogQmXAQWDCZeCCWWBAI8BAoAIA4AAVYIIA4AIYoEIA4IH1oAHooECLYEK3YIHfAECggOqgAfjgQdsgQfTgwMOgAfwAiIDgQbnAQWCBueBAFcBEIEAmoAB7wMYQQiABwQCBCKACCwCQQyFCgeAAdOBAPCDAIEBCIMAw4AI1YAAIwEYgAECAQyAADuEBuyBAvKDBEeEBqmABmQBTYAIfoACaoEHyLEGq4ADIQSgJ0EwgQA5gQMwggjAgwcWggLXgAMoggNrhQLDAWqABhmFAEKACYyABoOCABWABQUCIAiABuwDayEHhQThAiADgQtugQPZigPMAQeDBRuBAOWEC9iAAeCCB/ODADGHCuuECJ+OADGBAiWDAQaBAUCAAWiBBZcEA3FBAYAAP4AAJIAKIAEJgQAWgAI9ggzXgwKUgAARgQjMAQKDDAKDApaADAaAADkBdoMMmAECgQLshwuDgQJ3gQA1AxghBoAARoAEL4EEGoIARYIBH4EAJoEBpYAAJoAAH4AAGIALWIAJEwEDggkTggH7gQmngAAQgQkTgAuHggoqgAaJgQkTggQwgAAwgANXgQsagQm5ggAxgQIsAQWDCROCCoqAAJIBBoAJqIMAYAEcgADkAQKABbaBCgaCASmAAX6AAtiDAasDAg0BgALIgwLegQDVhQDSgQA7AiAGgABdgQAwAQaBACwBEIEA14IACgEUgALmggwKgAjkgAKXhAC1gQNegQDZgAM6gQAlARiCAQSCDDSBAkWAABkBFIYAGQQHIAlqgAvPAQOAAAeBAu0BBIEDfYAHTYYEJIUE1YAACgJqIIEE9oAAEoMBjAEHkwQgAQetBCCDAymBAAeEAbGABCgBAoEAZoQEKAEHgAQoAQeSBCiAAVuAAtSIBCiADyaDBCiCDx2EBCiCBLUDdCIFhQQogAPbgwCShgQoAQeABCiABQeCBCgBAoQMK4IGHoMB9IEOdoIEKAEHgQQogQwLgQHtgwv7gQV9gQQogwtAggH8hgQogADWARiAAAeEAOSBAPKFAQSBBnaDC4+DBCqBAi+BACuIAQgBC4AMtYID2oICAAEIgwJCgABmARyAANCAAM6AAmyAAkKBDwqAAIqBAkKCA12ABu+BAOIBB4QPGYEBr4MAQIAKAIQCQIAKCIQCQIIACoACQIQOSgIgCIEAhIMAyIILqYAAhoAGiYIAxoUML4ECQIIAGQEUhQAZgABcAwRBD4MKYwEEgQSpgAOLhwu5gwR9hgQhgQwKhAAfgAAKgQRvhAAcgQVdAWqCAY+AABKDAl6BAXGQAl4BBKICXoEPdoAAHIAABwEMgQLNgwAHhwJeggBmhAJeAQSAAl4BBJUGhoIAPAMcIAORBoaBAxqCELWFAliAArSEBoCBB6WDAHEBGIEAmAEElgaHgwJfhQ/vgAejhAaHggkdgQAmgQXygQJfAQeHD1WBAF4BEIMQaIED2IUA5YEA84IG9IME3YIAFoMQf4MNoYAEG4ME8oIA1IEOAYMCX4IE+gEJgwJfgAA8hAJfgAHvgAJfgQVngAAojQJfAQuDAl+GAl0DAiAJhAJdAQmGAl2CAAqIAl0BCYEAgoMQTI8CXYMQc5kCXYEL+4oCXYAJdo0CXYAFAoQAH4AACoADkoYCXYACboQCXYoR5oEOOoIBhYACYYYR5AEggwhPiBHmiAJbgAE7ggJGgwHcgQfpggJbggHxAQiBBv+CEdeBDpmBAG6BCICBAWMBC4AODgMQaiSAAEoGC94LAQh/gQbPggDsAkEIgQx3gAmoAWuDAt4BeIELNAIhBYITlAIBcYEJrwFBgAJdgQaAgQW/gAAigAAvgwsHgAqjghK8gwTogATqhAd6hAbegAc0gAA8hAnGgwbvAQSADRWJBzKAEwyEBzKBDZiCByGKBx+LB0WBDcqFEDCIBx2CEDCDBx0BBIACygEEghIXggcdgAGEhRAwggcdggAQixIXgAijgAJmgAlDgQf1AgNHgA5QgAE4ggJngBD2hAZ/gQEegwHEghRtAgAPhAXxgQCZggVQgA3pjgdiggLBAQSHB2IBBJYHYokCxasHYoECxYIBHIECxYgHYoICxYIAGYECxYUDowEFhBGagQDtAQGAAdKGFbuDAeKCCWCBAcCCFNmACWuCC+WGCWuADUiCAReHAQ0BA4MB8AJHDYERcYMQTwG4gwAIAQ+ECYWBD/iECYeCAE2GCYePAE2BDZiFAV2BAoSAACOBDDeLAkaCEkSAAXuMCXiKAkaLAZqAAjOCEoyBAlcBBYgSh4kCV4MCA5ESh4AANLQCV4ACDZECQIYA5oMOWYcCM4cHU4MCM4IHU6MCM4AGxKMCM4YHVYwCM4cHVY4CM44AuIAAFAEIgA/PhQMlgAGthQsUgQssgxa3hgcqgAT6ggsUgBSEhQTPgAb0jRa1hAargAgIhQZFggTWgwYhgAJKgQmHgABlhAcpAQCABymABLOABykBAYMHKYACzIYJh4IGXIYHKYYJh4ATNYAC5wF/iwmJgxdIggmJgwVigAGogQKkgQ0lgwkikQmPgAGegBWdgQIPhg23AQCGCY+BDNqDFYqAAbuGBzCAFdGFBzCBAF2AC72AB+mBAPcCAyKGAQaAAtWCAPyDAQqAACeAAOOBFGEBC4ACdYEQXoMGOIQBGoIBjYIP+oARmgHEggISgAWUgBJNAiAAgA/BgBNPBIwLAQeAAA2BBZqABceDEGOBEneCBc6AARaCBc6CEHeAAI6ECEiBACaBEoGEBo+EELsBDIAGbYUPiYABkZEFw4EPiYYDfYAAIoEDbIQGBIIAMIIH/oEBz4EYmYEDkIIMsAEEgANsgRXThBZWAQSCFpmIFfMBB4ABYYEF44ABMIIE0oABRYIF44MAEIUBVYsFw4AAiocFw4IO4oAUPYQDg4EGxoUFw4EAG4IFw4QAmYcFw4AASoQDkIAAlgEcgABRhgOQAQCHA5CDCVeLA5CEGo+CA5CADxWGA5CBAfWDA5CAAAqAA5ABA4IDkIAF5YEDkIIA+gECggFagQO4gwkogAN3ggEhgAO6gQHxgQPHhQAZhgWvhADukQW0ggWGhgW0gBN/hBbWhg+yqQW0ggAfhgW0kABNgRq4hAFOgRGnggJNgwW0hwI3hAW0gg+PlQI3iwGLhwW0gAa0hgW0iwJIhQW0gQJIiAW0gAJIhQW0rwJIggW0jwIxhgDmgwW0hwIkggW0iAIkiAW0nQIkiQW0mgIkggDWkAIkggD9kAIkkQC4gQ1VhAW0hAGthQdQgQdpggW0gBxjhh2sgRXMgQW0gAgjhQzegQrQgAQehQvZgQzegxCyhQp8hBDHgwqYggW0gASshgW0AQGGG0ABAoMFtIEFJ4IFtIISIYAAuQMcIACDBbQBA4UFtIARb4YPO4EGSIAWZYYFsoAQBYMAkYQMEIIGr4IFS4AFs4AAwYIFswEDgwWzgAEfgQWzggIOgQGoggWzAQGBBbMBA4EFs4EAB4AFs4ACeoAAlYYFswECgwWzhBC7gAKVggFZhADqgwaXgQYKhhrQgxNkgANdggzihBOAgwENAwsLSYEHEQGQgwZ7gRUbAWqBC2IBAoILNYAAdIIDUIIXhQMgAD+ABQIBdIAejYcTRQF/gAFMAZCECpADAQsGgAAtBiQACwQAI4ATswIBAYAG1QRBxAAQgBAZgwvIAgRrgRmPgAw6ggAOgAYeAwD8C4EYzoIFa4ABIwEkgQeNBTYCICAAgBIZAwsLEYAAJoEBUQF+ggfFCxAQCQvZAgEDf0F6gAcwBEBBlAiBAE0BMYECOAF+gRwFhABVhAS4ASCDAnyAAAoBJIQACAkoQQFB2DcgAhGBBlaBAFcBfIEAV4MHkIAA5gM2AjiFAa8EAkG//oAACYAAZQQgABAjgxYPBkEfdSIDc4AZV4ECgIAUBYAWLoMC0gEogw58AnZBghn6BAFBAE6AHlmBH2uAAWCCAD2CAFwDNCACgQI/ASyJABSAAOeBAAeAAZaBABuACNWCDfGAAF+AA4YBMIACyIEAFgE8gwArASSAAAeAGzWCDhwBQoEbQAFwggg/AUKAAKgBN4ENyAJCgYMAFAHMgADggAArArQKggq+AXCDANEBVIMABwJQQYIJDYABCYMZgQMkEQOEATEBHIACLIwBbQFwgAFtARKCAfqBAOaCF5QIBBANC/0kASKEIVkCFCSBAXgBGYYBJIEHjAIiEoQBbAMEIROEG1eBAjcBE4AEZwMAIROCAH2BBJAB3IALOgEfgACnBfQFaiEVgAAIAdiAABABG4AACAHwgAAIARqDAL8CIRaBACCAABADEUGcgRgZBCEcQZiCAAgEHUGUK4AB+AIhHoEDNgNAIQqBAAcBPIEK+QFBgBgyCAJJISBBfSENgAAOBgZHISEgE4ECGIEDLwMXIRCBGPiRIgqSAAKBCY6RIjaBEIKAIhqAAXcXaw4TBAUGBwgJAwIMDQEZABsPIiIUISKCBH8FTCEGDBmGAAqAFtCAAAoBbIEeTIEACAEigAvWAygCYIIfMAMMSRuAACEEBgsgIIEf2oAAVoAGUgQOIQ0MgAGRgQTGAg0PgA8SAghygBXgAQiBBACCF40DCkECgga0A0UNDoEaiAFrgR+SgAEQAyAKdIAUeIEUoIAa0oAALQMJIQqDIM6BEX6AAlADCEHBgABegALShgDLgAAYAXaCFkcGaw4DAAECgAToAR6BDXSCH5gFCANAQZCACgaAD+0BkIIaJAERgSAiBnRqQQg7AYEgJYAAY4EKgYAflwNBgAKAH0YBBIAAB4MAJ4AFCYAAJwEJgQAngAALgArZhAAnApgCggBOAZiEACeDAE4BB40AToAANAGgigBJggBwhwBJgSB3gAIIA0GgK4EEewKgPIMACQMgFEGAETYBDIAFgwERgAA/gAAXgAARBwxqIBUQJBqCAFMBIIkAUgEFjABSAZyAAE4BPIECqgEcgwBKgBCZAQyAIJYDEUEgigBJgAJ2A0EBOoAEcASgKyEdgQFXAR2AA1GAA3gBiYADeAHQgAOEAViAABOAAEKAA2sCQceCBDwCQQGAAqMBIYAKNAQKQQNrgAKngRXuAiEHgQAdgQg2gSB6gAERgQHsBB8LQcSBAZuDC9ECwguBGTQB0YEAEYIcR4AASoERF4gAQ4UAPQIMGoEAGYAX/gEFgAYIAQqAGJaAAByBGa0CQR+CE66CB+mAAh+AAXaBAh8BBYQCH4MBboMS1AMFDAKABWeAAVKBAhsBBoAAVAEKggCRAR2ABZOBCHID//8DgB6CgAAJgCT3AhB2ggsuAkHdgxKfgQChggqqgAJmBBoLQcKCAEABAoEACIMSVoAE/gFEgABagAi2gABUgQOMgAQWgQBbgACzAwJBw4IAJoIC4gNEIgOCCDmCFNiAG+ACAyCBE7EBEIEACoECiYAAKoQDEYAAOQESgBWIAwMQJYMjmQFEgAWJgABkgAAtBBJqIRKBADYCayGBADuAANaBGlCAAA4CBAyBEzCEBckCDBeACNOCAz0CDUuADFmNAR2FAzyEAR2AA3QBaoMDP4IBHoEBnoMAhoEAUoABEAEfgAEXA0GBAoAaKQFkggAQAgV2gAATgAA7AzYCaIIAEAUKdkEPcYAcVQEigAkgAWCAAE4BDoMBvQEOggG9AkEegiHeAkGhigFKgAChgAAMAcWDAjoCACGABCOBBZgBbIADE4ADqgMGIAyBCpsBE4AACQcGQRNNGyEJgADLAwYgCYIN1oAAE4EhHoAALYAC44AADAV0LwGwDoIC6gEAgQLqAQOABGABAIEHZJgESQEKowRJgANhgBrygwBpgAAMhgBpgADbAgdxgQBsiwKnAQSAAMaFAquDAEEBFoMGi4AAB4AGmYEdgYEDNYAADoAGmYADcAUTIBogG4EDbAIiDoIBIQG/ghdnhgEhARaBASEBxoQCYYIBHYABKAEOgQ6AggJKA2QiD4EABwRoaiEMgADcAQuABVqAATKAHaMEKAJYdIACwQEhghVUA1AhIoABAQEJgACbgAOXggEFASKAAzwCGHGACdIHaiIjLQABIoADBoAfOIEK4YEWDoABFYABAYkDPwEJgQEVAQmFAz+AANeAAZ8GIy8BAiIIhRV/gAj3hgEmgAAMgAEfggTEgSPbgQEcAiAGgwEcAQuBFlABf4UGaIACegQQaw4CgAWHgSOUgAl6gg/AhgCMgBAwoQCMigBlAwUgC4IJsgJBh4sDswEJgAGTAQOAAvmAJpuBBmeAAgaBADOAJYmBAJiAJE2ADqCBJp2BALsDIBFqgAAeAi8Bgg7AgBYzjQCXARuoAJeEAhuAAJqACyyDAiCAAjaAAFSCDFiACnOMAFwBGqkAXAEHiABcAQeDAFwD/wBxgCc/gCeGgQIiAwQgDIAAKQILaoACFJYBEYAD3YEFPoIGKoMBuAEEgQG4gQHPgAJigwMhhALIgAWjAWyAF7mEADiCABQELwH0BIMBbwKUCooCtwEVgQK3gABxhQLrhAMAgQasAiAPjALyAaOLAvKCADuABEMBXIME8wFwgAM+gQaZggLuggChgQLwgABDAR+IAEMB8Y0AQ4QGcYYGloADNIQFkYAACwENgwBkAciFBZGBA1cC0DeJAzeCA1UBUIADyosDNwEMgAFugATjgQM3AQuLAzeBJuahAbgBC4ADNQIhD4AC+oAAQIAp14ELUwX/AXFBDoEARwMGIQyAAJ0BBoECGgMMIA+BAGYCIRiAAJUBBoABwoIAlYIBqQIgGIAAhAELgCgPAXaCAIcBD4EAhwEMgBjPgQHkgACIgAR8pwMzgQdCggOYgABGAQCAAe4BD4IAnYEB6wEPgQZlgAVkAiAMgAXeAtA3gAAvAQyDAmwBDIEALwELgQC0gA/SgQP5AkHNgwFzARGBGscBIIEmEYUGfYAACYAknQLQN4MAGwLAAIEAHAMAQdWBB+mHAaqAABwDAkHJhQdAgBnNAXGBBj4BTIUCZoIP0oAGoYoBhoAAvIQA7oAIUqIA7oICSYAAxwEGgwDOhAdLgAfiAiAGgQFagA5dAQyBAPGLBK2FAumAKDABEIMKHwEQgQDthAcUARKBB5qBAEeACR2GAkwCIBCBAI8DECASgQCCAhIMgh3lggebAQqBHJiAAdABCoIHWoAFz4QARoYAIoIAGIAHCIQAGIITBYUAGIIAEgEOlABMgAE8hAA0AQ2AAk6AAAeBC3cCQdCDAI+GCSGDCTIBCoQrvwJEIYIik5IAUIAAyYQAUIAA+AMCQcqFAZuAASEC1DeAK6mBAEABXIMCj4EACwFUkgMkAQuDAySCAp2HAySAB2miAa6CAoeBBmKBApcCIg+DKhiCAcGCB5SAAGIBC4gDHQEPgwMdAQ+GAx0BD4YDHYIDpIgDHaUCL4sDHYUCO4ACGoEDtYAEHIIDxYAAiAEhgAzCgQMlAQqFAyWJAj8BD4YC8wHxigLzhgJYgCsQAwJBy4UBYAEPhgL7ggVpAUiHAwKIAV8DIAYEgybGhQMBgRnrtQMBAUiJAwGBAHKSAv+BAKUBzIQFKYYDB4AAEYQCJQEGgAfOggBNgArEAhcggA8fAQmAAe2CGy4BCYEcvIAAGgEwgCS5gQAIAsw3gxCpAfyLBikBB4QAQQE0gCrEAQOBANaAAAyAEJEBKIAQM4MARAFrggcrggAWgAAiAWuBBtyBE1qBC0WBFIcDBkkbgQAgARKBCvyCLo2AABeBHYmBAZiHC1cBCYILNgMJIQOAAT4DEiAFgAEtgQO3gwOngQblgQf7gQFKAiIDgRJgARCAAHmAA8aBAE2AAWKFA92BFP6SAzOAAcSEAQ6BDLSFABuJA9mAA0aEACKACFKIB0GIBA6BABaEDIqBEZ4BEIMS4QEShiIFgRQ2gAblgRF9gAFBgQlygApJATyHD58BLIABXQQQIBdGgAhVgAP9gCmBgRG8gBgSgSYJgAARgCsIhBCHgBVdATiDBbyCGDeAEh6BFXACKHSBGhKAEj+BEiaAAG8COCCBFbGCHLUDLCIFggAugRGXATCCMO+CADCBKiICLAuDAfWAALuBA6QBBIEBXANrIAWADK6CIFMBNIMemQEsgBHXgwRwgAANgAHoAWqBDNSAACeBAd+AASWBASkGSSIJGyIEgAA4AQmBAGqBAeyBDPeAKH0DBGsggQAXghaAjABPggANATSAIhiACoWAARyDAKsCCUeAGWmAACmAAniAAJYBCYEdWIENZ4EpH4ASW4IRpAIIIIIRpAEEgABcgAAWgRrdAReDES2AEuSCLQUBFIAAF4EVt4ABVgEgggA6gBKxghF2gAPSgRpygABDBBtqQYCAEdyDERiCEMIBRoEAE4ASrYIUOIEOEoEwBYEIfoAAGYABKQcgDUF7IA0bginVAQ2AAJMBF4AAHwENgACZAROAAAiAAagERhshGYMokQHSgwiwAnwhgBFJARSDIBcGGQuUCQEMgBQrhhKngAEhgAjQgAAHgBMngAM0gANCAQ6CB40BEIIatwMCQUCAAY6HJ++CC3OAM+kBAoEz6YEozoEz6IAEwAEOgSBggCGaAQSABWSABh4BDYEFcoEUpYAASgELgADJgSBEAQuADc8CIA2BC+IBCYAEEwQNIAtrgy1rgAmIAU2BLUWCF5sDCSANgAx/gQjUgwArgQAngAGUARCBAEEBCYAAFQEPgBFgAnJBgSOIgAT9gAjNgCFFgCFNggAPAwwgDIYho4AEeQMIEAOBI4GDGTmCDf2DGS4DDWoigABVgABykwBQAQiDAHOEJoqBKSaFK36BAzKBAFKDIP+CAFKDGTOAAFIFCCALSQ2BKDyAAAmBAD2CBmeSAGABDYYm5YACU4EAOYIm5wEIgSUzhCssgyLSgQA5AiAIhQA7ggAsAgcggBa3hzCagRAagAeogBnCAQ2EIgmCJYOBBtWBAYiAMqwBcYABNYEigoEAooALkoEBRIAABwFrgASngAAiAwwhCoINNYMYJIAAEQEIgABhAQqMGcCBIqmGKOyAAB+BBEOABdaEI/+AADUBGIEUFYAAEwEMgRDchQBFigAmgAAfgAAYAxQiB4AWoQEMghnEgAAPARCBM4gBAYAAEIEZxAENgAVJAQ2ABLMDByIKgRnEgAEiggAwgANvgSLMgAAQAQqCADGBBU6AA56EAYaAERaBBkWCGaOAAFEBHIEA8IAYPYIZo4EBnIABZ4EZo4AAjIAAR4sZowEIiBmjAwwgEIQZowEQgQAsghmjggAKgBmjAQqCGaMBCoEFQAEYhAC1gAAoggDZARCDAQ2AEM2DANyBBo+CABkBFIYAGQESgw7OhAHKARGHAgUBEYsByoMB75ICigEShALajgA0gAIQAhIQggX/gAf5AgcLggCYgCi2gQbegQRJgBgtgSVlAxpBfIArbgEOhCPzgBBTAnEbgilIgQBMgRD2AwdLG4IAOgYJIA4gB/yAOmaAA8cBEIADFwILIoEEAocX2wE8gAAHAQ6ABceABA6AAC6ADPwCIAKDAC6CBk2BBluDF6qBACyBBluBBFODGbKACAYCEQGAJPWBAByCBSiABzuBBduBBSOADK2AGjmBH9oFGHRyCwiBBOoDBRAQghj+BBAZCx2JF0oDIAERgAdigQBXgACfBQAQAgsQhAAehBeNAUCMF3kFDxATC9KBGOaHJP6bGNOBCMehGNMBtIcY0wEmgQ3+gCzLgADAgAolgAXAA0giBIATcwNBD0uCGscDQYH+gAT+AXKIGOGCGNmCGOMBIIEAKYMY3IAARo4Y3IYAFI4Y3IAZGJ0Y34EbJIsY34AAtIoY3wHEtBjfAkF+jAFmAXGAAWaLABIBH4AAEowY8QEGgBjxBIBEASOEGPEBEIIY8QEXhQFCgxjxAQyEAYqEGOqBAiiGCGKCBxUBA4IHFYIODwHAgwbTgAAHgRxWgRixAiEdgAAXgRkOgBjOghkOgAdvkhkOgRkmghkOgxj2gA/Rgxj2ggfAARyFGOYDDiESiRiugRQ9gBkOgiFhpRjiwwACgAHmgAG7A2sOH4IZIhszNDU2CgsMDQ4PEBEDAhQVASQAJhcYBD4/QEGEGSUDCwwkhgAKgSQUgBkngw4VghkxghnkgxkxAQqBB7GBDgSAABIBDIAL1AEygwAKghYvhgFiAgwzgRAiAQaDBMSACb8BN4oV7QEGixXtAQaBDB2BEGyBELqAILCABGYEn5YCR4E4oYEAWwEogwBZgBAIASiBBbiABH2AHLeAAAICECeBAwcBHIAO6YAALgI7AYEo6gEQgABKBEECECeCIFoBtYgXCwEcghDOATOCAKsBJIE2eYACXIAQEoADBIAE+AN0QYCAA26CLbgFakEfcEWCAyGCCHwDAEG5iwwjgABCAQeBFloBCIMXjAGHgA6LjQAeAgR2gQPHA3EiCYIM84ANAQIHTYIAxgIiCoAGwgEKgAwYgSl5AigggCDRBAVPcQ2AFlKABWGCOnMBrosNnAEDgBQeATKLAUYBNqQBRoILkYAGS4IR0JMAq4ABtgQHQYDAgT1YgAAdAdiLErSDAdMBJIQYGoEBGIIEMoE2SoEANoA3zIEEZIE0p4MAC4ABdwM6AAiABvmBACsCOgCEO7qBAZqDAY+CHN8DAkG2hRMAgQh7AQaDANuDGSoDRQ01pQDbiACYgQ4JgQxyAy0AFYIkr4sAlIIIQYoAigEEhgCKAbeQAIqFAWWAC8euAIqAAPeDIneCAXOBH9GZAJiBAqyTASIBuIsAmIEAJIA71gNBgAiBAacBB4IQ1IUAqYEABIsAqIAEvIAvO4oAqIMaXYIWaQE2ghpTggJ9gBNPgQC8gQzggA+agQisggNXgABogQCjgAW8hQCuASiAAK6AG62RAK4CDCiFAQKBACeCDWMBEIAAFIoB1AEypwKvgAfFgQJagAOHgAOPgDyGgQJzhAOVBBh2cnKDA+mCCCkBMIABJwG+jwEngRAQgwhogQhRgALsjw6sgBDShQ6sBEECIReAARKGBEoBKIwAYYMUNgMLIB2AHs8CDS+EHgqBGdyMGcGAGCmEGcEBD4oZwYUA7IYZwYcA6aQeCoEeAoAGOwKkPIAAT4EMKoEdIIIPqf8eF5ceFwWoPEGwPIImXAHNgAAEgQAKgAIziR4YgAAYgAASgB3QAxQQKaAeGQGsgABQAc2CB9qCKNoBEIkeGooAS4ABKIIeG4EB0gGogQErjx4agABChx4agxeAgTtHgBGrAQaNHdYBMp8eD5MAOQEqgQAZhB4PgBlRtx4PgABOAwYMMKkeBQEGgQB9kx3/AQaEGG4CDC2eHfsBDoAACgEOgh37Ag0sgAzckh3uAQyAD2GBACkBa4AP94sd7oEEE4Ud7gEngwQLgg+FgAQLASuoBAuSHdyBOUKPHd6AAZsBYIAAP4Ad3oEBjIId3gQFQR5JgSW2AU2FB8GLHeUBJ4od5YAI14gd5YAVVYMd5YAZHIId5YMX4gELgx3lghxWhB3lgRqejR3lgEUHgR3lmAQkgBsCoQQkAQqBAGmABLSBAGmAAAyPHeWLAn0BCIAAxosd5QEVgwuRgAAHiB3lgAAOgAufAiENiB3pgAM6AiIWggEljB3pASaRHemBHf6JHeWBAeGAEWaBPOSIGq4BE4MargEYhhYrAQaCAQWBFw0BE4MXigEZgRcKgBzvhBeKgAC9pB3lARmBHeWGM2QBDYgBJoAADIUcLQMFIAqCARwCIAqDARwBDYsd5YA8xYUd5YAdd4ACfYIB4gEIhBbDgRQsoxeVhwBlAwUgDZ4d5YAUnIACBoEAM4wd5QEEggC7ih3lgB/CjQCXASSoAJeEAhuAAJqAENKDAiCHHeWAGYKNAFwBI6kAXIAd5YYAXIId5YAR/4Qd5YADTgELgADygRVaAQ2bHeWCCCWBBQ2FAbiCBkqBAc+AEauDBCaEAsiAEpimHeUBJYgd5YEC64QDAIgd5YcC7owd5YIAO6Ad5QEeiABDjB3lggBDhh3fARaHHd8DBQwriR3fBARBBkmAEVIDggJJggzdpgiwgAWMAg5qgAUUAWuAGfKBBX0CEmuBJ76BFkyBDsKCFkQDHCINgRbSgAOSgRZ8BCBqISGAA5eAAAyDGyEBIoMADYMDpAEjgQALAVSAA6SAAAcDUCEZgQAHAUCBAsiBDtABA4EAB4EV0oAABwMwISSCBr8BDoEDcoUGtIAwVoAAC4E+cwIIaoAYXIJFhAFyggp5gQNPAgsggCtcAiAjggPqgTzHhEDqAQaBA/SADOeBGS8CBHaBBBaBG0+CAcqAGxQDLQACgRkDgSLdgBwOgAMEgAOmgQrxAQaBGtwBCYAWUoIdjIIALoIE7YID04EQH4IAmIEhO4EC3YIGTQEKiACoggCcAghqgABPggB5gAECAQSCGmGBPEWAGb+AAImBMTmEAN8BCoYC/4EAC4YA34EcroAA2IEhnoEA5gELggTJASKEAN+HANsBCIMbpAEIgQMUggDbgBZzgUqyAX+AAJaBALuERNmBGzqCA4iJA2yBBe+CEOyAPs0BA4AaoQEagwCBAQOEAB+BLqiBADiAAIeBA2GAALeDAGyDAUeAASKCGzuDANoBaoAFWAMMIB+AGKuDGvqAGfmBGNcBJIEa94AB0AHEgRr3gBr1gAZqgRzUgRcmgQFUAw4gIIAAKIMHgoAAiQELgQWZAw4gIYMAFIEAEYAARIEh0YEYw4EtIoIBsoIatYMBsoIk/4IGkIFCbIEVZwEOgRpFgQB8gBSJAiIHgBcsogA2gBX1gQRggAA0A2shCYEWMQEOgQRPgQCFgAAHgBR0gRlCqwBJgAErAQmBBG4DCUEDgRdRiAA6ggG3ATqAAWeFAn+AFLiBBTsBCYAAVYACOoEAVYAAB4MHkoAVDIAgfYYAPAIJQYBBg4AWhoMCroAAnIIAb4EjOwEMgBwGgACphAAogAAMhABkggAKggBkggBWgC4KgwX8gQBygBAnAQKASmqCAGaAAk2BACqAAD6ABY8BQYILboAQHYQAZoAA4QUtAAQ6AIA6XIAUBIAAFIACjQEIgx3YgB3WgQEAgh2YAwgMH4Eee4ECGYECpYICHYAQ4YACHYMCtIAA0oIIp4IhBoEB/gEZhwAshwMjhgAsAQuBCdCCIU4DDRwagCExgAAVARuBAPKGAT+BAx6AH+eAGskBT4AkjYAiLIFDw4MoZYAE8wHIkSLKgAOkiggcgR3nhCLKAQ2BA02ABm2rCBwCIA2FIsqAAEACACKABkuIIsoBC4IdGoEl7IAAaYMiygETgACVgAA1gx+tgRg+AQWAG4eAGlMDcSALiCLKgAoOhR+tpQCIgAosgwOdAQuGIsoBDY8iyoEAWYEBG4wIrAENgiLKghTDhiLKgCiTAQiRIsoCyDeDABuUIsqCKMqGIsqCBIOAACGIIsqATcSBCqOJAYaAALyEAO6CCpOlH8mAAMeEAM6IIsoBC4UEjoMiyoABFYEA5oIBFYUHzoACNAEOgQ82gi2KiyK5gArtgQxchANhgAGqghRfgR35ggdRAQqLEGUBJKQMWoAewQIgDoI8xIwdVoFEbgEggkVCgBj2gQdcAUaCB5yAEc6BIIKBEPiCIgGBEYuBAk+AAb8BA4MUYYIAloAAN4AErYACXYMAGQEogRZXgxRyhBBOggPagBFCgRFAgBmEnBDpggBnAhtGgAAxAwBB54oI4oAFVQESgSypgyZLgAASgRaoAYCABLcBdIMAJpMQyQK9/oIeEoIT7AIAcYFHuoEOFQIMHoYgP4AEcoIgJAEGgQFpgwAUgABmjwAekQAygC2FjgAUghLHAc6FI/OEDwWDDxYBBoIrvYEj8wEKgzdJgw6dgADYgQA0Ac+DAruBFnuHI+qAAQIBzIsj6oIBkgFUgANXiwK+gBv1AiAKiCPqhwREpCpFgwOngRzTjCPqAsg3gwcZgBxHiAQ9iiPqgQQ9gBnFhAQ9gQe+gR4jhQQ9pQCBiwQ9hQNbgAEhgQgugAU8AQqCAKGAHOqCA3uBJ4qEBEWJA1+eI+qCAWCLI+qCBBuBDneBEGmSI++AAWQCIAuEI++FBCaqJvCMBCaDI++EBCaDI++JAMWBDTeAAISJI+8BDoE08IApOYAAwIcj5YID0YEB6IIj5QEFjCPlggjujyPlARKGI+WAChSNI+WBAESII+WAACKKI+WBIemAILCDJfmHI+UBC4Mj5YEAHoURQYkj5YAP94sIsY4j5QEOgSPlAQ6CAE2ABROGI+WGJ3qIA2CBKMGNABSHJ9yHABSAADyFAfOCBP2BOCiBAQOBK4qADWeCAVWGDHiBEn4CA3aAISmDHXeABZYBa4ERgQEihAyeAROAIyOACHSBE4WBAD0BBYFMV4ATioEDdoEIMwEFggHIgQymixsZgAAHAQSBBH0BR4EE/4QGtoBCeoES34MkYgEGgVRVgxXBAkG5hxKXARSACRSDFvKCAV6BRayBLJWAEpaCAeqCFnaAH1yAHzKBG3EBDYQACgEYgAGegAAHARSBAcQBBYECA4AM0YAMq4ABloAkB4EauIAdOQMLSxuBEtCAACaAChiBREuQGMyEFuuBEvuEF5aFEv+BAPQBRIQS7IQS+oAAXYBQ5YAAvwG6iBEtAUSGF/2BAMWBBrSBBqiED3cBaoEDzQEDhQDHgR9ngUSRARyBVVaCArYBRIAIeIAAEQEggSQugxILgQB1gQgzAiADghThgVGFgQJBgQEYAkkbgAI+lhhqhgDKAQWEAMqBAH+CE66ADjSAAMKAIJ+CKVmEF8aBHhiCHaqAAMYBu5IAz4EM04UAz4IU2ZUAzwEkjQDPASjkAM+DNeCJAM+BHNUCQbyJAl0BBYEB9YIEzYcZ9IEur6AIRYMAnIUAkYAC4gMvARyBTqsDAEGaiwmBghfAhxidhBooAUGAOeuAJraAAPABCYMbUYASGIwczIwYgoEEaoAUOYIEaAEUgAAIigj6gkY1oAj6gQikgSMuggOSASCBUoYDAEHQigUVggClgAXphBfJggC5gwejgAAbARaBFpaBAKmDK8mBK9qBP8SlELuEE3mBBWGBNIKACV+BUweDJGKBKB6HKB0BCIEK9oAAEIkoHYILD5YoHYAAbgE4gUpvhSgdgyhLjSgdgACbASyBAbuCBi+ABtGBB9kBCIAFloUn0JAoH4InwgQ0IgZqgAAnAQmAACeBTumAJUSBJUgBSYEhqAEIgAA4gRLDgigfgAAjgAUhgBAEgCY0gSgfgACWkygfgU6ugALvgih8iygfgg9ciygfgATcgydYAQSBAYWEKC6ATD2FKCmCAM6VKCSFAqaHCs+BISqAAKaDCrgBHIFZXYMHB4EK1IERDQMIECeDJEqBAAsCKAuBAVuBAo6AAAeCKKyBBdq5KHMBBYAocwEFgyhzAQWCAJUBG4JLhAEchihzAReDAmSDKHMBC4AodIAMxAEQgyh0AReDI94BB4Aj3gFLgD0mgSH7BAR/QX6CQhWARQ+BAieBJFmNIneBAOeDAkwBKINTMIgijoE82gEKg0ClAw8QP4UACwFxhwALAR+AAAuMIosBCIAiiwLXJIAo/YEhuoFO8wIQNIEiQYAq3wIAGoIC44EBY4QiiwEcg02UgFVZgwCZg0pagQDqgwE0BQRBmgVHgCsYgRpgAYeBA4uFKUyAJpKCAx6ADEiAAHmABDCAAXiHA0KBAa0DABA2ggApgwcfgAIdgwE5gAdfASiFRlABBIBWMIFE8QJBd4MkNQJLG4EP3IQAEAcDQQRKG2pKgAC2gBBCmCI/AwRBKoEQgYIAqoNECYAEcwELgTBsgAB3ARiDDqYB8YIEpIMvyQMwQQyAIUgB8IEY4IEEOIMAsQGIgACHAUqDBgoChAGAGdYCAkiAEoEBwIEIAgEDgBUKgAAMgAJHAcCBULQBBoACA4MbX4BO8YAAKQIgcoMJdAFsgSUUAh9wgEBcBEEfcxCCCGIBbIIX/wQALwEygQAQgQAJAzAQPIEBSYQNAoMFQIIAm4IBLYEBOIQEc4EAYwMEQTmDUbWEBXiCAC+DBhqBGYqBA0uCAHqAFVsBH4IOl5MAHAGLgRxvlQAdgCEOhkyjgyMXkwAoggoV7AAcgB77gkiKggGQAQmAAeMBQYBGhoMDzIIBroE2UgICSIQBjpEARgEggBKFlgBigQfVjgF+ggLUgwKigALmgATxASSBCv6BAyaADEWBHtiAC/OABRKBCq+BBPaBAvqECgeCAF2CALKABLGCAH2ABpwCR0GBBGYDCBtyggC4AQOAAAiCXY6AAAgBEIEITQIbcoIAhIAAX4IG1IUATYMcQIAKH4QASYMAqp4AJoIi0YMAKQMvAQagAE8CLQCBE4mcACa9AX2CALeCRUCcAI6CVhSBTQmBCvShAQyZACaIAQyAAcABC4ABs4IYxIAEG4ADQ4EGn4EAN4IDUoIdZYcKQwEgglrtgwOBggRbAcWAJpkGBQIJCQkDghSLAduAMBSBUWAB54EMLIJZvYICLoIoTocAxoAHbwIvAYAG6YAG54EOLYEAbYEEaIFDtIImgIJPdwFPgwPrgAoXghm4gADSgjE9ASCAAL+BFpGGHtCAEbuCBzaCACMCLEWBBHgBT4QZlIcA0IAARIAGpgFrhQDTggBJhBIwhgLcgRWlgQwTAQaBBPaDDvKDAuuDQHSQAIkBBoUAhAEUglJYigCHgAClAU2RAIeBAL2GAVqBAVKCE+KGCbyAAD0BHIMGEQEUgiBzgQAThAEjgU0KgADvgkZGhADqAQePAGOAGPeAABiFAGOGBTeCAfuAAEqEChWBIPmBC4SDAQqEAiGAEzyDDAaBBb6EAjOGALeBAjCBDuOEBQ6BAIGDBg+BYK2AGBqBB2OKAIaAABaPAOkB24IA6YYARIIre+MA7IArFq4A7LEA6gHniQHLgQNXgQDIhADUgBdjgh1RhQCpgRPDg0siATCXAImGAB6aA8uJBwaBAIeNBbiBKUeCAs2CNiGCAAqCD66CAAqADAaEAAqDAI6CK3aAADgBdIFFroFJY4ED8oAIP4Ez8IQIV4IKc4EE/YMHFQMBEDWCL+KFCOCABQQBAoUfnwMCQZSBESaDRDGFAFcDAhA5iABihBUJArQtgwxCgQmrgAAdAVyBYKgBToFkFIELnQIDaoE8f4EADAFsgAOmBEEBEC6DACYBbIId8IAGfQMQNkGABXSCAAuAA6MBG4MA1oAAVgFggwBAgQArhgHzgAANAqAtgUhpgAFNAqAtgUgOBCgCmC2JB3SwAB+DAbCBEg+BFD6ADCuAIAmAACSBHxWCADSADPGAEk0BdIQAt4EPK4I+24IAToEABgKkLZsA+4EQsYAB448A+IUA9IJg8IIBIwKgLYIObJ4BRpkAToACNYMBRIEBv4IjWIMhfYIAy4BFuAKDAoIVWYYBYwFsgyVogQHaAgFFhwAlAklxgA+VgDhjiwAqgSFHgQ4ygQCVgBbHggInhgICgi3iwAICgQLsgwEMhCrJuAEMAQeEEWKAAK6AD7OCET+CAO+BWqKAMq8BAYFJjYANxoEV44IPA4Id/IYACoBijIEyxQGCgRtkgAkGgBFoiQACgAT8gBvygBE6gR4vAQiDWTCAAAyAADWAGfSBAAqBTuaDAAqAAx6BMfWAAAqAC82BY2CAAAqAIKKAXUGBAAoCB0eBPNiBGMCBHoSAE+mBFdOBE7YFA0H6AUmBHreCEVuCP4OAFd6BBAOAIsiBAAqBLMWBHMwBCYJNj4EcrAEJgk11gRyigh3DgC/CgQAKgRDHgSJ8gQENgAnLgBRfgADUgl3Cgjk2gQcFggHjgAMggQMJAQOANGuAL3eCAHCCAyyCAyqBY9iHC3aBACuFAB+CBNeOA2qOAB+BAFqACAOCBaiBG20ELQCQIYADdYASjQJBhIEffYoDe4Au74IuRoMCfoER6wKIE4IAHAGIgCTjggKogicSgQOYgwyqgwOYggKUgQB/gRYUgQHmgQQ8gQNUgwnJhgDMAQOMAK2GAB+CAE2OAMyOAB8CIAWBAB+CAYmoBDaEAJyFBDeEACy0BDeAHeiBAO2BTfoGQQxsQZgggGhyAQCAM7ABC4AATwF+gBmMgzFyAZqACWiBV5MCQX2ANk+BNF+CADwBBoExVoYJ5IAA3oAExIUGCYALCYAKHoFuqgECglSXgAF7ArgtgwOhAbyAAQoFdHIiBjuAABKCEMIDA0EOgTLUlAstAQaXDKqBESMCuS2DDK6AVZ+FAF0Ca3aEAF0EA0ENa4IRu4AC34AA0QE2gAAehABxAQq/AHGAKDKBAMCBAHMCQQmEAGcCB2qAFEOBAGUCEC2CBRCEB5oBK4FPaIIBqoAxm4EPxIJl/4AADYAXGYUoe4EiW4ENCoJNyYEB/IU0AoAFGIIACIABu4Mo54YQPoIAIoIHvIMQmIEkroIFVwEYgQIMBEwNAxqDCEKBAdyBZxKVANWCA5CEACqVACOFCGyAD7KYACaCACMDLQAznQAjgAALuwAjhwCPAQqfAI+DUMWWACOCFSWCH9yAajMBdosQkIMDKgEYgWdDAUqDBsiAZlCGXEMCRQuCNPMB+oEnJARBewscgE+piDULARCADGGHNq8Bu4BxlYES9wE0ixL3gQ63glYXmBL+gAAgAUScACABQJwAILATXgF9ghJoAfGAE/0BC4E3kQEBgADEAQmCE0sCbBCBcC6AACcBbYET6gcQQAu6CQEVgTXcAUCAJWSCBtICBkGBOU6DDdYCIAeBEoICCkGADTSCZrECdGqCBOWABPCASYaHBPCAABqAFvmCDXuCV3mAF9cCIQmAbccBDoEj+oFAmIIAQoAQTYIAQIEKeoAADIEkY4EAMoEkJ4AABIFOBYAW2YEZpYAlu4EsBgEQgB8JgiomgAA8gi8UgAA8gjsQgi8UgSNEgCG/gQAdgUnxhAOKgySKhABYgRuOBAhLGyGAOZmADFEBAYImL4A72oEA04EAzIE6qIIAuYIAQYIeXwIgaoEAZQFrgAkAAgBOhGgMgAALgAIXgQCxAkdygBkegjGogCLQATuAI7KDAFKAAO2AAK6HAS6HASkBIoEJPgEKgwCfhAExgABagwEzgWDcgixSgAANgS5jhQFBAkETgUCEgE9FARWEBYwDAA4CgAuPgT2DDCESQe4IIRVBrgghFIE6KAF/gAARAvANgAARA7ANIYAyQQEBgBatBA9BCUuBaTaAZReBYJsBAoAU7QFxgGl+gARZAw90IoAHPQNrIReDEfCAKZOCDWSABIOBCiOBY4kDdCEYgAosAX+BEcECIBaFAMKARL6AFDEBGoAyhgISTIRB7wHggjyiARSBRN6ACimBACaAQR4DBiAVgQdoAwshGoEk7oAIXwIiDoEBYIApw4BGJYMkzAIgGIIOLYEeZIA8zgEHgyyKAiAQgAFJgCUCAQ6BJMsDGSAagQP1gSZCgl9jAwFrdIMBYoE9zQF2glwcAQeAWRuJAhOGAoiAAbSEAoqAbICAIcyBUocBB4Fw0oAAy4FRSAEGgh9cgijBgEw0gwGwghzNAQyDChSCRQQDAiAXgCBFgRpQgwElgQAYBSAPIgkhgDdshwDLgQRQgQC2gBlMgQC2gRVPgRPWgD7fiACygWHCglligD3EgmyrgwCYAQCCbRmAAJiCAqODX6oCIBOBAFaDWtuAJKGBAmMBDoEJ4oApA4YBiYQAB4Ifk4AApYEg3gFGgADKAQ+AbJKBPVWDGRkBS4Il/wQgDBsigEegAQeAALIBGIIBegERgQFNgQGTBAZ0IRCCL2eBA3EBDIAvvIEhoYA9LIEBToJJ7oIC/IAFUAFKgW1WgDyaggJUgQJNggIgAyATaoACRAPTBkuEAlsFE0HRBEuAAl+CFEqAAtqAJUCCRWgCIA+BAReAAtWDCSCAM7WAUpQBdoEBMoAhOoED0oEAbIECNIMDrIEDyQEAgwMPgT4qg03LgwMdhwOTgAAYAQ2BAAiBAzyFJ0EDDgsrgAFfggHLgATbhB/hgQSTgVyrgQAHgmV3gGqzgW67gwT1A2BB1IIE9QLEA4JxIIQ8goFVoAHVgRgkgRcbAdWABnSCAAeDUOoBAYEdcoMAHoMlpYAQVIEmy4ADNIEOkoFQwIAcz4EoKoEMDYM364AOYYAIxQdBoIbi7X5zgiASAgFxgXGigzBohBwSgAoagAoQAcCAb6mBABaCIaqBAGiBHKKDbtsBc4Agu4FrX4AuKAF/gwKuggDlAyADc4InW4FyHIAAPoEQSIAAKokA8YUCXYAAQ4AYjJQAM4ACoQIIdoEAHoACwYkAHocAGYAC4ZMAGYAcDZMAGYAQuJMAGYAHMpMAGYADIZMAGYA71YoAGYIA4oAdUIEA4oAbRIIA4gMLvQWCB5aCA9qAACGAPKCEXdyBCviAADGAAPuBA60E8f8Da4ER+wRB8P8DgCDEgWpJgXJggXZBA4CAPIAKF4AAW4IAGwMgAHKBWXWCdM2BHpiEAXaDAVSGAFGBZn2Bc/iCAXGDBvSBAGMBcIAAUoEHc4EAbYFi54IAUoAAUIACKQLbAoEMgANBsCuBD3iAbASCDjeBAmeDAE2DAA2BMtuEAAuBDZmEAAuAbwWFAAuAALaFAAuADiGFAAuBFMCEAAuADtCFAAuBDUyEAAuBaamEAAuADqqFAAuAQJ6FAAuABAmFAAuABZiFAAsBDocACwEPgQALgnVpgC0IgiAsgCGJgQR3gwD4ggLZggAJgQGkArArgwGlArArhQKIAQKAAr+BAVIBEIcCyKQBUoYAWoEj/4QBzoJsBoICuIAADYQAC4Fl3oQAC4FxhIQAC4ABMIUAC4FoXIQAC4FmF4QAC4FsZIQAC4ABMIUAC4ABMIUAC4E/YYQAC4ABMIUAC4ABMIUAC4ABMIUAC4ABMIUAC4UBMIACZIMBDAEQhAELgRezgS9aAnRygAFEAwsLkYkJeoARooMInocJfAEGiAl8ggUQhQl8gCjFhwl8iAjyhwl8ggBCgTpeigl5gUUyhwl4hGYngW/5giR1BEHAAjaBDMySABeCTE2BFZGPCa2CB0+BJFCjCa2CCR2DCa2ICjeHCa2ALDyCAFyAblOECo2Cc+OABh2BCYyFLmiAEDOICa+ACMoBToEINYBbhwEggEMQgWFihAmyAg0CgFWagSjkhgmzgQiEgD5BjAFnhwFihUQjiAFqgQh/hAm1ggAXASCBCGuFAI6CBbkBFIAGzwUFIhMhFIwJtQKBAoAJMQmgDyEUQeAOIROBCbWBCUICoBCBABEBD4BaDIAHWAENkgmzAgQagQAbAnQigEqVAWuAMiCECbQBDYIXHIEJtIBT4IAAIYAH0QEWhAm0gACAAiAVhQDDgCvAAWqALtMBGoAf6IADdoEGqgEOhAm3AROBABOAE4OFCboBDoABdgEUiQm6BA9rIheBAWuBCO8BD4MJugEHgCKBggs7gijzgAbZgQfmAxggDoEH0gMYIBeBB+0BGIMJugEGiQm6ggFpgQfJgilNAiAGjQm6hQLGgAG/hALIggkiAQaBCSIBBoEJuoAAz4FB9IM5f4UJuoF2eogA64oJGAEZgClKgEY7gAAoAQ2NCRgBD4AITAQPGyIPgRq3ARGACVaHCRiAAPGACvuADKqCCRiAKcCAT/+DMYCCAKyBVeSDAmWAUY+BCRgBB4AkUoJlMIIJFoAj9AISaoABpgHUhgkWAxJB0IIJFgEHgFO9gkW2g06ggE56AQ2EMO6DMP8BEYAYfYQJFwELgAp+gAM8gQBrgAGRhAMWggkXgAM1ggyqgSzbgQAYgQKKgAKAhwL8giXJhwkYgQVugTXXgjBOhwqoggGkhAqohgp2ARKECnaCNjGCCncDCwuqgBHygQdSgRY6gTIzAwFBnoISRQQAQYgTgAASgAJJgmyEAkEegwAVAfyBYbGGABUBE4J8JoAACYAAWIMD4YgF0oABMAM7AZSAa+iBDqACsC2DRRIBqIAACIEAEAKgLYEToJIAOZYAGQMLrwKCAKyBD++BEi6BDwKAEkABBIASnYA8xYAAEoF0nQEEgxKdgg8ugRnIgxBAgkQpgBBAghPBlAAcgAb4gxIsgmKIhABdgBKdihKbgTJGgxI0AgAQgEX5gwBKhxCmgwBKgjValQAchRELlQAfgAL7AXODFTCUAKiGHhODECKEJI+BD+oBEIA3E4MANYBs/4FAYwGngBPQgkdRggDMAwFBCYgBG4EBWIRtS4UA/wG4hAD/lQAgggEfgxK9gBKvmQAqggBKgiIggwGZgQCAgm61gAH7gQE8ghRwgTkkgQA6BMAtC6aFAKmBAeCEAK2CSeK8AK2FAIKCTQWBClABSIJtGZ4AVIEAP4cAuoAKgIIB9AQLC/wKgGfAgwarhQX4gRtcgxJugQwyASKAKw8BLIETvoEKnYEDVAcJQf+A/59/gjSsAQaDP3qBDB2BB0CBGVmDBzaCIyOABTaBGWyGBmKABxWCAuoBAYFv9QMvAbyEAAgByIAACAJBIINYN4AMh4E9KIAcroAMW4EAOoAhtIIRcIUWKIEYFIQpGoAOX4ANaoIpAIEBFwWYFmoQL4IACgGkhgAKgACwgQDFBJwWEDCCABCABAKBABABqIUAEAGwgwAqAkH+gX/YAkESgQYjgAECgDVggQZyAQKDL7OCN50B8IBBxIMA2oMF5oYyD4EATgEtgQAygBe6AwVBEYABgIEEEQYoAqwtQQqAIsmAWMmACm2AJteAAAqCLFCAABuAHKCBeJuCEYaADXyBHpKBGrSBTpmAemiDHmiCJjECECuBAICCBByDdXyAAnOAGA2EACGAFVOABCeANWsCciKARriSBC2NAhGJA8eXAmGBOC2FArSEBC0BAY8ELQJBoIBBjAMaEDGCAoeBJhCEAI2Cdr2GAIeEAJq5AI+EAz0BDYEqpIEAmoAAlIIKi4Q3AIRMAYEAk4EB6YEt9gH+glr5ggHogUlaggEXAQyEAJCBIYuHATK4AJgBBYIH04kBKoJuPQELggEohABngWvFgAKxgH73gwChgACKAQGHAIqAYuvCAIqDCF2WAIqCAGeCABKHAIoEBkH9/4MBJYIAkwENhwEdwwCTkQEfASKAPaKCAksBDIIAmYcAb4UAGAEEgACfgwHKggQ0AQqGA5iAA+uCE3UBCoJCtoEcbooDk4F/JoYAR58DBYEnV6AAwYEZz48AvIgDB4kArIYEDoEEcoAAkAMJEDKFBHCAZ4kBB4IADoEgqQExgReWgHzTgiGJBywLC5YLARKBDT8EIGsiD4AqpIJ1IoBhaIIXj4INCYEX5oElogEAgk1NAtDHgAhxAdCCRymBAAQBSoKDKgNB2CiDDtoC3BaBVZ4Bf4MVFIIMF4FqJoESWoBXKgEogW2UgBT/ggDagQCkgFc3ASiAAUuFOeCBLzyBFG+AJjmBVLqCcAmBQtiAH0mAgdiACPiBAMGAfraDEqGDBPeCHB2ABO+BNG8CCRuBFoSCbe2DBP+CE5+ANG2AACMBrIEajAELgXPmgwBSgB4bgAG3hQGiAdCALZSAChWEAJCCFVSEcIiGAHCAa1yCLFeCCgyBBgWBCduCAXOAAV2DJiCABmyCAPSAB8iDBrkC0CiCABGCAO+AAISAAF2AABUB4IAMBoICQoIAh4JF4gLgFoAAEYAfRAIQM4MAjwHUgACPgjGlAdSFADKCHwiCAJeABm2EAP2JACaFAB6EATSCIYKGAOoBBYMK4YMMcYEA94INhYN3/YAMKIEfuYEWFAEEggAKgBokgR7JgADfhCHNgQr7gC1NgwsCgBw/iACthEPxhgHcgCshhAaQgwCcgACOggCcgwHhggDKgw8MAbyAAieARc2BGfqAcAWBAmYBCYYCcgEQg3vUAQiDWwsBBINOpoJD74I0hIAKRoI8T4IsCIUcOIYUEYIx1YEMrYMAhIMBYYUK94AxP4IJ7wHUgACtgACUBrwETBshEoIHboIBzoEjGIAv1IAx+IEvNoQAPIEktYAX84A0QoAB6IBSIIQ8YoFDwYEANYEHJQVMIgIbIoIXgIGDsYEqEYEFdAIgDIIV/oIX34se14IU8YA+jYEEIIBIMIFV/4MAbINsH4MHzoAAaYAAfIABpQMQamyDB9GANB+HAtmAQN2AFkeAAIaAAcOBACCDAt+AAMqChp2BRyiAAHaCRNkBAYICg4AB4IEK84KAeIE8noIO3oEI0YAASIE6poIOOoNIvIEBHIEArAECggImgl9dgQ5egg+4A0ECSoEABYAtGoAAO4EAXYEAlIQAboEOP4IC/4ID8IM4LIEtKYQBR4EBEIE+HYIJWIAfxIEBQoAFfIMFT4MA9IAAFIEIVQIFa4QA8oAR+4UDbIUTBYEK4oAMuIIWuAMAQbqAAkeBAU+BEJCEAhyBGvEBf4I6nwIASIECxYIEioINWIQbhIMNBoMAgIEFBAEPgwJJgS/RggXIhgGkgoHagQB8AXGABdiBDj2CAmgBS4QD6IQ4NIITv4JD+IIAnIUNpgEPgA5XASSAFa+DAF2AhnKBHHGAbqCBA3yBABGABt6JAraBhQ2AA62AA1KHAOsFC7YCAQmABxmBOSyCgieCAsaABtECOwGAP0sBQYACQoAE7gRBB0GKgGaCARuALHGDDkaBHC4BCoE6ZoEEhoMBAYJ1eYEK2ICGaYADHoNCyIIaBYAZooF45oIW7oGMh4QC2IAv24EET4EFjgFLgRBtgAbOgAVegSe5gAQHggE9gxotgALtggDHgh/2ghYqggcdhQAlgHCjhgLzggLYgAtugRCLATuAAAeDQvqBCuYBCYJ05YEAHQHAgwAdAsAVgweagAASAcSDABIBxIBieYARWAIKQYA7hIEEtgRGIgMbhQD3gCTwgAMlARuEAQ+CATgC0AiAATiDDESAJPqBAF6CCr2CCY2ACr2BAHqDBpCAIryAEYeBQNGCef6CB7YBL4EFDIEANYFDOIIikIMBgIIAkIEOsoIcfIQHlYEhwYIPJIAHp4AzgwIDSIcH8Y0OgokPI40AHIgH8YATp4UAXIAH8YMPgIEFqIAU+4EMeoEAC4MK7IAk7AKQIYFBcgJ0IoEWpAQvAYYIiwCmAoQIgDawgwBLAQeAAKeAAjaDCJmDAKsBB4gAq4EHeIEAj4JUAIUtQ58Aq4BYkoUAYIAAq4MAYIEkJoEAq4QmF4UInwYJQRxrQWyBF7WCfxECkB6BOnCDAIyAAA8BoIA0hYA0mYMAkoAaCoIJSYBJAocJ/40AhoIuOoQAHJYQcIwJ/QEEgAqSgzSVhAChhABqhAAVhQCrgACCgQB6gQq0gQ1jgCbRgUgggA4SgR8eBIECSRuAAXgBI4MBeIAW94AC4YANoYMAt4ECGYBEpokRN4AAfQEGhgDakgCupBE6hwFsgADHhABggQe6hgFsAQaGI9oDCUEEgVregAjFgAFpAR+ADLCAADuAAAsDoBwigACLhAKigTSwgQK8hAIVgwB/hytZqgIHgX/TiwFnjwCghwByhQLShgCwgRzFgBhsgiF/AqAtgUNygALeAy8BgoGF6IJ8kwMvAYCBcneBAD2EAhSDXXabA2+iAiKBETCFALiAgIaEAQ2AiEWDALaBeIiDEKEFswsBCn+DBWuBBY8BIoAfEIEw7YAs9wEbghsvhAV5iwV1gI99ghzcgA6LgQcVgALygU2VgTgkg00Xgj+EgmntgILhgStDggWEgwVxgQs4gj3SgBVJghVjgABmggTFggDEgATFgR1CggSagQJ9gAFbgQJ9gD2OjAElgAHyAQWIASWNAeKJASWNAByIASWAXJuEASUBBYAB3YMAYIGCSIQBJ4EACwELgQqGgSXyhR4ngRXehxA4hBRUgXqYgRA6gQX4gAD0gRTlgh2whQDmASKCSSaDitmDIeSCA0+CAqaAHluCAfWZA02iArKCI/mBBWCBAMCCEhuBbe+ABByDAfOBG0GGD86CfBKBBraDAIqBKraBAQwELwG+FYB12oYEs4kDRsAAlIEEeo0AlIAF/IAAJ4IBZAEFhQ83gB1chFsFgSoXjQ8zgQ4TgQBtggasjA8zgQJrgi9njwHtjAU2gHbAgyfhgVCZgA/HgQaFhgBxhAAagCs/gQAagkrKgDwQhHs7gQfQjQE3AcL6ATcB/oUBN4QPmeIBN4APrJABM4NOxIIBJgHEjgEmAcb6ASYB9oUBJoIqHeQBJoMqOo0BJoAIQYN+FIIj/4IDkYIKA4At4gFGgA1zgQWPAQiBBYqBCgOAAA+ALiGBBY8BCIQKBwL/AYCXtoMQmoEJsYEQmoGRXYUMkIBNOoAMC4FKnYMNKIMOBYCM2IEAnYAOzgEEgAyugkONAQSAHRKCGyuAAWKABV+FAECCBLKBBKWBehSEMPOBABiALt6DABgBDYM9nQENgSpzgATvgQ9cghCPgAAIgj4agAuPgw1cgBraigBCggBjggBagXgWgQDtgQy3gQA/hA+tgXkygQEpgg9Vg38phA0ehQAVgCmLAwALg4EahIANGYKLyYQ7zoF2GoEACIVf84ApfoEACoEPggEggS+3gRYHgz0KAduAG6oEAUEWTYAru4AGs4BfxgSggAJxgCe4gQBNgzb1BAECAgKCC9oDQSpGgUA4AgVGgV/lAwBBOYEtAYEG+YACXwML3AmCAYaBkLWAQs6CAhQBLIEr9oAG34ByeoEAD4AAA4BUXoIruoMpOYMXo4J7nIJ6nIMCLgJBKoAWwAJ1IoB5KoEBtYACSIEAFwFsgwg5AVyAJaiAAYiBi0iBmHGABI6BAGuAAtyBYdeDFJsBT4ASTwFLgRbjgBwAAUWAZa0FIARHcnKBZBaCLJyEPNCADFuAai6ALKmBArqCAs6AW2qAHU2EFgOFABOAIpmGGnCHABaBk7CAJCqEGmWHABiAHY6GNKSDLnaAHKKEgC6BARiBAAgBOIIAxoFD5IEAt4AfvoI33oIBBIBEMoEAJYE3q4KKz4E3fYEvroALx4EADYAD8YIDboIAXQFcggANgVH9gDfGgQF/hRk/ghyqgDWFAhA3gi0NhwARggBWggANgQdeg4jigTlhhBrqgn36ggFjgBCcghjugQMTgn+Og33+gQGEggJ8gRB6gYFPggSbAiwigjMagnuFgRyjgi+MgQJjgQEkgQDZhAAlgi3XggPbAWyDAEOAABeAY2OBAdiAAWQBBIKYt4AAkYEuKIE0KIEASIEDw4FFAIQBIAGwgARGAUGDg4+CCUGBAHCCALCAAEKBAAcCtC2BQI2CErcBtIMAGYEwFoQBe4ADUYNBOIIAkAFsgSTPgQCLgglSgQChgwBBgWjBgQq/AgVJgDrTgABhggBIgQC0AVyBBT+AACMCxC2BHueCABMCxC2CDtUBBIM0JwEBgAMkgZ8MhAFCgTZXgSIAgQL+gQGtgBpkhgD0gi8LhAAlggCygQLVggmMgEILgCo5gQBfgpI2gwCggTnLgQHphAESgolqggFZmAESgEgVhBOsAWyDA1SFARyCAYeCBo6CAnCCP+yBBYqBMs2BG1iDATaADQEBA4ICP4MBLIGUVYMAjIIAOIUBLIAAo4QAPIABToMAWJABJIQBAYAMkoAKeIQDy4IDCIUD54EBDoAy2IIDt4QCUoFG+IAD0IMhhoAQtAFFhQO0AQaAYV6ElRmCAWODgtmDAKgBOIAFMYIMfINHdoF/9oID7IAE6gEagzHAgwGWARqCOzWAGJmBA/yDA0qBAwGCAWGBA7KBEucBQYBa0AEDgoqNAUGAQkuAHV6AJIUBi4Muz4JjnwEQgAqkgy9fghfJgGr5gRqTgZRnhAVsgjkFgBo7hQJxgBT5ggN/gi+VgAAYgAANgUSGgQQ2ggANhAPVgRptg4EKggBdgWVqgwAcgjVdggAWgACQBBALC4SBHe6BADKAZCeCBEiBJ6WCBAOCA0SCXCyCANGBAiuHHWiAOaYBGIEyp4M4rIIAcwEwgh73gUB/hBGLhQAThDpohABGgACkhAf2gAS4gAANgSI8BQuECQEPgQd3gSDogRk+gR2ugiSDhwByA3RBhYJaSAEAgTcpggARgAKzAoYCgjy1gzCEgzmvgTU8hABuAVSDAriDAoyABwSCAe8BSIEABQNYdHOAgF6BS3qAAA2EAq4BNIAfAoMWcIBQpYMU04EHUIAJTIIDR4IStYQBlQEsgAB5gUUWAgNrgQdtggQrAhA6gjXFggD7gjU7ggT1g1N4ggA0gDTFgwNagTR/gQARgTTFggMWgAAFAXCABQSGCQ6SACqBjvebACKCNd2CBnaBhFWGNd2AEVyBNd2EFZ+DJUqBbxmBUiSBXVmBDn+EEKyBRMCAF8QCkCOBCDCCDVyKADaCAHsBdIIA34EE34ABP4IADQKkLYEUSIEAlYFFVoABgIMD3QKAAYUeEoIV04AN6wFgggGIgRz7ggEkAUiDB7EBbIMEXwE0gBfTgQGMgCyFgQGCg0X7AVSATfeBAa6BLTmBAEmCAPaEBdeBFIqECR8DEHRzgE6AgXGyAUiCbdEBDIMByoAlXoIBx4EWIYJfWYELGIMKUoUAkYIpSYI1A4QAV4AksIA4K4ILfoM2+ocEuoQAd4IEIYAAD4FUqYQCQ4MCbIFU7oMBjoECXoEAGYIATYILMoIANYEASYQ7S5YBxogaprAAH4ML3IFSwJQBvYQ3FYMA1YcBTII3FIIBy4Kbj4FEoIQGToALSoE3GYIAwAECgzcZgQQXgjcZgwBGiATxgQAHgztQgpnHgaIogwY4gAFgAU+AR+2HOqeEAF6CaZKEAF4BAYQ6V4GW34E6pI0AXoI6pIQAYgEbg0YtAqAtgzpRnQBPmQCtgUaZgAdfgSH2Agu+gKYsggA/ASyAC6mAA+KDCmuCoIuBAAmCNN6CBFEBaoEUi4IAHQEsgAOaggSWgQdUgRGmgZV5gBiMhQWvAXCAClaBXoeEAkeACmOCPL2EBi+BABwBXIMEfgK0LYI+5IELmoQIdAFEgQAFAUyBHemDEcuBRCKBAIqAAQiCBuqDEOyAAAyCQ/4EIAhPG4Qlo4ALg4QJgIMMnoIapIIYzqUAO4AXuYANz4QIaICFkYJG/IECRIMFeYMBYgIEaoAHJgIQN4IAEoIH2AF0gwAwgQfRgRMQgAWJhAJ3gQhuggD/gUKBgB5Xghw7hwM6gQ0NgQM8ggQPAViAMSiABZyAH+2AURaBECaBErWAAH6ClCqDQH6BKi+AA/IBCIQAJoIA6IAABYBKS4gFwoIBNwEigFI0ggP7gBzcgwMFghrOggFkhRyHgh2sgliDgRozAYWBAAqEAhyBP9CFCWyDCWkBxIAfU4IjC4MlG4IBCYAjPoACZYFgBgGCgjsKgaPdAQGAAAyACIWBIxyAidOFSoCBA0KBCEqCOKeBnIyCD0yCPAqAAEKBpV+BAq6BicOBAAeEDO+AB4yAFCOFAEEBAYKfUYOGsYEAj4ANAoAAQ4EUcYAJIQMLqwSAH5SBABkBfIEZR4Ao34EADAF4gwF9AowBhQ07hArlAixrgALjgRnAgQVKAQOAYe2CBYABkICPvYIA24ABlYAMVIAANIIFkAE4gBzJgaAwgVEWgAWUAQeCPZOBKvWBLvaBBNODWCKBAAqCAJoBNIAdgIEBmIMdKYEK1oBdwIEL/4MAL4AZ84JOoIIAMgIgC4IIk4EACoFaO4QADYADSoM+CoE9+IMSMIhmMIY9/4AAgIIALYEFfYE90IAADYAB0YI+BYAL9IExLoAADYA6QIACkoExIoAADYAJx4AAUIExFoAADYA+DoAEnoExCoAADYA+EYABg4Ew/oAADYIUaoEFSoEHPIAQDIIPSoAuq4E+F4AHjIEguIM+HoAAn4Q+HoEQfIOFS4BfT4EACoJAB4Ad3AEGg0XTgBE1AQaDoPaCW1uCHKOAANeCFPOCHkuCWuaAbeaDAhSAAu6DJ9mAAuaASgEBIIIi6wEDg06NgQD5gwF3gCwoggAKgAAUgU6XAQyATRiAX/OCAwmBA+YBAYELroEudwIiCYECzoEZS4EABAVJGwugC4EcKYMJc4EqGYQJc4UJdYICBYkJcwFFgwIXgQl0gECcgAFdgELiggV9kQlzggJimglzgwf1kwlzgglsgAKVhRwDgghxAzYCeIQFU4BlGIACFYEiQIAATwFggU6IhQBQAYCCAO+BAt2CCaGEBHSFCaQBBIAJpIMH9oBMtoYm0YIeTIALpYAB/QFBgAFDgwA1gQBngFQDASCBANmIAGyCAtwBeIKjVoMI6AEFhWDIgAAYiQeRggY3gQNCgAAJhQnogwqIAWSAD+6AAk+bB8eAUL3HCe2BKNy0Ce0BeIEd34IJK4QBfIA/UIAHnoAAjIAo5IEbFYJaI4EA3YMGoQGkggD6AqAtjgmugB3lhB2yhAIjgQUMgjTMiQIegAWYlQXPgyBkiwnKghojhAnLAXiECcuDAhOCCbwBaIUJ2YEOc4GRj4YJeQFcgVCHhggqAQSFCCqAowqaCNeCpLOAAAoBaIUFjoIF/oQE9/IJ1IcJuIgJVZAJs4IC1JQJtoQDYoEKDoYImoYKKIYA+gEEgqFtgwFVlAAugASYgqla/wEhhwEhggII6AqLhgJhuAqLgQRegI7RAwALP4IPmoEAHo8XIIY/xpQAH4AAHIJSNgIEQIABlAEDgAANAoMHgTdahT9igBDTgCIlgS48gE1tgJeBglCwjnXrhQ7vgRX4AUGAI7CAADABf4BQqAEGgqR4AgBIgD+OgROdgRY/gjLogFUYgnqFggUxgTV4gReJggbcgBd6gpDQAghJgSG8AktygBXzgFLiggUQgXY/AciACY2BVM+DAHCDXj2DV4yBBWOCmcgCQSqBEIqAAV+CFrkEQv//gYJs2QFUgAAMA4CAgoBRdwE3gFvEgE5TgQFmgAl5glZoghaDgQAMgVragQrdg1SYgQB1gSPPggDkgAB3gVVEhAAWgU+GiQAZggLHggAXAUyHABeCQhSAAB0BxIEek4AAXoBZG4A4yoAACQGchDEIASiBAA+AGF6EADCBBICBZLiAAEYBnIEsDwECgF6xgHuigxUUATiCV6mABPOEAAgBRIJLNYKS24NEOoABkQGAgmdsgEEUgHiRggf9gQB+AYiBI4SAC0UBhIEAjoAqGYBpJIIKVAE2gkVdgUM1AWyABZ4BNoAEG4OQmgIQNIIB3YAAjIATdop3F4AAp4GPEYNfUoUSGYNBu4AFJ4EaUYEKJIFlSYNBvQRBOUEqgSWPgAHUgqcKgiuJgQL+g0tKgjVng1KKgAqXgEvvgQBmgBOjgwgrhEP6BkGIETYCuICPYIAAC4AfCIAUb4KPbIB6KgGsgwAVgAiWgAC8gQAVAeCAABUBoIMAFYAIo4AA34EAFQF+gngTgCqQgwC9gQCuASyABiKEW4SFRCiCKBIBRIA4GoQyvoIWXoULgYZEIYIqoAIgN4EG3IEAq4BtYoUAEoRENwFIgwEXgDBbAgxsgBjkApQggQlaATaACyuBA28CQZCEAA8BjIMADwGShAAPAYCDAA8BloQADwF8gQ5gAgtDgxlcgVowlxlcgg1rgThNghlcgQAKgAE5gHkoAUmCBBoDCwvjgI0dgAIUBAuhBGmAsxsFZmZpY2mAsqABIIO0lBMAMS4zLjEuMS1tb3RsZXkAaW52gLMoFWQgbGl0ZXJhbC9sZW5ndGhzIHNldIYAHAVjb2RlIIkAGQ91bmtub3duIGhlYWRlciCAs44BZ4sAMgJkaYCzMgFugLPEigAWA2JpdIQARxAgcmVwZWF0AHRvbyBtYW55hQAXB3N5bWJvbHOOABgCb3KGAFOGACSFAFaCs6+AAF2As/sBa4UApgIAYoAA+IAAmgxlcnJvcgBzdHJlYW2EAA2KANULLS0gbWlzc2luZyCAtGIELW9mLYIAR4AAJQJjb4Cz6AJjdIUA4wNjaGWKABeEAJiNABcEZGF0YYYAFYsBCwEggQDUBWZhciBigLRLAQCFAFcCcmOBAIEFbWF0Y2iGADIBd4C0rwRvdyBzgbS+hgE7ggDeA3R5cIcAE4sBsoIA0I8AdYIAFoUBrwRjb21wgLTfAXOAtKSAAg4EdGhvZIAyJwQMC6UCgLcLDAAFAAYABwAIAAkACoApBw0NAA8AEQATABcAGwAfgJUpFisAMwA7AEMAUwBjAHMAgwCjAMMA4wCABjiCAAEBgIwAAgGBhAACAYKEAAIBg4QAAgGEhAACAYWEAAIFkABJAMiCGMyArQSCAIQBB4AAgAENgAB6ARmAKSkBMYADjAFhgABGAcGASOoBgYFI7IBAFgQBBgEIgCkMAxABGIAFvAkwAUABYAGAAcCJAHiFAHCFAGgBhoAAAgGHgAACAYiAAAIBiYAAAgGKgAACAYuAAAIBjIAAAgGNgAACAY6AAAIBEIAAcgESgACIAQiCAIABBoABAgEFgAEEAwQADIAAloAcnAIADoAAogEPgK/uBA4Ltwy1ASyAHNWCAAEBEIwAAgERhAACARKEAAIBE4QAAgEUhAACARWEAAIBEMABLIkAgIUAdIUAbIEAZAEWgAACAReAAAIBGIAAAgEZgAACARqAAAIBG4AAAgEcgAACAR2AAAIBQIAAAgagCAAAoA2BuSgDAAAegAAEAQ+AAFQBIIAAEAIgDoMA4AEegAAEgQAUgQABAaCEABQBE4AABAEHhAAUAQyAATgBjIAABAFMgAAEAcyAAAQBLIAABAGsgAAEAWyAAAQB7IAABAEcgAAEAZyAAAQBXIAABAHcgAAEATyAAAQBvIAABAF8gAAEAfyAAAQBAoAABAGCgAAEAUKAAAQBwoAABAEigAAEAaKAAAQBYoAABAHigAAEARKAAAQBkoAABAFSgAAEAdKAAAQBMoAABAGygAAEAXKAAAQB8oAABAEKgAAEAYqAAAQBSoAABAHKgAAEASqAAAQBqoAABAFqgAAEAeqAAAQBGoAABAGagAAEAVqAAAQB2oAABIB5uAIAuoAABAF6gAAEAfqAAAQBBoAABAGGgAAEAUaAAAQBxoAABAEmgAAEAaaAAAQBZoAABAHmgAAEARaAAAQBloAABAFWgAAEAdaAAAQBNoAABAG2gAAEAXaAAAQB9oAABAEOgAAEAY6AAAQBToAABAHOgAAEAS6AAAQBroAABAFugAAEAe6AAAQBHoAABAGegAAEAV6AAAQB3oAABAE+gAAEAb6AAAQBfoAABAH+gAAEAQGAAAQBgYAABAFBgAAEAcGAAAQBIYAABAGhgAAEAWGAAAQB4YAABAERgAAEAZGAAAQBUYAABAHRgAAEATGAAAQBsYAABAFxgAAEAfGAAAQBCYAABAGJgAAEAUmAAAQByYAABAEpgAAEAamAAAQBaYAABAHpgAAEARmAAAQBmYAABAFZgAAEAdmAAAQBOYAABAG5gAAEAXmAAAQB+YAABAEFgAAEAYWAAAQBRYAABAHFgAAEASWAAAQBpYAABAFlgAAEAeWAAAQBFYAABAGVgAAEAVWAAAQB1YAABAE1gAAEAbWAAAQBdYAABAH1gAAEAQ2AAAQBjYAABAFNgAAEAc2AAASAETMCAK2AAAQBbYAABAHtgAAEAR2AAAQBnYAABAFdgAAEAd2AAAQBPYAABAG9gAAEAX2AAAQB/YAABAETgADCBRMBCQCTgAAIAZOAAAgBU4AACAFTgAAIAdOAAAgB04AACAEzgAAIATOAAAgBs4AACAGzgAAIAXOAAAgBc4AACAHzgAAIAfOAAAgBC4AACIAQ2oAEAoAABIAACAFLgAAIAUuAAAgBy4AACAHLgAAIASuAAAgBK4AACAGrgAAIAauAAAgBa4AACAFrgAAIAeuAAAgB64AACAEbgAAIARuAAAgBm4AACAGbgAAIAVuAAAgBW4AACAHbgAAIAduAAAgBO4AACAE7gAAIAbuAAAgBu4AACAF7gAAIAXuAAAgB+4AACAH7gAAIgQO2AQeAAAgBh4AACAGHgAAIAUeAAAgBR4AACAHHgAAIAceAAAgBJ4AACAEngAAIAaeAAAgBp4AACAFngAAIAWeAAAgB54AACAHngAAIAReAAAgBF4AACAGXgAAIAZeAAAgBV4AACAFXgAAIAdeAAAgB14AACAE3gAAIATeAAAgBt4AACAG3gAAIAXeAAAgBd4AACAH3gAAIAfeAAAgBD4AACAEPgAAIAY+AAAgBj4AACAFPgAAIAU+AAAgBz4AACAHPgAAIAS+AAAgBL4AACAGvgAAIAa+AAAgBb4AACAFvgAAIAe+AAAgB74AACAEfgAAIAR+AAAgBn4AACAGfgAAIAV+AAAgBX4AACAHfgAAIAd+AAAgBP4AACAE/gAAIAb+AAAgBv4AACAF/gAAIAX+AAAgB/4AACAH/gAAIgQQKAUCAAAQBIIAABAFggAAEARCAAAQBUIAABAEwgAAEAXCCBVYDBwBIgAAEASiAAAQBaIAABAEYgAAEAViAAAQBOIAABAF4gAAEAQSAAAQBRIAABAEkgAAEAWSAAAQBFIAABAFUgAAEATSAAAQBdIAABAEDgABCAYOAAAQBQ4AABAHDgAAEASOAAAQBo4AABAFjgAAEAeOAAASAveaAAHSBAsYBBYAAXAEFggVKARSAAAQBDIAABAEcgAAEgL34gAREAQWCBgQBGoIF6gEFgAPUAQWAA7gBBYADnIBPdoAABAERgAAEAQmAAAQBGYAABIEAAgEVgAAEAQ2AAAQBHYAABAEDgAAEAROCBkABBYACLIEFpgEFgAG0AQWAPd8DGwtNgx+5hwAEAQKMAASBB1GJAAQBBIwABAEFigAEBEGwHAuAvMWLAEuNADuFAC8BBoQABIEFiIEABIEBCoEABIEBkoEABICEcYIABAELhAAEAQyEAASABduBR3kE4B0LI4UAX4UFywIQEYAFbQYHCQYKBQuAOrgEDQIOAYAHJQSUHgtphQCQhQCIhQCAhQB4gQBogQBcgQYfARCAAAQBFIAABAEYgAAEARyAAAQBIIAABAEogAAEATCAAAQBOIAABAFAgAAEAVCAAASBBr0BcIAABAGAgAAEAaCAAAQBwIAABAHggABvAx8Lco0Ab4EAa4EAZ4EAY4EAX4EAW4EAV4EAU4EAT4EAS4EAR4EAQ4EBPAGArwBBgFHNAgttgQDHAQSAAAIBCIAABIEBM4ECSwEQgAAOgwAMgYVpgKomhAAkgQdzgQBPAQiAAAiBABiFAAyBCLeDAAwBIIEAlIAyhIEAawGAgQgvAQSDAAyAP0gKAQAQDABBkSEL/4AlHwEDgpvTBQgJCQoKgEk3gAABAQ2AAAEBDoAAAQEPgAABARCEAAEBEYQAAQEShAABAROEAAEBFIwAAQEVjAABARaMAAEBF4wAAQEYnAABARmcAAEBGpwAAQEbmwABARyBffsEBAQFBYHBkAEHgAABAQiEAAGAXSqCAAEBCowAAYAnsooAAYEBMJkAAYEBTJkAAYEBaLkAAYEBpLkAAYIDdYABzoUBvI0BqJ0BkLwBgAIbHLwAAQEdvAABgA9PgH05A9AqAQ==")})}(nn);class Or extends Gt{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"EPUB"})),this.epubBuffer=e}renderTo(e){return new Promise(((t,n)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let n=new b(this.book);this.chapterList=yield n.getChapter(this.book.toc),this.chapterDocList=yield n.getChapterDoc(),p(e);let i=this.getDocument();i&&(y(e,this.readerMode,i),t())}))))}parse(){return c(this,void 0,void 0,(function*(){let e=new Blob([this.epubBuffer]),t=new File([e],"book",{lastModified:(new Date).getTime(),type:e.type});try{const e=yield this.makeZipLoader(t);this.book=yield new ve(e).init()}catch(e){console.error(e);try{const e=yield this.makeZipLoaderV3(t);this.book=yield new ve(e).init()}catch(e){console.error(e);try{const e=yield this.makeZipLoaderV2(t);this.book=yield new ve(e).init()}catch(e){throw console.error(e),e}}}}))}preCache(){return c(this,void 0,void 0,(function*(){try{return this.book||(yield this.parse()),yield Wt(this.book)}catch(e){return""}}))}makeZipLoader(e){return c(this,void 0,void 0,(function*(){let t=yield n.loadAsync(e);const i=t.files;return{entries:Object.values(i).map((e=>({filename:e.name}))),loadText:e=>c(this,void 0,void 0,(function*(){let n=t.file(e);return n?n.async("string"):""})),loadBlob:e=>c(this,void 0,void 0,(function*(){let n=t.file(e);if(n){let e=yield n.async("arraybuffer");return new Blob([e])}return new Blob([new ArrayBuffer(0)])})),getSize:e=>{let n=t.file(e);if(n)return n._data.uncompressedSize||0}}}))}makeZipLoaderV2(e){return c(this,void 0,void 0,(function*(){let t=function(e){const t=new i.Unzip,n={};t.onfile=e=>{if(e.name.endsWith("/")||0===e.originalSize)return;const t=[];e.ondata=(i,r,o)=>{if(i)console.warn(`Error in file "${e.name}": ${i.message}`);else if(t.push(r),o){const i=new Uint8Array(t.reduce(((e,t)=>e+t.length),0));let r=0;t.forEach((e=>{i.set(e,r),r+=e.length})),n[e.name]=i}};try{e.start()}catch(t){console.warn(`Error starting file "${e.name}": ${t.message}`)}},t.register(i.UnzipInflate);try{t.push(new Uint8Array(e),!0)}catch(e){console.warn(`Error during unzip: ${e.message}, returning partial results`)}return n}(yield e.arrayBuffer());return{entries:Object.keys(t).map((e=>({filename:e}))),loadText:e=>c(this,void 0,void 0,(function*(){let n=t[e];if(n){return new TextDecoder("utf-8").decode(n)}return""})),loadBlob:e=>c(this,void 0,void 0,(function*(){let n=t[e];return n?new Blob([n]):new Blob([new ArrayBuffer(0)])})),getSize:e=>{let n=t[e];if(n)return n.length||0}}}))}makeZipLoaderV3(e){return c(this,void 0,void 0,(function*(){let t=new br(new mn(e)),n=yield t.getEntries();return{entries:n.map((e=>({filename:e.filename}))),loadText:e=>c(this,void 0,void 0,(function*(){let t=n.find((t=>t.filename===e));return t?yield t.getData(new wn("utf-8")):""})),loadBlob:e=>c(this,void 0,void 0,(function*(){let t=n.find((t=>t.filename===e));return t?yield t.getData(new Bn):new Blob([new ArrayBuffer(0)])})),getSize:e=>{let t=n.find((t=>t.filename===e));if(t)return t.uncompressedSize||0}}}))}getMetadata(){return c(this,void 0,void 0,(function*(){try{this.book||(yield this.parse());let e=new b(this.book);return yield e.getMetadata()}catch(e){throw console.error(e,"error"),e}}))}}const Ur=e=>{if(!e)return"";const t=document.createElement("textarea");return t.innerHTML=e,t.value},Nr={XML:"application/xml",XHTML:"application/xhtml+xml",HTML:"text/html",CSS:"text/css",SVG:"image/svg+xml"},Wr={name:[0,32,"string"],type:[60,4,"string"],creator:[64,4,"string"],numRecords:[76,2,"uint"]},Pr={compression:[0,2,"uint"],numTextRecords:[8,2,"uint"],recordSize:[10,2,"uint"],encryption:[12,2,"uint"]},Kr={magic:[16,4,"string"],length:[20,4,"uint"],type:[24,4,"uint"],encoding:[28,4,"uint"],uid:[32,4,"uint"],version:[36,4,"uint"],titleOffset:[84,4,"uint"],titleLength:[88,4,"uint"],localeRegion:[94,1,"uint"],localeLanguage:[95,1,"uint"],resourceStart:[108,4,"uint"],huffcdic:[112,4,"uint"],numHuffcdic:[116,4,"uint"],exthFlag:[128,4,"uint"],trailingFlags:[240,4,"uint"],indx:[244,4,"uint"]},zr={resourceStart:[108,4,"uint"],fdst:[192,4,"uint"],numFdst:[196,4,"uint"],frag:[248,4,"uint"],skel:[252,4,"uint"],guide:[260,4,"uint"]},qr={magic:[0,4,"string"],length:[4,4,"uint"],count:[8,4,"uint"]},jr={magic:[0,4,"string"],length:[4,4,"uint"],type:[8,4,"uint"],idxt:[20,4,"uint"],numRecords:[24,4,"uint"],encoding:[28,4,"uint"],language:[32,4,"uint"],total:[36,4,"uint"],ordt:[40,4,"uint"],ligt:[44,4,"uint"],numLigt:[48,4,"uint"],numCncx:[52,4,"uint"]},Jr={magic:[0,4,"string"],length:[4,4,"uint"],numControlBytes:[8,4,"uint"]},Vr={magic:[0,4,"string"],offset1:[8,4,"uint"],offset2:[12,4,"uint"]},Xr={magic:[0,4,"string"],length:[4,4,"uint"],numEntries:[8,4,"uint"],codeLength:[12,4,"uint"]},Zr={magic:[0,4,"string"],numEntries:[8,4,"uint"]},_r={flags:[8,4,"uint"],dataStart:[12,4,"uint"],keyLength:[16,4,"uint"],keyStart:[20,4,"uint"]},$r={1252:"windows-1252",65001:"utf-8"},eo={100:["creator","string",!0],101:["publisher"],103:["description"],104:["isbn"],105:["subject","string",!0],106:["date"],108:["contributor","string",!0],109:["rights"],110:["subjectCode","string",!0],112:["source","string",!0],113:["asin"],121:["boundary","uint"],122:["fixedLayout"],125:["numResources","uint"],126:["originalResolution"],127:["zeroGutter"],128:["zeroMargin"],129:["coverURI"],132:["regionMagnification"],201:["coverOffset","uint"],202:["thumbnailOffset","uint"],503:["title"],524:["language","string",!0],527:["pageProgressionDirection"]},to={1:["ar","ar-SA","ar-IQ","ar-EG","ar-LY","ar-DZ","ar-MA","ar-TN","ar-OM","ar-YE","ar-SY","ar-JO","ar-LB","ar-KW","ar-AE","ar-BH","ar-QA"],2:["bg"],3:["ca"],4:["zh","zh-TW","zh-CN","zh-HK","zh-SG"],5:["cs"],6:["da"],7:["de","de-DE","de-CH","de-AT","de-LU","de-LI"],8:["el"],9:["en","en-US","en-GB","en-AU","en-CA","en-NZ","en-IE","en-ZA","en-JM",null,"en-BZ","en-TT","en-ZW","en-PH"],10:["es","es-ES","es-MX",null,"es-GT","es-CR","es-PA","es-DO","es-VE","es-CO","es-PE","es-AR","es-EC","es-CL","es-UY","es-PY","es-BO","es-SV","es-HN","es-NI","es-PR"],11:["fi"],12:["fr","fr-FR","fr-BE","fr-CA","fr-CH","fr-LU","fr-MC"],13:["he"],14:["hu"],15:["is"],16:["it","it-IT","it-CH"],17:["ja"],18:["ko"],19:["nl","nl-NL","nl-BE"],20:["no","nb","nn"],21:["pl"],22:["pt","pt-BR","pt-PT"],23:["rm"],24:["ro"],25:["ru"],26:["hr",null,"sr"],27:["sk"],28:["sq"],29:["sv","sv-SE","sv-FI"],30:["th"],31:["tr"],32:["ur"],33:["id"],34:["uk"],35:["be"],36:["sl"],37:["et"],38:["lv"],39:["lt"],41:["fa"],42:["vi"],43:["hy"],44:["az"],45:["eu"],46:["hsb"],47:["mk"],48:["st"],49:["ts"],50:["tn"],52:["xh"],53:["zu"],54:["af"],55:["ka"],56:["fo"],57:["hi"],58:["mt"],59:["se"],62:["ms"],63:["kk"],65:["sw"],67:["uz",null,"uz-UZ"],68:["tt"],69:["bn"],70:["pa"],71:["gu"],72:["or"],73:["ta"],74:["te"],75:["kn"],76:["ml"],77:["as"],78:["mr"],79:["sa"],82:["cy","cy-GB"],83:["gl","gl-ES"],87:["kok"],97:["ne"],98:["fy"]},no=(e,t)=>{const n=new e.constructor(e.length+t.length);return n.set(e),n.set(t,e.length),n},io=(e,t,n)=>{const i=new e.constructor(e.length+t.length+n.length);return i.set(e),i.set(t,e.length),i.set(n,e.length+t.length),i},ro=new TextDecoder,oo=e=>ro.decode(e),so=e=>{if(!e)return;const t=e.byteLength,n=4===t?"getUint32":2===t?"getUint16":"getUint8";return new DataView(e)[n](0)},ao=(e,t)=>Object.fromEntries(Array.from(Object.entries(e)).map((([e,[n,i,r]])=>[e,("string"===r?oo:so)(t.slice(n,n+i))]))),lo=e=>new TextDecoder($r[e]),Ao=(e,t=0)=>{let n=0,i=0;for(const r of e.subarray(t,t+4))if(n=n<<7|(127&r)>>>0,i++,128&r)break;return{value:n,length:i}},co=e=>{let t=0;for(const n of e.subarray(-4))128&n&&(t=0),t=t<<7|127&n;return t},go=e=>{let t=0;for(;e>0;e>>=1)1&~e||t++;return t},ho=e=>{let t=0;for(;!(1&e);)e>>=1,t++;return t},uo=e=>{let t=[];for(let n=0;n>>3,s=3+(7&r);for(let e=0;e{const n=t+32,i=n>>3;let r=0n;for(let n=t>>3;n<=i;n++)r=r<<8n|BigInt(e[n]??0);return r>>8n-BigInt(7&n)&0xffffffffn},po=async(e,t)=>{const n=await t(e),i=ao(jr,n);if("INDX"!==i.magic)throw new Error("Invalid INDX record");const r=lo(i.encoding),o=n.slice(i.length),s=ao(Jr,o);if("TAGX"!==s.magic)throw new Error("Invalid TAGX section");const a=(s.length-12)/4,l=Array.from({length:a},((e,t)=>new Uint8Array(o.slice(12+4*t,12+4*t+4)))),A={};let c=0;for(let n=0;n1){const{value:n,length:i}=Ao(r,u);c.push([e,null,n,t]),u+=i}else c.push([e,1,null,t]);else c.push([e,a>>ho(n),null,t])}const f={};for(const[e,t,n,i]of c){const o=[];if(null!=t)for(let e=0;eso(n.slice(8*t,8*t+4)))).map(((e,t,n)=>[e,n[t+1]]))}loadRecord(e){const t=this.#c[e];if(!t)throw new RangeError("Record index out of bounds");return this.#A.slice(...t).arrayBuffer()}async loadMagic(e){const t=this.#c[e][0];return oo(await this.#A.slice(t,t+4).arrayBuffer())}}class Bo extends mo{#g=0;#d;#h;#u;#f;#p;constructor({unzlib:e}){super(),this.unzlib=e}async open(e){await super.open(e),this.headers=this.#m(await super.loadRecord(0)),this.#d=this.headers.mobi.resourceStart;let t=this.headers.mobi.version>=8;if(!t){const e=this.headers.exth?.boundary;if(e<4294967295)try{this.headers=this.#m(await super.loadRecord(e)),this.#g=e,t=!0}catch(e){console.warn(e),console.warn("Failed to open KF8; falling back to MOBI")}}return await this.#B(),t?new Do(this).init():new yo(this).init()}#m(e){const t=ao(Pr,e),n=ao(Kr,e);if("MOBI"!==n.magic)throw new Error("Missing MOBI header");const{titleOffset:i,titleLength:r,localeLanguage:o,localeRegion:s}=n;n.title=e.slice(i,i+r);const a=to[o];n.language=a?.[s>>2]??a?.[0];const l=64&n.exthFlag?((e,t)=>{const{magic:n,count:i}=ao(qr,e);if("EXTH"!==n)throw new Error("Invalid EXTH header");const r=lo(t),o={};let s=12;for(let t=0;t=8?ao(zr,e):null}}async#B(){const{palmdoc:e,mobi:t}=this.headers;this.#h=lo(t.encoding),this.#u=new TextEncoder;const{compression:n}=e;if(this.#f=1===n?e=>e:2===n?uo:17480===n?await(async(e,t)=>{const n=await t(e.huffcdic),{magic:i,offset1:r,offset2:o}=ao(Vr,n);if("HUFF"!==i)throw new Error("Invalid HUFF record");const s=Array.from({length:256},((e,t)=>r+4*t)).map((e=>so(n.slice(e,e+4)))).map((e=>[128&e,31&e,e>>>8])),a=[null].concat(Array.from({length:32},((e,t)=>o+8*t)).map((e=>[so(n.slice(e,e+4)),so(n.slice(e+4,e+8))]))),l=[];for(let n=1;n{let t=new Uint8Array;const n=8*e.byteLength;for(let i=0;i>>24];if(!o){for(;r>>>32-cn)break;const d=g-(r>>>32-c);let[h,u]=l[d];u||(h=A(h),l[d]=[h,!0]),t=no(t,h)}return t};return A})(t,this.loadRecord.bind(this)):null,!this.#f)throw new Error("Unknown compression type");const{trailingFlags:i}=t,r=1&i,o=go(i>>>1);this.#p=e=>{for(let t=0;tnew Uint8Array(e))).then(this.#p).then(this.#f)}async loadResource(e){const t=await super.loadRecord(this.#d+e),n=oo(t.slice(0,4));return"FONT"===n?(async(e,t)=>{const{flags:n,dataStart:i,keyLength:r,keyStart:o}=ao(_r,e),s=new Uint8Array(e.slice(i));if(2&n){const t=16===r?1024:1040,n=new Uint8Array(e.slice(o,o+r)),i=Math.min(t,s.length);for(var a=0;a{const{table:n,cncx:i}=await po(e,t),r=n.map((({tagMap:e},t)=>({index:t,offset:e[1]?.[0],size:e[2]?.[0],label:i[e[3]]??"",headingLevel:e[4]?.[0],pos:e[6],parent:e[21]?.[0],firstChild:e[22]?.[0],lastChild:e[23]?.[0]}))),o=e=>(null==e.firstChild||(e.children=r.filter((t=>t.parent===e.index)).map(o)),e);return r.filter((e=>0===e.headingLevel)).map(o)})(e,this.loadRecord.bind(this))}getMetadata(){const{mobi:e,exth:t}=this.headers;return{identifier:e.uid.toString(),title:Ur(t?.title||this.decode(e.title)),author:t?.creator?.map(Ur),publisher:Ur(t?.publisher),language:t?.language??e.language,published:t?.date,description:Ur(t?.description),subject:t?.subject?.map(Ur),rights:Ur(t?.rights)}}async getCover(){const{exth:e}=this.headers,t=e?.coverOffset<4294967295?e?.coverOffset:e?.thumbnailOffset<4294967295?e?.thumbnailOffset:null;if(null!=t){const e=await this.loadResource(t);return new Blob([e])}}}const wo=/<\s*(?:mbp:)?pagebreak[^>]*>/gi,Co=/<[^<>]+filepos=['"]{0,1}(\d+)[^<>]*>/gi;class yo{parser=new DOMParser;serializer=new XMLSerializer;#w=new Map;#C=new Map;#i=new Map;#y;#E=[];#I=Nr.HTML;constructor(e){this.mobi=e}async init(){const e=[];for(let t=0;te+t.byteLength),0),n=new Uint8Array(t);e.reduce(((e,t)=>(n.set(new Uint8Array(t),e),e+t.byteLength)),0);const i=function(e){let t="";for(let n=0;ne.index))).map(((e,t,i)=>{const r=i[t+1]??n.length;return{book:this,raw:n.subarray(e,r)}})).map(((e,t,n)=>(e.start=n[t-1]?.end??0,e.end=e.start+e.raw.byteLength,e))),this.sections=this.#y.map(((e,t)=>({id:t,load:()=>this.loadSection(e),createDocument:()=>this.createDocument(e),resolveHref:e=>this.resolveHref(e),size:e.end-e.start})));try{this.landmarks=await this.getGuide();const e=this.landmarks.find((({type:e})=>e?.includes("toc")))?.href;if(e){const{index:t}=this.resolveHref(e),n=await this.sections[t].createDocument();let i,r=0,o=0;const s=new Map,a=new Map;this.toc=Array.from(n.querySelectorAll("a[filepos]")).reduce(((e,t)=>{const n=(e=>{let t=0;for(;e;){const n=e.parentElement;if(n){const e=n.tagName.toLowerCase();"p"===e?t+=1.5:"blockquote"===e&&(t+=2)}e=n}return t})(t),l={label:t.innerText?.trim()??"",href:`#filepos${t.getAttribute("filepos")}`},A=n>o?r+1:n===o?r:s.get(n)??Math.max(0,r-1);if(A>r)i?(i.subitems??=[],i.subitems.push(l),a.set(A,i)):e.push(l);else{const t=a.get(A);t?t.subitems.push(l):e.push(l)}return i=l,r=A,o=n,s.set(n,A),e}),[])}}catch(e){console.warn(e)}return this.#E=[...new Set(Array.from(i.matchAll(Co),(e=>e[1])))].map((e=>({filepos:e,number:Number(e)}))).sort(((e,t)=>e.number-t.number)),this.metadata=this.mobi.getMetadata(),this.getCover=this.mobi.getCover.bind(this.mobi),this}async getGuide(){const e=await this.createDocument(this.#y[0]);return Array.from(e.getElementsByTagName("reference"),(e=>({label:e.getAttribute("title"),type:e.getAttribute("type")?.split(/\s/),href:`#filepos${e.getAttribute("filepos")}`})))}async loadResource(e){if(this.#w.has(e))return this.#w.get(e);const t=await this.mobi.loadResource(e),n=URL.createObjectURL(new Blob([t]));return this.#w.set(e,n),n}async loadRecindex(e){return this.loadResource(Number(e)-1)}async replaceResources(e){for(const t of e.querySelectorAll("img[recindex]")){const e=t.getAttribute("recindex");try{t.src=await this.loadRecindex(e)}catch(t){console.warn(`Failed to load image ${e}`)}}for(const t of e.querySelectorAll("[mediarecindex]")){const e=t.getAttribute("mediarecindex"),n=t.getAttribute("recindex");try{t.src=await this.loadRecindex(e),n&&(t.poster=await this.loadRecindex(n))}catch(t){console.warn(`Failed to load media ${e}`)}}for(const t of e.querySelectorAll("[filepos]")){const e=t.getAttribute("filepos");t.href=`#filepos${e}`}}async loadText(e){if(this.#C.has(e))return this.#C.get(e);const{raw:t}=e,n=this.#E.filter((({number:t})=>t>=e.start&&t({...t,offset:t.number-e.start})));let i=t;n.length&&(i=t.subarray(0,n[0].offset),n.forEach((({filepos:e,offset:r},o)=>{const s=n[o+1],a=this.mobi.encode(``);i=io(i,a,t.subarray(r,s?.offset))})));const r=this.mobi.decode(i).replaceAll(wo,"");return this.#C.set(e,r),r}async createDocument(e){const t=await this.loadText(e);return this.parser.parseFromString(t,this.#I)}async loadSection(e){if(this.#i.has(e))return this.#i.get(e);const t=await this.createDocument(e),n=t.createElement("style");t.head.append(n),n.append(t.createTextNode("blockquote {\n margin-block-start: 0;\n margin-block-end: 0;\n margin-inline-start: 1em;\n margin-inline-end: 0;\n }")),await this.replaceResources(t);const i=this.serializer.serializeToString(t),r=URL.createObjectURL(new Blob([i],{type:this.#I}));return this.#i.set(e,r),r}resolveHref(e){const t=e.match(/#filepos(.*)/)[1],n=Number(t);return{index:this.#y.findIndex((e=>e.end>n)),anchor:e=>e.getElementById(`filepos${t}`)}}splitTOCHref(e){const t=e.match(/#filepos(.*)/)[1],n=Number(t);return[this.#y.findIndex((e=>e.end>n)),`filepos${t}`]}getTOCFragment(e,t){return e.getElementById(t)}isExternal(e){return/^(?!blob|filepos)\w+:/i.test(e)}destroy(){for(const e of this.#w.values())URL.revokeObjectURL(e);for(const e of this.#i.values())URL.revokeObjectURL(e)}}const Eo=/kindle:(flow|embed):(\w+)(?:\?mime=(\w+\/[-+.\w]+))?/,Io=/kindle:pos:fid:(\w+):off:(\w+)/,bo=e=>{const[t,n]=e.match(Io).slice(1);return{fid:parseInt(t,32),off:parseInt(n,32)}},vo=(e=0,t=0)=>`kindle:pos:fid:${e.toString(32).toUpperCase().padStart(4,"0")}:off:${t.toString(32).toUpperCase().padStart(10,"0")}`,xo=e=>{const t=e.match(/\s(id|name|aid)\s*=\s*['"]([^'"]*)['"]/i);if(!t)return;const[,n,i]=t;return`[${n}="${CSS.escape(i)}"]`},Qo=e=>{for(const t of e){if("page-spread-left"===t||"rendition:page-spread-left"===t)return"left";if("page-spread-right"===t||"rendition:page-spread-right"===t)return"right";if("rendition:page-spread-center"===t)return"center"}};class Do{parser=new DOMParser;serializer=new XMLSerializer;#i=new Map;#b=new Map;#v=new Map;#x={};#y;#Q;#D=new Uint8Array;#S=new Uint8Array;#k=-1;#M=-1;#I=Nr.XHTML;#F=new Map;constructor(e){this.mobi=e}async init(){const e=this.mobi.loadRecord.bind(this.mobi),{kf8:t}=this.mobi.headers;try{const n=await e(t.fdst),i=ao(Zr,n);if("FDST"!==i.magic)throw new Error("Missing FDST record");const r=Array.from({length:i.numEntries},((e,t)=>12+8*t)).map((e=>[so(n.slice(e,e+4)),so(n.slice(e+4,e+8))]));this.#x.fdstTable=r,this.#Q=r[r.length-1][1]}catch{}const n=(await po(t.skel,e)).table.map((({name:e,tagMap:t},n)=>({index:n,name:e,numFrag:t[1][0],offset:t[6][0],length:t[6][1]}))),i=await po(t.frag,e),r=i.table.map((({name:e,tagMap:t})=>({insertOffset:parseInt(e),selector:i.cncx[t[2][0]],index:t[4][0],offset:t[6][0],length:t[6][1]})));this.#x.skelTable=n,this.#x.fragTable=r,this.#y=n.reduce(((e,t)=>{const n=e[e.length-1],i=n?.fragEnd??0,o=i+t.numFrag,s=r.slice(i,o),a=t.length+s.map((e=>e.length)).reduce(((e,t)=>e+t)),l=(n?.totalLength??0)+a;return e.concat({skel:t,frags:s,fragEnd:o,length:a,totalLength:l})}),[]);const o=await this.getResourcesByMagic(["RESC","PAGE"]),s=new Map;if(o.RESC){const e=await this.mobi.loadRecord(o.RESC),t=this.mobi.decode(e.slice(16)).replace(/\0/g,""),n=t.search(/\?>/),i=`${t.slice(n)}`,r=this.parser.parseFromString(i,Nr.XML);for(const e of r.querySelectorAll("spine > itemref")){const t=parseInt(e.getAttribute("skelid"));s.set(t,Qo(e.getAttribute("properties")?.split(" ")??[]))}}this.sections=this.#y.map(((e,t)=>e.frags.length?{id:t,load:()=>this.loadSection(e),createDocument:()=>this.createDocument(e),resolveHref:e=>this.resolveHref(e),size:e.length,pageSpread:s.get(t)}:{linear:"no"}));try{const e=await this.mobi.getNCX(),t=({label:e,pos:n,children:i})=>{const[r,o]=n,s=vo(r,o),a=this.#b.get(r);return a?a.push(o):this.#b.set(r,[o]),{label:Ur(e),href:s,subitems:i?.map(t)}};this.toc=e?.map(t),this.landmarks=await this.getGuide()}catch(e){console.warn(e)}const{exth:a}=this.mobi.headers;return this.dir=a.pageProgressionDirection,this.rendition={layout:"true"===a.fixedLayout?"pre-paginated":"reflowable",viewport:Object.fromEntries(a.originalResolution?.split("x")?.slice(0,2)?.map(((e,t)=>[t?"height":"width",e]))??[])},this.metadata=this.mobi.getMetadata(),this.getCover=this.mobi.getCover.bind(this.mobi),this}async getResourcesByMagic(e){const t={},n=this.mobi.headers.kf8.resourceStart,i=this.mobi.pdb.numRecords;for(let r=n;re===n));i&&(t[i]=r)}catch{}return t}async getGuide(){const e=this.mobi.headers.kf8.guide;if(e<4294967295){const t=this.mobi.loadRecord.bind(this.mobi),{table:n,cncx:i}=await po(e,t);return n.map((({name:e,tagMap:t})=>({label:i[t[1][0]]??"",type:e?.split(/\s/),href:vo(t[6]?.[0]??t[3]?.[0])})))}}async loadResourceBlob(e){let{resourceType:t,id:n,type:i}=(e=>{const[t,n,i]=e.match(Eo).slice(1);return{resourceType:t,id:parseInt(n,32),type:i}})(e);"image/jpg"===i&&(i="image/jpeg");const r="flow"===t?await this.loadFlow(n):await this.mobi.loadResource(n-1),o=[Nr.XHTML,Nr.HTML,Nr.CSS,Nr.SVG].includes(i)?await this.replaceResources(this.mobi.decode(r)):r,s=i===Nr.SVG?this.parser.parseFromString(o,i):null;return[new Blob([o],{type:i}),s?.getElementsByTagNameNS("http://www.w3.org/2000/svg","image")?.length?s.documentElement:null]}async loadResource(e){if(this.#i.has(e))return this.#i.get(e);const[t,n]=await this.loadResourceBlob(e),i=n?e:URL.createObjectURL(t);return n&&this.#F.set(i,n),this.#i.set(e,i),i}replaceResources(e){return(async(e,t,n)=>{const i=[];e.replace(t,((...e)=>(i.push(e),null)));const r=[];for(const e of i)r.push(await n(...e));return e.replace(t,(()=>r.shift()))})(e,new RegExp(Eo,"g"),this.loadResource.bind(this))}async loadRaw(e,t){const n=t-this.#D.length,i=null==this.#Q?1/0:this.#Q-this.#S.length-e;if(n<0||ne;){const e=this.mobi.headers.palmdoc.numTextRecords-1-++this.#M,t=await this.mobi.loadText(e);this.#S=no(t,this.#S)}const r=this.#Q-this.#S.length;return this.#S.slice(e-r,t-r)}loadFlow(e){if(e<4294967295)return this.loadRaw(...this.#x.fdstTable[e])}async loadText(e){const{skel:t,frags:n,length:i}=e,r=await this.loadRaw(t.offset,t.offset+i);let o=r.slice(0,t.length);for(const e of n){const n=e.insertOffset-t.offset,i=t.length+e.offset,s=r.slice(i,i+e.length);o=io(o.slice(0,n),s,o.slice(n));const a=this.#b.get(e.index);if(a)for(const t of a){const n=this.mobi.decode(s).slice(t),i=xo(n);this.#Y(e.index,t,i)}}return this.mobi.decode(o)}async createDocument(e){const t=await this.loadText(e);return this.parser.parseFromString(t,this.#I)}async loadSection(e){if(this.#i.has(e))return this.#i.get(e);const t=await this.loadText(e),n=await this.replaceResources(t);let i=this.parser.parseFromString(n,this.#I);i.querySelector("parsererror")&&(this.#I=Nr.HTML,i=this.parser.parseFromString(n,this.#I));for(const[e,t]of this.#F)for(const n of i.querySelectorAll(`img[src="${e}"]`))n.replaceWith(t);const r=URL.createObjectURL(new Blob([this.serializer.serializeToString(i)],{type:this.#I}));return this.#i.set(e,r),r}getIndexByFID(e){return this.#y.findIndex((t=>t.frags.some((t=>t.index===e))))}#Y(e,t,n){const i=this.#v.get(e);if(i)i.set(t,n);else{const i=new Map;this.#v.set(e,i),i.set(t,n)}}async resolveHref(e){const{fid:t,off:n}=bo(e),i=this.getIndexByFID(t);if(i<0)return;const r=this.#v.get(t)?.get(n);if(r)return{index:i,anchor:e=>e.querySelector(r)};const{skel:o,frags:s}=this.#y[i],a=s.find((e=>e.index===t)),l=o.offset+o.length+a.offset,A=await this.loadRaw(l,l+a.length),c=this.mobi.decode(A.slice(n)),g=xo(c);this.#Y(t,n,g);return{index:i,anchor:e=>e.querySelector(g)}}splitTOCHref(e){const t=bo(e);return[this.getIndexByFID(t.fid),t]}getTOCFragment(e,{fid:t,off:n}){const i=this.#v.get(t)?.get(n);return e.querySelector(i)}isExternal(e){return/^(?!blob|kindle)\w+:/i.test(e)}destroy(){for(const e of this.#i.values())URL.revokeObjectURL(e)}}class So extends Gt{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"MOBI"})),this.mobiBuffer=e}renderTo(e){return new Promise(((t,n)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let n=new b(this.book);this.chapterList=yield n.getChapter(this.book.toc),this.chapterDocList=yield n.getChapterDoc(),p(e);let i=this.getDocument();i&&(y(e,this.readerMode,i),t())}))))}parse(){return c(this,void 0,void 0,(function*(){try{let e=new Blob([this.mobiBuffer]),t=new File([e],"book",{lastModified:(new Date).getTime(),type:e.type});if(!(yield(async e=>"BOOKMOBI"===oo(await e.slice(60,68).arrayBuffer()))(t)))throw new Error("Not a valid MOBI file");this.book=yield new Bo({unzlib:r}).open(t)}catch(e){throw console.error(e),e}}))}preCache(){return c(this,void 0,void 0,(function*(){return this.book||(yield this.parse()),yield Wt(this.book)}))}getMetadata(){return c(this,void 0,void 0,(function*(){try{this.book||(yield this.parse());let e=new b(this.book);return yield e.getMetadata()}catch(e){throw console.error(e),e}}))}}const ko=e=>`${Yo()?".":""}/lib/pdfjs/${e}`,Mo=window.pdfjsLib,Fo=async e=>await(await fetch(e)).text(),Yo=()=>"undefined"!=typeof window&&"object"==typeof window.process&&"renderer"===window.process.type||(!("undefined"==typeof process||"object"!=typeof process.versions||!process.versions.electron)||"object"==typeof navigator&&"string"==typeof navigator.userAgent&&navigator.userAgent.indexOf("Electron")>=0);function Lo(e,t="",n=""){return new Promise((i=>{vex.dialog.prompt({message:e,placeholder:t,value:n,callback:function(e){i(e)}})}))}const To=async()=>await Fo(ko("text_layer_builder.css")),Ro=async()=>await Fo(ko("annotation_layer_builder.css")),Ho=async(e,t)=>{try{const n=e.getViewport({scale:1});if(t){const t=document.createElement("canvas");t.height=n.height,t.width=n.width;const i=t.getContext("2d");return await e.render({canvasContext:i,viewport:n}).promise,new Promise((e=>t.toBlob(e)))}return URL.createObjectURL(new Blob([`\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n`],{type:"text/html"}))}catch(e){console.error(e)}},Go=e=>({label:e.title,href:e.dest?JSON.stringify(e.dest):null,subitems:e.items.length?e.items.map(Go):null});function Oo(e="need"){return(navigator.language?.toLowerCase()||"en").startsWith("zh")?"need"===e?"请输入PDF密码:":"密码错误,请重新输入:":"need"===e?"Need password to open this PDF:":"Incorrect password, please try again:"}const Uo=async(e,t)=>{let n;for(;;){const i=new Mo.PDFDataRangeTransport(e.size,[]);i.requestDataRange=(t,n)=>{e.slice(t,n).arrayBuffer().then((e=>{i.onDataRange(t,e)}))};try{n=await Mo.getDocument({range:i,cMapUrl:ko("cmaps/"),standardFontDataUrl:ko("standard_fonts/"),isEvalSupported:!1,password:t}).promise;break}catch(e){if("PasswordException"!==e.name)throw e;if(e.code===Mo.PasswordResponses.NEED_PASSWORD?Yo()?(t=await Lo(Oo("need"),"",""),vex.closeAll()):t=prompt(Oo("need")):e.code===Mo.PasswordResponses.INCORRECT_PASSWORD&&(Yo()?(t=await Lo(Oo("incorrect"),"",""),vex.closeAll()):t=prompt(Oo("incorrect"))),!t)throw new Error("PDF loading failed: no password provided")}}let i=!1,r=n.numPages>0?await n.getPage(Math.floor(n.numPages/2)+1):null;if(r){const e=await r.getTextContent();if(i=0===e.items.length,e.items.length>0){i=e.items.reduce(((e,t)=>e+t.str.trim().length),0)<40}r.cleanup()}const o={rendition:{layout:"pre-paginated"}},{metadata:s,info:a}=await n.getMetadata()??{};o.metadata={title:s?.get("dc:title")??a?.Title,author:s?.get("dc:creator")??a?.Author,contributor:s?.get("dc:contributor"),description:s?.get("dc:description")??a?.Subject,language:s?.get("dc:language"),publisher:s?.get("dc:publisher"),subject:s?.get("dc:subject"),identifier:s?.get("dc:identifier"),source:s?.get("dc:source"),rights:s?.get("dc:rights")},o.metadata.description=(o.metadata.description?o.metadata.description:"")+(i?"\nscanned PDF":"")+(t?"\nprotected PDF: #"+t+"#":"");const l=await n.getOutline();o.toc=l?.map(Go);const A=new Map;return o.sections=Array.from({length:n.numPages}).map(((e,t)=>({id:t,load:async()=>{const e=A.get(t);if(e)return e;const i=await Ho(await n.getPage(t+1));return A.set(t,i),i},unload:async()=>{(await n.getPage(t+1)).cleanup()},render:async(e,i,r,o)=>{await(async(e,t,n,i,r,o)=>{try{let s=window.devicePixelRatio*("yes"===r?1/i*1.5:1);const a=i*s;let l=n.querySelector("#koodoPDFLayer");l.style.visibility="hidden",l.style.transform=`scale(${1/s})`,l.style.transformOrigin="top left",l.style.setProperty("--scale-factor",a);const A=e.getViewport({scale:a}),c=document.createElement("canvas");l.style.width=`${A.width}px`,l.style.height=`${A.height}px`,c.height=A.height,c.width=A.width;const g=c.getContext("2d");try{await e.render({canvasContext:g,viewport:A,background:"rgba(0,0,0,0)"}).promise}catch(e){console.error(e)}n.querySelector("#canvas").replaceChildren(n.adoptNode(c)),l.style.overflow="hidden";const d=n.querySelector("#textLayer");try{const t=new Mo.TextLayer({textContentSource:await e.streamTextContent(),container:d,viewport:A});await t.render()}catch(e){console.error(e)}for(const e of document.querySelectorAll(".hiddenCanvasElement"))Object.assign(e.style,{position:"absolute",top:"0",left:"0",width:"0",height:"0",display:"none"});const h=document.createElement("div");h.className="endOfContent",d.append(h);let u=!1,f=null;d.onpointerdown=()=>{let e=n?.defaultView;if(e.getSelection().toString().trim().length>0)return d.classList.remove("selecting"),u=!1,h.remove(),void d.append(h);d.classList.add("selecting"),u=!0},"yes"!==r?(d.onpointerup=()=>{d.classList.remove("selecting"),u=!1,h.remove(),d.append(h)},d.onpointermove=e=>{if(!u)return;let t=e.target.closest(".textLayer > span");const n=null!==t;d.style.cursor=n?"text":"default",n&&(f=t),h.remove(),d.insertBefore(h,f)}):n.addEventListener("selectionchange",(e=>{if(!u)return;let t=n?.defaultView;var i=t.getSelection().getRangeAt(0).endContainer;let r=i.nodeType===Node.TEXT_NODE?i.parentNode:i;r=r.closest(".textLayer > span");const o=null!==r;d.style.cursor=o?"text":"default",o&&(f=r),h.remove(),d.insertBefore(h,f.nextSibling?f.nextSibling:f)}));const p=n.querySelector("#annotationLayer");try{await new Mo.AnnotationLayer({page:e,viewport:A,div:p}).render({annotations:await e.getAnnotations(),linkService:{goToDestination:async e=>{try{const n="string"==typeof e?await t.getDestination(e):e;if(!n||!Array.isArray(n)||0===n.length)return void console.warn("Invalid destination:",e);const i=await t.getPageIndex(n[0]);o.goToChapterDocIndex(i)}catch(e){console.error("Error navigating to destination:",e)}},getDestinationHash:e=>JSON.stringify(e),addLinkAttributes:(e,t)=>e.href=t}})}catch(e){console.error(e)}}catch(e){console.error(e)}})(await n.getPage(t+1),n,e,i,r,o)},getTextContent:async()=>{const e=await n.getPage(t+1);return await e.getTextContent()},size:1e3,getDimension:async()=>{let e=(await n.getPage(t+1)).getViewport({scale:1});return{width:e.width,height:e.height}},getPage:async()=>await n.getPage(t+1)}))),o.isExternal=e=>/^\w+:/i.test(e),o.resolveHref=async e=>{const t=JSON.parse(e),i="string"==typeof t?await n.getDestination(t):t;return{index:await n.getPageIndex(i[0])}},o.splitTOCHref=async e=>{const t=JSON.parse(e),i="string"==typeof t?await n.getDestination(t):t;return[await n.getPageIndex(i[0]),null]},o.getTOCFragment=e=>e.documentElement,o.getCover=async()=>Ho(await n.getPage(1),!0),o.destroy=()=>n.destroy(),o};class No extends Gt{constructor(e,t){super(Object.assign(Object.assign({},t),{convertChinese:"Default",format:"PDF"})),this.isStartFromEven="no",this.password="",this.pdfScale=0,this.scale=1,this.scrollPDFInterval=null,this.templateChapterDocIndex=0,this.getPdfScale=()=>c(this,void 0,void 0,(function*(){if(this.pdfScale&&this.pdfScale>0)return this.pdfScale;let e=this.getDocument();if(!e)return 1;let{width:t,height:n}=yield this.chapterDocList[this.templateChapterDocIndex].text.getDimension(),i=e.body.clientWidth,r=this.element.clientHeight,o=Math.min(i/t,r/n);return"scroll"===this.readerMode&&(o=i/t),this.pdfScale=o,o})),this.pdfBuffer=e,this.isStartFromEven=t.isStartFromEven||"no",this.password=t.password||"",this.scale=t.scale||1,this.backgroundColor=t.backgroundColor||"#ffffff",this.isScannedPDF=t.isScannedPDF||"no",this.platform=t.platform||"web"}renderTo(e){return new Promise(((t,n)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let n=new b(this.book);this.chapterList=yield n.getChapter(this.book.toc),this.chapterDocList=yield n.getChapterDoc(),"yes"===this.isStartFromEven&&(this.chapterDocList=[{label:"",text:{load:()=>c(this,void 0,void 0,(function*(){return""})),render:()=>c(this,void 0,void 0,(function*(){})),unload:()=>c(this,void 0,void 0,(function*(){})),getPage:()=>c(this,void 0,void 0,(function*(){return null})),getDimension:()=>c(this,void 0,void 0,(function*(){return{width:0,height:0}})),getScale:()=>c(this,void 0,void 0,(function*(){return 1})),getPageCount:()=>c(this,void 0,void 0,(function*(){return 0}))},href:""},...this.chapterDocList]),"single"===this.readerMode&&Math.abs(this.scale)>1.4&&(this.scale=1.4),document.body.clientWidth*Math.abs(this.scale)-.4*document.body.clientWidth>document.body.clientWidth&&"double"!==this.readerMode?p(e,this.scale):p(e);const i=yield this.chapterDocList[0].text.getDimension(),r=yield this.chapterDocList[this.chapterDocList.length-1].text.getDimension(),o=yield this.chapterDocList[Math.floor(this.chapterDocList.length/2)].text.getDimension();let s=i.height/i.width>r.height/r.width?i:r;this.templateChapterDocIndex=s===i?0:this.chapterDocList.length-1,s=s.height/s.width>o.height/o.width?s:o,this.templateChapterDocIndex=s===o?Math.floor(this.chapterDocList.length/2):this.templateChapterDocIndex;let a=this.getDocument();if(!a)return;((e,t,n,i)=>{for(let r=0;r{l&&clearTimeout(l),l=setTimeout((()=>c(this,void 0,void 0,(function*(){yield this.handlePDFScrollEvent(a),yield this.record()}))),100)})):a.addEventListener("scroll",(e=>{l&&clearTimeout(l),l=setTimeout((()=>c(this,void 0,void 0,(function*(){yield this.handlePDFScrollEvent(a),yield this.record()}))),200)})),((e,t,n)=>{if("scroll"===t)return;let i="double"===t?2:1,r=Math.floor(n.body.clientWidth/12),o=r%2==0?r:r-1;n.body.setAttribute("style",e.getAttribute("style")+`height: 100%;overflow-y: hidden;overflow-X: hidden;padding-left: 0px;padding-right: 0px;margin: 0px;box-sizing: border-box;touch-action: manipulation; overscroll-behavior: none;max-width: inherit;column-fill: auto;column-gap: ${o}px; column-width: ${(n.body.clientWidth-o)/i}px;`)})(e,this.readerMode,a),t()}))))}autoScrollPDF(e){return c(this,void 0,void 0,(function*(){let t=this.getDocument();this.scrollPDFInterval&&(clearInterval(this.scrollPDFInterval),this.scrollPDFInterval=null),"no"!==e&&"scroll"===this.readerMode&&(this.scrollPDFInterval=setInterval((()=>c(this,void 0,void 0,(function*(){t&&(yield this.handlePDFScrollEvent(t))}))),1e3))}))}handlePDFScrollEvent(e){return c(this,void 0,void 0,(function*(){let t=e.querySelectorAll(".pdf-container");for(let n=0;n0&&(yield this.goToChapter(e,this.chapterDocList[e].href,this.chapterDocList[e].label))}))}getPageSize(){let e=this.getDocument();if(!e)return;let t="double"===this.readerMode?2:1,n=Math.floor(e.body.clientWidth/12),i=n%2==0?n:n-1,r=e.querySelectorAll("iframe")[0],o=null==r?void 0:r.getBoundingClientRect().height;return{width:e.body.clientWidth,height:this.element.clientHeight,left:this.element.offsetLeft,top:this.element.offsetTop,scrollTop:this.element.scrollTop,scrollLeft:this.element.scrollWidth/2-this.element.clientWidth/2,sectionWidth:(e.body.clientWidth-i)/t,sectionHeight:o,gap:i}}goToChapter(e,t,n){return c(this,void 0,void 0,(function*(){"double"===this.readerMode&&e%2==1&&e--;let t=this.getDocument(),n=this.getIframe();t&&n&&(yield this.renderPdfPage(e,t),yield vt(parseInt(e),this.readerMode,t),yield this.recordByChapter(e))}))}getPositionByChapter(e){return{percentage:e/this.chapterDocList.length,chapterDocIndex:e+"",chapterHref:this.chapterDocList[e].href,chapterTitle:this.chapterDocList[e].label,text:""}}goToPercentage(e){return c(this,void 0,void 0,(function*(){if(this.chapterDocList.length>0){let t=1===e?this.chapterDocList.length-1:Math.floor(this.chapterDocList.length*e);yield this.goToChapter(t,this.chapterDocList[t].href,this.chapterDocList[t].label)}}))}goToPosition(e){var n;return c(this,void 0,void 0,(function*(){let i=this.getDocument(),r=this.getIframe();if(!i||!r)return;let o=JSON.parse(e);void 0===o.chapterDocIndex&&(o.chapterDocIndex=0),this.tempLocation={text:o.text,chapterTitle:o.chapterTitle,chapterDocIndex:o.chapterDocIndex,chapterHref:o.chapterHref,count:o.count,page:o.page,percentage:o.percentage};let{chapterTitle:s,chapterDocIndex:a,chapterHref:l}=o;if("double"===this.readerMode&&a%2==1&&a--,yield this.renderPdfPage(parseInt(a),i),"scroll"===this.readerMode){let e=this.getSubIframe(void 0!==a?a:parseInt(this.tempLocation.chapterDocIndex));if(!e)return;let t=(null===(n=e.parentElement)||void 0===n?void 0:n.getBoundingClientRect().height)||0;r.style.height=t*this.chapterDocList.length+"px"}yield vt(parseInt(a),this.readerMode,i),t.init(),yield this.recordByChapter(parseInt(a))}))}prev(e){return c(this,void 0,void 0,(function*(){let t=this.getDocument(),n=this.getIframe();t&&n&&("scroll"===this.readerMode?this.element.scrollBy({left:0,top:-(this.element.clientHeight-50),behavior:"smooth"}):("ios"===e?yield Dt(this.element,this.animation,1,t,this.flipToNextPage,this.flipToPrevPage,this.isMobile,parseInt(this.tempLocation.chapterDocIndex||"0"),this.readerMode):yield We(this.element,this.animation,1,t,this.flipToNextPage,this.flipToPrevPage,this.isMobile),yield this.renderPdfPage(parseInt(this.tempLocation.chapterDocIndex)-("double"===this.readerMode?2:1),t)),yield this.record())}))}next(e){return c(this,void 0,void 0,(function*(){let t=this.getDocument(),n=this.getIframe();t&&n&&("scroll"===this.readerMode?this.element.scrollBy({left:0,top:this.element.clientHeight-50,behavior:"smooth"}):("ios"===e?yield Dt(this.element,this.animation,-1,t,this.flipToNextPage,this.flipToPrevPage,this.isMobile,parseInt(this.tempLocation.chapterDocIndex||"0"),this.readerMode):yield We(this.element,this.animation,-1,t,this.flipToNextPage,this.flipToPrevPage,this.isMobile),yield this.renderPdfPage(parseInt(this.tempLocation.chapterDocIndex)+("double"===this.readerMode?2:1),t)),yield this.record())}))}prevChapter(){return c(this,void 0,void 0,(function*(){yield this.prev()}))}nextChapter(){return c(this,void 0,void 0,(function*(){yield this.next()}))}goToPage(e){return c(this,void 0,void 0,(function*(){let t=Math.floor(e-1);t>=this.chapterDocList.length&&(t=this.chapterDocList.length-1),t<0&&(t=0),yield this.goToChapter(t,this.chapterDocList[t].href,this.chapterDocList[t].label)}))}visibleText(){return c(this,void 0,void 0,(function*(){return this.getDocument()?yield(e=parseInt(this.tempLocation.chapterDocIndex||"0"),t=this.chapterDocList,n=this.readerMode,c(void 0,void 0,void 0,(function*(){let i=(yield t[e].text.getTextContent()).items.map((e=>e.str));if("double"===n){let n=(yield t[e+1].text.getTextContent()).items.map((e=>e.str));i=i.concat(n)}return i}))):"";var e,t,n}))}audioText(){return c(this,void 0,void 0,(function*(){return yield this.visibleText()}))}chapterText(){return c(this,void 0,void 0,(function*(){return(yield this.visibleText()).join(" ")}))}record(){return c(this,void 0,void 0,(function*(){""!==this.animation&&(yield new Promise((e=>setTimeout(e,1e3))));let e=this.getDocument();e&&(yield this.handlePDFRecord(e))}))}recordByChapter(e){return c(this,void 0,void 0,(function*(){if(""!==this.animation&&(yield new Promise((e=>setTimeout(e,1e3)))),e>=this.chapterDocList.length||e<0)return;this.tempLocation.chapterDocIndex=e+"",this.tempLocation.percentage=1===this.chapterDocList.length?"1":e/(this.chapterDocList.length-1)+"",this.tempLocation.chapterHref=this.chapterDocList[e].href;let t=this.chapterDocList[e].label;if(!t){let n=e;for(;n>=0;){if(this.chapterDocList[n].label){t=this.chapterDocList[n].label;break}n--}}this.tempLocation.chapterTitle=t,this.tempLocation.text="",this.trigger("page-changed")}))}handlePDFRecord(e){return c(this,void 0,void 0,(function*(){let t=e.querySelectorAll(".pdf-container");if(t.length>0&&xt(this.element,t[t.length-1],this.readerMode,e))this.handleRecord(t[t.length-1]);else for(let n=0;n=0;){if(this.chapterDocList[t].label){e=this.chapterDocList[t].label;break}t--}}this.tempLocation.chapterTitle=e,this.tempLocation.text="",this.trigger("page-changed")}}getMetadata(){return c(this,void 0,void 0,(function*(){try{this.book||(yield this.parse());let e=new b(this.book);return yield e.getMetadata()}catch(e){throw console.error(e),e}}))}highlightAudioNode(e,t){let n=parseInt(this.tempLocation.chapterDocIndex),i=this.getSubDocument(n);if(i&&(Qt(e,t,i),"double"===this.readerMode)){let i=this.getSubDocument(n+1);if(!i)return;Qt(e,t,i)}}highlightSearchNode(e,t){let n=parseInt(this.tempLocation.chapterDocIndex),i=this.getSubDocument(n);i&&rt(e,t,i)}getProgress(){return{totalPage:this.chapterDocList.length,currentPage:parseInt(this.tempLocation.chapterDocIndex||"0")+1}}getNotePosition(){var e;return c(this,void 0,void 0,(function*(){let t=this.getDocument();if(!t)return;let n=E(t);if(!n)return;let i=n.ownerDocument,r=null===(e=null==i?void 0:i.defaultView)||void 0===e?void 0:e.frameElement,o=(null==r?void 0:r.getAttribute("id"))||"",s=o?parseInt(o.split("-").reverse()[0]):0;return Object.assign(Object.assign({},this.tempLocation),{chapterDocIndex:s})}))}getSubDocument(e){let t=document.getElementById("page-area");if(!t)return null;let n=t.getElementsByTagName("iframe")[0];if(!n)return null;let i=n.contentDocument;if(!i)return null;let r=i.getElementById("pdf-iframe-"+e);return r||(bt(e||0,i),r=i.getElementById("pdf-iframe-"+e)),r.contentDocument}getSubIframe(e){let t=document.getElementById("page-area");if(!t)return null;let n=t.getElementsByTagName("iframe")[0];if(!n)return null;let i=n.contentDocument;return i?(n=i.getElementById("pdf-iframe-"+e),n||(bt(e||0,i),n=i.getElementById("pdf-iframe-"+e)),n):null}getHightlightCoords(e){return c(this,void 0,void 0,(function*(){let t=void 0!==e?e:parseInt(this.tempLocation.chapterDocIndex),n=this.getSubDocument(e);if(!n)return;var i=n.getSelection().getRangeAt(0).getClientRects();let r=yield this.chapterDocList[t].text.getPage(),o=yield this.getPdfScale();var s=r.getViewport({scale:o});let a=n.querySelector("canvas");var l=null==a?void 0:a.getClientRects()[0];let A=[];for(let e=0;ei[e].left&&(A[A.length-1].left=i[e].left),A[A.length-1].right=this.chapterDocList.length||e<0)return;let n=t.getElementById("pdf-iframe-"+e);n||(n=bt(e,t));let i=null==n?void 0:n.contentDocument;if(!i)return;if(i.body.innerHTML)return;i.body.innerHTML="";let r=yield fetch(yield this.chapterDocList[e].text.load()).then((e=>e.blob())),o=yield r.text();i.body.innerHTML=o;let s=yield this.getPdfScale();yield this.chapterDocList[e].text.render(i,s,this.isMobile,this);let a=i.querySelector("#koodoPDFLayer");if(a){if("yes"===this.isDarkMode&&(a.style.filter="invert(1) hue-rotate(180deg) contrast(0.95)"),"rgba(233, 216, 188,1)"===this.backgroundColor&&"yes"===this.isScannedPDF&&(a.style.filter="sepia(100%) contrast(0.95) brightness(0.95)"),"rgba(197, 231, 207,1)"===this.backgroundColor&&"yes"===this.isScannedPDF&&(a.style.filter="sepia(30%) hue-rotate(60deg) saturate(120%) brightness(95%)"),"single"===this.readerMode||"double"===this.readerMode){let e=this.element.clientHeight/2-a.getBoundingClientRect().height/2;a.style.marginTop=e+"px",n.style.height=a.getBoundingClientRect().height+e+"px";let t=i.querySelector(".noteLayer");t&&(t.style.position="relative")}"scroll"!==this.readerMode&&(a.style.marginLeft=`calc(50% - ${a.getBoundingClientRect().width/2}px)`),a.style.visibility="visible",window.chapterDocIndex=e,this.trigger("rendered")}}))}handleUnloadPDFChapter(e,t){return c(this,void 0,void 0,(function*(){if(e>=this.chapterDocList.length||e<0)return;let t=this.getSubDocument(e);t&&""!==t.body.innerHTML&&(yield this.chapterDocList[e].text.unload(),t.body.innerHTML="")}))}renderPdfPage(e,t){return c(this,void 0,void 0,(function*(){e>=this.chapterDocList.length||e<0||(e>2&&(yield this.handleUnloadPDFChapter(e-3,t)),yield this.handleRenderPDFChapter(e,t),yield this.handleRenderPDFChapter(e+1,t))}))}}class Wo extends Gt{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"PDFTEXT"})),this.password="",this.ocrLang="chi_sim",this.paraSpacingValue=1.5,this.titleSizeValue=1.2,this.isFinishOCR=!1,this.performOCR=e=>c(this,void 0,void 0,(function*(){try{if("tesseract"===this.ocrEngine){return(yield this.worker.recognize(e)).data.text}this.ocrEngine}catch(e){throw console.error("OCR Error:",e),e}})),this.pdfBuffer=e,this.password=t.password||"",this.isScannedPDF=t.isScannedPDF||"no",this.ocrLang=t.ocrLang||"chi_sim",this.paraSpacingValue=parseFloat(t.paraSpacingValue)||1.5,this.titleSizeValue=parseFloat(t.titleSizeValue)||1.2,this.cache={},this.serverRegion=t.serverRegion||"global",this.processingPromises=new Map,this.ocrEngine=t.ocrEngine||"tesseract"}renderTo(e){return new Promise(((t,n)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let n=new b(this.book);this.chapterList=yield n.getChapter(this.book.toc),this.chapterDocList=yield n.getChapterDoc();for(let e=0;ec(this,void 0,void 0,(function*(){if(this.cache[e])return"yes"===this.isScannedPDF&&this.preProcessNextChapters(e),this.cache[e];let n="";return"yes"===this.isScannedPDF?(n=yield this.processCurrentChapter(e),this.preProcessNextChapters(e)):(n=yield this.getTextFromDoc(t),this.cache[e]=n),n}))}p(e);let i=this.getDocument();i&&(y(e,this.readerMode,i),t())}))))}processCurrentChapter(e){return c(this,void 0,void 0,(function*(){if(this.cache[e])return this.cache[e];if(this.processingPromises.has(e))return yield this.processingPromises.get(e),this.cache[e];const t=this.chapterDocList[e],n=yield this.getTextByOCR(t);return this.cache[e]=n,n}))}preProcessNextChapters(e){const t=Math.min(e+3,this.chapterDocList.length-1);for(let n=e+1;n<=t;n++)if(!this.cache[n]&&!this.processingPromises.has(n)){const e=this.processChapterOCR(n);this.processingPromises.set(n,e),e.finally((()=>{this.processingPromises.delete(n)}))}}processChapterOCR(e){return c(this,void 0,void 0,(function*(){try{const t=this.chapterDocList[e],n=yield this.getTextByOCR(t);this.cache[e]=n}catch(t){console.error(`Failed to process OCR for chapter ${e}:`,t)}}))}getTextByOCR(e){return c(this,void 0,void 0,(function*(){let t=yield e.text.getPage(),{imageURL:n}=yield St(t);let i=(yield this.performOCR(n)).split("\n").filter((e=>""!==e.trim()));return URL.createObjectURL(new Blob([`\n \n \n \n \n
${i.map((e=>`

${e}

`)).join("")}
\n `],{type:"text/html"}))}))}getTextFromDoc(e){return c(this,void 0,void 0,(function*(){let t=yield e.text.getTextContent(),n=[];if(t&&t.items&&Array.isArray(t.items)){const e=t.items.filter((e=>e.str&&e.transform)).map((e=>e.transform[3]));let i=10;if(e.length>0){const t=e.reduce(((e,t)=>(e[t]=(e[t]||0)+1,e)),{});i=Object.keys(t).map(Number).reduce(((e,n)=>t[e]>t[n]?e:n))}let r={text:"",styles:new Set,y:0,tag:"p"},o=0;t.items.forEach((e=>{if(e.str){const t=Math.abs(e.transform[5]-o);let s="p",a=e.transform[3]>Number(i)*this.titleSizeValue;t>e.height*this.paraSpacingValue&&r.text.trim()?(n.push(r),r={text:"",styles:new Set,y:e.transform[5],tag:s,isBold:a}):r.hasOwnProperty("isBold")||(r.isBold=a);const l=e.str;e.hasEOL?l.endsWith("-")?r.text+=l.slice(0,-1):r.text+=l+" ":r.text+=l,o=e.transform[5]}})),r.text.trim()&&n.push(r)}return URL.createObjectURL(new Blob([`\n \n \n \n \n
${n.length>0?n.map((e=>`

${e.text.trim()}

`)).join(""):"Empty"}
\n `],{type:"text/html"}))}))}parse(){return c(this,void 0,void 0,(function*(){try{let t=new Blob([this.pdfBuffer]),n=new File([t],"book",{lastModified:(new Date).getTime(),type:t.type});if((yield(async e=>{const t=new Uint8Array(await e.slice(0,5).arrayBuffer());return 37===t[0]&&80===t[1]&&68===t[2]&&70===t[3]&&45===t[4]})(n))&&(this.book=yield Uo(n,this.password)),"yes"===this.isScannedPDF&&"tesseract"===this.ocrEngine){let t=yield(e=("undefined"!=typeof window&&"object"==typeof window.process&&"renderer"===window.process.type||"undefined"!=typeof process&&"object"==typeof process.versions&&process.versions.electron||"object"==typeof navigator&&"string"==typeof navigator.userAgent&&navigator.userAgent.indexOf("Electron")>=0?".":"")+"/lib/tesseractjs/worker.min.js",c(void 0,void 0,void 0,(function*(){return yield(yield fetch(e)).text()}))),n=URL.createObjectURL(new Blob([t],{type:"application/javascript"}));const i=yield window.Tesseract.createWorker([this.ocrLang],1,{workerPath:n,corePath:`https://${"global"===this.serverRegion?"storage.koodoreader.com":"storage.koodoreader.cn"}/tesseractjs/tesseract-core`,langPath:`https://${"global"===this.serverRegion?"storage.koodoreader.com":"storage.koodoreader.cn"}/tesseractjs/4.0.0-fast`,logger:e=>{"recognizing text"!==e.status||"number"!=typeof e.progress||this.isFinishOCR||((e=>{let t=document.getElementById("ocr-progress-bar");t||(t=document.createElement("progress"),t.id="ocr-progress-bar",t.max=1,t.value=0,t.style.position="fixed",t.style.top="10px",t.style.left="50%",t.style.transform="translateX(-50%)",t.style.width="300px",t.style.zIndex="9999",document.body.appendChild(t)),t.value=e,e>=1&&setTimeout((()=>{t.remove()}),1e3)})(e.progress),1===e.progress&&(this.isFinishOCR=!0))}});yield i.load(),this.worker=i}}catch(e){throw console.error(e),e}var e}))}preCache(){return c(this,void 0,void 0,(function*(){return this.book||(yield this.parse()),yield Wt(this.book)}))}getMetadata(){return c(this,void 0,void 0,(function*(){try{this.book||(yield this.parse());let e=new b(this.book);return yield e.getMetadata()}catch(e){throw console.error(e),e}}))}}const Po=(e,t=!1,n="",i)=>{const r=(new DOMParser).parseFromString(t?((e,t,n)=>{let i=e.split("\n");1===i.length&&(i=e.split("\r"));const r=[];let o=!1;if(n&&n.refresh&&(o=!0),i.length>1e4&&!o){n&&n.text||(n={text:i[0],chapterTitle:"",chapterDocIndex:0});let e=i.findIndex((e=>Le(e)===Le(n.text)));-1===e&&(e=0);const o=Math.max(e-1e3,0),s=Math.min(e+1e3,i.length),a=i.slice(o,s),l=a.filter((e=>{const n=Le(e);return n&&Te(n,t)})),A=new Set(l.map((e=>Le(e))));let c=l.findIndex((e=>Le(e)===Le(n.chapterTitle)));if(-1===c&&(c=0),c0)for(let t=0;tChapter ${t}`),r.push(`

Chapter ${t}

`)}for(const e of a){const t=Le(e);t&&A.has(t)?r.push(`

${t}

`):r.push(`

${e}

`)}}else for(const e of i){const n=Le(e);n&&Te(n,t)?r.push(`

${n}

`):r.push(`

${e}

`)}return r.join("")||`

Title

${e}

`})(e,n,i):e,"text/html");let o=Ko(r);0===o.length&&(o=Jo(r));for(let e=0;e""};return A.sections=l.map((e=>({id:e.index,load:()=>{return t=e.index,c(void 0,void 0,void 0,(function*(){return URL.createObjectURL(new Blob([l[t].text],{type:"text/html"}))}));var t},unload:()=>{e.index},size:l[e.index].text.length}))),A.toc=l.map((e=>({label:e.label,href:"title"+e.index}))).filter((e=>""!==e.label)),A.rendition={layout:"pre-paginated"},A.resolveHref=e=>({index:parseInt(e.substring(5,e.length))}),A.splitTOCHref=e=>[e,null],A.getTOCFragment=e=>e.documentElement,A},Ko=e=>Array.from(e.querySelectorAll("h1,h2,h3,h4,h5,h6,title")),zo=e=>{let t=[],n=e.split(" ").filter((e=>""!==e.trim())),i=n.map((e=>qo(e)||jo(e)));return t=n.map(((e,t)=>({index:t,label:i[t],text:e,href:"title"+t}))),t},qo=e=>{var t;const n=(new DOMParser).parseFromString(e,"text/html").querySelector("h1, h2, h3, h4, h5, h6");return n&&(null===(t=n.textContent)||void 0===t?void 0:t.trim())||""},jo=e=>{var t;const n=(new DOMParser).parseFromString(e,"text/html").querySelector("title");return n&&(null===(t=n.textContent)||void 0===t?void 0:t.trim())||""},Jo=e=>{let t=e.getElementsByTagName("*"),n=Array.from(t).filter((e=>1===e.childNodes.length&&e.childNodes[0].nodeType===Node.TEXT_NODE&&Te(Le(e.textContent)))),i=[];for(let e=0;ec(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse(t));let i=new b(this.book);this.chapterList=yield i.getChapter(this.book.toc),this.chapterDocList=yield i.getChapterDoc(),p(e);let r=this.getDocument();r&&(y(e,this.readerMode,r),n())}))))}parse(e){return c(this,void 0,void 0,(function*(){try{const t=new TextDecoder(this.charset),n=new Uint8Array(this.txtBuffer);let i=t.decode(n);this.book=Po(i,!0,this.parserRegex,e)}catch(e){throw console.error(e),e}}))}refreshContent(){return c(this,void 0,void 0,(function*(){yield this.parse({refresh:!0});let e=new b(this.book);return this.chapterList=yield e.getChapter(this.book.toc),this.chapterDocList=yield e.getChapterDoc(),this.chapterList}))}preCache(){return c(this,void 0,void 0,(function*(){return this.book||(yield this.parse({refresh:!0})),yield Wt(this.book)}))}getMetadata(e){return c(this,void 0,void 0,(function*(){try{const t=4096,n=e.byteLength,i=Math.min(n,t),r=new Uint8Array(e,0,i);const s=o.detect(r)||"utf8";return this.charset=s,{charset:s}}catch(e){return console.error("Error detecting charset:",e),this.charset="utf8",{charset:"utf8"}}}))}}const Xo=({entries:e,loadBlob:t,getSize:n},i,r)=>{const o=new Map,s=new Map,a=async(e,n)=>{if(o.has(e))return o.get(e);if(n){const i=URL.createObjectURL(await t(e)),r=URL.createObjectURL(await t(n)),a=URL.createObjectURL(new Blob([`
`],{type:"text/html"}));return s.set(e,[i,a]),o.set(e,a),a}{const n=URL.createObjectURL(await t(e)),i=URL.createObjectURL(new Blob([`
`],{type:"text/html"}));return s.set(e,[n,i]),o.set(e,i),i}},l=[".jpg",".jpeg",".png",".gif",".bmp",".webp",".svg"],A=e.map((e=>e.filename)).filter((e=>l.some((t=>e.endsWith(t))))).sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"}))),c={getCover:()=>t(A[0])};return c.metadata={title:i.name},c.sections=A.map(((e,t)=>({id:e,load:()=>{if("double"===r){const n=A[t+1];return a(e,n)}return a(e)},unload:()=>(e=>{s.get(e)?.forEach?.((e=>URL.revokeObjectURL(e))),s.delete(e),o.delete(e)})(e),size:n(e)}))).filter(((e,t)=>"double"!==r||t%2==0)),c.toc=A.map((e=>({label:e,href:e}))).filter(((e,t)=>"double"!==r||t%2==0)),c.rendition={layout:"pre-paginated"},c.resolveHref=e=>({index:c.sections.findIndex((t=>t.id===e))}),c.splitTOCHref=e=>[e,null],c.getTOCFragment=e=>e.documentElement,c};class Zo extends Gt{constructor(e,t){super(t),this.comicBuffer=e,this.readerMode=t.readerMode,this.format=t.format,this.chapterList=[],this.chapterDocList=[],this.book="",this.element="",this.rpc}renderTo(e){return new Promise(((t,n)=>c(this,void 0,void 0,(function*(){if(this.element=e,p(e),!this.book)try{yield this.parse()}catch(e){console.error(e),n(e)}let i=new b(this.book);this.chapterList=yield i.getChapter(this.book.toc),this.chapterDocList=yield i.getChapterDoc();let r=this.getDocument();r&&(y(e,this.readerMode,r),t())}))))}parse(){return c(this,void 0,void 0,(function*(){try{let e=new Blob([this.comicBuffer]),t=new File([e],"book."+this.format.toLocaleLowerCase(),{lastModified:(new Date).getTime(),type:e.type});if("CBZ"===this.format){const e=yield this.makeZipLoader(t);this.book=Xo(e,t,this.readerMode)}else if("CBT"===this.format){const e=yield this.makeTarLoader();this.book=Xo(e,t,this.readerMode)}else if("CBR"===this.format){this.rpc=yield window.RPC.new("./lib/libunrar/worker.js",{loaded:function(){console.info("loaded")},progressShow:function(e,t,n){console.info(n)}}),yield new Promise((e=>setTimeout(e,200)));const e=yield this.makeRarLoader();this.book=Xo(e,t,this.readerMode)}else if("CB7"===this.format){const e=yield this.make7zLoader();this.book=Xo(e,t,this.readerMode)}}catch(e){throw console.error(e),e}}))}preCache(){return c(this,void 0,void 0,(function*(){return this.book||(yield this.parse()),yield Wt(this.book)}))}makeZipLoader(e){return c(this,void 0,void 0,(function*(){let t=yield n.loadAsync(e);const i=t.files;return{entries:Object.values(i).map((e=>({filename:e.name}))),loadText:e=>c(this,void 0,void 0,(function*(){let n=t.file(e);return n?n.async("string"):""})),loadBlob:e=>c(this,void 0,void 0,(function*(){let n=t.file(e);if(n){let e=yield n.async("arraybuffer");return new Blob([e])}return new Blob([new ArrayBuffer(0)])})),getSize:e=>{let n=t.file(e);if(n)return n._data.uncompressedSize||1}}}))}makeTarLoader(){return c(this,void 0,void 0,(function*(){const e=yield s(this.comicBuffer),t=new Map(e.map((e=>[e.name,e]))),n=e=>(n,...i)=>t.has(n)?e(t.get(n),...i):null,i=n((e=>e.readAsString())),r=n(((e,t)=>e.blob));return{entries:e.map((e=>({filename:e.name}))),loadText:i,loadBlob:r,getSize:e=>{var n,i;return null!==(i=null===(n=t.get(e))||void 0===n?void 0:n.size)&&void 0!==i?i:1}}}))}makeRarLoader(){return c(this,void 0,void 0,(function*(){return new Promise(((e,t)=>{var n=[this.comicBuffer],i=[{name:"book.rar",content:this.comicBuffer}];this.rpc.transferables=n,this.rpc.unrar(i,null,0).then((t=>{let n=this.getRarEntries(t.ls);const i=new Map(Object.values(n).map((e=>[e.fullFileName,e]))),r=e=>(t,...n)=>i.has(t)?e(i.get(t),...n):null,o=r((e=>e.fullFileName)),s=r(((e,t)=>new Blob([e.fileContent])));e({entries:Object.values(n).map((e=>({filename:e.fullFileName}))),loadText:o,loadBlob:s,getSize:e=>{var t,n;return null!==(n=null===(t=i.get(e))||void 0===t?void 0:t.fileSize)&&void 0!==n?n:1}})})).catch((e=>{console.error(e),t(e)}))}))}))}make7zLoader(){return c(this,void 0,void 0,(function*(){const e="./lib/7z-wasm/7zz.wasm";if(!window.wasmBinary){const t=yield fetch(e,{credentials:"same-origin"});if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";window.wasmBinary=yield t.arrayBuffer()}const t=yield window.SevenZip({wasmBinary:window.wasmBinary}),n=new Uint8Array(this.comicBuffer),i="archive.cb7",r=t.FS.open(i,"w+");t.FS.write(r,n,0,n.length),t.FS.close(r),t.callMain(["x",i]);const o=t.FS,s=this.get7zEntries(o.lookupPath("/").node),a=new Map(s.map((e=>[e.name,e]))),l=e=>(t,...n)=>a.has(t)?e(a.get(t),...n):null,A=l((e=>e.name)),c=l(((e,t)=>new Blob([e.buffer])));return{entries:s.map((e=>({filename:e.name}))),loadText:A,loadBlob:c,getSize:e=>{var t,n;return null!==(n=null===(t=a.get(e))||void 0===t?void 0:t.size)&&void 0!==n?n:1}}}))}getRarEntries(e){const t=Object.keys(e);let n=[];for(let i=0;i"archive.cb7"!=e&&"dev"!=e&&"home"!=e&&"proc"!=e&&"tmp"!=e));let i=[];for(let e=0;ec(this,void 0,void 0,(function*(){try{this.book||(yield this.parse());const t=yield this.book.getCover();var n=new FileReader;n.readAsDataURL(t),n.onloadend=()=>{e({cover:n.result})}}catch(e){console.error(e),t(e)}}))))}))}}const _o=e=>e?.trim()?.replace(/\s{2,}/g," "),$o=e=>_o(e?.textContent),es={XLINK:"http://www.w3.org/1999/xlink",EPUB:"http://www.idpf.org/2007/ops"},ts="application/xml",ns="application/xhtml+xml",is={strong:["strong","self"],emphasis:["em","self"],style:["span","self"],a:"anchor",strikethrough:["s","self"],sub:["sub","self"],sup:["sup","self"],code:["code","self"],image:"image"},rs={epigraph:["blockquote"],subtitle:["h2",is],"text-author":["p",is],date:["p",is],stanza:"stanza"},os={title:["header",{p:["h1",is],"empty-line":["br"]}],epigraph:["blockquote","self"],image:"image",annotation:["aside"],section:["section","self"],p:["p",is],poem:["blockquote",rs],subtitle:["h2",is],cite:["blockquote","self"],"empty-line":["br"],table:["table",{tr:["tr",["align"]],th:["th",["colspan","rowspan","align","valign"]],td:["td",["colspan","rowspan","align","valign"]]}],"text-author":["p",is]};rs.epigraph.push(os);const ss={image:"image",title:["section",{p:["h1",is],"empty-line":["br"]}],epigraph:["section",os],section:["section",os]},as=e=>{const t=e.getAttributeNS(es.XLINK,"href"),[,n]=t.split("#"),i=e.getRootNode().getElementById(n);return i?`data:${i.getAttribute("content-type")};base64,${i.textContent}`:t};class ls{constructor(e){this.fb2=e,this.doc=document.implementation.createDocument(es.XHTML,"html")}image(e){const t=this.doc.createElement("img");return t.alt=e.getAttribute("alt"),t.title=e.getAttribute("title"),t.setAttribute("src",as(e)),t}anchor(e){const t=this.convert(e,{a:["a",is]});return t.setAttribute("href",e.getAttributeNS(es.XLINK,"href")),"note"===e.getAttribute("type")&&t.setAttributeNS(es.EPUB,"epub:type","noteref"),t}stanza(e){const t=this.convert(e,{stanza:["p",{title:["header",{p:["strong",is],"empty-line":["br"]}],subtitle:["p",is]}]});for(const n of e.children)"v"===n.nodeName&&(t.append(this.doc.createTextNode(n.textContent)),t.append(this.doc.createElement("br")));return t}convert(e,t){if(3===e.nodeType)return this.doc.createTextNode(e.textContent);if(4===e.nodeType)return this.doc.createCDATASection(e.textContent);if(8===e.nodeType)return this.doc.createComment(e.textContent);const n=t?.[e.nodeName];if(!n)return null;if("string"==typeof n)return this[n](e);const[i,r]=n,o=this.doc.createElement(i);if(e.id&&(o.id=e.id),o.classList.add(e.nodeName),Array.isArray(r))for(const t of r)o.setAttribute(t,e.getAttribute(t));const s="self"===r?t:Array.isArray(r)?null:r;let a=e.firstChild;for(;a;){const e=this.convert(a,s);e&&o.append(e),a=a.nextSibling}return o}}const As=URL.createObjectURL(new Blob(['\n@namespace epub "http://www.idpf.org/2007/ops";\nbody > img, section > img {\n display: block;\n margin: auto;\n}\n.title {\n text-align: center;\n}\nbody > section > .title, body.notesBodyType > .title {\n margin: 3em 0;\n}\nbody.notesBodyType > section .title {\n text-align: left;\n margin: 1em 0;\n}\np {\n text-indent: 1em;\n margin: 0;\n}\n:not(p) + p, p:first-child {\n text-indent: 0;\n}\n.poem p {\n text-indent: 0;\n margin: 1em 0;\n}\n.text-author, .date {\n text-align: end;\n}\n.text-author:before {\n content: "—";\n}\ntable {\n border-collapse: collapse;\n}\ntd, th {\n padding: .25em;\n}\na[epub|type~="noteref"] {\n font-size: .75em;\n vertical-align: super;\n}\nbody:not(.notesBodyType) > .title, body:not(.notesBodyType) > .epigraph {\n margin: 3em 0;\n}\n'],{type:"text/css"})),cs="data-foliate-id",gs=async e=>{const t={},n=await(async e=>{const t=await e.arrayBuffer(),n=new TextDecoder("utf-8").decode(t),i=new DOMParser,r=i.parseFromString(n,ts),o=r.xmlEncoding||n.match(/^<\?xml\s+version\s*=\s*["']1.\d+"\s+encoding\s*=\s*["']([A-Za-z0-9._-]*)["']/)?.[1];if(o&&"utf-8"!==o.toLowerCase()){const e=new TextDecoder(o).decode(t);return i.parseFromString(e,ts)}return r})(e),i=new ls(n),r=e=>n.querySelector(e),o=e=>[...n.querySelectorAll(e)],s=e=>{const t=$o(e.querySelector("nickname"));if(t)return t;const n=$o(e.querySelector("first-name")),i=$o(e.querySelector("middle-name")),r=$o(e.querySelector("last-name"));return{name:[n,i,r].filter((e=>e)).join(" "),sortAs:r?[r,[n,i].filter((e=>e)).join(" ")].join(", "):null}},a=e=>e?.getAttribute("value")??$o(e),l=r("title-info annotation");t.metadata={title:$o(r("title-info book-title")),identifier:$o(r("document-info id")),language:$o(r("title-info lang")),author:o("title-info author").map(s),translator:o("title-info translator").map(s),producer:o("document-info author").map(s).concat(o("document-info program-used").map($o)),publisher:$o(r("publish-info publisher")),published:a(r("title-info date")),modified:a(r("document-info date")),description:l?i.convert(l,{annotation:["div",os]}).innerHTML:null,subject:o("title-info genre").map($o)},t.getCover=()=>fetch(as(r("coverpage image"))).then((e=>e.blob()));const A=Array.from(n.querySelectorAll("body"),(e=>{const t=i.convert(e,{body:["body",ss]});return[Array.from(t.children,(e=>{const t=[e,...e.querySelectorAll("[id]")].map((e=>e.id));return{el:e,ids:t}})),t]})),c=A[0][0].map((({el:e,ids:t})=>({ids:t,titles:Array.from(e.querySelectorAll(":scope > section > .title"),((e,t)=>(e.setAttribute(cs,t),{title:$o(e),index:t}))),el:e}))).concat(A.slice(1).map((([e,t])=>{const n=e.map((e=>e.ids)).flat();return t.classList.add("notesBodyType"),{ids:n,el:t,linear:"no"}}))).map((({ids:e,titles:t,el:n,linear:i})=>{const r=(o=n.outerHTML,`\n\n \n ${o}\n`);var o;const s=new Blob([r],{type:ns}),a=URL.createObjectURL(s);return{ids:e,title:_o(n.querySelector(".title, .subtitle, p")?.textContent??(n.classList.contains("title")?n.textContent:"")),titles:t,load:()=>a,createDocument:()=>(new DOMParser).parseFromString(r,ns),size:s.size-Array.from(n.querySelectorAll("[src]"),(e=>e.getAttribute("src")?.length??0)).reduce(((e,t)=>e+t),0),linear:i}})),g=new Map;return t.sections=c.map(((e,t)=>{const{ids:n,load:i,createDocument:r,size:o,linear:s}=e;for(const e of n)e&&g.set(e,t);return{id:t,load:i,createDocument:r,size:o,linear:s}})),t.toc=c.map((({title:e,titles:t},n)=>{const i=n.toString();return{label:e,href:i,subitems:t?.length?t.map((({title:e,index:t})=>({label:e,href:`${i}#${t}`}))):null}})).filter((e=>e)),t.resolveHref=e=>{const[t,n]=e.split("#");return t?{index:Number(t),anchor:e=>e.querySelector(`[${cs}="${n}"]`)}:{index:g.get(n),anchor:e=>e.getElementById(n)}},t.splitTOCHref=e=>e?.split("#")?.map((e=>Number(e)))??[],t.getTOCFragment=(e,t)=>e.querySelector(`[${cs}="${t}"]`),t};class ds extends Gt{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"FB2"})),this.fb2Buffer=e}renderTo(e){return new Promise(((t,n)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let n=new b(this.book);this.chapterList=yield n.getChapter(this.book.toc),this.chapterDocList=yield n.getChapterDoc(),p(e);let i=this.getDocument();i&&(y(e,this.readerMode,i),t())}))))}parse(){return c(this,void 0,void 0,(function*(){try{let e=new Blob([this.fb2Buffer]);this.book=yield gs(e)}catch(e){throw console.error(e),e}}))}preCache(){return c(this,void 0,void 0,(function*(){return this.book||(yield this.parse()),yield Wt(this.book)}))}getMetadata(){return c(this,void 0,void 0,(function*(){try{this.book||(yield this.parse());let e=new b(this.book);return yield e.getMetadata()}catch(e){throw console.error(e),e}}))}}class hs extends Gt{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"CACHE"})),this.cacheBuffer=e}renderTo(e){return new Promise(((t,n)=>c(this,void 0,void 0,(function*(){this.element=e,this.book=yield Nt(this.cacheBuffer);let n=new b(this.book);this.chapterList=yield n.getChapter(this.book.toc),this.chapterDocList=yield n.getChapterDoc(),p(e);let i=this.getDocument();i&&(y(e,this.readerMode,i),t())}))))}}class us extends Gt{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"DOCX"})),this.docxBuffer=e}renderTo(e){return new Promise(((t,n)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let n=new b(this.book);this.chapterList=yield n.getChapter(this.book.toc),this.chapterDocList=yield n.getChapterDoc(),p(e);let i=this.getDocument();i&&(y(e,this.readerMode,i),t())}))))}parse(){return c(this,void 0,void 0,(function*(){return new Promise(((e,t)=>{try{a.convertToHtml({arrayBuffer:this.docxBuffer}).then((t=>c(this,void 0,void 0,(function*(){this.book=Po(t.value,!1),e()}))))}catch(e){console.error(e),t(e)}}))}))}preCache(){return c(this,void 0,void 0,(function*(){return this.book||(yield this.parse()),yield Wt(this.book)}))}}class fs extends Gt{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"MD"})),this.mdBuffer=e}renderTo(e){return new Promise(((t,n)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let n=new b(this.book);this.chapterList=yield n.getChapter(this.book.toc),this.chapterDocList=yield n.getChapterDoc(),p(e);let i=this.getDocument();i&&(y(e,this.readerMode,i),t())}))))}parse(){return c(this,void 0,void 0,(function*(){return new Promise(((e,t)=>{try{var n=new Blob([this.mdBuffer],{type:"text/plain"}),i=new FileReader;i.onload=t=>c(this,void 0,void 0,(function*(){var n;let i=yield l(null===(n=t.target)||void 0===n?void 0:n.result);this.book=Po(i,!1),e()})),i.readAsText(n,"UTF-8")}catch(e){console.error(e),t(e)}}))}))}preCache(){return c(this,void 0,void 0,(function*(){return this.book||(yield this.parse()),yield Wt(this.book)}))}}class ps extends Gt{constructor(e,t){super(t),this.htmlBuffer=e}renderTo(e){return new Promise(((t,n)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let n=new b(this.book);this.chapterList=yield n.getChapter(this.book.toc),this.chapterDocList=yield n.getChapterDoc(),p(e);let i=this.getDocument();i&&(y(e,this.readerMode,i),t())}))))}parse(){return c(this,void 0,void 0,(function*(){return new Promise(((e,t)=>{try{var n=new Blob([this.htmlBuffer],{type:Ot[this.format.toLocaleLowerCase()]}),i=new FileReader;i.onload=t=>c(this,void 0,void 0,(function*(){var n;let i=null===(n=t.target)||void 0===n?void 0:n.result;"MHTML"===this.format&&(i=A.convert(i).window.document.documentElement.innerHTML),this.book=Po(i,!1),e()})),i.readAsText(n,"UTF-8")}catch(e){console.error(e),t(e)}}))}))}preCache(){return c(this,void 0,void 0,(function*(){return this.book||(yield this.parse()),yield Wt(this.book)}))}}export{hs as CacheRender,Zo as ComicRender,us as DocxRender,Or as EpubRender,ds as Fb2Render,ps as HtmlRender,fs as MdRender,So as MobiRender,No as PdfRender,Wo as PdfTextRender,Vo as TxtRender}; +import e from"underscore";import t from"rangy/lib/rangy-core.js";import"rangy/lib/rangy-textrange";import n from"jszip";import*as i from"fflate";import{unzlibSync as r}from"fflate";import o from"chardet";import s from"js-untar";import a from"mammoth";import{marked as l}from"marked";import A from"mhtml2html";function c(e,t,n,i){return new(n||(n=Promise))((function(r,o){function s(e){try{l(i.next(e))}catch(e){o(e)}}function a(e){try{l(i.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}l((i=i.apply(e,t||[])).next())}))}const g=e=>e?parseFloat(e+""):0,d=(e,t)=>c(void 0,void 0,void 0,(function*(){let n="";if(e&&e.load){let t=yield fetch(yield e.load()).then((e=>e.blob()));n=yield t.text()}return t||(e&&e.loadAsset&&(n=yield u(n,e.loadAsset)),n=f(n)),n})),h=e=>Array.from(e.querySelectorAll("img, image")),u=(e,t)=>c(void 0,void 0,void 0,(function*(){let n=(new DOMParser).parseFromString(e,"text/html"),i=h(n);for(let e=0;e{let t=(new DOMParser).parseFromString(e,"text/html"),n=h(t);if(0===n.length)return e;for(let e=0;e{var n=document.createElement("iframe");n.style.width=t?100*(t-.4)+"%":"100%",n.style.margin="0",n.style.border="0",n.style.padding="0",n.style.minHeight="calc(100% - 2px)",n.style.fontSize="100%",n.style.font="inherit",n.scrolling="no",n.tabIndex=0,n.id="kookit-iframe",n.style.verticalAlign="baseline",e.innerHTML="",e.appendChild(n),t&&(e.scrollLeft=e.scrollWidth/2-e.clientWidth/2)},m=(e,t,n)=>{let i=Math.floor(n.clientWidth/12),r=i%2==0?i:i-1;return{totalPage:"scroll"===e?Math.floor(n.scrollHeight/(n.clientHeight-50)):"single"===e?Math.round(parseFloat(t.body.scrollWidth/(t.body.clientWidth+r)+"")):2*Math.round(parseFloat(t.body.scrollWidth/(t.body.clientWidth+r)+"")),currentPage:"scroll"===e?Math.floor(n.scrollTop/(n.clientHeight-50))+1:Math.round(parseFloat(g(t.body.scrollLeft)/(t.body.clientWidth+r)+""))+1}},B=e=>{var t;let n=e.querySelectorAll("a, article, cite, div, li, p, span, pre, dt, dd, table, bold, font, blockquote");for(let e=0;ec(void 0,void 0,void 0,(function*(){const t=new Image;t.src=e;try{yield t.decode()}catch(e){console.error(e)}return t})),C=(e,t,n,i)=>c(void 0,void 0,void 0,(function*(){var r,o;let s=Math.floor(e.clientWidth/12),a=s%2==0?s:s-1;e.clientWidth;let l=i.querySelectorAll("img, image");for(let s of l){let l=s.parentElement,A=null==l?void 0:l.parentElement,c=0,g=0,d=s.naturalWidth,h=s.naturalHeight;if("image"===s.tagName){let e=yield w(s.getAttribute("xlink:href"));d=e.naturalWidth,h=e.naturalHeight}if(n.startsWith("CB")&&"scroll"===t)g=l.offsetWidth;else if(n.startsWith("CB")&&"single"===t)c=e.clientHeight,g=e.clientWidth;else if(l&&d&&h&&l.clientHeight&&l.clientWidth){h/d>l.clientHeight/l.clientWidth?(c=l.clientHeight,g=parseInt(c*d/h+"")):(g=l.clientWidth,c=parseInt(g*h/d+"")),c>i.body.clientHeight&&"scroll"!==t&&(g=parseInt(g*(i.body.clientHeight/c)+""),c=i.body.clientHeight),l.style.textIndent="0px"}else l&&l.clientWidth&&l.clientWidth>0?(g=l.clientWidth,c=l.clientHeight,l.style.textIndent="0px"):A&&"BODY"!==A.tagName&&A.clientWidth&&A.clientWidth>0?(g=A.clientWidth,c=A.clientHeight,A.style.textIndent="0px"):(g=e.clientWidth,c=e.clientHeight);g=g?Math.min("scroll"===t||"single"===t?e.clientWidth:(e.clientWidth-a)/2,g):"scroll"===t||"single"===t?e.clientWidth:(e.clientWidth-a)/2,d&&h&&(d>h||c/g>h/d?c=g*(h/d):g=c*(d/h)),(g||c)&&s.setAttribute("style",(s.getAttribute("style")?s.getAttribute("style"):"")+";"+`max-width: ${g>0?g+"px":""};max-height:${c>0?c+"px":""}; margin: 0 auto; min-width: 0px; min-height: 0px; ${n.startsWith("CB")?`margin-left: calc(100% - ${s.clientWidth}px);`:""}`),"image"===s.tagName&&(null===(r=s.parentElement)||void 0===r||r.setAttribute("width",g),null===(o=s.parentElement)||void 0===o||o.setAttribute("height",c)),n.startsWith("CB")&&"scroll"===t&&s.setAttribute("style",(s.getAttribute("style")?s.getAttribute("style"):"")+";margin-left: 0px; width: 100%;"),n.startsWith("CB")&&"scroll"!==t&&s.setAttribute("style",(s.getAttribute("style")?s.getAttribute("style"):"")+`;margin-left: calc(50% - ${s.getBoundingClientRect().width/2}px);`)}})),y=(e,t,n)=>{let i=n.createElement("style");if(i.id="default-style",i.textContent="p,empty-line{display: inherit;margin-block-start: inherit;margin-block-end: inherit;margin-inline-start: inherit;margin-inline-end: inherit;}body{margin: 0px}",n.head.appendChild(i),"scroll"===t)return;let r="double"===t?2:1,o=Math.floor(e.clientWidth/12),s=o%2==0?o:o-1;n.body.setAttribute("style",`width: ${e.clientWidth+"px"};height: 100%;overflow-y: hidden;overflow-X: hidden;padding-left: 0px;padding-right: 0px;margin: 0px;box-sizing: border-box;touch-action:none; overscroll-behavior: none;max-width: inherit;column-fill: auto;column-gap: ${s}px; column-width: ${(e.clientWidth-s)/r}px;`)};function E(e){const t=e.getSelection();if(!t)return null;if(t.rangeCount>0){return t.getRangeAt(0).startContainer.parentElement}return null}const I=e=>"string"==typeof e||e instanceof String;class b{constructor(e){this.book=e,this.chapterList=[],this.flattenChapters=[],this.chapterDocList=[]}unescapeHtml(e){if(!e)return"";return(new DOMParser).parseFromString(e,"text/html").documentElement.textContent||""}getChapter(e){return c(this,void 0,void 0,(function*(){return this.chapterList=e?yield Promise.all(e.map(((e,t)=>c(this,void 0,void 0,(function*(){let n=t;try{n=e.href&&(yield this.book.resolveHref(e.href))?(yield this.book.resolveHref(e.href)).index:n}catch(e){console.error(e)}return{label:this.unescapeHtml(e.label)?this.unescapeHtml(e.label):n+"",href:e.href?e.href:"title"+n,index:n,subitems:e.subitems?yield this.getChapter(e.subitems):[]}}))))):yield Promise.all(this.book.sections.map(((e,t)=>c(this,void 0,void 0,(function*(){return{label:e&&e.label&&this.unescapeHtml(e.label)?this.unescapeHtml(e.label):t+"",href:e&&e.href?e.href:"title"+t,index:t,subitems:e&&e.subitems?yield this.getChapter(e.subitems):[]}}))))),this.flattenChapters=this.flatChapter(this.chapterList),this.chapterList}))}getChapterDoc(){return c(this,void 0,void 0,(function*(){const e=this.flattenChapters.map((e=>e.index));return this.book.sections.map(((t,n)=>e.indexOf(n)>-1?{label:this.unescapeHtml(this.flattenChapters[e.indexOf(n)].label),href:this.flattenChapters[e.indexOf(n)].href,text:t}:{label:"",href:"",text:t}))}))}flatChapter(e){let t=[];for(let n=0;n0?(t.push(e[n]),t=t.concat(this.flatChapter(e[n].subitems))):t.push(e[n]);return t}getMetadata(){return new Promise(((e,t)=>c(this,void 0,void 0,(function*(){const n=this.book.metadata;let i=n.author&&n.author[0]&&n.author[0].name&&I(n.author[0].name)?n.author[0].name:n.author&&n.author[0]&&I(n.author[0])?n.author[0]:n.author&&I(n.author)?n.author:"";try{const t=yield this.book.getCover();var r=new FileReader;r.readAsDataURL(t),r.onloadend=()=>{e(Object.assign(Object.assign({},n),{name:n.title,author:i,description:n.description,publisher:n.publisher,cover:r.result}))}}catch(r){console.error(r);try{e(Object.assign(Object.assign({},n),{name:n.title,author:i,description:n.description,publisher:n.publisher,cover:""}))}catch(e){console.error(e),t(e)}}}))))}}const v=(e,t)=>[-1,...t,e.length].reduce((({xs:t,a:n},i)=>({xs:t?.concat([e.slice(n+1,i)])??[],a:i})),{}).xs,x=/\d/,Q=/^epubcfi\((.*)\)$/,D=e=>e.replace(/[\^[\](),;=]/g,"^$&"),S=(e,t)=>{return n=([e])=>e===t,e.map(((e,t,i)=>n(e,t,i)?t:null)).filter((e=>null!=e));var n},k=e=>{const t=[];let n;for(const[i,r]of e){if("/"===i)t.push({index:r});else{const e=t[t.length-1];if(":"===i)e.offset=r;else if("~"===i)e.temporal=r;else if("@"===i)e.spatial=(e.spatial??[]).concat(r);else if(";s"===i)e.side=r;else if("["===i){if("/"!==n||!r){e.text=(e.text??[]).concat(r);continue}e.id=r}}n=i}return t},M=e=>v(e,S(e,"!")).map(k),F=e=>{const t=(e=>{const t=[];let n,i,r="";const o=e=>(t.push(e),n=null,r=""),s=e=>(r+=e,i=!1);for(const t of Array.from(e.trim()).concat(""))if("^"!==t||i){if("!"===n)o(["!"]);else if(","===n)o([","]);else if("/"===n||":"===n){if(x.test(t)){s(t);continue}o([n,parseInt(r)])}else if("~"===n){if(x.test(t)||"."===t){s(t);continue}o(["~",parseFloat(r)])}else if("@"===n){if(":"===t){o(["@",parseFloat(r)]),n="@";continue}if(x.test(t)||"."===t){s(t);continue}o(["@",parseFloat(r)])}else{if("["===n){";"!==t||i?","!==t||i?"]"!==t||i?s(t):o(["[",r]):(o(["[",r]),n="["):(o(["[",r]),n=";");continue}if(n?.startsWith(";")){"="!==t||i?";"!==t||i?"]"!==t||i?s(t):o([n,r]):(o([n,r]),n=";"):(n=`;${r}`,r="");continue}}"/"!==t&&":"!==t&&"~"!==t&&"@"!==t&&"["!==t&&"!"!==t&&","!==t||(n=t)}else i=!0;return t})((n=e,n.match(Q)?.[1]??n));var n;const i=S(t,",");if(!i.length)return M(t);const[r,o,s]=v(t,i).map(M);return{parent:r,start:o,end:s}},Y=({index:e,id:t,offset:n,temporal:i,spatial:r,text:o,side:s})=>{const a=s?`;s=${s}`:"";return`/${e}`+(t?`[${D(t)}${a}]`:"")+(null!=n&&e%2?`:${n}`:"")+(i?`~${i}`:"")+(r?`@${r.join(":")}`:"")+(o||!t&&s?"["+(o?.map(D)?.join(",")??"")+a+"]":"")},L=e=>e.parent?[e.parent,e.start,e.end].map(L).join(","):e.map((e=>e.map(Y).join(""))).join("!"),T=e=>{return t=L(e),Q.test(t)?t:`epubcfi(${t})`;var t},R=(e,t)=>{return"string"==typeof e?T(R(F(e),t)):e.parent?(n=e.parent,i=e[t?"end":"start"],n.slice(0,-1).concat([n[n.length-1].concat(i[0])]).concat(i.slice(1))):e;var n,i},H=({nodeType:e})=>3===e||4===e,G=({nodeType:e})=>1===e,O=e=>{const t=Array.from(e.childNodes).filter((e=>H(e)||G(e))).reduce(((e,t)=>{let n=e[e.length-1];return n?H(t)?Array.isArray(n)?n.push(t):H(n)?e[e.length-1]=[n,t]:e.push(t):G(n)?e.push(null,t):e.push(t):e.push(t),e}),[]);return G(t[0])&&t.unshift("first"),G(t[t.length-1])&&t.push("last"),t.unshift("before"),t.push("after"),t},U=(e,t)=>e?O(e)[t]:null,N=(e,t)=>{const{id:n}=t[t.length-1];if(n){const t=e.ownerDocument.getElementById(n);if(t)return{node:t,offset:0}}for(const{index:n}of t){const t=U(e,n);if("first"===t)return{node:e.firstChild??e};if("last"===t)return{node:e.lastChild??e};if("before"===t)return{node:e,before:!0};if("after"===t)return{node:e,after:!0};e=t}const{offset:i}=t[t.length-1];if(!Array.isArray(e))return{node:e,offset:i};let r=0;for(const t of e){const{length:e}=t.nodeValue;if(r+e>=i)return{node:t,offset:i-r};r+=e}},W=(e,t)=>{const{parentNode:n,id:i}=e,r=O(n),o=r.findIndex((t=>Array.isArray(t)?t.some((t=>t===e)):t===e)),s=r[o];if(Array.isArray(s)){let n=0;for(const i of s){if(i===e){n+=t;break}n+=i.nodeValue.length}t=n}const a={id:i,index:o,offset:t};return n!==e.ownerDocument.documentElement?W(n).concat(a):[a]},P=(e,t)=>N(e.documentElement,R(t)).node,K="urn:oasis:names:tc:opendocument:xmlns:container",z="http://www.w3.org/1999/xhtml",q="http://www.idpf.org/2007/opf",j="http://www.idpf.org/2007/ops",J="http://purl.org/dc/elements/1.1/",V="http://www.w3.org/2001/04/xmlenc#",X="http://www.daisy.org/z3986/2005/ncx/",Z="http://www.w3.org/1999/xlink",_="http://www.w3.org/ns/SMIL",$={XML:"application/xml",NCX:"application/x-dtbncx+xml",XHTML:"application/xhtml+xml",HTML:"text/html",CSS:"text/css",SVG:"image/svg+xml",JS:/\/(x-)?(javascript|ecmascript)/},ee=e=>e.toLowerCase().replace(/[-:](.)/g,((e,t)=>t.toUpperCase())),te=(e,t,n)=>n?n=>n.getAttribute(e)?.split(/\s/)?.includes(t):"function"==typeof t?n=>t(n.getAttribute(e)):n=>n.getAttribute(e)===t,ne=(...e)=>t=>t?Object.fromEntries(e.map((e=>[ee(e),t.getAttribute(e)]))):null,ie=e=>{return t=e?.textContent,t?t.trim().replace(/\s{2,}/g," "):"";var t},re=(e,t)=>{const n=e.lookupNamespaceURI(null)===t||e.lookupPrefix(t),i=n?(e,n)=>e=>e.namespaceURI===t&&e.localName===n:(e,t)=>e=>e.localName===t;return{$:(e,t)=>[...e.children].find(i(e,t)),$$:(e,t)=>[...e.children].filter(i(e,t)),$$$:n?(e,n)=>[...e.getElementsByTagNameNS(t,n)]:(e,n)=>[...e.getElementsByTagName(t,n)]}},oe=(e,t)=>{try{const n="whatever://whatever/";return decodeURI(new URL(e,n+t).href.replace(n,""))}catch(t){return console.warn(t),e}},se=e=>/^(?!blob)\w+:/i.test(e),ae=async(e,t,n)=>{const i=[];e.replace(t,((...e)=>(i.push(e),null)));const r=[];for(const e of i)r.push(await n(...e));return e.replace(t,(()=>r.shift()))},le=e=>e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),Ae={attrs:["dir","xml:lang"]},ce={name:"alternate-script",many:!0,...Ae,props:["file-as"]},ge={many:!0,...Ae,props:[{name:"role",many:!0,attrs:["scheme"]},"file-as",ce]},de=[{name:"title",many:!0,...Ae,props:["title-type","display-seq","file-as",ce]},{name:"identifier",many:!0,props:[{name:"identifier-type",attrs:["scheme"]}]},{name:"language",many:!0},{name:"creator",...ge},{name:"contributor",...ge},{name:"publisher",...Ae,props:["file-as",ce]},{name:"description",...Ae,props:[ce]},{name:"rights",...Ae,props:[ce]},{name:"date"},{name:"dcterms:modified",type:"meta"},{name:"subject",many:!0,...Ae,props:["term","authority",ce]},{name:"belongs-to-collection",type:"meta",many:!0,...Ae,props:["collection-type","group-position","dcterms:identifier","file-as",ce,{name:"belongs-to-collection",recursive:!0}]}],he=(e,t=e=>e)=>{const{$:n,$$:i,$$$:r}=re(e,z),o=e=>i=>{const r=n(i,"a")??n(i,"span"),o=n(i,"ol"),a=(e=>e?decodeURI(t(e)):null)(r?.getAttribute("href")),l={label:ie(r)||r?.getAttribute("title"),href:a,subitems:s(o)};return e&&(l.type=r?.getAttributeNS(j,"type")?.split(/\s/)),l},s=(e,t)=>e?i(e,"li").map(o(t)):null,a=(e,t)=>s(n(e,"ol"),t),l=r(e,"nav");let A=null,c=null,g=null,d=[];for(const e of l){const t=e.getAttributeNS(j,"type")?.split(/\s/)??[];t.includes("toc")?A??=a(e):t.includes("page-list")?c??=a(e):t.includes("landmarks")?g??=a(e,!0):d.push({label:ie(e.firstElementChild),type:t,list:a(e)})}return{toc:A,pageList:c,landmarks:g,others:d}},ue=(e,t=e=>e)=>{const{$:n,$$:i}=re(e,X),r=e=>{const o=n(e,"navLabel"),s=n(e,"content"),a=ie(o),l=(e=>e?decodeURI(t(e)):null)(s.getAttribute("src"));if("navPoint"===e.localName){const t=i(e,"navPoint");return{label:a,href:l,subitems:t.length?t.map(r):null}}return{label:a,href:l}},o=(e,t)=>i(e,t).map(r),s=(t,i)=>{const r=n(e.documentElement,t);return r?o(r,i):null};return{toc:s("navMap","navPoint"),pageList:s("pageList","pageTarget"),others:i(e.documentElement,"navList").map((e=>({label:ie(n(e,"navLabel")),list:o(e,"navTarget")})))}},fe=e=>{if(!e)return;const t=e.split(":").map((e=>parseFloat(e)));if(3===t.length){const[e,n,i]=t;return 60*e*60+60*n+i}if(2===t.length){const[e,n]=t;return 60*e+n}const[n,i]=e.split(/(?=[^\d.])/);return parseFloat(n)*("h"===i?3600:"min"===i?60:"ms"===i?.001:1)},pe=/([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})/,me=e=>ie(e.getElementById(e.documentElement.getAttribute("unique-identifier"))??e.getElementsByTagNameNS(J,"identifier")[0]),Be=async(e,t,n)=>{const i=new Uint8Array(await n.slice(0,t).arrayBuffer());t=Math.min(t,i.length);for(var r=0;r{const t=(new TextEncoder).encode(e),n=await globalThis.crypto.subtle.digest("SHA-1",t);return new Uint8Array(n)},Ce=(e=we)=>({"http://www.idpf.org/2008/embedding":{key:t=>e(me(t).replaceAll(/[\u0020\u0009\u000d\u000a]/g,"")),decode:(e,t)=>Be(e,1040,t)},"http://ns.adobe.com/pdf/enc#RC":{key:e=>{const t=(e=>{for(const t of e.getElementsByTagNameNS(J,"identifier")){const[e]=ie(t).split(":").slice(-1);if(pe.test(e))return e}return""})(e).replaceAll("-","");return Uint8Array.from({length:16},((e,n)=>parseInt(t.slice(2*n,2*n+2),16)))},decode:(e,t)=>Be(e,1024,t)}});class ye{#e=new Map;#t=new Map;#n;constructor(e){this.#n=e}async init(e,t){if(!e)return;const n=Array.from(e.getElementsByTagNameNS(V,"EncryptedData"),(e=>({algorithm:e.getElementsByTagNameNS(V,"EncryptionMethod")[0]?.getAttribute("Algorithm"),uri:e.getElementsByTagNameNS(V,"CipherReference")[0]?.getAttribute("URI")})));for(const{algorithm:e,uri:i}of n){if(!this.#t.has(e)){const n=this.#n[e];if(!n){console.warn("Unknown encryption algorithm");continue}const i=await n.key(t);this.#t.set(e,(e=>n.decode(i,e)))}this.#e.set(i,e)}}getDecoder(e){return this.#t.get(this.#e.get(e))??(e=>e)}}class Ee{constructor({opf:e,resolveHref:t}){this.opf=e;const{$:n,$$:i,$$$:r}=re(e,q),o=n(e.documentElement,"manifest"),s=n(e.documentElement,"spine"),a=i(s,"itemref");this.manifest=i(o,"item").map(ne("href","id","media-type","properties","media-overlay")).map((e=>(e.href=t(e.href),e.properties=e.properties?.split(/\s/),e))),0===this.manifest.length&&(this.manifest=Array.from(o.children).map((e=>{const n=ne("href","id","media-type","properties","media-overlay")(e);return n.href=t(n.href),n.properties=n.properties?.split(/\s/),n}))),this.spine=a.map(ne("idref","id","linear","properties")).map((e=>(e.properties=e.properties?.split(/\s/),e))),this.pageProgressionDirection=s.getAttribute("page-progression-direction"),this.navPath=this.getItemByProperty("nav")?.href,this.ncxPath=(this.getItemByID(s.getAttribute("toc"))??this.manifest.find((e=>e.mediaType===$.NCX)))?.href;const l=n(e.documentElement,"guide");l&&(this.guide=i(l,"reference").map(ne("type","title","href")).map((({type:e,title:n,href:i})=>({label:n,type:e.split(/\s/),href:t(i)})))),this.cover=this.getItemByProperty("cover-image")??this.getItemByID("cover-image")??this.getItemByID(r(e,"meta").find(te("name","cover"))?.getAttribute("content"))??this.getItemByHref(r(e,"meta").find(te("name","cover"))?.getAttribute("content"))??this.getItemByID("cover.jpg")??this.getItemByID("cover.png")??this.getItemByID("cover.jpeg")??this.getItemByHref(this.guide?.find((e=>e.type.includes("cover")&&!e.href.includes("html")&&!e.href.includes("xhtml")&&!e.href.includes("xml")))?.href)??this.getItemByID("cover"),this.cover&&this.cover.href&&(this.cover.href.includes("xml")||this.cover.href.includes("xhtml")||this.cover.href.includes("html"))&&(this.cover=this.manifest.find((e=>e.href.toLowerCase().includes("cover")&&(e.href.includes("png")||e.href.includes("jpg")||e.href.includes("jpeg"))))),this.cfis=(e=>{const t=[],{parentNode:n}=e[0],i=W(n);for(const[r,o]of O(n).entries()){const n=e[t.length];o===n&&t.push(T([i.concat({id:n.id,index:r})]))}return t})(a)}getItemByID(e){return this.manifest.find((t=>t.id===e))}getItemByHref(e){return this.manifest.find((t=>t.href===e))}getItemByProperty(e){return this.manifest.find((t=>t.properties?.includes(e)))}resolveCFI(e){const t=F(e),n=(t.parent??t).shift();let i=P(this.opf,n);i&&"idref"!==i.nodeName&&(n.at(-1).id=null,i=P(this.opf,n));const r=i?.getAttribute("idref");return{index:this.spine.findIndex((e=>e.idref===r)),anchor:e=>((e,t)=>{const n=R(t),i=R(t,!0),r=e.documentElement,o=N(r,n[0]),s=N(r,i[0]),a=e.createRange();return o.before?a.setStartBefore(o.node):o.after?a.setStartAfter(o.node):a.setStart(o.node,o.offset),s.before?a.setEndBefore(s.node):s.after?a.setEndAfter(s.node):a.setEnd(s.node,s.offset),a})(e,t)}}}class Ie{#i=new Map;#r=new Map;#o=new Map;allowScript=!1;constructor({loadText:e,loadBlob:t,resources:n}){this.loadText=e,this.loadBlob=t,this.manifest=n.manifest,this.assets=n.manifest}createURL(e,t,n,i){if(!t)return"";const r=URL.createObjectURL(new Blob([t],{type:n}));if(this.#i.set(e,r),this.#o.set(e,1),i){const t=this.#r.get(i);t?t.push(e):this.#r.set(i,[e])}return r}ref(e,t){const n=this.#r.get(t);return n?.includes(e)||(this.#o.set(e,this.#o.get(e)+1),n?n.push(e):this.#r.set(t,[e])),this.#i.get(e)}unref(e){if(!this.#o.has(e))return;const t=this.#o.get(e)-1;if(t<1){URL.revokeObjectURL(this.#i.get(e)),this.#i.delete(e),this.#o.delete(e);const t=this.#r.get(e);if(t)for(;t.length;)this.unref(t.pop());this.#r.delete(e)}else this.#o.set(e,t)}async loadItem(e,t=[]){if(!e)return null;const{href:n,mediaType:i}=e,r=$.JS.test(e.mediaType);if(r&&!this.allowScript)return null;const o=t.at(-1);if(this.#i.has(n))return this.ref(n,o);return(r||[$.XHTML,$.HTML,$.CSS,$.SVG].includes(i))&&t.every((e=>e!==n))?this.loadReplaced(e,t):this.createURL(n,await this.loadBlob(n),i,o)}async loadHref(e,t,n=[]){if(se(e))return e;const i=oe(e,t);let r=this.manifest.find((e=>e.href===i));return r||(r={href:i,mediaType:""}),this.loadItem(r,n.concat(t))}async loadReplaced(e,t=[]){const{href:n,mediaType:i}=e,r=t.at(-1),o=await this.loadText(n);if(!o)return null;if([$.XHTML,$.HTML,$.SVG].includes(i)){let s=(new DOMParser).parseFromString(o.trim(),i);if(i===$.XHTML&&s.querySelector("parsererror")&&(console.warn(s.querySelector("parsererror").innerText),e.mediaType=$.HTML,s=(new DOMParser).parseFromString(o.trim(),e.mediaType)),[$.XHTML,$.SVG].includes(e.mediaType)){let e=s.firstChild;for(;e instanceof ProcessingInstruction;){if(e.data){const i=await ae(e.data,/(?:^|\s*)(href\s*=\s*['"])([^'"]*)(['"])/i,((e,i,r,o)=>this.loadHref(r,n,t).then((e=>`${i}${e}${o}`))));e.replaceWith(s.createProcessingInstruction(e.target,i))}e=e.nextSibling}}const a=async(e,i)=>e.setAttribute(i,await this.loadHref(e.getAttribute(i),n,t));for(const e of s.querySelectorAll("link[href]"))await a(e,"href");for(const e of s.querySelectorAll("[src]"))await a(e,"src");for(const e of s.querySelectorAll("[poster]"))await a(e,"poster");for(const e of s.querySelectorAll("object[data]"))await a(e,"data");for(const e of s.querySelectorAll("[*|href]:not([href]"))e.setAttributeNS(Z,"href",await this.loadHref(e.getAttributeNS(Z,"href"),n,t));for(const e of s.querySelectorAll("style"))e.textContent&&(e.textContent=await this.replaceCSS(e.textContent,n,t));for(const e of s.querySelectorAll("[style]"))e.setAttribute("style",await this.replaceCSS(e.getAttribute("style"),n,t));const l=(new XMLSerializer).serializeToString(s);return this.createURL(n,l,e.mediaType,r)}const s=i===$.CSS?await this.replaceCSS(o,n,t):await this.replaceString(o,n,t);return this.createURL(n,s,i,r)}async replaceCSS(e,t,n=[]){const i=await ae(e,/url\(\s*["']?([^'"\n]*?)\s*["']?\s*\)/gi,((e,i)=>this.loadHref(i,t,n).then((e=>`url("${e}")`)))),r=await ae(i,/@import\s*["']([^"'\n]*?)["']/gi,((e,i)=>this.loadHref(i,t,n).then((e=>`@import "${e}"`)))),o=window?.innerWidth??800,s=window?.innerHeight??600;return r.replace(/-epub-/gi,"").replace(/(\d*\.?\d+)vw/gi,((e,t)=>parseFloat(t)*o/100+"px")).replace(/(\d*\.?\d+)vh/gi,((e,t)=>parseFloat(t)*s/100+"px")).replace(/page-break-(after|before|inside)/gi,((e,t)=>`-webkit-column-break-${t}`))}replaceString(e,t,n=[]){const i=new Map,r=this.assets.map((e=>{if(e.href===t)return;const n=((e,t)=>{if(!e)return t;const n=e.replace(/\/$/,"").split("/"),i=t.replace(/\/$/,"").split("/"),r=(n.length>i.length?n:i).findIndex(((e,t)=>n[t]!==i[t]));return r<0?"":Array(n.length-r).fill("..").concat(i.slice(r)).join("/")})((e=>e.slice(0,e.lastIndexOf("/")+1))(t),e.href),r=encodeURI(n),o="/"+e.href,s=encodeURI(o),a=new Set([n,r,o,s]);for(const t of a)i.set(t,e);return Array.from(a)})).flat().filter((e=>e));if(!r.length)return e;const o=new RegExp(r.map(le).join("|"),"g");return ae(e,o,(async e=>this.loadItem(i.get(e.replace(/^\//,"")),n.concat(t))))}unloadItem(e){this.unref(e?.href)}}const be=e=>{for(const t of e){if("page-spread-left"===t||"rendition:page-spread-left"===t)return"left";if("page-spread-right"===t||"rendition:page-spread-right"===t)return"right";if("rendition:page-spread-center"===t)return"center"}};class ve{parser=new DOMParser;#s;constructor({loadText:e,loadBlob:t,getSize:n,sha1:i}){this.loadText=e,this.loadBlob=t,this.getSize=n,this.#s=new ye(Ce(i))}#a(e){return e&&e.includes("opf:scheme")&&(e=e.replaceAll("opf:scheme","scheme")),e&&(e=e.replace(/^\uFEFF/,"").replace(//g,((e,t)=>`\x3c!--${t.replace(/--/g,"- -")}--\x3e`)).replace(/&(?!(?:amp|lt|gt|quot|apos|#\d+|#x[\da-fA-F]+);)/g,"&").replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g,"")),e?this.parser.parseFromString(e.trim(),$.XML):null}async#l(e){return this.#a(await this.loadText(e))}async init(){const e=await this.#l("META-INF/container.xml");if(!e)throw new Error("Failed to load container file");const t=Array.from(e.getElementsByTagNameNS(K,"rootfile"),ne("full-path","media-type")).filter((e=>"application/oebps-package+xml"===e.mediaType));if(!t.length)throw new Error("No package document defined in container");const n=t[0].fullPath,i=await this.#l(n);if(!i)throw new Error("Failed to load package document");if(i.querySelector("parsererror"))throw new Error("Package document is not a valid XML");const r=await this.#l("META-INF/encryption.xml");await this.#s.init(r,i),this.resources=new Ee({opf:i,resolveHref:e=>oe(e,n)});const o=new Ie({loadText:this.loadText,loadBlob:e=>Promise.resolve(this.loadBlob(e)).then(this.#s.getDecoder(e)),resources:this.resources});this.sections=this.resources.spine.map(((e,t)=>{const{idref:n,linear:i,properties:r=[]}=e,s=this.resources.getItemByID(n);return s?{id:this.resources.getItemByID(n)?.href,load:()=>o.loadItem(s),unload:()=>o.unloadItem(s),createDocument:()=>this.loadDocument(s),size:this.getSize(s.href),cfi:this.resources.cfis[t],linear:i,pageSpread:be(r),resolveHref:e=>oe(e,s.href),loadMediaOverlay:()=>this.loadMediaOverlay(s)}:(console.warn(`Could not find item with ID "${n}" in manifest`),null)}));const{navPath:s,ncxPath:a}=this.resources;if(s)try{const e=e=>oe(e,s),t=he(await this.#l(s),e);this.toc=t.toc,this.pageList=t.pageList,this.landmarks=t.landmarks}catch(e){console.warn(e)}if((!this.toc||0===this.toc.length)&&a)try{const e=e=>oe(e,a),t=ue(await this.#l(a),e);this.toc=t.toc,this.pageList=t.pageList}catch(e){console.warn(e)}this.landmarks??=this.resources.guide;const{metadata:l,rendition:A,media:c}=(e=>{const{$:t,$$:n}=re(e,q),i=t(e.documentElement,"metadata"),r=Array.from(i.children),o=(e,t)=>{if(!t)return null;const{props:n=[],attrs:i=[]}=e,s=ie(t);if(!n.length&&!i.length)return s;const a=t.getAttribute("id"),l=a?r.filter(te("refines","#"+a)):[];return Object.fromEntries([["value",s]].concat(n.map((t=>{const{many:n,recursive:i}=t,r="string"==typeof t?t:t.name,s=te("property",r),a=i?e:t;return[ee(r),n?l.filter(s).map((e=>o(a,e))):o(a,l.find(s))]}))).concat(i.map((e=>[ee(e),t.getAttribute(e)]))))},s=r.filter(te("refines",null)),a=e=>Object.fromEntries(n(i,"meta").filter(te("property",(t=>t?.startsWith(e)))).map((t=>[t.getAttribute("property").replace(e,""),ie(t)])));return{metadata:Object.fromEntries(de.map((e=>{const{type:t,name:n,many:i}=e,r="meta"===t?e=>e.namespaceURI===q&&e.getAttribute("property")===n:e=>e.namespaceURI===J&&e.localName===n;return[ee(n),i?s.filter(r).map((t=>o(e,t))):o(e,s.find(r))]}))),rendition:a("rendition:"),media:a("media:")}})(i);this.rendition=A,this.media=c,c.duration=fe(c.duration),this.dir=this.resources.pageProgressionDirection,this.rawMetadata=l;const g=l?.title?.[0];this.metadata={title:g?.value,sortAs:g?.fileAs,language:l?.language,identifier:me(i),description:l?.description?.value,publisher:l?.publisher?.value,published:l?.date,modified:l?.dctermsModified,subject:l?.subject?.filter((({value:e,code:t})=>e||t))?.map((({value:e,code:t,scheme:n})=>({name:e,code:t,scheme:n}))),rights:l?.rights?.value};const d={art:"artist",aut:"author",bkp:"producer",clr:"colorist",edt:"editor",ill:"illustrator",trl:"translator",pbl:"publisher"},h=e=>t=>{const n=[...new Set(t.role?.map((({value:t,scheme:n})=>(n&&"marc:relators"!==n?null:d[t])??e)))],i={name:t.value,sortAs:t.fileAs};return[n?.length?n:[e],i]};return l?.creator?.map(h("author"))?.concat(l?.contributor?.map?.(h("contributor")))?.forEach((([e,t])=>e.forEach((e=>{this.metadata[e]?this.metadata[e].push(t):this.metadata[e]=[t]})))),this}async loadDocument(e){const t=await this.loadText(e.href);return this.parser.parseFromString(t.trim(),e.mediaType)}async loadMediaOverlay(e){const t=e.mediaOverlay;if(!t)return null;const n=this.resources.getItemByID(t),i=((e,t=e=>e)=>{const{$:n,$$$:i}=re(e,_);return i(e,"par").map((e=>{const i=n(e,"text")?.getAttribute("src")?.split("#")?.[1],r=n(e,"audio");return r?{id:i,audio:{src:(o=r.getAttribute("src"),o?decodeURI(t(o)):null),clipBegin:fe(r.getAttribute("clipBegin")),clipEnd:fe(r.getAttribute("clipEnd"))}}:{id:i};var o}))})(await this.#l(n.href),(e=>oe(e,n.href)));return i}resolveCFI(e){return this.resources.resolveCFI(e)}resolveHref(e){const[t,n]=e.split("#"),i=this.resources.getItemByHref(decodeURI(t));if(!i)return null;return{index:this.resources.spine.findIndex((({idref:e})=>e===i.id)),anchor:n?e=>((e,t)=>e.getElementById(t)??e.querySelector(`[name="${CSS.escape(t)}"]`))(e,n):()=>0}}splitTOCHref(e){return e?.split("#")??[]}getTOCFragment(e,t){return e.getElementById(t)??e.querySelector(`[name="${CSS.escape(t)}"]`)}isExternal(e){return se(e)}async getCover(){const e=this.resources?.cover;return e?.href?new Blob([await this.loadBlob(e.href)],{type:e.mediaType}):null}async getCalibreBookmarks(){const e=await this.loadText("META-INF/calibre_bookmarks.txt"),t="encoding=json+base64:";if(e?.startsWith(t)){const t=atob(e.slice(21));return JSON.parse(t)}}}const xe={"㐷":"傌","㐹":"㑶","㐽":"偑","㑇":"㑳","㑈":"倲","㑔":"㑯","㑩":"儸","㓆":"𠗣","㓥":"劏","㓰":"劃","㔉":"劚","㖊":"噚","㖞":"喎","㘎":"㘚","㚯":"㜄","㛀":"媰","㛟":"𡞵","㛠":"𡢃","㛣":"㜏","㛤":"孋","㛿":"𡠹","㟆":"㠏","㟜":"𡾱","㟥":"嵾","㡎":"幓","㤘":"㥮","㤽":"懤","㥪":"慺","㧏":"掆","㧐":"㩳","㧑":"撝","㧟":"擓","㧰":"擽","㨫":"㩜","㭎":"棡","㭏":"椲","㭣":"𣙎","㭤":"樢","㭴":"樫","㱩":"殰","㱮":"殨","㲿":"瀇","㳔":"濧","㳕":"灡","㳠":"澾","㳡":"濄","㳢":"𣾷","㳽":"瀰","㴋":"潚","㶉":"鸂","㶶":"燶","㶽":"煱","㺍":"獱","㻅":"璯","㻏":"𤫩","㻘":"𤪺","䀥":"䁻","䁖":"瞜","䂵":"碽","䃅":"磾","䅉":"稏","䅟":"穇","䅪":"𥢢","䇲":"筴","䉤":"籔","䌶":"䊷","䌷":"紬","䌸":"縳","䌹":"絅","䌺":"䋙","䌻":"䋚","䌼":"綐","䌽":"綵","䌾":"䋻","䌿":"䋹","䍀":"繿","䍁":"繸","䍠":"䍦","䎬":"䎱","䏝":"膞","䑽":"𦪙","䓓":"薵","䓕":"薳","䓖":"藭","䓨":"罃","䗖":"螮","䘛":"𧝞","䘞":"𧜗","䙊":"𧜵","䙌":"䙡","䙓":"襬","䜣":"訢","䜤":"鿁","䜥":"𧩙","䜧":"䜀","䜩":"讌","䝙":"貙","䞌":"𧵳","䞍":"䝼","䞎":"𧶧","䞐":"賰","䟢":"躎","䢀":"𨊰","䢁":"𨊸","䢂":"𨋢","䥺":"釾","䥽":"鏺","䥾":"䥱","䥿":"𨯅","䦀":"𨦫","䦁":"𨧜","䦂":"䥇","䦃":"鐯","䦅":"鐥","䦆":"钁","䦶":"䦛","䦷":"䦟","䩄":"靦","䭪":"𩞯","䯃":"𩣑","䯄":"騧","䯅":"䯀","䲝":"䱽","䲞":"𩶘","䲟":"鮣","䲠":"鰆","䲡":"鰌","䲢":"鰧","䲣":"䱷","䴓":"鳾","䴔":"鵁","䴕":"鴷","䴖":"鶄","䴗":"鶪","䴘":"鷉","䴙":"鸊","䶮":"龑","万":"萬","与":"與","丑":"醜","专":"專","业":"業","丛":"叢","东":"東","丝":"絲","丢":"丟","两":"兩","严":"嚴","丧":"喪","个":"個","丰":"豐","临":"臨","为":"爲","丽":"麗","举":"舉","么":"麼","义":"義","乌":"烏","乐":"樂","乔":"喬","习":"習","乡":"鄉","书":"書","买":"買","乱":"亂","了":"了","争":"爭","于":"於","亏":"虧","云":"雲","亘":"亙","亚":"亞","产":"產","亩":"畝","亲":"親","亵":"褻","亸":"嚲","亿":"億","仅":"僅","仆":"僕","仇":"仇","从":"從","仑":"侖","仓":"倉","仪":"儀","们":"們","价":"價","仿":"仿","众":"衆","优":"優","伙":"夥","会":"會","伛":"傴","伞":"傘","伟":"偉","传":"傳","伡":"俥","伣":"俔","伤":"傷","伥":"倀","伦":"倫","伧":"傖","伪":"僞","伫":"佇","体":"體","余":"餘","佛":"佛","佣":"傭","佥":"僉","侠":"俠","侣":"侶","侥":"僥","侦":"偵","侧":"側","侨":"僑","侩":"儈","侪":"儕","侬":"儂","侭":"儘","俊":"俊","俣":"俁","俦":"儔","俨":"儼","俩":"倆","俪":"儷","俫":"倈","俭":"儉","修":"修","借":"借","债":"債","倾":"傾","偬":"傯","偻":"僂","偾":"僨","偿":"償","傤":"儎","傥":"儻","傧":"儐","储":"儲","傩":"儺","僵":"僵","儿":"兒","克":"克","兑":"兌","兖":"兗","党":"黨","兰":"蘭","关":"關","兴":"興","兹":"茲","养":"養","兽":"獸","冁":"囅","内":"內","冈":"岡","册":"冊","写":"寫","军":"軍","农":"農","冬":"冬","冯":"馮","冲":"衝","决":"決","况":"況","冻":"凍","净":"淨","凄":"悽","准":"準","凉":"涼","凌":"凌","减":"減","凑":"湊","凛":"凜","几":"幾","凤":"鳳","凫":"鳧","凭":"憑","凯":"凱","凶":"兇","出":"出","击":"擊","凿":"鑿","刍":"芻","划":"劃","刘":"劉","则":"則","刚":"剛","创":"創","删":"刪","别":"別","刬":"剗","刭":"剄","刮":"刮","制":"制","刹":"剎","刽":"劊","刾":"㓨","刿":"劌","剀":"剴","剂":"劑","剐":"剮","剑":"劍","剥":"剝","剧":"劇","劝":"勸","办":"辦","务":"務","劢":"勱","动":"動","励":"勵","劲":"勁","劳":"勞","势":"勢","勋":"勳","勚":"勩","匀":"勻","匦":"匭","匮":"匱","区":"區","医":"醫","千":"千","升":"升","华":"華","协":"協","单":"單","卖":"賣","卜":"卜","占":"佔","卢":"盧","卤":"滷","卧":"臥","卫":"衛","却":"卻","卷":"卷","卺":"巹","厂":"廠","厅":"廳","历":"歷","厉":"厲","压":"壓","厌":"厭","厍":"厙","厐":"龎","厕":"廁","厘":"釐","厢":"廂","厣":"厴","厦":"廈","厨":"廚","厩":"廄","厮":"廝","县":"縣","叁":"叄","参":"參","叆":"靉","叇":"靆","双":"雙","发":"發","变":"變","叙":"敘","叠":"疊","只":"只","台":"臺","叶":"葉","号":"號","叹":"嘆","叽":"嘰","吁":"籲","吃":"喫","合":"合","吊":"吊","同":"同","后":"後","向":"向","吓":"嚇","吕":"呂","吗":"嗎","吨":"噸","听":"聽","启":"啓","吴":"吳","呐":"吶","呒":"嘸","呓":"囈","呕":"嘔","呖":"嚦","呗":"唄","员":"員","呙":"咼","呛":"嗆","呜":"嗚","周":"周","咏":"詠","咙":"嚨","咛":"嚀","咝":"噝","咤":"吒","咨":"諮","咸":"鹹","咽":"咽","哄":"哄","响":"響","哑":"啞","哒":"噠","哓":"嘵","哔":"嗶","哕":"噦","哗":"譁","哙":"噲","哜":"嚌","哝":"噥","哟":"喲","唇":"脣","唛":"嘜","唝":"嗊","唠":"嘮","唡":"啢","唢":"嗩","唤":"喚","啧":"嘖","啬":"嗇","啭":"囀","啮":"齧","啯":"嘓","啰":"囉","啴":"嘽","啸":"嘯","喂":"喂","喷":"噴","喽":"嘍","喾":"嚳","嗫":"囁","嗳":"噯","嘘":"噓","嘤":"嚶","嘱":"囑","噜":"嚕","噪":"噪","嚣":"囂","回":"回","团":"團","园":"園","困":"困","囱":"囪","围":"圍","囵":"圇","国":"國","图":"圖","圆":"圓","圣":"聖","圹":"壙","场":"場","坏":"壞","块":"塊","坚":"堅","坛":"壇","坜":"壢","坝":"壩","坞":"塢","坟":"墳","坠":"墜","垄":"壟","垅":"壠","垆":"壚","垒":"壘","垦":"墾","垩":"堊","垫":"墊","垭":"埡","垯":"墶","垱":"壋","垲":"塏","垴":"堖","埘":"塒","埙":"壎","埚":"堝","堑":"塹","堕":"墮","塆":"壪","墙":"牆","壮":"壯","声":"聲","壳":"殼","壶":"壺","壸":"壼","处":"處","备":"備","复":"復","够":"夠","夫":"夫","头":"頭","夸":"誇","夹":"夾","夺":"奪","奁":"奩","奂":"奐","奋":"奮","奖":"獎","奥":"奧","奸":"奸","妆":"妝","妇":"婦","妈":"媽","妩":"嫵","妪":"嫗","妫":"嬀","姗":"姍","姜":"姜","姹":"奼","娄":"婁","娅":"婭","娆":"嬈","娇":"嬌","娈":"孌","娘":"娘","娱":"娛","娲":"媧","娴":"嫺","婳":"嫿","婴":"嬰","婵":"嬋","婶":"嬸","媪":"媼","媭":"嬃","嫒":"嬡","嫔":"嬪","嫱":"嬙","嬷":"嬤","孙":"孫","学":"學","孪":"孿","宁":"寧","它":"它","宝":"寶","实":"實","宠":"寵","审":"審","宪":"憲","宫":"宮","家":"家","宽":"寬","宾":"賓","寝":"寢","对":"對","寻":"尋","导":"導","寿":"壽","将":"將","尔":"爾","尘":"塵","尝":"嘗","尧":"堯","尴":"尷","尸":"屍","尽":"盡","局":"局","层":"層","屃":"屓","屉":"屜","届":"屆","属":"屬","屡":"屢","屦":"屨","屿":"嶼","岁":"歲","岂":"豈","岖":"嶇","岗":"崗","岘":"峴","岚":"嵐","岛":"島","岩":"巖","岭":"嶺","岳":"嶽","岽":"崬","岿":"巋","峃":"嶨","峄":"嶧","峡":"峽","峣":"嶢","峤":"嶠","峥":"崢","峦":"巒","峰":"峯","崂":"嶗","崃":"崍","崄":"嶮","崭":"嶄","嵘":"嶸","嵚":"嶔","嵝":"嶁","巅":"巔","巨":"巨","巩":"鞏","巯":"巰","币":"幣","布":"布","帅":"帥","师":"師","帏":"幃","帐":"帳","帘":"簾","帜":"幟","带":"帶","帧":"幀","席":"席","帮":"幫","帱":"幬","帻":"幘","帼":"幗","幂":"冪","干":"幹","并":"並","幸":"幸","广":"廣","庄":"莊","庆":"慶","床":"牀","庐":"廬","庑":"廡","库":"庫","应":"應","庙":"廟","庞":"龐","废":"廢","庵":"庵","庼":"廎","廪":"廩","开":"開","异":"異","弃":"棄","弑":"弒","张":"張","弥":"彌","弦":"弦","弪":"弳","弯":"彎","弹":"彈","强":"強","归":"歸","当":"當","录":"錄","彟":"彠","彦":"彥","彨":"彲","彩":"彩","彻":"徹","征":"徵","径":"徑","徕":"徠","御":"御","忆":"憶","忏":"懺","志":"志","忧":"憂","念":"念","忾":"愾","怀":"懷","态":"態","怂":"慫","怃":"憮","怄":"慪","怅":"悵","怆":"愴","怜":"憐","总":"總","怼":"懟","怿":"懌","恋":"戀","恒":"恆","恤":"恤","恳":"懇","恶":"惡","恸":"慟","恹":"懨","恺":"愷","恻":"惻","恼":"惱","恽":"惲","悦":"悅","悫":"愨","悬":"懸","悭":"慳","悮":"悞","悯":"憫","惊":"驚","惧":"懼","惨":"慘","惩":"懲","惫":"憊","惬":"愜","惭":"慚","惮":"憚","惯":"慣","愈":"愈","愠":"慍","愤":"憤","愦":"憒","愿":"願","慑":"懾","慭":"憖","懑":"懣","懒":"懶","懔":"懍","戆":"戇","戋":"戔","戏":"戲","戗":"戧","战":"戰","戚":"戚","戬":"戩","戯":"戱","户":"戶","才":"才","扎":"扎","扑":"撲","托":"託","扣":"扣","执":"執","扩":"擴","扪":"捫","扫":"掃","扬":"揚","扰":"擾","折":"折","抚":"撫","抛":"拋","抟":"摶","抠":"摳","抡":"掄","抢":"搶","护":"護","报":"報","抵":"抵","担":"擔","拐":"拐","拟":"擬","拢":"攏","拣":"揀","拥":"擁","拦":"攔","拧":"擰","拨":"撥","择":"擇","挂":"掛","挚":"摯","挛":"攣","挜":"掗","挝":"撾","挞":"撻","挟":"挾","挠":"撓","挡":"擋","挢":"撟","挣":"掙","挤":"擠","挥":"揮","挦":"撏","挨":"挨","挽":"挽","捝":"挩","捞":"撈","损":"損","捡":"撿","换":"換","捣":"搗","据":"據","掳":"擄","掴":"摑","掷":"擲","掸":"撣","掺":"摻","掼":"摜","揽":"攬","揾":"搵","揿":"撳","搀":"攙","搁":"擱","搂":"摟","搄":"揯","搅":"攪","搜":"搜","携":"攜","摄":"攝","摅":"攄","摆":"擺","摇":"搖","摈":"擯","摊":"攤","撄":"攖","撑":"撐","撵":"攆","撷":"擷","撸":"擼","撺":"攛","擜":"㩵","擞":"擻","攒":"攢","敌":"敵","敚":"敓","敛":"斂","敩":"斆","数":"數","斋":"齋","斓":"斕","斗":"鬥","斩":"斬","断":"斷","旋":"旋","无":"無","旧":"舊","时":"時","旷":"曠","旸":"暘","昆":"昆","昙":"曇","昵":"暱","昼":"晝","昽":"曨","显":"顯","晋":"晉","晒":"曬","晓":"曉","晔":"曄","晕":"暈","晖":"暉","暂":"暫","暅":"𣈶","暗":"暗","暧":"曖","曲":"曲","术":"術","朱":"朱","朴":"樸","机":"機","杀":"殺","杂":"雜","权":"權","杆":"杆","杠":"槓","条":"條","来":"來","杨":"楊","杩":"榪","杯":"杯","杰":"傑","松":"松","板":"板","极":"極","构":"構","枞":"樅","枢":"樞","枣":"棗","枥":"櫪","枧":"梘","枨":"棖","枪":"槍","枫":"楓","枭":"梟","柜":"櫃","柠":"檸","柽":"檉","栀":"梔","栅":"柵","标":"標","栈":"棧","栉":"櫛","栊":"櫳","栋":"棟","栌":"櫨","栎":"櫟","栏":"欄","树":"樹","栖":"棲","栗":"栗","样":"樣","核":"核","栾":"欒","桠":"椏","桡":"橈","桢":"楨","档":"檔","桤":"榿","桥":"橋","桦":"樺","桧":"檜","桨":"槳","桩":"樁","桪":"樳","梁":"梁","梦":"夢","梼":"檮","梾":"棶","梿":"槤","检":"檢","棁":"梲","棂":"欞","椁":"槨","椝":"槼","椟":"櫝","椠":"槧","椢":"槶","椤":"欏","椫":"樿","椭":"橢","椮":"槮","楼":"樓","榄":"欖","榅":"榲","榇":"櫬","榈":"櫚","榉":"櫸","榝":"樧","槚":"檟","槛":"檻","槟":"檳","槠":"櫧","横":"橫","樯":"檣","樱":"櫻","橥":"櫫","橱":"櫥","橹":"櫓","橼":"櫞","檩":"檁","欢":"歡","欤":"歟","欧":"歐","欲":"欲","歼":"殲","殁":"歿","殇":"殤","残":"殘","殒":"殞","殓":"殮","殚":"殫","殡":"殯","殴":"毆","毁":"毀","毂":"轂","毕":"畢","毙":"斃","毡":"氈","毵":"毿","毶":"𣯶","氇":"氌","气":"氣","氢":"氫","氩":"氬","氲":"氳","汇":"匯","汉":"漢","汤":"湯","汹":"洶","沄":"澐","沈":"沈","沟":"溝","没":"沒","沣":"灃","沤":"漚","沥":"瀝","沦":"淪","沧":"滄","沨":"渢","沩":"潙","沪":"滬","沾":"沾","泛":"泛","泞":"濘","注":"注","泪":"淚","泶":"澩","泷":"瀧","泸":"瀘","泺":"濼","泻":"瀉","泼":"潑","泽":"澤","泾":"涇","洁":"潔","洒":"灑","洼":"窪","浃":"浹","浅":"淺","浆":"漿","浇":"澆","浈":"湞","浉":"溮","浊":"濁","测":"測","浍":"澮","济":"濟","浏":"瀏","浐":"滻","浑":"渾","浒":"滸","浓":"濃","浔":"潯","浕":"濜","涂":"塗","涌":"湧","涚":"涗","涛":"濤","涝":"澇","涞":"淶","涟":"漣","涠":"潿","涡":"渦","涢":"溳","涣":"渙","涤":"滌","润":"潤","涧":"澗","涨":"漲","涩":"澀","淀":"澱","渊":"淵","渌":"淥","渍":"漬","渎":"瀆","渐":"漸","渑":"澠","渔":"漁","渖":"瀋","渗":"滲","温":"溫","游":"遊","湾":"灣","湿":"溼","溁":"濚","溃":"潰","溅":"濺","溆":"漵","溇":"漊","滗":"潷","滚":"滾","滞":"滯","滟":"灩","滠":"灄","满":"滿","滢":"瀅","滤":"濾","滥":"濫","滦":"灤","滨":"濱","滩":"灘","滪":"澦","漓":"漓","潆":"瀠","潇":"瀟","潋":"瀲","潍":"濰","潜":"潛","潴":"瀦","澛":"瀂","澜":"瀾","濑":"瀨","濒":"瀕","灏":"灝","灭":"滅","灯":"燈","灵":"靈","灶":"竈","灾":"災","灿":"燦","炀":"煬","炉":"爐","炖":"燉","炜":"煒","炝":"熗","点":"點","炼":"煉","炽":"熾","烁":"爍","烂":"爛","烃":"烴","烛":"燭","烟":"煙","烦":"煩","烧":"燒","烨":"燁","烩":"燴","烫":"燙","烬":"燼","热":"熱","焕":"煥","焖":"燜","焘":"燾","煴":"熅","熏":"燻","爱":"愛","爷":"爺","牍":"牘","牦":"犛","牵":"牽","牺":"犧","犊":"犢","状":"狀","犷":"獷","犸":"獁","犹":"猶","狈":"狽","狝":"獮","狞":"獰","独":"獨","狭":"狹","狮":"獅","狯":"獪","狰":"猙","狱":"獄","狲":"猻","猃":"獫","猎":"獵","猕":"獼","猡":"玀","猪":"豬","猫":"貓","猬":"蝟","献":"獻","獭":"獺","玑":"璣","玙":"璵","玚":"瑒","玛":"瑪","玩":"玩","玮":"瑋","环":"環","现":"現","玱":"瑲","玺":"璽","珐":"琺","珑":"瓏","珰":"璫","珲":"琿","琎":"璡","琏":"璉","琐":"瑣","琼":"瓊","瑶":"瑤","瑷":"璦","瑸":"璸","璇":"璇","璎":"瓔","瓒":"瓚","瓮":"甕","瓯":"甌","电":"電","画":"畫","畅":"暢","畴":"疇","疖":"癤","疗":"療","疟":"瘧","疠":"癘","疡":"瘍","疬":"癧","疭":"瘲","疮":"瘡","疯":"瘋","疱":"皰","疴":"痾","症":"症","痈":"癰","痉":"痙","痒":"癢","痖":"瘂","痨":"癆","痪":"瘓","痫":"癇","痴":"癡","瘅":"癉","瘆":"瘮","瘗":"瘞","瘘":"瘻","瘪":"癟","瘫":"癱","瘾":"癮","瘿":"癭","癞":"癩","癣":"癬","癫":"癲","皂":"皁","皑":"皚","皱":"皺","皲":"皸","盏":"盞","盐":"鹽","监":"監","盖":"蓋","盗":"盜","盘":"盤","眍":"瞘","眦":"眥","眬":"矓","睁":"睜","睐":"睞","睑":"瞼","瞆":"瞶","瞒":"瞞","瞩":"矚","矩":"矩","矫":"矯","矶":"磯","矾":"礬","矿":"礦","砀":"碭","码":"碼","砖":"磚","砗":"硨","砚":"硯","砜":"碸","砺":"礪","砻":"礱","砾":"礫","础":"礎","硁":"硜","硕":"碩","硖":"硤","硗":"磽","硙":"磑","硚":"礄","确":"確","硵":"磠","硷":"礆","碍":"礙","碛":"磧","碜":"磣","碱":"鹼","礼":"禮","祃":"禡","祎":"禕","祢":"禰","祯":"禎","祷":"禱","祸":"禍","禀":"稟","禄":"祿","禅":"禪","离":"離","私":"私","秃":"禿","秆":"稈","秋":"秋","种":"種","秘":"祕","积":"積","称":"稱","秽":"穢","秾":"穠","稆":"穭","税":"稅","稣":"穌","稳":"穩","穑":"穡","穞":"穭","穷":"窮","窃":"竊","窍":"竅","窎":"窵","窑":"窯","窜":"竄","窝":"窩","窥":"窺","窦":"竇","窭":"窶","竖":"豎","竞":"競","笃":"篤","笋":"筍","笔":"筆","笕":"筧","笺":"箋","笼":"籠","笾":"籩","筑":"築","筚":"篳","筛":"篩","筜":"簹","筝":"箏","筹":"籌","筼":"篔","签":"籤","筿":"篠","简":"簡","箓":"籙","箦":"簀","箧":"篋","箨":"籜","箩":"籮","箪":"簞","箫":"簫","篑":"簣","篓":"簍","篮":"籃","篯":"籛","篱":"籬","簖":"籪","籁":"籟","籴":"糴","类":"類","籼":"秈","粜":"糶","粝":"糲","粤":"粵","粪":"糞","粮":"糧","粽":"糉","糁":"糝","糇":"餱","糍":"餈","系":"系","紧":"緊","絷":"縶","緼":"縕","縆":"緪","纟":"糹","纠":"糾","纡":"紆","红":"紅","纣":"紂","纤":"纖","纥":"紇","约":"約","级":"級","纨":"紈","纩":"纊","纪":"紀","纫":"紉","纬":"緯","纭":"紜","纮":"紘","纯":"純","纰":"紕","纱":"紗","纲":"綱","纳":"納","纴":"紝","纵":"縱","纶":"綸","纷":"紛","纸":"紙","纹":"紋","纺":"紡","纻":"紵","纼":"紖","纽":"紐","纾":"紓","线":"線","绀":"紺","绁":"紲","绂":"紱","练":"練","组":"組","绅":"紳","细":"細","织":"織","终":"終","绉":"縐","绊":"絆","绋":"紼","绌":"絀","绍":"紹","绎":"繹","经":"經","绐":"紿","绑":"綁","绒":"絨","结":"結","绔":"絝","绕":"繞","绖":"絰","绗":"絎","绘":"繪","给":"給","绚":"絢","绛":"絳","络":"絡","绝":"絕","绞":"絞","统":"統","绠":"綆","绡":"綃","绢":"絹","绣":"繡","绤":"綌","绥":"綏","绦":"絛","继":"繼","绨":"綈","绩":"績","绪":"緒","绫":"綾","绬":"緓","续":"續","绮":"綺","绯":"緋","绰":"綽","绱":"鞝","绲":"緄","绳":"繩","维":"維","绵":"綿","绶":"綬","绷":"繃","绸":"綢","绹":"綯","绺":"綹","绻":"綣","综":"綜","绽":"綻","绾":"綰","绿":"綠","缀":"綴","缁":"緇","缂":"緙","缃":"緗","缄":"緘","缅":"緬","缆":"纜","缇":"緹","缈":"緲","缉":"緝","缊":"縕","缋":"繢","缌":"緦","缍":"綞","缎":"緞","缏":"緶","缐":"線","缑":"緱","缒":"縋","缓":"緩","缔":"締","缕":"縷","编":"編","缗":"緡","缘":"緣","缙":"縉","缚":"縛","缛":"縟","缜":"縝","缝":"縫","缞":"縗","缟":"縞","缠":"纏","缡":"縭","缢":"縊","缣":"縑","缤":"繽","缥":"縹","缦":"縵","缧":"縲","缨":"纓","缩":"縮","缪":"繆","缫":"繅","缬":"纈","缭":"繚","缮":"繕","缯":"繒","缰":"繮","缱":"繾","缲":"繰","缳":"繯","缴":"繳","缵":"纘","罂":"罌","网":"網","罗":"羅","罚":"罰","罢":"罷","罴":"羆","羁":"羈","羟":"羥","羡":"羨","群":"羣","翘":"翹","翙":"翽","翚":"翬","耢":"耮","耧":"耬","耸":"聳","耻":"恥","聂":"聶","聋":"聾","职":"職","聍":"聹","联":"聯","聩":"聵","聪":"聰","肃":"肅","肠":"腸","肤":"膚","肮":"骯","肴":"餚","肾":"腎","肿":"腫","胀":"脹","胁":"脅","胄":"胄","胆":"膽","背":"背","胜":"勝","胡":"胡","胧":"朧","胨":"腖","胪":"臚","胫":"脛","胶":"膠","脉":"脈","脍":"膾","脏":"髒","脐":"臍","脑":"腦","脓":"膿","脔":"臠","脚":"腳","脱":"脫","脶":"腡","脸":"臉","腊":"臘","腌":"醃","腘":"膕","腭":"齶","腻":"膩","腼":"靦","腽":"膃","腾":"騰","膑":"臏","膻":"羶","臜":"臢","致":"致","舆":"輿","舍":"舍","舣":"艤","舰":"艦","舱":"艙","舻":"艫","艰":"艱","艳":"豔","艺":"藝","节":"節","芈":"羋","芗":"薌","芜":"蕪","芦":"蘆","芸":"芸","苁":"蓯","苇":"葦","苈":"藶","苋":"莧","苌":"萇","苍":"蒼","苎":"苧","苏":"蘇","苔":"苔","苧":"薴","苹":"蘋","范":"範","茎":"莖","茏":"蘢","茑":"蔦","茔":"塋","茕":"煢","茧":"繭","荆":"荊","荐":"薦","荙":"薘","荚":"莢","荛":"蕘","荜":"蓽","荝":"萴","荞":"蕎","荟":"薈","荠":"薺","荡":"蕩","荣":"榮","荤":"葷","荥":"滎","荦":"犖","荧":"熒","荨":"蕁","荩":"藎","荪":"蓀","荫":"蔭","荬":"蕒","荭":"葒","荮":"葤","药":"藥","莅":"蒞","莱":"萊","莲":"蓮","莳":"蒔","莴":"萵","莶":"薟","获":"獲","莸":"蕕","莹":"瑩","莺":"鶯","莼":"蓴","萚":"蘀","萝":"蘿","萤":"螢","营":"營","萦":"縈","萧":"蕭","萨":"薩","葱":"蔥","蒀":"蒕","蒇":"蕆","蒉":"蕢","蒋":"蔣","蒌":"蔞","蒏":"醟","蒙":"蒙","蓝":"藍","蓟":"薊","蓠":"蘺","蓣":"蕷","蓥":"鎣","蓦":"驀","蔂":"虆","蔑":"蔑","蔷":"薔","蔹":"蘞","蔺":"藺","蔼":"藹","蕰":"薀","蕲":"蘄","蕴":"蘊","薮":"藪","藓":"蘚","藴":"蘊","蘖":"櫱","虏":"虜","虑":"慮","虚":"虛","虫":"蟲","虬":"虯","虮":"蟣","虱":"蝨","虽":"雖","虾":"蝦","虿":"蠆","蚀":"蝕","蚁":"蟻","蚂":"螞","蚃":"蠁","蚕":"蠶","蚝":"蠔","蚬":"蜆","蛊":"蠱","蛎":"蠣","蛏":"蟶","蛮":"蠻","蛰":"蟄","蛱":"蛺","蛲":"蟯","蛳":"螄","蛴":"蠐","蜕":"蛻","蜗":"蝸","蜡":"蠟","蝇":"蠅","蝈":"蟈","蝉":"蟬","蝎":"蠍","蝼":"螻","蝾":"蠑","螀":"螿","螨":"蟎","蟏":"蠨","衅":"釁","衔":"銜","补":"補","表":"表","衬":"襯","衮":"袞","袄":"襖","袅":"嫋","袆":"褘","袜":"襪","袭":"襲","袯":"襏","装":"裝","裆":"襠","裈":"褌","裢":"褳","裣":"襝","裤":"褲","裥":"襉","褛":"褸","褴":"襤","襕":"襴","见":"見","观":"觀","觃":"覎","规":"規","觅":"覓","视":"視","觇":"覘","览":"覽","觉":"覺","觊":"覬","觋":"覡","觌":"觿","觍":"覥","觎":"覦","觏":"覯","觐":"覲","觑":"覷","觞":"觴","触":"觸","觯":"觶","訚":"誾","詟":"讋","誉":"譽","誊":"謄","讠":"訁","计":"計","订":"訂","讣":"訃","认":"認","讥":"譏","讦":"訐","讧":"訌","讨":"討","让":"讓","讪":"訕","讫":"訖","讬":"託","训":"訓","议":"議","讯":"訊","记":"記","讱":"訒","讲":"講","讳":"諱","讴":"謳","讵":"詎","讶":"訝","讷":"訥","许":"許","讹":"訛","论":"論","讻":"訩","讼":"訟","讽":"諷","设":"設","访":"訪","诀":"訣","证":"證","诂":"詁","诃":"訶","评":"評","诅":"詛","识":"識","诇":"詗","诈":"詐","诉":"訴","诊":"診","诋":"詆","诌":"謅","词":"詞","诎":"詘","诏":"詔","诐":"詖","译":"譯","诒":"詒","诓":"誆","诔":"誄","试":"試","诖":"詿","诗":"詩","诘":"詰","诙":"詼","诚":"誠","诛":"誅","诜":"詵","话":"話","诞":"誕","诟":"詬","诠":"詮","诡":"詭","询":"詢","诣":"詣","诤":"諍","该":"該","详":"詳","诧":"詫","诨":"諢","诩":"詡","诪":"譸","诫":"誡","诬":"誣","语":"語","诮":"誚","误":"誤","诰":"誥","诱":"誘","诲":"誨","诳":"誑","说":"說","诵":"誦","诶":"誒","请":"請","诸":"諸","诹":"諏","诺":"諾","读":"讀","诼":"諑","诽":"誹","课":"課","诿":"諉","谀":"諛","谁":"誰","谂":"諗","调":"調","谄":"諂","谅":"諒","谆":"諄","谇":"誶","谈":"談","谉":"讅","谊":"誼","谋":"謀","谌":"諶","谍":"諜","谎":"謊","谏":"諫","谐":"諧","谑":"謔","谒":"謁","谓":"謂","谔":"諤","谕":"諭","谖":"諼","谗":"讒","谘":"諮","谙":"諳","谚":"諺","谛":"諦","谜":"謎","谝":"諞","谞":"諝","谟":"謨","谠":"讜","谡":"謖","谢":"謝","谣":"謠","谤":"謗","谥":"諡","谦":"謙","谧":"謐","谨":"謹","谩":"謾","谪":"謫","谫":"譾","谬":"謬","谭":"譚","谮":"譖","谯":"譙","谰":"讕","谱":"譜","谲":"譎","谳":"讞","谴":"譴","谵":"譫","谶":"讖","谷":"谷","豮":"豶","贝":"貝","贞":"貞","负":"負","贠":"貟","贡":"貢","财":"財","责":"責","贤":"賢","败":"敗","账":"賬","货":"貨","质":"質","贩":"販","贪":"貪","贫":"貧","贬":"貶","购":"購","贮":"貯","贯":"貫","贰":"貳","贱":"賤","贲":"賁","贳":"貰","贴":"貼","贵":"貴","贶":"貺","贷":"貸","贸":"貿","费":"費","贺":"賀","贻":"貽","贼":"賊","贽":"贄","贾":"賈","贿":"賄","赀":"貲","赁":"賃","赂":"賂","赃":"贓","资":"資","赅":"賅","赆":"贐","赇":"賕","赈":"賑","赉":"賚","赊":"賒","赋":"賦","赌":"賭","赍":"齎","赎":"贖","赏":"賞","赐":"賜","赑":"贔","赒":"賙","赓":"賡","赔":"賠","赕":"賧","赖":"賴","赗":"賵","赘":"贅","赙":"賻","赚":"賺","赛":"賽","赜":"賾","赝":"贗","赞":"贊","赟":"贇","赠":"贈","赡":"贍","赢":"贏","赣":"贛","赪":"赬","赵":"趙","赶":"趕","趋":"趨","趱":"趲","趸":"躉","跃":"躍","跄":"蹌","跖":"蹠","跞":"躒","践":"踐","跶":"躂","跷":"蹺","跸":"蹕","跹":"躚","跻":"躋","踌":"躊","踪":"蹤","踬":"躓","踯":"躑","蹑":"躡","蹒":"蹣","蹰":"躕","蹿":"躥","躏":"躪","躜":"躦","躯":"軀","輼":"轀","车":"車","轧":"軋","轨":"軌","轩":"軒","轪":"軑","轫":"軔","转":"轉","轭":"軛","轮":"輪","软":"軟","轰":"轟","轱":"軲","轲":"軻","轳":"轤","轴":"軸","轵":"軹","轶":"軼","轷":"軤","轸":"軫","轹":"轢","轺":"軺","轻":"輕","轼":"軾","载":"載","轾":"輊","轿":"轎","辀":"輈","辁":"輇","辂":"輅","较":"較","辄":"輒","辅":"輔","辆":"輛","辇":"輦","辈":"輩","辉":"輝","辊":"輥","辋":"輞","辌":"輬","辍":"輟","辎":"輜","辏":"輳","辐":"輻","辑":"輯","辒":"轀","输":"輸","辔":"轡","辕":"轅","辖":"轄","辗":"輾","辘":"轆","辙":"轍","辚":"轔","辞":"辭","辟":"闢","辩":"辯","辫":"辮","边":"邊","辽":"遼","达":"達","迁":"遷","过":"過","迈":"邁","运":"運","还":"還","这":"這","进":"進","远":"遠","违":"違","连":"連","迟":"遲","迩":"邇","迳":"逕","迹":"跡","适":"適","选":"選","逊":"遜","递":"遞","逦":"邐","逻":"邏","遗":"遺","遥":"遙","邓":"鄧","邝":"鄺","邬":"鄔","邮":"郵","邹":"鄒","邺":"鄴","邻":"鄰","郁":"鬱","郏":"郟","郐":"鄶","郑":"鄭","郓":"鄆","郦":"酈","郧":"鄖","郸":"鄲","酂":"酇","酝":"醞","酦":"醱","酱":"醬","酸":"酸","酽":"釅","酾":"釃","酿":"釀","醖":"醞","采":"採","释":"釋","里":"裏","鉴":"鑑","銮":"鑾","錾":"鏨","钅":"釒","钆":"釓","钇":"釔","针":"針","钉":"釘","钊":"釗","钋":"釙","钌":"釕","钍":"釷","钎":"釺","钏":"釧","钐":"釤","钑":"鈒","钒":"釩","钓":"釣","钔":"鍆","钕":"釹","钖":"鍚","钗":"釵","钘":"鈃","钙":"鈣","钚":"鈈","钛":"鈦","钜":"鉅","钝":"鈍","钞":"鈔","钟":"鍾","钠":"鈉","钡":"鋇","钢":"鋼","钣":"鈑","钤":"鈐","钥":"鑰","钦":"欽","钧":"鈞","钨":"鎢","钩":"鉤","钪":"鈧","钫":"鈁","钬":"鈥","钭":"鈄","钮":"鈕","钯":"鈀","钰":"鈺","钱":"錢","钲":"鉦","钳":"鉗","钴":"鈷","钵":"鉢","钶":"鈳","钷":"鉕","钸":"鈽","钹":"鈸","钺":"鉞","钻":"鑽","钼":"鉬","钽":"鉭","钾":"鉀","钿":"鈿","铀":"鈾","铁":"鐵","铂":"鉑","铃":"鈴","铄":"鑠","铅":"鉛","铆":"鉚","铇":"鉋","铈":"鈰","铉":"鉉","铊":"鉈","铋":"鉍","铌":"鈮","铍":"鈹","铎":"鐸","铏":"鉶","铐":"銬","铑":"銠","铒":"鉺","铓":"鋩","铔":"錏","铕":"銪","铖":"鋮","铗":"鋏","铘":"鋣","铙":"鐃","铚":"銍","铛":"鐺","铜":"銅","铝":"鋁","铞":"銱","铟":"銦","铠":"鎧","铡":"鍘","铢":"銖","铣":"銑","铤":"鋌","铥":"銩","铦":"銛","铧":"鏵","铨":"銓","铩":"鎩","铪":"鉿","铫":"銚","铬":"鉻","铭":"銘","铮":"錚","铯":"銫","铰":"鉸","铱":"銥","铲":"鏟","铳":"銃","铴":"鐋","铵":"銨","银":"銀","铷":"銣","铸":"鑄","铹":"鐒","铺":"鋪","铻":"鋙","铼":"錸","铽":"鋱","链":"鏈","铿":"鏗","销":"銷","锁":"鎖","锂":"鋰","锃":"鋥","锄":"鋤","锅":"鍋","锆":"鋯","锇":"鋨","锈":"鏽","锉":"銼","锊":"鋝","锋":"鋒","锌":"鋅","锍":"鋶","锎":"鐦","锏":"鐧","锐":"銳","锑":"銻","锒":"鋃","锓":"鋟","锔":"鋦","锕":"錒","锖":"錆","锗":"鍺","锘":"鍩","错":"錯","锚":"錨","锛":"錛","锜":"錡","锝":"鍀","锞":"錁","锟":"錕","锠":"錩","锡":"錫","锢":"錮","锣":"鑼","锤":"錘","锥":"錐","锦":"錦","锧":"鑕","锨":"鍁","锩":"錈","锪":"鍃","锫":"錇","锬":"錟","锭":"錠","键":"鍵","锯":"鋸","锰":"錳","锱":"錙","锲":"鍥","锳":"鍈","锴":"鍇","锵":"鏘","锶":"鍶","锷":"鍔","锸":"鍤","锹":"鍬","锺":"鍾","锻":"鍛","锼":"鎪","锽":"鍠","锾":"鍰","锿":"鎄","镀":"鍍","镁":"鎂","镂":"鏤","镃":"鎡","镄":"鐨","镅":"鎇","镆":"鏌","镇":"鎮","镈":"鎛","镉":"鎘","镊":"鑷","镋":"钂","镌":"鐫","镍":"鎳","镎":"鎿","镏":"鎦","镐":"鎬","镑":"鎊","镒":"鎰","镓":"鎵","镔":"鑌","镕":"鎔","镖":"鏢","镗":"鏜","镘":"鏝","镙":"鏍","镚":"鏰","镛":"鏞","镜":"鏡","镝":"鏑","镞":"鏃","镟":"鏇","镠":"鏐","镡":"鐔","镢":"钁","镣":"鐐","镤":"鏷","镥":"鑥","镦":"鐓","镧":"鑭","镨":"鐠","镩":"鑹","镪":"鏹","镫":"鐙","镬":"鑊","镭":"鐳","镮":"鐶","镯":"鐲","镰":"鐮","镱":"鐿","镲":"鑔","镳":"鑣","镴":"鑞","镵":"鑱","镶":"鑲","长":"長","门":"門","闩":"閂","闪":"閃","闫":"閆","闬":"閈","闭":"閉","问":"問","闯":"闖","闰":"閏","闱":"闈","闲":"閒","闳":"閎","间":"間","闵":"閔","闶":"閌","闷":"悶","闸":"閘","闹":"鬧","闺":"閨","闻":"聞","闼":"闥","闽":"閩","闾":"閭","闿":"闓","阀":"閥","阁":"閣","阂":"閡","阃":"閫","阄":"鬮","阅":"閱","阆":"閬","阇":"闍","阈":"閾","阉":"閹","阊":"閶","阋":"鬩","阌":"閿","阍":"閽","阎":"閻","阏":"閼","阐":"闡","阑":"闌","阒":"闃","阓":"闠","阔":"闊","阕":"闋","阖":"闔","阗":"闐","阘":"闒","阙":"闕","阚":"闞","阛":"闤","队":"隊","阳":"陽","阴":"陰","阵":"陣","阶":"階","际":"際","陆":"陸","陇":"隴","陈":"陳","陉":"陘","陕":"陝","陦":"隯","陧":"隉","陨":"隕","险":"險","随":"隨","隐":"隱","隶":"隸","隽":"雋","难":"難","雇":"僱","雏":"雛","雕":"雕","雠":"讎","雳":"靂","雾":"霧","霁":"霽","霉":"黴","霡":"霢","霭":"靄","靓":"靚","靔":"靝","静":"靜","面":"面","靥":"靨","鞑":"韃","鞒":"鞽","鞯":"韉","鞲":"韝","韦":"韋","韧":"韌","韨":"韍","韩":"韓","韪":"韙","韫":"韞","韬":"韜","韵":"韻","页":"頁","顶":"頂","顷":"頃","顸":"頇","项":"項","顺":"順","须":"須","顼":"頊","顽":"頑","顾":"顧","顿":"頓","颀":"頎","颁":"頒","颂":"頌","颃":"頏","预":"預","颅":"顱","领":"領","颇":"頗","颈":"頸","颉":"頡","颊":"頰","颋":"頲","颌":"頜","颍":"潁","颎":"熲","颏":"頦","颐":"頤","频":"頻","颒":"頮","颓":"頹","颔":"頷","颕":"頴","颖":"穎","颗":"顆","题":"題","颙":"顒","颚":"顎","颛":"顓","颜":"顏","额":"額","颞":"顳","颟":"顢","颠":"顛","颡":"顙","颢":"顥","颣":"纇","颤":"顫","颥":"顬","颦":"顰","颧":"顴","风":"風","飏":"颺","飐":"颭","飑":"颮","飒":"颯","飓":"颶","飔":"颸","飕":"颼","飖":"颻","飗":"飀","飘":"飄","飙":"飆","飚":"飈","飞":"飛","飨":"饗","餍":"饜","饣":"飠","饤":"飣","饥":"飢","饦":"飥","饧":"餳","饨":"飩","饩":"餼","饪":"飪","饫":"飫","饬":"飭","饭":"飯","饮":"飲","饯":"餞","饰":"飾","饱":"飽","饲":"飼","饳":"飿","饴":"飴","饵":"餌","饶":"饒","饷":"餉","饸":"餄","饹":"餎","饺":"餃","饻":"餏","饼":"餅","饽":"餑","饾":"餖","饿":"餓","馀":"餘","馁":"餒","馂":"餕","馃":"餜","馄":"餛","馅":"餡","馆":"館","馇":"餷","馈":"饋","馉":"餶","馊":"餿","馋":"饞","馌":"饁","馍":"饃","馎":"餺","馏":"餾","馐":"饈","馑":"饉","馒":"饅","馓":"饊","馔":"饌","馕":"饢","马":"馬","驭":"馭","驮":"馱","驯":"馴","驰":"馳","驱":"驅","驲":"馹","驳":"駁","驴":"驢","驵":"駔","驶":"駛","驷":"駟","驸":"駙","驹":"駒","驺":"騶","驻":"駐","驼":"駝","驽":"駑","驾":"駕","驿":"驛","骀":"駘","骁":"驍","骂":"罵","骃":"駰","骄":"驕","骅":"驊","骆":"駱","骇":"駭","骈":"駢","骉":"驫","骊":"驪","骋":"騁","验":"驗","骍":"騂","骎":"駸","骏":"駿","骐":"騏","骑":"騎","骒":"騍","骓":"騅","骔":"騌","骕":"驌","骖":"驂","骗":"騙","骘":"騭","骙":"騤","骚":"騷","骛":"騖","骜":"驁","骝":"騮","骞":"騫","骟":"騸","骠":"驃","骡":"騾","骢":"驄","骣":"驏","骤":"驟","骥":"驥","骦":"驦","骧":"驤","髅":"髏","髋":"髖","髌":"髕","鬓":"鬢","鬶":"鬹","魇":"魘","魉":"魎","鱼":"魚","鱽":"魛","鱾":"魢","鱿":"魷","鲀":"魨","鲁":"魯","鲂":"魴","鲃":"䰾","鲄":"魺","鲅":"鮁","鲆":"鮃","鲇":"鮎","鲈":"鱸","鲉":"鮋","鲊":"鮓","鲋":"鮒","鲌":"鮊","鲍":"鮑","鲎":"鱟","鲏":"鮍","鲐":"鮐","鲑":"鮭","鲒":"鮚","鲓":"鮳","鲔":"鮪","鲕":"鮞","鲖":"鮦","鲗":"鰂","鲘":"鮜","鲙":"鱠","鲚":"鱭","鲛":"鮫","鲜":"鮮","鲝":"鮺","鲞":"鯗","鲟":"鱘","鲠":"鯁","鲡":"鱺","鲢":"鰱","鲣":"鰹","鲤":"鯉","鲥":"鰣","鲦":"鰷","鲧":"鯀","鲨":"鯊","鲩":"鯇","鲪":"鮶","鲫":"鯽","鲬":"鯒","鲭":"鯖","鲮":"鯪","鲯":"鯕","鲰":"鯫","鲱":"鯡","鲲":"鯤","鲳":"鯧","鲴":"鯝","鲵":"鯢","鲶":"鯰","鲷":"鯛","鲸":"鯨","鲹":"鰺","鲺":"鯴","鲻":"鯔","鲼":"鱝","鲽":"鰈","鲾":"鰏","鲿":"鱨","鳀":"鯷","鳁":"鰮","鳂":"鰃","鳃":"鰓","鳄":"鱷","鳅":"鰍","鳆":"鰒","鳇":"鰉","鳈":"鰁","鳉":"鱂","鳊":"鯿","鳋":"鰠","鳌":"鰲","鳍":"鰭","鳎":"鰨","鳏":"鰥","鳐":"鰩","鳑":"鰟","鳒":"鰜","鳓":"鰳","鳔":"鰾","鳕":"鱈","鳖":"鱉","鳗":"鰻","鳘":"鰵","鳙":"鱅","鳚":"䲁","鳛":"鰼","鳜":"鱖","鳝":"鱔","鳞":"鱗","鳟":"鱒","鳠":"鱯","鳡":"鱤","鳢":"鱧","鳣":"鱣","鳤":"䲘","鸟":"鳥","鸠":"鳩","鸡":"雞","鸢":"鳶","鸣":"鳴","鸤":"鳲","鸥":"鷗","鸦":"鴉","鸧":"鶬","鸨":"鴇","鸩":"鴆","鸪":"鴣","鸫":"鶇","鸬":"鸕","鸭":"鴨","鸮":"鴞","鸯":"鴦","鸰":"鴒","鸱":"鴟","鸲":"鴝","鸳":"鴛","鸴":"鷽","鸵":"鴕","鸶":"鷥","鸷":"鷙","鸸":"鴯","鸹":"鴰","鸺":"鵂","鸻":"鴴","鸼":"鵃","鸽":"鴿","鸾":"鸞","鸿":"鴻","鹀":"鵐","鹁":"鵓","鹂":"鸝","鹃":"鵑","鹄":"鵠","鹅":"鵝","鹆":"鵒","鹇":"鷳","鹈":"鵜","鹉":"鵡","鹊":"鵲","鹋":"鶓","鹌":"鵪","鹍":"鵾","鹎":"鵯","鹏":"鵬","鹐":"鵮","鹑":"鶉","鹒":"鶊","鹓":"鵷","鹔":"鷫","鹕":"鶘","鹖":"鶡","鹗":"鶚","鹘":"鶻","鹙":"鶖","鹚":"鷀","鹛":"鶥","鹜":"鶩","鹝":"鷊","鹞":"鷂","鹟":"鶲","鹠":"鶹","鹡":"鶺","鹢":"鷁","鹣":"鶼","鹤":"鶴","鹥":"鷖","鹦":"鸚","鹧":"鷓","鹨":"鷚","鹩":"鷯","鹪":"鷦","鹫":"鷲","鹬":"鷸","鹭":"鷺","鹮":"䴉","鹯":"鸇","鹰":"鷹","鹱":"鸌","鹲":"鸏","鹳":"鸛","鹴":"鸘","鹾":"鹺","麦":"麥","麸":"麩","麹":"麴","麺":"麪","麽":"麼","黄":"黃","黉":"黌","黡":"黶","黩":"黷","黪":"黲","黾":"黽","鼋":"黿","鼌":"鼂","鼍":"鼉","鼹":"鼴","齐":"齊","齑":"齏","齿":"齒","龀":"齔","龁":"齕","龂":"齗","龃":"齟","龄":"齡","龅":"齙","龆":"齠","龇":"齜","龈":"齦","龉":"齬","龊":"齪","龋":"齲","龌":"齷","龙":"龍","龚":"龔","龛":"龕","龟":"龜","鿎":"䃮","鿏":"䥑","鿒":"鿓","鿔":"鎶","𠀾":"𠁞","𠆲":"儣","𠆿":"𠌥","𠇹":"俓","𠉂":"㒓","𠉗":"𠏢","𠋆":"儭","𠚳":"𠠎","𠛅":"剾","𠛆":"𠞆","𠛾":"𪟖","𠡠":"勑","𠮶":"嗰","𠯟":"哯","𠯠":"噅","𠰱":"㘉","𠰷":"嚧","𠱞":"囃","𠲥":"𡅏","𠴛":"𡃕","𠴢":"𡄔","𠵸":"𡄣","𠵾":"㗲","𡋀":"𡓾","𡋗":"𡑭","𡋤":"壗","𡍣":"𡔖","𡒄":"壈","𡝠":"㜷","𡞋":"㜗","𡞱":"㜢","𡠟":"孎","𡥧":"孻","𡭜":"𡮉","𡭬":"𡮣","𡳃":"𡳳","𡳒":"𦘧","𡶴":"嵼","𡸃":"𡽗","𡺃":"嶈","𡺄":"嶘","𢋈":"㢝","𢗓":"㦛","𢘙":"𢤱","𢘝":"𢣚","𢘞":"𢣭","𢙏":"愻","𢙐":"憹","𢙑":"𢠼","𢙒":"憢","𢙓":"懀","𢛯":"㦎","𢠁":"懎","𢢐":"𤢻","𢧐":"戰","𢫊":"𢷮","𢫞":"𢶫","𢫬":"摋","𢬍":"擫","𢬦":"𢹿","𢭏":"擣","𢽾":"斅","𣃁":"斸","𣆐":"曥","𣈣":"𣋋","𣍨":"𦢈","𣍯":"腪","𣍰":"脥","𣎑":"臗","𣏢":"槫","𣐕":"桱","𣐤":"欍","𣑶":"𣠲","𣒌":"楇","𣓿":"橯","𣔌":"樤","𣗊":"樠","𣗋":"欓","𣗙":"㰙","𣘐":"㯤","𣘓":"𣞻","𣘴":"檭","𣘷":"𣝕","𣚚":"欘","𣞎":"𣠩","𣨼":"殢","𣭤":"𣯴","𣯣":"𣯩","𣱝":"氭","𣲗":"湋","𣲘":"潕","𣳆":"㵗","𣶩":"澅","𣶫":"𣿉","𣶭":"𪷓","𣷷":"𤅶","𣸣":"濆","𣺼":"灙","𣺽":"𤁣","𣽷":"瀃","𤆡":"熓","𤆢":"㷍","𤇃":"爄","𤇄":"熌","𤇭":"爖","𤇹":"熚","𤈶":"熉","𤈷":"㷿","𤊀":"𤒎","𤊰":"𤓩","𤋏":"熡","𤎺":"𤓎","𤎻":"𤑳","𤙯":"𤛮","𤝢":"𤢟","𤞃":"獩","𤞤":"玁","𤠋":"㺏","𤦀":"瓕","𤩽":"瓛","𤳄":"𤳸","𤶊":"癐","𤶧":"𤸫","𤻊":"㿗","𤽯":"㿧","𤾀":"皟","𤿲":"麬","𥁢":"䀉","𥅘":"𥌃","𥅴":"䀹","𥅿":"𥊝","𥆧":"瞤","𥇢":"䁪","𥎝":"䂎","𥐟":"礒","𥐯":"𥖅","𥐰":"𥕥","𥐻":"碙","𥞦":"𥞵","𥧂":"𥨐","𥩟":"竚","𥩺":"𥪂","𥫣":"籅","𥬀":"䉙","𥬞":"籋","𥬠":"篘","𥭉":"𥵊","𥮋":"𥸠","𥮜":"䉲","𥮾":"篸","𥱔":"𥵃","𥹥":"𥼽","𥺅":"䊭","𥺇":"𥽖","𦈈":"𥿊","𦈉":"緷","𦈋":"綇","𦈌":"綀","𦈎":"繟","𦈏":"緍","𦈐":"縺","𦈑":"緸","𦈒":"𦂅","𦈓":"䋿","𦈔":"縎","𦈕":"緰","𦈖":"䌈","𦈗":"𦃄","𦈘":"䌋","𦈙":"䌰","𦈚":"縬","𦈛":"繓","𦈜":"䌖","𦈝":"繏","𦈞":"䌟","𦈟":"䌝","𦈠":"䌥","𦈡":"繻","𦍠":"䍽","𦛨":"朥","𦝼":"膢","𦟗":"𦣎","𦨩":"𦪽","𦰏":"蓧","𦰴":"䕳","𦶟":"爇","𦶻":"𦾟","𦻕":"蘟","𧉐":"𧕟","𧉞":"䗿","𧌥":"𧎈","𧏖":"蠙","𧏗":"蠀","𧑏":"蠾","𧒭":"𧔥","𧜭":"䙱","𧝝":"襰","𧝧":"𧟀","𧮪":"詀","𧳕":"𧳟","𧹑":"䞈","𧹒":"買","𧹓":"𧶔","𧹔":"賬","𧹕":"𝻻","𧹖":"賟","𧹗":"贃","𧿈":"𨇁","𨀁":"躘","𨀱":"𨄣","𨁴":"𨅍","𨂺":"𨈊","𨄄":"𨈌","𨅛":"䠱","𨅫":"𨇞","𨅬":"躝","𨉗":"軉","𨐅":"軗","𨐆":"𨊻","𨐇":"𨏠","𨐈":"輄","𨐉":"𨎮","𨐊":"𨏥","𨑹":"䢨","𨟳":"𨣞","𨠨":"𨣧","𨡙":"𨢿","𨡺":"𨣈","𨤰":"𨤻","𨰾":"鎷","𨰿":"釳","𨱀":"𨥛","𨱁":"鈠","𨱂":"鈋","𨱃":"鈲","𨱄":"鈯","𨱅":"鉁","𨱆":"龯","𨱇":"銶","𨱈":"鋉","𨱉":"鍄","𨱊":"𨧱","𨱋":"錂","𨱌":"鏆","𨱍":"鎯","𨱎":"鍮","𨱏":"鎝","𨱐":"𨫒","𨱑":"鐄","𨱒":"鏉","𨱓":"鐎","𨱔":"鐏","𨱕":"𨮂","𨱖":"䥩","𨷿":"䦳","𨸀":"𨳕","𨸁":"𨳑","𨸂":"閍","𨸃":"閐","𨸄":"䦘","𨸅":"𨴗","𨸆":"𨵩","𨸇":"𨵸","𨸉":"𨶀","𨸊":"𨶏","𨸋":"𨶲","𨸌":"𨶮","𨸎":"𨷲","𨸘":"𨽏","𨸟":"䧢","𩏼":"䪏","𩏽":"𩏪","𩏾":"𩎢","𩏿":"䪘","𩐀":"䪗","𩓋":"顂","𩖕":"𩓣","𩖖":"顃","𩖗":"䫴","𩙥":"颰","𩙦":"𩗀","𩙧":"䬞","𩙨":"𩘹","𩙩":"𩘀","𩙪":"颷","𩙫":"颾","𩙬":"𩘺","𩙭":"𩘝","𩙮":"䬘","𩙯":"䬝","𩙰":"𩙈","𩟿":"𩚛","𩠀":"𩚥","𩠁":"𩚵","𩠂":"𩛆","𩠃":"𩛩","𩠅":"𩟐","𩠆":"𩜦","𩠇":"䭀","𩠈":"䭃","𩠉":"𩜇","𩠊":"𩜵","𩠋":"𩝔","𩠌":"餸","𩠎":"𩞄","𩠏":"𩞦","𩠠":"𩠴","𩡖":"𩡣","𩧦":"𩡺","𩧨":"駎","𩧩":"𩤊","𩧪":"䮾","𩧫":"駚","𩧬":"𩢡","𩧭":"䭿","𩧮":"𩢾","𩧯":"驋","𩧰":"䮝","𩧱":"𩥉","𩧲":"駧","𩧳":"𩢸","𩧴":"駩","𩧵":"𩢴","𩧶":"𩣏","𩧸":"𩣫","𩧺":"駶","𩧻":"𩣵","𩧼":"𩣺","𩧿":"䮠","𩨀":"騔","𩨁":"䮞","𩨂":"驄","𩨃":"騝","𩨄":"騪","𩨅":"𩤸","𩨆":"𩤙","𩨇":"䮫","𩨈":"騟","𩨉":"𩤲","𩨊":"騚","𩨋":"𩥄","𩨌":"𩥑","𩨍":"𩥇","𩨎":"龭","𩨏":"䮳","𩨐":"𩧆","𩩈":"䯤","𩬣":"𩭙","𩬤":"𩰀","𩭹":"鬖","𩯒":"𩯳","𩰰":"𩰹","𩲒":"𩳤","𩴌":"𩴵","𩽹":"魥","𩽺":"𩵩","𩽻":"𩵹","𩽼":"鯶","𩽽":"𩶱","𩽾":"鮟","𩽿":"𩶰","𩾁":"鯄","𩾂":"䲖","𩾃":"鮸","𩾄":"𩷰","𩾅":"𩸃","𩾆":"𩸦","𩾇":"鯱","𩾈":"䱙","𩾊":"䱬","𩾋":"䱰","𩾌":"鱇","𩾎":"𩽇","𪉂":"䲰","𪉃":"鳼","𪉄":"𩿪","𪉅":"𪀦","𪉆":"鴲","𪉈":"鴜","𪉉":"𪁈","𪉊":"鷨","𪉋":"𪀾","𪉌":"𪁖","𪉍":"鵚","𪉎":"𪂆","𪉏":"𪃏","𪉐":"𪃍","𪉑":"鷔","𪉒":"𪄕","𪉔":"𪄆","𪉕":"𪇳","𪎈":"䴬","𪎉":"麲","𪎊":"麨","𪎋":"䴴","𪎌":"麳","𪑅":"䵳","𪔭":"𪔵","𪚏":"𪘀","𪚐":"𪘯","𪜎":"𠿕","𪞝":"凙","𪟎":"㔋","𪟝":"勣","𪠀":"𧷎","𪠟":"㓄","𪠡":"𠬙","𪠳":"唓","𪠵":"㖮","𪠸":"嚛","𪠺":"𠽃","𪠽":"噹","𪡀":"嘺","𪡃":"嘪","𪡋":"噞","𪡏":"嗹","𪡛":"㗿","𪡞":"嘳","𪡺":"𡃄","𪢌":"㘓","𪢐":"𡃤","𪢒":"𡂡","𪢕":"嚽","𪢖":"𡅯","𪢠":"囒","𪢮":"圞","𪢸":"墲","𪣆":"埬","𪣒":"堚","𪣻":"塿","𪤄":"𡓁","𪤚":"壣","𪥠":"𧹈","𪥫":"孇","𪥰":"嬣","𪥿":"嬻","𪧀":"孾","𪧘":"寠","𪨊":"㞞","𪨗":"屩","𪨧":"崙","𪨩":"𡸗","𪨶":"輋","𪨷":"巗","𪨹":"𡹬","𪩇":"㟺","𪩎":"巊","𪩘":"巘","𪩛":"𡿖","𪩷":"幝","𪩸":"幩","𪪏":"廬","𪪑":"㢗","𪪞":"廧","𪪴":"𢍰","𪪼":"彃","𪫌":"徿","𪫡":"𢤩","𪫷":"㦞","𪫺":"憸","𪬚":"𢣐","𪬯":"𢤿","𪭝":"𢯷","𪭢":"摐","𪭧":"擟","𪭯":"𢶒","𪭵":"掚","𪭾":"撊","𪮃":"㨻","𪮋":"㩋","𪮖":"撧","𪮳":"𢺳","𪮶":"攋","𪯋":"㪎","𪰶":"曊","𪱥":"膹","𪱷":"梖","𪲎":"櫅","𪲔":"欐","𪲛":"檵","𪲮":"櫠","𪳍":"欇","𪳗":"𣜬","𪴙":"欑","𪵑":"毊","𪵣":"霼","𪵱":"濿","𪶄":"溡","𪶒":"𤄷","𪶮":"𣽏","𪷍":"㵾","𪷽":"灒","𪸕":"熂","𪸩":"煇","𪹀":"𤑹","𪹠":"𤓌","𪹳":"爥","𪹹":"𤒻","𪺣":"𤘀","𪺪":"𤜆","𪺭":"犞","𪺷":"獊","𪺸":"𤠮","𪺻":"㺜","𪺽":"猌","𪻐":"瑽","𪻨":"瓄","𪻲":"瑻","𪻺":"璝","𪼋":"㻶","𪼴":"𤬅","𪽈":"畼","𪽝":"𤳷","𪽪":"痮","𪽭":"𤷃","𪽮":"㿖","𪽴":"𤺔","𪽷":"瘱","𪾔":"盨","𪾢":"睍","𪾣":"眝","𪾦":"矑","𪾸":"矉","𪿊":"𥏝","𪿞":"𥖲","𪿫":"礮","𪿵":"𥗇","𫀌":"𥜰","𫀓":"𥜐","𫀨":"䅐","𫀬":"䅳","𫀮":"𥢷","𫁂":"䆉","𫁟":"竱","𫁡":"鴗","𫁱":"𥶽","𫁲":"䉑","𫁳":"𥯤","𫁷":"䉶","𫁺":"𥴼","𫂃":"簢","𫂆":"簂","𫂈":"䉬","𫂖":"𥴨","𫂿":"𥻦","𫃗":"𩏷","𫄙":"糺","𫄚":"䊺","𫄛":"紟","𫄜":"䋃","𫄝":"𥾯","𫄞":"䋔","𫄟":"絁","𫄠":"絙","𫄡":"絧","𫄢":"絥","𫄣":"繷","𫄤":"繨","𫄥":"纚","𫄦":"𦀖","𫄧":"綖","𫄨":"絺","𫄩":"䋦","𫄪":"𦅇","𫄫":"綟","𫄬":"緤","𫄭":"緮","𫄮":"䋼","𫄯":"𦃩","𫄰":"縍","𫄱":"繬","𫄲":"縸","𫄳":"縰","𫄴":"繂","𫄵":"𦅈","𫄶":"繈","𫄷":"繶","𫄸":"纁","𫄹":"纗","𫅅":"䍤","𫅗":"羵","𫅥":"𦒀","𫅭":"䎙","𫅼":"𦔖","𫆏":"聻","𫆝":"𦟼","𫆫":"𦡝","𫇘":"𦧺","𫇛":"艣","𫇪":"𦱌","𫇭":"蔿","𫇴":"蒭","𫇽":"蕽","𫈉":"蕳","𫈎":"葝","𫈟":"蔯","𫈵":"蕝","𫉁":"薆","𫉄":"藷","𫊪":"䗅","𫊮":"蠦","𫊸":"蟜","𫊹":"𧒯","𫊻":"蟳","𫋇":"蟂","𫋌":"蟘","𫋲":"䙔","𫋷":"襗","𫋹":"襓","𫋻":"襘","𫌀":"襀","𫌇":"襵","𫌋":"𧞫","𫌨":"覼","𫌪":"覛","𫌫":"𧡴","𫌬":"𧢄","𫌭":"覹","𫌯":"䚩","𫍐":"𧭹","𫍙":"訑","𫍚":"訞","𫍛":"訜","𫍜":"詓","𫍝":"諫","𫍞":"𧦝","𫍟":"𧦧","𫍠":"䛄","𫍡":"詑","𫍢":"譊","𫍣":"詷","𫍤":"譑","𫍥":"誂","𫍦":"譨","𫍧":"誺","𫍨":"誫","𫍩":"諣","𫍪":"誋","𫍫":"䛳","𫍬":"誷","𫍭":"𧩕","𫍮":"誳","𫍯":"諴","𫍰":"諰","𫍱":"諯","𫍲":"謏","𫍳":"諥","𫍴":"謱","𫍵":"謸","𫍶":"𧩼","𫍷":"謉","𫍸":"謆","𫍹":"謯","𫍺":"𧫝","𫍻":"譆","𫍼":"𧬤","𫍽":"譞","𫍾":"𧭈","𫍿":"譾","𫎆":"豵","𫎌":"貗","𫎦":"贚","𫎧":"䝭","𫎨":"𧸘","𫎩":"賝","𫎪":"䞋","𫎫":"贉","𫎬":"贑","𫎭":"䞓","𫎱":"䟐","𫎳":"䟆","𫎸":"𧽯","𫎺":"䟃","𫏃":"䠆","𫏆":"蹳","𫏋":"蹻","𫏌":"𨂐","𫏐":"蹔","𫏑":"𨇽","𫏕":"𨆪","𫏞":"𨇰","𫏨":"𨇤","𫐄":"軏","𫐅":"軕","𫐆":"轣","𫐇":"軜","𫐈":"軷","𫐉":"軨","𫐊":"軬","𫐋":"𨎌","𫐌":"軿","𫐍":"𨌈","𫐎":"輢","𫐏":"輖","𫐐":"輗","𫐑":"輨","𫐒":"輷","𫐓":"輮","𫐔":"𨍰","𫐕":"轊","𫐖":"轇","𫐗":"轐","𫐘":"轗","𫐙":"轠","𫐷":"遱","𫑘":"鄟","𫑡":"鄳","𫑷":"醶","𫓥":"釟","𫓦":"釨","𫓧":"鈇","𫓨":"鈛","𫓩":"鏦","𫓪":"鈆","𫓫":"𨥟","𫓬":"鉔","𫓭":"鉠","𫓮":"𨪕","𫓯":"銈","𫓰":"銊","𫓱":"鐈","𫓲":"銁","𫓳":"𨰋","𫓴":"鉾","𫓵":"鋠","𫓶":"鋗","𫓷":"𫒡","𫓸":"錽","𫓹":"錤","𫓺":"鐪","𫓻":"錜","𫓼":"𨨛","𫓽":"錝","𫓾":"錥","𫓿":"𨨢","𫔀":"鍊","𫔁":"鐼","𫔂":"鍉","𫔃":"𨰲","𫔄":"鍒","𫔅":"鎍","𫔆":"䥯","𫔇":"鎞","𫔈":"鎙","𫔉":"𨰃","𫔊":"鏥","𫔋":"䥗","𫔌":"鏾","𫔍":"鐇","𫔎":"鐍","𫔏":"𨬖","𫔐":"𨭸","𫔑":"𨭖","𫔒":"𨮳","𫔓":"𨯟","𫔔":"鑴","𫔕":"𨰥","𫔖":"𨲳","𫔭":"開","𫔮":"閒","𫔯":"閗","𫔰":"閞","𫔲":"𨴹","𫔴":"閵","𫔵":"䦯","𫔶":"闑","𫔽":"𨼳","𫕚":"𩀨","𫕥":"霣","𫕨":"𩅙","𫖃":"靧","𫖅":"䪊","𫖇":"鞾","𫖑":"𩎖","𫖒":"韠","𫖓":"𩏂","𫖔":"韛","𫖕":"韝","𫖖":"𩏠","𫖪":"𩑔","𫖫":"䪴","𫖬":"䪾","𫖭":"𩒎","𫖮":"顗","𫖯":"頫","𫖰":"䫂","𫖱":"䫀","𫖲":"䫟","𫖳":"頵","𫖴":"𩔳","𫖵":"𩓥","𫖶":"顅","𫖷":"𩔑","𫖸":"願","𫖹":"顣","𫖺":"䫶","𫗇":"䫻","𫗈":"𩗓","𫗉":"𩗴","𫗊":"䬓","𫗋":"飋","𫗚":"𩟗","𫗞":"飦","𫗟":"䬧","𫗠":"餦","𫗡":"𩚩","𫗢":"飵","𫗣":"飶","𫗤":"𩛌","𫗥":"餫","𫗦":"餔","𫗧":"餗","𫗨":"𩛡","𫗩":"饠","𫗪":"餧","𫗫":"餬","𫗬":"餪","𫗭":"餵","𫗮":"餭","𫗯":"餱","𫗰":"䭔","𫗱":"䭑","𫗳":"𩝽","𫗴":"饘","𫗵":"饟","𫘛":"馯","𫘜":"馼","𫘝":"駃","𫘞":"駞","𫘟":"駊","𫘠":"駤","𫘡":"駫","𫘣":"駻","𫘤":"騃","𫘥":"騉","𫘦":"騊","𫘧":"騄","𫘨":"騠","𫘩":"騜","𫘪":"騵","𫘫":"騴","𫘬":"騱","𫘭":"騻","𫘮":"䮰","𫘯":"驓","𫘰":"驙","𫘱":"驨","𫘽":"鬠","𫙂":"𩯁","𫚈":"鱮","𫚉":"魟","𫚊":"鰑","𫚋":"鱄","𫚌":"魦","𫚍":"魵","𫚎":"𩶁","𫚏":"䱁","𫚐":"䱀","𫚑":"鮅","𫚒":"鮄","𫚓":"鮤","𫚔":"鮰","𫚕":"鰤","𫚖":"鮆","𫚗":"鮯","𫚘":"𩻮","𫚙":"鯆","𫚚":"鮿","𫚛":"鮵","𫚜":"䲅","𫚝":"𩸄","𫚞":"鯬","𫚟":"𩸡","𫚠":"䱧","𫚡":"鯞","𫚢":"鰋","𫚣":"鯾","𫚤":"鰦","𫚥":"鰕","𫚦":"鰫","𫚧":"鰽","𫚨":"𩻗","𫚩":"𩻬","𫚪":"鱊","𫚫":"鱢","𫚬":"𩼶","𫚭":"鱲","𫛚":"鳽","𫛛":"鳷","𫛜":"鴀","𫛝":"鴅","𫛞":"鴃","𫛟":"鸗","𫛠":"𩿤","𫛡":"鴔","𫛢":"鸋","𫛣":"鴥","𫛤":"鴐","𫛥":"鵊","𫛦":"鴮","𫛧":"𪀖","𫛨":"鵧","𫛩":"鴳","𫛪":"鴽","𫛫":"鶰","𫛬":"䳜","𫛭":"鵟","𫛮":"䳤","𫛯":"鶭","𫛰":"䳢","𫛱":"鵫","𫛲":"鵰","𫛳":"鵩","𫛴":"鷤","𫛵":"鶌","𫛶":"鶒","𫛷":"鶦","𫛸":"鶗","𫛹":"𪃧","𫛺":"䳧","𫛻":"𪃒","𫛼":"䳫","𫛽":"鷅","𫛾":"𪆷","𫜀":"鷐","𫜁":"鷩","𫜂":"𪅂","𫜃":"鷣","𫜄":"鷷","𫜅":"䴋","𫜊":"𪉸","𫜑":"麷","𫜒":"䴱","𫜓":"𪌭","𫜔":"䴽","𫜕":"𪍠","𫜙":"䵴","𫜟":"𪓰","𫜨":"𪶕","𫜩":"齧","𫜪":"齩","𫜫":"𫜦","𫜬":"齰","𫜭":"齭","𫜮":"齴","𫜯":"𪙏","𫜰":"齾","𫜲":"龓","𫜳":"䶲","𫝈":"㑮","𫝋":"𠐊","𫝦":"㛝","𫝧":"㜐","𫝨":"媈","𫝩":"嬦","𫝪":"𡟫","𫝫":"婡","𫝬":"嬇","𫝭":"孆","𫝮":"孄","𫝵":"嶹","𫞅":"𦠅","𫞗":"潣","𫞚":"澬","𫞛":"㶆","𫞝":"灍","𫞠":"爧","𫞡":"爃","𫞢":"𤛱","𫞣":"㹽","𫞥":"珼","𫞦":"璾","𫞧":"𤩂","𫞨":"璼","𫞩":"璊","𫞷":"𥢶","𫟃":"絍","𫟄":"綋","𫟅":"綡","𫟆":"緟","𫟇":"𦆲","𫟑":"䖅","𫟕":"䕤","𫟞":"訨","𫟟":"詊","𫟠":"譂","𫟡":"誴","𫟢":"䜖","𫟤":"䡐","𫟥":"䡩","𫟦":"䡵","𫟫":"𨞺","𫟬":"𨟊","𫟲":"釚","𫟳":"釲","𫟴":"鈖","𫟵":"鈗","𫟶":"銏","𫟷":"鉝","𫟸":"鉽","𫟹":"鉷","𫟺":"䤤","𫟻":"銂","𫟼":"鐽","𫟽":"𨧰","𫟾":"𨩰","𫟿":"鎈","𫠀":"䥄","𫠁":"鑉","𫠂":"閝","𫠅":"韚","𫠆":"頍","𫠇":"𩖰","𫠈":"䫾","𫠊":"䮄","𫠋":"騼","𫠌":"𩦠","𫠏":"𩵦","𫠐":"魽","𫠑":"䱸","𫠒":"鱆","𫠖":"𩿅","𫠜":"齯","𫢸":"僤","𫧃":"𣍐","𫧮":"𪋿","𫫇":"噁","𫬐":"㘔","𫭟":"塸","𫭢":"埨","𫭼":"𡑍","𫮃":"墠","𫰛":"娙","𫵷":"㠣","𫶇":"嵽","𫷷":"廞","𫸩":"彄","𬀩":"暐","𬀪":"晛","𬂩":"梜","𬃊":"櫍","𬇕":"澫","𬇙":"浿","𬇹":"漍","𬉼":"熰","𬊈":"燖","𬊤":"燀","𬍛":"瓅","𬍡":"璗","𬍤":"璕","𬒈":"礐","𬒗":"𥗽","𬕂":"篢","𬘓":"紃","𬘘":"紞","𬘡":"絪","𬘩":"綎","𬘫":"綄","𬘬":"綪","𬘭":"綝","𬘯":"綧","𬙂":"縯","𬙊":"纆","𬙋":"纕","𬜬":"蔄","𬜯":"䓣","𬞟":"蘋","𬟁":"虉","𬟽":"蝀","𬣙":"訏","𬣞":"詝","𬣡":"諓","𬣳":"詪","𬤇":"諲","𬤊":"諟","𬤝":"譓","𬨂":"軝","𬨎":"輶","𬩽":"鄩","𬪩":"醲","𬬩":"釴","𬬭":"錀","𬬮":"鋹","𬬱":"釿","𬬸":"鉥","𬬹":"鉮","𬬻":"鑪","𬬿":"鉊","𬭁":"鉧","𬭊":"𨧀","𬭎":"鋐","𬭚":"錞","𬭛":"𨨏","𬭤":"鍭","𬭩":"鎓","𬭬":"鏏","𬭭":"鏚","𬭯":"䥕","𬭳":"𨭎","𬭶":"𨭆","𬭸":"鏻","𬭼":"鐩","𬮱":"闉","𬮿":"隑","𬯀":"隮","𬯎":"隤","𬱖":"頔","𬱟":"頠","𬳵":"駓","𬳶":"駉","𬳽":"駪","𬳿":"駼","𬴂":"騑","𬴃":"騞","𬴊":"驎","𬶋":"鮈","𬶍":"鮀","𬶏":"鮠","𬶐":"鮡","𬶟":"鯻","𬶠":"鰊","𬶨":"鱀","𬶭":"鰶","𬶮":"鱚","𬷕":"鵏","𬸘":"鶠","𬸚":"鸑","𬸣":"鶱","𬸦":"鷟","𬸪":"鷭","𬸯":"鷿","𬹼":"齘","𬺈":"齮","𬺓":"齼","𰬸":"繐","𰰨":"菕","𰶎":"譅","𰾄":"鋂","𰾭":"鑀","𱊜":"𪈼"},Qe={"㑮":"𫝈","㑯":"㑔","㑳":"㑇","㑶":"㐹","㒓":"𠉂","㓄":"𪠟","㓨":"刾","㔋":"𪟎","㖮":"𪠵","㗲":"𠵾","㗿":"𪡛","㘉":"𠰱","㘓":"𪢌","㘔":"𫬐","㘚":"㘎","㛝":"𫝦","㜄":"㚯","㜏":"㛣","㜐":"𫝧","㜗":"𡞋","㜢":"𡞱","㜷":"𡝠","㞞":"𪨊","㟺":"𪩇","㠏":"㟆","㠣":"𫵷","㢗":"𪪑","㢝":"𢋈","㥮":"㤘","㦎":"𢛯","㦛":"𢗓","㦞":"𪫷","㨻":"𪮃","㩋":"𪮋","㩜":"㨫","㩳":"㧐","㩵":"擜","㪎":"𪯋","㯤":"𣘐","㰙":"𣗙","㵗":"𣳆","㵾":"𪷍","㶆":"𫞛","㷍":"𤆢","㷿":"𤈷","㸇":"𤎺","㹽":"𫞣","㺏":"𤠋","㺜":"𪺻","㻶":"𪼋","㿖":"𪽮","㿗":"𤻊","㿧":"𤽯","䀉":"𥁢","䀹":"𥅴","䁪":"𥇢","䁻":"䀥","䂎":"𥎝","䃮":"鿎","䅐":"𫀨","䅳":"𫀬","䆉":"𫁂","䉑":"𫁲","䉙":"𥬀","䉬":"𫂈","䉲":"𥮜","䉶":"𫁷","䊭":"𥺅","䊷":"䌶","䊺":"𫄚","䋃":"𫄜","䋔":"𫄞","䋙":"䌺","䋚":"䌻","䋦":"𫄩","䋹":"䌿","䋻":"䌾","䋼":"𫄮","䋿":"𦈓","䌈":"𦈖","䌋":"𦈘","䌖":"𦈜","䌝":"𦈟","䌟":"𦈞","䌥":"𦈠","䌰":"𦈙","䍤":"𫅅","䍦":"䍠","䍽":"𦍠","䎙":"𫅭","䎱":"䎬","䓣":"𬜯","䕤":"𫟕","䕳":"𦰴","䖅":"𫟑","䗅":"𫊪","䗿":"𧉞","䙔":"𫋲","䙡":"䙌","䙱":"𧜭","䚩":"𫌯","䛄":"𫍠","䛳":"𫍫","䜀":"䜧","䜖":"𫟢","䝭":"𫎧","䝻":"𧹕","䝼":"䞍","䞈":"𧹑","䞋":"𫎪","䞓":"𫎭","䟃":"𫎺","䟆":"𫎳","䟐":"𫎱","䠆":"𫏃","䠱":"𨅛","䡐":"𫟤","䡩":"𫟥","䡵":"𫟦","䢨":"𨑹","䤤":"𫟺","䥄":"𫠀","䥇":"䦂","䥑":"鿏","䥕":"𬭯","䥗":"𫔋","䥩":"𨱖","䥯":"𫔆","䥱":"䥾","䦘":"𨸄","䦛":"䦶","䦟":"䦷","䦯":"𫔵","䦳":"𨷿","䧢":"𨸟","䪊":"𫖅","䪏":"𩏼","䪗":"𩐀","䪘":"𩏿","䪴":"𫖫","䪾":"𫖬","䫀":"𫖱","䫂":"𫖰","䫟":"𫖲","䫴":"𩖗","䫶":"𫖺","䫻":"𫗇","䫾":"𫠈","䬓":"𫗊","䬘":"𩙮","䬝":"𩙯","䬞":"𩙧","䬧":"𫗟","䭀":"𩠇","䭃":"𩠈","䭑":"𫗱","䭔":"𫗰","䭿":"𩧭","䮄":"𫠊","䮝":"𩧰","䮞":"𩨁","䮠":"𩧿","䮫":"𩨇","䮰":"𫘮","䮳":"𩨏","䮾":"𩧪","䯀":"䯅","䯤":"𩩈","䰾":"鲃","䱀":"𫚐","䱁":"𫚏","䱙":"𩾈","䱧":"𫚠","䱬":"𩾊","䱰":"𩾋","䱷":"䲣","䱸":"𫠑","䱽":"䲝","䲁":"鳚","䲅":"𫚜","䲖":"𩾂","䲘":"鳤","䲰":"𪉂","䳜":"𫛬","䳢":"𫛰","䳤":"𫛮","䳧":"𫛺","䳫":"𫛼","䴉":"鹮","䴋":"𫜅","䴬":"𪎈","䴱":"𫜒","䴴":"𪎋","䴽":"𫜔","䵳":"𪑅","䵴":"𫜙","䶕":"𫜨","䶲":"𫜳","丟":"丢","並":"并","乾":"干","亂":"乱","亙":"亘","亞":"亚","佇":"伫","佈":"布","佔":"占","併":"并","來":"来","侖":"仑","侶":"侣","侷":"局","俁":"俣","係":"系","俓":"𠇹","俔":"伣","俠":"侠","俥":"伡","俬":"私","倀":"伥","倆":"俩","倈":"俫","倉":"仓","個":"个","們":"们","倖":"幸","倫":"伦","倲":"㑈","偉":"伟","偑":"㐽","側":"侧","偵":"侦","偽":"伪","傌":"㐷","傑":"杰","傖":"伧","傘":"伞","備":"备","傢":"家","傭":"佣","傯":"偬","傳":"传","傴":"伛","債":"债","傷":"伤","傾":"倾","僂":"偻","僅":"仅","僉":"佥","僑":"侨","僕":"仆","僞":"伪","僤":"𫢸","僥":"侥","僨":"偾","僱":"雇","價":"价","儀":"仪","儁":"俊","儂":"侬","億":"亿","儈":"侩","儉":"俭","儎":"","儐":"","儔":"俦","儕":"侪","儘":"尽","償":"偿","儣":"𠆲","優":"优","儭":"𠋆","儲":"储","儷":"俪","儸":"㑩","儺":"傩","儻":"傥","儼":"俨","兇":"凶","兌":"兑","兒":"儿","兗":"兖","內":"内","兩":"两","冊":"册","冑":"胄","冪":"幂","凈":"净","凍":"冻","凙":"𪞝","凜":"凛","凱":"凯","別":"别","刪":"删","剄":"刭","則":"则","剋":"克","剎":"刹","剗":"刬","剛":"刚","剝":"剥","剮":"剐","剴":"剀","創":"创","剷":"铲","剾":"𠛅","劃":"划","劇":"剧","劉":"刘","劊":"刽","劌":"刿","劍":"剑","劏":"㓥","劑":"剂","劚":"㔉","勁":"劲","勑":"𠡠","動":"动","務":"务","勛":"勋","勝":"胜","勞":"劳","勢":"势","勣":"𪟝","勩":"勚","勱":"劢","勳":"勋","勵":"励","勸":"劝","勻":"匀","匭":"匦","匯":"汇","匱":"匮","區":"区","協":"协","卹":"恤","卻":"却","卽":"即","厙":"厍","厠":"厕","厤":"历","厭":"厌","厲":"厉","厴":"厣","參":"参","叄":"叁","叢":"丛","吒":"咤","吳":"吴","吶":"呐","呂":"吕","咼":"呙","員":"员","哯":"𠯟","唄":"呗","唓":"𪠳","唸":"念","問":"问","啓":"启","啞":"哑","啟":"启","啢":"唡","喎":"㖞","喚":"唤","喪":"丧","喫":"吃","喬":"乔","單":"单","喲":"哟","嗆":"呛","嗇":"啬","嗊":"唝","嗎":"吗","嗚":"呜","嗩":"唢","嗰":"𠮶","嗶":"哔","嗹":"𪡏","嘆":"叹","嘍":"喽","嘓":"啯","嘔":"呕","嘖":"啧","嘗":"尝","嘜":"唛","嘩":"哗","嘪":"𪡃","嘮":"唠","嘯":"啸","嘰":"叽","嘳":"𪡞","嘵":"哓","嘸":"呒","嘺":"𪡀","嘽":"啴","噁":"恶","噅":"𠯠","噓":"嘘","噚":"㖊","噝":"咝","噞":"𪡋","噠":"哒","噥":"哝","噦":"哕","噯":"嗳","噲":"哙","噴":"喷","噸":"吨","噹":"当","嚀":"咛","嚇":"吓","嚌":"哜","嚐":"尝","嚕":"噜","嚙":"啮","嚛":"𪠸","嚥":"咽","嚦":"呖","嚧":"𠰷","嚨":"咙","嚮":"向","嚲":"亸","嚳":"喾","嚴":"严","嚶":"嘤","嚽":"𪢕","囀":"啭","囁":"嗫","囂":"嚣","囃":"𠱞","囅":"冁","囈":"呓","囉":"啰","囌":"苏","囑":"嘱","囒":"𪢠","囪":"囱","圇":"囵","國":"国","圍":"围","園":"园","圓":"圆","圖":"图","團":"团","圞":"𪢮","垻":"坝","埡":"垭","埨":"𫭢","埬":"𪣆","埰":"采","執":"执","堅":"坚","堊":"垩","堖":"垴","堚":"𪣒","堝":"埚","堯":"尧","報":"报","場":"场","塊":"块","塋":"茔","塏":"垲","塒":"埘","塗":"涂","塚":"冢","塢":"坞","塤":"埙","塵":"尘","塸":"𫭟","塹":"堑","塿":"𪣻","墊":"垫","墜":"坠","墠":"𫮃","墮":"堕","墰":"坛","墲":"𪢸","墳":"坟","墶":"垯","墻":"墙","墾":"垦","壇":"坛","壈":"𡒄","壋":"垱","壎":"埙","壓":"压","壗":"𡋤","壘":"垒","壙":"圹","壚":"垆","壜":"坛","壞":"坏","壟":"垄","壠":"垅","壢":"坜","壣":"𪤚","壩":"坝","壪":"塆","壯":"壮","壺":"壶","壼":"壸","壽":"寿","夠":"够","夢":"梦","夥":"伙","夾":"夹","奐":"奂","奧":"奥","奩":"奁","奪":"夺","奬":"奖","奮":"奋","奼":"姹","妝":"妆","姍":"姗","姦":"奸","娙":"𫰛","娛":"娱","婁":"娄","婡":"𫝫","婦":"妇","婭":"娅","媈":"𫝨","媧":"娲","媯":"妫","媰":"㛀","媼":"媪","媽":"妈","嫋":"袅","嫗":"妪","嫵":"妩","嫺":"娴","嫻":"娴","嫿":"婳","嬀":"妫","嬃":"媭","嬇":"𫝬","嬈":"娆","嬋":"婵","嬌":"娇","嬙":"嫱","嬡":"嫒","嬣":"𪥰","嬤":"嬷","嬦":"𫝩","嬪":"嫔","嬰":"婴","嬸":"婶","嬻":"𪥿","孃":"娘","孄":"𫝮","孆":"𫝭","孇":"𪥫","孋":"㛤","孌":"娈","孎":"𡠟","孫":"孙","學":"学","孻":"𡥧","孾":"𪧀","孿":"孪","宮":"宫","寀":"采","寠":"𪧘","寢":"寝","實":"实","寧":"宁","審":"审","寫":"写","寬":"宽","寵":"宠","寶":"宝","將":"将","專":"专","尋":"寻","對":"对","導":"导","尷":"尴","屆":"届","屍":"尸","屓":"屃","屜":"屉","屢":"屡","層":"层","屨":"屦","屩":"𪨗","屬":"属","岡":"冈","峯":"峰","峴":"岘","島":"岛","峽":"峡","崍":"崃","崑":"昆","崗":"岗","崙":"仑","崢":"峥","崬":"岽","嵐":"岚","嵗":"岁","嵼":"𡶴","嵽":"𫶇","嵾":"㟥","嶁":"嵝","嶄":"崭","嶇":"岖","嶈":"𡺃","嶔":"嵚","嶗":"崂","嶘":"𡺄","嶠":"峤","嶢":"峣","嶧":"峄","嶨":"峃","嶮":"崄","嶸":"嵘","嶹":"𫝵","嶺":"岭","嶼":"屿","嶽":"岳","巊":"𪩎","巋":"岿","巒":"峦","巔":"巅","巖":"岩","巗":"𪨷","巘":"𪩘","巰":"巯","巹":"卺","帥":"帅","師":"师","帳":"帐","帶":"带","幀":"帧","幃":"帏","幓":"㡎","幗":"帼","幘":"帻","幝":"𪩷","幟":"帜","幣":"币","幩":"𪩸","幫":"帮","幬":"帱","幹":"干","幾":"几","庫":"库","廁":"厕","廂":"厢","廄":"厩","廈":"厦","廎":"庼","廕":"荫","廚":"厨","廝":"厮","廞":"𫷷","廟":"庙","廠":"厂","廡":"庑","廢":"废","廣":"广","廧":"𪪞","廩":"廪","廬":"庐","廳":"厅","弒":"弑","弔":"吊","弳":"弪","張":"张","強":"强","彃":"𪪼","彄":"𫸩","彆":"别","彈":"弹","彌":"弥","彎":"弯","彔":"录","彙":"汇","彠":"彟","彥":"彦","彫":"雕","彲":"彨","彷":"彷","彿":"佛","後":"后","徑":"径","從":"从","徠":"徕","復":"复","徵":"征","徹":"彻","徿":"𪫌","恆":"恒","恥":"耻","悅":"悦","悞":"悮","悵":"怅","悶":"闷","悽":"凄","惡":"恶","惱":"恼","惲":"恽","惻":"恻","愛":"爱","愜":"惬","愨":"悫","愴":"怆","愷":"恺","愻":"𢙏","愾":"忾","慄":"栗","態":"态","慍":"愠","慘":"惨","慚":"惭","慟":"恸","慣":"惯","慤":"悫","慪":"怄","慫":"怂","慮":"虑","慳":"悭","慶":"庆","慺":"㥪","慼":"戚","慾":"欲","憂":"忧","憊":"惫","憐":"怜","憑":"凭","憒":"愦","憖":"慭","憚":"惮","憢":"𢙒","憤":"愤","憫":"悯","憮":"怃","憲":"宪","憶":"忆","憸":"𪫺","憹":"𢙐","懀":"𢙓","懇":"恳","應":"应","懌":"怿","懍":"懔","懎":"𢠁","懞":"蒙","懟":"怼","懣":"懑","懤":"㤽","懨":"恹","懲":"惩","懶":"懒","懷":"怀","懸":"悬","懺":"忏","懼":"惧","懾":"慑","戀":"恋","戇":"戆","戔":"戋","戧":"戗","戩":"戬","戰":"战","戱":"戯","戲":"戏","戶":"户","拋":"抛","挩":"捝","挱":"挲","挾":"挟","捨":"舍","捫":"扪","捱":"挨","捲":"卷","掃":"扫","掄":"抡","掆":"㧏","掗":"挜","掙":"挣","掚":"𪭵","掛":"挂","採":"采","揀":"拣","揚":"扬","換":"换","揮":"挥","揯":"搄","損":"损","搖":"摇","搗":"捣","搵":"揾","搶":"抢","摋":"𢫬","摐":"𪭢","摑":"掴","摜":"掼","摟":"搂","摯":"挚","摳":"抠","摶":"抟","摺":"折","摻":"掺","撈":"捞","撊":"𪭾","撏":"挦","撐":"撑","撓":"挠","撝":"㧑","撟":"挢","撣":"掸","撥":"拨","撧":"𪮖","撫":"抚","撲":"扑","撳":"揿","撻":"挞","撾":"挝","撿":"捡","擁":"拥","擄":"掳","擇":"择","擊":"击","擋":"挡","擓":"㧟","擔":"担","據":"据","擟":"𪭧","擠":"挤","擣":"捣","擫":"𢬍","擬":"拟","擯":"摈","擰":"拧","擱":"搁","擲":"掷","擴":"扩","擷":"撷","擺":"摆","擻":"擞","擼":"撸","擽":"㧰","擾":"扰","攄":"摅","攆":"撵","攋":"𪮶","攏":"拢","攔":"拦","攖":"撄","攙":"搀","攛":"撺","攜":"携","攝":"摄","攢":"攒","攣":"挛","攤":"摊","攪":"搅","攬":"揽","敎":"教","敓":"敚","敗":"败","敘":"叙","敵":"敌","數":"数","斂":"敛","斃":"毙","斅":"𢽾","斆":"敩","斕":"斓","斬":"斩","斷":"断","斸":"𣃁","於":"于","旂":"旗","旣":"既","昇":"升","時":"时","晉":"晋","晛":"𬀪","晝":"昼","暈":"晕","暉":"晖","暐":"𬀩","暘":"旸","暢":"畅","暫":"暂","曄":"晔","曆":"历","曇":"昙","曉":"晓","曊":"𪰶","曏":"向","曖":"暧","曠":"旷","曥":"𣆐","曨":"昽","曬":"晒","書":"书","會":"会","朥":"𦛨","朧":"胧","朮":"术","東":"东","枴":"拐","柵":"栅","柺":"拐","査":"查","桱":"𣐕","桿":"杆","梔":"栀","梖":"𪱷","梘":"枧","梜":"𬂩","條":"条","梟":"枭","梲":"棁","棄":"弃","棊":"棋","棖":"枨","棗":"枣","棟":"栋","棡":"㭎","棧":"栈","棲":"栖","棶":"梾","椏":"桠","椲":"㭏","楇":"𣒌","楊":"杨","楓":"枫","楨":"桢","業":"业","極":"极","榘":"矩","榦":"干","榪":"杩","榮":"荣","榲":"榅","榿":"桤","構":"构","槍":"枪","槓":"杠","槤":"梿","槧":"椠","槨":"椁","槫":"𣏢","槮":"椮","槳":"桨","槶":"椢","槼":"椝","樁":"桩","樂":"乐","樅":"枞","樑":"梁","樓":"楼","標":"标","樞":"枢","樠":"𣗊","樢":"㭤","樣":"样","樤":"𣔌","樧":"榝","樫":"㭴","樳":"桪","樸":"朴","樹":"树","樺":"桦","樿":"椫","橈":"桡","橋":"桥","機":"机","橢":"椭","橫":"横","橯":"𣓿","檁":"檩","檉":"柽","檔":"档","檜":"桧","檟":"槚","檢":"检","檣":"樯","檭":"𣘴","檮":"梼","檯":"台","檳":"槟","檵":"𪲛","檸":"柠","檻":"槛","櫃":"柜","櫅":"𪲎","櫍":"𬃊","櫓":"橹","櫚":"榈","櫛":"栉","櫝":"椟","櫞":"橼","櫟":"栎","櫠":"𪲮","櫥":"橱","櫧":"槠","櫨":"栌","櫪":"枥","櫫":"橥","櫬":"榇","櫱":"蘖","櫳":"栊","櫸":"榉","櫻":"樱","欄":"栏","欅":"榉","欇":"𪳍","權":"权","欍":"𣐤","欏":"椤","欐":"𪲔","欑":"𪴙","欒":"栾","欓":"𣗋","欖":"榄","欘":"𣚚","欞":"棂","欽":"钦","歎":"叹","歐":"欧","歟":"欤","歡":"欢","歲":"岁","歷":"历","歸":"归","歿":"殁","殘":"残","殞":"殒","殢":"𣨼","殤":"殇","殨":"㱮","殫":"殚","殭":"僵","殮":"殓","殯":"殡","殰":"㱩","殲":"歼","殺":"杀","殻":"壳","殼":"壳","毀":"毁","毆":"殴","毊":"𪵑","毿":"毵","氂":"牦","氈":"毡","氌":"氇","氣":"气","氫":"氢","氬":"氩","氭":"𣱝","氳":"氲","氾":"泛","汎":"泛","汙":"污","決":"决","沒":"没","沖":"冲","況":"况","泝":"溯","洩":"泄","洶":"汹","浹":"浃","浿":"𬇙","涇":"泾","涗":"涚","涼":"凉","淒":"凄","淚":"泪","淥":"渌","淨":"净","淩":"凌","淪":"沦","淵":"渊","淶":"涞","淺":"浅","渙":"涣","減":"减","渢":"沨","渦":"涡","測":"测","渾":"浑","湊":"凑","湋":"𣲗","湞":"浈","湧":"涌","湯":"汤","溈":"沩","準":"准","溝":"沟","溡":"𪶄","溫":"温","溮":"浉","溳":"涢","溼":"湿","滄":"沧","滅":"灭","滌":"涤","滎":"荥","滙":"汇","滬":"沪","滯":"滞","滲":"渗","滷":"卤","滸":"浒","滻":"浐","滾":"滚","滿":"满","漁":"渔","漊":"溇","漍":"𬇹","漚":"沤","漢":"汉","漣":"涟","漬":"渍","漲":"涨","漵":"溆","漸":"渐","漿":"浆","潁":"颍","潑":"泼","潔":"洁","潕":"𣲘","潙":"沩","潚":"㴋","潛":"潜","潣":"𫞗","潤":"润","潯":"浔","潰":"溃","潷":"滗","潿":"涠","澀":"涩","澅":"𣶩","澆":"浇","澇":"涝","澐":"沄","澗":"涧","澠":"渑","澤":"泽","澦":"滪","澩":"泶","澫":"𬇕","澬":"𫞚","澮":"浍","澱":"淀","澾":"㳠","濁":"浊","濃":"浓","濄":"㳡","濆":"𣸣","濕":"湿","濘":"泞","濚":"溁","濛":"蒙","濜":"浕","濟":"济","濤":"涛","濧":"㳔","濫":"滥","濰":"潍","濱":"滨","濺":"溅","濼":"泺","濾":"滤","濿":"𪵱","瀂":"澛","瀃":"𣽷","瀅":"滢","瀆":"渎","瀇":"㲿","瀉":"泻","瀋":"沈","瀏":"浏","瀕":"濒","瀘":"泸","瀝":"沥","瀟":"潇","瀠":"潆","瀦":"潴","瀧":"泷","瀨":"濑","瀰":"弥","瀲":"潋","瀾":"澜","灃":"沣","灄":"滠","灍":"𫞝","灑":"洒","灒":"𪷽","灕":"漓","灘":"滩","灙":"𣺼","灝":"灏","灡":"㳕","灣":"湾","灤":"滦","灧":"滟","灩":"滟","災":"灾","為":"为","烏":"乌","烴":"烃","無":"无","煇":"𪸩","煉":"炼","煒":"炜","煙":"烟","煢":"茕","煥":"焕","煩":"烦","煬":"炀","煱":"㶽","熂":"𪸕","熅":"煴","熉":"𤈶","熌":"𤇄","熒":"荧","熓":"𤆡","熗":"炝","熚":"𤇹","熡":"𤋏","熰":"𬉼","熱":"热","熲":"颎","熾":"炽","燀":"𬊤","燁":"烨","燈":"灯","燉":"炖","燒":"烧","燖":"𬊈","燙":"烫","燜":"焖","營":"营","燦":"灿","燬":"毁","燭":"烛","燴":"烩","燶":"㶶","燻":"熏","燼":"烬","燾":"焘","爃":"𫞡","爄":"𤇃","爇":"𦶟","爍":"烁","爐":"炉","爖":"𤇭","爛":"烂","爥":"𪹳","爧":"𫞠","爭":"争","爲":"为","爺":"爷","爾":"尔","牀":"床","牆":"墙","牘":"牍","牴":"牴","牽":"牵","犖":"荦","犛":"牦","犞":"𪺭","犢":"犊","犧":"牺","狀":"状","狹":"狭","狽":"狈","猌":"𪺽","猙":"狰","猶":"犹","猻":"狲","獁":"犸","獃":"呆","獄":"狱","獅":"狮","獊":"𪺷","獎":"奖","獨":"独","獩":"𤞃","獪":"狯","獫":"猃","獮":"狝","獰":"狞","獱":"㺍","獲":"获","獵":"猎","獷":"犷","獸":"兽","獺":"獭","獻":"献","獼":"猕","玀":"猡","玁":"𤞤","珼":"𫞥","現":"现","琱":"雕","琺":"珐","琿":"珲","瑋":"玮","瑒":"玚","瑣":"琐","瑤":"瑶","瑩":"莹","瑪":"玛","瑲":"玱","瑻":"𪻲","瑽":"𪻐","璉":"琏","璊":"𫞩","璕":"𬍤","璗":"𬍡","璝":"𪻺","璡":"琎","璣":"玑","璦":"瑷","璫":"珰","璯":"㻅","環":"环","璵":"玙","璸":"瑸","璼":"𫞨","璽":"玺","璾":"𫞦","璿":"璇","瓄":"𪻨","瓅":"𬍛","瓊":"琼","瓏":"珑","瓔":"璎","瓕":"𤦀","瓚":"瓒","瓛":"𤩽","甌":"瓯","甕":"瓮","產":"产","産":"产","甦":"苏","甯":"宁","畝":"亩","畢":"毕","畫":"画","異":"异","畵":"画","當":"当","畼":"𪽈","疇":"畴","疊":"叠","痙":"痉","痠":"酸","痮":"𪽪","痾":"疴","瘂":"痖","瘋":"疯","瘍":"疡","瘓":"痪","瘞":"瘗","瘡":"疮","瘧":"疟","瘮":"瘆","瘱":"𪽷","瘲":"疭","瘺":"瘘","瘻":"瘘","療":"疗","癆":"痨","癇":"痫","癉":"瘅","癐":"𤶊","癒":"愈","癘":"疠","癟":"瘪","癡":"痴","癢":"痒","癤":"疖","癥":"症","癧":"疬","癩":"癞","癬":"癣","癭":"瘿","癮":"瘾","癰":"痈","癱":"瘫","癲":"癫","發":"发","皁":"皂","皚":"皑","皟":"𤾀","皰":"疱","皸":"皲","皺":"皱","盃":"杯","盜":"盗","盞":"盏","盡":"尽","監":"监","盤":"盘","盧":"卢","盨":"𪾔","盪":"荡","眝":"𪾣","眞":"真","眥":"眦","眾":"众","睍":"𪾢","睏":"困","睜":"睁","睞":"睐","瞘":"眍","瞜":"䁖","瞞":"瞒","瞤":"𥆧","瞭":"瞭","瞶":"瞆","瞼":"睑","矇":"蒙","矉":"𪾸","矑":"𪾦","矓":"眬","矚":"瞩","矯":"矫","硃":"朱","硜":"硁","硤":"硖","硨":"砗","硯":"砚","碕":"埼","碙":"𥐻","碩":"硕","碭":"砀","碸":"砜","確":"确","碼":"码","碽":"䂵","磑":"硙","磚":"砖","磠":"硵","磣":"碜","磧":"碛","磯":"矶","磽":"硗","磾":"䃅","礄":"硚","礆":"硷","礎":"础","礐":"𬒈","礒":"𥐟","礙":"碍","礦":"矿","礪":"砺","礫":"砾","礬":"矾","礮":"𪿫","礱":"砻","祇":"祇","祕":"秘","祿":"禄","禍":"祸","禎":"祯","禕":"祎","禡":"祃","禦":"御","禪":"禅","禮":"礼","禰":"祢","禱":"祷","禿":"秃","秈":"籼","稅":"税","稈":"秆","稏":"䅉","稜":"棱","稟":"禀","種":"种","稱":"称","穀":"谷","穇":"䅟","穌":"稣","積":"积","穎":"颖","穠":"秾","穡":"穑","穢":"秽","穩":"稳","穫":"获","穭":"穞","窩":"窝","窪":"洼","窮":"穷","窯":"窑","窵":"窎","窶":"窭","窺":"窥","竄":"窜","竅":"窍","竇":"窦","竈":"灶","竊":"窃","竚":"𥩟","竪":"竖","竱":"𫁟","競":"竞","筆":"笔","筍":"笋","筧":"笕","筴":"䇲","箇":"个","箋":"笺","箏":"筝","節":"节","範":"范","築":"筑","篋":"箧","篔":"筼","篘":"𥬠","篠":"筿","篢":"𬕂","篤":"笃","篩":"筛","篳":"筚","篸":"𥮾","簀":"箦","簂":"𫂆","簍":"篓","簑":"蓑","簞":"箪","簡":"简","簢":"𫂃","簣":"篑","簫":"箫","簹":"筜","簽":"签","簾":"帘","籃":"篮","籅":"𥫣","籋":"𥬞","籌":"筹","籔":"䉤","籙":"箓","籛":"篯","籜":"箨","籟":"籁","籠":"笼","籤":"签","籩":"笾","籪":"簖","籬":"篱","籮":"箩","籲":"吁","粵":"粤","糉":"粽","糝":"糁","糞":"粪","糧":"粮","糰":"团","糲":"粝","糴":"籴","糶":"粜","糹":"纟","糺":"𫄙","糾":"纠","紀":"纪","紂":"纣","紃":"𬘓","約":"约","紅":"红","紆":"纡","紇":"纥","紈":"纨","紉":"纫","紋":"纹","納":"纳","紐":"纽","紓":"纾","純":"纯","紕":"纰","紖":"纼","紗":"纱","紘":"纮","紙":"纸","級":"级","紛":"纷","紜":"纭","紝":"纴","紞":"𬘘","紟":"𫄛","紡":"纺","紬":"䌷","紮":"扎","細":"细","紱":"绂","紲":"绁","紳":"绅","紵":"纻","紹":"绍","紺":"绀","紼":"绋","紿":"绐","絀":"绌","絁":"𫄟","終":"终","絃":"弦","組":"组","絅":"䌹","絆":"绊","絍":"𫟃","絎":"绗","結":"结","絕":"绝","絙":"𫄠","絛":"绦","絝":"绔","絞":"绞","絡":"络","絢":"绚","絥":"𫄢","給":"给","絧":"𫄡","絨":"绒","絪":"𬘡","絰":"绖","統":"统","絲":"丝","絳":"绛","絶":"绝","絹":"绢","絺":"𫄨","綀":"𦈌","綁":"绑","綃":"绡","綄":"𬘫","綆":"绠","綇":"𦈋","綈":"绨","綉":"绣","綋":"𫟄","綌":"绤","綎":"𬘩","綏":"绥","綐":"䌼","綑":"捆","經":"经","綖":"𫄧","綜":"综","綝":"𬘭","綞":"缍","綟":"𫄫","綠":"绿","綡":"𫟅","綢":"绸","綣":"绻","綧":"𬘯","綪":"𬘬","綫":"线","綬":"绶","維":"维","綯":"绹","綰":"绾","綱":"纲","網":"网","綳":"绷","綴":"缀","綵":"彩","綸":"纶","綹":"绺","綺":"绮","綻":"绽","綽":"绰","綾":"绫","綿":"绵","緄":"绲","緇":"缁","緊":"紧","緋":"绯","緍":"𦈏","緑":"绿","緒":"绪","緓":"绬","緔":"绱","緗":"缃","緘":"缄","緙":"缂","線":"线","緝":"缉","緞":"缎","緟":"𫟆","締":"缔","緡":"缗","緣":"缘","緤":"𫄬","緦":"缌","編":"编","緩":"缓","緬":"缅","緮":"𫄭","緯":"纬","緰":"𦈕","緱":"缑","緲":"缈","練":"练","緶":"缏","緷":"𦈉","緸":"𦈑","緹":"缇","緻":"致","緼":"缊","縈":"萦","縉":"缙","縊":"缢","縋":"缒","縍":"𫄰","縎":"𦈔","縐":"绉","縑":"缣","縕":"缊","縗":"缞","縛":"缚","縝":"缜","縞":"缟","縟":"缛","縣":"县","縧":"绦","縫":"缝","縬":"𦈚","縭":"缡","縮":"缩","縯":"𬙂","縰":"𫄳","縱":"纵","縲":"缧","縳":"䌸","縴":"纤","縵":"缦","縶":"絷","縷":"缕","縸":"𫄲","縹":"缥","縺":"𦈐","總":"总","績":"绩","繂":"𫄴","繃":"绷","繅":"缫","繆":"缪","繈":"𫄶","繏":"𦈝","繐":"𰬸","繒":"缯","繓":"𦈛","織":"织","繕":"缮","繚":"缭","繞":"绕","繟":"𦈎","繡":"绣","繢":"缋","繨":"𫄤","繩":"绳","繪":"绘","繫":"系","繬":"𫄱","繭":"茧","繮":"缰","繯":"缳","繰":"缲","繳":"缴","繶":"𫄷","繷":"𫄣","繸":"䍁","繹":"绎","繻":"𦈡","繼":"继","繽":"缤","繾":"缱","繿":"䍀","纁":"𫄸","纆":"𬙊","纇":"颣","纈":"缬","纊":"纩","續":"续","纍":"累","纏":"缠","纓":"缨","纔":"才","纕":"𬙋","纖":"纤","纗":"𫄹","纘":"缵","纚":"𫄥","纜":"缆","缽":"钵","罃":"䓨","罈":"坛","罌":"罂","罎":"坛","罰":"罚","罵":"骂","罷":"罢","羅":"罗","羆":"罴","羈":"羁","羋":"芈","羣":"群","羥":"羟","羨":"羡","義":"义","羵":"𫅗","羶":"膻","習":"习","翫":"玩","翬":"翚","翹":"翘","翽":"翙","耬":"耧","耮":"耢","聖":"圣","聞":"闻","聯":"联","聰":"聪","聲":"声","聳":"耸","聵":"聩","聶":"聂","職":"职","聹":"聍","聻":"𫆏","聽":"听","聾":"聋","肅":"肃","脅":"胁","脈":"脉","脛":"胫","脣":"唇","脥":"𣍰","脩":"修","脫":"脱","脹":"胀","腎":"肾","腖":"胨","腡":"脶","腦":"脑","腪":"𣍯","腫":"肿","腳":"脚","腸":"肠","膃":"腽","膕":"腘","膚":"肤","膞":"䏝","膠":"胶","膢":"𦝼","膩":"腻","膹":"𪱥","膽":"胆","膾":"脍","膿":"脓","臉":"脸","臍":"脐","臏":"膑","臗":"𣎑","臘":"腊","臚":"胪","臟":"脏","臠":"脔","臢":"臜","臥":"卧","臨":"临","臺":"台","與":"与","興":"兴","舉":"举","舊":"旧","舘":"馆","艙":"舱","艣":"𫇛","艤":"舣","艦":"舰","艫":"舻","艱":"艰","艷":"艳","芻":"刍","苧":"苎","茲":"兹","荊":"荆","莊":"庄","莖":"茎","莢":"荚","莧":"苋","菕":"𰰨","華":"华","菴":"庵","菸":"烟","萇":"苌","萊":"莱","萬":"万","萴":"荝","萵":"莴","葉":"叶","葒":"荭","葝":"𫈎","葤":"荮","葦":"苇","葯":"药","葷":"荤","蒍":"𫇭","蒐":"搜","蒓":"莼","蒔":"莳","蒕":"蒀","蒞":"莅","蒭":"𫇴","蒼":"苍","蓀":"荪","蓆":"席","蓋":"盖","蓧":"𦰏","蓮":"莲","蓯":"苁","蓴":"莼","蓽":"荜","蔄":"𬜬","蔔":"卜","蔘":"参","蔞":"蒌","蔣":"蒋","蔥":"葱","蔦":"茑","蔭":"荫","蔯":"𫈟","蔿":"𫇭","蕁":"荨","蕆":"蒇","蕎":"荞","蕒":"荬","蕓":"芸","蕕":"莸","蕘":"荛","蕝":"𫈵","蕢":"蒉","蕩":"荡","蕪":"芜","蕭":"萧","蕳":"𫈉","蕷":"蓣","蕽":"𫇽","薀":"蕰","薆":"𫉁","薈":"荟","薊":"蓟","薌":"芗","薑":"姜","薔":"蔷","薘":"荙","薟":"莶","薦":"荐","薩":"萨","薳":"䓕","薴":"苧","薵":"䓓","薹":"苔","薺":"荠","藉":"藉","藍":"蓝","藎":"荩","藝":"艺","藥":"药","藪":"薮","藭":"䓖","藴":"蕴","藶":"苈","藷":"𫉄","藹":"蔼","藺":"蔺","蘀":"萚","蘄":"蕲","蘆":"芦","蘇":"苏","蘊":"蕴","蘋":"苹","蘚":"藓","蘞":"蔹","蘟":"𦻕","蘢":"茏","蘭":"兰","蘺":"蓠","蘿":"萝","虆":"蔂","虉":"𬟁","處":"处","虛":"虚","虜":"虏","號":"号","虧":"亏","虯":"虬","蛺":"蛱","蛻":"蜕","蜆":"蚬","蝀":"𬟽","蝕":"蚀","蝟":"猬","蝦":"虾","蝨":"虱","蝸":"蜗","螄":"蛳","螞":"蚂","螢":"萤","螮":"䗖","螻":"蝼","螿":"螀","蟂":"𫋇","蟄":"蛰","蟈":"蝈","蟎":"螨","蟘":"𫋌","蟜":"𫊸","蟣":"虮","蟬":"蝉","蟯":"蛲","蟲":"虫","蟳":"𫊻","蟶":"蛏","蟻":"蚁","蠀":"𧏗","蠁":"蚃","蠅":"蝇","蠆":"虿","蠍":"蝎","蠐":"蛴","蠑":"蝾","蠔":"蚝","蠙":"𧏖","蠟":"蜡","蠣":"蛎","蠦":"𫊮","蠨":"蟏","蠱":"蛊","蠶":"蚕","蠻":"蛮","蠾":"𧑏","衆":"众","衊":"蔑","術":"术","衕":"同","衚":"胡","衛":"卫","衝":"冲","衹":"衹","袞":"衮","裊":"袅","裏":"里","補":"补","裝":"装","裡":"里","製":"制","複":"复","褌":"裈","褘":"袆","褲":"裤","褳":"裢","褸":"褛","褻":"亵","襀":"𫌀","襇":"裥","襉":"裥","襏":"袯","襓":"𫋹","襖":"袄","襗":"𫋷","襘":"𫋻","襝":"裣","襠":"裆","襤":"褴","襪":"袜","襬":"摆","襯":"衬","襰":"𧝝","襲":"袭","襴":"襕","襵":"𫌇","覆":"覆","覈":"核","見":"见","覎":"觃","規":"规","覓":"觅","視":"视","覘":"觇","覛":"𫌪","覡":"觋","覥":"觍","覦":"觎","親":"亲","覬":"觊","覯":"觏","覲":"觐","覷":"觑","覹":"𫌭","覺":"觉","覼":"𫌨","覽":"览","覿":"觌","觀":"观","觴":"觞","觶":"觯","觸":"触","訁":"讠","訂":"订","訃":"讣","計":"计","訊":"讯","訌":"讧","討":"讨","訏":"𬣙","訐":"讦","訑":"𫍙","訒":"讱","訓":"训","訕":"讪","訖":"讫","託":"托","記":"记","訛":"讹","訜":"𫍛","訝":"讶","訞":"𫍚","訟":"讼","訢":"䜣","訣":"诀","訥":"讷","訨":"𫟞","訩":"讻","訪":"访","設":"设","許":"许","訴":"诉","訶":"诃","診":"诊","註":"注","証":"证","詀":"𧮪","詁":"诂","詆":"诋","詊":"𫟟","詎":"讵","詐":"诈","詑":"𫍡","詒":"诒","詓":"𫍜","詔":"诏","評":"评","詖":"诐","詗":"诇","詘":"诎","詛":"诅","詝":"𬣞","詞":"词","詠":"咏","詡":"诩","詢":"询","詣":"诣","試":"试","詩":"诗","詪":"𬣳","詫":"诧","詬":"诟","詭":"诡","詮":"诠","詰":"诘","話":"话","該":"该","詳":"详","詵":"诜","詷":"𫍣","詼":"诙","詿":"诖","誂":"𫍥","誄":"诔","誅":"诛","誆":"诓","誇":"夸","誋":"𫍪","誌":"志","認":"认","誑":"诳","誒":"诶","誕":"诞","誘":"诱","誚":"诮","語":"语","誠":"诚","誡":"诫","誣":"诬","誤":"误","誥":"诰","誦":"诵","誨":"诲","說":"说","誫":"𫍨","説":"说","誰":"谁","課":"课","誳":"𫍮","誴":"𫟡","誶":"谇","誷":"𫍬","誹":"诽","誺":"𫍧","誼":"谊","誾":"訚","調":"调","諂":"谄","諄":"谆","談":"谈","諉":"诿","請":"请","諍":"诤","諏":"诹","諑":"诼","諒":"谅","諓":"𬣡","論":"论","諗":"谂","諛":"谀","諜":"谍","諝":"谞","諞":"谝","諟":"𬤊","諡":"谥","諢":"诨","諣":"𫍩","諤":"谔","諥":"𫍳","諦":"谛","諧":"谐","諫":"谏","諭":"谕","諮":"咨","諯":"𫍱","諰":"𫍰","諱":"讳","諲":"𬤇","諳":"谙","諴":"𫍯","諶":"谌","諷":"讽","諸":"诸","諺":"谚","諼":"谖","諾":"诺","謀":"谋","謁":"谒","謂":"谓","謄":"誊","謅":"诌","謆":"𫍸","謉":"𫍷","謊":"谎","謎":"谜","謏":"𫍲","謐":"谧","謔":"谑","謖":"谡","謗":"谤","謙":"谦","謚":"谥","講":"讲","謝":"谢","謠":"谣","謡":"谣","謨":"谟","謫":"谪","謬":"谬","謭":"谫","謯":"𫍹","謱":"𫍴","謳":"讴","謸":"𫍵","謹":"谨","謾":"谩","譁":"哗","譂":"𫟠","譅":"𰶎","譆":"𫍻","證":"证","譊":"𫍢","譎":"谲","譏":"讥","譑":"𫍤","譓":"𬤝","譖":"谮","識":"识","譙":"谯","譚":"谭","譜":"谱","譞":"𫍽","譟":"噪","譨":"𫍦","譫":"谵","譭":"毁","譯":"译","議":"议","譴":"谴","護":"护","譸":"诪","譽":"誉","譾":"谫","讀":"读","讅":"谉","變":"变","讋":"詟","讌":"䜩","讎":"雠","讒":"谗","讓":"让","讕":"谰","讖":"谶","讚":"赞","讜":"谠","讞":"谳","豈":"岂","豎":"竖","豐":"丰","豔":"艳","豬":"猪","豵":"𫎆","豶":"豮","貓":"猫","貗":"𫎌","貙":"䝙","貝":"贝","貞":"贞","貟":"贠","負":"负","財":"财","貢":"贡","貧":"贫","貨":"货","販":"贩","貪":"贪","貫":"贯","責":"责","貯":"贮","貰":"贳","貲":"赀","貳":"贰","貴":"贵","貶":"贬","買":"买","貸":"贷","貺":"贶","費":"费","貼":"贴","貽":"贻","貿":"贸","賀":"贺","賁":"贲","賂":"赂","賃":"赁","賄":"贿","賅":"赅","資":"资","賈":"贾","賊":"贼","賑":"赈","賒":"赊","賓":"宾","賕":"赇","賙":"赒","賚":"赉","賜":"赐","賝":"𫎩","賞":"赏","賟":"𧹖","賠":"赔","賡":"赓","賢":"贤","賣":"卖","賤":"贱","賦":"赋","賧":"赕","質":"质","賫":"赍","賬":"账","賭":"赌","賰":"䞐","賴":"赖","賵":"赗","賺":"赚","賻":"赙","購":"购","賽":"赛","賾":"赜","贃":"𧹗","贄":"贽","贅":"赘","贇":"赟","贈":"赠","贉":"𫎫","贊":"赞","贋":"赝","贍":"赡","贏":"赢","贐":"赆","贑":"𫎬","贓":"赃","贔":"赑","贖":"赎","贗":"赝","贚":"𫎦","贛":"赣","贜":"赃","赬":"赪","趕":"赶","趙":"赵","趨":"趋","趲":"趱","跡":"迹","踐":"践","踰":"逾","踴":"踊","蹌":"跄","蹔":"𫏐","蹕":"跸","蹟":"迹","蹠":"跖","蹣":"蹒","蹤":"踪","蹳":"𫏆","蹺":"跷","蹻":"𫏋","躂":"跶","躉":"趸","躊":"踌","躋":"跻","躍":"跃","躎":"䟢","躑":"踯","躒":"跞","躓":"踬","躕":"蹰","躘":"𨀁","躚":"跹","躝":"𨅬","躡":"蹑","躥":"蹿","躦":"躜","躪":"躏","軀":"躯","軉":"𨉗","車":"车","軋":"轧","軌":"轨","軍":"军","軏":"𫐄","軑":"轪","軒":"轩","軔":"轫","軕":"𫐅","軗":"𨐅","軛":"轭","軜":"𫐇","軝":"𬨂","軟":"软","軤":"轷","軨":"𫐉","軫":"轸","軬":"𫐊","軲":"轱","軷":"𫐈","軸":"轴","軹":"轵","軺":"轺","軻":"轲","軼":"轶","軾":"轼","軿":"𫐌","較":"较","輄":"𨐈","輅":"辂","輇":"辁","輈":"辀","載":"载","輊":"轾","輋":"𪨶","輒":"辄","輓":"挽","輔":"辅","輕":"轻","輖":"𫐏","輗":"𫐐","輛":"辆","輜":"辎","輝":"辉","輞":"辋","輟":"辍","輢":"𫐎","輥":"辊","輦":"辇","輨":"𫐑","輩":"辈","輪":"轮","輬":"辌","輮":"𫐓","輯":"辑","輳":"辏","輶":"𬨎","輷":"𫐒","輸":"输","輻":"辐","輼":"辒","輾":"辗","輿":"舆","轀":"辒","轂":"毂","轄":"辖","轅":"辕","轆":"辘","轇":"𫐖","轉":"转","轊":"𫐕","轍":"辙","轎":"轿","轐":"𫐗","轔":"辚","轗":"𫐘","轟":"轰","轠":"𫐙","轡":"辔","轢":"轹","轣":"𫐆","轤":"轳","辦":"办","辭":"辞","辮":"辫","辯":"辩","農":"农","迴":"回","逕":"迳","這":"这","連":"连","週":"周","進":"进","遊":"游","運":"运","過":"过","達":"达","違":"违","遙":"遥","遜":"逊","遞":"递","遠":"远","遡":"溯","適":"适","遱":"𫐷","遲":"迟","遷":"迁","選":"选","遺":"遗","遼":"辽","邁":"迈","還":"还","邇":"迩","邊":"边","邏":"逻","邐":"逦","郟":"郏","郵":"邮","鄆":"郓","鄉":"乡","鄒":"邹","鄔":"邬","鄖":"郧","鄟":"𫑘","鄧":"邓","鄩":"𬩽","鄭":"郑","鄰":"邻","鄲":"郸","鄳":"𫑡","鄴":"邺","鄶":"郐","鄺":"邝","酇":"酂","酈":"郦","醃":"腌","醖":"酝","醜":"丑","醞":"酝","醟":"蒏","醣":"糖","醫":"医","醬":"酱","醱":"酦","醲":"𬪩","醶":"𫑷","釀":"酿","釁":"衅","釃":"酾","釅":"酽","釋":"释","釐":"厘","釒":"钅","釓":"钆","釔":"钇","釕":"钌","釗":"钊","釘":"钉","釙":"钋","釚":"𫟲","針":"针","釟":"𫓥","釣":"钓","釤":"钐","釦":"扣","釧":"钏","釨":"𫓦","釩":"钒","釲":"𫟳","釳":"𨰿","釴":"𬬩","釵":"钗","釷":"钍","釹":"钕","釺":"钎","釾":"䥺","釿":"𬬱","鈀":"钯","鈁":"钫","鈃":"钘","鈄":"钭","鈅":"钥","鈆":"𫓪","鈇":"𫓧","鈈":"钚","鈉":"钠","鈋":"𨱂","鈍":"钝","鈎":"钩","鈐":"钤","鈑":"钣","鈒":"钑","鈔":"钞","鈕":"钮","鈖":"𫟴","鈗":"𫟵","鈛":"𫓨","鈞":"钧","鈠":"𨱁","鈡":"钟","鈣":"钙","鈥":"钬","鈦":"钛","鈧":"钪","鈮":"铌","鈯":"𨱄","鈰":"铈","鈲":"𨱃","鈳":"钶","鈴":"铃","鈷":"钴","鈸":"钹","鈹":"铍","鈺":"钰","鈽":"钸","鈾":"铀","鈿":"钿","鉀":"钾","鉁":"𨱅","鉅":"巨","鉆":"钻","鉈":"铊","鉉":"铉","鉊":"𬬿","鉋":"铇","鉍":"铋","鉑":"铂","鉔":"𫓬","鉕":"钷","鉗":"钳","鉚":"铆","鉛":"铅","鉝":"𫟷","鉞":"钺","鉠":"𫓭","鉢":"钵","鉤":"钩","鉥":"𬬸","鉦":"钲","鉧":"𬭁","鉬":"钼","鉭":"钽","鉮":"𬬹","鉳":"锫","鉶":"铏","鉷":"𫟹","鉸":"铰","鉺":"铒","鉻":"铬","鉽":"𫟸","鉾":"𫓴","鉿":"铪","銀":"银","銁":"𫓲","銂":"𫟻","銃":"铳","銅":"铜","銈":"𫓯","銊":"𫓰","銍":"铚","銏":"𫟶","銑":"铣","銓":"铨","銖":"铢","銘":"铭","銚":"铫","銛":"铦","銜":"衔","銠":"铑","銣":"铷","銥":"铱","銦":"铟","銨":"铵","銩":"铥","銪":"铕","銫":"铯","銬":"铐","銱":"铞","銳":"锐","銶":"𨱇","銷":"销","銹":"锈","銻":"锑","銼":"锉","鋁":"铝","鋂":"𰾄","鋃":"锒","鋅":"锌","鋇":"钡","鋉":"𨱈","鋌":"铤","鋏":"铗","鋐":"𬭎","鋒":"锋","鋗":"𫓶","鋙":"铻","鋝":"锊","鋟":"锓","鋠":"𫓵","鋣":"铘","鋤":"锄","鋥":"锃","鋦":"锔","鋨":"锇","鋩":"铓","鋪":"铺","鋭":"锐","鋮":"铖","鋯":"锆","鋰":"锂","鋱":"铽","鋶":"锍","鋸":"锯","鋹":"𬬮","鋼":"钢","錀":"𬬭","錁":"锞","錂":"𨱋","錄":"录","錆":"锖","錇":"锫","錈":"锩","錏":"铔","錐":"锥","錒":"锕","錕":"锟","錘":"锤","錙":"锱","錚":"铮","錛":"锛","錜":"𫓻","錝":"𫓽","錞":"𬭚","錟":"锬","錠":"锭","錡":"锜","錢":"钱","錤":"𫓹","錥":"𫓾","錦":"锦","錨":"锚","錩":"锠","錫":"锡","錮":"锢","錯":"错","録":"录","錳":"锰","錶":"表","錸":"铼","錼":"镎","錽":"𫓸","鍀":"锝","鍁":"锨","鍃":"锪","鍄":"𨱉","鍅":"钫","鍆":"钔","鍇":"锴","鍈":"锳","鍉":"𫔂","鍊":"炼","鍋":"锅","鍍":"镀","鍒":"𫔄","鍔":"锷","鍘":"铡","鍚":"钖","鍛":"锻","鍠":"锽","鍤":"锸","鍥":"锲","鍩":"锘","鍬":"锹","鍭":"𬭤","鍮":"𨱎","鍰":"锾","鍵":"键","鍶":"锶","鍺":"锗","鍼":"针","鍾":"钟","鎂":"镁","鎄":"锿","鎇":"镅","鎈":"𫟿","鎊":"镑","鎌":"镰","鎍":"𫔅","鎓":"𬭩","鎔":"镕","鎖":"锁","鎘":"镉","鎙":"𫔈","鎚":"锤","鎛":"镈","鎝":"𨱏","鎞":"𫔇","鎡":"镃","鎢":"钨","鎣":"蓥","鎦":"镏","鎧":"铠","鎩":"铩","鎪":"锼","鎬":"镐","鎭":"镇","鎮":"镇","鎯":"𨱍","鎰":"镒","鎲":"镋","鎳":"镍","鎵":"镓","鎶":"鿔","鎷":"𨰾","鎸":"镌","鎿":"镎","鏃":"镞","鏆":"𨱌","鏇":"旋","鏈":"链","鏉":"𨱒","鏌":"镆","鏍":"镙","鏏":"𬭬","鏐":"镠","鏑":"镝","鏗":"铿","鏘":"锵","鏚":"𬭭","鏜":"镗","鏝":"镘","鏞":"镛","鏟":"铲","鏡":"镜","鏢":"镖","鏤":"镂","鏥":"𫔊","鏦":"𫓩","鏨":"錾","鏰":"镚","鏵":"铧","鏷":"镤","鏹":"镪","鏺":"䥽","鏻":"𬭸","鏽":"锈","鏾":"𫔌","鐃":"铙","鐄":"𨱑","鐇":"𫔍","鐈":"𫓱","鐋":"铴","鐍":"𫔎","鐎":"𨱓","鐏":"𨱔","鐐":"镣","鐒":"铹","鐓":"镦","鐔":"镡","鐘":"钟","鐙":"镫","鐝":"镢","鐠":"镨","鐥":"䦅","鐦":"锎","鐧":"锏","鐨":"镄","鐩":"𬭼","鐪":"𫓺","鐫":"镌","鐮":"镰","鐯":"䦃","鐲":"镯","鐳":"镭","鐵":"铁","鐶":"镮","鐸":"铎","鐺":"铛","鐼":"𫔁","鐽":"𫟼","鐿":"镱","鑀":"𰾭","鑄":"铸","鑉":"𫠁","鑊":"镬","鑌":"镔","鑑":"鉴","鑒":"鉴","鑔":"镲","鑕":"锧","鑞":"镴","鑠":"铄","鑣":"镳","鑥":"镥","鑪":"𬬻","鑭":"镧","鑰":"钥","鑱":"镵","鑲":"镶","鑴":"𫔔","鑷":"镊","鑹":"镩","鑼":"锣","鑽":"钻","鑾":"銮","鑿":"凿","钁":"镢","钂":"镋","長":"长","門":"门","閂":"闩","閃":"闪","閆":"闫","閈":"闬","閉":"闭","開":"开","閌":"闶","閍":"𨸂","閎":"闳","閏":"闰","閐":"𨸃","閑":"闲","閒":"闲","間":"间","閔":"闵","閗":"𫔯","閘":"闸","閝":"𫠂","閞":"𫔰","閡":"阂","閣":"阁","閤":"合","閥":"阀","閨":"闺","閩":"闽","閫":"阃","閬":"阆","閭":"闾","閱":"阅","閲":"阅","閵":"𫔴","閶":"阊","閹":"阉","閻":"阎","閼":"阏","閽":"阍","閾":"阈","閿":"阌","闃":"阒","闆":"板","闇":"暗","闈":"闱","闉":"𬮱","闊":"阔","闋":"阕","闌":"阑","闍":"阇","闐":"阗","闑":"𫔶","闒":"阘","闓":"闿","闔":"阖","闕":"阙","闖":"闯","關":"关","闞":"阚","闠":"阓","闡":"阐","闢":"辟","闤":"阛","闥":"闼","阪":"阪","陘":"陉","陝":"陕","陞":"升","陣":"阵","陰":"阴","陳":"陈","陸":"陆","陽":"阳","隉":"陧","隊":"队","階":"阶","隑":"𬮿","隕":"陨","際":"际","隤":"𬯎","隨":"随","險":"险","隮":"𬯀","隯":"陦","隱":"隐","隴":"陇","隸":"隶","隻":"只","雋":"隽","雖":"虽","雙":"双","雛":"雏","雜":"杂","雞":"鸡","離":"离","難":"难","雲":"云","電":"电","霑":"沾","霢":"霡","霣":"𫕥","霧":"雾","霼":"𪵣","霽":"霁","靂":"雳","靄":"霭","靆":"叇","靈":"灵","靉":"叆","靚":"靓","靜":"静","靝":"靔","靦":"腼","靧":"𫖃","靨":"靥","鞏":"巩","鞝":"绱","鞦":"秋","鞽":"鞒","鞾":"𫖇","韁":"缰","韃":"鞑","韆":"千","韉":"鞯","韋":"韦","韌":"韧","韍":"韨","韓":"韩","韙":"韪","韚":"𫠅","韛":"𫖔","韜":"韬","韝":"鞲","韞":"韫","韠":"𫖒","韻":"韵","響":"响","頁":"页","頂":"顶","頃":"顷","項":"项","順":"顺","頇":"顸","須":"须","頊":"顼","頌":"颂","頍":"𫠆","頎":"颀","頏":"颃","預":"预","頑":"顽","頒":"颁","頓":"顿","頔":"𬱖","頗":"颇","領":"领","頜":"颌","頠":"𬱟","頡":"颉","頤":"颐","頦":"颏","頫":"𫖯","頭":"头","頮":"颒","頰":"颊","頲":"颋","頴":"颕","頵":"𫖳","頷":"颔","頸":"颈","頹":"颓","頻":"频","頽":"颓","顂":"𩓋","顃":"𩖖","顅":"𫖶","顆":"颗","題":"题","額":"额","顎":"颚","顏":"颜","顒":"颙","顓":"颛","顔":"颜","顗":"𫖮","願":"愿","顙":"颡","顛":"颠","類":"类","顢":"颟","顣":"𫖹","顥":"颢","顧":"顾","顫":"颤","顬":"颥","顯":"显","顰":"颦","顱":"颅","顳":"颞","顴":"颧","風":"风","颭":"飐","颮":"飑","颯":"飒","颰":"𩙥","颱":"台","颳":"刮","颶":"飓","颷":"𩙪","颸":"飔","颺":"飏","颻":"飖","颼":"飕","颾":"𩙫","飀":"飗","飄":"飘","飆":"飙","飈":"飚","飋":"𫗋","飛":"飞","飠":"饣","飢":"饥","飣":"饤","飥":"饦","飦":"𫗞","飩":"饨","飪":"饪","飫":"饫","飭":"饬","飯":"饭","飱":"飧","飲":"饮","飴":"饴","飵":"𫗢","飶":"𫗣","飼":"饲","飽":"饱","飾":"饰","飿":"饳","餃":"饺","餄":"饸","餅":"饼","餈":"糍","餉":"饷","養":"养","餌":"饵","餎":"饹","餏":"饻","餑":"饽","餒":"馁","餓":"饿","餔":"𫗦","餕":"馂","餖":"饾","餗":"𫗧","餘":"余","餚":"肴","餛":"馄","餜":"馃","餞":"饯","餡":"馅","餦":"𫗠","餧":"𫗪","館":"馆","餪":"𫗬","餫":"𫗥","餬":"糊","餭":"𫗮","餱":"糇","餳":"饧","餵":"喂","餶":"馉","餷":"馇","餸":"𩠌","餺":"馎","餼":"饩","餾":"馏","餿":"馊","饁":"馌","饃":"馍","饅":"馒","饈":"馐","饉":"馑","饊":"馓","饋":"馈","饌":"馔","饑":"饥","饒":"饶","饗":"飨","饘":"𫗴","饜":"餍","饞":"馋","饟":"𫗵","饠":"𫗩","饢":"馕","馬":"马","馭":"驭","馮":"冯","馯":"𫘛","馱":"驮","馳":"驰","馴":"驯","馹":"驲","馼":"𫘜","駁":"驳","駃":"𫘝","駉":"𬳶","駊":"𫘟","駎":"𩧨","駐":"驻","駑":"驽","駒":"驹","駓":"𬳵","駔":"驵","駕":"驾","駘":"骀","駙":"驸","駚":"𩧫","駛":"驶","駝":"驼","駞":"𫘞","駟":"驷","駡":"骂","駢":"骈","駤":"𫘠","駧":"𩧲","駩":"𩧴","駪":"𬳽","駫":"𫘡","駭":"骇","駰":"骃","駱":"骆","駶":"𩧺","駸":"骎","駻":"𫘣","駼":"𬳿","駿":"骏","騁":"骋","騂":"骍","騃":"𫘤","騄":"𫘧","騅":"骓","騉":"𫘥","騊":"𫘦","騌":"骔","騍":"骒","騎":"骑","騏":"骐","騑":"𬴂","騔":"𩨀","騖":"骛","騙":"骗","騚":"𩨊","騜":"𫘩","騝":"𩨃","騞":"𬴃","騟":"𩨈","騠":"𫘨","騤":"骙","騧":"䯄","騪":"𩨄","騫":"骞","騭":"骘","騮":"骝","騰":"腾","騱":"𫘬","騴":"𫘫","騵":"𫘪","騶":"驺","騷":"骚","騸":"骟","騻":"𫘭","騼":"𫠋","騾":"骡","驀":"蓦","驁":"骜","驂":"骖","驃":"骠","驄":"骢","驅":"驱","驊":"骅","驋":"𩧯","驌":"骕","驍":"骁","驎":"𬴊","驏":"骣","驓":"𫘯","驕":"骄","驗":"验","驙":"𫘰","驚":"惊","驛":"驿","驟":"骤","驢":"驴","驤":"骧","驥":"骥","驦":"骦","驨":"𫘱","驪":"骊","驫":"骉","骯":"肮","髏":"髅","髒":"脏","體":"体","髕":"髌","髖":"髋","髮":"发","鬆":"松","鬍":"胡","鬖":"𩭹","鬚":"须","鬠":"𫘽","鬢":"鬓","鬥":"斗","鬧":"闹","鬨":"哄","鬩":"阋","鬮":"阄","鬱":"郁","鬹":"鬶","魎":"魉","魘":"魇","魚":"鱼","魛":"鱽","魟":"𫚉","魢":"鱾","魥":"𩽹","魦":"𫚌","魨":"鲀","魯":"鲁","魴":"鲂","魵":"𫚍","魷":"鱿","魺":"鲄","魽":"𫠐","鮀":"𬶍","鮁":"鲅","鮃":"鲆","鮄":"𫚒","鮅":"𫚑","鮆":"𫚖","鮈":"𬶋","鮊":"鲌","鮋":"鲉","鮍":"鲏","鮎":"鲇","鮐":"鲐","鮑":"鲍","鮒":"鲋","鮓":"鲊","鮚":"鲒","鮜":"鲘","鮝":"鲞","鮞":"鲕","鮟":"𩽾","鮠":"𬶏","鮡":"𬶐","鮣":"䲟","鮤":"𫚓","鮦":"鲖","鮪":"鲔","鮫":"鲛","鮭":"鲑","鮮":"鲜","鮯":"𫚗","鮰":"𫚔","鮳":"鲓","鮵":"𫚛","鮶":"鲪","鮸":"3","鮺":"鲝","鮿":"𫚚","鯀":"鲧","鯁":"鲠","鯄":"𩾁","鯆":"𫚙","鯇":"鲩","鯉":"鲤","鯊":"鲨","鯒":"鲬","鯔":"鲻","鯕":"鲯","鯖":"鲭","鯗":"鲞","鯛":"鲷","鯝":"鲴","鯞":"𫚡","鯡":"鲱","鯢":"鲵","鯤":"鲲","鯧":"鲳","鯨":"鲸","鯪":"鲮","鯫":"鲰","鯬":"𫚞","鯰":"鲶","鯱":"𩾇","鯴":"鲺","鯶":"𩽼","鯷":"鳀","鯻":"𬶟","鯽":"鲫","鯾":"𫚣","鯿":"鳊","鰁":"鳈","鰂":"鲗","鰃":"鳂","鰆":"䲠","鰈":"鲽","鰉":"鳇","鰊":"𬶠","鰋":"𫚢","鰌":"䲡","鰍":"鳅","鰏":"鲾","鰐":"鳄","鰑":"𫚊","鰒":"鳆","鰓":"鳃","鰕":"𫚥","鰛":"鳁","鰜":"鳒","鰟":"鳑","鰠":"鳋","鰣":"鲥","鰤":"𫚕","鰥":"鳏","鰦":"𫚤","鰧":"䲢","鰨":"鳎","鰩":"鳐","鰫":"𫚦","鰭":"鳍","鰮":"鳁","鰱":"鲢","鰲":"鳌","鰳":"鳓","鰵":"鳘","鰶":"𬶭","鰷":"鲦","鰹":"鲣","鰺":"鲹","鰻":"鳗","鰼":"鳛","鰽":"𫚧","鰾":"鳔","鱀":"𬶨","鱂":"鳉","鱄":"𫚋","鱅":"鳙","鱆":"𫠒","鱇":"𩾌","鱈":"鳕","鱉":"鳖","鱊":"𫚪","鱒":"鳟","鱔":"鳝","鱖":"鳜","鱗":"鳞","鱘":"鲟","鱚":"𬶮","鱝":"鲼","鱟":"鲎","鱠":"鲙","鱢":"𫚫","鱣":"鳣","鱤":"鳡","鱧":"鳢","鱨":"鲿","鱭":"鲚","鱮":"𫚈","鱯":"鳠","鱲":"𫚭","鱷":"鳄","鱸":"鲈","鱺":"鲡","鳥":"鸟","鳧":"凫","鳩":"鸠","鳬":"凫","鳲":"鸤","鳳":"凤","鳴":"鸣","鳶":"鸢","鳷":"𫛛","鳼":"𪉃","鳽":"𫛚","鳾":"䴓","鴀":"𫛜","鴃":"𫛞","鴅":"𫛝","鴆":"鸩","鴇":"鸨","鴉":"鸦","鴐":"𫛤","鴒":"鸰","鴔":"𫛡","鴕":"鸵","鴗":"𫁡","鴛":"鸳","鴜":"𪉈","鴝":"鸲","鴞":"鸮","鴟":"鸱","鴣":"鸪","鴥":"𫛣","鴦":"鸯","鴨":"鸭","鴮":"𫛦","鴯":"鸸","鴰":"鸹","鴲":"𪉆","鴳":"𫛩","鴴":"鸻","鴷":"䴕","鴻":"鸿","鴽":"𫛪","鴿":"鸽","鵁":"䴔","鵂":"鸺","鵃":"鸼","鵊":"𫛥","鵏":"𬷕","鵐":"鹀","鵑":"鹃","鵒":"鹆","鵓":"鹁","鵚":"𪉍","鵜":"鹈","鵝":"鹅","鵟":"𫛭","鵠":"鹄","鵡":"鹉","鵧":"𫛨","鵩":"𫛳","鵪":"鹌","鵫":"𫛱","鵬":"鹏","鵮":"鹐","鵯":"鹎","鵰":"雕","鵲":"鹊","鵷":"鹓","鵾":"鹍","鶄":"䴖","鶇":"鸫","鶉":"鹑","鶊":"鹒","鶌":"𫛵","鶒":"𫛶","鶓":"鹋","鶖":"鹙","鶗":"𫛸","鶘":"鹕","鶚":"鹗","鶠":"𬸘","鶡":"鹖","鶥":"鹛","鶦":"𫛷","鶩":"鹜","鶪":"䴗","鶬":"鸧","鶭":"𫛯","鶯":"莺","鶰":"𫛫","鶱":"𬸣","鶲":"鹟","鶴":"鹤","鶹":"鹠","鶺":"鹡","鶻":"鹘","鶼":"鹣","鶿":"鹚","鷀":"鹚","鷁":"鹢","鷂":"鹞","鷄":"鸡","鷅":"𫛽","鷉":"䴘","鷊":"鹝","鷐":"𫜀","鷓":"鹧","鷔":"𪉑","鷖":"鹥","鷗":"鸥","鷙":"鸷","鷚":"鹨","鷟":"𬸦","鷣":"𫜃","鷤":"𫛴","鷥":"鸶","鷦":"鹪","鷨":"𪉊","鷩":"𫜁","鷫":"鹔","鷭":"𬸪","鷯":"鹩","鷲":"鹫","鷳":"鹇","鷴":"鹇","鷷":"𫜄","鷸":"鹬","鷹":"鹰","鷺":"鹭","鷽":"鸴","鷿":"𬸯","鸂":"㶉","鸇":"鹯","鸊":"䴙","鸋":"𫛢","鸌":"鹱","鸏":"鹲","鸑":"𬸚","鸕":"鸬","鸗":"𫛟","鸘":"鹴","鸚":"鹦","鸛":"鹳","鸝":"鹂","鸞":"鸾","鹵":"卤","鹹":"咸","鹺":"鹾","鹼":"碱","鹽":"盐","麗":"丽","麥":"麦","麨":"𪎊","麩":"麸","麪":"面","麫":"面","麬":"𤿲","麯":"曲","麲":"𪎉","麳":"𪎌","麴":"曲","麵":"面","麷":"𫜑","麼":"么","麽":"么","黃":"黄","黌":"黉","點":"点","黨":"党","黲":"黪","黴":"霉","黶":"黡","黷":"黩","黽":"黾","黿":"鼋","鼂":"鼌","鼉":"鼍","鼕":"冬","鼴":"鼹","齊":"齐","齋":"斋","齎":"赍","齏":"齑","齒":"齿","齔":"龀","齕":"龁","齗":"龂","齘":"𬹼","齙":"龅","齜":"龇","齟":"龃","齠":"龆","齡":"龄","齣":"出","齦":"龈","齧":"啮","齩":"𫜪","齪":"龊","齬":"龉","齭":"𫜭","齮":"𬺈","齯":"𫠜","齰":"𫜬","齲":"龋","齴":"𫜮","齶":"腭","齷":"龌","齼":"𬺓","齾":"𫜰","龍":"龙","龎":"厐","龐":"庞","龑":"䶮","龓":"𫜲","龔":"龚","龕":"龛","龜":"龟","龭":"𩨎","龯":"𨱆","鿁":"䜤","鿓":"鿒","𠁞":"𠀾","𠌥":"𠆿","𠏢":"𠉗","𠐊":"𫝋","𠗣":"㓆","𠞆":"𠛆","𠠎":"𠚳","𠬙":"𪠡","𠽃":"𪠺","𠿕":"𪜎","𡂡":"𪢒","𡃄":"𪡺","𡃕":"𠴛","𡃤":"𪢐","𡄔":"𠴢","𡄣":"𠵸","𡅏":"𠲥","𡅯":"𪢖","𡑍":"𫭼","𡑭":"𡋗","𡓁":"𪤄","𡓾":"𡋀","𡔖":"𡍣","𡞵":"㛟","𡟫":"𫝪","𡠹":"㛿","𡢃":"㛠","𡮉":"𡭜","𡮣":"𡭬","𡳳":"𡳃","𡸗":"𪨩","𡹬":"𪨹","𡻕":"岁","𡽗":"𡸃","𡾱":"㟜","𡿖":"𪩛","𢍰":"𪪴","𢠼":"𢙑","𢣐":"𪬚","𢣚":"𢘝","𢣭":"𢘞","𢤩":"𪫡","𢤱":"𢘙","𢤿":"𪬯","𢯷":"𪭝","𢶒":"𪭯","𢶫":"𢫞","𢷮":"𢫊","𢹿":"𢬦","𢺳":"𪮳","𣈶":"暅","𣋋":"𣈣","𣍐":"𫧃","𣙎":"㭣","𣜬":"𪳗","𣝕":"𣘷","𣞻":"𣘓","𣠩":"𣞎","𣠲":"𣑶","𣯩":"𣯣","𣯴":"𣭤","𣯶":"毶","𣽏":"𪶮","𣾷":"㳢","𣿉":"𣶫","𤁣":"𣺽","𤄷":"𪶒","𤅶":"𣷷","𤑳":"𤎻","𤑹":"𪹀","𤒎":"𤊀","𤒻":"𪹹","𤓌":"𪹠","𤓎":"𤎺","𤓩":"𤊰","𤘀":"𪺣","𤛮":"𤙯","𤛱":"𫞢","𤜆":"𪺪","𤠮":"𪺸","𤢟":"𤝢","𤢻":"𢢐","𤩂":"𫞧","𤪺":"㻘","𤫩":"㻏","𤬅":"𪼴","𤳷":"𪽝","𤳸":"𤳄","𤷃":"𪽭","𤸫":"𤶧","𤺔":"𪽴","𥊝":"𥅿","𥌃":"𥅘","𥏝":"𪿊","𥕥":"𥐰","𥖅":"𥐯","𥖲":"𪿞","𥗇":"𪿵","𥗽":"𬒗","𥜐":"𫀓","𥜰":"𫀌","𥞵":"𥞦","𥢢":"䅪","𥢶":"𫞷","𥢷":"𫀮","𥨐":"𥧂","𥪂":"𥩺","𥯤":"𫁳","𥴨":"𫂖","𥴼":"𫁺","𥵃":"𥱔","𥵊":"𥭉","𥶽":"𫁱","𥸠":"𥮋","𥻦":"𫂿","𥼽":"𥹥","𥽖":"𥺇","𥾯":"𫄝","𥿊":"𦈈","𦀖":"𫄦","𦂅":"𦈒","𦃄":"𦈗","𦃩":"𫄯","𦅇":"𫄪","𦅈":"𫄵","𦆲":"𫟇","𦒀":"𫅥","𦔖":"𫅼","𦘧":"𡳒","𦟼":"𫆝","𦠅":"𫞅","𦡝":"𫆫","𦢈":"𣍨","𦣎":"𦟗","𦧺":"𫇘","𦪙":"䑽","𦪽":"𦨩","𦱌":"𫇪","𦾟":"𦶻","𧎈":"𧌥","𧒯":"𫊹","𧔥":"𧒭","𧕟":"𧉐","𧜗":"䘞","𧜵":"䙊","𧝞":"䘛","𧞫":"𫌋","𧟀":"𧝧","𧡴":"𫌫","𧢄":"𫌬","𧦝":"𫍞","𧦧":"𫍟","𧩕":"𫍭","𧩙":"𬣥","𧩼":"𫍶","𧫝":"𫍺","𧬤":"𫍼","𧭈":"𫍾","𧭹":"𫍐","𧳟":"𧳕","𧵳":"䞌","𧶔":"𧹓","𧶧":"䞎","𧷎":"𪠀","𧸘":"𫎨","𧹈":"𪥠","𧽯":"𫎸","𨂐":"𫏌","𨄣":"𨀱","𨅍":"𨁴","𨆪":"𫏕","𨇁":"𧿈","𨇞":"𨅫","𨇤":"𫏨","𨇰":"𫏞","𨇽":"𫏑","𨈊":"𨂺","𨈌":"𨄄","𨊰":"䢀","𨊸":"䢁","𨊻":"𨐆","𨋢":"䢂","𨌈":"𫐍","𨍰":"𫐔","𨎌":"𫐋","𨎮":"𨐉","𨏠":"𨐇","𨏥":"𨐊","𨞺":"𫟫","𨟊":"𫟬","𨢿":"𨡙","𨣈":"𨡺","𨣞":"𨟳","𨣧":"𨠨","𨤻":"𨤰","𨥛":"𨱀","𨥟":"𫓫","𨦫":"䦀","𨧀":"𬭊","𨧜":"䦁","𨧰":"𫟽","𨧱":"𨱊","𨨏":"𬭛","𨨛":"𫓼","𨨢":"𫓽","𨩰":"𫟾","𨪕":"𫓮","𨫒":"𨱐","𨬖":"𫔏","𨭆":"𬭶","𨭎":"𬭳","𨭖":"𫔑","𨭸":"𫔐","𨮂":"𨱕","𨮳":"𫔒","𨯅":"䥿","𨯟":"𫔓","𨰃":"𫔉","𨰋":"𫓳","𨰥":"𫔕","𨰲":"𫔃","𨲳":"𫔖","𨳑":"𨸁","𨳕":"𨸀","𨴗":"𨸅","𨴹":"𫔲","𨵩":"𨸆","𨵸":"𨸇","𨶀":"𨸉","𨶏":"𨸊","𨶮":"𨸌","𨶲":"𨸋","𨷲":"𨸎","𨼳":"𫔽","𨽏":"𨸘","𩀨":"𫕚","𩅙":"𫕨","𩎖":"𫖑","𩎢":"𩏾","𩏂":"𫖓","𩏠":"𫖖","𩏪":"𩏽","𩏷":"𫃗","𩑔":"𫖪","𩒎":"𫖭","𩓣":"𩖕","𩓥":"𫖵","𩔑":"𫖷","𩔳":"𫖴","𩖰":"𫠇","𩗀":"𩙦","𩗓":"𫗈","𩗴":"𫗉","𩘀":"𩙩","𩘝":"𩙭","𩘹":"𩙨","𩘺":"𩙬","𩙈":"𩙰","𩚛":"𩟿","𩚥":"𩠀","𩚩":"𫗡","𩚵":"𩠁","𩛆":"𩠂","𩛌":"𫗤","𩛡":"𫗨","𩛩":"𩠃","𩜇":"𩠉","𩜦":"𩠆","𩜵":"𩠊","𩝔":"𩠋","𩝽":"𫗳","𩞄":"𩠎","𩞦":"𩠏","𩞯":"䭪","𩟐":"𩠅","𩟗":"𫗚","𩠴":"𩠠","𩡣":"𩡖","𩡺":"𩧦","𩢡":"𩧬","𩢴":"𩧵","𩢸":"𩧳","𩢾":"𩧮","𩣏":"𩧶","𩣑":"䯃","𩣫":"𩧸","𩣵":"𩧻","𩣺":"𩧼","𩤊":"𩧩","𩤙":"𩨆","𩤲":"𩨉","𩤸":"𩨅","𩥄":"𩨋","𩥇":"𩨍","𩥉":"𩧱","𩥑":"𩨌","𩦠":"𫠌","𩧆":"𩨐","𩭙":"𩬣","𩯁":"𫙂","𩯳":"𩯒","𩰀":"𩬤","𩰹":"𩰰","𩳤":"𩲒","𩴵":"𩴌","𩵦":"𫠏","𩵩":"𩽺","𩵹":"𩽻","𩶁":"𫚎","𩶘":"䲞","𩶰":"𩽿","𩶱":"𩽽","𩷰":"𩾄","𩸃":"𩾅","𩸄":"𫚝","𩸡":"𫚟","𩸦":"𩾆","𩻗":"𫚨","𩻬":"𫚩","𩻮":"𫚘","𩼶":"𫚬","𩽇":"𩾎","𩿅":"𫠖","𩿤":"𫛠","𩿪":"𪉄","𪀖":"𫛧","𪀦":"𪉅","𪀾":"𪉋","𪁈":"𪉉","𪁖":"𪉌","𪂆":"𪉎","𪃍":"𪉐","𪃏":"𪉏","𪃒":"𫛻","𪃧":"𫛹","𪄆":"𪉔","𪄕":"𪉒","𪅂":"𫜂","𪆷":"𫛾","𪇳":"𪉕","𪈼":"𱊜","𪉸":"𫜊","𪋿":"𫧮","𪌭":"𫜓","𪍠":"𫜕","𪓰":"𫜟","𪔵":"𪔭","𪘀":"𪚏","𪘯":"𪚐","𪙏":"𫜯","𪟖":"𠛾","𪷓":"𣶭","𫒡":"𫓷","𫜦":"𫜫"};function De(e,t){var n,i,r,o,s="";if(o=t?xe:Qe,"string"!=typeof e)return e;for(n=0;n13312&&r<40899||r>63744&&r<64106)){s+=i;continue}let t=o[i];s+=t||i}return s}var Se=function(e){return De(e,!0)},ke=function(e){return De(e,!1)};let Me=["章","节","回","節","卷","部","輯","辑","話","集","话","篇"," "," "],Fe=[],Ye=["CHAPTER","Chapter","序章","前言","声明","写在前面的话","后记","楔子","后序","章节目录","尾声","聲明","寫在前面的話","後記","後序","章節目錄","尾聲"];const Le=e=>e.trim().replace(/(\r\n|\n|\r|\t)/gm,"").substring(0,100).split("").filter((e=>"="!==e&&"-"!==e&&"_"!==e&&"+"!==e)).join(""),Te=(e,t="")=>t?new RegExp(t).test(e):e&&e.length<40&&!Re(e)&&(He(e)||e.startsWith("第")&&Ge(e)||e.startsWith("卷")&&Oe(e)||e.indexOf("第")>-1&&e.lastIndexOf("第")<7&&Ge(e.substr(e.indexOf("第")))),Re=e=>Fe.filter((t=>e.indexOf(t)>-1)).length>0,He=e=>Ye.filter((t=>e.startsWith(t))).length>0,Ge=e=>{let t=!1;for(let n=0;n!(!/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341\u767e\u5343\u4e07\u842c\u96f6]+$/.test(e.substring(1,e.indexOf(" ")))&&!/^\d+$/.test(e.substring(1,e.indexOf(" "))))||(!(!/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341\u767e\u5343\u4e07\u842c\u96f6]+$/.test(e.substring(1,e.indexOf(" ")))&&!/^\d+$/.test(e.substring(1,e.indexOf(" "))))||!(!/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341\u767e\u5343\u4e07\u842c\u96f6]+$/.test(e.substring(1))&&!/^\d+$/.test(e.substring(1))));let Ue=!1;const Ne=e=>Array.from(e.querySelectorAll("h1,h2,h3,h4,h5,h6,p,div,ul,dl,ol,li,dt,dd,pre,blockquote,address,kookitmarker")),We=(e,t,n,i,r,o,s)=>c(void 0,void 0,void 0,(function*(){let a=Math.floor(e.clientWidth/12),l=a%2==0?a:a-1;const A=e.clientWidth;if("mimical"===t&&"yes"!==s){let e=document.getElementById("book");e&&(e.style.display="block",n>0?o():n<0&&r(),setTimeout((()=>{if(!e)return{};e.style.display="none"}),1e3))}const c=i.body.scrollLeft,g=A+l;if(n>0){const e=Math.round(c/g),n=Math.max(0,e-1)*g;i.body.scrollTo({top:0,left:n,behavior:"sliding"===t&&"yes"!==s?"smooth":"auto"})}else if(n<0){const e=(Math.round(c/g)+1)*g;i.body.scrollTo({top:0,left:e,behavior:"sliding"===t&&"yes"!==s?"smooth":"auto"})}})),Pe=(t,n,i,r)=>{let o=e.findLastIndex(i,(e=>e.href===n||e.href&&e.href.includes("#")&&e.href.includes(n)));return n&&e.findLastIndex(i,(e=>e.href===n||e.href&&e.href.includes("#")&&e.href.includes(n)))>-1||(o=t),"prev"===r?Object.assign(Object.assign({},i[o-1]),{index:o-1}):Object.assign(Object.assign({},i[o+1]),{index:o+1})},Ke=(e,t,n,i,r,o,s,a)=>c(void 0,void 0,void 0,(function*(){let t=parseInt(o.chapterDocIndex||"0"),l=o.chapterHref||"";if(0===t)return;let A=Pe(t,l,n,"prev");A&&(o.text="prevChapter",o.page="",yield je(A.index,A.label,A.href,n,e,i,r,o,s,a))})),ze=e=>{if(!e)return!1;if("IMG"===e.tagName)return!0;if(e.textContent){let t=e.textContent.trim();if(/^(\[|\()([a-zA-Z0-9]+)(\]|\))$|^\d+$|^(M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3}))$/i.test(t))return!0;if(t.toLowerCase().indexOf("footnote")>-1||t.toLowerCase().indexOf("脚注")>-1||t.toLowerCase().indexOf("注释")>-1||t.toLowerCase().indexOf("fn")>-1)return!0}return!1},qe=e=>c(void 0,void 0,void 0,(function*(){const t=yield fetch(e),n=yield t.blob();return new Promise(((e,t)=>{const i=new FileReader;i.onloadend=()=>e(i.result),i.onerror=t,i.readAsDataURL(n)}))})),je=(t,n,i,r,o,s,a,l,A,g)=>c(void 0,void 0,void 0,(function*(){if(A.body.innerHTML="",g.height="0px",A.body.scrollTo(0,0),n&&!t||r[t]&&r[t].label&&n&&n!==r[t].label&&-1===i.indexOf("#")){let i=e.findLastIndex(r,{label:n});-1!==i&&(t=i)}if(-1===t&&i.indexOf("#")>-1){let n=i.split("#")[0],o=e.findLastIndex(r,(e=>e.href===n||e.href&&e.href.includes("#")&&e.href.includes(n)));-1!==o&&(t=o)}(-1===t||t>r.length-1)&&(t=0);let h=yield d(r[t].text,!1),u=function(e){const t=e.match(/]*)>/i);if(!t)return{};const n=t[1],i={},r=/([\w-]+)\s*=\s*(?:"([^"]*)"|'([^']*)'|([^>\s]+))/g;let o;for(;null!==(o=r.exec(n));){const e=o[2]||o[3]||o[4]||"";i[o[1]]=e}return i}(h);if(A.body.innerHTML=h,u.style?A.body.setAttribute("style",A.body.getAttribute("style")||""):u.class?A.body.setAttribute("class",u.class):u.id?A.body.setAttribute("id",u.id):u.class?u.id||A.body.removeAttribute("id"):A.body.removeAttribute("class"),yield Je(A),yield Ve(A),!n){let e=t;for(;e>=0;){if(r[e].label){n=r[e].label;break}e--}}l.chapterTitle=n,l.chapterHref=i,l.chapterDocIndex=t+"",l.percentage=r.slice(0,t).map((e=>e.text&&e.text.size||1)).reduce(((e,t)=>e+t),0)/r.map((e=>e.text&&e.text.size||1)).reduce(((e,t)=>e+t),0)+"",l.text="",yield((e,t,n,i,r)=>c(void 0,void 0,void 0,(function*(){if(yield Promise.race([Promise.all(Array.from([...r.images,...r.querySelectorAll("image")]).map((e=>e.complete?Promise.resolve(0!==e.naturalHeight):new Promise((t=>{e.addEventListener("load",(()=>t(!0))),e.addEventListener("error",(()=>t(!1)))}))))),new Promise(((e,t)=>{setTimeout((()=>{e("image load timeout")}),10)}))]),yield C(e,t,n,r),B(r),"scroll"!==t){if(i.height=e.clientHeight+"px","double"===t){let t=Math.floor(e.clientWidth/12),n=t%2==0?t:t-1,i=(e.clientWidth+n)/2;if((r.body.scrollWidth-r.body.clientWidth)/i%2==1){let e=document.createElement("div");e.setAttribute("style","height: "+r.body.clientHeight+"px; display: inline-block; width: "+(i-n)+"px"),r.body.appendChild(e)}}}else i.height=r.body.scrollHeight+"px",i.height=r.body.scrollHeight+300+"px"})))(o,s,a,g,A),yield Xe(o,s,"","","","",A)}));const Je=e=>c(void 0,void 0,void 0,(function*(){let t=Array.from(e.getElementsByTagName("link"));if(0===t.length)return;let n=[];for(let e=0;e{i.addEventListener("load",e)})))}try{yield Promise.race([Promise.all(n),new Promise(((e,t)=>{setTimeout((()=>{e("css load timeout")}),10)}))])}catch(e){console.error(e)}})),Ve=e=>c(void 0,void 0,void 0,(function*(){var t;let n=Array.from(e.body.childNodes);for(let i=0;ic(void 0,void 0,void 0,(function*(){let a=0,l=s.body;if(o&&"scroll"!==t){let t=Math.floor(e.clientWidth/12),n=t%2==0?t:t-1;a=((A=getComputedStyle(e).width,parseFloat(A.substring(0,A.length-2)))+n)*(parseInt(o)-1)}else if(n){let r=Ne(s.body).filter(((e,t)=>Le(e.textContent)&&(Le(e.textContent)===Le(n)||Le(e.textContent)===ke(Le(n))||Le(e.textContent)===Se(Le(n)))&&(Math.abs(t-parseInt(i))<2||"search"===i||"ignore"===i||"next"===i)));if(0===r.length)return;l=Ze(r[0],e,t),a=l?g(l.offsetLeft)-g(l.marginLeft||parseFloat(getComputedStyle(l).marginLeft)):"prevChapter"===n?s.body.scrollWidth:0}else if(r&&r.indexOf("#")>-1){let n=CSS.escape(r.split("#").reverse()[0]);if(!s.body.querySelector("#"+CSS.escape(n)))return;l=Ze(s.body.querySelector("#"+CSS.escape(n))||s.body,e,t),a=l?g(l.offsetLeft)-g(l.marginLeft||parseFloat(getComputedStyle(l).marginLeft)):0}var A;"scroll"!==t?s.body.scrollTo(a,0):l.scrollIntoView()})),Ze=(e,t,n)=>{let i=Math.floor(t.clientWidth/12),r=i%2==0?i:i-1,o=g(e.offsetLeft)-g(e.marginLeft||parseFloat(getComputedStyle(e).marginLeft));return"scroll"===n||"scroll"!==n&&_e(parseInt(o+""),(t.clientWidth+r)/2)?e:e.parentElement?Ze(e.parentElement,t,n):e},_e=(e,t)=>{for(let n=e-10;n<=e+10;n++)if(n%t==0)return!0;return!1},$e=(e,t,n,i,r,o,s)=>c(void 0,void 0,void 0,(function*(){var a,l;if(Ue)return;let A=Ne(o.body),c=A.filter((n=>st(e,n,t)&&(n.textContent||"").trim())),g=c[0];s&&(g=s);let d=0;for(let n=0;ne.text&&e.text.size||1)).reduce(((e,t)=>e+t),0);r.percentage=i.slice(0,parseInt(r.chapterDocIndex)).map((e=>e.text&&e.text.size||1)).reduce(((e,t)=>e+t),0)/e+((null===(a=i.find(((e,t)=>t===parseInt(r.chapterDocIndex))))||void 0===a?void 0:a.text.size)||0)/e*(d/A.length)+""}else r.page=(null===(l=yield m(t,o,e))||void 0===l?void 0:l.currentPage)+"";Ue=!0,setTimeout((()=>{Ue=!1}),100)})),et=(e,t,n)=>{let i=Math.floor(t.clientWidth/12),r=i%2==0?i:i-1;return Math.abs(e.offsetLeft-Ze(e,t,n).offsetLeft)>(t.clientWidth+r)/2},tt=(t,n,i)=>{let r=i.chapterHref||"",o=r.lastIndexOf("#"),s="";s=-1===o?r:r.substring(0,o);for(let r=0;r-1&&(i.chapterHref=t,i.chapterTitle=n[r].label)}}},nt=(e,t,n,i,r,o,s,a)=>c(void 0,void 0,void 0,(function*(){let t=parseInt(o.chapterDocIndex||"0"),l=o.chapterHref||"";if(t>=n.length-1)return void(o.percentage="1");let A=Pe(t,l,n,"next");A&&(o.page="",yield je(A.index,A.label,A.href,n,e,i,r,o,s,a))})),it=(e,t,n)=>{let i=Ne(n.body).filter((e=>!ot(e))),r=i.filter((n=>st(e,n,t)&&(n.textContent||"").trim()));return r=r.filter((e=>{if(!(e.textContent||"").trim())return!1;let t=e.parentElement;for(;t&&t!==n.body;){if(i.includes(t))return!1;t=t.parentElement}return!0})),r.filter((e=>{var t;return"img"!==e.textContent&&!(null===(t=e.textContent)||void 0===t?void 0:t.startsWith("img"))})).map((e=>e.textContent))},rt=(e,t,n)=>{if(n.querySelectorAll('span[data-highlight="true"]').forEach((e=>{const t=e.parentNode;t&&t.replaceChild(n.createTextNode(e.textContent||""),e)})),!e.trim())return;let i=Array.from(n.body.querySelectorAll("span, p, div, h1, h2, h3, h4, h5, h6 ")).filter((t=>{const n=t.textContent||"";return n.trim()&&n.indexOf(e)>-1}));if(i.length>0){const r=i=>{var r;if(i.nodeType===Node.TEXT_NODE){const o=i.textContent||"",s=o.indexOf(e);if(s>-1){const a=o.substring(0,s),l=o.substring(s+e.length),A=n.createElement("span");A.setAttribute("style",t),A.setAttribute("data-highlight","true"),A.textContent=e;const c=n.createDocumentFragment();return a&&c.appendChild(n.createTextNode(a)),c.appendChild(A),l&&c.appendChild(n.createTextNode(l)),null===(r=i.parentNode)||void 0===r||r.replaceChild(c,i),!0}}return!1},o=e=>{if(r(e))return!0;const t=Array.from(e.childNodes);for(const e of t)if(o(e))return!0;return!1};for(let e=0;e{var t=e.children;let n=!1;var i=/^(address|kookitmarker|section|blockquote|body|center|dir|div|dl|fieldset|form|h[1-6]|hr|isindex|menu|noframes|noscript|ol|p|pre|table|ul|dd|dt|frameset|li|tbody|td|tfoot|th|thead|tr|html)$/i;if(Array.from(t).filter((e=>i.test(e.nodeName))).length<3)return!1;for(var r=0;r{var i=!1,r=t.getBoundingClientRect();if("scroll"!==n&&t.textContent&&t.textContent.trim()){let t=r.left;i=t>-10&&t<=e.clientWidth}else if("scroll"===n&&t.textContent&&t.textContent.trim()){let t=r.top;i=t>=e.scrollTop&&t<=e.scrollTop+e.clientHeight}else if("scroll"!==n){let t=r.left;i=t>=0&&t<=e.clientWidth}return i};class at{constructor(){this.callbacks={},this.callbacks.base={}}on(e,t){const n=this;if(void 0===e||""===e)return console.warn("wrong names"),!1;if(void 0===t)return console.warn("wrong callback"),!1;return this.resolveNames(e).forEach((function(e){const i=n.resolveName(e);n.callbacks[i.namespace]instanceof Object||(n.callbacks[i.namespace]={}),n.callbacks[i.namespace][i.value]instanceof Array||(n.callbacks[i.namespace][i.value]=[]),n.callbacks[i.namespace][i.value].push(t)})),this}off(e){const t=this;if(void 0===e||""===e)return console.warn("wrong name"),!1;return this.resolveNames(e).forEach((function(e){const n=t.resolveName(e);if("base"!==n.namespace&&""===n.value)delete t.callbacks[n.namespace];else if("base"===n.namespace)for(const e in t.callbacks)t.callbacks[e]instanceof Object&&t.callbacks[e][n.value]instanceof Array&&(delete t.callbacks[e][n.value],0===Object.keys(t.callbacks[e]).length&&delete t.callbacks[e]);else t.callbacks[n.namespace]instanceof Object&&t.callbacks[n.namespace][n.value]instanceof Array&&(delete t.callbacks[n.namespace][n.value],0===Object.keys(t.callbacks[n.namespace]).length&&delete t.callbacks[n.namespace])})),this}trigger(e,t=[]){if(void 0===e||""===e)return console.warn("wrong name"),!1;const n=this;const i=t instanceof Array?t:[];let r=this.resolveNames(e);r=this.resolveName(r[0]),setTimeout((()=>{if("base"===r.namespace)for(const e in n.callbacks){if(n.callbacks[e]instanceof Object&&n.callbacks[e][r.value]instanceof Array&&n.callbacks[e][r.value])n.callbacks[e][r.value].forEach((function(e){e.apply(n,i)}));else if(this.callbacks[r.namespace]instanceof Object&&n.callbacks[r.namespace][r.value]){if(""===r.value)return console.warn("wrong name"),this;n.callbacks[r.namespace][r.value].forEach((function(e){e.apply(n,i)}))}return null}}),100)}resolveNames(e){let t=e;return t=t.replace(/[^a-zA-Z0-9 ,/.]/g,""),t=t.replace(/[,/]+/g," "),t=t.split(" "),t}resolveName(e){const t={},n=e.split(".");return t.original=e,t.value=n[0],t.namespace="base",n.length>1&&""!==n[1]&&(t.namespace=n[1]),t}}const lt=Node.ELEMENT_NODE,At=Node.TEXT_NODE,ct=Node.CDATA_SECTION_NODE;function gt(e,t,n){let i,r,o,s=0,a=0,l=!0;for(r=0;rthis.compare(e,t)))}static compare(e,t){let n=e.get(),i=t.get();if(e.isRange||t.isRange){if(e.isRange&&t.isRange){const e=this.comparePath(n.from,i.from);return e||this.comparePath(n.to,i.to)}return e.isRange&&(n=n.from),t.isRange&&(i=i.from),this.comparePath(n,i)}return this.comparePath(n,i)}static compareParts(e,t){const n=Math.max(e.length,t.length);let i,r,o,s;for(i=0;i=n)return"img"===a.tagName.toLowerCase()&&i?{node:a,offset:i}:{node:a,offset:0}}else{if(l+=1,l===n)return"img"===a.tagName.toLowerCase()&&i?{node:a,offset:i}:{node:a,offset:0};if(l>n)return o?{node:o,offset:this.trueLength(e,o.textContent)}:{node:t,offset:0}}o=a;break;case At:case ct:if(0!==l&&l%2!=0||(l+=1),l===n){const t=this.trueLength(e,a.textContent);if(!(i>=t))return{node:a,offset:i};i-=t}o=a;break;default:continue}if(n>l){const n={relativeToNode:"after",offset:0};return n.node=o||t,this.isTextNode(n.node)&&(n.offset=this.trueLength(e,n.node.textContent.length)),n}}isTextNode(e){return!!e&&(e.nodeType===At||e.nodeType===ct)}correctOffset(e,t,n,i){let r,o=t;if("string"==typeof i?r=this.decodeEntities(e,i):(i.pre=this.decodeEntities(e,i.pre),i.post=this.decodeEntities(e,i.post),r=i.pre+"."+i.post),!this.isTextNode(t))return{node:t,offset:0};for(;this.isTextNode(o.previousSibling);)o=o.previousSibling;const s=o;let a;const l=[];let A="",c=0;for(;this.isTextNode(o)&&(a=this.decodeEntities(e,o.textContent),l[c]=a.length,A+=a,o.nextSibling);)o=o.nextSibling,c++;const g=i.pre?i.pre.length:0,d=function(e,t,n){n=n||0;const i=[];let r,o=0;do{if(r=e.match(t),!r)break;i.push(r.index+n),o+=r.index+r.length,e=e.slice(r.index+r.length)}while(o=l[c];){if(h-=l[c],h<0)return{node:t,offset:n};const e=[];if(!o.nextSibling||c+1>=e.length)return{node:t,offset:n};c++,o=o.nextSibling}return{node:o,offset:h}}resolveNode(e,t,n,i){if(i=Object.assign({},i||{}),!n)throw new Error("Missing DOM argument");let r;if(0===e&&(r=n.querySelector("package")),!r)for(const e of n.childNodes)if(e.nodeType===lt){r=e;break}if(r=n,!r)throw new Error("Document incompatible with CFIs");let o,s,a=r,l=0;for(o=t.length-1;o>=0;o--)if(s=t[o],!i.ignoreIDs&&s.nodeID&&(a=n.getElementById(s.nodeID))){l=o+1;break}a||(a=r);let A={node:a,offset:0};for(o=l;othis.parts.length-2)throw new Error("index is out of bounds");const i=this.parts[e];if(!i)throw new Error("Missing CFI part for index: "+e);let r=this.resolveNode(e,i,t,n).node;const o=r.tagName.toLowerCase();if("itemref"===o&&"spine"===r.parentNode.tagName.toLowerCase()){const e=r.getAttribute("idref");if(!e)throw new Error("Referenced node had not 'idref' attribute");if(r=t.getElementById(e),!r)throw new Error("Specified node is missing from manifest");const n=r.getAttribute("href");if(!n)throw new Error("Manifest item is missing href attribute");return n}if("iframe"===o||"embed"===o){const e=r.getAttribute("src");if(!e)throw new Error(o+" element is missing 'src' attribute");return e}if("object"===o){const e=r.getAttribute("data");if(!e)throw new Error(o+" element is missing 'data' attribute");return e}if("image"===o||"use"===o){const e=r.getAttribute("xlink:href");if(!e)throw new Error(o+" element is missing 'xlink:href' attribute");return e}throw new Error("No URI found")}deepClone(e){return JSON.parse(JSON.stringify(e))}resolveLocation(e,t){const n=t.length-1,i=t[n];if(!i)throw new Error("Missing CFI part for index: "+n);const r=this.resolveNode(n,i,e),o=this.deepClone(i[i.length-1]);return delete o.nodeIndex,o.offset||delete r.offset,Object.assign(Object.assign({},o),r)}resolveLast(e,t){if(t=Object.assign({range:!1},t||{}),!this.isRange)return this.resolveLocation(e,this.parts);if(t.range){const t=e.createRange(),n=this.getFrom();"before"===n.relativeToNode?t.setStartBefore(n.node,n.offset):"after"===n.relativeToNode?t.setStartAfter(n.node,n.offset):t.setStart(n.node,n.offset);const i=this.getTo();return"before"===i.relativeToNode?t.setEndBefore(i.node,i.offset):"after"===i.relativeToNode?t.setEndAfter(i.node,i.offset):t.setEnd(i.node,i.offset),t}return{from:this.resolveLocation(e,this.getFrom()),to:this.resolveLocation(e,this.getTo()),isRange:!0}}resolve(e,t){return this.resolveLast(e,t)}}const ft=["color-0","color-1","color-2","color-3","line-0","line-1","line-2","line-3"],pt=["#FEF3CD","#FBFACC","#CEFACD","#CDE9FA"],mt=["#FF0000","#000080","#0000FF","#2EFF2E"],Bt=["#fac106","#ebe702","#0be603","#0493e6"],wt=(e,n,i,r,o,s)=>{var a,l;let A=ft[n],c=s.contentWindow||(null===(a=s.contentDocument)||void 0===a?void 0:a.defaultView),g=e;g=[g];let d=t.getSelection(s);d.restoreCharacterRanges(o,g);let h=d.getRangeAt(0);Et(h,A,i,r,o),c&&c.getSelection()&&(null===(l=c.getSelection())||void 0===l||l.empty())},Ct=(e,t,n,i,r,o,s)=>{let a=ft[t],l=s.querySelector(".noteLayer"),A=s.querySelector("#koodoPDFLayer");var c=r.getViewport({scale:o});let g=[];for(let t=0;t{e.heighte.width-t.width)),f=[];for(let e=0;e{if(r===e)return!1;const o=i.bottom;return Math.abs(n-o)=t.right||i.left<=t.left&&Math.abs(i.right-t.right)<5||Math.abs(i.left-t.left)<5&&i.right>=t.right)}))||f.push(t)}for(let e=0;e-1?"background-color: ":"border-bottom: ")+(a.indexOf("color")>-1?Bt[a.split("-")[1]]:`2px solid ${mt[a.split("-")[1]]}`)+"; left:"+(t.left+parseFloat(getComputedStyle(A).marginLeft))+"px; top:"+t.top+"px;width:"+t.width+"px; height:"+t.height+"px; z-index: 1; cursor: pointer; opacity: "+(a.indexOf("color")>-1?.3:1)+";"),null==p||p.setAttribute("data-key",n),null==p||p.setAttribute("class","kookit-note"),null==p||p.addEventListener("click",(e=>{e&&e.target&&e.target.dataset&&e.target.dataset.key&&i(e)})),p.ontouchend=e=>{window.isSwiping||(e&&e.target&&e.target.dataset&&e.target.dataset.key&&i(e),e.preventDefault(),e.stopPropagation())},l.appendChild(p))}},yt=e=>{const t=e.querySelectorAll(".kookit-note");for(let e=0;e{const o=e.nativeRange.getClientRects(),s=[],a=Array.from(o).sort(((e,t)=>e.width-t.width)),l=a.length?Math.max(...Array.from(o).map((e=>e.width))):0;for(let e=0;eMath.abs(t.bottom-e.bottom)<5&&t.width===l&&Math.abs(t.left-e.left)-1?"background-color: ":"border-bottom: ")+(t.indexOf("color")>-1?pt[t.split("-")[1]]+";opacity: 1":`2px solid ${mt[t.split("-")[1]]}`)+";left:"+(Math.min(o.left,o.x)+r.body.scrollLeft)+"px; top:"+(Math.min(o.top,o.y)+r.body.scrollTop)+"px;width:"+o.width+"px; height:"+o.height+"px; z-index:-1;opacity: "+(t.indexOf("color")>-1?.8:1)+"; cursor: pointer;"),A.setAttribute("class"," kookit-note"),A.setAttribute("data-key",n),r.body.appendChild(A);var c=document.createElement("span");null==c||c.setAttribute("style","position: absolute;left:"+(Math.min(o.left,o.x)+r.body.scrollLeft)+"px; top:"+(Math.min(o.top,o.y)+r.body.scrollTop)+"px;width:"+o.width+"px; height:"+o.height+"px; z-index:1;"),c.setAttribute("class"," kookit-note"),c.setAttribute("data-key",n),c.addEventListener("click",(e=>{e&&e.target&&e.target.dataset&&e.target.dataset.key&&i(e)})),c.ontouchend=e=>{window.isSwiping||(e&&e.target&&e.target.dataset&&e.target.dataset.key&&i(e),e.preventDefault(),e.stopPropagation())},r.body.appendChild(c)}};const It=(e,t,n)=>{!function(e){let t=document.getElementById("book");t&&t.remove();const n=document.createElement("div");n.id="book";const i=document.createElement("canvas");i.id="pageflip-canvas";const r=document.createElement("div");r.id="pages";for(let t=0;t{d+1{d-1>=0&&(p[d-1].target=1,d=Math.max(d-1,0))},mouseDownHandler:E,mouseUpHandler:I,mouseMoveHandler:y}}}function y(e){if(!m)return;const t=e.touches[0],n=t.screenX,i=t.screenY;f.x=n-m.offsetLeft-o/2,f.y=i-m.offsetTop}function E(e){const t=e.touches[0];A=t.screenX,t.screenX=0?p[d-1].dragging=!0:t.screenX>window.screen.width/2&&d+1a/4*1&&c-A>0?(p[n].target=1,d=Math.max(d-1,0)):n===d?p[n].target=1:n===d-1&&(p[n].target=-1)),p[n].dragging=!1}function b(e){var i=1-Math.abs(e.progress),r=.5*a*(1-e.progress),s=a*e.progress+r,A=20*i,c=.5*a*Math.max(Math.min(1-e.progress,.5),0),d=.5*a*Math.max(Math.min(i,.5),0),h=.5*a*Math.max(Math.min(i,.5),0);e.page.style.width=Math.max(s,0)+"px",u.save(),u.translate(0+o/2,g+0),u.strokeStyle=("no"===t?"rgba(0,0,0,":"rgba(255,255,255,")+.05*i+")",u.lineWidth=30*i,u.beginPath(),u.moveTo(s-r,.5*-A),u.lineTo(s-r,l+.5*A),u.stroke();var f=u.createLinearGradient(s,0,s+d,0);f.addColorStop(0,("no"===t?"rgba(0,0,0,":"rgba(255,255,255,")+.2*i+")"),f.addColorStop(.8,("no"===t?"rgba(0,0,0,":"rgba(255,255,255,")+"0.0)"),u.fillStyle=f,u.beginPath(),u.moveTo(s,0),u.lineTo(s+d,0),u.lineTo(s+d,l),u.lineTo(s,l),u.fill();var p=u.createLinearGradient(s-r-h,0,s-r,0);p.addColorStop(0,("no"===t?"rgba(0,0,0,":"rgba(255,255,255,")+"0.0)"),p.addColorStop(1,("no"===t?"rgba(0,0,0,":"rgba(255,255,255,")+.15*+i+")"),u.fillStyle=p,u.beginPath(),u.moveTo(s-r-h,0),u.lineTo(s-r,0),u.lineTo(s-r,l),u.lineTo(s-r-h,l),u.fill();var m=u.createLinearGradient(s-c,0,s,0);n?(m.addColorStop(.35,n),m.addColorStop(.73,n),m.addColorStop(.9,n),m.addColorStop(1,n)):"no"===t?(m.addColorStop(.35,"#fafafa"),m.addColorStop(.73,"#eeeeee"),m.addColorStop(.9,"#fafafa"),m.addColorStop(1,"#e2e2e2")):(m.addColorStop(.35,"#333"),m.addColorStop(.73,"#444"),m.addColorStop(.9,"#333"),m.addColorStop(1,"#444")),u.fillStyle=m,u.strokeStyle=("no"===t?"rgba(0,0,0,":"rgba(255,255,255,")+"0.06)",u.lineWidth=.5,u.beginPath(),u.moveTo(s,0),u.lineTo(s,l),u.quadraticCurveTo(s,l+2*A,s-r,l+A),u.lineTo(s-r,-A),u.quadraticCurveTo(s,2*-A,s,0),u.fill(),u.stroke(),u.restore()}},bt=(e,t)=>{var n;const i=t.getElementById("pdf-container-"+e);if(!i)return;let r=document.createElement("iframe");r.style.position="absolute",r.style.top="0",r.style.left="0",r.style.width="100%",r.style.height="100%",r.style.border="0",r.style.margin="0",r.style.padding="0",r.style.fontSize="100%",r.style.font="inherit",r.scrolling="no",r.tabIndex=0,r.id="pdf-iframe-"+e;let o=document.createElement("style");return o.id="default-style",o.textContent="p,empty-line{display: inherit;margin-block-start: inherit;margin-block-end: inherit;margin-inline-start: inherit;margin-inline-end: inherit;}body{margin: 0px}",i.appendChild(r),null===(n=r.contentDocument)||void 0===n||n.head.appendChild(o),r},vt=(e,t,n)=>c(void 0,void 0,void 0,(function*(){let i=n.getElementById("pdf-container-"+e);if(i)if("scroll"!==t){let e=i?g(i.offsetLeft)-g(i.marginLeft||parseFloat(getComputedStyle(i).marginLeft)):0;n.body.scrollTo(e,0)}else i.scrollIntoView()})),xt=(e,t,n,i)=>{var r=!1,o=t.getBoundingClientRect();if("scroll"!==n){let e=o.left;r=e>-10&&e<=i.body.clientWidth}else{let t=o.top,n=o.bottom;r=t-10>=e.scrollTop&&t+10<=e.scrollTop+e.clientHeight||n-10>=e.scrollTop&&n+10<=e.scrollTop+e.clientHeight||t+10<=e.scrollTop&&n-10>=e.scrollTop+e.clientHeight}return r},Qt=(e,t,n)=>{if(n.querySelectorAll('span[data-highlight="true"]').forEach((e=>{const t=(e.getAttribute("style")||"").replace(/background(?:-color)?\s*:[^;]+;?/gi,"").trim();t?e.setAttribute("style",t):e.removeAttribute("style"),e.removeAttribute("data-highlight")})),!e.trim())return;let i=n.querySelectorAll("p,span"),r=Array.from(i).filter(((t,n)=>(t.textContent||"").trim()&&t.textContent===e));r.length>0&&(r[0].setAttribute("style",(r[0].getAttribute("style")||"")+t),r[0].setAttribute("data-highlight","true"))},Dt=(e,t,n,i,r,o,s,a,l)=>c(void 0,void 0,void 0,(function*(){let e=Math.floor(i.body.clientWidth/12),A=e%2==0?e:e-1;const c=i.body.clientWidth;if("mimical"===t&&"yes"!==s){let e=document.getElementById("book");e&&(e.style.display="block",n>0?o():n<0&&r(),setTimeout((()=>{if(!e)return{};e.style.display="none"}),1e3))}if(n>0)if("single"===l){let e=i.querySelector("#pdf-container-"+(a-1));e&&e.scrollIntoView()}else i.body.scrollBy(-(c+A)/2,0);else if(n<0)if("single"===l){let e=i.querySelector("#pdf-container-"+(a+1));e&&e.scrollIntoView()}else i.body.scrollBy((c+A)/2,0)})),St=e=>c(void 0,void 0,void 0,(function*(){const t=1600,n=e.getViewport({scale:1}),i=document.createElement("canvas"),r=i.getContext("2d");i.width=t,i.height=t/n.width*n.height;const o={canvasContext:r,viewport:e.getViewport({scale:t/n.width})};yield e.render(o).promise;const s=i.toDataURL("image/jpeg",1),a=function(e){const t=e.length-23;return Math.ceil(.75*t)}(s);return{imageURL:s,size:a}}));function kt(e){return c(this,void 0,void 0,(function*(){try{const t=yield fetch(e),n=yield t.blob();return yield new Promise(((e,t)=>{const i=new FileReader;i.onloadend=()=>e(i.result),i.onerror=t,i.readAsDataURL(n)}))}catch(e){throw console.error("转换失败:",e),e}}))}function Mt(){return window.visualViewport?window.visualViewport.offsetLeft:window.pageXOffset||document.documentElement.scrollLeft||0}function Ft(){return window.visualViewport?window.visualViewport.offsetTop:window.pageYOffset||document.documentElement.scrollTop||0}const Yt=(e,t,n)=>c(void 0,void 0,void 0,(function*(){if(!e.target)return;e.preventDefault(),e.stopPropagation();let t=n.getTargetHref(e),i=yield n.handleLinkJump(t,e);if(!i.handled)return!1;if(i.external)return window.ReactNativeWebView.postMessage(JSON.stringify(Object.assign({event:"link-clicked",href:t,footnote:""},i))),!0;let r=yield n.getFootnoteContent(i.node);return window.ReactNativeWebView.postMessage(JSON.stringify(Object.assign({event:"link-clicked",href:t,footnote:r.handled?r.content:"",rect:e.target.getBoundingClientRect()},i))),!0}));function Lt(e){if("A"===e.tagName)return e;let t=e;for(;t&&"BODY"!==t.tagName;){if("A"===t.tagName)return t;t=t.parentElement}return null}function Tt(e,t,n){const i=3*t+e+1;return n.layout.A.area.includes(i)?n.touchControlA:n.layout.B.area.includes(i)?n.touchControlB:n.layout.C.area.includes(i)?n.touchControlC:"right"}const Rt=(e,n,i,r,o,s,a,l)=>{var A;let g=n.contentWindow||(null===(A=n.contentDocument)||void 0===A?void 0:A.defaultView),d=l.getDocument(),h=0,u=0,f=0,p=0;const m=30;let B=Math.floor(i.clientWidth/12),w=B%2==0?B:B-1,C=i.clientWidth+w,y=null,E=!1,I=0;e.addEventListener("touchend",(function(t){window.isSwiping=!1,window.isTouchNavigation=!0,y&&clearTimeout(y),y=setTimeout((()=>{window.isTouchNavigation=!1,y=null}),4e3);let n=(new Date).getTime();if(n-p<=300)return void t.preventDefault();p=n;const A=t.changedTouches[0],c=Date.now();let B=A.screenX,I=A.screenY;const v=c-h,x=B-u,Q=I-f;if(E&&"mimical"===o&&"scroll"!==r)return E=!1,l.mouseUpHandler(t),A.screenXwindow.innerWidth/4*1&&B-u>0&&(l.prev(),E=!1),void setTimeout((()=>{let e=document.getElementById("book");e&&(e.style.display="none")}),400);if(E&&"sliding"===o&&"scroll"!==r){let Y="PDF"===s?d:e;if(window.scrollAnimationId&&cancelAnimationFrame(window.scrollAnimationId),Math.abs(Y.body.scrollWidth-Y.body.scrollLeft-i.clientWidth)<10)return b&&clearTimeout(b),void(b=setTimeout((()=>{l.next(),E=!1}),300));if(0===Y.body.scrollLeft)return b&&clearTimeout(b),void(b=setTimeout((()=>{l.prev(),E=!1}),300));Y.body.style.transform="";let L,T=Y.body.scrollLeft;const R=Math.round(T/C),H=Math.abs(x)/window.innerWidth,G=.1;L=x>0&&H>G?(R-1)*C:x<0&&H>G?(R+1)*C:R*C,L=Math.max(0,Math.min(L,Y.body.scrollWidth-C)),Y.body.scrollWidth-L1-Math.pow(1-e,3);function K(e){const t=e-O;if(t>=W)return Y.body.scrollLeft=L,Y.body.style.willChange="auto",l.record(),void(E=!1);const n=P(t/W),i=U+N*n;Y.body.scrollLeft=i,window.scrollAnimationId=requestAnimationFrame(K)}window.scrollAnimationId=requestAnimationFrame(K)}else{var D=g.getSelection().toString(),S=Math.abs(x)>=m||Math.abs(Q)>=m;if(!D||"PDF"===s&&("PDF"!==s||S)){if(v>500){const z=t.target;if(!z)return;if(Lt(z))return;if("IMG"===z.tagName||"image"===z.tagName){const q=z.src||z.getAttribute("xlink:href");return void(q.startsWith("blob:")&&kt(q).then((e=>{window.ReactNativeWebView.postMessage(JSON.stringify({event:"view-image",imgSrc:e}))})))}}if(v<500&&Math.abs(x)=m||Math.abs(Q)>=m)&&(window.ReactNativeWebView.postMessage(JSON.stringify({event:"swipe"})),"scroll"===r&&Math.abs(i.scrollHeight-i.scrollTop-i.clientHeight)<10&&window.ReactNativeWebView.postMessage(JSON.stringify({event:"scroll-bottom"})),"scroll"===r&&0===i.scrollTop&&window.ReactNativeWebView.postMessage(JSON.stringify({event:"scroll-top"})))}else window.ReactNativeWebView.postMessage(JSON.stringify({event:"select-text-after-touch",selectedText:D}))}}),!1),e.addEventListener("touchstart",(function(e){h=Date.now();const t=e.target;if(!t)return;if(Lt(t))return;e.touches.length>1&&e.preventDefault();const n=e.touches[0];u=n.screenX,f=n.screenY}),!1),e.addEventListener("touchmove",(function(t){if(!E&&Math.abs(t.touches[0].screenX-u)<=10)return;if(t.preventDefault(),window.visualViewport.scale>1&&"PDF"===s)return void t.preventDefault();const n=t.touches[0],i=n.screenX,a=n.screenY,A=i-u,c=a-f;if((Math.abs(A)>10||Math.abs(c)>10)&&(window.isSwiping=!0),!E&&Math.abs(A)>Math.abs(c)&&Math.abs(A)>10){if(E=!0,I=i,e.body.style.transform="translateZ(0)","mimical"===o&&"scroll"!==r){let e=document.getElementById("book");e&&(e.style.display="block",l.mouseDownHandler(t))}}else if(E&&"mimical"===o&&"scroll"!==r&&l.mouseMoveHandler(t),E&&"sliding"===o&&"scroll"!==r){let t="PDF"===s?d:e;const n=i-I,r=t.body.scrollLeft;t.body.scrollLeft=r-n,I=i,requestAnimationFrame((()=>{}))}}),!1),e.addEventListener("click",(e=>{Yt(e,0,l)}),!0);let b=null,v=0,x=0,Q=e=>c(void 0,void 0,void 0,(function*(){var n,r;const o=g.getSelection().toString().trim();if(o){var a=g.getSelection().getRangeAt(0);let d=l.getPageSize();var A=a.getBoundingClientRect();if("PDF"===s){let e=a.getClientRects();if(e.length>0){e=Array.from(e).filter((e=>Math.abs(e.height-d.sectionHeight)>10&&Math.abs(e.width-d.sectionWidth)>10&&e.height>0&&e.width>0));let t=1/0,n=1/0,i=-1/0,r=-1/0;for(let o=0;o{1===x&&Q(e)}),600):Q(e),e.preventDefault(),e.stopPropagation(),!1;{const e=t.src||t.getAttribute("xlink:href");e.startsWith("blob:")&&kt(e).then((e=>{window.ReactNativeWebView.postMessage(JSON.stringify({event:"view-image",imgSrc:e}))}))}}};let D=0,S=0,k=0;e.addEventListener("selectstart",(t=>{x=0,v=Date.now(),S=Mt(),k=Ft(),"scroll"!==r&&(D=e.body.scrollLeft)}),!1);let M=0;let F=null;e.addEventListener("selectionchange",(t=>{"PDF"!==s&&(F&&clearTimeout(F),F=setTimeout((()=>{Q(t),F=null}),1e3));if(!g.getSelection().toString().trim())return;D>0&&(e.body.scrollLeft=D),x++;const n=Date.now();n-M>=3e3&&(M=n,window.ReactNativeWebView.postMessage(JSON.stringify({event:"selection-change"})))}),!1)},Ht=(e,n,i,r,o,s,a,l)=>{var A;let g=n.contentWindow||(null===(A=n.contentDocument)||void 0===A?void 0:A.defaultView),d=l.getDocument(),h=0,u=0,f=0,p=0;let m=Math.floor(i.clientWidth/12),B=m%2==0?m:m-1,w=null,C=!1,y=0;e.addEventListener("touchend",(function(n){var A,m;return c(this,void 0,void 0,(function*(){window.isSwiping=!1,window.isTouchNavigation=!0,w&&clearTimeout(w),w=setTimeout((()=>{window.isTouchNavigation=!1,w=null}),4e3);let c=(new Date).getTime();if(c-p<=300)return void n.preventDefault();p=c;const y=n.changedTouches[0],I=Date.now(),b=y.screenX,v=y.screenY,x=I-h,Q=b-u,D=v-f;if(C&&"mimical"===o&&"scroll"!==r)return C=!1,l.mouseUpHandler(n),bwindow.innerWidth/4*1&&b-u>0&&(l.prev(),C=!1),void setTimeout((()=>{let e=document.getElementById("book");e&&(e.style.display="none")}),400);if(C&&"sliding"===o&&"scroll"!==r){let Y="PDF"===s?d:e;if(window.scrollAnimationId&&cancelAnimationFrame(window.scrollAnimationId),Math.abs(Y.body.scrollWidth-Y.body.scrollLeft-i.clientWidth)<10)return E&&clearTimeout(E),void(E=setTimeout((()=>{l.next(),C=!1}),300));if(0===Y.body.scrollLeft)return E&&clearTimeout(E),void(E=setTimeout((()=>{l.prev(),C=!1}),300));Y.body.style.transform="";let L,T=i.clientWidth+B,R=Y.body.scrollLeft;const H=Math.round(R/T),G=Math.abs(Q)/window.innerWidth,O=.1;L=Q>0&&G>O?(H-1)*T:Q<0&&G>O?(H+1)*T:H*T,L=Math.max(0,Math.min(L,Y.body.scrollWidth-T)),Y.body.scrollWidth-L1-Math.pow(1-e,3);function z(e){const t=e-U;if(t>=P)return Y.body.scrollLeft=L,Y.body.style.willChange="auto",l.record(),void(C=!1);const n=K(t/P),i=N+W*n;Y.body.scrollLeft=i,window.scrollAnimationId=requestAnimationFrame(z)}return void(window.scrollAnimationId=requestAnimationFrame(z))}const S=g.getSelection().toString().trim();if(S){var k=g.getSelection().getRangeAt(0).getBoundingClientRect(),M=l.getPageSize(),F={top:k.top-i.scrollTop,left:k.left,width:k.width,height:k.height,screenWidth:window.innerWidth,screenHeight:window.innerHeight,sectionHeight:M.sectionHeight,sectionWidth:M.sectionWidth,gap:M.gap,scale:window.visualViewport.scale,offsetLeft:Mt(),offsetTop:Ft()};t.init();let q=null;if("PDF"===s){let j=n.target.ownerDocument,J=null===(A=null==j?void 0:j.defaultView)||void 0===A?void 0:A.frameElement,V=(null==J?void 0:J.getAttribute("id"))||"",X=V?parseInt(V.split("-").reverse()[0]):0;F.chapterDocIndex=X,q=yield l.getHightlightCoords(X);let Z=J.parentElement;Z&&(F.top=F.top+parseFloat(getComputedStyle(Z).top))}else q=yield l.getHightlightCoords();window.ReactNativeWebView.postMessage(JSON.stringify({event:"select-text",selectedText:S,position:F,range:q}))}else{if(x>500){const _=n.target;if(!_)return;if(Lt(_))return;if("IMG"===_.tagName||"image"===_.tagName){const $=_.src||_.getAttribute("xlink:href");return void($.startsWith("blob:")&&kt($).then((e=>{window.ReactNativeWebView.postMessage(JSON.stringify({event:"view-image",imgSrc:e}))})))}}if(x<500&&Math.abs(Q)<30&&Math.abs(D)<30){const ee=document.documentElement.clientWidth,te=document.documentElement.clientHeight;let ne=Math.min(Math.max(b,0),ee),ie=Math.min(Math.max(v,0),te);if("PDF"===s&&"double"===r){let ae=n.target.ownerDocument,le=null===(m=null==ae?void 0:ae.defaultView)||void 0===m?void 0:m.frameElement,Ae=(null==le?void 0:le.getAttribute("id"))||"";(Ae?parseInt(Ae.split("-").reverse()[0]):0)%2==1&&(ne+=ee/2)}const re=ee/3,oe=te/3;let se=Tt(Math.min(Math.floor(ne/re),2),Math.min(Math.floor(ie/oe),2),a);window.ReactNativeWebView.postMessage(JSON.stringify({event:se}))}else(Math.abs(Q)>=30||Math.abs(D)>=30)&&(window.ReactNativeWebView.postMessage(JSON.stringify({event:"swipe"})),"scroll"===r&&Math.abs(i.scrollHeight-i.scrollTop-i.clientHeight)<10&&window.ReactNativeWebView.postMessage(JSON.stringify({event:"scroll-bottom"})),"scroll"===r&&0===i.scrollTop&&window.ReactNativeWebView.postMessage(JSON.stringify({event:"scroll-top"})))}}))}),{passive:!1}),e.addEventListener("touchstart",(function(e){const t=e.target;if(!t)return;if(Lt(t))return;const n=e.touches[0];h=Date.now(),u=n.screenX,f=n.screenY}),{passive:!1}),e.addEventListener("touchmove",(function(t){const n=g.getSelection().toString().trim();if(!C&&Math.abs(t.touches[0].screenX-u)<=10||n)return;if(window.visualViewport.scale>1&&"PDF"===s)return;"scroll"!==r&&t.preventDefault();const i=t.touches[0],a=i.screenX,A=i.screenY,c=a-u,h=A-f;if(!C&&Math.abs(c)>Math.abs(h)&&Math.abs(c)>10){if(C=!0,y=a,"mimical"===o&&"scroll"!==r){window.isSwiping=!0;let e=document.getElementById("book");e&&(e.style.display="block",l.mouseDownHandler(t))}}else if(C&&"mimical"===o&&"scroll"!==r&&l.mouseMoveHandler(t),C&&"sliding"===o&&"scroll"!==r){window.isSwiping=!0;let t="PDF"===s?d:e;const n=a-y,i=t.body.scrollLeft;t.body.scrollLeft=i-n,y=a,requestAnimationFrame((()=>{}))}}),{passive:!1}),e.addEventListener("click",(e=>{Yt(e,0,l)}),!0);let E=null;e.body.oncontextmenu=function(e){return e.preventDefault(),e.stopPropagation(),!1};let I=0;e.addEventListener("selectionchange",(e=>{if(!g.getSelection().toString().trim())return;const t=Date.now();t-I>=3e3&&(I=t,window.ReactNativeWebView.postMessage(JSON.stringify({event:"selection-change"})))}),{passive:!1})};class Gt extends at{constructor(e){super(),this.tranformText=()=>{let e=this.getDocument();e&&("Simplified To Traditional"===this.convertChinese?e.querySelectorAll("h1,h2,h3,h4,h5,h6,p,div,ul,dl,ol,pre,li,dt,dd,blockquote,address,kookitmarker").forEach((e=>{e.innerHTML=e.innerHTML.split("").map((e=>Se(e))).join("")})):"Traditional To Simplified"===this.convertChinese&&e.querySelectorAll("h1,h2,h3,h4,h5,h6,p,div,ul,dl,ol,pre,li,dt,dd,blockquote,address,kookitmarker").forEach((e=>{e.innerHTML=e.innerHTML.split("").map((e=>ke(e))).join("")})),"yes"===this.isIndent&&e.querySelectorAll("h1,h2,h3,h4,h5,h6,p,div,ul,dl,ol,pre,li,dt,dd,blockquote,address").forEach((e=>{for(let t of e.childNodes){if(t.nodeType===Node.TEXT_NODE){const n=(t.nodeValue||"").charAt(0);n&&""===n.trim()&&" "!==n&&"\t"!==n&&e.setAttribute("style",(e.getAttribute("style")||"")+"text-indent: 0em !important;");break}if(t.nodeType===Node.ELEMENT_NODE&&"img"===t.tagName.toLowerCase()){e.setAttribute("style",(e.getAttribute("style")||"")+"text-indent: 0em !important;");break}}})))},this.addPageAnimation=e=>{if("mimical"===this.animation){let t=this.getProgress();if(!t)return;const n=It(t.totalPage,this.isDarkMode,e);n&&(this.flipToNextPage=n.flipToNextPage,this.flipToPrevPage=n.flipToPrevPage,this.mouseDownHandler=n.mouseDownHandler,this.mouseUpHandler=n.mouseUpHandler,this.mouseMoveHandler=n.mouseMoveHandler)}},this.readerMode=e.readerMode,this.animation=e.animation,this.format=e.format,this.convertChinese=e.convertChinese,this.isIndent=e.isIndent,this.isDarkMode=e.isDarkMode,this.isMobile=e.isMobile,this.chapterList=[],this.chapterDocList=[],this.flattenChapters=[],this.book="",this.element="",this.tempLocation={},this.flipToNextPage=()=>{},this.flipToPrevPage=()=>{},this.mouseDownHandler=()=>{},this.mouseUpHandler=()=>{},this.mouseMoveHandler=e=>{},this.touchEventSet={},"yes"===this.isMobile&&(console.log=function(...e){window.ReactNativeWebView.postMessage(e.map((e=>String(e))).join(", "))},console.info=function(...e){window.ReactNativeWebView.postMessage(e.map((e=>String(e))).join(", "))},console.error=function(...e){window.ReactNativeWebView.postMessage(e.map((e=>String(e))).join(", "))})}getPageSize(){let e="double"===this.readerMode?2:1,t=Math.floor(this.element.clientWidth/12),n=t%2==0?t:t-1,i=this.getIframe();if(!i)return;let r=null==i?void 0:i.getBoundingClientRect().height;return{width:this.element.clientWidth,height:this.element.clientHeight,left:this.element.offsetLeft,top:this.element.offsetTop,scrollTop:this.element.scrollTop,scrollLeft:this.element.scrollWidth/2-this.element.clientWidth/2,sectionWidth:(this.element.clientWidth-n)/e,sectionHeight:r,gap:n}}scrollToText(e){let t=this.getDocument();if(!t)return;let n=Ne(t.body).filter((e=>!ot(e))).filter((t=>(t.textContent||"").indexOf(e)>-1));if(n.length>0){let e=n[0],i=e?g(e.offsetLeft)-g(e.marginLeft||parseFloat(getComputedStyle(e).marginLeft)):0,r=e?g(e.offsetTop)-g(e.marginTop||parseFloat(getComputedStyle(e).marginTop)):0;"scroll"!==this.readerMode?t.body.scrollTo(i,0):this.element.scrollTo(0,r)}}goToPage(e){return c(this,void 0,void 0,(function*(){if("scroll"===this.readerMode){e<0&&(e=1);let t=(e-1)*(this.element.clientHeight-50);this.element.scrollTo(0,t)}else{let t=this.getDocument();if(!t)return;let n=Math.floor(this.element.clientWidth/12),i=n%2==0?n:n-1;const r=this.element.clientWidth+i;"double"===this.readerMode?e=(e%2==0?e-2:e-1)/2:e-=1,e<0&&(e=0);const o=e*r;t.body.scrollTo({top:0,left:o,behavior:"sliding"===this.animation&&"yes"!==this.isMobile?"smooth":"auto"})}yield this.record()}))}resolveChapter(e){let t=e;t=t.replace(/^#/,"").replace(/^\.\//,"").replace(/^\//,""),t.startsWith("../")&&(t=t.replace(/^\.\.\//,""));let n=-1;0===this.flattenChapters.length&&this.flatChapter(this.chapterList);for(let e=0;e-1){let t=this.flattenChapters[n];return e.startsWith("kindle")?this.chapterDocList[t.index].href===e?t:null:t}for(let e=0;e-1){let e=this.chapterDocList[n];return{label:e.label||"",href:e.href,index:n}}for(let e=0;e-1?{label:this.chapterDocList[n].label||"",href:this.chapterDocList[n].href,index:n}:null}flatChapter(e){let t=[];for(let n=0;n0?(t.push(e[n]),t=t.concat(this.flatChapter(e[n].subitems))):t.push(e[n]);return this.flattenChapters=t,t}getChapter(){return this.chapterList}getChapterDoc(){return this.chapterDocList}goToPercentage(e){return c(this,void 0,void 0,(function*(){if(0===this.flattenChapters.length&&this.flatChapter(this.chapterList),this.flattenChapters.length>0){let t=1===e?this.flattenChapters.length-1:Math.floor(this.flattenChapters.length*e);yield this.goToChapter(this.flattenChapters[t].index.toString(),this.flattenChapters[t].href,this.flattenChapters[t].label)}}))}goToChapterIndex(e){return c(this,void 0,void 0,(function*(){0===this.flattenChapters.length&&this.flatChapter(this.chapterList),this.flattenChapters.length>0&&(yield this.goToChapter(this.flattenChapters[e].index,this.flattenChapters[e].href,this.flattenChapters[e].label))}))}goToChapterDocIndex(e){return c(this,void 0,void 0,(function*(){this.chapterDocList.length>0&&(yield this.goToChapter(e,this.chapterDocList[e].href,this.chapterDocList[e].label))}))}goToChapter(e,t,n){return c(this,void 0,void 0,(function*(){let i=this.getDocument(),r=this.getIframe();if(i&&r){if(yield je(parseInt(e),n,t,this.chapterDocList,this.element,this.readerMode,this.format,this.tempLocation,i,r),t&&t.startsWith("kindle")){let e=yield this.book.resolveHref(t);if(e.anchor){let t=e.anchor(i);t&&(yield this.goToNode(t))}}t&&t.indexOf("#")>-1&&(yield Xe(this.element,this.readerMode,"","",t,"",i)),yield this.record(),this.trigger("rendered")}}))}goToPosition(e){return c(this,void 0,void 0,(function*(){let n=this.getDocument(),i=this.getIframe();if(!n||!i)return;let r=JSON.parse(e);this.tempLocation={text:r.text,chapterTitle:r.chapterTitle,chapterDocIndex:r.chapterDocIndex,chapterHref:r.chapterHref,count:r.count,page:r.page,percentage:r.percentage};let{text:o,chapterTitle:s,chapterDocIndex:a,chapterHref:l,count:A,page:c,cfi:g}=r;if(yield je(parseInt(a),s,l,this.chapterDocList,this.element,this.readerMode,this.format,this.tempLocation,n,i),g){const e=new ut(g,{});let t=this.getDocument();if(!t)return;const{node:n,offset:i}=e.resolve(t,{});if(n){let e=null,t=n;for(;t;){const n=t;if(n.tagName&&"h1,h2,h3,h4,h5,h6,p,div,ul,dl,ol,pre,li,dt,dd,blockquote,address,kookitmarker".indexOf(n.tagName.toLowerCase())>-1){e=n;break}t=t.parentNode}e&&(A="ignore",o=e.textContent)}}yield Xe(this.element,this.readerMode,o,A,"",c,n),t.init(),yield this.record(),this.trigger("rendered")}))}getDocument(){let e=document.getElementById("page-area");if(!e)return null;let t=e.getElementsByTagName("iframe")[0];if(!t)return null;let n=t.contentDocument;return n||null}getIframe(){let e=document.getElementById("page-area");if(!e)return null;let t=e.getElementsByTagName("iframe")[0];return t||null}goToNode(e){return c(this,void 0,void 0,(function*(){let t=this.getDocument();if(!t)return;if(!e)return;let n=Ze(e,this.element,this.readerMode),i=n?g(n.offsetLeft)-g(n.marginLeft||parseFloat(getComputedStyle(n).marginLeft)):0,r=n?g(n.offsetTop)-g(n.marginTop||parseFloat(getComputedStyle(n).marginTop)):0;"scroll"!==this.readerMode?t.body.scrollTo(i,0):this.element.scrollTo(0,r),yield this.record(),this.trigger("rendered")}))}removeContent(){this.element.innerHTML=""}prev(){return c(this,void 0,void 0,(function*(){let e=this.getDocument(),t=this.getIframe();if(e&&t){if("scroll"===this.readerMode&&0===g(this.element.scrollTop)||"scroll"!==this.readerMode&&0===g(e.body.scrollLeft)){if("0"===this.tempLocation.chapterDocIndex)return;"mimical"===this.animation&&"scroll"!==this.readerMode&&"yes"===this.isMobile&&(yield new Promise((e=>setTimeout(e,500)))),yield Ke(this.element,this.flatChapter(this.chapterList),this.chapterDocList,this.readerMode,this.format,this.tempLocation,e,t),parseInt(this.tempLocation.chapterDocIndex||"-1")>-1&&("scroll"===this.readerMode?this.element.scrollTo(0,e.body.scrollHeight):e.body.scrollTo(e.body.scrollWidth,0)),this.trigger("rendered")}else"scroll"===this.readerMode?this.element.scrollBy({left:0,top:-(this.element.clientHeight-50),behavior:"smooth"}):yield We(this.element,this.animation,1,e,this.flipToNextPage,this.flipToPrevPage,this.isMobile);yield this.record()}}))}next(){return c(this,void 0,void 0,(function*(){let e=this.getDocument(),t=this.getIframe();if(e&&t){if(Math.abs(e.body.scrollWidth-g(e.body.scrollLeft)-e.body.clientWidth)<50&&"scroll"!==this.readerMode||Math.abs(this.element.scrollHeight-g(this.element.scrollTop)-this.element.clientHeight)<20&&"scroll"===this.readerMode)return"mimical"===this.animation&&"scroll"!==this.readerMode&&"yes"===this.isMobile&&(yield new Promise((e=>setTimeout(e,500)))),yield nt(this.element,this.flatChapter(this.chapterList),this.chapterDocList,this.readerMode,this.format,this.tempLocation,e,t),void this.trigger("rendered");"scroll"===this.readerMode?Math.abs(this.element.scrollHeight-g(this.element.scrollTop)-this.element.clientHeight)-(this.element.clientHeight-50)<20&&Math.abs(this.element.scrollHeight-g(this.element.scrollTop)-this.element.clientHeight)>20?this.element.scrollTo({left:0,top:this.element.scrollHeight-20,behavior:"smooth"}):this.element.scrollBy({left:0,top:this.element.clientHeight-50,behavior:"smooth"}):yield We(this.element,this.animation,-1,e,this.flipToNextPage,this.flipToPrevPage,this.isMobile),yield this.record()}}))}prevChapter(){return c(this,void 0,void 0,(function*(){let e=this.getDocument(),t=this.getIframe();e&&t&&(yield Ke(this.element,this.flatChapter(this.chapterList),this.chapterDocList,this.readerMode,this.format,this.tempLocation,e,t),yield this.record(),this.trigger("rendered"))}))}nextChapter(){return c(this,void 0,void 0,(function*(){let e=this.getDocument(),t=this.getIframe();e&&t&&(yield nt(this.element,this.flatChapter(this.chapterList),this.chapterDocList,this.readerMode,this.format,this.tempLocation,e,t),yield this.record(),this.trigger("rendered"))}))}visibleText(){return c(this,void 0,void 0,(function*(){let e=this.getDocument();return e?it(this.element,this.readerMode,e):""}))}audioText(){return c(this,void 0,void 0,(function*(){let e=this.getDocument();return e?((e,t,n)=>{let i=Ne(n.body).filter((e=>!ot(e))),r=i.filter((e=>{if(!(e.textContent||"").trim())return!1;let t=e.parentElement;for(;t&&t!==n.body;){if(i.includes(t))return!1;t=t.parentElement}return!0})).filter((e=>{var t;return"img"!==e.textContent&&!(null===(t=e.textContent)||void 0===t?void 0:t.startsWith("img"))})).map((e=>e.textContent)),o=0,s=it(e,t,n);if(s&&s.length>0){let e=s[0];o=r.indexOf(e)}return r.slice(o)})(this.element,this.readerMode,e):""}))}chapterText(){return c(this,void 0,void 0,(function*(){let e=this.getDocument();return e&&e.body.textContent||""}))}autoScroll(e,t){if(!this.getDocument())return;if(this.scrollTimer&&(cancelAnimationFrame(this.scrollTimer),this.scrollTimer=null),this.recordTimer&&(clearInterval(this.recordTimer),this.recordTimer=null),"no"===t||"scroll"!==this.readerMode)return;let n=0,i=0;const r=()=>{if(n+=e,i++,Math.abs(e)<1){if((Math.abs(n)>=.5||i%Math.max(1,Math.floor(30/Math.abs(e)))==0)&&Math.abs(n)>=.1){const e=Math.round(10*n)/10;this.element.scrollBy({left:0,top:e,behavior:"auto"}),n=0,i=0}}else if(Math.abs(n)>=1){const e=Math.floor(n);this.element.scrollBy({left:0,top:e,behavior:"auto"}),n-=e}this.scrollTimer=requestAnimationFrame(r)};this.scrollTimer=requestAnimationFrame(r),this.recordTimer=setInterval((()=>{"scroll"===this.readerMode&&Math.abs(this.element.scrollHeight-this.element.scrollTop-this.element.clientHeight)<10&&this.nextChapter(),this.record()}),3e3)}autoScrollIOS(e,t){let n=this.getDocument();if(!n)return;if(this.scrollTimer&&(clearInterval(this.scrollTimer),this.scrollTimer=null),this.recordTimer&&(clearInterval(this.recordTimer),this.recordTimer=null),"no"===t||"scroll"!==this.readerMode)return;let i=0,r=this.element.scrollTop;this.scrollTimer=setInterval((()=>{i+=e,n&&(n.body.style.transform=`translateY(-${i}px)`,Math.abs(i)>=50&&(n.body.style.transform="translateY(0px)",r+=i,this.element.scrollTo({left:0,top:r,behavior:"auto"}),i=0))}),30),this.recordTimer=setInterval((()=>{"scroll"===this.readerMode&&Math.abs(this.element.scrollHeight-this.element.scrollTop-this.element.clientHeight)<10&&this.nextChapter(),this.record()}),3e3)}highlightSearchNode(e,t){let n=this.getDocument();n&&rt(e,t,n)}highlightAudioNode(e,t){let n=this.getDocument();n&&((e,t,n,i,r)=>{if(n.querySelectorAll('span[data-highlight="true"]').forEach((e=>{const t=e.parentNode;t&&t.replaceChild(n.createTextNode(e.textContent||""),e)})),!e.trim())return;let o=Ne(n.body).filter((e=>st(i,e,r)&&(e.textContent||"").trim())).filter((t=>{const n=t.textContent||"";return n.trim()&&n.indexOf(e)>-1}));if(o.length>0){const i=i=>{var r;if(i.nodeType===Node.TEXT_NODE){const o=i.textContent||"",s=o.indexOf(e);if(s>-1){const a=o.substring(0,s),l=o.substring(s+e.length),A=n.createElement("span");A.setAttribute("style",t),A.setAttribute("data-highlight","true"),A.textContent=e;const c=n.createDocumentFragment();return a&&c.appendChild(n.createTextNode(a)),c.appendChild(A),l&&c.appendChild(n.createTextNode(l)),null===(r=i.parentNode)||void 0===r||r.replaceChild(c,i),!0}}return!1},r=e=>{if(i(e))return!0;const t=Array.from(e.childNodes);for(const e of t)if(r(e))return!0;return!1};r(o[0])}})(e,t,n,this.element,this.readerMode)}doSearch(e){return c(this,void 0,void 0,(function*(){return"PDF"===this.format?yield((e,t)=>c(void 0,void 0,void 0,(function*(){let n=[];for(let i=0;i{const n=e.transform[5];let i=null;for(const[t,r]of o.entries()){const o=r[0].transform[5];if(Math.abs(n-o){r.sort(((e,t)=>e.transform[4]-t.transform[4]));const s=r.map((e=>e.str)).join("");s.indexOf(e)>-1&&n.push({excerpt:s,cfi:JSON.stringify({text:s+"#"+i+"#"+o,chapterTitle:t[i].label,chapterDocIndex:i,chapterHref:t[i].href,count:"search",percentage:i/t.length,keyword:e})})}))}return n})))(e,this.chapterDocList):yield((e,t)=>c(void 0,void 0,void 0,(function*(){var n;let i=[];for(let r=0;r!ot(e)));for(let o=0;o-1&&i.push({excerpt:(null===(n=s[o].textContent)||void 0===n?void 0:n.substring(a-100,a+100))||"",cfi:JSON.stringify({text:s[o].textContent,chapterTitle:t[r].label,chapterDocIndex:r,chapterHref:t[r].href,count:"search",percentage:r/t.length,keyword:e})})}}return i})))(e,this.chapterDocList)}))}getProgress(){let e=this.getDocument();if(e)return m(this.readerMode,e,this.element)}record(){return c(this,void 0,void 0,(function*(){""!==this.animation&&(yield new Promise((e=>setTimeout(e,1e3))));let e=this.getDocument();e&&(yield $e(this.element,this.readerMode,this.flatChapter(this.chapterList),this.chapterDocList,this.tempLocation,e,null),this.trigger("page-changed"))}))}getPosition(){return this.tempLocation}getNotePosition(){return c(this,void 0,void 0,(function*(){let e=this.getDocument();if(!e)return;let t=E(e);return t?(yield $e(this.element,this.readerMode,this.flatChapter(this.chapterList),this.chapterDocList,this.tempLocation,e,t),this.tempLocation):void 0}))}setStyle(e){let t=this.getDocument();if(t){var n=document.createElement("style");n.innerHTML=e,t.head.appendChild(n)}}getHightlightCoords(){return c(this,void 0,void 0,(function*(){let e=this.getDocument(),n=this.getIframe();if(e&&n)return t.getSelection(n).saveCharacterRanges(e.body)[0]}))}renderHighlighters(e,t){return c(this,void 0,void 0,(function*(){e=e.reverse();let n=this.getDocument(),i=this.getIframe();if(n&&i){yt(n);for(let r=0;rsetTimeout(e,5))),wt(JSON.parse(o.range),o.color,o.key,t,n,i)}catch(e){return void console.error(e,"Exception has been caught when restore character ranges.")}}}}))}removeOneNote(e,t){let n=this.getDocument();if(!n)return;const i=n.querySelectorAll(".kookit-note");for(let t=0;t{let t=e.contentDocument;t&&n.push(t)})),[e,...n]}getAllIframes(){let e=this.getIframe();if(!e)return[];if("PDF"!==this.format)return[e];let t=this.getDocument();if(!t)return[];let n=t.querySelectorAll("iframe"),i=[];return n.forEach((e=>{let t=e;i.push(t)})),[e,...i]}addTouchEvent(e,t){let n=this.getAllDocuments(),i=this.getAllIframes();for(let r=0;r-1)){let i=this.resolveChapter(e);if(i)return yield this.goToChapter(i.index,i.href,i.label),{handled:!0};let r=yield this.book.resolveHref(e),o=this.tempLocation.chapterDocIndex;if(r.index===parseInt(o)){let e=r.anchor(n);if(!e)return{handled:!1};let t=e.getAttribute("id")||"";r=Object.assign(Object.assign({},r),{id:t})}if(!r.anchor)return{handled:!1};let s=this.getPosition();if(r.index!==parseInt(s.chapterDocIndex)){yield this.goToChapterDocIndex(r.index);let i=r.anchor(n);return yield this.goToNode(i),ze(t.target)?{handled:!0,isShowMenu:!0,isJump:!0,href:e,node:i}:{handled:!0}}{let t=r.anchor(n);t&&(e="#"+t.getAttribute("id"))}}if(e&&this.resolveChapter(e)){let t=this.resolveChapter(e);return t?(yield this.goToChapter(t.index,t.href,t.label),{handled:!0}):{handled:!1}}if(e&&e.indexOf("#")>-1){let i=e.split("#").reverse()[0],r=n.body.querySelector("#"+CSS.escape(i));t.target.getBoundingClientRect();let o=!1;if(!r){if(0!==e.indexOf("#")){for(;e.startsWith(".");)e=e.substring(1);let t=this.resolveChapter(e.split("#")[0]);if(!t)return{handled:!1};yield this.goToChapter(t.index,t.href,t.label)}if(r=n.body.querySelector("#"+CSS.escape(i)),!r)return{handled:!1};o=!0,yield this.goToNode(r)}return ze(t.target)?{handled:!0,isShowMenu:!0,isJump:o,href:e,node:r}:{handled:!0}}if(e&&this.book.resolveHref&&this.book.resolveHref(e)){let t=yield this.book.resolveHref(e);return t?(yield this.goToChapter(t.index,t.href,t.label),{handled:!0}):{handled:!1}}return!e||-1!==e.indexOf("../")||0!==e.indexOf("http")&&0!==e.indexOf("mailto")||-1!==e.indexOf("OEBPF")||-1!==e.indexOf("OEBPS")||-1!==e.indexOf("footnote")||-1!==e.indexOf("blob")||-1!==e.indexOf("data:application")?{handled:!1}:{handled:!0,href:e,external:!0}}))}getFootnoteContent(e){return c(this,void 0,void 0,(function*(){if(ze(e)||!e.textContent.trim()){let t=e.nextSibling,n=e.textContent;for(;t&&(t.tagName!==e.tagName||!n.trim());)n+=t.textContent,t=t.nextSibling;n.trim()&&n.trim().length<=3e3&&((e=document.createElement("div")).innerHTML=n)}let t=e.innerHTML;return e.textContent.trim()?e.textContent.trim()&&e.textContent.trim().length>3e3?{handled:!1}:(t=yield(n=t,c(void 0,void 0,void 0,(function*(){const e=(new DOMParser).parseFromString(n,"text/html"),t=Array.from(e.getElementsByTagName("img"));for(const e of t)if(e.src&&e.src.startsWith("blob:"))try{const t=yield qe(e.src);e.src=t,e.style.maxWidth="100%"}catch(e){console.error("Error converting blob to data URL:",e)}return e.body.innerHTML}))),{handled:!0,content:t}):{handled:!1};var n}))}}const Ot={svg:"image/svg+xml",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",zip:"application/zip",rar:"application/x-rar-compressed","7z":"application/x-7z-compressed",tar:"application/x-tar",html:"text/html",htm:"text/html",xml:"text/xml",xhtml:"application/xhtml+xml",css:"text/css"},Ut={"image/svg+xml":"svg","image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp","application/zip":"zip","application/x-rar-compressed":"rar","application/x-7z-compressed":"7z","application/x-tar":"tar","text/html":"html","text/xml":"xml","application/xhtml+xml":"xhtml","text/css":"css"},Nt=t=>c(void 0,void 0,void 0,(function*(){let i=yield n.loadAsync(t);var r=i.file("toc.json");let o=[];r&&(o=JSON.parse(yield r.async("string")));var s=i.file("sections.json");let a=[];s&&(a=JSON.parse(yield s.async("string")));const l={getCover:()=>""};return l.sections=a.map(((e,t)=>({id:e.href,load:()=>(e=>c(void 0,void 0,void 0,(function*(){var t=i.file("chapters/"+e+".html");let n="";return t&&(n=yield t.async("string")),URL.createObjectURL(new Blob([n],{type:"text/html"}))})))(t),unload:()=>{},loadAsset:e=>(e=>c(void 0,void 0,void 0,(function*(){var t=i.file(e);let n;return t&&(n=yield t.async("arraybuffer")),URL.createObjectURL(new Blob([n],{type:Ot[e.split(".").reverse()[0]]}))})))(e)}))),l.toc=o.map((e=>({label:e.label,href:e.href,subitems:e.subitems}))),l.rendition={layout:"pre-paginated"},l.resolveHref=t=>({index:e.findLastIndex(a,{href:t})}),l.splitTOCHref=e=>[e,null],l.getTOCFragment=e=>e.documentElement,l})),Wt=e=>new Promise(((t,i)=>c(void 0,void 0,void 0,(function*(){let i=new b(e),r=yield i.getChapter(e.toc),o=yield i.getChapterDoc(),s=r,a=o.map((e=>({href:e.href,label:e.label}))),l=yield Promise.all(o.map((e=>c(void 0,void 0,void 0,(function*(){let t="";if(e.text&&e.text.load){let n=yield fetch(yield e.text.load()).then((e=>e.blob()));t=yield n.text()}return t}))))),A=new n;A.file("toc.json",JSON.stringify(s)),A.file("sections.json",JSON.stringify(a));let g=[];for(let e=0;ee.blob()));i.file(t+"."+Ut[o.type],o);let s="imgs/"+e+"/"+t+"."+Ut[o.type];n[t].src=s,n[t].getAttribute("xlink:href")&&n[t].setAttribute("xlink:href",s)}catch(e){console.error(e)}}let i=Array.from(t.getElementsByTagName("link"));for(let t=0;te.blob()));r.file(t+"."+Ut[i.type],i),n.href="css/"+e+"/"+t+"."+Ut[i.type]}catch(e){console.error(e)}}g.push(t.documentElement.innerHTML)}let d=A.folder("chapters");if(d){for(let e=0;ec(void 0,void 0,void 0,(function*(){t(yield new Response(e).arrayBuffer())})))).catch((e=>{t("err")}))}})))),Pt=4294967295,Kt=65535,zt=134695760,qt=zt,jt=33639248,Jt=101075792,Vt=22,Xt=void 0,Zt="undefined",_t="function";let $t=2;try{typeof navigator!=Zt&&navigator.hardwareConcurrency&&($t=navigator.hardwareConcurrency)}catch(e){}const en={workerURI:"./core/web-worker.js",wasmURI:"./core/streams/zlib/zlib-streams.wasm",chunkSize:65536,maxWorkers:$t,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,CompressionStream:typeof CompressionStream!=Zt&&CompressionStream,DecompressionStream:typeof DecompressionStream!=Zt&&DecompressionStream},tn=Object.assign({},en);function nn(e){const{baseURI:t,chunkSize:n,maxWorkers:i,terminateWorkerTimeout:r,useCompressionStream:o,useWebWorkers:s,CompressionStream:a,DecompressionStream:l,CompressionStreamZlib:A,DecompressionStreamZlib:c,workerURI:g,wasmURI:d}=e;rn("baseURI",t),rn("wasmURI",d),rn("workerURI",g),rn("chunkSize",n),rn("maxWorkers",i),rn("terminateWorkerTimeout",r),rn("useCompressionStream",o),rn("useWebWorkers",s),rn("CompressionStream",a),rn("DecompressionStream",l),rn("CompressionStreamZlib",A),rn("DecompressionStreamZlib",c)}function rn(e,t){t!==Xt&&(tn[e]=t)}const on="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";let sn,an,ln,An;function cn(e,t,n={}){const i="number"==typeof n.level?n.level:-1,r="number"==typeof n.outBuffer?n.outBuffer:65536,o="number"==typeof n.inBufferSize?n.inBufferSize:65536;return new TransformStream({start(){let n;if(this.out=an(r),this.in=an(o),this.inBufferSize=o,this._scratch=new Uint8Array(r),e?(this._process=sn.deflate_process,this._last_consumed=sn.deflate_last_consumed,this._end=sn.deflate_end,this.streamHandle=sn.deflate_new(),n="gzip"===t?sn.deflate_init_gzip(this.streamHandle,i):"deflate-raw"===t?sn.deflate_init_raw(this.streamHandle,i):sn.deflate_init(this.streamHandle,i)):"deflate64-raw"===t?(this._process=sn.inflate9_process,this._last_consumed=sn.inflate9_last_consumed,this._end=sn.inflate9_end,this.streamHandle=sn.inflate9_new(),n=sn.inflate9_init_raw(this.streamHandle)):(this._process=sn.inflate_process,this._last_consumed=sn.inflate_last_consumed,this._end=sn.inflate_end,this.streamHandle=sn.inflate_new(),n="deflate-raw"===t?sn.inflate_init_raw(this.streamHandle):"gzip"===t?sn.inflate_init_gzip(this.streamHandle):sn.inflate_init(this.streamHandle)),0!==n)throw new Error("init failed:"+n)},transform(t,n){try{const i=t,o=new Uint8Array(An.buffer),s=this._process,a=this._last_consumed,l=this.out,A=this._scratch;let c=0;for(;c>24&255;if(l&&(s.set(n.subarray(o,o+l),0),t.enqueue(s.slice(0,l))),1===A||0===l)break}}catch(e){t.error(e)}finally{if(this._end&&this.streamHandle){const e=this._end(this.streamHandle);0!==e&&t.error(new Error("end error:"+e))}this.in&&ln&&ln(this.in),this.out&&ln&&ln(this.out)}}})}let gn=!1;async function dn(e,{baseURI:t}){if(!gn){let i,r;try{try{r=new URL(e,t)}catch(e){}const n=await fetch(r);i=await n.arrayBuffer()}catch(t){if(!e.startsWith("data:application/wasm;base64,"))throw t;i=function(e){const t=e.split(",")[1],n=atob(t),i=n.length,r=new Uint8Array(i);for(let e=0;eo||o===Xt&&!A.length&&l?i.close():this.chunkOffset+=t}});return n}}class mn extends pn{constructor(e){super(),Object.assign(this,{blob:e,size:e.size})}async readUint8Array(e,t){const n=this,i=e+t,r=e||it&&(o=o.slice(e,i)),new Uint8Array(o)}}class Bn extends fn{constructor(e){super();const t=new TransformStream,n=[];e&&n.push(["Content-Type",e]),Object.defineProperty(this,un,{get:()=>t.writable}),this.blob=new Response(t.readable,{headers:n}).blob()}getData(){return this.blob}}class wn extends Bn{constructor(e){super(e),Object.assign(this,{encoding:e,utf8:!e||"utf-8"==e.toLowerCase()})}async getData(){const{encoding:e,utf8:t}=this,n=await super.getData();if(n.text&&t)return n.text();{const t=new FileReader;return new Promise(((i,r)=>{Object.assign(t,{onload:({target:e})=>i(e.result),onerror:()=>r(t.error)}),t.readAsText(n,e)}))}}}class Cn extends pn{constructor(e){super(),this.readers=e}async init(){const e=this,{readers:t}=e;e.lastDiskNumber=0,e.lastDiskOffset=0,await Promise.all(t.map((async(n,i)=>{await n.init(),i!=t.length-1&&(e.lastDiskOffset+=n.size),e.size+=n.size}))),super.init()}async readUint8Array(e,t,n=0){const i=this,{readers:r}=this;let o,s=n;-1==s&&(s=r.length-1);let a=e;for(;r[s]&&a>=r[s].size;)a-=r[s].size,s++;const l=r[s];if(l){const r=l.size;if(a+t<=r)o=await vn(l,a,t);else{const s=r-a;o=new Uint8Array(t);const A=await vn(l,a,s);o.set(A,0);const c=await i.readUint8Array(e+s,t-s,n);o.set(c,s),A.length+c.length=s?(await a(t.subarray(0,s)),await l(),n.diskOffset+=i.size,n.diskNumber++,o=null,await this.write(t.subarray(s))):await a(t);else{const{value:s,done:a}=await e.next();if(a&&!s)throw new Error("Writer iterator completed too soon");i=s,i.size=0,i.maxSize&&(n.maxSize=i.maxSize),n.availableSize=n.maxSize,await bn(i),r=s.writable,o=r.getWriter(),await this.write(t)}},async close(){await o.ready,await l()}});async function a(e){const t=e.length;t&&(await o.ready,await o.write(e),i.size+=t,n.size+=t,n.availableSize-=t)}async function l(){await o.close()}Object.defineProperty(n,un,{get:()=>s})}}class En{constructor(e){return Array.isArray(e)&&(e=new Cn(e)),e instanceof ReadableStream&&(e={readable:e}),e}}class In{constructor(e){return e.writable===Xt&&typeof e.next==_t&&(e=new yn(e)),e instanceof WritableStream&&(e={writable:e}),e.size===Xt&&(e.size=0),e instanceof yn||Object.assign(e,{diskNumber:0,diskOffset:0,availableSize:1/0,maxSize:1/0}),e}}async function bn(e,t){if(!e.init||e.initialized)return Promise.resolve();await e.init(t)}function vn(e,t,n,i){return e.readUint8Array(t,n,i)}const xn=[];for(let e=0;e<256;e++){let t=e;for(let e=0;e<8;e++)1&t?t=t>>>1^3988292384:t>>>=1;xn[e]=t}class Qn{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let n=0,i=0|e.length;n>>8^xn[255&(t^e[n])];this.crc=t}get(){return~this.crc}}class Dn extends TransformStream{constructor(){let e;const t=new Qn;super({transform(e,n){t.append(e),n.enqueue(e)},flush(){const n=new Uint8Array(4);new DataView(n.buffer).setUint32(0,t.get()),e.value=n}}),e=this}}const Sn={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const n=e[e.length-1],i=Sn.getPartial(n);return 32===i?e.concat(t):Sn._shiftRight(t,i,0|n,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const n=e[t-1];return 32*(t-1)+Sn.getPartial(n)},clamp(e,t){if(32*e.length0&&t&&(e[n-1]=Sn.partial(t,e[n-1]&2147483648>>t-1,1)),e},partial:(e,t,n)=>32===e?t:(n?0|t:t<<32-e)+1099511627776*e,getPartial:e=>Math.round(e/1099511627776)||32,_shiftRight(e,t,n,i){for(void 0===i&&(i=[]);t>=32;t-=32)i.push(n),n=0;if(0===t)return i.concat(e);for(let r=0;r>>t),n=e[r]<<32-t;const r=e.length?e[e.length-1]:0,o=Sn.getPartial(r);return i.push(Sn.partial(t+o&31,t+o>32?n:i.pop(),1)),i}},kn={bytes:{fromBits(e){const t=Sn.bitLength(e)/8,n=new Uint8Array(t);let i;for(let r=0;r>>24,i<<=8;return n},toBits(e){const t=[];let n,i=0;for(n=0;n9007199254740991)throw new Error("Cannot hash more than 2^53 - 1 bits");const o=new Uint32Array(n);let s=0;for(let e=t.blockSize+i-(t.blockSize+i&t.blockSize-1);e<=r;e+=t.blockSize)t._block(o.subarray(16*s,16*(s+1))),s+=1;return n.splice(0,16*s),t}finalize(){const e=this;let t=e._buffer;const n=e._h;t=Sn.concat(t,[Sn.partial(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(Math.floor(e._length/4294967296)),t.push(0|e._length);t.length;)e._block(t.splice(0,16));return e.reset(),n}_f(e,t,n,i){return e<=19?t&n|~t&i:e<=39?t^n^i:e<=59?t&n|t&i|n&i:e<=79?t^n^i:void 0}_S(e,t){return t<>>32-e}_block(e){const t=this,n=t._h,i=Array(80);for(let t=0;t<16;t++)i[t]=e[t];let r=n[0],o=n[1],s=n[2],a=n[3],l=n[4];for(let e=0;e<=79;e++){e>=16&&(i[e]=t._S(1,i[e-3]^i[e-8]^i[e-14]^i[e-16]));const n=t._S(5,r)+t._f(e,o,s,a)+l+i[e]+t._key[Math.floor(e/20)]|0;l=a,a=s,s=t._S(30,o),o=r,r=n}n[0]=n[0]+r|0,n[1]=n[1]+o|0,n[2]=n[2]+s|0,n[3]=n[3]+a|0,n[4]=n[4]+l|0}}},Fn={aes:class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const n=t._tables[0][4],i=t._tables[1],r=e.length;let o,s,a,l=1;if(4!==r&&6!==r&&8!==r)throw new Error("invalid aes key size");for(t._key=[s=e.slice(0),a=[]],o=r;o<4*r+28;o++){let e=s[o-1];(o%r==0||8===r&&o%r==4)&&(e=n[e>>>24]<<24^n[e>>16&255]<<16^n[e>>8&255]<<8^n[255&e],o%r==0&&(e=e<<8^e>>>24^l<<24,l=l<<1^283*(l>>7))),s[o]=s[o-r]^e}for(let e=0;o;e++,o--){const t=s[3&e?o:o-4];a[e]=o<=4||e<4?t:i[0][n[t>>>24]]^i[1][n[t>>16&255]]^i[2][n[t>>8&255]]^i[3][n[255&t]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){const e=this._tables[0],t=this._tables[1],n=e[4],i=t[4],r=[],o=[];let s,a,l,A;for(let e=0;e<256;e++)o[(r[e]=e<<1^283*(e>>7))^e]=e;for(let c=s=0;!n[c];c^=a||1,s=o[s]||1){let o=s^s<<1^s<<2^s<<3^s<<4;o=o>>8^255&o^99,n[c]=o,i[o]=c,A=r[l=r[a=r[c]]];let g=16843009*A^65537*l^257*a^16843008*c,d=257*r[o]^16843008*o;for(let n=0;n<4;n++)e[n][c]=d=d<<24^d>>>8,t[n][o]=g=g<<24^g>>>8}for(let n=0;n<5;n++)e[n]=e[n].slice(0),t[n]=t[n].slice(0)}_crypt(e,t){if(4!==e.length)throw new Error("invalid aes block size");const n=this._key[t],i=n.length/4-2,r=[0,0,0,0],o=this._tables[t],s=o[0],a=o[1],l=o[2],A=o[3],c=o[4];let g,d,h,u=e[0]^n[0],f=e[t?3:1]^n[1],p=e[2]^n[2],m=e[t?1:3]^n[3],B=4;for(let e=0;e>>24]^a[f>>16&255]^l[p>>8&255]^A[255&m]^n[B],d=s[f>>>24]^a[p>>16&255]^l[m>>8&255]^A[255&u]^n[B+1],h=s[p>>>24]^a[m>>16&255]^l[u>>8&255]^A[255&f]^n[B+2],m=s[m>>>24]^a[u>>16&255]^l[f>>8&255]^A[255&p]^n[B+3],B+=4,u=g,f=d,p=h;for(let e=0;e<4;e++)r[t?3&-e:e]=c[u>>>24]<<24^c[f>>16&255]<<16^c[p>>8&255]<<8^c[255&m]^n[B++],g=u,u=f,f=p,p=m,m=g;return r}}},Yn={getRandomValues(e){const t=new Uint32Array(e.buffer),n=e=>{let t=987654321;const n=4294967295;return function(){t=36969*(65535&t)+(t>>16)&n;return(((t<<16)+(e=18e3*(65535&e)+(e>>16)&n)&n)/4294967296+.5)*(Math.random()>.5?1:-1)}};for(let i,r=0;r>24))e+=1<<24;else{let t=e>>16&255,n=e>>8&255,i=255&e;255===t?(t=0,255===n?(n=0,255===i?i=0:++i):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=i}return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,n){let i;if(!(i=t.length))return[];const r=Sn.bitLength(t);for(let r=0;rnew Tn.hmacSha1(kn.bytes.toBits(e)),pbkdf2(e,t,n,i){if(n=n||1e4,i<0||n<0)throw new Error("invalid params to pbkdf2");const r=1+(i>>5)<<2;let o,s,a,l,A;const c=new ArrayBuffer(r),g=new DataView(c);let d=0;const h=Sn;for(t=kn.bytes.toBits(t),A=1;d<(r||1);A++){for(o=s=e.encrypt(h.concat(t,[A])),a=1;ar&&(e=(new n).update(e).finalize());for(let t=0;tthis.resolveReady=e)),password:Ai(e,t),signed:n,strength:i-1,pending:new Uint8Array})},async transform(e,t){const n=this,{password:i,strength:o,resolveReady:s,ready:a}=n;i?(await async function(e,t,n,i){const r=await li(e,t,n,gi(i,0,qn[t])),o=gi(i,qn[t]);if(r[0]!=o[0]||r[1]!=o[1])throw new Error(Hn)}(n,o,i,gi(e,0,qn[o]+2)),e=gi(e,qn[o]+2),r?t.error(new Error(On)):s()):await a;const l=new Uint8Array(e.length-Jn-(e.length-Jn)%Nn);t.enqueue(ai(n,e,l,0,Jn,!0))},async flush(e){const{signed:t,ctr:n,hmac:i,pending:r,ready:o}=this;if(i&&n){await o;const s=gi(r,0,r.length-Jn),a=gi(r,r.length-Jn);let l=new Uint8Array;if(s.length){const e=hi($n,s);i.update(e);const t=n.update(e);l=di($n,t)}if(t){const e=gi(di($n,i.digest()),0,Jn);for(let t=0;tthis.resolveReady=e)),password:Ai(e,t),strength:n-1,pending:new Uint8Array})},async transform(e,t){const n=this,{password:i,strength:r,resolveReady:o,ready:s}=n;let a=new Uint8Array;i?(a=await async function(e,t,n){const i=Un(new Uint8Array(qn[t])),r=await li(e,t,n,i);return ci(i,r)}(n,r,i),o()):await s;const l=new Uint8Array(a.length+e.length-e.length%Nn);l.set(a,0),t.enqueue(ai(n,e,l,a.length,0))},async flush(e){const{ctr:t,hmac:n,pending:r,ready:o}=this;if(n&&t){await o;let s=new Uint8Array;if(r.length){const e=t.update(hi($n,r));n.update(e),s=di($n,e)}i.signature=di($n,n.digest()).slice(0,Jn),e.enqueue(ci(s,i.signature))}}}),i=this}}function ai(e,t,n,i,r,o){const{ctr:s,hmac:a,pending:l}=e,A=t.length-r;let c;for(l.length&&(t=ci(l,t),n=function(e,t){if(t&&t>e.length){const n=e;(e=new Uint8Array(t)).set(n,0)}return e}(n,A-A%Nn)),c=0;c<=A-Nn;c+=Nn){const e=hi($n,gi(t,c,c+Nn));o&&a.update(e);const r=s.update(e);o||a.update(r),n.set(di($n,r),c+i)}return e.pending=gi(t,c),n}async function li(e,t,n,i){e.password=null;const r=await async function(e,t,n,i,r){if(!ii)return Tn.importKey(t);try{return await Zn.importKey(e,t,n,i,r)}catch(e){return ii=!1,Tn.importKey(t)}}("raw",n,Pn,!1,zn),o=await async function(e,t,n){if(!ri)return Tn.pbkdf2(t,e.salt,Kn.iterations,n);try{return await Zn.deriveBits(e,t,n)}catch(i){return ri=!1,Tn.pbkdf2(t,e.salt,Kn.iterations,n)}}(Object.assign({salt:i},Kn),r,8*(2*jn[t]+2)),s=new Uint8Array(o),a=hi($n,gi(s,0,jn[t])),l=hi($n,gi(s,jn[t],2*jn[t])),A=gi(s,2*jn[t]);return Object.assign(e,{keys:{key:a,authentication:l,passwordVerification:A},ctr:new ti(new ei(a),Array.from(Vn)),hmac:new ni(l)}),A}function Ai(e,t){return t===Xt?function(e){if(typeof TextEncoder==Zt){e=unescape(encodeURIComponent(e));const t=new Uint8Array(e.length);for(let n=0;n>>24]),r=~e.crcKey2.get(),e.keys=[n,i,r]}function Ci(e){const t=2|e.keys[2];return yi(Math.imul(t,1^t)>>>8)}function yi(e){return 255&e}function Ei(e){return 4294967295&e}const Ii="Invalid uncompressed size";class bi extends TransformStream{constructor(e,{chunkSize:t,CompressionStreamZlib:n,CompressionStream:i}){super({});const{compressed:r,encrypted:o,useCompressionStream:s,zipCrypto:a,signed:l,level:A}=e,c=this;let g,d,h=super.readable;o&&!a||!l||(g=new Dn,h=Di(h,g)),r&&(h=Qi(h,s,{level:A,chunkSize:t},i,n,i)),o&&(a?h=Di(h,new fi(e)):(d=new si(e),h=Di(h,d))),xi(c,h,(()=>{let e;o&&!a&&(e=d.signature),o&&!a||!l||(e=new DataView(g.value.buffer).getUint32(0)),c.signature=e}))}}class vi extends TransformStream{constructor(e,{chunkSize:t,DecompressionStreamZlib:n,DecompressionStream:i}){super({});const{zipCrypto:r,encrypted:o,signed:s,signature:a,compressed:l,useCompressionStream:A,deflate64:c}=e;let g,d,h=super.readable;o&&(r?h=Di(h,new ui(e)):(d=new oi(e),h=Di(h,d))),l&&(h=Qi(h,A,{chunkSize:t,deflate64:c},i,n,i)),o&&!r||!s||(g=new Dn,h=Di(h,g)),xi(this,h,(()=>{if((!o||r)&&s){const e=new DataView(g.value.buffer);if(a!=e.getUint32(0,!1))throw new Error(Gn)}}))}}function xi(e,t,n){t=Di(t,new TransformStream({flush:n})),Object.defineProperty(e,"readable",{get:()=>t})}function Qi(e,t,n,i,r,o){const s=t&&i?i:r||o,a=n.deflate64?"deflate64-raw":"deflate-raw";try{e=Di(e,new s(a,n))}catch(i){if(!t)throw i;if(r)e=Di(e,new r(a,n));else{if(!o)throw i;e=Di(e,new o(a,n))}}return e}function Di(e,t){return e.pipeThrough(t)}const Si="message",ki="start",Mi="pull",Fi="data",Yi="close",Li="inflate";class Ti extends TransformStream{constructor(e,t){super({});const n=this,{codecType:i}=e;let r;i.startsWith("deflate")?r=bi:i.startsWith(Li)&&(r=vi),n.outputSize=0;let o=0;const s=new r(e,t),a=super.readable,l=new TransformStream({transform(e,t){e&&e.length&&(o+=e.length,t.enqueue(e))},flush(){Object.assign(n,{inputSize:o})}}),A=new TransformStream({transform(t,i){if(t&&t.length&&(i.enqueue(t),n.outputSize+=t.length,e.outputSize!==Xt&&n.outputSize>e.outputSize))throw new Error(Ii)},flush(){const{signature:e}=s;Object.assign(n,{signature:e,inputSize:o})}});Object.defineProperty(n,"readable",{get:()=>a.pipeThrough(l).pipeThrough(s).pipeThrough(A)})}}class Ri extends TransformStream{constructor(e){let t;super({transform:function n(i,r){if(t){const e=new Uint8Array(t.length+i.length);e.set(t),e.set(i,t.length),i=e,t=null}i.length>e?(r.enqueue(i.slice(0,e)),n(i.slice(e),r)):t=i},flush(e){t&&t.length&&e.enqueue(t)}})}}let Hi=typeof Worker!=Zt;class Gi{constructor(e,{readable:t,writable:n},{options:i,config:r,streamOptions:o,useWebWorkers:s,transferStreams:a,workerURI:l},A){const{signal:c}=o;return Object.assign(e,{busy:!0,readable:t.pipeThrough(new Ri(r.chunkSize)).pipeThrough(new Oi(o),{signal:c}),writable:n,options:Object.assign({},i),workerURI:l,transferStreams:a,terminate:()=>new Promise((t=>{const{worker:n,busy:i}=e;n?(i?e.resolveTerminated=t:(n.terminate(),t()),e.interface=null):t()})),onTaskFinished(){const{resolveTerminated:t}=e;t&&(e.resolveTerminated=null,e.terminated=!0,e.worker.terminate(),t()),e.busy=!1,A(e)}}),(s&&Hi?Wi:Ni)(e,r)}}class Oi extends TransformStream{constructor({onstart:e,onprogress:t,size:n,onend:i}){let r=0;super({async start(){e&&await Ui(e,n)},async transform(e,i){r+=e.length,t&&await Ui(t,r,n),i.enqueue(e)},async flush(){i&&await Ui(i,r)}})}}async function Ui(e,...t){try{await e(...t)}catch(e){}}function Ni(e,t){return{run:()=>async function({options:e,readable:t,writable:n,onTaskFinished:i},r){let o;try{if(!e.useCompressionStream&&!gn){let{wasmURI:e}=r;typeof e==_t&&(e=e()),await dn(e,r)}o=new Ti(e,r),await t.pipeThrough(o).pipeTo(n,{preventClose:!0,preventAbort:!0});const{signature:i,inputSize:s,outputSize:a}=o;return{signature:i,inputSize:s,outputSize:a}}catch(e){throw o&&(e.outputSize=o.outputSize),e}finally{i()}}(e,t)}}function Wi(e,t){const{baseURI:n,chunkSize:i}=t;let{wasmURI:r}=t;if(!e.interface){let o;typeof r==_t&&(r=r());try{o=function(e,t,n){const i={type:"module"};let r,o;typeof e==_t&&(e=e());if(e.startsWith("data:")||e.startsWith("blob:"))try{o=new Worker(e)}catch(t){o=new Worker(e,i)}else{try{r=new URL(e,t)}catch(t){r=e}o=new Worker(r,i)}return o.addEventListener(Si,(e=>async function({data:e},t){const{type:n,value:i,messageId:r,result:o,error:s}=e,{reader:a,writer:l,resolveResult:A,rejectResult:c,onTaskFinished:g}=t;try{if(s){const{message:e,stack:t,code:n,name:i,outputSize:r}=s,o=new Error(e);Object.assign(o,{stack:t,code:n,name:i,outputSize:r}),d(o)}else{if(n==Mi){const{value:e,done:n}=await a.read();Ki({type:Fi,value:e,done:n,messageId:r},t)}n==Fi&&(await l.ready,await l.write(new Uint8Array(i)),Ki({type:"ack",messageId:r},t)),n==Yi&&d(null,o)}}catch(s){Ki({type:Yi,messageId:r},t),d(s)}function d(e,t){e?c(e):A(t),l&&l.releaseLock(),g()}}(e,n))),o}(e.workerURI,n,e)}catch(n){return Hi=!1,Ni(e,t)}Object.assign(e,{worker:o,interface:{run:()=>async function(e,t){let n,i;const r=new Promise(((e,t)=>{n=e,i=t}));Object.assign(e,{reader:null,writer:null,resolveResult:n,rejectResult:i,result:r});const{readable:o,options:s}=e,{writable:a,closed:l}=function(e){let t;const n=new Promise((e=>t=e)),i=new WritableStream({async write(t){const n=e.getWriter();await n.ready,await n.write(t),n.releaseLock()},close(){t()},abort:t=>e.getWriter().abort(t)});return{writable:i,closed:n}}(e.writable),A=Ki({type:ki,options:s,config:t,readable:o,writable:a},e);A||Object.assign(e,{reader:o.getReader(),writer:a.getWriter()});const c=await r;A||await a.getWriter().close();return await l,c}(e,{chunkSize:i,wasmURI:r,baseURI:n})}})}return e.interface}let Pi=!0;function Ki(e,{worker:t,writer:n,onTaskFinished:i,transferStreams:r}){try{const{value:n,readable:i,writable:o}=e,s=[];if(n&&(n.byteLength!e.busy));if(n)return Vi(n),new Gi(n,e,t,h);if(zi.lengthqi.push({resolve:n,stream:e,workerOptions:t})))}()).run();function h(e){if(qi.length){const[{resolve:t,stream:n,workerOptions:i}]=qi.splice(0,1);t(new Gi(e,n,i,h))}else e.worker?(Vi(e),function(e,t){const{config:n}=t,{terminateWorkerTimeout:i}=n;Number.isFinite(i)&&i>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout((async()=>{zi=zi.filter((t=>t!=e));try{await e.terminate()}catch(e){}}),i))}(e,t)):zi=zi.filter((t=>t!=e))}}function Vi(e){const{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}const Xi="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split(""),Zi=256==Xi.length;function _i(e,t){return t&&"cp437"==t.trim().toLowerCase()?function(e){if(Zi){let t="";for(let n=0;nthis[t]=e[t]))}}const fr="File format is not recognized",pr="Zip64 extra field not found",mr="Compression method not supported",Br="Split zip file",wr="Overlapping entry found",Cr="utf-8",yr="cp437",Er=[[ir,Pt],[rr,Pt],[or,Pt],[sr,Kt]],Ir={[Kt]:{getValue:Lr,bytes:4},[Pt]:{getValue:Tr,bytes:8}};class br{constructor(e,t={}){Object.assign(this,{reader:new En(e),options:t,config:tn,readRanges:[]})}async*getEntriesGenerator(e={}){const t=this;let{reader:n}=t;const{config:i}=t;if(await bn(n),n.size!==Xt&&n.readUint8Array||(n=new mn(await new Response(n.readable).blob()),await bn(n)),n.size=0;e--)if(s[e]==o[0]&&s[e+1]==o[1]&&s[e+2]==o[2]&&s[e+3]==o[3])return{offset:r+e,buffer:s.slice(e,e+i).buffer}}}(n,101010256,n.size,Vt,1048560);if(!r){throw Lr(Rr(await vn(n,0,4)))==zt?new Error(Br):new Error("End of central directory not found")}const o=Rr(r);let s=Lr(o,12),a=Lr(o,16);const l=r.offset,A=Yr(o,20),c=l+Vt+A;let g=Yr(o,4);const d=n.lastDiskNumber||0;let h=Yr(o,6),u=Yr(o,8),f=0,p=0;if(a==Pt||s==Pt||u==Kt||h==Kt){const e=Rr(await vn(n,r.offset-20,20));if(117853008==Lr(e,0)){a=Tr(e,8);let t=await vn(n,a,56,-1),i=Rr(t);const o=r.offset-20-56;if(Lr(i,0)!=Jt&&a!=o){const e=a;a=o,a>e&&(f=a-e),t=await vn(n,a,56,-1),i=Rr(t)}if(Lr(i,0)!=Jt)throw new Error("End of Zip64 central directory locator not found");g==Kt&&(g=Lr(i,16)),h==Kt&&(h=Lr(i,20)),u==Kt&&(u=Tr(i,32)),s==Pt&&(s=Tr(i,40)),a-=s}}if(a>=n.size&&(f=n.size-a-s-Vt,a=n.size-s-Vt),d!=g)throw new Error(Br);if(a<0)throw new Error(fr);let m=0,B=await vn(n,a,s,h),w=Rr(B);if(s){const e=r.offset-s;if(Lr(w,m)!=jt&&a!=e){const t=a;a=e,a>t&&(f+=a-t),B=await vn(n,a,s,h),w=Rr(B)}}const C=r.offset-a-(n.lastDiskOffset||0);if(s!=C&&C>=0&&(s=C,B=await vn(n,a,s,h),w=Rr(B)),a<0||a>=n.size)throw new Error(fr);const y=Sr(t,e,"filenameEncoding"),E=Sr(t,e,"commentEncoding");for(let r=0;r>8),d=c>>8==3,h=B.subarray(a,l),C=Yr(w,m+32),I=A+C,b=B.subarray(A,I),v=s,x=s,Q=Lr(w,m+38),D=g&&!(16&~Fr(w,m+38))||d&&16384==(Q>>16&61440)||h.length&&h.at(-1)=="/".charCodeAt(0),S=d&&!!(Q>>16&73),k=Lr(w,m+42)+f;Object.assign(o,{versionMadeBy:c,msDosCompatible:g,compressedSize:0,uncompressedSize:0,commentLength:C,directory:D,offset:k,diskNumberStart:Yr(w,m+34),internalFileAttributes:Yr(w,m+36),externalFileAttributes:Q,rawFilename:h,filenameUTF8:v,commentUTF8:x,rawExtraField:B.subarray(l,A),executable:S}),o.internalFileAttribute=o.internalFileAttributes,o.externalFileAttribute=o.externalFileAttributes;const M=Sr(t,e,"decodeText")||_i,F=v?Cr:y||yr,Y=x?Cr:E||yr;let L=M(h,F);L===Xt&&(L=_i(h,F));let T=M(b,Y);T===Xt&&(T=_i(b,Y)),Object.assign(o,{rawComment:b,filename:L,comment:T,directory:D||L.endsWith("/")}),p=Math.max(k,p),Qr(o,o,w,m+6),o.zipCrypto=o.encrypted&&!o.extraFieldAES;const R=new ur(o);R.getData=(e,n)=>o.getData(e,R,t.readRanges,n),R.arrayBuffer=async e=>{const n=new TransformStream,[i]=await Promise.all([new Response(n.readable).arrayBuffer(),o.getData(n,R,t.readRanges,e)]);return i},m=I;const{onprogress:H}=e;if(H)try{await H(r+1,u,new ur(o))}catch(e){}yield R}const I=Sr(t,e,"extractPrependedData"),b=Sr(t,e,"extractAppendedData");return I&&(t.prependedData=p>0?await vn(n,0,p):new Uint8Array),t.comment=A?await vn(n,l+Vt,A):new Uint8Array,b&&(t.appendedData=c>>8&255:h>>>24&255),outputSize:E?p:f,signature:h,compressed:0!=c&&!E,encrypted:r.encrypted&&!E,useWebWorkers:Sr(r,i,"useWebWorkers"),useCompressionStream:U,transferStreams:Sr(r,i,"transferStreams"),deflate64:O,checkPasswordOnly:Y},config:g,streamOptions:{signal:F,size:k,onstart:R,onprogress:H,onend:G}};let W;L&&await async function({reader:e,fileEntry:t,offset:n,diskNumberStart:i,signature:r,compressedSize:o,uncompressedSize:s,dataOffset:a,dataDescriptor:l,extraFieldZip64:A,readRanges:c}){let g=0;if(i)for(let t=0;t=e.start&&h.start>1,dataDescriptor:!(8&~i),languageEncodingFlag:!(2048&~i)},rawLastModDate:o,lastModDate:kr(o),filenameLength:Yr(t,n+22),extraFieldLength:Yr(t,n+24)})}function Qr(e,t,n,i,r){const{rawExtraField:o}=t,s=t.extraField=new Map,a=Rr(new Uint8Array(o));let l=0;try{for(;lt[e]==n));for(let r=0,o=0;r=5&&(o.push(ar),s.push(lr));let a=1;o.forEach(((n,r)=>{if(e.data.length>=a+4){const o=Lr(i,a);t[n]=e[n]=new Date(1e3*o);const l=s[r];e[l]=o}a+=4}))}(f,t,r),t.extraFieldExtendedTimestamp=f);const p=s.get(6534);p&&(t.extraFieldUSDZ=p)}function Dr(e,t,n,i,r){const o=Rr(e.data),s=new Qn;s.append(r[n]);const a=Rr(new Uint8Array(4));a.setUint32(0,s.get(),!0);const l=Lr(o,1);Object.assign(e,{version:Fr(o,0),[t]:_i(e.data.subarray(5)),valid:!r.bitFlag.languageEncodingFlag&&l==Lr(a,0)}),e.valid&&(i[t]=e[t],i[t+"UTF8"]=!0)}function Sr(e,t,n){return t[n]===Xt?e.options[n]:t[n]}function kr(e){const t=(4294901760&e)>>16,n=65535&e;try{return new Date(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&n)>>11,(2016&n)>>5,2*(31&n),0)}catch(e){}}function Mr(e){return new Date(Number(e/BigInt(1e4)-BigInt(116444736e5)))}function Fr(e,t){return e.getUint8(t)}function Yr(e,t){return e.getUint16(t,!0)}function Lr(e,t){return e.getUint32(t,!0)}function Tr(e,t){return Number(e.getBigUint64(t,!0))}function Rr(e){return new DataView(e.buffer)}let Hr;try{Hr=import.meta.url}catch(e){}nn({baseURI:Hr,CompressionStreamZlib:class{constructor(e="deflate",t){return cn(!0,e,t)}},DecompressionStreamZlib:class{constructor(e="deflate",t){return cn(!1,e,t)}}});const Gr={application:{"andrew-inset":"ez",annodex:"anx","atom+xml":"atom","atomcat+xml":"atomcat","atomserv+xml":"atomsrv",bbolin:"lin","cu-seeme":"cu","davmount+xml":"davmount",dsptype:"tsp",ecmascript:["es","ecma"],futuresplash:"spl",hta:"hta","java-archive":"jar","java-serialized-object":"ser","java-vm":"class",m3g:"m3g","mac-binhex40":"hqx",mathematica:["nb","ma","mb"],msaccess:"mdb",msword:["doc","dot","wiz"],mxf:"mxf",oda:"oda",ogg:"ogx",pdf:"pdf","pgp-keys":"key","pgp-signature":["asc","sig"],"pics-rules":"prf",postscript:["ps","ai","eps","epsi","epsf","eps2","eps3"],rar:"rar","rdf+xml":"rdf","rss+xml":"rss",rtf:"rtf","xhtml+xml":["xhtml","xht"],xml:["xml","xsl","xsd","xpdl"],"xspf+xml":"xspf",zip:"zip","vnd.android.package-archive":"apk","vnd.cinderella":"cdy","vnd.google-earth.kml+xml":"kml","vnd.google-earth.kmz":"kmz","vnd.mozilla.xul+xml":"xul","vnd.ms-excel":["xls","xlb","xlt","xlm","xla","xlc","xlw"],"vnd.ms-pki.seccat":"cat","vnd.ms-pki.stl":"stl","vnd.ms-powerpoint":["ppt","pps","pot","ppa","pwz"],"vnd.oasis.opendocument.chart":"odc","vnd.oasis.opendocument.database":"odb","vnd.oasis.opendocument.formula":"odf","vnd.oasis.opendocument.graphics":"odg","vnd.oasis.opendocument.graphics-template":"otg","vnd.oasis.opendocument.image":"odi","vnd.oasis.opendocument.presentation":"odp","vnd.oasis.opendocument.presentation-template":"otp","vnd.oasis.opendocument.spreadsheet":"ods","vnd.oasis.opendocument.spreadsheet-template":"ots","vnd.oasis.opendocument.text":"odt","vnd.oasis.opendocument.text-master":["odm","otm"],"vnd.oasis.opendocument.text-template":"ott","vnd.oasis.opendocument.text-web":"oth","vnd.openxmlformats-officedocument.spreadsheetml.sheet":"xlsx","vnd.openxmlformats-officedocument.spreadsheetml.template":"xltx","vnd.openxmlformats-officedocument.presentationml.presentation":"pptx","vnd.openxmlformats-officedocument.presentationml.slideshow":"ppsx","vnd.openxmlformats-officedocument.presentationml.template":"potx","vnd.openxmlformats-officedocument.wordprocessingml.document":"docx","vnd.openxmlformats-officedocument.wordprocessingml.template":"dotx","vnd.smaf":"mmf","vnd.stardivision.calc":"sdc","vnd.stardivision.chart":"sds","vnd.stardivision.draw":"sda","vnd.stardivision.impress":"sdd","vnd.stardivision.math":["sdf","smf"],"vnd.stardivision.writer":["sdw","vor"],"vnd.stardivision.writer-global":"sgl","vnd.sun.xml.calc":"sxc","vnd.sun.xml.calc.template":"stc","vnd.sun.xml.draw":"sxd","vnd.sun.xml.draw.template":"std","vnd.sun.xml.impress":"sxi","vnd.sun.xml.impress.template":"sti","vnd.sun.xml.math":"sxm","vnd.sun.xml.writer":"sxw","vnd.sun.xml.writer.global":"sxg","vnd.sun.xml.writer.template":"stw","vnd.symbian.install":["sis","sisx"],"vnd.visio":["vsd","vst","vss","vsw","vsdx","vssx","vstx","vssm","vstm"],"vnd.wap.wbxml":"wbxml","vnd.wap.wmlc":"wmlc","vnd.wap.wmlscriptc":"wmlsc","vnd.wordperfect":"wpd","vnd.wordperfect5.1":"wp5","x-123":"wk","x-7z-compressed":"7z","x-abiword":"abw","x-apple-diskimage":"dmg","x-bcpio":"bcpio","x-bittorrent":"torrent","x-cbr":["cbr","cba","cbt","cb7"],"x-cbz":"cbz","x-cdf":["cdf","cda"],"x-cdlink":"vcd","x-chess-pgn":"pgn","x-cpio":"cpio","x-csh":"csh","x-director":["dir","dxr","cst","cct","cxt","w3d","fgd","swa"],"x-dms":"dms","x-doom":"wad","x-dvi":"dvi","x-httpd-eruby":"rhtml","x-font":"pcf.Z","x-freemind":"mm","x-gnumeric":"gnumeric","x-go-sgf":"sgf","x-graphing-calculator":"gcf","x-gtar":["gtar","taz"],"x-hdf":"hdf","x-httpd-php":["phtml","pht","php"],"x-httpd-php-source":"phps","x-httpd-php3":"php3","x-httpd-php3-preprocessed":"php3p","x-httpd-php4":"php4","x-httpd-php5":"php5","x-ica":"ica","x-info":"info","x-internet-signup":["ins","isp"],"x-iphone":"iii","x-iso9660-image":"iso","x-java-jnlp-file":"jnlp","x-jmol":"jmz","x-killustrator":"kil","x-latex":"latex","x-lyx":"lyx","x-lzx":"lzx","x-maker":["frm","fb","fbdoc"],"x-ms-wmd":"wmd","x-msdos-program":["com","exe","bat","dll"],"x-netcdf":["nc"],"x-ns-proxy-autoconfig":["pac","dat"],"x-nwc":"nwc","x-object":"o","x-oz-application":"oza","x-pkcs7-certreqresp":"p7r","x-python-code":["pyc","pyo"],"x-qgis":["qgs","shp","shx"],"x-quicktimeplayer":"qtl","x-redhat-package-manager":["rpm","rpa"],"x-ruby":"rb","x-sh":"sh","x-shar":"shar","x-shockwave-flash":["swf","swfl"],"x-silverlight":"scr","x-stuffit":"sit","x-sv4cpio":"sv4cpio","x-sv4crc":"sv4crc","x-tar":"tar","x-tex-gf":"gf","x-tex-pk":"pk","x-texinfo":["texinfo","texi"],"x-trash":["~","%","bak","old","sik"],"x-ustar":"ustar","x-wais-source":"src","x-wingz":"wz","x-x509-ca-cert":["crt","der","cer"],"x-xcf":"xcf","x-xfig":"fig","x-xpinstall":"xpi",applixware:"aw","atomsvc+xml":"atomsvc","ccxml+xml":"ccxml","cdmi-capability":"cdmia","cdmi-container":"cdmic","cdmi-domain":"cdmid","cdmi-object":"cdmio","cdmi-queue":"cdmiq","docbook+xml":"dbk","dssc+der":"dssc","dssc+xml":"xdssc","emma+xml":"emma","epub+zip":"epub",exi:"exi","font-tdpfr":"pfr","gml+xml":"gml","gpx+xml":"gpx",gxf:"gxf",hyperstudio:"stk","inkml+xml":["ink","inkml"],ipfix:"ipfix","jsonml+json":"jsonml","lost+xml":"lostxml","mads+xml":"mads",marc:"mrc","marcxml+xml":"mrcx","mathml+xml":["mathml","mml"],mbox:"mbox","mediaservercontrol+xml":"mscml","metalink+xml":"metalink","metalink4+xml":"meta4","mets+xml":"mets","mods+xml":"mods",mp21:["m21","mp21"],mp4:"mp4s","oebps-package+xml":"opf","omdoc+xml":"omdoc",onenote:["onetoc","onetoc2","onetmp","onepkg"],oxps:"oxps","patch-ops-error+xml":"xer","pgp-encrypted":"pgp",pkcs10:"p10","pkcs7-mime":["p7m","p7c"],"pkcs7-signature":"p7s",pkcs8:"p8","pkix-attr-cert":"ac","pkix-crl":"crl","pkix-pkipath":"pkipath",pkixcmp:"pki","pls+xml":"pls","prs.cww":"cww","pskc+xml":"pskcxml","reginfo+xml":"rif","relax-ng-compact-syntax":"rnc","resource-lists+xml":"rl","resource-lists-diff+xml":"rld","rls-services+xml":"rs","rpki-ghostbusters":"gbr","rpki-manifest":"mft","rpki-roa":"roa","rsd+xml":"rsd","sbml+xml":"sbml","scvp-cv-request":"scq","scvp-cv-response":"scs","scvp-vp-request":"spq","scvp-vp-response":"spp",sdp:"sdp","set-payment-initiation":"setpay","set-registration-initiation":"setreg","shf+xml":"shf","sparql-query":"rq","sparql-results+xml":"srx",srgs:"gram","srgs+xml":"grxml","sru+xml":"sru","ssdl+xml":"ssdl","ssml+xml":"ssml","tei+xml":["tei","teicorpus"],"thraud+xml":"tfi","timestamped-data":"tsd","vnd.3gpp.pic-bw-large":"plb","vnd.3gpp.pic-bw-small":"psb","vnd.3gpp.pic-bw-var":"pvb","vnd.3gpp2.tcap":"tcap","vnd.3m.post-it-notes":"pwn","vnd.accpac.simply.aso":"aso","vnd.accpac.simply.imp":"imp","vnd.acucobol":"acu","vnd.acucorp":["atc","acutc"],"vnd.adobe.air-application-installer-package+zip":"air","vnd.adobe.formscentral.fcdt":"fcdt","vnd.adobe.fxp":["fxp","fxpl"],"vnd.adobe.xdp+xml":"xdp","vnd.adobe.xfdf":"xfdf","vnd.ahead.space":"ahead","vnd.airzip.filesecure.azf":"azf","vnd.airzip.filesecure.azs":"azs","vnd.amazon.ebook":"azw","vnd.americandynamics.acc":"acc","vnd.amiga.ami":"ami","vnd.anser-web-certificate-issue-initiation":"cii","vnd.anser-web-funds-transfer-initiation":"fti","vnd.antix.game-component":"atx","vnd.apple.installer+xml":"mpkg","vnd.apple.mpegurl":"m3u8","vnd.aristanetworks.swi":"swi","vnd.astraea-software.iota":"iota","vnd.audiograph":"aep","vnd.blueice.multipass":"mpm","vnd.bmi":"bmi","vnd.businessobjects":"rep","vnd.chemdraw+xml":"cdxml","vnd.chipnuts.karaoke-mmd":"mmd","vnd.claymore":"cla","vnd.cloanto.rp9":"rp9","vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"vnd.cluetrust.cartomobile-config":"c11amc","vnd.cluetrust.cartomobile-config-pkg":"c11amz","vnd.commonspace":"csp","vnd.contact.cmsg":"cdbcmsg","vnd.cosmocaller":"cmc","vnd.crick.clicker":"clkx","vnd.crick.clicker.keyboard":"clkk","vnd.crick.clicker.palette":"clkp","vnd.crick.clicker.template":"clkt","vnd.crick.clicker.wordbank":"clkw","vnd.criticaltools.wbs+xml":"wbs","vnd.ctc-posml":"pml","vnd.cups-ppd":"ppd","vnd.curl.car":"car","vnd.curl.pcurl":"pcurl","vnd.dart":"dart","vnd.data-vision.rdz":"rdz","vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"vnd.dece.ttml+xml":["uvt","uvvt"],"vnd.dece.unspecified":["uvx","uvvx"],"vnd.dece.zip":["uvz","uvvz"],"vnd.denovo.fcselayout-link":"fe_launch","vnd.dna":"dna","vnd.dolby.mlp":"mlp","vnd.dpgraph":"dpg","vnd.dreamfactory":"dfac","vnd.ds-keypoint":"kpxx","vnd.dvb.ait":"ait","vnd.dvb.service":"svc","vnd.dynageo":"geo","vnd.ecowin.chart":"mag","vnd.enliven":"nml","vnd.epson.esf":"esf","vnd.epson.msf":"msf","vnd.epson.quickanime":"qam","vnd.epson.salt":"slt","vnd.epson.ssf":"ssf","vnd.eszigno3+xml":["es3","et3"],"vnd.ezpix-album":"ez2","vnd.ezpix-package":"ez3","vnd.fdf":"fdf","vnd.fdsn.mseed":"mseed","vnd.fdsn.seed":["seed","dataless"],"vnd.flographit":"gph","vnd.fluxtime.clip":"ftc","vnd.framemaker":["fm","frame","maker","book"],"vnd.frogans.fnc":"fnc","vnd.frogans.ltf":"ltf","vnd.fsc.weblaunch":"fsc","vnd.fujitsu.oasys":"oas","vnd.fujitsu.oasys2":"oa2","vnd.fujitsu.oasys3":"oa3","vnd.fujitsu.oasysgp":"fg5","vnd.fujitsu.oasysprs":"bh2","vnd.fujixerox.ddd":"ddd","vnd.fujixerox.docuworks":"xdw","vnd.fujixerox.docuworks.binder":"xbd","vnd.fuzzysheet":"fzs","vnd.genomatix.tuxedo":"txd","vnd.geogebra.file":"ggb","vnd.geogebra.tool":"ggt","vnd.geometry-explorer":["gex","gre"],"vnd.geonext":"gxt","vnd.geoplan":"g2w","vnd.geospace":"g3w","vnd.gmx":"gmx","vnd.grafeq":["gqf","gqs"],"vnd.groove-account":"gac","vnd.groove-help":"ghf","vnd.groove-identity-message":"gim","vnd.groove-injector":"grv","vnd.groove-tool-message":"gtm","vnd.groove-tool-template":"tpl","vnd.groove-vcard":"vcg","vnd.hal+xml":"hal","vnd.handheld-entertainment+xml":"zmm","vnd.hbci":"hbci","vnd.hhe.lesson-player":"les","vnd.hp-hpgl":"hpgl","vnd.hp-hpid":"hpid","vnd.hp-hps":"hps","vnd.hp-jlyt":"jlt","vnd.hp-pcl":"pcl","vnd.hp-pclxl":"pclxl","vnd.hydrostatix.sof-data":"sfd-hdstx","vnd.ibm.minipay":"mpy","vnd.ibm.modcap":["afp","listafp","list3820"],"vnd.ibm.rights-management":"irm","vnd.ibm.secure-container":"sc","vnd.iccprofile":["icc","icm"],"vnd.igloader":"igl","vnd.immervision-ivp":"ivp","vnd.immervision-ivu":"ivu","vnd.insors.igm":"igm","vnd.intercon.formnet":["xpw","xpx"],"vnd.intergeo":"i2g","vnd.intu.qbo":"qbo","vnd.intu.qfx":"qfx","vnd.ipunplugged.rcprofile":"rcprofile","vnd.irepository.package+xml":"irp","vnd.is-xpr":"xpr","vnd.isac.fcs":"fcs","vnd.jam":"jam","vnd.jcp.javame.midlet-rms":"rms","vnd.jisp":"jisp","vnd.joost.joda-archive":"joda","vnd.kahootz":["ktz","ktr"],"vnd.kde.karbon":"karbon","vnd.kde.kchart":"chrt","vnd.kde.kformula":"kfo","vnd.kde.kivio":"flw","vnd.kde.kontour":"kon","vnd.kde.kpresenter":["kpr","kpt"],"vnd.kde.kspread":"ksp","vnd.kde.kword":["kwd","kwt"],"vnd.kenameaapp":"htke","vnd.kidspiration":"kia","vnd.kinar":["kne","knp"],"vnd.koan":["skp","skd","skt","skm"],"vnd.kodak-descriptor":"sse","vnd.las.las+xml":"lasxml","vnd.llamagraphics.life-balance.desktop":"lbd","vnd.llamagraphics.life-balance.exchange+xml":"lbe","vnd.lotus-1-2-3":"123","vnd.lotus-approach":"apr","vnd.lotus-freelance":"pre","vnd.lotus-notes":"nsf","vnd.lotus-organizer":"org","vnd.lotus-screencam":"scm","vnd.lotus-wordpro":"lwp","vnd.macports.portpkg":"portpkg","vnd.mcd":"mcd","vnd.medcalcdata":"mc1","vnd.mediastation.cdkey":"cdkey","vnd.mfer":"mwf","vnd.mfmp":"mfm","vnd.micrografx.flo":"flo","vnd.micrografx.igx":"igx","vnd.mif":"mif","vnd.mobius.daf":"daf","vnd.mobius.dis":"dis","vnd.mobius.mbk":"mbk","vnd.mobius.mqy":"mqy","vnd.mobius.msl":"msl","vnd.mobius.plc":"plc","vnd.mobius.txf":"txf","vnd.mophun.application":"mpn","vnd.mophun.certificate":"mpc","vnd.ms-artgalry":"cil","vnd.ms-cab-compressed":"cab","vnd.ms-excel.addin.macroenabled.12":"xlam","vnd.ms-excel.sheet.binary.macroenabled.12":"xlsb","vnd.ms-excel.sheet.macroenabled.12":"xlsm","vnd.ms-excel.template.macroenabled.12":"xltm","vnd.ms-fontobject":"eot","vnd.ms-htmlhelp":"chm","vnd.ms-ims":"ims","vnd.ms-lrm":"lrm","vnd.ms-officetheme":"thmx","vnd.ms-powerpoint.addin.macroenabled.12":"ppam","vnd.ms-powerpoint.presentation.macroenabled.12":"pptm","vnd.ms-powerpoint.slide.macroenabled.12":"sldm","vnd.ms-powerpoint.slideshow.macroenabled.12":"ppsm","vnd.ms-powerpoint.template.macroenabled.12":"potm","vnd.ms-project":["mpp","mpt"],"vnd.ms-word.document.macroenabled.12":"docm","vnd.ms-word.template.macroenabled.12":"dotm","vnd.ms-works":["wps","wks","wcm","wdb"],"vnd.ms-wpl":"wpl","vnd.ms-xpsdocument":"xps","vnd.mseq":"mseq","vnd.musician":"mus","vnd.muvee.style":"msty","vnd.mynfc":"taglet","vnd.neurolanguage.nlu":"nlu","vnd.nitf":["ntf","nitf"],"vnd.noblenet-directory":"nnd","vnd.noblenet-sealer":"nns","vnd.noblenet-web":"nnw","vnd.nokia.n-gage.data":"ngdat","vnd.nokia.n-gage.symbian.install":"n-gage","vnd.nokia.radio-preset":"rpst","vnd.nokia.radio-presets":"rpss","vnd.novadigm.edm":"edm","vnd.novadigm.edx":"edx","vnd.novadigm.ext":"ext","vnd.oasis.opendocument.chart-template":"otc","vnd.oasis.opendocument.formula-template":"odft","vnd.oasis.opendocument.image-template":"oti","vnd.olpc-sugar":"xo","vnd.oma.dd2+xml":"dd2","vnd.openofficeorg.extension":"oxt","vnd.openxmlformats-officedocument.presentationml.slide":"sldx","vnd.osgeo.mapguide.package":"mgp","vnd.osgi.dp":"dp","vnd.osgi.subsystem":"esa","vnd.palm":["pdb","pqa","oprc"],"vnd.pawaafile":"paw","vnd.pg.format":"str","vnd.pg.osasli":"ei6","vnd.picsel":"efif","vnd.pmi.widget":"wg","vnd.pocketlearn":"plf","vnd.powerbuilder6":"pbd","vnd.previewsystems.box":"box","vnd.proteus.magazine":"mgz","vnd.publishare-delta-tree":"qps","vnd.pvi.ptid1":"ptid","vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"vnd.realvnc.bed":"bed","vnd.recordare.musicxml":"mxl","vnd.recordare.musicxml+xml":"musicxml","vnd.rig.cryptonote":"cryptonote","vnd.rn-realmedia":"rm","vnd.rn-realmedia-vbr":"rmvb","vnd.route66.link66+xml":"link66","vnd.sailingtracker.track":"st","vnd.seemail":"see","vnd.sema":"sema","vnd.semd":"semd","vnd.semf":"semf","vnd.shana.informed.formdata":"ifm","vnd.shana.informed.formtemplate":"itp","vnd.shana.informed.interchange":"iif","vnd.shana.informed.package":"ipk","vnd.simtech-mindmapper":["twd","twds"],"vnd.smart.teacher":"teacher","vnd.solent.sdkm+xml":["sdkm","sdkd"],"vnd.spotfire.dxp":"dxp","vnd.spotfire.sfs":"sfs","vnd.stepmania.package":"smzip","vnd.stepmania.stepchart":"sm","vnd.sus-calendar":["sus","susp"],"vnd.svd":"svd","vnd.syncml+xml":"xsm","vnd.syncml.dm+wbxml":"bdm","vnd.syncml.dm+xml":"xdm","vnd.tao.intent-module-archive":"tao","vnd.tcpdump.pcap":["pcap","cap","dmp"],"vnd.tmobile-livetv":"tmo","vnd.trid.tpt":"tpt","vnd.triscape.mxs":"mxs","vnd.trueapp":"tra","vnd.ufdl":["ufd","ufdl"],"vnd.uiq.theme":"utz","vnd.umajin":"umj","vnd.unity":"unityweb","vnd.uoml+xml":"uoml","vnd.vcx":"vcx","vnd.visionary":"vis","vnd.vsf":"vsf","vnd.webturbo":"wtb","vnd.wolfram.player":"nbp","vnd.wqd":"wqd","vnd.wt.stf":"stf","vnd.xara":"xar","vnd.xfdl":"xfdl","vnd.yamaha.hv-dic":"hvd","vnd.yamaha.hv-script":"hvs","vnd.yamaha.hv-voice":"hvp","vnd.yamaha.openscoreformat":"osf","vnd.yamaha.openscoreformat.osfpvg+xml":"osfpvg","vnd.yamaha.smaf-audio":"saf","vnd.yamaha.smaf-phrase":"spf","vnd.yellowriver-custom-menu":"cmp","vnd.zul":["zir","zirz"],"vnd.zzazz.deck+xml":"zaz","voicexml+xml":"vxml",widget:"wgt",winhlp:"hlp","wsdl+xml":"wsdl","wspolicy+xml":"wspolicy","x-ace-compressed":"ace","x-authorware-bin":["aab","x32","u32","vox"],"x-authorware-map":"aam","x-authorware-seg":"aas","x-blorb":["blb","blorb"],"x-bzip":"bz","x-bzip2":["bz2","boz"],"x-cfs-compressed":"cfs","x-chat":"chat","x-conference":"nsc","x-dgc-compressed":"dgc","x-dtbncx+xml":"ncx","x-dtbook+xml":"dtb","x-dtbresource+xml":"res","x-eva":"eva","x-font-bdf":"bdf","x-font-ghostscript":"gsf","x-font-linux-psf":"psf","x-font-pcf":"pcf","x-font-snf":"snf","x-font-ttf":["ttf","ttc"],"x-font-type1":["pfa","pfb","pfm","afm"],"x-freearc":"arc","x-gca-compressed":"gca","x-glulx":"ulx","x-gramps-xml":"gramps","x-install-instructions":"install","x-lzh-compressed":["lzh","lha"],"x-mie":"mie","x-mobipocket-ebook":["prc","mobi"],"x-ms-application":"application","x-ms-shortcut":"lnk","x-ms-xbap":"xbap","x-msbinder":"obd","x-mscardfile":"crd","x-msclip":"clp","application/x-ms-installer":"msi","x-msmediaview":["mvb","m13","m14"],"x-msmetafile":["wmf","wmz","emf","emz"],"x-msmoney":"mny","x-mspublisher":"pub","x-msschedule":"scd","x-msterminal":"trm","x-mswrite":"wri","x-nzb":"nzb","x-pkcs12":["p12","pfx"],"x-pkcs7-certificates":["p7b","spc"],"x-research-info-systems":"ris","x-silverlight-app":"xap","x-sql":"sql","x-stuffitx":"sitx","x-subrip":"srt","x-t3vm-image":"t3","x-tex-tfm":"tfm","x-tgif":"obj","x-xliff+xml":"xlf","x-xz":"xz","x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"xaml+xml":"xaml","xcap-diff+xml":"xdf","xenc+xml":"xenc","xml-dtd":"dtd","xop+xml":"xop","xproc+xml":"xpl","xslt+xml":"xslt","xv+xml":["mxml","xhvml","xvml","xvm"],yang:"yang","yin+xml":"yin",envoy:"evy",fractals:"fif","internet-property-stream":"acx",olescript:"axs","vnd.ms-outlook":"msg","vnd.ms-pkicertstore":"sst","x-compress":"z","x-perfmon":["pma","pmc","pmr","pmw"],"ynd.ms-pkipko":"pko",gzip:["gz","tgz"],"smil+xml":["smi","smil"],"vnd.debian.binary-package":["deb","udeb"],"vnd.hzn-3d-crossword":"x3d","vnd.sqlite3":["db","sqlite","sqlite3","db-wal","sqlite-wal","db-shm","sqlite-shm"],"vnd.wap.sic":"sic","vnd.wap.slc":"slc","x-krita":["kra","krz"],"x-perl":["pm","pl"],yaml:["yaml","yml"]},audio:{amr:"amr","amr-wb":"awb",annodex:"axa",basic:["au","snd"],flac:"flac",midi:["mid","midi","kar","rmi"],mpeg:["mpga","mpega","mp3","m4a","mp2a","m2a","m3a"],mpegurl:"m3u",ogg:["oga","ogg","spx"],"prs.sid":"sid","x-aiff":"aifc","x-gsm":"gsm","x-ms-wma":"wma","x-ms-wax":"wax","x-pn-realaudio":"ram","x-realaudio":"ra","x-sd2":"sd2",adpcm:"adp",mp4:"mp4a",s3m:"s3m",silk:"sil","vnd.dece.audio":["uva","uvva"],"vnd.digital-winds":"eol","vnd.dra":"dra","vnd.dts":"dts","vnd.dts.hd":"dtshd","vnd.lucent.voice":"lvp","vnd.ms-playready.media.pya":"pya","vnd.nuera.ecelp4800":"ecelp4800","vnd.nuera.ecelp7470":"ecelp7470","vnd.nuera.ecelp9600":"ecelp9600","vnd.rip":"rip",webm:"weba","x-caf":"caf","x-matroska":"mka","x-pn-realaudio-plugin":"rmp",xm:"xm",aac:"aac",aiff:["aiff","aif","aff"],opus:"opus",wav:"wav"},chemical:{"x-alchemy":"alc","x-cache":["cac","cache"],"x-cache-csf":"csf","x-cactvs-binary":["cbin","cascii","ctab"],"x-cdx":"cdx","x-chem3d":"c3d","x-cif":"cif","x-cmdf":"cmdf","x-cml":"cml","x-compass":"cpa","x-crossfire":"bsd","x-csml":["csml","csm"],"x-ctx":"ctx","x-cxf":["cxf","cef"],"x-embl-dl-nucleotide":["emb","embl"],"x-gamess-input":["inp","gam","gamin"],"x-gaussian-checkpoint":["fch","fchk"],"x-gaussian-cube":"cub","x-gaussian-input":["gau","gjc","gjf"],"x-gaussian-log":"gal","x-gcg8-sequence":"gcg","x-genbank":"gen","x-hin":"hin","x-isostar":["istr","ist"],"x-jcamp-dx":["jdx","dx"],"x-kinemage":"kin","x-macmolecule":"mcm","x-macromodel-input":"mmod","x-mdl-molfile":"mol","x-mdl-rdfile":"rd","x-mdl-rxnfile":"rxn","x-mdl-sdfile":"sd","x-mdl-tgf":"tgf","x-mmcif":"mcif","x-mol2":"mol2","x-molconn-Z":"b","x-mopac-graph":"gpt","x-mopac-input":["mop","mopcrt","zmt"],"x-mopac-out":"moo","x-ncbi-asn1":"asn","x-ncbi-asn1-ascii":["prt","ent"],"x-ncbi-asn1-binary":"val","x-rosdal":"ros","x-swissprot":"sw","x-vamas-iso14976":"vms","x-vmd":"vmd","x-xtel":"xtel","x-xyz":"xyz"},font:{otf:"otf",woff:"woff",woff2:"woff2"},image:{gif:"gif",ief:"ief",jpeg:["jpeg","jpg","jpe","jfif","jfif-tbnl","jif"],pcx:"pcx",png:"png","svg+xml":["svg","svgz"],tiff:["tiff","tif"],"vnd.djvu":["djvu","djv"],"vnd.wap.wbmp":"wbmp","x-canon-cr2":"cr2","x-canon-crw":"crw","x-cmu-raster":"ras","x-coreldraw":"cdr","x-coreldrawpattern":"pat","x-coreldrawtemplate":"cdt","x-corelphotopaint":"cpt","x-epson-erf":"erf","x-icon":"ico","x-jg":"art","x-jng":"jng","x-nikon-nef":"nef","x-olympus-orf":"orf","x-portable-anymap":"pnm","x-portable-bitmap":"pbm","x-portable-graymap":"pgm","x-portable-pixmap":"ppm","x-rgb":"rgb","x-xbitmap":"xbm","x-xpixmap":"xpm","x-xwindowdump":"xwd",bmp:"bmp",cgm:"cgm",g3fax:"g3",ktx:"ktx","prs.btif":"btif",sgi:"sgi","vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"vnd.dwg":"dwg","vnd.dxf":"dxf","vnd.fastbidsheet":"fbs","vnd.fpx":"fpx","vnd.fst":"fst","vnd.fujixerox.edmics-mmr":"mmr","vnd.fujixerox.edmics-rlc":"rlc","vnd.ms-modi":"mdi","vnd.ms-photo":"wdp","vnd.net-fpx":"npx","vnd.xiff":"xif",webp:"webp","x-3ds":"3ds","x-cmx":"cmx","x-freehand":["fh","fhc","fh4","fh5","fh7"],"x-pict":["pic","pct"],"x-tga":"tga","cis-cod":"cod",avif:"avifs",heic:["heif","heic"],pjpeg:["pjpg"],"vnd.adobe.photoshop":"psd","x-adobe-dng":"dng","x-fuji-raf":"raf","x-icns":"icns","x-kodak-dcr":"dcr","x-kodak-k25":"k25","x-kodak-kdc":"kdc","x-minolta-mrw":"mrw","x-panasonic-raw":["raw","rw2","rwl"],"x-pentax-pef":["pef","ptx"],"x-sigma-x3f":"x3f","x-sony-arw":"arw","x-sony-sr2":"sr2","x-sony-srf":"srf"},message:{rfc822:["eml","mime","mht","mhtml","nws"]},model:{iges:["igs","iges"],mesh:["msh","mesh","silo"],vrml:["wrl","vrml"],"x3d+vrml":["x3dv","x3dvz"],"x3d+xml":"x3dz","x3d+binary":["x3db","x3dbz"],"vnd.collada+xml":"dae","vnd.dwf":"dwf","vnd.gdl":"gdl","vnd.gtw":"gtw","vnd.mts":"mts","vnd.usdz+zip":"usdz","vnd.vtu":"vtu"},text:{"cache-manifest":["manifest","appcache"],calendar:["ics","icz","ifb"],css:"css",csv:"csv",h323:"323",html:["html","htm","shtml","stm"],iuls:"uls",plain:["txt","text","brf","conf","def","list","log","in","bas","diff","ksh"],richtext:"rtx",scriptlet:["sct","wsc"],texmacs:"tm","tab-separated-values":"tsv","vnd.sun.j2me.app-descriptor":"jad","vnd.wap.wml":"wml","vnd.wap.wmlscript":"wmls","x-bibtex":"bib","x-boo":"boo","x-c++hdr":["h++","hpp","hxx","hh"],"x-c++src":["c++","cpp","cxx","cc"],"x-component":"htc","x-dsrc":"d","x-diff":"patch","x-haskell":"hs","x-java":"java","x-literate-haskell":"lhs","x-moc":"moc","x-pascal":["p","pas","pp","inc"],"x-pcs-gcd":"gcd","x-python":"py","x-scala":"scala","x-setext":"etx","x-tcl":["tcl","tk"],"x-tex":["tex","ltx","sty","cls"],"x-vcalendar":"vcs","x-vcard":"vcf",n3:"n3","prs.lines.tag":"dsc",sgml:["sgml","sgm"],troff:["t","tr","roff","man","me","ms"],turtle:"ttl","uri-list":["uri","uris","urls"],vcard:"vcard","vnd.curl":"curl","vnd.curl.dcurl":"dcurl","vnd.curl.scurl":"scurl","vnd.curl.mcurl":"mcurl","vnd.dvb.subtitle":"sub","vnd.fly":"fly","vnd.fmi.flexstor":"flx","vnd.graphviz":"gv","vnd.in3d.3dml":"3dml","vnd.in3d.spot":"spot","x-asm":["s","asm"],"x-c":["c","h","dic"],"x-fortran":["f","for","f77","f90"],"x-opml":"opml","x-nfo":"nfo","x-sfv":"sfv","x-uuencode":"uu",webviewhtml:"htt",javascript:"js",json:"json",markdown:["md","markdown","mdown","markdn"],"vnd.wap.si":"si","vnd.wap.sl":"sl"},video:{avif:"avif","3gpp":"3gp",annodex:"axv",dl:"dl",dv:["dif","dv"],fli:"fli",gl:"gl",mpeg:["mpeg","mpg","mpe","m1v","m2v","mp2","mpa","mpv2"],mp4:["mp4","mp4v","mpg4"],quicktime:["qt","mov"],ogg:"ogv","vnd.mpegurl":["mxu","m4u"],"x-flv":"flv","x-la-asf":["lsf","lsx"],"x-mng":"mng","x-ms-asf":["asf","asx","asr"],"x-ms-wm":"wm","x-ms-wmv":"wmv","x-ms-wmx":"wmx","x-ms-wvx":"wvx","x-msvideo":"avi","x-sgi-movie":"movie","x-matroska":["mpv","mkv","mk3d","mks"],"3gpp2":"3g2",h261:"h261",h263:"h263",h264:"h264",jpeg:"jpgv",jpm:["jpm","jpgm"],mj2:["mj2","mjp2"],"vnd.dece.hd":["uvh","uvvh"],"vnd.dece.mobile":["uvm","uvvm"],"vnd.dece.pd":["uvp","uvvp"],"vnd.dece.sd":["uvs","uvvs"],"vnd.dece.video":["uvv","uvvv"],"vnd.dvb.file":"dvb","vnd.fvt":"fvt","vnd.ms-playready.media.pyv":"pyv","vnd.uvvu.mp4":["uvu","uvvu"],"vnd.vivo":"viv",webm:"webm","x-f4v":"f4v","x-m4v":"m4v","x-ms-vob":"vob","x-smv":"smv",mp2t:"ts"},"x-conference":{"x-cooltalk":"ice"},"x-world":{"x-vrml":["vrm","flr","wrz","xaf","xof"]}};(()=>{const e={};for(const t of Object.keys(Gr))for(const n of Object.keys(Gr[t])){const i=Gr[t][n];if("string"==typeof i)e[i]=t+"/"+n;else for(let r=0;r"data:text/javascript,"+encodeURIComponent('(t=>{"function"==typeof define&&define.amd?define(t):t()})(function(){"use strict";const{Array:t,Object:e,Number:n,Math:s,Error:r,Uint8Array:o,Uint16Array:i,Uint32Array:c,Int32Array:a,Map:h,DataView:l,Promise:u,TextEncoder:f,crypto:w,postMessage:p,TransformStream:d,ReadableStream:y,WritableStream:m,CompressionStream:g,DecompressionStream:b}=self,S=void 0,v="undefined",k="function",z=[];for(let t=0;256>t;t++){let e=t;for(let t=0;8>t;t++)1&e?e=e>>>1^3988292384:e>>>=1;z[t]=e}class C{constructor(t){this.t=t||-1}append(t){let e=0|this.t;for(let n=0,s=0|t.length;s>n;n++)e=e>>>8^z[255&(e^t[n])];this.t=e}get(){return~this.t}}class A extends d{constructor(){let t;const e=new C;super({transform(t,n){e.append(t),n.enqueue(t)},flush(){const n=new o(4);new l(n.buffer).setUint32(0,e.get()),t.value=n}}),t=this}}const x={concat(t,e){if(0===t.length||0===e.length)return t.concat(e);const n=t[t.length-1],s=x.o(n);return 32===s?t.concat(e):x.i(e,s,0|n,t.slice(0,t.length-1))},h(t){const e=t.length;if(0===e)return 0;const n=t[e-1];return 32*(e-1)+x.o(n)},l(t,e){if(32*t.length0&&e&&(t[n-1]=x.u(e,t[n-1]&2147483648>>e-1,1)),t},u:(t,e,n)=>32===t?e:(n?0|e:e<<32-t)+1099511627776*t,o:t=>s.round(t/1099511627776)||32,i(t,e,n,s){for(void 0===s&&(s=[]);e>=32;e-=32)s.push(n),n=0;if(0===e)return s.concat(t);for(let r=0;r>>e),n=t[r]<<32-e;const r=t.length?t[t.length-1]:0,o=x.o(r);return s.push(x.u(e+o&31,e+o>32?n:s.pop(),1)),s}},I={bytes:{p(t){const e=x.h(t)/8,n=new o(e);let s;for(let r=0;e>r;r++)3&r||(s=t[r/4]),n[r]=s>>>24,s<<=8;return n},m(t){const e=[];let n,s=0;for(n=0;n9007199254740991)throw new r("Cannot hash more than 2^53 - 1 bits");const i=new c(n);let a=0;for(let t=e.blockSize+s-(e.blockSize+s&e.blockSize-1);o>=t;t+=e.blockSize)e.R(i.subarray(16*a,16*(a+1))),a+=1;return n.splice(0,16*a),e}P(){const t=this;let e=t.C;const n=t.k;e=x.concat(e,[x.u(1,1)]);for(let t=e.length+2;15&t;t++)e.push(0);for(e.push(s.floor(t.A/4294967296)),e.push(0|t.A);e.length;)t.R(e.splice(0,16));return t.reset(),n}U(t,e,n,s){return t>19?t>39?t>59?t>79?void 0:e^n^s:e&n|e&s|n&s:e^n^s:e&n|~e&s}V(t,e){return e<>>32-t}R(e){const n=this,r=n.k,o=t(80);for(let t=0;16>t;t++)o[t]=e[t];let i=r[0],c=r[1],a=r[2],h=r[3],l=r[4];for(let t=0;79>=t;t++){16>t||(o[t]=n.V(1,o[t-3]^o[t-8]^o[t-14]^o[t-16]));const e=n.V(5,i)+n.U(t,c,a,h)+l+o[t]+n.v[s.floor(t/20)]|0;l=h,h=a,a=n.V(30,c),c=i,i=e}r[0]=r[0]+i|0,r[1]=r[1]+c|0,r[2]=r[2]+a|0,r[3]=r[3]+h|0,r[4]=r[4]+l|0}},P={getRandomValues(t){const e=new c(t.buffer),n=t=>{let e=987654321;const n=4294967295;return()=>(e=36969*(65535&e)+(e>>16)&n,(((e<<16)+(t=18e3*(65535&t)+(t>>16)&n)&n)/4294967296+.5)*(s.random()>.5?1:-1))};for(let r,o=0;onew U._(I.bytes.m(t)),B(t,e,n,s){if(n=n||1e4,0>s||0>n)throw new r("invalid params to pbkdf2");const o=1+(s>>5)<<2;let i,c,a,h,u;const f=new ArrayBuffer(o),w=new l(f);let p=0;const d=x;for(e=I.bytes.m(e),u=1;(o||1)>p;u++){for(i=c=t.encrypt(d.concat(e,[u])),a=1;n>a;a++)for(c=t.encrypt(c),h=0;hp&&ar&&(t=(new n).update(t).P());for(let e=0;r>e;e++)s[0][e]=909522486^t[e],s[1][e]=1549556828^t[e];e.M[0].update(s[0]),e.M[1].update(s[1]),e.K=new n(e.M[0])}reset(){const t=this;t.K=new t.D(t.M[0]),t.W=!1}update(t){this.W=!0,this.K.update(t)}digest(){const t=this,e=t.K.P(),n=new t.D(t.M[1]).update(e).P();return t.reset(),n}encrypt(t){if(this.W)throw new r("encrypt on already updated hmac called!");return this.update(t),this.digest(t)}}},V=typeof w!=v&&typeof w.getRandomValues==k,_="Invalid password",B="Invalid signature",D="zipjs-abort-check-password";function M(t){return V?w.getRandomValues(t):P.getRandomValues(t)}const K=16,W={name:"PBKDF2"},E=e.assign({hash:{name:"HMAC"}},W),L=e.assign({iterations:1e3,hash:{name:"SHA-1"}},W),O=["deriveBits"],T=[8,12,16],j=[16,24,32],H=10,Z=[0,0,0,0],F=typeof w!=v,N=F&&w.subtle,q=F&&typeof N!=v,G=I.bytes,J=class{constructor(t){const e=this;e.L=[[[],[],[],[],[]],[[],[],[],[],[]]],e.L[0][0][0]||e.O();const n=e.L[0][4],s=e.L[1],o=t.length;let i,c,a,h=1;if(4!==o&&6!==o&&8!==o)throw new r("invalid aes key size");for(e.v=[c=t.slice(0),a=[]],i=o;4*o+28>i;i++){let t=c[i-1];(i%o===0||8===o&&i%o===4)&&(t=n[t>>>24]<<24^n[t>>16&255]<<16^n[t>>8&255]<<8^n[255&t],i%o===0&&(t=t<<8^t>>>24^h<<24,h=h<<1^283*(h>>7))),c[i]=c[i-o]^t}for(let t=0;i;t++,i--){const e=c[3&t?i:i-4];a[t]=4>=i||4>t?e:s[0][n[e>>>24]]^s[1][n[e>>16&255]]^s[2][n[e>>8&255]]^s[3][n[255&e]]}}encrypt(t){return this.T(t,0)}decrypt(t){return this.T(t,1)}O(){const t=this.L[0],e=this.L[1],n=t[4],s=e[4],r=[],o=[];let i,c,a,h;for(let t=0;256>t;t++)o[(r[t]=t<<1^283*(t>>7))^t]=t;for(let l=i=0;!n[l];l^=c||1,i=o[i]||1){let o=i^i<<1^i<<2^i<<3^i<<4;o=o>>8^255&o^99,n[l]=o,s[o]=l,h=r[a=r[c=r[l]]];let u=16843009*h^65537*a^257*c^16843008*l,f=257*r[o]^16843008*o;for(let n=0;4>n;n++)t[n][l]=f=f<<24^f>>>8,e[n][o]=u=u<<24^u>>>8}for(let n=0;5>n;n++)t[n]=t[n].slice(0),e[n]=e[n].slice(0)}T(t,e){if(4!==t.length)throw new r("invalid aes block size");const n=this.v[e],s=n.length/4-2,o=[0,0,0,0],i=this.L[e],c=i[0],a=i[1],h=i[2],l=i[3],u=i[4];let f,w,p,d=t[0]^n[0],y=t[e?3:1]^n[1],m=t[2]^n[2],g=t[e?1:3]^n[3],b=4;for(let t=0;s>t;t++)f=c[d>>>24]^a[y>>16&255]^h[m>>8&255]^l[255&g]^n[b],w=c[y>>>24]^a[m>>16&255]^h[g>>8&255]^l[255&d]^n[b+1],p=c[m>>>24]^a[g>>16&255]^h[d>>8&255]^l[255&y]^n[b+2],g=c[g>>>24]^a[d>>16&255]^h[y>>8&255]^l[255&m]^n[b+3],b+=4,d=f,y=w,m=p;for(let t=0;4>t;t++)o[e?3&-t:t]=u[d>>>24]<<24^u[y>>16&255]<<16^u[m>>8&255]<<8^u[255&g]^n[b++],f=d,d=y,y=m,m=g,g=f;return o}},Q=class{constructor(t,e){this.j=t,this.H=e,this.Z=e}reset(){this.Z=this.H}update(t){return this.F(this.j,t,this.Z)}N(t){if(255&~(t>>24))t+=1<<24;else{let e=t>>16&255,n=t>>8&255,s=255&t;255===e?(e=0,255===n?(n=0,255===s?s=0:++s):++n):++e,t=0,t+=e<<16,t+=n<<8,t+=s}return t}q(t){0===(t[0]=this.N(t[0]))&&(t[1]=this.N(t[1]))}F(t,e,n){let s;if(!(s=e.length))return[];const r=x.h(e);for(let r=0;s>r;r+=4){this.q(n);const s=t.encrypt(n);e[r]^=s[0],e[r+1]^=s[1],e[r+2]^=s[2],e[r+3]^=s[3]}return x.l(e,r)}},X=U._;let Y=F&&q&&typeof N.importKey==k,$=F&&q&&typeof N.deriveBits==k;class tt extends d{constructor({password:t,rawPassword:n,signed:s,encryptionStrength:i,checkPasswordOnly:c}){super({start(){e.assign(this,{ready:new u(t=>this.G=t),password:rt(t,n),signed:s,J:i-1,pending:new o})},async transform(t,e){const n=this,{password:s,J:i,G:a,ready:h}=n;s?(await(async(t,e,n,s)=>{const o=await st(t,e,n,it(s,0,T[e])),i=it(s,T[e]);if(o[0]!=i[0]||o[1]!=i[1])throw new r(_)})(n,i,s,it(t,0,T[i]+2)),t=it(t,T[i]+2),c?e.error(new r(D)):a()):await h;const l=new o(t.length-H-(t.length-H)%K);e.enqueue(nt(n,t,l,0,H,!0))},async flush(t){const{signed:e,X:n,Y:s,pending:i,ready:c}=this;if(s&&n){await c;const a=it(i,0,i.length-H),h=it(i,i.length-H);let l=new o;if(a.length){const t=at(G,a);s.update(t);const e=n.update(t);l=ct(G,e)}if(e){const t=it(ct(G,s.digest()),0,H);for(let e=0;H>e;e++)if(t[e]!=h[e])throw new r(B)}t.enqueue(l)}}})}}class et extends d{constructor({password:t,rawPassword:n,encryptionStrength:s}){let r;super({start(){e.assign(this,{ready:new u(t=>this.G=t),password:rt(t,n),J:s-1,pending:new o})},async transform(t,e){const n=this,{password:s,J:r,G:i,ready:c}=n;let a=new o;s?(a=await(async(t,e,n)=>{const s=M(new o(T[e]));return ot(s,await st(t,e,n,s))})(n,r,s),i()):await c;const h=new o(a.length+t.length-t.length%K);h.set(a,0),e.enqueue(nt(n,t,h,a.length,0))},async flush(t){const{X:e,Y:n,pending:s,ready:i}=this;if(n&&e){await i;let c=new o;if(s.length){const t=e.update(at(G,s));n.update(t),c=ct(G,t)}r.signature=ct(G,n.digest()).slice(0,H),t.enqueue(ot(c,r.signature))}}}),r=this}}function nt(t,e,n,s,r,i){const{X:c,Y:a,pending:h}=t,l=e.length-r;let u;for(h.length&&(e=ot(h,e),n=((t,e)=>{if(e&&e>t.length){const n=t;(t=new o(e)).set(n,0)}return t})(n,l-l%K)),u=0;l-K>=u;u+=K){const t=at(G,it(e,u,u+K));i&&a.update(t);const r=c.update(t);i||a.update(r),n.set(ct(G,r),u+s)}return t.pending=it(e,u),n}async function st(n,s,r,i){n.password=null;const c=await(async(t,e,n,s,r)=>{if(!Y)return U.importKey(e);try{return await N.importKey("raw",e,n,!1,r)}catch(t){return Y=!1,U.importKey(e)}})(0,r,E,0,O),a=await(async(t,e,n)=>{if(!$)return U.B(e,t.salt,L.iterations,n);try{return await N.deriveBits(t,e,n)}catch(s){return $=!1,U.B(e,t.salt,L.iterations,n)}})(e.assign({salt:i},L),c,8*(2*j[s]+2)),h=new o(a),l=at(G,it(h,0,j[s])),u=at(G,it(h,j[s],2*j[s])),f=it(h,2*j[s]);return e.assign(n,{keys:{key:l,$:u,passwordVerification:f},X:new Q(new J(l),t.from(Z)),Y:new X(u)}),f}function rt(t,e){return e===S?(t=>{if(typeof f==v){const e=new o((t=unescape(encodeURIComponent(t))).length);for(let n=0;n>>24]),o=~t.et.get(),t.keys=[n,r,o]}function dt(t){const e=2|t.keys[2];return yt(s.imul(e,1^e)>>>8)}function yt(t){return 255&t}function mt(t){return 4294967295&t}class gt extends d{constructor(t,{chunkSize:e,nt:n,CompressionStream:s}){super({});const{compressed:r,encrypted:o,useCompressionStream:i,zipCrypto:c,signed:a,level:h}=t,u=this;let f,w,p=super.readable;o&&!c||!a||(f=new A,p=kt(p,f)),r&&(p=vt(p,i,{level:h,chunkSize:e},s,n,s)),o&&(c?p=kt(p,new lt(t)):(w=new et(t),p=kt(p,w))),St(u,p,()=>{let t;o&&!c&&(t=w.signature),o&&!c||!a||(t=new l(f.value.buffer).getUint32(0)),u.signature=t})}}class bt extends d{constructor(t,{chunkSize:e,st:n,DecompressionStream:s}){super({});const{zipCrypto:o,encrypted:i,signed:c,signature:a,compressed:h,useCompressionStream:u,rt:f}=t;let w,p,d=super.readable;i&&(o?d=kt(d,new ht(t)):(p=new tt(t),d=kt(d,p))),h&&(d=vt(d,u,{chunkSize:e,rt:f},s,n,s)),i&&!o||!c||(w=new A,d=kt(d,w)),St(this,d,()=>{if((!i||o)&&c){const t=new l(w.value.buffer);if(a!=t.getUint32(0,!1))throw new r(B)}})}}function St(t,n,s){n=kt(n,new d({flush:s})),e.defineProperty(t,"readable",{get:()=>n})}function vt(t,e,n,s,r,o){const i=e&&s?s:r||o,c=n.rt?"deflate64-raw":"deflate-raw";try{t=kt(t,new i(c,n))}catch(s){if(!e)throw s;if(r)t=kt(t,new r(c,n));else{if(!o)throw s;t=kt(t,new o(c,n))}}return t}function kt(t,e){return t.pipeThrough(e)}const zt="data",Ct="close";class At extends d{constructor(t,n){super({});const s=this,{codecType:o}=t;let i;o.startsWith("deflate")?i=gt:o.startsWith("inflate")&&(i=bt),s.outputSize=0;let c=0;const a=new i(t,n),h=super.readable,l=new d({transform(t,e){t&&t.length&&(c+=t.length,e.enqueue(t))},flush(){e.assign(s,{inputSize:c})}}),u=new d({transform(e,n){if(e&&e.length&&(n.enqueue(e),s.outputSize+=e.length,t.outputSize!==S&&s.outputSize>t.outputSize))throw new r("Invalid uncompressed size")},flush(){const{signature:t}=a;e.assign(s,{signature:t,inputSize:c})}});e.defineProperty(s,"readable",{get:()=>h.pipeThrough(l).pipeThrough(a).pipeThrough(u)})}}class xt extends d{constructor(t){let e;super({transform:function n(s,r){if(e){const t=new o(e.length+s.length);t.set(e),t.set(s,e.length),s=t,e=null}s.length>t?(r.enqueue(s.slice(0,t)),n(s.slice(t),r)):e=s},flush(t){e&&e.length&&t.enqueue(e)}})}}let It,Rt,Pt,Ut;function Vt(t,e,n={}){const i="number"==typeof n.level?n.level:-1,c="number"==typeof n.ot?n.ot:65536,a="number"==typeof n.it?n.it:65536;return new d({start(){let n;if(this.ct=Rt(c),this.in=Rt(a),this.it=a,this.ht=new o(c),t?(this.lt=It.deflate_process,this.ut=It.deflate_last_consumed,this.ft=It.deflate_end,this.wt=It.deflate_new(),n="gzip"===e?It.deflate_init_gzip(this.wt,i):"deflate-raw"===e?It.deflate_init_raw(this.wt,i):It.deflate_init(this.wt,i)):"deflate64-raw"===e?(this.lt=It.inflate9_process,this.ut=It.inflate9_last_consumed,this.ft=It.inflate9_end,this.wt=It.inflate9_new(),n=It.inflate9_init_raw(this.wt)):(this.lt=It.inflate_process,this.ut=It.inflate_last_consumed,this.ft=It.inflate_end,this.wt=It.inflate_new(),n="deflate-raw"===e?It.inflate_init_raw(this.wt):"gzip"===e?It.inflate_init_gzip(this.wt):It.inflate_init(this.wt)),0!==n)throw new r("init failed:"+n)},transform(e,n){try{const i=e,a=new o(Ut.buffer),h=this.lt,l=this.ut,u=this.ct,f=this.ht;let w=0;for(;w=e||(this.in&&Pt&&Pt(this.in),this.in=Rt(e),this.it=e),a.set(i.subarray(w,w+e),this.in);const o=h(this.wt,this.in,e,u,c,0);if(!t&&0>o)throw new r("process error:"+o);const p=16777215&o;p&&(f.set(a.subarray(u,u+p),0),n.enqueue(f.slice(0,p)));const d=l(this.wt);if(0===d)break;w+=d}}catch(t){this.ft&&this.wt&&this.ft(this.wt),this.in&&Pt&&Pt(this.in),this.ct&&Pt&&Pt(this.ct),n.error(t)}},flush(e){try{const n=new o(Ut.buffer),s=this.lt,i=this.ct,a=this.ht;for(;;){const o=s(this.wt,0,0,i,c,4);if(!t&&0>o)throw new r("process error:"+o);const h=16777215&o,l=o>>24&255;if(h&&(a.set(n.subarray(i,i+h),0),e.enqueue(a.slice(0,h))),1===l||0===h)break}}catch(t){e.error(t)}finally{if(this.ft&&this.wt){const t=this.ft(this.wt);0!==t&&e.error(new r("end error:"+t))}this.in&&Pt&&Pt(this.in),this.ct&&Pt&&Pt(this.ct)}}})}class _t{constructor(t="deflate",e){return Vt(!0,t,e)}}class Bt{constructor(t="deflate",e){return Vt(!1,t,e)}}let Dt=!1;const Mt=new h,Kt=new h;let Wt,Et=0;async function Lt(t){try{const{options:e,config:s}=t;Dt||e.useCompressionStream||await(async(t,{baseURI:e})=>{if(!Dt){let s,r;try{try{r=new URL(t,e)}catch(t){}const n=await fetch(r);s=await n.arrayBuffer()}catch(e){if(!t.startsWith("data:application/wasm;base64,"))throw e;s=(t=>{const e=t.split(",")[1],n=atob(e),s=n.length,r=new o(s);for(let t=0;s>t;++t)r[t]=n.charCodeAt(t);return r.buffer})(t)}n=(await WebAssembly.instantiate(s)).instance.exports,It=n,({malloc:Rt,free:Pt,memory:Ut}=It),Dt=!0}var n})(t.config.wasmURI,t.config),s.CompressionStream=self.CompressionStream,s.DecompressionStream=self.DecompressionStream,s.nt=_t,s.st=Bt;const r={highWaterMark:1},i=t.readable||new y({async pull(t){const e=new u(t=>Mt.set(Et,t));Ot({type:"pull",messageId:Et}),Et=(Et+1)%n.MAX_SAFE_INTEGER;const{value:s,done:r}=await e;t.enqueue(s),r&&t.close()}},r),c=t.writable||new m({async write(t){let e;const s=new u(t=>e=t);Kt.set(Et,e),Ot({type:zt,value:t,messageId:Et}),Et=(Et+1)%n.MAX_SAFE_INTEGER,await s}},r),a=new At(e,s);Wt=new AbortController;const{signal:h}=Wt;await i.pipeThrough(a).pipeThrough(new xt(s.chunkSize)).pipeTo(c,{signal:h,preventClose:!0,preventAbort:!0}),await c.getWriter().close();const{signature:l,inputSize:f,outputSize:w}=a;Ot({type:Ct,result:{signature:l,inputSize:f,outputSize:w}})}catch(t){t.outputSize=0,Tt(t)}}function Ot(t){let{value:e}=t;if(e)if(e.length)try{e=new o(e),t.value=e.buffer,p(t,[t.value])}catch(e){p(t)}else p(t);else p(t)}function Tt(t=new r("Unknown error")){const{message:e,stack:n,code:s,name:o,outputSize:i}=t;p({error:{message:e,stack:n,code:s,name:o,outputSize:i}})}addEventListener("message",({data:t})=>{const{type:e,messageId:n,value:s,done:r}=t;try{if("start"==e&&Lt(t),e==zt){const t=Mt.get(n);Mt.delete(n),t({value:new o(s),done:r})}if("ack"==e){const t=Kt.get(n);Kt.delete(n),t()}e==Ct&&Wt.abort()}catch(t){Tt(t)}})});\n')})}(nn),function(e){e({wasmURI:()=>"data:application/wasm;base64,"+(e=>{e=(e=>{const t=(e=(e+"").replace(/[^A-Za-z0-9+/=]/g,"")).length,n=[];for(let i=0;t>i;i+=4){const t=on.indexOf(e[i])<<18|on.indexOf(e[i+1])<<12|(63&on.indexOf(e[i+2]))<<6|63&on.indexOf(e[i+3]);n.push(t>>16&255),"="!==e[i+2]&&n.push(t>>8&255),"="!==e[i+3]&&n.push(255&t)}return new Uint8Array(n)})(e);let t=new Uint8Array(1024),n=0;for(let r=0;re;e++)t[n++]=t[l+e]}else{const s=o;i(n+s);for(let i=0;s>i&&r{let t="";const n=e.length;let i=0;for(;n>i+2;i+=3){const n=e[i]<<16|e[i+1]<<8|e[i+2];t+=on[n>>18&63]+on[n>>12&63]+on[n>>6&63]+on[63&n]}const r=n-i;if(1===r){const n=e[i]<<16;t+=on[n>>18&63]+on[n>>12&63]+"=="}else if(2===r){const n=e[i]<<16|e[i+1]<<8;t+=on[n>>18&63]+on[n>>12&63]+on[n>>6&63]+"="}return t})(new Uint8Array(t.buffer.slice(0,n)));function i(e){if(t.lengthi;)i*=2;const r=new Uint8Array(i);r.set(t.subarray(0,n)),t=r}}})("EwBhc20BAAAAAUULYAF/AX9gAn+BAAYCA3+CAAeAAA0BAIAAFwMAYAaAABCDABOBABoDAGAAgAADgAANAQSBABUDAGAHgwAegAAfEQNCQQcABAMABAgIAAEABQEKgABaggADAQWBAAcCAQGBAAcQAwIABQYAAgIFBAkEBAkDBoAAAR4AAQQCAQQBAQMEBwICBAUBcAENDQUGAQGCAoICBgiAAJgiQdDVBAsHigQcBm1lbW9yeQIADGluZmxhdGU5X25ldwAHDYYADwdpbml0AAgRigAQB19yYXcAChCGABQJcHJvY2VzcwALhwBGBmVuZAAOFoYADxBsYXN0X2NvbnN1bWVkABELhAAZgwBthQA2gwBsARKFAFiHAGsBFIUAf4MAEwdnemlwABUPhQAUhQB+ARaGAFaBAH0CGBWFAA6NAHwCZGWJAHyFAA6CAHwCGhCJAA+CAHwCGxGKABOCAHwCHA+FABSFAHwBHYYAVoEAfAkfBGZyZWUAAhWFABWMAIMKBm1hbGxvYwABC4IAVQppYWxpemUAABlfgAAPFmRpcmVjdF9mdW5jdGlvbl90YWJsZQGAABwbZW1zY3JpcHRlbl9zdGFja19yZXN0b3JlAAUcjgAbAmdlgABvDnVycmVudAAGIl9fY3hhgABbBGNyZW2AABIGX2V4Y2VwggBdBnJlZmNvdYAAJS09CRIBAEEBCwwAISIMDxcZHj41ODsK3OQCQQIAC78nAQt/IwBBEGsiCiQAAkCPAAISIABB9AFNBEBBpCcoAgAiA0EQgAASBgtqQfgDcYEACRBJGyIGQQN2IgB2IgFBA3EEgQAyBgFBf3NBAYAAHwZqIgJBA3SAABkMzCdqIgAgASgC1CcigAAGBAgiBUaCAFIJIANBfiACd3E2gAKmEQELIAUgADYCDCAAIAU2AggLgABIAwhqIYAANwEgggBGgAAFBHI2AgSBAA8DaiIBgQBNAwRBAYEAEgcMCwsgBkGsggCfAwhNDYAAG4EAhgRBAiAAgQA1BQAgAmtygAA1BAB0cWiBAKMDdCIAggCPgAAfggCPgAAGiwCPBQF3cSIDhgCRAQKBAJEBAoQAkQEAgABogwCFgAAKAmoigACMggDfBSAGayIFgwCMgAAZAgFqgQAuCgAgCARAIAhBeHGBAG4EIQFBuIEAoAQhAgJ/gABlAQGAABkHA3Z0IgdxRYQAeAIgB4AAPoAAPIEAdYEBIQMLIQOBAOmAAHaAAByEAIQBAYMAB4AAnIEAi4IBHIAAVgIgBIAAOYAA/oIAdYABCwJBqIIBCQILRYABCQULaEECdIAA5gMpIgKBAS4CeHGAAKoHIQQgAiEBA4IBqAUoAhAiAIAAg4EACgEUgAAKAQ2AAH6AARCEACqAANmBAW4FBEkiARuAADaAAUkBIIAACYABOAEhgQCnAgsggABUAxghCYAAFoAACQQMIgBHgABIgAAKAQiAADeEAcaAALEDCAwKggApBRQiAQR/gAHIAhRqgAFTgQB3AwFFDYAA2Q5BEGoLIQUDQCAFIQcgAYABmgMUaiGAAgWCADACDQCAAOUBEIQAEIAAMQYNAAsgB0GAAFsIAAwJC0F/IQaAAB8Dv39LggAnAQuAAhKAALUCIQaEAP4IB0UNAEEfIQiAAf6CAPKAAsQD//8HgALGgAHBASaBAlgGdmciAGt2ggKlCkEBdGtBPmohCAuEAvEBCIUBNQEBgQGeAgAhgQIKgQAHgAA8ARmAAB0DAXZrgABXCAhBH0cbdCEChQFJhQE0BAMgBE+AAJMBAYAAtwMDIgSAAIYBAIAAfwEBgABEAQOBAj+CAWgBA4AB04EC1AYddkEEcWqCANwCRhuAAB0CAxuAAGQBAoAAj4ABZIEA7oEAMQIFcoMAhAEFgALPAQiBAruAAO6AAs8CB3GBAa4DAyAAhQHhASGAAR2CAcCAAUyIAcIBAoABvgEhgABsgQHJgwHEAQWBAAmFAVOAAZMBAYMBbwMLIgCCAHIBBYABOQIgBIMDTYAAQYEAywEFgQHnAQiAADmAAAmEAeeAAAqNAeeAApOAABaDAecBBYIB54AAD4QB5wEFggHngAErgAJ6gAD7gwHnggOAiAHnggAQhAHnAQODAecBB4cD2AEFgQSCgwNDgASmgACNgQKfA0EQT4AAjYIDi4ABMoYDgQIFaoEAk4AAV4UDroEDVYAAF4YDuwEFiwRAgAFfgAQnASGAAeWAA0aBADqBA1aAA3SBAJmBA2WAAm+AAEoBsIIAiAICSYAAiAGwgAAfggCBgQAsArwngAADgQAbgwCIgQA3iQCNhgQxhQBLhAJKAS+ABD8FAn9B/CqAADuAAFMChCuAAAiBAmgFiCtCfzeAAFcGgCtCgKCAgAABAQSBAA4R/CogCkEMakFwcUHYqtWqBXOBAHoCkCuCAScDQeAqgwAIBoAgCyIBaoAFooABkwFrgARcgQSZBU0NCEHcgQBkAiIFgABmAdSCAAoBCIAEowUiCSAITYABRwUJSXINCYAC+YAARQMtAACAApCAAm+FBfqEANiBADkE5CohAIMCWoEAP4EBjYAAPAEIggJqA2pJDYEC24ECEoICQwRBABAEgAV3An9GgAH5AwEhA4AAyYIBHQFBgACTgAP7gAYhgQL8AWuBBVMBaoICzQNxaiGAAEABA4EAqwEDhACrgQERgwCrgANFA2oiB4AAcYABSgEHgACrAQSAACqAAF+AAWMFRw0BDAWBADiAAEyAAOuBABaCAkKAAFOBAJUBRoAE/gECggMVgQCKgAEJBUEwaiADgQC4gAHtAwwEC4MBcYEDIAMgA2uBAIkHAmtxIgIQBIMALoAFZYAAloIAK4AAnIAAzQRHDQILgQFoAeCBAJYCQQSBBayABaiEAOmCAPKBAGgBcoEFJANNcg2AA1OAAFCAA+gIBkEoak0NBQuAAM6DANGBAM+CAawB2IIADgEAgQJOAtgqgQNJAQCBAYWDAXEBBIcBcYMA04EDa4AA1QIiBYAA14IAEoMBa4EAxwG0gwJ7gQFKgAB7ARuBBC0BtIMCvYICaQNB6CqBBjABAIAAUIIAFQVBxCdBf4EACALIJ4MCe4EADAHwgwJAgQHggwbPgwewgAZQAdSAAxCBBlgC2CeBBSeAALsDQSBHgAB5gQMBBANBKGuAABABeIAA6QFBgQJrgAHegwMOhAegggbOgAN0hQMIBAJqQSiBA2wEwCdBjIEBe4ED4IABzoABgQFNgQZkAktygwDaBAxBCHGBAAqAAdkCBWqBADCAAFGABM0CIASCAGaACFGCA3QCsCeDA4+BAU+AAC2AAImDAG+AAKWCAG+AAFaQAG8BA4IBEwIMBoMAB4UBPQMgAkuIATWDAfsBBYIBgAICQIEGmYQBgoEE94QBegMBDAKBBZwCLQCBAK2ABOABC4QBroEJLIMBrgEEgQJpgQc8ggKMAyIFSYQHWQEIggZMlAFAAQeQAUABB5kBQIAAYgIFQYAH+IEAQQNqQS+AAE+AACgBBIAFTIAJlAMBQRuCCSwJQewqKQIANwIQgAALAeSDAAsBCIAAFIIJW4EAcI0CIIQCDIAAIAEYgASvggITgACYgwS/gAAFAQSBCZCAAM+BAv4DIARGgQbpgwVJAX6ACcMBBIMIL4AGdoQAtoIIwQEAgAjyAwJB/4EKQ4AACIQJD4AAFYQKUIAFKoEJ34AJDQEChQkNgAARggkNggmCgQE2AQuABsOAANqBCQ2AAGCABnUCQQyABbIBCIEFLwEfggczAf+EB90BAoAH3YAAGZAH3YAAsYAAxQY2AhwgBEKCAQ8BAIAHOQNB1CmACZqCBOuDCDeAAq+BCjUBA4IAigGogQmXAQWDCZeCCWWBAI8BAoAIA4AAVYIIA4AIYoEIA4IH1oAHooECLYEK3YIHfAECggOqgAfjgQdsgQfTgwMOgAfwAiIDgQbnAQWCBueBAFcBEIEAmoAB7wMYQQiABwQCBCKACCwCQQyFCgeAAdOBAPCDAIEBCIMAw4AI1YAAIwEYgAECAQyAADuEBuyBAvKDBEeEBqmABmQBTYAIfoACaoEHyLEGq4ADIQSgJ0EwgQA5gQMwggjAgwcWggLXgAMoggNrhQLDAWqABhmFAEKACYyABoOCABWABQUCIAiABuwDayEHhQThAiADgQtugQPZigPMAQeDBRuBAOWEC9iAAeCCB/ODADGHCuuECJ+OADGBAiWDAQaBAUCAAWiBBZcEA3FBAYAAP4AAJIAKIAEJgQAWgAI9ggzXgwKUgAARgQjMAQKDDAKDApaADAaAADkBdoMMmAECgQLshwuDgQJ3gQA1AxghBoAARoAEL4EEGoIARYIBH4EAJoEBpYAAJoAAH4AAGIALWIAJEwEDggkTggH7gQmngAAQgQkTgAuHggoqgAaJgQkTggQwgAAwgANXgQsagQm5ggAxgQIsAQWDCROCCoqAAJIBBoAJqIMAYAEcgADkAQKABbaBCgaCASmAAX6AAtiDAasDAg0BgALIgwLegQDVhQDSgQA7AiAGgABdgQAwAQaBACwBEIEA14IACgEUgALmggwKgAjkgAKXhAC1gQNegQDZgAM6gQAlARiCAQSCDDSBAkWAABkBFIYAGQQHIAlqgAvPAQOAAAeBAu0BBIEDfYAHTYYEJIUE1YAACgJqIIEE9oAAEoMBjAEHkwQgAQetBCCDAymBAAeEAbGABCgBAoEAZoQEKAEHgAQoAQeSBCiAAVuAAtSIBCiADyaDBCiCDx2EBCiCBLUDdCIFhQQogAPbgwCShgQoAQeABCiABQeCBCgBAoQMK4IGHoMB9IEOdoIEKAEHgQQogQwLgQHtgwv7gQV9gQQogwtAggH8hgQogADWARiAAAeEAOSBAPKFAQSBBnaDC4+DBCqBAi+BACuIAQgBC4AMtYID2oICAAEIgwJCgABmARyAANCAAM6AAmyAAkKBDwqAAIqBAkKCA12ABu+BAOIBB4QPGYEBr4MAQIAKAIQCQIAKCIQCQIIACoACQIQOSgIgCIEAhIMAyIILqYAAhoAGiYIAxoUML4ECQIIAGQEUhQAZgABcAwRBD4MKYwEEgQSpgAOLhwu5gwR9hgQhgQwKhAAfgAAKgQRvhAAcgQVdAWqCAY+AABKDAl6BAXGQAl4BBKICXoEPdoAAHIAABwEMgQLNgwAHhwJeggBmhAJeAQSAAl4BBJUGhoIAPAMcIAORBoaBAxqCELWFAliAArSEBoCBB6WDAHEBGIEAmAEElgaHgwJfhQ/vgAejhAaHggkdgQAmgQXygQJfAQeHD1WBAF4BEIMQaIED2IUA5YEA84IG9IME3YIAFoMQf4MNoYAEG4ME8oIA1IEOAYMCX4IE+gEJgwJfgAA8hAJfgAHvgAJfgQVngAAojQJfAQuDAl+GAl0DAiAJhAJdAQmGAl2CAAqIAl0BCYEAgoMQTI8CXYMQc5kCXYEL+4oCXYAJdo0CXYAFAoQAH4AACoADkoYCXYACboQCXYoR5oEOOoIBhYACYYYR5AEggwhPiBHmiAJbgAE7ggJGgwHcgQfpggJbggHxAQiBBv+CEdeBDpmBAG6BCICBAWMBC4AODgMQaiSAAEoGC94LAQh/gQbPggDsAkEIgQx3gAmoAWuDAt4BeIELNAIhBYITlAIBcYEJrwFBgAJdgQaAgQW/gAAigAAvgwsHgAqjghK8gwTogATqhAd6hAbegAc0gAA8hAnGgwbvAQSADRWJBzKAEwyEBzKBDZiCByGKBx+LB0WBDcqFEDCIBx2CEDCDBx0BBIACygEEghIXggcdgAGEhRAwggcdggAQixIXgAijgAJmgAlDgQf1AgNHgA5QgAE4ggJngBD2hAZ/gQEegwHEghRtAgAPhAXxgQCZggVQgA3pjgdiggLBAQSHB2IBBJYHYokCxasHYoECxYIBHIECxYgHYoICxYIAGYECxYUDowEFhBGagQDtAQGAAdKGFbuDAeKCCWCBAcCCFNmACWuCC+WGCWuADUiCAReHAQ0BA4MB8AJHDYERcYMQTwG4gwAIAQ+ECYWBD/iECYeCAE2GCYePAE2BDZiFAV2BAoSAACOBDDeLAkaCEkSAAXuMCXiKAkaLAZqAAjOCEoyBAlcBBYgSh4kCV4MCA5ESh4AANLQCV4ACDZECQIYA5oMOWYcCM4cHU4MCM4IHU6MCM4AGxKMCM4YHVYwCM4cHVY4CM44AuIAAFAEIgA/PhQMlgAGthQsUgQssgxa3hgcqgAT6ggsUgBSEhQTPgAb0jRa1hAargAgIhQZFggTWgwYhgAJKgQmHgABlhAcpAQCABymABLOABykBAYMHKYACzIYJh4IGXIYHKYYJh4ATNYAC5wF/iwmJgxdIggmJgwVigAGogQKkgQ0lgwkikQmPgAGegBWdgQIPhg23AQCGCY+BDNqDFYqAAbuGBzCAFdGFBzCBAF2AC72AB+mBAPcCAyKGAQaAAtWCAPyDAQqAACeAAOOBFGEBC4ACdYEQXoMGOIQBGoIBjYIP+oARmgHEggISgAWUgBJNAiAAgA/BgBNPBIwLAQeAAA2BBZqABceDEGOBEneCBc6AARaCBc6CEHeAAI6ECEiBACaBEoGEBo+EELsBDIAGbYUPiYABkZEFw4EPiYYDfYAAIoEDbIQGBIIAMIIH/oEBz4EYmYEDkIIMsAEEgANsgRXThBZWAQSCFpmIFfMBB4ABYYEF44ABMIIE0oABRYIF44MAEIUBVYsFw4AAiocFw4IO4oAUPYQDg4EGxoUFw4EAG4IFw4QAmYcFw4AASoQDkIAAlgEcgABRhgOQAQCHA5CDCVeLA5CEGo+CA5CADxWGA5CBAfWDA5CAAAqAA5ABA4IDkIAF5YEDkIIA+gECggFagQO4gwkogAN3ggEhgAO6gQHxgQPHhQAZhgWvhADukQW0ggWGhgW0gBN/hBbWhg+yqQW0ggAfhgW0kABNgRq4hAFOgRGnggJNgwW0hwI3hAW0gg+PlQI3iwGLhwW0gAa0hgW0iwJIhQW0gQJIiAW0gAJIhQW0rwJIggW0jwIxhgDmgwW0hwIkggW0iAIkiAW0nQIkiQW0mgIkggDWkAIkggD9kAIkkQC4gQ1VhAW0hAGthQdQgQdpggW0gBxjhh2sgRXMgQW0gAgjhQzegQrQgAQehQvZgQzegxCyhQp8hBDHgwqYggW0gASshgW0AQGGG0ABAoMFtIEFJ4IFtIISIYAAuQMcIACDBbQBA4UFtIARb4YPO4EGSIAWZYYFsoAQBYMAkYQMEIIGr4IFS4AFs4AAwYIFswEDgwWzgAEfgQWzggIOgQGoggWzAQGBBbMBA4EFs4EAB4AFs4ACeoAAlYYFswECgwWzhBC7gAKVggFZhADqgwaXgQYKhhrQgxNkgANdggzihBOAgwENAwsLSYEHEQGQgwZ7gRUbAWqBC2IBAoILNYAAdIIDUIIXhQMgAD+ABQIBdIAejYcTRQF/gAFMAZCECpADAQsGgAAtBiQACwQAI4ATswIBAYAG1QRBxAAQgBAZgwvIAgRrgRmPgAw6ggAOgAYeAwD8C4EYzoIFa4ABIwEkgQeNBTYCICAAgBIZAwsLEYAAJoEBUQF+ggfFCxAQCQvZAgEDf0F6gAcwBEBBlAiBAE0BMYECOAF+gRwFhABVhAS4ASCDAnyAAAoBJIQACAkoQQFB2DcgAhGBBlaBAFcBfIEAV4MHkIAA5gM2AjiFAa8EAkG//oAACYAAZQQgABAjgxYPBkEfdSIDc4AZV4ECgIAUBYAWLoMC0gEogw58AnZBghn6BAFBAE6AHlmBH2uAAWCCAD2CAFwDNCACgQI/ASyJABSAAOeBAAeAAZaBABuACNWCDfGAAF+AA4YBMIACyIEAFgE8gwArASSAAAeAGzWCDhwBQoEbQAFwggg/AUKAAKgBN4ENyAJCgYMAFAHMgADggAArArQKggq+AXCDANEBVIMABwJQQYIJDYABCYMZgQMkEQOEATEBHIACLIwBbQFwgAFtARKCAfqBAOaCF5QIBBANC/0kASKEIVkCFCSBAXgBGYYBJIEHjAIiEoQBbAMEIROEG1eBAjcBE4AEZwMAIROCAH2BBJAB3IALOgEfgACnBfQFaiEVgAAIAdiAABABG4AACAHwgAAIARqDAL8CIRaBACCAABADEUGcgRgZBCEcQZiCAAgEHUGUK4AB+AIhHoEDNgNAIQqBAAcBPIEK+QFBgBgyCAJJISBBfSENgAAOBgZHISEgE4ECGIEDLwMXIRCBGPiRIgqSAAKBCY6RIjaBEIKAIhqAAXcXaw4TBAUGBwgJAwIMDQEZABsPIiIUISKCBH8FTCEGDBmGAAqAFtCAAAoBbIEeTIEACAEigAvWAygCYIIfMAMMSRuAACEEBgsgIIEf2oAAVoAGUgQOIQ0MgAGRgQTGAg0PgA8SAghygBXgAQiBBACCF40DCkECgga0A0UNDoEaiAFrgR+SgAEQAyAKdIAUeIEUoIAa0oAALQMJIQqDIM6BEX6AAlADCEHBgABegALShgDLgAAYAXaCFkcGaw4DAAECgAToAR6BDXSCH5gFCANAQZCACgaAD+0BkIIaJAERgSAiBnRqQQg7AYEgJYAAY4EKgYAflwNBgAKAH0YBBIAAB4MAJ4AFCYAAJwEJgQAngAALgArZhAAnApgCggBOAZiEACeDAE4BB40AToAANAGgigBJggBwhwBJgSB3gAIIA0GgK4EEewKgPIMACQMgFEGAETYBDIAFgwERgAA/gAAXgAARBwxqIBUQJBqCAFMBIIkAUgEFjABSAZyAAE4BPIECqgEcgwBKgBCZAQyAIJYDEUEgigBJgAJ2A0EBOoAEcASgKyEdgQFXAR2AA1GAA3gBiYADeAHQgAOEAViAABOAAEKAA2sCQceCBDwCQQGAAqMBIYAKNAQKQQNrgAKngRXuAiEHgQAdgQg2gSB6gAERgQHsBB8LQcSBAZuDC9ECwguBGTQB0YEAEYIcR4AASoERF4gAQ4UAPQIMGoEAGYAX/gEFgAYIAQqAGJaAAByBGa0CQR+CE66CB+mAAh+AAXaBAh8BBYQCH4MBboMS1AMFDAKABWeAAVKBAhsBBoAAVAEKggCRAR2ABZOBCHID//8DgB6CgAAJgCT3AhB2ggsuAkHdgxKfgQChggqqgAJmBBoLQcKCAEABAoEACIMSVoAE/gFEgABagAi2gABUgQOMgAQWgQBbgACzAwJBw4IAJoIC4gNEIgOCCDmCFNiAG+ACAyCBE7EBEIEACoECiYAAKoQDEYAAOQESgBWIAwMQJYMjmQFEgAWJgABkgAAtBBJqIRKBADYCayGBADuAANaBGlCAAA4CBAyBEzCEBckCDBeACNOCAz0CDUuADFmNAR2FAzyEAR2AA3QBaoMDP4IBHoEBnoMAhoEAUoABEAEfgAEXA0GBAoAaKQFkggAQAgV2gAATgAA7AzYCaIIAEAUKdkEPcYAcVQEigAkgAWCAAE4BDoMBvQEOggG9AkEegiHeAkGhigFKgAChgAAMAcWDAjoCACGABCOBBZgBbIADE4ADqgMGIAyBCpsBE4AACQcGQRNNGyEJgADLAwYgCYIN1oAAE4EhHoAALYAC44AADAV0LwGwDoIC6gEAgQLqAQOABGABAIEHZJgESQEKowRJgANhgBrygwBpgAAMhgBpgADbAgdxgQBsiwKnAQSAAMaFAquDAEEBFoMGi4AAB4AGmYEdgYEDNYAADoAGmYADcAUTIBogG4EDbAIiDoIBIQG/ghdnhgEhARaBASEBxoQCYYIBHYABKAEOgQ6AggJKA2QiD4EABwRoaiEMgADcAQuABVqAATKAHaMEKAJYdIACwQEhghVUA1AhIoABAQEJgACbgAOXggEFASKAAzwCGHGACdIHaiIjLQABIoADBoAfOIEK4YEWDoABFYABAYkDPwEJgQEVAQmFAz+AANeAAZ8GIy8BAiIIhRV/gAj3hgEmgAAMgAEfggTEgSPbgQEcAiAGgwEcAQuBFlABf4UGaIACegQQaw4CgAWHgSOUgAl6gg/AhgCMgBAwoQCMigBlAwUgC4IJsgJBh4sDswEJgAGTAQOAAvmAJpuBBmeAAgaBADOAJYmBAJiAJE2ADqCBJp2BALsDIBFqgAAeAi8Bgg7AgBYzjQCXARuoAJeEAhuAAJqACyyDAiCAAjaAAFSCDFiACnOMAFwBGqkAXAEHiABcAQeDAFwD/wBxgCc/gCeGgQIiAwQgDIAAKQILaoACFJYBEYAD3YEFPoIGKoMBuAEEgQG4gQHPgAJigwMhhALIgAWjAWyAF7mEADiCABQELwH0BIMBbwKUCooCtwEVgQK3gABxhQLrhAMAgQasAiAPjALyAaOLAvKCADuABEMBXIME8wFwgAM+gQaZggLuggChgQLwgABDAR+IAEMB8Y0AQ4QGcYYGloADNIQFkYAACwENgwBkAciFBZGBA1cC0DeJAzeCA1UBUIADyosDNwEMgAFugATjgQM3AQuLAzeBJuahAbgBC4ADNQIhD4AC+oAAQIAp14ELUwX/AXFBDoEARwMGIQyAAJ0BBoECGgMMIA+BAGYCIRiAAJUBBoABwoIAlYIBqQIgGIAAhAELgCgPAXaCAIcBD4EAhwEMgBjPgQHkgACIgAR8pwMzgQdCggOYgABGAQCAAe4BD4IAnYEB6wEPgQZlgAVkAiAMgAXeAtA3gAAvAQyDAmwBDIEALwELgQC0gA/SgQP5AkHNgwFzARGBGscBIIEmEYUGfYAACYAknQLQN4MAGwLAAIEAHAMAQdWBB+mHAaqAABwDAkHJhQdAgBnNAXGBBj4BTIUCZoIP0oAGoYoBhoAAvIQA7oAIUqIA7oICSYAAxwEGgwDOhAdLgAfiAiAGgQFagA5dAQyBAPGLBK2FAumAKDABEIMKHwEQgQDthAcUARKBB5qBAEeACR2GAkwCIBCBAI8DECASgQCCAhIMgh3lggebAQqBHJiAAdABCoIHWoAFz4QARoYAIoIAGIAHCIQAGIITBYUAGIIAEgEOlABMgAE8hAA0AQ2AAk6AAAeBC3cCQdCDAI+GCSGDCTIBCoQrvwJEIYIik5IAUIAAyYQAUIAA+AMCQcqFAZuAASEC1DeAK6mBAEABXIMCj4EACwFUkgMkAQuDAySCAp2HAySAB2miAa6CAoeBBmKBApcCIg+DKhiCAcGCB5SAAGIBC4gDHQEPgwMdAQ+GAx0BD4YDHYIDpIgDHaUCL4sDHYUCO4ACGoEDtYAEHIIDxYAAiAEhgAzCgQMlAQqFAyWJAj8BD4YC8wHxigLzhgJYgCsQAwJBy4UBYAEPhgL7ggVpAUiHAwKIAV8DIAYEgybGhQMBgRnrtQMBAUiJAwGBAHKSAv+BAKUBzIQFKYYDB4AAEYQCJQEGgAfOggBNgArEAhcggA8fAQmAAe2CGy4BCYEcvIAAGgEwgCS5gQAIAsw3gxCpAfyLBikBB4QAQQE0gCrEAQOBANaAAAyAEJEBKIAQM4MARAFrggcrggAWgAAiAWuBBtyBE1qBC0WBFIcDBkkbgQAgARKBCvyCLo2AABeBHYmBAZiHC1cBCYILNgMJIQOAAT4DEiAFgAEtgQO3gwOngQblgQf7gQFKAiIDgRJgARCAAHmAA8aBAE2AAWKFA92BFP6SAzOAAcSEAQ6BDLSFABuJA9mAA0aEACKACFKIB0GIBA6BABaEDIqBEZ4BEIMS4QEShiIFgRQ2gAblgRF9gAFBgQlygApJATyHD58BLIABXQQQIBdGgAhVgAP9gCmBgRG8gBgSgSYJgAARgCsIhBCHgBVdATiDBbyCGDeAEh6BFXACKHSBGhKAEj+BEiaAAG8COCCBFbGCHLUDLCIFggAugRGXATCCMO+CADCBKiICLAuDAfWAALuBA6QBBIEBXANrIAWADK6CIFMBNIMemQEsgBHXgwRwgAANgAHoAWqBDNSAACeBAd+AASWBASkGSSIJGyIEgAA4AQmBAGqBAeyBDPeAKH0DBGsggQAXghaAjABPggANATSAIhiACoWAARyDAKsCCUeAGWmAACmAAniAAJYBCYEdWIENZ4EpH4ASW4IRpAIIIIIRpAEEgABcgAAWgRrdAReDES2AEuSCLQUBFIAAF4EVt4ABVgEgggA6gBKxghF2gAPSgRpygABDBBtqQYCAEdyDERiCEMIBRoEAE4ASrYIUOIEOEoEwBYEIfoAAGYABKQcgDUF7IA0bginVAQ2AAJMBF4AAHwENgACZAROAAAiAAagERhshGYMokQHSgwiwAnwhgBFJARSDIBcGGQuUCQEMgBQrhhKngAEhgAjQgAAHgBMngAM0gANCAQ6CB40BEIIatwMCQUCAAY6HJ++CC3OAM+kBAoEz6YEozoEz6IAEwAEOgSBggCGaAQSABWSABh4BDYEFcoEUpYAASgELgADJgSBEAQuADc8CIA2BC+IBCYAEEwQNIAtrgy1rgAmIAU2BLUWCF5sDCSANgAx/gQjUgwArgQAngAGUARCBAEEBCYAAFQEPgBFgAnJBgSOIgAT9gAjNgCFFgCFNggAPAwwgDIYho4AEeQMIEAOBI4GDGTmCDf2DGS4DDWoigABVgABykwBQAQiDAHOEJoqBKSaFK36BAzKBAFKDIP+CAFKDGTOAAFIFCCALSQ2BKDyAAAmBAD2CBmeSAGABDYYm5YACU4EAOYIm5wEIgSUzhCssgyLSgQA5AiAIhQA7ggAsAgcggBa3hzCagRAagAeogBnCAQ2EIgmCJYOBBtWBAYiAMqwBcYABNYEigoEAooALkoEBRIAABwFrgASngAAiAwwhCoINNYMYJIAAEQEIgABhAQqMGcCBIqmGKOyAAB+BBEOABdaEI/+AADUBGIEUFYAAEwEMgRDchQBFigAmgAAfgAAYAxQiB4AWoQEMghnEgAAPARCBM4gBAYAAEIEZxAENgAVJAQ2ABLMDByIKgRnEgAEiggAwgANvgSLMgAAQAQqCADGBBU6AA56EAYaAERaBBkWCGaOAAFEBHIEA8IAYPYIZo4EBnIABZ4EZo4AAjIAAR4sZowEIiBmjAwwgEIQZowEQgQAsghmjggAKgBmjAQqCGaMBCoEFQAEYhAC1gAAoggDZARCDAQ2AEM2DANyBBo+CABkBFIYAGQESgw7OhAHKARGHAgUBEYsByoMB75ICigEShALajgA0gAIQAhIQggX/gAf5AgcLggCYgCi2gQbegQRJgBgtgSVlAxpBfIArbgEOhCPzgBBTAnEbgilIgQBMgRD2AwdLG4IAOgYJIA4gB/yAOmaAA8cBEIADFwILIoEEAocX2wE8gAAHAQ6ABceABA6AAC6ADPwCIAKDAC6CBk2BBluDF6qBACyBBluBBFODGbKACAYCEQGAJPWBAByCBSiABzuBBduBBSOADK2AGjmBH9oFGHRyCwiBBOoDBRAQghj+BBAZCx2JF0oDIAERgAdigQBXgACfBQAQAgsQhAAehBeNAUCMF3kFDxATC9KBGOaHJP6bGNOBCMehGNMBtIcY0wEmgQ3+gCzLgADAgAolgAXAA0giBIATcwNBD0uCGscDQYH+gAT+AXKIGOGCGNmCGOMBIIEAKYMY3IAARo4Y3IYAFI4Y3IAZGJ0Y34EbJIsY34AAtIoY3wHEtBjfAkF+jAFmAXGAAWaLABIBH4AAEowY8QEGgBjxBIBEASOEGPEBEIIY8QEXhQFCgxjxAQyEAYqEGOqBAiiGCGKCBxUBA4IHFYIODwHAgwbTgAAHgRxWgRixAiEdgAAXgRkOgBjOghkOgAdvkhkOgRkmghkOgxj2gA/Rgxj2ggfAARyFGOYDDiESiRiugRQ9gBkOgiFhpRjiwwACgAHmgAG7A2sOH4IZIhszNDU2CgsMDQ4PEBEDAhQVASQAJhcYBD4/QEGEGSUDCwwkhgAKgSQUgBkngw4VghkxghnkgxkxAQqBB7GBDgSAABIBDIAL1AEygwAKghYvhgFiAgwzgRAiAQaDBMSACb8BN4oV7QEGixXtAQaBDB2BEGyBELqAILCABGYEn5YCR4E4oYEAWwEogwBZgBAIASiBBbiABH2AHLeAAAICECeBAwcBHIAO6YAALgI7AYEo6gEQgABKBEECECeCIFoBtYgXCwEcghDOATOCAKsBJIE2eYACXIAQEoADBIAE+AN0QYCAA26CLbgFakEfcEWCAyGCCHwDAEG5iwwjgABCAQeBFloBCIMXjAGHgA6LjQAeAgR2gQPHA3EiCYIM84ANAQIHTYIAxgIiCoAGwgEKgAwYgSl5AigggCDRBAVPcQ2AFlKABWGCOnMBrosNnAEDgBQeATKLAUYBNqQBRoILkYAGS4IR0JMAq4ABtgQHQYDAgT1YgAAdAdiLErSDAdMBJIQYGoEBGIIEMoE2SoEANoA3zIEEZIE0p4MAC4ABdwM6AAiABvmBACsCOgCEO7qBAZqDAY+CHN8DAkG2hRMAgQh7AQaDANuDGSoDRQ01pQDbiACYgQ4JgQxyAy0AFYIkr4sAlIIIQYoAigEEhgCKAbeQAIqFAWWAC8euAIqAAPeDIneCAXOBH9GZAJiBAqyTASIBuIsAmIEAJIA71gNBgAiBAacBB4IQ1IUAqYEABIsAqIAEvIAvO4oAqIMaXYIWaQE2ghpTggJ9gBNPgQC8gQzggA+agQisggNXgABogQCjgAW8hQCuASiAAK6AG62RAK4CDCiFAQKBACeCDWMBEIAAFIoB1AEypwKvgAfFgQJagAOHgAOPgDyGgQJzhAOVBBh2cnKDA+mCCCkBMIABJwG+jwEngRAQgwhogQhRgALsjw6sgBDShQ6sBEECIReAARKGBEoBKIwAYYMUNgMLIB2AHs8CDS+EHgqBGdyMGcGAGCmEGcEBD4oZwYUA7IYZwYcA6aQeCoEeAoAGOwKkPIAAT4EMKoEdIIIPqf8eF5ceFwWoPEGwPIImXAHNgAAEgQAKgAIziR4YgAAYgAASgB3QAxQQKaAeGQGsgABQAc2CB9qCKNoBEIkeGooAS4ABKIIeG4EB0gGogQErjx4agABChx4agxeAgTtHgBGrAQaNHdYBMp8eD5MAOQEqgQAZhB4PgBlRtx4PgABOAwYMMKkeBQEGgQB9kx3/AQaEGG4CDC2eHfsBDoAACgEOgh37Ag0sgAzckh3uAQyAD2GBACkBa4AP94sd7oEEE4Ud7gEngwQLgg+FgAQLASuoBAuSHdyBOUKPHd6AAZsBYIAAP4Ad3oEBjIId3gQFQR5JgSW2AU2FB8GLHeUBJ4od5YAI14gd5YAVVYMd5YAZHIId5YMX4gELgx3lghxWhB3lgRqejR3lgEUHgR3lmAQkgBsCoQQkAQqBAGmABLSBAGmAAAyPHeWLAn0BCIAAxosd5QEVgwuRgAAHiB3lgAAOgAufAiENiB3pgAM6AiIWggEljB3pASaRHemBHf6JHeWBAeGAEWaBPOSIGq4BE4MargEYhhYrAQaCAQWBFw0BE4MXigEZgRcKgBzvhBeKgAC9pB3lARmBHeWGM2QBDYgBJoAADIUcLQMFIAqCARwCIAqDARwBDYsd5YA8xYUd5YAdd4ACfYIB4gEIhBbDgRQsoxeVhwBlAwUgDZ4d5YAUnIACBoEAM4wd5QEEggC7ih3lgB/CjQCXASSoAJeEAhuAAJqAENKDAiCHHeWAGYKNAFwBI6kAXIAd5YYAXIId5YAR/4Qd5YADTgELgADygRVaAQ2bHeWCCCWBBQ2FAbiCBkqBAc+AEauDBCaEAsiAEpimHeUBJYgd5YEC64QDAIgd5YcC7owd5YIAO6Ad5QEeiABDjB3lggBDhh3fARaHHd8DBQwriR3fBARBBkmAEVIDggJJggzdpgiwgAWMAg5qgAUUAWuAGfKBBX0CEmuBJ76BFkyBDsKCFkQDHCINgRbSgAOSgRZ8BCBqISGAA5eAAAyDGyEBIoMADYMDpAEjgQALAVSAA6SAAAcDUCEZgQAHAUCBAsiBDtABA4EAB4EV0oAABwMwISSCBr8BDoEDcoUGtIAwVoAAC4E+cwIIaoAYXIJFhAFyggp5gQNPAgsggCtcAiAjggPqgTzHhEDqAQaBA/SADOeBGS8CBHaBBBaBG0+CAcqAGxQDLQACgRkDgSLdgBwOgAMEgAOmgQrxAQaBGtwBCYAWUoIdjIIALoIE7YID04EQH4IAmIEhO4EC3YIGTQEKiACoggCcAghqgABPggB5gAECAQSCGmGBPEWAGb+AAImBMTmEAN8BCoYC/4EAC4YA34EcroAA2IEhnoEA5gELggTJASKEAN+HANsBCIMbpAEIgQMUggDbgBZzgUqyAX+AAJaBALuERNmBGzqCA4iJA2yBBe+CEOyAPs0BA4AaoQEagwCBAQOEAB+BLqiBADiAAIeBA2GAALeDAGyDAUeAASKCGzuDANoBaoAFWAMMIB+AGKuDGvqAGfmBGNcBJIEa94AB0AHEgRr3gBr1gAZqgRzUgRcmgQFUAw4gIIAAKIMHgoAAiQELgQWZAw4gIYMAFIEAEYAARIEh0YEYw4EtIoIBsoIatYMBsoIk/4IGkIFCbIEVZwEOgRpFgQB8gBSJAiIHgBcsogA2gBX1gQRggAA0A2shCYEWMQEOgQRPgQCFgAAHgBR0gRlCqwBJgAErAQmBBG4DCUEDgRdRiAA6ggG3ATqAAWeFAn+AFLiBBTsBCYAAVYACOoEAVYAAB4MHkoAVDIAgfYYAPAIJQYBBg4AWhoMCroAAnIIAb4EjOwEMgBwGgACphAAogAAMhABkggAKggBkggBWgC4KgwX8gQBygBAnAQKASmqCAGaAAk2BACqAAD6ABY8BQYILboAQHYQAZoAA4QUtAAQ6AIA6XIAUBIAAFIACjQEIgx3YgB3WgQEAgh2YAwgMH4Eee4ECGYECpYICHYAQ4YACHYMCtIAA0oIIp4IhBoEB/gEZhwAshwMjhgAsAQuBCdCCIU4DDRwagCExgAAVARuBAPKGAT+BAx6AH+eAGskBT4AkjYAiLIFDw4MoZYAE8wHIkSLKgAOkiggcgR3nhCLKAQ2BA02ABm2rCBwCIA2FIsqAAEACACKABkuIIsoBC4IdGoEl7IAAaYMiygETgACVgAA1gx+tgRg+AQWAG4eAGlMDcSALiCLKgAoOhR+tpQCIgAosgwOdAQuGIsoBDY8iyoEAWYEBG4wIrAENgiLKghTDhiLKgCiTAQiRIsoCyDeDABuUIsqCKMqGIsqCBIOAACGIIsqATcSBCqOJAYaAALyEAO6CCpOlH8mAAMeEAM6IIsoBC4UEjoMiyoABFYEA5oIBFYUHzoACNAEOgQ82gi2KiyK5gArtgQxchANhgAGqghRfgR35ggdRAQqLEGUBJKQMWoAewQIgDoI8xIwdVoFEbgEggkVCgBj2gQdcAUaCB5yAEc6BIIKBEPiCIgGBEYuBAk+AAb8BA4MUYYIAloAAN4AErYACXYMAGQEogRZXgxRyhBBOggPagBFCgRFAgBmEnBDpggBnAhtGgAAxAwBB54oI4oAFVQESgSypgyZLgAASgRaoAYCABLcBdIMAJpMQyQK9/oIeEoIT7AIAcYFHuoEOFQIMHoYgP4AEcoIgJAEGgQFpgwAUgABmjwAekQAygC2FjgAUghLHAc6FI/OEDwWDDxYBBoIrvYEj8wEKgzdJgw6dgADYgQA0Ac+DAruBFnuHI+qAAQIBzIsj6oIBkgFUgANXiwK+gBv1AiAKiCPqhwREpCpFgwOngRzTjCPqAsg3gwcZgBxHiAQ9iiPqgQQ9gBnFhAQ9gQe+gR4jhQQ9pQCBiwQ9hQNbgAEhgQgugAU8AQqCAKGAHOqCA3uBJ4qEBEWJA1+eI+qCAWCLI+qCBBuBDneBEGmSI++AAWQCIAuEI++FBCaqJvCMBCaDI++EBCaDI++JAMWBDTeAAISJI+8BDoE08IApOYAAwIcj5YID0YEB6IIj5QEFjCPlggjujyPlARKGI+WAChSNI+WBAESII+WAACKKI+WBIemAILCDJfmHI+UBC4Mj5YEAHoURQYkj5YAP94sIsY4j5QEOgSPlAQ6CAE2ABROGI+WGJ3qIA2CBKMGNABSHJ9yHABSAADyFAfOCBP2BOCiBAQOBK4qADWeCAVWGDHiBEn4CA3aAISmDHXeABZYBa4ERgQEihAyeAROAIyOACHSBE4WBAD0BBYFMV4ATioEDdoEIMwEFggHIgQymixsZgAAHAQSBBH0BR4EE/4QGtoBCeoES34MkYgEGgVRVgxXBAkG5hxKXARSACRSDFvKCAV6BRayBLJWAEpaCAeqCFnaAH1yAHzKBG3EBDYQACgEYgAGegAAHARSBAcQBBYECA4AM0YAMq4ABloAkB4EauIAdOQMLSxuBEtCAACaAChiBREuQGMyEFuuBEvuEF5aFEv+BAPQBRIQS7IQS+oAAXYBQ5YAAvwG6iBEtAUSGF/2BAMWBBrSBBqiED3cBaoEDzQEDhQDHgR9ngUSRARyBVVaCArYBRIAIeIAAEQEggSQugxILgQB1gQgzAiADghThgVGFgQJBgQEYAkkbgAI+lhhqhgDKAQWEAMqBAH+CE66ADjSAAMKAIJ+CKVmEF8aBHhiCHaqAAMYBu5IAz4EM04UAz4IU2ZUAzwEkjQDPASjkAM+DNeCJAM+BHNUCQbyJAl0BBYEB9YIEzYcZ9IEur6AIRYMAnIUAkYAC4gMvARyBTqsDAEGaiwmBghfAhxidhBooAUGAOeuAJraAAPABCYMbUYASGIwczIwYgoEEaoAUOYIEaAEUgAAIigj6gkY1oAj6gQikgSMuggOSASCBUoYDAEHQigUVggClgAXphBfJggC5gwejgAAbARaBFpaBAKmDK8mBK9qBP8SlELuEE3mBBWGBNIKACV+BUweDJGKBKB6HKB0BCIEK9oAAEIkoHYILD5YoHYAAbgE4gUpvhSgdgyhLjSgdgACbASyBAbuCBi+ABtGBB9kBCIAFloUn0JAoH4InwgQ0IgZqgAAnAQmAACeBTumAJUSBJUgBSYEhqAEIgAA4gRLDgigfgAAjgAUhgBAEgCY0gSgfgACWkygfgU6ugALvgih8iygfgg9ciygfgATcgydYAQSBAYWEKC6ATD2FKCmCAM6VKCSFAqaHCs+BISqAAKaDCrgBHIFZXYMHB4EK1IERDQMIECeDJEqBAAsCKAuBAVuBAo6AAAeCKKyBBdq5KHMBBYAocwEFgyhzAQWCAJUBG4JLhAEchihzAReDAmSDKHMBC4AodIAMxAEQgyh0AReDI94BB4Aj3gFLgD0mgSH7BAR/QX6CQhWARQ+BAieBJFmNIneBAOeDAkwBKINTMIgijoE82gEKg0ClAw8QP4UACwFxhwALAR+AAAuMIosBCIAiiwLXJIAo/YEhuoFO8wIQNIEiQYAq3wIAGoIC44EBY4QiiwEcg02UgFVZgwCZg0pagQDqgwE0BQRBmgVHgCsYgRpgAYeBA4uFKUyAJpKCAx6ADEiAAHmABDCAAXiHA0KBAa0DABA2ggApgwcfgAIdgwE5gAdfASiFRlABBIBWMIFE8QJBd4MkNQJLG4EP3IQAEAcDQQRKG2pKgAC2gBBCmCI/AwRBKoEQgYIAqoNECYAEcwELgTBsgAB3ARiDDqYB8YIEpIMvyQMwQQyAIUgB8IEY4IEEOIMAsQGIgACHAUqDBgoChAGAGdYCAkiAEoEBwIEIAgEDgBUKgAAMgAJHAcCBULQBBoACA4MbX4BO8YAAKQIgcoMJdAFsgSUUAh9wgEBcBEEfcxCCCGIBbIIX/wQALwEygQAQgQAJAzAQPIEBSYQNAoMFQIIAm4IBLYEBOIQEc4EAYwMEQTmDUbWEBXiCAC+DBhqBGYqBA0uCAHqAFVsBH4IOl5MAHAGLgRxvlQAdgCEOhkyjgyMXkwAoggoV7AAcgB77gkiKggGQAQmAAeMBQYBGhoMDzIIBroE2UgICSIQBjpEARgEggBKFlgBigQfVjgF+ggLUgwKigALmgATxASSBCv6BAyaADEWBHtiAC/OABRKBCq+BBPaBAvqECgeCAF2CALKABLGCAH2ABpwCR0GBBGYDCBtyggC4AQOAAAiCXY6AAAgBEIEITQIbcoIAhIAAX4IG1IUATYMcQIAKH4QASYMAqp4AJoIi0YMAKQMvAQagAE8CLQCBE4mcACa9AX2CALeCRUCcAI6CVhSBTQmBCvShAQyZACaIAQyAAcABC4ABs4IYxIAEG4ADQ4EGn4EAN4IDUoIdZYcKQwEgglrtgwOBggRbAcWAJpkGBQIJCQkDghSLAduAMBSBUWAB54EMLIJZvYICLoIoTocAxoAHbwIvAYAG6YAG54EOLYEAbYEEaIFDtIImgIJPdwFPgwPrgAoXghm4gADSgjE9ASCAAL+BFpGGHtCAEbuCBzaCACMCLEWBBHgBT4QZlIcA0IAARIAGpgFrhQDTggBJhBIwhgLcgRWlgQwTAQaBBPaDDvKDAuuDQHSQAIkBBoUAhAEUglJYigCHgAClAU2RAIeBAL2GAVqBAVKCE+KGCbyAAD0BHIMGEQEUgiBzgQAThAEjgU0KgADvgkZGhADqAQePAGOAGPeAABiFAGOGBTeCAfuAAEqEChWBIPmBC4SDAQqEAiGAEzyDDAaBBb6EAjOGALeBAjCBDuOEBQ6BAIGDBg+BYK2AGBqBB2OKAIaAABaPAOkB24IA6YYARIIre+MA7IArFq4A7LEA6gHniQHLgQNXgQDIhADUgBdjgh1RhQCpgRPDg0siATCXAImGAB6aA8uJBwaBAIeNBbiBKUeCAs2CNiGCAAqCD66CAAqADAaEAAqDAI6CK3aAADgBdIFFroFJY4ED8oAIP4Ez8IQIV4IKc4EE/YMHFQMBEDWCL+KFCOCABQQBAoUfnwMCQZSBESaDRDGFAFcDAhA5iABihBUJArQtgwxCgQmrgAAdAVyBYKgBToFkFIELnQIDaoE8f4EADAFsgAOmBEEBEC6DACYBbIId8IAGfQMQNkGABXSCAAuAA6MBG4MA1oAAVgFggwBAgQArhgHzgAANAqAtgUhpgAFNAqAtgUgOBCgCmC2JB3SwAB+DAbCBEg+BFD6ADCuAIAmAACSBHxWCADSADPGAEk0BdIQAt4EPK4I+24IAToEABgKkLZsA+4EQsYAB448A+IUA9IJg8IIBIwKgLYIObJ4BRpkAToACNYMBRIEBv4IjWIMhfYIAy4BFuAKDAoIVWYYBYwFsgyVogQHaAgFFhwAlAklxgA+VgDhjiwAqgSFHgQ4ygQCVgBbHggInhgICgi3iwAICgQLsgwEMhCrJuAEMAQeEEWKAAK6AD7OCET+CAO+BWqKAMq8BAYFJjYANxoEV44IPA4Id/IYACoBijIEyxQGCgRtkgAkGgBFoiQACgAT8gBvygBE6gR4vAQiDWTCAAAyAADWAGfSBAAqBTuaDAAqAAx6BMfWAAAqAC82BY2CAAAqAIKKAXUGBAAoCB0eBPNiBGMCBHoSAE+mBFdOBE7YFA0H6AUmBHreCEVuCP4OAFd6BBAOAIsiBAAqBLMWBHMwBCYJNj4EcrAEJgk11gRyigh3DgC/CgQAKgRDHgSJ8gQENgAnLgBRfgADUgl3Cgjk2gQcFggHjgAMggQMJAQOANGuAL3eCAHCCAyyCAyqBY9iHC3aBACuFAB+CBNeOA2qOAB+BAFqACAOCBaiBG20ELQCQIYADdYASjQJBhIEffYoDe4Au74IuRoMCfoER6wKIE4IAHAGIgCTjggKogicSgQOYgwyqgwOYggKUgQB/gRYUgQHmgQQ8gQNUgwnJhgDMAQOMAK2GAB+CAE2OAMyOAB8CIAWBAB+CAYmoBDaEAJyFBDeEACy0BDeAHeiBAO2BTfoGQQxsQZgggGhyAQCAM7ABC4AATwF+gBmMgzFyAZqACWiBV5MCQX2ANk+BNF+CADwBBoExVoYJ5IAA3oAExIUGCYALCYAKHoFuqgECglSXgAF7ArgtgwOhAbyAAQoFdHIiBjuAABKCEMIDA0EOgTLUlAstAQaXDKqBESMCuS2DDK6AVZ+FAF0Ca3aEAF0EA0ENa4IRu4AC34AA0QE2gAAehABxAQq/AHGAKDKBAMCBAHMCQQmEAGcCB2qAFEOBAGUCEC2CBRCEB5oBK4FPaIIBqoAxm4EPxIJl/4AADYAXGYUoe4EiW4ENCoJNyYEB/IU0AoAFGIIACIABu4Mo54YQPoIAIoIHvIMQmIEkroIFVwEYgQIMBEwNAxqDCEKBAdyBZxKVANWCA5CEACqVACOFCGyAD7KYACaCACMDLQAznQAjgAALuwAjhwCPAQqfAI+DUMWWACOCFSWCH9yAajMBdosQkIMDKgEYgWdDAUqDBsiAZlCGXEMCRQuCNPMB+oEnJARBewscgE+piDULARCADGGHNq8Bu4BxlYES9wE0ixL3gQ63glYXmBL+gAAgAUScACABQJwAILATXgF9ghJoAfGAE/0BC4E3kQEBgADEAQmCE0sCbBCBcC6AACcBbYET6gcQQAu6CQEVgTXcAUCAJWSCBtICBkGBOU6DDdYCIAeBEoICCkGADTSCZrECdGqCBOWABPCASYaHBPCAABqAFvmCDXuCV3mAF9cCIQmAbccBDoEj+oFAmIIAQoAQTYIAQIEKeoAADIEkY4EAMoEkJ4AABIFOBYAW2YEZpYAlu4EsBgEQgB8JgiomgAA8gi8UgAA8gjsQgi8UgSNEgCG/gQAdgUnxhAOKgySKhABYgRuOBAhLGyGAOZmADFEBAYImL4A72oEA04EAzIE6qIIAuYIAQYIeXwIgaoEAZQFrgAkAAgBOhGgMgAALgAIXgQCxAkdygBkegjGogCLQATuAI7KDAFKAAO2AAK6HAS6HASkBIoEJPgEKgwCfhAExgABagwEzgWDcgixSgAANgS5jhQFBAkETgUCEgE9FARWEBYwDAA4CgAuPgT2DDCESQe4IIRVBrgghFIE6KAF/gAARAvANgAARA7ANIYAyQQEBgBatBA9BCUuBaTaAZReBYJsBAoAU7QFxgGl+gARZAw90IoAHPQNrIReDEfCAKZOCDWSABIOBCiOBY4kDdCEYgAosAX+BEcECIBaFAMKARL6AFDEBGoAyhgISTIRB7wHggjyiARSBRN6ACimBACaAQR4DBiAVgQdoAwshGoEk7oAIXwIiDoEBYIApw4BGJYMkzAIgGIIOLYEeZIA8zgEHgyyKAiAQgAFJgCUCAQ6BJMsDGSAagQP1gSZCgl9jAwFrdIMBYoE9zQF2glwcAQeAWRuJAhOGAoiAAbSEAoqAbICAIcyBUocBB4Fw0oAAy4FRSAEGgh9cgijBgEw0gwGwghzNAQyDChSCRQQDAiAXgCBFgRpQgwElgQAYBSAPIgkhgDdshwDLgQRQgQC2gBlMgQC2gRVPgRPWgD7fiACygWHCglligD3EgmyrgwCYAQCCbRmAAJiCAqODX6oCIBOBAFaDWtuAJKGBAmMBDoEJ4oApA4YBiYQAB4Ifk4AApYEg3gFGgADKAQ+AbJKBPVWDGRkBS4Il/wQgDBsigEegAQeAALIBGIIBegERgQFNgQGTBAZ0IRCCL2eBA3EBDIAvvIEhoYA9LIEBToJJ7oIC/IAFUAFKgW1WgDyaggJUgQJNggIgAyATaoACRAPTBkuEAlsFE0HRBEuAAl+CFEqAAtqAJUCCRWgCIA+BAReAAtWDCSCAM7WAUpQBdoEBMoAhOoED0oEAbIECNIMDrIEDyQEAgwMPgT4qg03LgwMdhwOTgAAYAQ2BAAiBAzyFJ0EDDgsrgAFfggHLgATbhB/hgQSTgVyrgQAHgmV3gGqzgW67gwT1A2BB1IIE9QLEA4JxIIQ8goFVoAHVgRgkgRcbAdWABnSCAAeDUOoBAYEdcoMAHoMlpYAQVIEmy4ADNIEOkoFQwIAcz4EoKoEMDYM364AOYYAIxQdBoIbi7X5zgiASAgFxgXGigzBohBwSgAoagAoQAcCAb6mBABaCIaqBAGiBHKKDbtsBc4Agu4FrX4AuKAF/gwKuggDlAyADc4InW4FyHIAAPoEQSIAAKokA8YUCXYAAQ4AYjJQAM4ACoQIIdoEAHoACwYkAHocAGYAC4ZMAGYAcDZMAGYAQuJMAGYAHMpMAGYADIZMAGYA71YoAGYIA4oAdUIEA4oAbRIIA4gMLvQWCB5aCA9qAACGAPKCEXdyBCviAADGAAPuBA60E8f8Da4ER+wRB8P8DgCDEgWpJgXJggXZBA4CAPIAKF4AAW4IAGwMgAHKBWXWCdM2BHpiEAXaDAVSGAFGBZn2Bc/iCAXGDBvSBAGMBcIAAUoEHc4EAbYFi54IAUoAAUIACKQLbAoEMgANBsCuBD3iAbASCDjeBAmeDAE2DAA2BMtuEAAuBDZmEAAuAbwWFAAuAALaFAAuADiGFAAuBFMCEAAuADtCFAAuBDUyEAAuBaamEAAuADqqFAAuAQJ6FAAuABAmFAAuABZiFAAsBDocACwEPgQALgnVpgC0IgiAsgCGJgQR3gwD4ggLZggAJgQGkArArgwGlArArhQKIAQKAAr+BAVIBEIcCyKQBUoYAWoEj/4QBzoJsBoICuIAADYQAC4Fl3oQAC4FxhIQAC4ABMIUAC4FoXIQAC4FmF4QAC4FsZIQAC4ABMIUAC4ABMIUAC4E/YYQAC4ABMIUAC4ABMIUAC4ABMIUAC4ABMIUAC4UBMIACZIMBDAEQhAELgRezgS9aAnRygAFEAwsLkYkJeoARooMInocJfAEGiAl8ggUQhQl8gCjFhwl8iAjyhwl8ggBCgTpeigl5gUUyhwl4hGYngW/5giR1BEHAAjaBDMySABeCTE2BFZGPCa2CB0+BJFCjCa2CCR2DCa2ICjeHCa2ALDyCAFyAblOECo2Cc+OABh2BCYyFLmiAEDOICa+ACMoBToEINYBbhwEggEMQgWFihAmyAg0CgFWagSjkhgmzgQiEgD5BjAFnhwFihUQjiAFqgQh/hAm1ggAXASCBCGuFAI6CBbkBFIAGzwUFIhMhFIwJtQKBAoAJMQmgDyEUQeAOIROBCbWBCUICoBCBABEBD4BaDIAHWAENkgmzAgQagQAbAnQigEqVAWuAMiCECbQBDYIXHIEJtIBT4IAAIYAH0QEWhAm0gACAAiAVhQDDgCvAAWqALtMBGoAf6IADdoEGqgEOhAm3AROBABOAE4OFCboBDoABdgEUiQm6BA9rIheBAWuBCO8BD4MJugEHgCKBggs7gijzgAbZgQfmAxggDoEH0gMYIBeBB+0BGIMJugEGiQm6ggFpgQfJgilNAiAGjQm6hQLGgAG/hALIggkiAQaBCSIBBoEJuoAAz4FB9IM5f4UJuoF2eogA64oJGAEZgClKgEY7gAAoAQ2NCRgBD4AITAQPGyIPgRq3ARGACVaHCRiAAPGACvuADKqCCRiAKcCAT/+DMYCCAKyBVeSDAmWAUY+BCRgBB4AkUoJlMIIJFoAj9AISaoABpgHUhgkWAxJB0IIJFgEHgFO9gkW2g06ggE56AQ2EMO6DMP8BEYAYfYQJFwELgAp+gAM8gQBrgAGRhAMWggkXgAM1ggyqgSzbgQAYgQKKgAKAhwL8giXJhwkYgQVugTXXgjBOhwqoggGkhAqohgp2ARKECnaCNjGCCncDCwuqgBHygQdSgRY6gTIzAwFBnoISRQQAQYgTgAASgAJJgmyEAkEegwAVAfyBYbGGABUBE4J8JoAACYAAWIMD4YgF0oABMAM7AZSAa+iBDqACsC2DRRIBqIAACIEAEAKgLYEToJIAOZYAGQMLrwKCAKyBD++BEi6BDwKAEkABBIASnYA8xYAAEoF0nQEEgxKdgg8ugRnIgxBAgkQpgBBAghPBlAAcgAb4gxIsgmKIhABdgBKdihKbgTJGgxI0AgAQgEX5gwBKhxCmgwBKgjValQAchRELlQAfgAL7AXODFTCUAKiGHhODECKEJI+BD+oBEIA3E4MANYBs/4FAYwGngBPQgkdRggDMAwFBCYgBG4EBWIRtS4UA/wG4hAD/lQAgggEfgxK9gBKvmQAqggBKgiIggwGZgQCAgm61gAH7gQE8ghRwgTkkgQA6BMAtC6aFAKmBAeCEAK2CSeK8AK2FAIKCTQWBClABSIJtGZ4AVIEAP4cAuoAKgIIB9AQLC/wKgGfAgwarhQX4gRtcgxJugQwyASKAKw8BLIETvoEKnYEDVAcJQf+A/59/gjSsAQaDP3qBDB2BB0CBGVmDBzaCIyOABTaBGWyGBmKABxWCAuoBAYFv9QMvAbyEAAgByIAACAJBIINYN4AMh4E9KIAcroAMW4EAOoAhtIIRcIUWKIEYFIQpGoAOX4ANaoIpAIEBFwWYFmoQL4IACgGkhgAKgACwgQDFBJwWEDCCABCABAKBABABqIUAEAGwgwAqAkH+gX/YAkESgQYjgAECgDVggQZyAQKDL7OCN50B8IBBxIMA2oMF5oYyD4EATgEtgQAygBe6AwVBEYABgIEEEQYoAqwtQQqAIsmAWMmACm2AJteAAAqCLFCAABuAHKCBeJuCEYaADXyBHpKBGrSBTpmAemiDHmiCJjECECuBAICCBByDdXyAAnOAGA2EACGAFVOABCeANWsCciKARriSBC2NAhGJA8eXAmGBOC2FArSEBC0BAY8ELQJBoIBBjAMaEDGCAoeBJhCEAI2Cdr2GAIeEAJq5AI+EAz0BDYEqpIEAmoAAlIIKi4Q3AIRMAYEAk4EB6YEt9gH+glr5ggHogUlaggEXAQyEAJCBIYuHATK4AJgBBYIH04kBKoJuPQELggEohABngWvFgAKxgH73gwChgACKAQGHAIqAYuvCAIqDCF2WAIqCAGeCABKHAIoEBkH9/4MBJYIAkwENhwEdwwCTkQEfASKAPaKCAksBDIIAmYcAb4UAGAEEgACfgwHKggQ0AQqGA5iAA+uCE3UBCoJCtoEcbooDk4F/JoYAR58DBYEnV6AAwYEZz48AvIgDB4kArIYEDoEEcoAAkAMJEDKFBHCAZ4kBB4IADoEgqQExgReWgHzTgiGJBywLC5YLARKBDT8EIGsiD4AqpIJ1IoBhaIIXj4INCYEX5oElogEAgk1NAtDHgAhxAdCCRymBAAQBSoKDKgNB2CiDDtoC3BaBVZ4Bf4MVFIIMF4FqJoESWoBXKgEogW2UgBT/ggDagQCkgFc3ASiAAUuFOeCBLzyBFG+AJjmBVLqCcAmBQtiAH0mAgdiACPiBAMGAfraDEqGDBPeCHB2ABO+BNG8CCRuBFoSCbe2DBP+CE5+ANG2AACMBrIEajAELgXPmgwBSgB4bgAG3hQGiAdCALZSAChWEAJCCFVSEcIiGAHCAa1yCLFeCCgyBBgWBCduCAXOAAV2DJiCABmyCAPSAB8iDBrkC0CiCABGCAO+AAISAAF2AABUB4IAMBoICQoIAh4JF4gLgFoAAEYAfRAIQM4MAjwHUgACPgjGlAdSFADKCHwiCAJeABm2EAP2JACaFAB6EATSCIYKGAOoBBYMK4YMMcYEA94INhYN3/YAMKIEfuYEWFAEEggAKgBokgR7JgADfhCHNgQr7gC1NgwsCgBw/iACthEPxhgHcgCshhAaQgwCcgACOggCcgwHhggDKgw8MAbyAAieARc2BGfqAcAWBAmYBCYYCcgEQg3vUAQiDWwsBBINOpoJD74I0hIAKRoI8T4IsCIUcOIYUEYIx1YEMrYMAhIMBYYUK94AxP4IJ7wHUgACtgACUBrwETBshEoIHboIBzoEjGIAv1IAx+IEvNoQAPIEktYAX84A0QoAB6IBSIIQ8YoFDwYEANYEHJQVMIgIbIoIXgIGDsYEqEYEFdAIgDIIV/oIX34se14IU8YA+jYEEIIBIMIFV/4MAbINsH4MHzoAAaYAAfIABpQMQamyDB9GANB+HAtmAQN2AFkeAAIaAAcOBACCDAt+AAMqChp2BRyiAAHaCRNkBAYICg4AB4IEK84KAeIE8noIO3oEI0YAASIE6poIOOoNIvIEBHIEArAECggImgl9dgQ5egg+4A0ECSoEABYAtGoAAO4EAXYEAlIQAboEOP4IC/4ID8IM4LIEtKYQBR4EBEIE+HYIJWIAfxIEBQoAFfIMFT4MA9IAAFIEIVQIFa4QA8oAR+4UDbIUTBYEK4oAMuIIWuAMAQbqAAkeBAU+BEJCEAhyBGvEBf4I6nwIASIECxYIEioINWIQbhIMNBoMAgIEFBAEPgwJJgS/RggXIhgGkgoHagQB8AXGABdiBDj2CAmgBS4QD6IQ4NIITv4JD+IIAnIUNpgEPgA5XASSAFa+DAF2AhnKBHHGAbqCBA3yBABGABt6JAraBhQ2AA62AA1KHAOsFC7YCAQmABxmBOSyCgieCAsaABtECOwGAP0sBQYACQoAE7gRBB0GKgGaCARuALHGDDkaBHC4BCoE6ZoEEhoMBAYJ1eYEK2ICGaYADHoNCyIIaBYAZooF45oIW7oGMh4QC2IAv24EET4EFjgFLgRBtgAbOgAVegSe5gAQHggE9gxotgALtggDHgh/2ghYqggcdhQAlgHCjhgLzggLYgAtugRCLATuAAAeDQvqBCuYBCYJ05YEAHQHAgwAdAsAVgweagAASAcSDABIBxIBieYARWAIKQYA7hIEEtgRGIgMbhQD3gCTwgAMlARuEAQ+CATgC0AiAATiDDESAJPqBAF6CCr2CCY2ACr2BAHqDBpCAIryAEYeBQNGCef6CB7YBL4EFDIEANYFDOIIikIMBgIIAkIEOsoIcfIQHlYEhwYIPJIAHp4AzgwIDSIcH8Y0OgokPI40AHIgH8YATp4UAXIAH8YMPgIEFqIAU+4EMeoEAC4MK7IAk7AKQIYFBcgJ0IoEWpAQvAYYIiwCmAoQIgDawgwBLAQeAAKeAAjaDCJmDAKsBB4gAq4EHeIEAj4JUAIUtQ58Aq4BYkoUAYIAAq4MAYIEkJoEAq4QmF4UInwYJQRxrQWyBF7WCfxECkB6BOnCDAIyAAA8BoIA0hYA0mYMAkoAaCoIJSYBJAocJ/40AhoIuOoQAHJYQcIwJ/QEEgAqSgzSVhAChhABqhAAVhQCrgACCgQB6gQq0gQ1jgCbRgUgggA4SgR8eBIECSRuAAXgBI4MBeIAW94AC4YANoYMAt4ECGYBEpokRN4AAfQEGhgDakgCupBE6hwFsgADHhABggQe6hgFsAQaGI9oDCUEEgVregAjFgAFpAR+ADLCAADuAAAsDoBwigACLhAKigTSwgQK8hAIVgwB/hytZqgIHgX/TiwFnjwCghwByhQLShgCwgRzFgBhsgiF/AqAtgUNygALeAy8BgoGF6IJ8kwMvAYCBcneBAD2EAhSDXXabA2+iAiKBETCFALiAgIaEAQ2AiEWDALaBeIiDEKEFswsBCn+DBWuBBY8BIoAfEIEw7YAs9wEbghsvhAV5iwV1gI99ghzcgA6LgQcVgALygU2VgTgkg00Xgj+EgmntgILhgStDggWEgwVxgQs4gj3SgBVJghVjgABmggTFggDEgATFgR1CggSagQJ9gAFbgQJ9gD2OjAElgAHyAQWIASWNAeKJASWNAByIASWAXJuEASUBBYAB3YMAYIGCSIQBJ4EACwELgQqGgSXyhR4ngRXehxA4hBRUgXqYgRA6gQX4gAD0gRTlgh2whQDmASKCSSaDitmDIeSCA0+CAqaAHluCAfWZA02iArKCI/mBBWCBAMCCEhuBbe+ABByDAfOBG0GGD86CfBKBBraDAIqBKraBAQwELwG+FYB12oYEs4kDRsAAlIEEeo0AlIAF/IAAJ4IBZAEFhQ83gB1chFsFgSoXjQ8zgQ4TgQBtggasjA8zgQJrgi9njwHtjAU2gHbAgyfhgVCZgA/HgQaFhgBxhAAagCs/gQAagkrKgDwQhHs7gQfQjQE3AcL6ATcB/oUBN4QPmeIBN4APrJABM4NOxIIBJgHEjgEmAcb6ASYB9oUBJoIqHeQBJoMqOo0BJoAIQYN+FIIj/4IDkYIKA4At4gFGgA1zgQWPAQiBBYqBCgOAAA+ALiGBBY8BCIQKBwL/AYCXtoMQmoEJsYEQmoGRXYUMkIBNOoAMC4FKnYMNKIMOBYCM2IEAnYAOzgEEgAyugkONAQSAHRKCGyuAAWKABV+FAECCBLKBBKWBehSEMPOBABiALt6DABgBDYM9nQENgSpzgATvgQ9cghCPgAAIgj4agAuPgw1cgBraigBCggBjggBagXgWgQDtgQy3gQA/hA+tgXkygQEpgg9Vg38phA0ehQAVgCmLAwALg4EahIANGYKLyYQ7zoF2GoEACIVf84ApfoEACoEPggEggS+3gRYHgz0KAduAG6oEAUEWTYAru4AGs4BfxgSggAJxgCe4gQBNgzb1BAECAgKCC9oDQSpGgUA4AgVGgV/lAwBBOYEtAYEG+YACXwML3AmCAYaBkLWAQs6CAhQBLIEr9oAG34ByeoEAD4AAA4BUXoIruoMpOYMXo4J7nIJ6nIMCLgJBKoAWwAJ1IoB5KoEBtYACSIEAFwFsgwg5AVyAJaiAAYiBi0iBmHGABI6BAGuAAtyBYdeDFJsBT4ASTwFLgRbjgBwAAUWAZa0FIARHcnKBZBaCLJyEPNCADFuAai6ALKmBArqCAs6AW2qAHU2EFgOFABOAIpmGGnCHABaBk7CAJCqEGmWHABiAHY6GNKSDLnaAHKKEgC6BARiBAAgBOIIAxoFD5IEAt4AfvoI33oIBBIBEMoEAJYE3q4KKz4E3fYEvroALx4EADYAD8YIDboIAXQFcggANgVH9gDfGgQF/hRk/ghyqgDWFAhA3gi0NhwARggBWggANgQdeg4jigTlhhBrqgn36ggFjgBCcghjugQMTgn+Og33+gQGEggJ8gRB6gYFPggSbAiwigjMagnuFgRyjgi+MgQJjgQEkgQDZhAAlgi3XggPbAWyDAEOAABeAY2OBAdiAAWQBBIKYt4AAkYEuKIE0KIEASIEDw4FFAIQBIAGwgARGAUGDg4+CCUGBAHCCALCAAEKBAAcCtC2BQI2CErcBtIMAGYEwFoQBe4ADUYNBOIIAkAFsgSTPgQCLgglSgQChgwBBgWjBgQq/AgVJgDrTgABhggBIgQC0AVyBBT+AACMCxC2BHueCABMCxC2CDtUBBIM0JwEBgAMkgZ8MhAFCgTZXgSIAgQL+gQGtgBpkhgD0gi8LhAAlggCygQLVggmMgEILgCo5gQBfgpI2gwCggTnLgQHphAESgolqggFZmAESgEgVhBOsAWyDA1SFARyCAYeCBo6CAnCCP+yBBYqBMs2BG1iDATaADQEBA4ICP4MBLIGUVYMAjIIAOIUBLIAAo4QAPIABToMAWJABJIQBAYAMkoAKeIQDy4IDCIUD54EBDoAy2IIDt4QCUoFG+IAD0IMhhoAQtAFFhQO0AQaAYV6ElRmCAWODgtmDAKgBOIAFMYIMfINHdoF/9oID7IAE6gEagzHAgwGWARqCOzWAGJmBA/yDA0qBAwGCAWGBA7KBEucBQYBa0AEDgoqNAUGAQkuAHV6AJIUBi4Muz4JjnwEQgAqkgy9fghfJgGr5gRqTgZRnhAVsgjkFgBo7hQJxgBT5ggN/gi+VgAAYgAANgUSGgQQ2ggANhAPVgRptg4EKggBdgWVqgwAcgjVdggAWgACQBBALC4SBHe6BADKAZCeCBEiBJ6WCBAOCA0SCXCyCANGBAiuHHWiAOaYBGIEyp4M4rIIAcwEwgh73gUB/hBGLhQAThDpohABGgACkhAf2gAS4gAANgSI8BQuECQEPgQd3gSDogRk+gR2ugiSDhwByA3RBhYJaSAEAgTcpggARgAKzAoYCgjy1gzCEgzmvgTU8hABuAVSDAriDAoyABwSCAe8BSIEABQNYdHOAgF6BS3qAAA2EAq4BNIAfAoMWcIBQpYMU04EHUIAJTIIDR4IStYQBlQEsgAB5gUUWAgNrgQdtggQrAhA6gjXFggD7gjU7ggT1g1N4ggA0gDTFgwNagTR/gQARgTTFggMWgAAFAXCABQSGCQ6SACqBjvebACKCNd2CBnaBhFWGNd2AEVyBNd2EFZ+DJUqBbxmBUiSBXVmBDn+EEKyBRMCAF8QCkCOBCDCCDVyKADaCAHsBdIIA34EE34ABP4IADQKkLYEUSIEAlYFFVoABgIMD3QKAAYUeEoIV04AN6wFgggGIgRz7ggEkAUiDB7EBbIMEXwE0gBfTgQGMgCyFgQGCg0X7AVSATfeBAa6BLTmBAEmCAPaEBdeBFIqECR8DEHRzgE6AgXGyAUiCbdEBDIMByoAlXoIBx4EWIYJfWYELGIMKUoUAkYIpSYI1A4QAV4AksIA4K4ILfoM2+ocEuoQAd4IEIYAAD4FUqYQCQ4MCbIFU7oMBjoECXoEAGYIATYILMoIANYEASYQ7S5YBxogaprAAH4ML3IFSwJQBvYQ3FYMA1YcBTII3FIIBy4Kbj4FEoIQGToALSoE3GYIAwAECgzcZgQQXgjcZgwBGiATxgQAHgztQgpnHgaIogwY4gAFgAU+AR+2HOqeEAF6CaZKEAF4BAYQ6V4GW34E6pI0AXoI6pIQAYgEbg0YtAqAtgzpRnQBPmQCtgUaZgAdfgSH2Agu+gKYsggA/ASyAC6mAA+KDCmuCoIuBAAmCNN6CBFEBaoEUi4IAHQEsgAOaggSWgQdUgRGmgZV5gBiMhQWvAXCAClaBXoeEAkeACmOCPL2EBi+BABwBXIMEfgK0LYI+5IELmoQIdAFEgQAFAUyBHemDEcuBRCKBAIqAAQiCBuqDEOyAAAyCQ/4EIAhPG4Qlo4ALg4QJgIMMnoIapIIYzqUAO4AXuYANz4QIaICFkYJG/IECRIMFeYMBYgIEaoAHJgIQN4IAEoIH2AF0gwAwgQfRgRMQgAWJhAJ3gQhuggD/gUKBgB5Xghw7hwM6gQ0NgQM8ggQPAViAMSiABZyAH+2AURaBECaBErWAAH6ClCqDQH6BKi+AA/IBCIQAJoIA6IAABYBKS4gFwoIBNwEigFI0ggP7gBzcgwMFghrOggFkhRyHgh2sgliDgRozAYWBAAqEAhyBP9CFCWyDCWkBxIAfU4IjC4MlG4IBCYAjPoACZYFgBgGCgjsKgaPdAQGAAAyACIWBIxyAidOFSoCBA0KBCEqCOKeBnIyCD0yCPAqAAEKBpV+BAq6BicOBAAeEDO+AB4yAFCOFAEEBAYKfUYOGsYEAj4ANAoAAQ4EUcYAJIQMLqwSAH5SBABkBfIEZR4Ao34EADAF4gwF9AowBhQ07hArlAixrgALjgRnAgQVKAQOAYe2CBYABkICPvYIA24ABlYAMVIAANIIFkAE4gBzJgaAwgVEWgAWUAQeCPZOBKvWBLvaBBNODWCKBAAqCAJoBNIAdgIEBmIMdKYEK1oBdwIEL/4MAL4AZ84JOoIIAMgIgC4IIk4EACoFaO4QADYADSoM+CoE9+IMSMIhmMIY9/4AAgIIALYEFfYE90IAADYAB0YI+BYAL9IExLoAADYA6QIACkoExIoAADYAJx4AAUIExFoAADYA+DoAEnoExCoAADYA+EYABg4Ew/oAADYIUaoEFSoEHPIAQDIIPSoAuq4E+F4AHjIEguIM+HoAAn4Q+HoEQfIOFS4BfT4EACoJAB4Ad3AEGg0XTgBE1AQaDoPaCW1uCHKOAANeCFPOCHkuCWuaAbeaDAhSAAu6DJ9mAAuaASgEBIIIi6wEDg06NgQD5gwF3gCwoggAKgAAUgU6XAQyATRiAX/OCAwmBA+YBAYELroEudwIiCYECzoEZS4EABAVJGwugC4EcKYMJc4EqGYQJc4UJdYICBYkJcwFFgwIXgQl0gECcgAFdgELiggV9kQlzggJimglzgwf1kwlzgglsgAKVhRwDgghxAzYCeIQFU4BlGIACFYEiQIAATwFggU6IhQBQAYCCAO+BAt2CCaGEBHSFCaQBBIAJpIMH9oBMtoYm0YIeTIALpYAB/QFBgAFDgwA1gQBngFQDASCBANmIAGyCAtwBeIKjVoMI6AEFhWDIgAAYiQeRggY3gQNCgAAJhQnogwqIAWSAD+6AAk+bB8eAUL3HCe2BKNy0Ce0BeIEd34IJK4QBfIA/UIAHnoAAjIAo5IEbFYJaI4EA3YMGoQGkggD6AqAtjgmugB3lhB2yhAIjgQUMgjTMiQIegAWYlQXPgyBkiwnKghojhAnLAXiECcuDAhOCCbwBaIUJ2YEOc4GRj4YJeQFcgVCHhggqAQSFCCqAowqaCNeCpLOAAAoBaIUFjoIF/oQE9/IJ1IcJuIgJVZAJs4IC1JQJtoQDYoEKDoYImoYKKIYA+gEEgqFtgwFVlAAugASYgqla/wEhhwEhggII6AqLhgJhuAqLgQRegI7RAwALP4IPmoEAHo8XIIY/xpQAH4AAHIJSNgIEQIABlAEDgAANAoMHgTdahT9igBDTgCIlgS48gE1tgJeBglCwjnXrhQ7vgRX4AUGAI7CAADABf4BQqAEGgqR4AgBIgD+OgROdgRY/gjLogFUYgnqFggUxgTV4gReJggbcgBd6gpDQAghJgSG8AktygBXzgFLiggUQgXY/AciACY2BVM+DAHCDXj2DV4yBBWOCmcgCQSqBEIqAAV+CFrkEQv//gYJs2QFUgAAMA4CAgoBRdwE3gFvEgE5TgQFmgAl5glZoghaDgQAMgVragQrdg1SYgQB1gSPPggDkgAB3gVVEhAAWgU+GiQAZggLHggAXAUyHABeCQhSAAB0BxIEek4AAXoBZG4A4yoAACQGchDEIASiBAA+AGF6EADCBBICBZLiAAEYBnIEsDwECgF6xgHuigxUUATiCV6mABPOEAAgBRIJLNYKS24NEOoABkQGAgmdsgEEUgHiRggf9gQB+AYiBI4SAC0UBhIEAjoAqGYBpJIIKVAE2gkVdgUM1AWyABZ4BNoAEG4OQmgIQNIIB3YAAjIATdop3F4AAp4GPEYNfUoUSGYNBu4AFJ4EaUYEKJIFlSYNBvQRBOUEqgSWPgAHUgqcKgiuJgQL+g0tKgjVng1KKgAqXgEvvgQBmgBOjgwgrhEP6BkGIETYCuICPYIAAC4AfCIAUb4KPbIB6KgGsgwAVgAiWgAC8gQAVAeCAABUBoIMAFYAIo4AA34EAFQF+gngTgCqQgwC9gQCuASyABiKEW4SFRCiCKBIBRIA4GoQyvoIWXoULgYZEIYIqoAIgN4EG3IEAq4BtYoUAEoRENwFIgwEXgDBbAgxsgBjkApQggQlaATaACyuBA28CQZCEAA8BjIMADwGShAAPAYCDAA8BloQADwF8gQ5gAgtDgxlcgVowlxlcgg1rgThNghlcgQAKgAE5gHkoAUmCBBoDCwvjgI0dgAIUBAuhBGmAsxsFZmZpY2mAsqABIIO0lBMAMS4zLjEuMS1tb3RsZXkAaW52gLMoFWQgbGl0ZXJhbC9sZW5ndGhzIHNldIYAHAVjb2RlIIkAGQ91bmtub3duIGhlYWRlciCAs44BZ4sAMgJkaYCzMgFugLPEigAWA2JpdIQARxAgcmVwZWF0AHRvbyBtYW55hQAXB3N5bWJvbHOOABgCb3KGAFOGACSFAFaCs6+AAF2As/sBa4UApgIAYoAA+IAAmgxlcnJvcgBzdHJlYW2EAA2KANULLS0gbWlzc2luZyCAtGIELW9mLYIAR4AAJQJjb4Cz6AJjdIUA4wNjaGWKABeEAJiNABcEZGF0YYYAFYsBCwEggQDUBWZhciBigLRLAQCFAFcCcmOBAIEFbWF0Y2iGADIBd4C0rwRvdyBzgbS+hgE7ggDeA3R5cIcAE4sBsoIA0I8AdYIAFoUBrwRjb21wgLTfAXOAtKSAAg4EdGhvZIAyJwQMC6UCgLcLDAAFAAYABwAIAAkACoApBw0NAA8AEQATABcAGwAfgJUpFisAMwA7AEMAUwBjAHMAgwCjAMMA4wCABjiCAAEBgIwAAgGBhAACAYKEAAIBg4QAAgGEhAACAYWEAAIFkABJAMiCGMyArQSCAIQBB4AAgAENgAB6ARmAKSkBMYADjAFhgABGAcGASOoBgYFI7IBAFgQBBgEIgCkMAxABGIAFvAkwAUABYAGAAcCJAHiFAHCFAGgBhoAAAgGHgAACAYiAAAIBiYAAAgGKgAACAYuAAAIBjIAAAgGNgAACAY6AAAIBEIAAcgESgACIAQiCAIABBoABAgEFgAEEAwQADIAAloAcnAIADoAAogEPgK/uBA4Ltwy1ASyAHNWCAAEBEIwAAgERhAACARKEAAIBE4QAAgEUhAACARWEAAIBEMABLIkAgIUAdIUAbIEAZAEWgAACAReAAAIBGIAAAgEZgAACARqAAAIBG4AAAgEcgAACAR2AAAIBQIAAAgagCAAAoA2BuSgDAAAegAAEAQ+AAFQBIIAAEAIgDoMA4AEegAAEgQAUgQABAaCEABQBE4AABAEHhAAUAQyAATgBjIAABAFMgAAEAcyAAAQBLIAABAGsgAAEAWyAAAQB7IAABAEcgAAEAZyAAAQBXIAABAHcgAAEATyAAAQBvIAABAF8gAAEAfyAAAQBAoAABAGCgAAEAUKAAAQBwoAABAEigAAEAaKAAAQBYoAABAHigAAEARKAAAQBkoAABAFSgAAEAdKAAAQBMoAABAGygAAEAXKAAAQB8oAABAEKgAAEAYqAAAQBSoAABAHKgAAEASqAAAQBqoAABAFqgAAEAeqAAAQBGoAABAGagAAEAVqAAAQB2oAABIB5uAIAuoAABAF6gAAEAfqAAAQBBoAABAGGgAAEAUaAAAQBxoAABAEmgAAEAaaAAAQBZoAABAHmgAAEARaAAAQBloAABAFWgAAEAdaAAAQBNoAABAG2gAAEAXaAAAQB9oAABAEOgAAEAY6AAAQBToAABAHOgAAEAS6AAAQBroAABAFugAAEAe6AAAQBHoAABAGegAAEAV6AAAQB3oAABAE+gAAEAb6AAAQBfoAABAH+gAAEAQGAAAQBgYAABAFBgAAEAcGAAAQBIYAABAGhgAAEAWGAAAQB4YAABAERgAAEAZGAAAQBUYAABAHRgAAEATGAAAQBsYAABAFxgAAEAfGAAAQBCYAABAGJgAAEAUmAAAQByYAABAEpgAAEAamAAAQBaYAABAHpgAAEARmAAAQBmYAABAFZgAAEAdmAAAQBOYAABAG5gAAEAXmAAAQB+YAABAEFgAAEAYWAAAQBRYAABAHFgAAEASWAAAQBpYAABAFlgAAEAeWAAAQBFYAABAGVgAAEAVWAAAQB1YAABAE1gAAEAbWAAAQBdYAABAH1gAAEAQ2AAAQBjYAABAFNgAAEAc2AAASAETMCAK2AAAQBbYAABAHtgAAEAR2AAAQBnYAABAFdgAAEAd2AAAQBPYAABAG9gAAEAX2AAAQB/YAABAETgADCBRMBCQCTgAAIAZOAAAgBU4AACAFTgAAIAdOAAAgB04AACAEzgAAIATOAAAgBs4AACAGzgAAIAXOAAAgBc4AACAHzgAAIAfOAAAgBC4AACIAQ2oAEAoAABIAACAFLgAAIAUuAAAgBy4AACAHLgAAIASuAAAgBK4AACAGrgAAIAauAAAgBa4AACAFrgAAIAeuAAAgB64AACAEbgAAIARuAAAgBm4AACAGbgAAIAVuAAAgBW4AACAHbgAAIAduAAAgBO4AACAE7gAAIAbuAAAgBu4AACAF7gAAIAXuAAAgB+4AACAH7gAAIgQO2AQeAAAgBh4AACAGHgAAIAUeAAAgBR4AACAHHgAAIAceAAAgBJ4AACAEngAAIAaeAAAgBp4AACAFngAAIAWeAAAgB54AACAHngAAIAReAAAgBF4AACAGXgAAIAZeAAAgBV4AACAFXgAAIAdeAAAgB14AACAE3gAAIATeAAAgBt4AACAG3gAAIAXeAAAgBd4AACAH3gAAIAfeAAAgBD4AACAEPgAAIAY+AAAgBj4AACAFPgAAIAU+AAAgBz4AACAHPgAAIAS+AAAgBL4AACAGvgAAIAa+AAAgBb4AACAFvgAAIAe+AAAgB74AACAEfgAAIAR+AAAgBn4AACAGfgAAIAV+AAAgBX4AACAHfgAAIAd+AAAgBP4AACAE/gAAIAb+AAAgBv4AACAF/gAAIAX+AAAgB/4AACAH/gAAIgQQKAUCAAAQBIIAABAFggAAEARCAAAQBUIAABAEwgAAEAXCCBVYDBwBIgAAEASiAAAQBaIAABAEYgAAEAViAAAQBOIAABAF4gAAEAQSAAAQBRIAABAEkgAAEAWSAAAQBFIAABAFUgAAEATSAAAQBdIAABAEDgABCAYOAAAQBQ4AABAHDgAAEASOAAAQBo4AABAFjgAAEAeOAAASAveaAAHSBAsYBBYAAXAEFggVKARSAAAQBDIAABAEcgAAEgL34gAREAQWCBgQBGoIF6gEFgAPUAQWAA7gBBYADnIBPdoAABAERgAAEAQmAAAQBGYAABIEAAgEVgAAEAQ2AAAQBHYAABAEDgAAEAROCBkABBYACLIEFpgEFgAG0AQWAPd8DGwtNgx+5hwAEAQKMAASBB1GJAAQBBIwABAEFigAEBEGwHAuAvMWLAEuNADuFAC8BBoQABIEFiIEABIEBCoEABIEBkoEABICEcYIABAELhAAEAQyEAASABduBR3kE4B0LI4UAX4UFywIQEYAFbQYHCQYKBQuAOrgEDQIOAYAHJQSUHgtphQCQhQCIhQCAhQB4gQBogQBcgQYfARCAAAQBFIAABAEYgAAEARyAAAQBIIAABAEogAAEATCAAAQBOIAABAFAgAAEAVCAAASBBr0BcIAABAGAgAAEAaCAAAQBwIAABAHggABvAx8Lco0Ab4EAa4EAZ4EAY4EAX4EAW4EAV4EAU4EAT4EAS4EAR4EAQ4EBPAGArwBBgFHNAgttgQDHAQSAAAIBCIAABIEBM4ECSwEQgAAOgwAMgYVpgKomhAAkgQdzgQBPAQiAAAiBABiFAAyBCLeDAAwBIIEAlIAyhIEAawGAgQgvAQSDAAyAP0gKAQAQDABBkSEL/4AlHwEDgpvTBQgJCQoKgEk3gAABAQ2AAAEBDoAAAQEPgAABARCEAAEBEYQAAQEShAABAROEAAEBFIwAAQEVjAABARaMAAEBF4wAAQEYnAABARmcAAEBGpwAAQEbmwABARyBffsEBAQFBYHBkAEHgAABAQiEAAGAXSqCAAEBCowAAYAnsooAAYEBMJkAAYEBTJkAAYEBaLkAAYEBpLkAAYIDdYABzoUBvI0BqJ0BkLwBgAIbHLwAAQEdvAABgA9PgH05A9AqAQ==")})}(nn);class Or extends Gt{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"EPUB"})),this.epubBuffer=e}renderTo(e){return new Promise(((t,n)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let n=new b(this.book);this.chapterList=yield n.getChapter(this.book.toc),this.chapterDocList=yield n.getChapterDoc(),p(e);let i=this.getDocument();i&&(y(e,this.readerMode,i),t())}))))}parse(){return c(this,void 0,void 0,(function*(){let e=new Blob([this.epubBuffer]),t=new File([e],"book",{lastModified:(new Date).getTime(),type:e.type});try{const e=yield this.makeZipLoader(t);this.book=yield new ve(e).init()}catch(e){console.error(e);try{const e=yield this.makeZipLoaderV3(t);this.book=yield new ve(e).init()}catch(e){console.error(e);try{const e=yield this.makeZipLoaderV2(t);this.book=yield new ve(e).init()}catch(e){throw console.error(e),e}}}}))}preCache(){return c(this,void 0,void 0,(function*(){try{return this.book||(yield this.parse()),yield Wt(this.book)}catch(e){return""}}))}makeZipLoader(e){return c(this,void 0,void 0,(function*(){let t=yield n.loadAsync(e);const i=t.files;return{entries:Object.values(i).map((e=>({filename:e.name}))),loadText:e=>c(this,void 0,void 0,(function*(){let n=t.file(e);return n?n.async("string"):""})),loadBlob:e=>c(this,void 0,void 0,(function*(){let n=t.file(e);if(n){let e=yield n.async("arraybuffer");return new Blob([e])}return new Blob([new ArrayBuffer(0)])})),getSize:e=>{let n=t.file(e);if(n)return n._data.uncompressedSize||0}}}))}makeZipLoaderV2(e){return c(this,void 0,void 0,(function*(){let t=function(e){const t=new i.Unzip,n={};t.onfile=e=>{if(e.name.endsWith("/")||0===e.originalSize)return;const t=[];e.ondata=(i,r,o)=>{if(i)console.warn(`Error in file "${e.name}": ${i.message}`);else if(t.push(r),o){const i=new Uint8Array(t.reduce(((e,t)=>e+t.length),0));let r=0;t.forEach((e=>{i.set(e,r),r+=e.length})),n[e.name]=i}};try{e.start()}catch(t){console.warn(`Error starting file "${e.name}": ${t.message}`)}},t.register(i.UnzipInflate);try{t.push(new Uint8Array(e),!0)}catch(e){console.warn(`Error during unzip: ${e.message}, returning partial results`)}return n}(yield e.arrayBuffer());return{entries:Object.keys(t).map((e=>({filename:e}))),loadText:e=>c(this,void 0,void 0,(function*(){let n=t[e];if(n){return new TextDecoder("utf-8").decode(n)}return""})),loadBlob:e=>c(this,void 0,void 0,(function*(){let n=t[e];return n?new Blob([n]):new Blob([new ArrayBuffer(0)])})),getSize:e=>{let n=t[e];if(n)return n.length||0}}}))}makeZipLoaderV3(e){return c(this,void 0,void 0,(function*(){let t=new br(new mn(e)),n=yield t.getEntries();return{entries:n.map((e=>({filename:e.filename}))),loadText:e=>c(this,void 0,void 0,(function*(){let t=n.find((t=>t.filename===e));return t?yield t.getData(new wn("utf-8")):""})),loadBlob:e=>c(this,void 0,void 0,(function*(){let t=n.find((t=>t.filename===e));return t?yield t.getData(new Bn):new Blob([new ArrayBuffer(0)])})),getSize:e=>{let t=n.find((t=>t.filename===e));if(t)return t.uncompressedSize||0}}}))}getMetadata(){return c(this,void 0,void 0,(function*(){try{this.book||(yield this.parse());let e=new b(this.book);return yield e.getMetadata()}catch(e){throw console.error(e,"error"),e}}))}}const Ur=e=>{if(!e)return"";const t=document.createElement("textarea");return t.innerHTML=e,t.value},Nr={XML:"application/xml",XHTML:"application/xhtml+xml",HTML:"text/html",CSS:"text/css",SVG:"image/svg+xml"},Wr={name:[0,32,"string"],type:[60,4,"string"],creator:[64,4,"string"],numRecords:[76,2,"uint"]},Pr={compression:[0,2,"uint"],numTextRecords:[8,2,"uint"],recordSize:[10,2,"uint"],encryption:[12,2,"uint"]},Kr={magic:[16,4,"string"],length:[20,4,"uint"],type:[24,4,"uint"],encoding:[28,4,"uint"],uid:[32,4,"uint"],version:[36,4,"uint"],titleOffset:[84,4,"uint"],titleLength:[88,4,"uint"],localeRegion:[94,1,"uint"],localeLanguage:[95,1,"uint"],resourceStart:[108,4,"uint"],huffcdic:[112,4,"uint"],numHuffcdic:[116,4,"uint"],exthFlag:[128,4,"uint"],trailingFlags:[240,4,"uint"],indx:[244,4,"uint"]},zr={resourceStart:[108,4,"uint"],fdst:[192,4,"uint"],numFdst:[196,4,"uint"],frag:[248,4,"uint"],skel:[252,4,"uint"],guide:[260,4,"uint"]},qr={magic:[0,4,"string"],length:[4,4,"uint"],count:[8,4,"uint"]},jr={magic:[0,4,"string"],length:[4,4,"uint"],type:[8,4,"uint"],idxt:[20,4,"uint"],numRecords:[24,4,"uint"],encoding:[28,4,"uint"],language:[32,4,"uint"],total:[36,4,"uint"],ordt:[40,4,"uint"],ligt:[44,4,"uint"],numLigt:[48,4,"uint"],numCncx:[52,4,"uint"]},Jr={magic:[0,4,"string"],length:[4,4,"uint"],numControlBytes:[8,4,"uint"]},Vr={magic:[0,4,"string"],offset1:[8,4,"uint"],offset2:[12,4,"uint"]},Xr={magic:[0,4,"string"],length:[4,4,"uint"],numEntries:[8,4,"uint"],codeLength:[12,4,"uint"]},Zr={magic:[0,4,"string"],numEntries:[8,4,"uint"]},_r={flags:[8,4,"uint"],dataStart:[12,4,"uint"],keyLength:[16,4,"uint"],keyStart:[20,4,"uint"]},$r={1252:"windows-1252",65001:"utf-8"},eo={100:["creator","string",!0],101:["publisher"],103:["description"],104:["isbn"],105:["subject","string",!0],106:["date"],108:["contributor","string",!0],109:["rights"],110:["subjectCode","string",!0],112:["source","string",!0],113:["asin"],121:["boundary","uint"],122:["fixedLayout"],125:["numResources","uint"],126:["originalResolution"],127:["zeroGutter"],128:["zeroMargin"],129:["coverURI"],132:["regionMagnification"],201:["coverOffset","uint"],202:["thumbnailOffset","uint"],503:["title"],524:["language","string",!0],527:["pageProgressionDirection"]},to={1:["ar","ar-SA","ar-IQ","ar-EG","ar-LY","ar-DZ","ar-MA","ar-TN","ar-OM","ar-YE","ar-SY","ar-JO","ar-LB","ar-KW","ar-AE","ar-BH","ar-QA"],2:["bg"],3:["ca"],4:["zh","zh-TW","zh-CN","zh-HK","zh-SG"],5:["cs"],6:["da"],7:["de","de-DE","de-CH","de-AT","de-LU","de-LI"],8:["el"],9:["en","en-US","en-GB","en-AU","en-CA","en-NZ","en-IE","en-ZA","en-JM",null,"en-BZ","en-TT","en-ZW","en-PH"],10:["es","es-ES","es-MX",null,"es-GT","es-CR","es-PA","es-DO","es-VE","es-CO","es-PE","es-AR","es-EC","es-CL","es-UY","es-PY","es-BO","es-SV","es-HN","es-NI","es-PR"],11:["fi"],12:["fr","fr-FR","fr-BE","fr-CA","fr-CH","fr-LU","fr-MC"],13:["he"],14:["hu"],15:["is"],16:["it","it-IT","it-CH"],17:["ja"],18:["ko"],19:["nl","nl-NL","nl-BE"],20:["no","nb","nn"],21:["pl"],22:["pt","pt-BR","pt-PT"],23:["rm"],24:["ro"],25:["ru"],26:["hr",null,"sr"],27:["sk"],28:["sq"],29:["sv","sv-SE","sv-FI"],30:["th"],31:["tr"],32:["ur"],33:["id"],34:["uk"],35:["be"],36:["sl"],37:["et"],38:["lv"],39:["lt"],41:["fa"],42:["vi"],43:["hy"],44:["az"],45:["eu"],46:["hsb"],47:["mk"],48:["st"],49:["ts"],50:["tn"],52:["xh"],53:["zu"],54:["af"],55:["ka"],56:["fo"],57:["hi"],58:["mt"],59:["se"],62:["ms"],63:["kk"],65:["sw"],67:["uz",null,"uz-UZ"],68:["tt"],69:["bn"],70:["pa"],71:["gu"],72:["or"],73:["ta"],74:["te"],75:["kn"],76:["ml"],77:["as"],78:["mr"],79:["sa"],82:["cy","cy-GB"],83:["gl","gl-ES"],87:["kok"],97:["ne"],98:["fy"]},no=(e,t)=>{const n=new e.constructor(e.length+t.length);return n.set(e),n.set(t,e.length),n},io=(e,t,n)=>{const i=new e.constructor(e.length+t.length+n.length);return i.set(e),i.set(t,e.length),i.set(n,e.length+t.length),i},ro=new TextDecoder,oo=e=>ro.decode(e),so=e=>{if(!e)return;const t=e.byteLength,n=4===t?"getUint32":2===t?"getUint16":"getUint8";return new DataView(e)[n](0)},ao=(e,t)=>Object.fromEntries(Array.from(Object.entries(e)).map((([e,[n,i,r]])=>[e,("string"===r?oo:so)(t.slice(n,n+i))]))),lo=e=>new TextDecoder($r[e]),Ao=(e,t=0)=>{let n=0,i=0;for(const r of e.subarray(t,t+4))if(n=n<<7|(127&r)>>>0,i++,128&r)break;return{value:n,length:i}},co=e=>{let t=0;for(const n of e.subarray(-4))128&n&&(t=0),t=t<<7|127&n;return t},go=e=>{let t=0;for(;e>0;e>>=1)1&~e||t++;return t},ho=e=>{let t=0;for(;!(1&e);)e>>=1,t++;return t},uo=e=>{let t=[];for(let n=0;n>>3,s=3+(7&r);for(let e=0;e{const n=t+32,i=n>>3;let r=0n;for(let n=t>>3;n<=i;n++)r=r<<8n|BigInt(e[n]??0);return r>>8n-BigInt(7&n)&0xffffffffn},po=async(e,t)=>{const n=await t(e),i=ao(jr,n);if("INDX"!==i.magic)throw new Error("Invalid INDX record");const r=lo(i.encoding),o=n.slice(i.length),s=ao(Jr,o);if("TAGX"!==s.magic)throw new Error("Invalid TAGX section");const a=(s.length-12)/4,l=Array.from({length:a},((e,t)=>new Uint8Array(o.slice(12+4*t,12+4*t+4)))),A={};let c=0;for(let n=0;n1){const{value:n,length:i}=Ao(r,u);c.push([e,null,n,t]),u+=i}else c.push([e,1,null,t]);else c.push([e,a>>ho(n),null,t])}const f={};for(const[e,t,n,i]of c){const o=[];if(null!=t)for(let e=0;eso(n.slice(8*t,8*t+4)))).map(((e,t,n)=>[e,n[t+1]]))}loadRecord(e){const t=this.#c[e];if(!t)throw new RangeError("Record index out of bounds");return this.#A.slice(...t).arrayBuffer()}async loadMagic(e){const t=this.#c[e][0];return oo(await this.#A.slice(t,t+4).arrayBuffer())}}class Bo extends mo{#g=0;#d;#h;#u;#f;#p;constructor({unzlib:e}){super(),this.unzlib=e}async open(e){await super.open(e),this.headers=this.#m(await super.loadRecord(0)),this.#d=this.headers.mobi.resourceStart;let t=this.headers.mobi.version>=8;if(!t){const e=this.headers.exth?.boundary;if(e<4294967295)try{this.headers=this.#m(await super.loadRecord(e)),this.#g=e,t=!0}catch(e){console.warn(e),console.warn("Failed to open KF8; falling back to MOBI")}}return await this.#B(),t?new Do(this).init():new yo(this).init()}#m(e){const t=ao(Pr,e),n=ao(Kr,e);if("MOBI"!==n.magic)throw new Error("Missing MOBI header");const{titleOffset:i,titleLength:r,localeLanguage:o,localeRegion:s}=n;n.title=e.slice(i,i+r);const a=to[o];n.language=a?.[s>>2]??a?.[0];const l=64&n.exthFlag?((e,t)=>{const{magic:n,count:i}=ao(qr,e);if("EXTH"!==n)throw new Error("Invalid EXTH header");const r=lo(t),o={};let s=12;for(let t=0;t=8?ao(zr,e):null}}async#B(){const{palmdoc:e,mobi:t}=this.headers;this.#h=lo(t.encoding),this.#u=new TextEncoder;const{compression:n}=e;if(this.#f=1===n?e=>e:2===n?uo:17480===n?await(async(e,t)=>{const n=await t(e.huffcdic),{magic:i,offset1:r,offset2:o}=ao(Vr,n);if("HUFF"!==i)throw new Error("Invalid HUFF record");const s=Array.from({length:256},((e,t)=>r+4*t)).map((e=>so(n.slice(e,e+4)))).map((e=>[128&e,31&e,e>>>8])),a=[null].concat(Array.from({length:32},((e,t)=>o+8*t)).map((e=>[so(n.slice(e,e+4)),so(n.slice(e+4,e+8))]))),l=[];for(let n=1;n{let t=new Uint8Array;const n=8*e.byteLength;for(let i=0;i>>24];if(!o){for(;r>>>32-cn)break;const d=g-(r>>>32-c);let[h,u]=l[d];u||(h=A(h),l[d]=[h,!0]),t=no(t,h)}return t};return A})(t,this.loadRecord.bind(this)):null,!this.#f)throw new Error("Unknown compression type");const{trailingFlags:i}=t,r=1&i,o=go(i>>>1);this.#p=e=>{for(let t=0;tnew Uint8Array(e))).then(this.#p).then(this.#f)}async loadResource(e){const t=await super.loadRecord(this.#d+e),n=oo(t.slice(0,4));return"FONT"===n?(async(e,t)=>{const{flags:n,dataStart:i,keyLength:r,keyStart:o}=ao(_r,e),s=new Uint8Array(e.slice(i));if(2&n){const t=16===r?1024:1040,n=new Uint8Array(e.slice(o,o+r)),i=Math.min(t,s.length);for(var a=0;a{const{table:n,cncx:i}=await po(e,t),r=n.map((({tagMap:e},t)=>({index:t,offset:e[1]?.[0],size:e[2]?.[0],label:i[e[3]]??"",headingLevel:e[4]?.[0],pos:e[6],parent:e[21]?.[0],firstChild:e[22]?.[0],lastChild:e[23]?.[0]}))),o=e=>(null==e.firstChild||(e.children=r.filter((t=>t.parent===e.index)).map(o)),e);return r.filter((e=>0===e.headingLevel)).map(o)})(e,this.loadRecord.bind(this))}getMetadata(){const{mobi:e,exth:t}=this.headers;return{identifier:e.uid.toString(),title:Ur(t?.title||this.decode(e.title)),author:t?.creator?.map(Ur),publisher:Ur(t?.publisher),language:t?.language??e.language,published:t?.date,description:Ur(t?.description),subject:t?.subject?.map(Ur),rights:Ur(t?.rights)}}async getCover(){const{exth:e}=this.headers,t=e?.coverOffset<4294967295?e?.coverOffset:e?.thumbnailOffset<4294967295?e?.thumbnailOffset:null;if(null!=t){const e=await this.loadResource(t);return new Blob([e])}}}const wo=/<\s*(?:mbp:)?pagebreak[^>]*>/gi,Co=/<[^<>]+filepos=['"]{0,1}(\d+)[^<>]*>/gi;class yo{parser=new DOMParser;serializer=new XMLSerializer;#w=new Map;#C=new Map;#i=new Map;#y;#E=[];#I=Nr.HTML;constructor(e){this.mobi=e}async init(){const e=[];for(let t=0;te+t.byteLength),0),n=new Uint8Array(t);e.reduce(((e,t)=>(n.set(new Uint8Array(t),e),e+t.byteLength)),0);const i=function(e){let t="";for(let n=0;ne.index))).map(((e,t,i)=>{const r=i[t+1]??n.length;return{book:this,raw:n.subarray(e,r)}})).map(((e,t,n)=>(e.start=n[t-1]?.end??0,e.end=e.start+e.raw.byteLength,e))),this.sections=this.#y.map(((e,t)=>({id:t,load:()=>this.loadSection(e),createDocument:()=>this.createDocument(e),resolveHref:e=>this.resolveHref(e),size:e.end-e.start})));try{this.landmarks=await this.getGuide();const e=this.landmarks.find((({type:e})=>e?.includes("toc")))?.href;if(e){const{index:t}=this.resolveHref(e),n=await this.sections[t].createDocument();let i,r=0,o=0;const s=new Map,a=new Map;this.toc=Array.from(n.querySelectorAll("a[filepos]")).reduce(((e,t)=>{const n=(e=>{let t=0;for(;e;){const n=e.parentElement;if(n){const e=n.tagName.toLowerCase();"p"===e?t+=1.5:"blockquote"===e&&(t+=2)}e=n}return t})(t),l={label:t.innerText?.trim()??"",href:`#filepos${t.getAttribute("filepos")}`},A=n>o?r+1:n===o?r:s.get(n)??Math.max(0,r-1);if(A>r)i?(i.subitems??=[],i.subitems.push(l),a.set(A,i)):e.push(l);else{const t=a.get(A);t?t.subitems.push(l):e.push(l)}return i=l,r=A,o=n,s.set(n,A),e}),[])}}catch(e){console.warn(e)}return this.#E=[...new Set(Array.from(i.matchAll(Co),(e=>e[1])))].map((e=>({filepos:e,number:Number(e)}))).sort(((e,t)=>e.number-t.number)),this.metadata=this.mobi.getMetadata(),this.getCover=this.mobi.getCover.bind(this.mobi),this}async getGuide(){const e=await this.createDocument(this.#y[0]);return Array.from(e.getElementsByTagName("reference"),(e=>({label:e.getAttribute("title"),type:e.getAttribute("type")?.split(/\s/),href:`#filepos${e.getAttribute("filepos")}`})))}async loadResource(e){if(this.#w.has(e))return this.#w.get(e);const t=await this.mobi.loadResource(e),n=URL.createObjectURL(new Blob([t]));return this.#w.set(e,n),n}async loadRecindex(e){return this.loadResource(Number(e)-1)}async replaceResources(e){for(const t of e.querySelectorAll("img[recindex]")){const e=t.getAttribute("recindex");try{t.src=await this.loadRecindex(e)}catch(t){console.warn(`Failed to load image ${e}`)}}for(const t of e.querySelectorAll("[mediarecindex]")){const e=t.getAttribute("mediarecindex"),n=t.getAttribute("recindex");try{t.src=await this.loadRecindex(e),n&&(t.poster=await this.loadRecindex(n))}catch(t){console.warn(`Failed to load media ${e}`)}}for(const t of e.querySelectorAll("[filepos]")){const e=t.getAttribute("filepos");t.href=`#filepos${e}`}}async loadText(e){if(this.#C.has(e))return this.#C.get(e);const{raw:t}=e,n=this.#E.filter((({number:t})=>t>=e.start&&t({...t,offset:t.number-e.start})));let i=t;n.length&&(i=t.subarray(0,n[0].offset),n.forEach((({filepos:e,offset:r},o)=>{const s=n[o+1],a=this.mobi.encode(``);i=io(i,a,t.subarray(r,s?.offset))})));const r=this.mobi.decode(i).replaceAll(wo,"");return this.#C.set(e,r),r}async createDocument(e){const t=await this.loadText(e);return this.parser.parseFromString(t,this.#I)}async loadSection(e){if(this.#i.has(e))return this.#i.get(e);const t=await this.createDocument(e),n=t.createElement("style");t.head.append(n),n.append(t.createTextNode("blockquote {\n margin-block-start: 0;\n margin-block-end: 0;\n margin-inline-start: 1em;\n margin-inline-end: 0;\n }")),await this.replaceResources(t);const i=this.serializer.serializeToString(t),r=URL.createObjectURL(new Blob([i],{type:this.#I}));return this.#i.set(e,r),r}resolveHref(e){const t=e.match(/#filepos(.*)/)[1],n=Number(t);return{index:this.#y.findIndex((e=>e.end>n)),anchor:e=>e.getElementById(`filepos${t}`)}}splitTOCHref(e){const t=e.match(/#filepos(.*)/)[1],n=Number(t);return[this.#y.findIndex((e=>e.end>n)),`filepos${t}`]}getTOCFragment(e,t){return e.getElementById(t)}isExternal(e){return/^(?!blob|filepos)\w+:/i.test(e)}destroy(){for(const e of this.#w.values())URL.revokeObjectURL(e);for(const e of this.#i.values())URL.revokeObjectURL(e)}}const Eo=/kindle:(flow|embed):(\w+)(?:\?mime=(\w+\/[-+.\w]+))?/,Io=/kindle:pos:fid:(\w+):off:(\w+)/,bo=e=>{const[t,n]=e.match(Io).slice(1);return{fid:parseInt(t,32),off:parseInt(n,32)}},vo=(e=0,t=0)=>`kindle:pos:fid:${e.toString(32).toUpperCase().padStart(4,"0")}:off:${t.toString(32).toUpperCase().padStart(10,"0")}`,xo=e=>{const t=e.match(/\s(id|name|aid)\s*=\s*['"]([^'"]*)['"]/i);if(!t)return;const[,n,i]=t;return`[${n}="${CSS.escape(i)}"]`},Qo=e=>{for(const t of e){if("page-spread-left"===t||"rendition:page-spread-left"===t)return"left";if("page-spread-right"===t||"rendition:page-spread-right"===t)return"right";if("rendition:page-spread-center"===t)return"center"}};class Do{parser=new DOMParser;serializer=new XMLSerializer;#i=new Map;#b=new Map;#v=new Map;#x={};#y;#Q;#D=new Uint8Array;#S=new Uint8Array;#k=-1;#M=-1;#I=Nr.XHTML;#F=new Map;constructor(e){this.mobi=e}async init(){const e=this.mobi.loadRecord.bind(this.mobi),{kf8:t}=this.mobi.headers;try{const n=await e(t.fdst),i=ao(Zr,n);if("FDST"!==i.magic)throw new Error("Missing FDST record");const r=Array.from({length:i.numEntries},((e,t)=>12+8*t)).map((e=>[so(n.slice(e,e+4)),so(n.slice(e+4,e+8))]));this.#x.fdstTable=r,this.#Q=r[r.length-1][1]}catch{}const n=(await po(t.skel,e)).table.map((({name:e,tagMap:t},n)=>({index:n,name:e,numFrag:t[1][0],offset:t[6][0],length:t[6][1]}))),i=await po(t.frag,e),r=i.table.map((({name:e,tagMap:t})=>({insertOffset:parseInt(e),selector:i.cncx[t[2][0]],index:t[4][0],offset:t[6][0],length:t[6][1]})));this.#x.skelTable=n,this.#x.fragTable=r,this.#y=n.reduce(((e,t)=>{const n=e[e.length-1],i=n?.fragEnd??0,o=i+t.numFrag,s=r.slice(i,o),a=t.length+s.map((e=>e.length)).reduce(((e,t)=>e+t)),l=(n?.totalLength??0)+a;return e.concat({skel:t,frags:s,fragEnd:o,length:a,totalLength:l})}),[]);const o=await this.getResourcesByMagic(["RESC","PAGE"]),s=new Map;if(o.RESC){const e=await this.mobi.loadRecord(o.RESC),t=this.mobi.decode(e.slice(16)).replace(/\0/g,""),n=t.search(/\?>/),i=`${t.slice(n)}`,r=this.parser.parseFromString(i,Nr.XML);for(const e of r.querySelectorAll("spine > itemref")){const t=parseInt(e.getAttribute("skelid"));s.set(t,Qo(e.getAttribute("properties")?.split(" ")??[]))}}this.sections=this.#y.map(((e,t)=>e.frags.length?{id:t,load:()=>this.loadSection(e),createDocument:()=>this.createDocument(e),resolveHref:e=>this.resolveHref(e),size:e.length,pageSpread:s.get(t)}:{linear:"no"}));try{const e=await this.mobi.getNCX(),t=({label:e,pos:n,children:i})=>{const[r,o]=n,s=vo(r,o),a=this.#b.get(r);return a?a.push(o):this.#b.set(r,[o]),{label:Ur(e),href:s,subitems:i?.map(t)}};this.toc=e?.map(t),this.landmarks=await this.getGuide()}catch(e){console.warn(e)}const{exth:a}=this.mobi.headers;return this.dir=a.pageProgressionDirection,this.rendition={layout:"true"===a.fixedLayout?"pre-paginated":"reflowable",viewport:Object.fromEntries(a.originalResolution?.split("x")?.slice(0,2)?.map(((e,t)=>[t?"height":"width",e]))??[])},this.metadata=this.mobi.getMetadata(),this.getCover=this.mobi.getCover.bind(this.mobi),this}async getResourcesByMagic(e){const t={},n=this.mobi.headers.kf8.resourceStart,i=this.mobi.pdb.numRecords;for(let r=n;re===n));i&&(t[i]=r)}catch{}return t}async getGuide(){const e=this.mobi.headers.kf8.guide;if(e<4294967295){const t=this.mobi.loadRecord.bind(this.mobi),{table:n,cncx:i}=await po(e,t);return n.map((({name:e,tagMap:t})=>({label:i[t[1][0]]??"",type:e?.split(/\s/),href:vo(t[6]?.[0]??t[3]?.[0])})))}}async loadResourceBlob(e){let{resourceType:t,id:n,type:i}=(e=>{const[t,n,i]=e.match(Eo).slice(1);return{resourceType:t,id:parseInt(n,32),type:i}})(e);"image/jpg"===i&&(i="image/jpeg");const r="flow"===t?await this.loadFlow(n):await this.mobi.loadResource(n-1),o=[Nr.XHTML,Nr.HTML,Nr.CSS,Nr.SVG].includes(i)?await this.replaceResources(this.mobi.decode(r)):r,s=i===Nr.SVG?this.parser.parseFromString(o,i):null;return[new Blob([o],{type:i}),s?.getElementsByTagNameNS("http://www.w3.org/2000/svg","image")?.length?s.documentElement:null]}async loadResource(e){if(this.#i.has(e))return this.#i.get(e);const[t,n]=await this.loadResourceBlob(e),i=n?e:URL.createObjectURL(t);return n&&this.#F.set(i,n),this.#i.set(e,i),i}replaceResources(e){return(async(e,t,n)=>{const i=[];e.replace(t,((...e)=>(i.push(e),null)));const r=[];for(const e of i)r.push(await n(...e));return e.replace(t,(()=>r.shift()))})(e,new RegExp(Eo,"g"),this.loadResource.bind(this))}async loadRaw(e,t){const n=t-this.#D.length,i=null==this.#Q?1/0:this.#Q-this.#S.length-e;if(n<0||ne;){const e=this.mobi.headers.palmdoc.numTextRecords-1-++this.#M,t=await this.mobi.loadText(e);this.#S=no(t,this.#S)}const r=this.#Q-this.#S.length;return this.#S.slice(e-r,t-r)}loadFlow(e){if(e<4294967295)return this.loadRaw(...this.#x.fdstTable[e])}async loadText(e){const{skel:t,frags:n,length:i}=e,r=await this.loadRaw(t.offset,t.offset+i);let o=r.slice(0,t.length);for(const e of n){const n=e.insertOffset-t.offset,i=t.length+e.offset,s=r.slice(i,i+e.length);o=io(o.slice(0,n),s,o.slice(n));const a=this.#b.get(e.index);if(a)for(const t of a){const n=this.mobi.decode(s).slice(t),i=xo(n);this.#Y(e.index,t,i)}}return this.mobi.decode(o)}async createDocument(e){const t=await this.loadText(e);return this.parser.parseFromString(t,this.#I)}async loadSection(e){if(this.#i.has(e))return this.#i.get(e);const t=await this.loadText(e),n=await this.replaceResources(t);let i=this.parser.parseFromString(n,this.#I);i.querySelector("parsererror")&&(this.#I=Nr.HTML,i=this.parser.parseFromString(n,this.#I));for(const[e,t]of this.#F)for(const n of i.querySelectorAll(`img[src="${e}"]`))n.replaceWith(t);const r=URL.createObjectURL(new Blob([this.serializer.serializeToString(i)],{type:this.#I}));return this.#i.set(e,r),r}getIndexByFID(e){return this.#y.findIndex((t=>t.frags.some((t=>t.index===e))))}#Y(e,t,n){const i=this.#v.get(e);if(i)i.set(t,n);else{const i=new Map;this.#v.set(e,i),i.set(t,n)}}async resolveHref(e){const{fid:t,off:n}=bo(e),i=this.getIndexByFID(t);if(i<0)return;const r=this.#v.get(t)?.get(n);if(r)return{index:i,anchor:e=>e.querySelector(r)};const{skel:o,frags:s}=this.#y[i],a=s.find((e=>e.index===t)),l=o.offset+o.length+a.offset,A=await this.loadRaw(l,l+a.length),c=this.mobi.decode(A.slice(n)),g=xo(c);this.#Y(t,n,g);return{index:i,anchor:e=>e.querySelector(g)}}splitTOCHref(e){const t=bo(e);return[this.getIndexByFID(t.fid),t]}getTOCFragment(e,{fid:t,off:n}){const i=this.#v.get(t)?.get(n);return e.querySelector(i)}isExternal(e){return/^(?!blob|kindle)\w+:/i.test(e)}destroy(){for(const e of this.#i.values())URL.revokeObjectURL(e)}}class So extends Gt{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"MOBI"})),this.mobiBuffer=e}renderTo(e){return new Promise(((t,n)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let n=new b(this.book);this.chapterList=yield n.getChapter(this.book.toc),this.chapterDocList=yield n.getChapterDoc(),p(e);let i=this.getDocument();i&&(y(e,this.readerMode,i),t())}))))}parse(){return c(this,void 0,void 0,(function*(){try{let e=new Blob([this.mobiBuffer]),t=new File([e],"book",{lastModified:(new Date).getTime(),type:e.type});if(!(yield(async e=>"BOOKMOBI"===oo(await e.slice(60,68).arrayBuffer()))(t)))throw new Error("Not a valid MOBI file");this.book=yield new Bo({unzlib:r}).open(t)}catch(e){throw console.error(e),e}}))}preCache(){return c(this,void 0,void 0,(function*(){return this.book||(yield this.parse()),yield Wt(this.book)}))}getMetadata(){return c(this,void 0,void 0,(function*(){try{this.book||(yield this.parse());let e=new b(this.book);return yield e.getMetadata()}catch(e){throw console.error(e),e}}))}}const ko=e=>`${Yo()?".":""}/lib/pdfjs/${e}`,Mo=window.pdfjsLib,Fo=async e=>await(await fetch(e)).text(),Yo=()=>"undefined"!=typeof window&&"object"==typeof window.process&&"renderer"===window.process.type||(!("undefined"==typeof process||"object"!=typeof process.versions||!process.versions.electron)||"object"==typeof navigator&&"string"==typeof navigator.userAgent&&navigator.userAgent.indexOf("Electron")>=0);function Lo(e,t="",n=""){return new Promise((i=>{vex.dialog.prompt({message:e,placeholder:t,value:n,callback:function(e){i(e)}})}))}const To=async()=>await Fo(ko("text_layer_builder.css")),Ro=async()=>await Fo(ko("annotation_layer_builder.css")),Ho=async(e,t)=>{try{const n=e.getViewport({scale:1});if(t){const t=document.createElement("canvas");t.height=n.height,t.width=n.width;const i=t.getContext("2d");return await e.render({canvasContext:i,viewport:n}).promise,new Promise((e=>t.toBlob(e)))}return URL.createObjectURL(new Blob([`\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n`],{type:"text/html"}))}catch(e){console.error(e)}},Go=e=>({label:e.title,href:e.dest?JSON.stringify(e.dest):null,subitems:e.items.length?e.items.map(Go):null});function Oo(e="need"){return(navigator.language?.toLowerCase()||"en").startsWith("zh")?"need"===e?"请输入PDF密码:":"密码错误,请重新输入:":"need"===e?"Need password to open this PDF:":"Incorrect password, please try again:"}const Uo=async(e,t)=>{let n;for(;;){const i=new Mo.PDFDataRangeTransport(e.size,[]);i.requestDataRange=(t,n)=>{e.slice(t,n).arrayBuffer().then((e=>{i.onDataRange(t,e)}))};try{n=await Mo.getDocument({range:i,cMapUrl:ko("cmaps/"),standardFontDataUrl:ko("standard_fonts/"),isEvalSupported:!1,password:t}).promise;break}catch(e){if("PasswordException"!==e.name)throw e;if(e.code===Mo.PasswordResponses.NEED_PASSWORD?Yo()?(t=await Lo(Oo("need"),"",""),vex.closeAll()):t=prompt(Oo("need")):e.code===Mo.PasswordResponses.INCORRECT_PASSWORD&&(Yo()?(t=await Lo(Oo("incorrect"),"",""),vex.closeAll()):t=prompt(Oo("incorrect"))),!t)throw new Error("PDF loading failed: no password provided")}}let i=!1,r=n.numPages>0?await n.getPage(Math.floor(n.numPages/2)+1):null;if(r){const e=await r.getTextContent();if(i=0===e.items.length,e.items.length>0){i=e.items.reduce(((e,t)=>e+t.str.trim().length),0)<40}r.cleanup()}const o={rendition:{layout:"pre-paginated"}},{metadata:s,info:a}=await n.getMetadata()??{};o.metadata={title:s?.get("dc:title")??a?.Title,author:s?.get("dc:creator")??a?.Author,contributor:s?.get("dc:contributor"),description:s?.get("dc:description")??a?.Subject,language:s?.get("dc:language"),publisher:s?.get("dc:publisher"),subject:s?.get("dc:subject"),identifier:s?.get("dc:identifier"),source:s?.get("dc:source"),rights:s?.get("dc:rights")},o.metadata.description=(o.metadata.description?o.metadata.description:"")+(i?"\nscanned PDF":"")+(t?"\nprotected PDF: #"+t+"#":"");const l=await n.getOutline();o.toc=l?.map(Go);const A=new Map;return o.sections=Array.from({length:n.numPages}).map(((e,t)=>({id:t,load:async()=>{const e=A.get(t);if(e)return e;const i=await Ho(await n.getPage(t+1));return A.set(t,i),i},unload:async()=>{(await n.getPage(t+1)).cleanup()},render:async(e,i,r,o)=>{await(async(e,t,n,i,r,o)=>{try{let s=window.devicePixelRatio*("yes"===r?1/i*1.5:1);const a=i*s;let l=n.querySelector("#koodoPDFLayer");l.style.visibility="hidden",l.style.transform=`scale(${1/s})`,l.style.transformOrigin="top left",l.style.setProperty("--scale-factor",a);const A=e.getViewport({scale:a}),c=document.createElement("canvas");l.style.width=`${A.width}px`,l.style.height=`${A.height}px`,c.height=A.height,c.width=A.width;const g=c.getContext("2d");try{await e.render({canvasContext:g,viewport:A,background:"rgba(0,0,0,0)"}).promise}catch(e){console.error(e)}n.querySelector("#canvas").replaceChildren(n.adoptNode(c)),l.style.overflow="hidden";const d=n.querySelector("#textLayer");try{const t=new Mo.TextLayer({textContentSource:await e.streamTextContent(),container:d,viewport:A});await t.render()}catch(e){console.error(e)}for(const e of document.querySelectorAll(".hiddenCanvasElement"))Object.assign(e.style,{position:"absolute",top:"0",left:"0",width:"0",height:"0",display:"none"});const h=document.createElement("div");h.className="endOfContent",d.append(h);let u=!1,f=null;d.onpointerdown=()=>{let e=n?.defaultView;if(e.getSelection().toString().trim().length>0)return d.classList.remove("selecting"),u=!1,h.remove(),void d.append(h);d.classList.add("selecting"),u=!0},"yes"!==r?(d.onpointerup=()=>{d.classList.remove("selecting"),u=!1,h.remove(),d.append(h)},d.onpointermove=e=>{if(!u)return;let t=e.target.closest(".textLayer > span");const n=null!==t;d.style.cursor=n?"text":"default",n&&(f=t),h.remove(),d.insertBefore(h,f)}):n.addEventListener("selectionchange",(e=>{if(!u)return;let t=n?.defaultView;var i=t.getSelection().getRangeAt(0).endContainer;let r=i.nodeType===Node.TEXT_NODE?i.parentNode:i;r=r.closest(".textLayer > span");const o=null!==r;d.style.cursor=o?"text":"default",o&&(f=r),h.remove(),d.insertBefore(h,f.nextSibling?f.nextSibling:f)}));const p=n.querySelector("#annotationLayer");try{await new Mo.AnnotationLayer({page:e,viewport:A,div:p}).render({annotations:await e.getAnnotations(),linkService:{goToDestination:async e=>{try{const n="string"==typeof e?await t.getDestination(e):e;if(!n||!Array.isArray(n)||0===n.length)return void console.warn("Invalid destination:",e);const i=await t.getPageIndex(n[0]);o.goToChapterDocIndex(i)}catch(e){console.error("Error navigating to destination:",e)}},getDestinationHash:e=>JSON.stringify(e),addLinkAttributes:(e,t)=>e.href=t}})}catch(e){console.error(e)}}catch(e){console.error(e)}})(await n.getPage(t+1),n,e,i,r,o)},getTextContent:async()=>{const e=await n.getPage(t+1);return await e.getTextContent()},size:1e3,getDimension:async()=>{let e=(await n.getPage(t+1)).getViewport({scale:1});return{width:e.width,height:e.height}},getPage:async()=>await n.getPage(t+1)}))),o.isExternal=e=>/^\w+:/i.test(e),o.resolveHref=async e=>{const t=JSON.parse(e),i="string"==typeof t?await n.getDestination(t):t;return{index:await n.getPageIndex(i[0])}},o.splitTOCHref=async e=>{const t=JSON.parse(e),i="string"==typeof t?await n.getDestination(t):t;return[await n.getPageIndex(i[0]),null]},o.getTOCFragment=e=>e.documentElement,o.getCover=async()=>Ho(await n.getPage(1),!0),o.destroy=()=>n.destroy(),o};class No extends Gt{constructor(e,t){super(Object.assign(Object.assign({},t),{convertChinese:"Default",format:"PDF"})),this.isStartFromEven="no",this.password="",this.pdfScale=0,this.scale=1,this.scrollPDFInterval=null,this.templateChapterDocIndex=0,this.getPdfScale=()=>c(this,void 0,void 0,(function*(){if(this.pdfScale&&this.pdfScale>0)return this.pdfScale;let e=this.getDocument();if(!e)return 1;let{width:t,height:n}=yield this.chapterDocList[this.templateChapterDocIndex].text.getDimension(),i=e.body.clientWidth,r=this.element.clientHeight,o=Math.min(i/t,r/n);return"scroll"===this.readerMode&&(o=i/t),this.pdfScale=o,o})),this.pdfBuffer=e,this.isStartFromEven=t.isStartFromEven||"no",this.password=t.password||"",this.scale=t.scale||1,this.backgroundColor=t.backgroundColor||"#ffffff",this.isScannedPDF=t.isScannedPDF||"no",this.platform=t.platform||"web"}renderTo(e){return new Promise(((t,n)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let n=new b(this.book);this.chapterList=yield n.getChapter(this.book.toc),this.chapterDocList=yield n.getChapterDoc(),"yes"===this.isStartFromEven&&(this.chapterDocList=[{label:"",text:{load:()=>c(this,void 0,void 0,(function*(){return""})),render:()=>c(this,void 0,void 0,(function*(){})),unload:()=>c(this,void 0,void 0,(function*(){})),getPage:()=>c(this,void 0,void 0,(function*(){return null})),getDimension:()=>c(this,void 0,void 0,(function*(){return{width:0,height:0}})),getScale:()=>c(this,void 0,void 0,(function*(){return 1})),getPageCount:()=>c(this,void 0,void 0,(function*(){return 0}))},href:""},...this.chapterDocList]),"single"===this.readerMode&&Math.abs(this.scale)>1.4&&(this.scale=1.4),document.body.clientWidth*Math.abs(this.scale)-.4*document.body.clientWidth>document.body.clientWidth&&"double"!==this.readerMode?p(e,this.scale):p(e);const i=this.chapterDocList.length;let r=[0,Math.floor(i/4),Math.floor(i/2),Math.floor(3*i/4),i-1].filter((e=>e>=0&&ec(this,void 0,void 0,(function*(){return{index:e,dimension:yield this.chapterDocList[e].text.getDimension()}})))))).map((e=>({index:e.index,ratio:e.dimension.height/e.dimension.width,dimension:e.dimension})));let s,a;const l=new Map;o.forEach((e=>{const t=Math.round(1e3*e.ratio)/1e3,n=l.get(t);n?n.count++:l.set(t,{count:1,dimension:e.dimension,index:e.index})}));let A={count:0,dimension:null,index:0,ratio:0};l.forEach(((e,t)=>{(e.count>A.count||e.count===A.count&&t>A.ratio)&&(A=Object.assign(Object.assign({},e),{ratio:t}))})),s=A.dimension,a=A.index,this.templateChapterDocIndex=a;let g=this.getDocument();if(!g)return;((e,t,n,i)=>{for(let r=0;r{d&&clearTimeout(d),d=setTimeout((()=>c(this,void 0,void 0,(function*(){yield this.handlePDFScrollEvent(g),yield this.record()}))),100)})):g.addEventListener("scroll",(e=>{d&&clearTimeout(d),d=setTimeout((()=>c(this,void 0,void 0,(function*(){yield this.handlePDFScrollEvent(g),yield this.record()}))),200)})),((e,t,n)=>{if("scroll"===t)return;let i="double"===t?2:1,r=Math.floor(n.body.clientWidth/12),o=r%2==0?r:r-1;n.body.setAttribute("style",e.getAttribute("style")+`height: 100%;overflow-y: hidden;overflow-X: hidden;padding-left: 0px;padding-right: 0px;margin: 0px;box-sizing: border-box;touch-action: manipulation; overscroll-behavior: none;max-width: inherit;column-fill: auto;column-gap: ${o}px; column-width: ${(n.body.clientWidth-o)/i}px;`)})(e,this.readerMode,g),t()}))))}autoScrollPDF(e){return c(this,void 0,void 0,(function*(){let t=this.getDocument();this.scrollPDFInterval&&(clearInterval(this.scrollPDFInterval),this.scrollPDFInterval=null),"no"!==e&&"scroll"===this.readerMode&&(this.scrollPDFInterval=setInterval((()=>c(this,void 0,void 0,(function*(){t&&(yield this.handlePDFScrollEvent(t))}))),1e3))}))}handlePDFScrollEvent(e){return c(this,void 0,void 0,(function*(){let t=e.querySelectorAll(".pdf-container");for(let n=0;n0&&(yield this.goToChapter(e,this.chapterDocList[e].href,this.chapterDocList[e].label))}))}getPageSize(){let e=this.getDocument();if(!e)return;let t="double"===this.readerMode?2:1,n=Math.floor(e.body.clientWidth/12),i=n%2==0?n:n-1,r=e.querySelectorAll("iframe")[0],o=null==r?void 0:r.getBoundingClientRect().height;return{width:e.body.clientWidth,height:this.element.clientHeight,left:this.element.offsetLeft,top:this.element.offsetTop,scrollTop:this.element.scrollTop,scrollLeft:this.element.scrollWidth/2-this.element.clientWidth/2,sectionWidth:(e.body.clientWidth-i)/t,sectionHeight:o,gap:i}}goToChapter(e,t,n){return c(this,void 0,void 0,(function*(){"double"===this.readerMode&&e%2==1&&e--;let t=this.getDocument(),n=this.getIframe();t&&n&&(yield this.renderPdfPage(e,t),yield vt(parseInt(e),this.readerMode,t),yield this.recordByChapter(e))}))}getPositionByChapter(e){return{percentage:e/this.chapterDocList.length,chapterDocIndex:e+"",chapterHref:this.chapterDocList[e].href,chapterTitle:this.chapterDocList[e].label,text:""}}goToPercentage(e){return c(this,void 0,void 0,(function*(){if(this.chapterDocList.length>0){let t=1===e?this.chapterDocList.length-1:Math.floor(this.chapterDocList.length*e);yield this.goToChapter(t,this.chapterDocList[t].href,this.chapterDocList[t].label)}}))}goToPosition(e){var n;return c(this,void 0,void 0,(function*(){let i=this.getDocument(),r=this.getIframe();if(!i||!r)return;let o=JSON.parse(e);void 0===o.chapterDocIndex&&(o.chapterDocIndex=0),this.tempLocation={text:o.text,chapterTitle:o.chapterTitle,chapterDocIndex:o.chapterDocIndex,chapterHref:o.chapterHref,count:o.count,page:o.page,percentage:o.percentage};let{chapterTitle:s,chapterDocIndex:a,chapterHref:l}=o;if("double"===this.readerMode&&a%2==1&&a--,yield this.renderPdfPage(parseInt(a),i),"scroll"===this.readerMode){let e=this.getSubIframe(void 0!==a?a:parseInt(this.tempLocation.chapterDocIndex));if(!e)return;let t=(null===(n=e.parentElement)||void 0===n?void 0:n.getBoundingClientRect().height)||0;r.style.height=t*this.chapterDocList.length+"px"}yield vt(parseInt(a),this.readerMode,i),t.init(),yield this.recordByChapter(parseInt(a))}))}prev(e){return c(this,void 0,void 0,(function*(){let t=this.getDocument(),n=this.getIframe();t&&n&&("scroll"===this.readerMode?this.element.scrollBy({left:0,top:-(this.element.clientHeight-50),behavior:"smooth"}):("ios"===e?yield Dt(this.element,this.animation,1,t,this.flipToNextPage,this.flipToPrevPage,this.isMobile,parseInt(this.tempLocation.chapterDocIndex||"0"),this.readerMode):yield We(this.element,this.animation,1,t,this.flipToNextPage,this.flipToPrevPage,this.isMobile),yield this.renderPdfPage(parseInt(this.tempLocation.chapterDocIndex)-("double"===this.readerMode?2:1),t)),yield this.record())}))}next(e){return c(this,void 0,void 0,(function*(){let t=this.getDocument(),n=this.getIframe();t&&n&&("scroll"===this.readerMode?this.element.scrollBy({left:0,top:this.element.clientHeight-50,behavior:"smooth"}):("ios"===e?yield Dt(this.element,this.animation,-1,t,this.flipToNextPage,this.flipToPrevPage,this.isMobile,parseInt(this.tempLocation.chapterDocIndex||"0"),this.readerMode):yield We(this.element,this.animation,-1,t,this.flipToNextPage,this.flipToPrevPage,this.isMobile),yield this.renderPdfPage(parseInt(this.tempLocation.chapterDocIndex)+("double"===this.readerMode?2:1),t)),yield this.record())}))}prevChapter(){return c(this,void 0,void 0,(function*(){yield this.prev()}))}nextChapter(){return c(this,void 0,void 0,(function*(){yield this.next()}))}goToPage(e){return c(this,void 0,void 0,(function*(){let t=Math.floor(e-1);t>=this.chapterDocList.length&&(t=this.chapterDocList.length-1),t<0&&(t=0),yield this.goToChapter(t,this.chapterDocList[t].href,this.chapterDocList[t].label)}))}visibleText(){return c(this,void 0,void 0,(function*(){return this.getDocument()?yield(e=parseInt(this.tempLocation.chapterDocIndex||"0"),t=this.chapterDocList,n=this.readerMode,c(void 0,void 0,void 0,(function*(){let i=(yield t[e].text.getTextContent()).items.map((e=>e.str));if("double"===n){let n=(yield t[e+1].text.getTextContent()).items.map((e=>e.str));i=i.concat(n)}return i}))):"";var e,t,n}))}audioText(){return c(this,void 0,void 0,(function*(){return yield this.visibleText()}))}chapterText(){return c(this,void 0,void 0,(function*(){return(yield this.visibleText()).join(" ")}))}record(){return c(this,void 0,void 0,(function*(){""!==this.animation&&(yield new Promise((e=>setTimeout(e,1e3))));let e=this.getDocument();e&&(yield this.handlePDFRecord(e))}))}recordByChapter(e){return c(this,void 0,void 0,(function*(){if(""!==this.animation&&(yield new Promise((e=>setTimeout(e,1e3)))),e>=this.chapterDocList.length||e<0)return;this.tempLocation.chapterDocIndex=e+"",this.tempLocation.percentage=1===this.chapterDocList.length?"1":e/(this.chapterDocList.length-1)+"",this.tempLocation.chapterHref=this.chapterDocList[e].href;let t=this.chapterDocList[e].label;if(!t){let n=e;for(;n>=0;){if(this.chapterDocList[n].label){t=this.chapterDocList[n].label;break}n--}}this.tempLocation.chapterTitle=t,this.tempLocation.text="",this.trigger("page-changed")}))}handlePDFRecord(e){return c(this,void 0,void 0,(function*(){let t=e.querySelectorAll(".pdf-container");if(t.length>0&&xt(this.element,t[t.length-1],this.readerMode,e))this.handleRecord(t[t.length-1]);else for(let n=0;n=0;){if(this.chapterDocList[t].label){e=this.chapterDocList[t].label;break}t--}}this.tempLocation.chapterTitle=e,this.tempLocation.text="",this.trigger("page-changed")}}getMetadata(){return c(this,void 0,void 0,(function*(){try{this.book||(yield this.parse());let e=new b(this.book);return yield e.getMetadata()}catch(e){throw console.error(e),e}}))}highlightAudioNode(e,t){let n=parseInt(this.tempLocation.chapterDocIndex),i=this.getSubDocument(n);if(i&&(Qt(e,t,i),"double"===this.readerMode)){let i=this.getSubDocument(n+1);if(!i)return;Qt(e,t,i)}}highlightSearchNode(e,t){let n=parseInt(this.tempLocation.chapterDocIndex),i=this.getSubDocument(n);i&&rt(e,t,i)}getProgress(){return{totalPage:this.chapterDocList.length,currentPage:parseInt(this.tempLocation.chapterDocIndex||"0")+1}}getNotePosition(){var e;return c(this,void 0,void 0,(function*(){let t=this.getDocument();if(!t)return;let n=E(t);if(!n)return;let i=n.ownerDocument,r=null===(e=null==i?void 0:i.defaultView)||void 0===e?void 0:e.frameElement,o=(null==r?void 0:r.getAttribute("id"))||"",s=o?parseInt(o.split("-").reverse()[0]):0;return Object.assign(Object.assign({},this.tempLocation),{chapterDocIndex:s})}))}getSubDocument(e){let t=document.getElementById("page-area");if(!t)return null;let n=t.getElementsByTagName("iframe")[0];if(!n)return null;let i=n.contentDocument;if(!i)return null;let r=i.getElementById("pdf-iframe-"+e);return r||(bt(e||0,i),r=i.getElementById("pdf-iframe-"+e)),r.contentDocument}getSubIframe(e){let t=document.getElementById("page-area");if(!t)return null;let n=t.getElementsByTagName("iframe")[0];if(!n)return null;let i=n.contentDocument;return i?(n=i.getElementById("pdf-iframe-"+e),n||(bt(e||0,i),n=i.getElementById("pdf-iframe-"+e)),n):null}getHightlightCoords(e){return c(this,void 0,void 0,(function*(){let t=void 0!==e?e:parseInt(this.tempLocation.chapterDocIndex),n=this.getSubDocument(e);if(!n)return;var i=n.getSelection().getRangeAt(0).getClientRects();let r=yield this.chapterDocList[t].text.getPage(),o=yield this.getPdfScale();var s=r.getViewport({scale:o});let a=n.querySelector("canvas");var l=null==a?void 0:a.getClientRects()[0];let A=[];for(let e=0;ei[e].left&&(A[A.length-1].left=i[e].left),A[A.length-1].right=this.chapterDocList.length||e<0)return;let n=t.getElementById("pdf-iframe-"+e);n||(n=bt(e,t));let i=null==n?void 0:n.contentDocument;if(!i)return;if(i.body.innerHTML)return;i.body.innerHTML="";let r=yield fetch(yield this.chapterDocList[e].text.load()).then((e=>e.blob())),o=yield r.text();i.body.innerHTML=o;let s=yield this.getPdfScale();yield this.chapterDocList[e].text.render(i,s,this.isMobile,this);let a=i.querySelector("#koodoPDFLayer");if(a){if("yes"===this.isDarkMode&&(a.style.filter="invert(1) hue-rotate(180deg) contrast(0.95)"),"rgba(233, 216, 188,1)"===this.backgroundColor&&"yes"===this.isScannedPDF&&(a.style.filter="sepia(100%) contrast(0.95) brightness(0.95)"),"rgba(197, 231, 207,1)"===this.backgroundColor&&"yes"===this.isScannedPDF&&(a.style.filter="sepia(30%) hue-rotate(60deg) saturate(120%) brightness(95%)"),"single"===this.readerMode||"double"===this.readerMode){let e=this.element.clientHeight/2-a.getBoundingClientRect().height/2;a.style.marginTop=e+"px",n.style.height=a.getBoundingClientRect().height+e+"px";let t=i.querySelector(".noteLayer");t&&(t.style.position="relative")}"scroll"!==this.readerMode&&(a.style.marginLeft=`calc(50% - ${a.getBoundingClientRect().width/2}px)`),a.style.visibility="visible",window.chapterDocIndex=e,this.trigger("rendered")}}))}handleUnloadPDFChapter(e,t){return c(this,void 0,void 0,(function*(){if(e>=this.chapterDocList.length||e<0)return;let t=this.getSubDocument(e);t&&""!==t.body.innerHTML&&(yield this.chapterDocList[e].text.unload(),t.body.innerHTML="")}))}renderPdfPage(e,t){return c(this,void 0,void 0,(function*(){e>=this.chapterDocList.length||e<0||(e>2&&(yield this.handleUnloadPDFChapter(e-3,t)),yield this.handleRenderPDFChapter(e,t),yield this.handleRenderPDFChapter(e+1,t))}))}}class Wo extends Gt{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"PDFTEXT"})),this.password="",this.ocrLang="chi_sim",this.paraSpacingValue=1.5,this.titleSizeValue=1.2,this.isFinishOCR=!1,this.performOCR=e=>c(this,void 0,void 0,(function*(){try{if("tesseract"===this.ocrEngine){return(yield this.worker.recognize(e)).data.text}this.ocrEngine}catch(e){throw console.error("OCR Error:",e),e}})),this.pdfBuffer=e,this.password=t.password||"",this.isScannedPDF=t.isScannedPDF||"no",this.ocrLang=t.ocrLang||"chi_sim",this.paraSpacingValue=parseFloat(t.paraSpacingValue)||1.5,this.titleSizeValue=parseFloat(t.titleSizeValue)||1.2,this.cache={},this.serverRegion=t.serverRegion||"global",this.processingPromises=new Map,this.ocrEngine=t.ocrEngine||"tesseract"}renderTo(e){return new Promise(((t,n)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let n=new b(this.book);this.chapterList=yield n.getChapter(this.book.toc),this.chapterDocList=yield n.getChapterDoc();for(let e=0;ec(this,void 0,void 0,(function*(){if(this.cache[e])return"yes"===this.isScannedPDF&&this.preProcessNextChapters(e),this.cache[e];let n="";return"yes"===this.isScannedPDF?(n=yield this.processCurrentChapter(e),this.preProcessNextChapters(e)):(n=yield this.getTextFromDoc(t),this.cache[e]=n),n}))}p(e);let i=this.getDocument();i&&(y(e,this.readerMode,i),t())}))))}processCurrentChapter(e){return c(this,void 0,void 0,(function*(){if(this.cache[e])return this.cache[e];if(this.processingPromises.has(e))return yield this.processingPromises.get(e),this.cache[e];const t=this.chapterDocList[e],n=yield this.getTextByOCR(t);return this.cache[e]=n,n}))}preProcessNextChapters(e){const t=Math.min(e+3,this.chapterDocList.length-1);for(let n=e+1;n<=t;n++)if(!this.cache[n]&&!this.processingPromises.has(n)){const e=this.processChapterOCR(n);this.processingPromises.set(n,e),e.finally((()=>{this.processingPromises.delete(n)}))}}processChapterOCR(e){return c(this,void 0,void 0,(function*(){try{const t=this.chapterDocList[e],n=yield this.getTextByOCR(t);this.cache[e]=n}catch(t){console.error(`Failed to process OCR for chapter ${e}:`,t)}}))}getTextByOCR(e){return c(this,void 0,void 0,(function*(){let t=yield e.text.getPage(),{imageURL:n}=yield St(t);let i=(yield this.performOCR(n)).split("\n").filter((e=>""!==e.trim()));return URL.createObjectURL(new Blob([`\n \n \n \n \n
${i.map((e=>`

${e}

`)).join("")}
\n `],{type:"text/html"}))}))}getTextFromDoc(e){return c(this,void 0,void 0,(function*(){let t=yield e.text.getTextContent(),n=[];if(t&&t.items&&Array.isArray(t.items)){const e=t.items.filter((e=>e.str&&e.transform)).map((e=>e.transform[3]));let i=10;if(e.length>0){const t=e.reduce(((e,t)=>(e[t]=(e[t]||0)+1,e)),{});i=Object.keys(t).map(Number).reduce(((e,n)=>t[e]>t[n]?e:n))}let r={text:"",styles:new Set,y:0,tag:"p"},o=0;t.items.forEach((e=>{if(e.str){const t=Math.abs(e.transform[5]-o);let s="p",a=e.transform[3]>Number(i)*this.titleSizeValue;t>e.height*this.paraSpacingValue&&r.text.trim()?(n.push(r),r={text:"",styles:new Set,y:e.transform[5],tag:s,isBold:a}):r.hasOwnProperty("isBold")||(r.isBold=a);const l=e.str;e.hasEOL?l.endsWith("-")?r.text+=l.slice(0,-1):r.text+=l+" ":r.text+=l,o=e.transform[5]}})),r.text.trim()&&n.push(r)}return URL.createObjectURL(new Blob([`\n \n \n \n \n
${n.length>0?n.map((e=>`

${e.text.trim()}

`)).join(""):"Empty"}
\n `],{type:"text/html"}))}))}parse(){return c(this,void 0,void 0,(function*(){try{let t=new Blob([this.pdfBuffer]),n=new File([t],"book",{lastModified:(new Date).getTime(),type:t.type});if((yield(async e=>{const t=new Uint8Array(await e.slice(0,5).arrayBuffer());return 37===t[0]&&80===t[1]&&68===t[2]&&70===t[3]&&45===t[4]})(n))&&(this.book=yield Uo(n,this.password)),"yes"===this.isScannedPDF&&"tesseract"===this.ocrEngine){let t=yield(e=("undefined"!=typeof window&&"object"==typeof window.process&&"renderer"===window.process.type||"undefined"!=typeof process&&"object"==typeof process.versions&&process.versions.electron||"object"==typeof navigator&&"string"==typeof navigator.userAgent&&navigator.userAgent.indexOf("Electron")>=0?".":"")+"/lib/tesseractjs/worker.min.js",c(void 0,void 0,void 0,(function*(){return yield(yield fetch(e)).text()}))),n=URL.createObjectURL(new Blob([t],{type:"application/javascript"}));const i=yield window.Tesseract.createWorker([this.ocrLang],1,{workerPath:n,corePath:`https://${"china"===this.serverRegion?"storage.koodoreader.cn":"storage.koodoreader.com"}/tesseractjs/tesseract-core`,langPath:`https://${"china"===this.serverRegion?"storage.koodoreader.cn":"storage.koodoreader.com"}/tesseractjs/4.0.0-fast`,logger:e=>{"recognizing text"!==e.status||"number"!=typeof e.progress||this.isFinishOCR||((e=>{let t=document.getElementById("ocr-progress-bar");t||(t=document.createElement("progress"),t.id="ocr-progress-bar",t.max=1,t.value=0,t.style.position="fixed",t.style.top="10px",t.style.left="50%",t.style.transform="translateX(-50%)",t.style.width="300px",t.style.zIndex="9999",document.body.appendChild(t)),t.value=e,e>=1&&setTimeout((()=>{t.remove()}),1e3)})(e.progress),1===e.progress&&(this.isFinishOCR=!0))}});yield i.load(),this.worker=i}}catch(e){throw console.error(e),e}var e}))}preCache(){return c(this,void 0,void 0,(function*(){return this.book||(yield this.parse()),yield Wt(this.book)}))}getMetadata(){return c(this,void 0,void 0,(function*(){try{this.book||(yield this.parse());let e=new b(this.book);return yield e.getMetadata()}catch(e){throw console.error(e),e}}))}}const Po=(e,t=!1,n="",i)=>{const r=(new DOMParser).parseFromString(t?((e,t,n)=>{let i=e.split("\n");1===i.length&&(i=e.split("\r"));const r=[];let o=!1;if(n&&n.refresh&&(o=!0),i.length>1e4&&!o){n&&n.chapterTitle||(n={text:i[0],chapterTitle:"",chapterDocIndex:0}),n.text||(n.text=n.chapterTitle||"");let e=i.findIndex((e=>Le(e)===Le(n.text)));-1===e&&(e=0);const o=Math.max(e-1e3,0),s=Math.min(e+1e3,i.length),a=i.slice(o,s),l=a.filter((e=>{const n=Le(e);return n&&Te(n,t)})),A=new Set(l.map((e=>Le(e))));let c=l.findIndex((e=>Le(e)===Le(n.chapterTitle)));if(-1===c&&(c=0),c0)for(let t=0;tChapter ${t}`),r.push(`

Chapter ${t}

`)}for(const e of a){const t=Le(e);t&&A.has(t)?r.push(`

${t}

`):r.push(`

${e}

`)}}else for(const e of i){const n=Le(e);n&&Te(n,t)?r.push(`

${n}

`):r.push(`

${e}

`)}return r.join("")||`

Title

${e}

`})(e,n,i):e,"text/html");let o=Ko(r);0===o.length&&(o=Jo(r));for(let e=0;e""};return A.sections=l.map((e=>({id:e.index,load:()=>{return t=e.index,c(void 0,void 0,void 0,(function*(){return URL.createObjectURL(new Blob([l[t].text],{type:"text/html"}))}));var t},unload:()=>{e.index},size:l[e.index].text.length}))),A.toc=l.map((e=>({label:e.label,href:"title"+e.index}))).filter((e=>""!==e.label)),A.rendition={layout:"pre-paginated"},A.resolveHref=e=>({index:parseInt(e.substring(5,e.length))}),A.splitTOCHref=e=>[e,null],A.getTOCFragment=e=>e.documentElement,A},Ko=e=>Array.from(e.querySelectorAll("h1,h2,h3,h4,h5,h6,title")),zo=e=>{let t=[],n=e.split(" ").filter((e=>""!==e.trim())),i=n.map((e=>qo(e)||jo(e)));return t=n.map(((e,t)=>({index:t,label:i[t],text:e,href:"title"+t}))),t},qo=e=>{var t;const n=(new DOMParser).parseFromString(e,"text/html").querySelector("h1, h2, h3, h4, h5, h6");return n&&(null===(t=n.textContent)||void 0===t?void 0:t.trim())||""},jo=e=>{var t;const n=(new DOMParser).parseFromString(e,"text/html").querySelector("title");return n&&(null===(t=n.textContent)||void 0===t?void 0:t.trim())||""},Jo=e=>{let t=e.getElementsByTagName("*"),n=Array.from(t).filter((e=>1===e.childNodes.length&&e.childNodes[0].nodeType===Node.TEXT_NODE&&Te(Le(e.textContent)))),i=[];for(let e=0;ec(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse(t));let i=new b(this.book);this.chapterList=yield i.getChapter(this.book.toc),this.chapterDocList=yield i.getChapterDoc(),p(e);let r=this.getDocument();r&&(y(e,this.readerMode,r),n())}))))}parse(e){return c(this,void 0,void 0,(function*(){try{const t=new TextDecoder(this.charset),n=new Uint8Array(this.txtBuffer);let i=t.decode(n);this.book=Po(i,!0,this.parserRegex,e)}catch(e){throw console.error(e),e}}))}refreshContent(){return c(this,void 0,void 0,(function*(){yield this.parse({refresh:!0});let e=new b(this.book);return this.chapterList=yield e.getChapter(this.book.toc),this.chapterDocList=yield e.getChapterDoc(),this.chapterList}))}preCache(){return c(this,void 0,void 0,(function*(){return this.book||(yield this.parse({refresh:!0})),yield Wt(this.book)}))}getMetadata(e){return c(this,void 0,void 0,(function*(){try{const t=4096,n=e.byteLength,i=Math.min(n,t),r=new Uint8Array(e,0,i);const s=o.detect(r)||"utf8";return this.charset=s,{charset:s}}catch(e){return console.error("Error detecting charset:",e),this.charset="utf8",{charset:"utf8"}}}))}}const Xo=({entries:e,loadBlob:t,getSize:n},i,r)=>{const o=new Map,s=new Map,a=async(e,n)=>{if(o.has(e))return o.get(e);if(n){const i=URL.createObjectURL(await t(e)),r=URL.createObjectURL(await t(n)),a=URL.createObjectURL(new Blob([`
`],{type:"text/html"}));return s.set(e,[i,a]),o.set(e,a),a}{const n=URL.createObjectURL(await t(e)),i=URL.createObjectURL(new Blob([`
`],{type:"text/html"}));return s.set(e,[n,i]),o.set(e,i),i}},l=[".jpg",".jpeg",".png",".gif",".bmp",".webp",".svg"],A=e.map((e=>e.filename)).filter((e=>l.some((t=>e.endsWith(t))))).sort(((e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"}))),c={getCover:()=>t(A[0])};return c.metadata={title:i.name},c.sections=A.map(((e,t)=>({id:e,load:()=>{if("double"===r){const n=A[t+1];return a(e,n)}return a(e)},unload:()=>(e=>{s.get(e)?.forEach?.((e=>URL.revokeObjectURL(e))),s.delete(e),o.delete(e)})(e),size:n(e)}))).filter(((e,t)=>"double"!==r||t%2==0)),c.toc=A.map((e=>({label:e,href:e}))).filter(((e,t)=>"double"!==r||t%2==0)),c.rendition={layout:"pre-paginated"},c.resolveHref=e=>({index:c.sections.findIndex((t=>t.id===e))}),c.splitTOCHref=e=>[e,null],c.getTOCFragment=e=>e.documentElement,c};class Zo extends Gt{constructor(e,t){super(t),this.comicBuffer=e,this.readerMode=t.readerMode,this.format=t.format,this.chapterList=[],this.chapterDocList=[],this.book="",this.element="",this.rpc}renderTo(e){return new Promise(((t,n)=>c(this,void 0,void 0,(function*(){if(this.element=e,p(e),!this.book)try{yield this.parse()}catch(e){console.error(e),n(e)}let i=new b(this.book);this.chapterList=yield i.getChapter(this.book.toc),this.chapterDocList=yield i.getChapterDoc();let r=this.getDocument();r&&(y(e,this.readerMode,r),t())}))))}parse(){return c(this,void 0,void 0,(function*(){try{let e=new Blob([this.comicBuffer]),t=new File([e],"book."+this.format.toLocaleLowerCase(),{lastModified:(new Date).getTime(),type:e.type});if("CBZ"===this.format){const e=yield this.makeZipLoader(t);this.book=Xo(e,t,this.readerMode)}else if("CBT"===this.format){const e=yield this.makeTarLoader();this.book=Xo(e,t,this.readerMode)}else if("CBR"===this.format){this.rpc=yield window.RPC.new("./lib/libunrar/worker.js",{loaded:function(){console.info("loaded")},progressShow:function(e,t,n){console.info(n)}}),yield new Promise((e=>setTimeout(e,200)));const e=yield this.makeRarLoader();this.book=Xo(e,t,this.readerMode)}else if("CB7"===this.format){const e=yield this.make7zLoader();this.book=Xo(e,t,this.readerMode)}}catch(e){throw console.error(e),e}}))}preCache(){return c(this,void 0,void 0,(function*(){return this.book||(yield this.parse()),yield Wt(this.book)}))}makeZipLoader(e){return c(this,void 0,void 0,(function*(){let t=yield n.loadAsync(e);const i=t.files;return{entries:Object.values(i).map((e=>({filename:e.name}))),loadText:e=>c(this,void 0,void 0,(function*(){let n=t.file(e);return n?n.async("string"):""})),loadBlob:e=>c(this,void 0,void 0,(function*(){let n=t.file(e);if(n){let e=yield n.async("arraybuffer");return new Blob([e])}return new Blob([new ArrayBuffer(0)])})),getSize:e=>{let n=t.file(e);if(n)return n._data.uncompressedSize||1}}}))}makeTarLoader(){return c(this,void 0,void 0,(function*(){const e=yield s(this.comicBuffer),t=new Map(e.map((e=>[e.name,e]))),n=e=>(n,...i)=>t.has(n)?e(t.get(n),...i):null,i=n((e=>e.readAsString())),r=n(((e,t)=>e.blob));return{entries:e.map((e=>({filename:e.name}))),loadText:i,loadBlob:r,getSize:e=>{var n,i;return null!==(i=null===(n=t.get(e))||void 0===n?void 0:n.size)&&void 0!==i?i:1}}}))}makeRarLoader(){return c(this,void 0,void 0,(function*(){return new Promise(((e,t)=>{var n=[this.comicBuffer],i=[{name:"book.rar",content:this.comicBuffer}];this.rpc.transferables=n,this.rpc.unrar(i,null,0).then((t=>{let n=this.getRarEntries(t.ls);const i=new Map(Object.values(n).map((e=>[e.fullFileName,e]))),r=e=>(t,...n)=>i.has(t)?e(i.get(t),...n):null,o=r((e=>e.fullFileName)),s=r(((e,t)=>new Blob([e.fileContent])));e({entries:Object.values(n).map((e=>({filename:e.fullFileName}))),loadText:o,loadBlob:s,getSize:e=>{var t,n;return null!==(n=null===(t=i.get(e))||void 0===t?void 0:t.fileSize)&&void 0!==n?n:1}})})).catch((e=>{console.error(e),t(e)}))}))}))}make7zLoader(){return c(this,void 0,void 0,(function*(){const e="./lib/7z-wasm/7zz.wasm";if(!window.wasmBinary){const t=yield fetch(e,{credentials:"same-origin"});if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";window.wasmBinary=yield t.arrayBuffer()}const t=yield window.SevenZip({wasmBinary:window.wasmBinary}),n=new Uint8Array(this.comicBuffer),i="archive.cb7",r=t.FS.open(i,"w+");t.FS.write(r,n,0,n.length),t.FS.close(r),t.callMain(["x",i]);const o=t.FS,s=this.get7zEntries(o.lookupPath("/").node),a=new Map(s.map((e=>[e.name,e]))),l=e=>(t,...n)=>a.has(t)?e(a.get(t),...n):null,A=l((e=>e.name)),c=l(((e,t)=>new Blob([e.buffer])));return{entries:s.map((e=>({filename:e.name}))),loadText:A,loadBlob:c,getSize:e=>{var t,n;return null!==(n=null===(t=a.get(e))||void 0===t?void 0:t.size)&&void 0!==n?n:1}}}))}getRarEntries(e){const t=Object.keys(e);let n=[];for(let i=0;i"archive.cb7"!=e&&"dev"!=e&&"home"!=e&&"proc"!=e&&"tmp"!=e));let i=[];for(let e=0;ec(this,void 0,void 0,(function*(){try{this.book||(yield this.parse());const t=yield this.book.getCover();var n=new FileReader;n.readAsDataURL(t),n.onloadend=()=>{e({cover:n.result})}}catch(e){console.error(e),t(e)}}))))}))}}const _o=e=>e?.trim()?.replace(/\s{2,}/g," "),$o=e=>_o(e?.textContent),es={XLINK:"http://www.w3.org/1999/xlink",EPUB:"http://www.idpf.org/2007/ops"},ts="application/xml",ns="application/xhtml+xml",is={strong:["strong","self"],emphasis:["em","self"],style:["span","self"],a:"anchor",strikethrough:["s","self"],sub:["sub","self"],sup:["sup","self"],code:["code","self"],image:"image"},rs={epigraph:["blockquote"],subtitle:["h2",is],"text-author":["p",is],date:["p",is],stanza:"stanza"},os={title:["header",{p:["h1",is],"empty-line":["br"]}],epigraph:["blockquote","self"],image:"image",annotation:["aside"],section:["section","self"],p:["p",is],poem:["blockquote",rs],subtitle:["h2",is],cite:["blockquote","self"],"empty-line":["br"],table:["table",{tr:["tr",["align"]],th:["th",["colspan","rowspan","align","valign"]],td:["td",["colspan","rowspan","align","valign"]]}],"text-author":["p",is]};rs.epigraph.push(os);const ss={image:"image",title:["section",{p:["h1",is],"empty-line":["br"]}],epigraph:["section",os],section:["section",os]},as=e=>{const t=e.getAttributeNS(es.XLINK,"href"),[,n]=t.split("#"),i=e.getRootNode().getElementById(n);return i?`data:${i.getAttribute("content-type")};base64,${i.textContent}`:t};class ls{constructor(e){this.fb2=e,this.doc=document.implementation.createDocument(es.XHTML,"html")}image(e){const t=this.doc.createElement("img");return t.alt=e.getAttribute("alt"),t.title=e.getAttribute("title"),t.setAttribute("src",as(e)),t}anchor(e){const t=this.convert(e,{a:["a",is]});return t.setAttribute("href",e.getAttributeNS(es.XLINK,"href")),"note"===e.getAttribute("type")&&t.setAttributeNS(es.EPUB,"epub:type","noteref"),t}stanza(e){const t=this.convert(e,{stanza:["p",{title:["header",{p:["strong",is],"empty-line":["br"]}],subtitle:["p",is]}]});for(const n of e.children)"v"===n.nodeName&&(t.append(this.doc.createTextNode(n.textContent)),t.append(this.doc.createElement("br")));return t}convert(e,t){if(3===e.nodeType)return this.doc.createTextNode(e.textContent);if(4===e.nodeType)return this.doc.createCDATASection(e.textContent);if(8===e.nodeType)return this.doc.createComment(e.textContent);const n=t?.[e.nodeName];if(!n)return null;if("string"==typeof n)return this[n](e);const[i,r]=n,o=this.doc.createElement(i);if(e.id&&(o.id=e.id),o.classList.add(e.nodeName),Array.isArray(r))for(const t of r)o.setAttribute(t,e.getAttribute(t));const s="self"===r?t:Array.isArray(r)?null:r;let a=e.firstChild;for(;a;){const e=this.convert(a,s);e&&o.append(e),a=a.nextSibling}return o}}const As=URL.createObjectURL(new Blob(['\n@namespace epub "http://www.idpf.org/2007/ops";\nbody > img, section > img {\n display: block;\n margin: auto;\n}\n.title {\n text-align: center;\n}\nbody > section > .title, body.notesBodyType > .title {\n margin: 3em 0;\n}\nbody.notesBodyType > section .title {\n text-align: left;\n margin: 1em 0;\n}\np {\n text-indent: 1em;\n margin: 0;\n}\n:not(p) + p, p:first-child {\n text-indent: 0;\n}\n.poem p {\n text-indent: 0;\n margin: 1em 0;\n}\n.text-author, .date {\n text-align: end;\n}\n.text-author:before {\n content: "—";\n}\ntable {\n border-collapse: collapse;\n}\ntd, th {\n padding: .25em;\n}\na[epub|type~="noteref"] {\n font-size: .75em;\n vertical-align: super;\n}\nbody:not(.notesBodyType) > .title, body:not(.notesBodyType) > .epigraph {\n margin: 3em 0;\n}\n'],{type:"text/css"})),cs="data-foliate-id",gs=async e=>{const t={},n=await(async e=>{const t=await e.arrayBuffer(),n=new TextDecoder("utf-8").decode(t),i=new DOMParser,r=i.parseFromString(n,ts),o=r.xmlEncoding||n.match(/^<\?xml\s+version\s*=\s*["']1.\d+"\s+encoding\s*=\s*["']([A-Za-z0-9._-]*)["']/)?.[1];if(o&&"utf-8"!==o.toLowerCase()){const e=new TextDecoder(o).decode(t);return i.parseFromString(e,ts)}return r})(e),i=new ls(n),r=e=>n.querySelector(e),o=e=>[...n.querySelectorAll(e)],s=e=>{const t=$o(e.querySelector("nickname"));if(t)return t;const n=$o(e.querySelector("first-name")),i=$o(e.querySelector("middle-name")),r=$o(e.querySelector("last-name"));return{name:[n,i,r].filter((e=>e)).join(" "),sortAs:r?[r,[n,i].filter((e=>e)).join(" ")].join(", "):null}},a=e=>e?.getAttribute("value")??$o(e),l=r("title-info annotation");t.metadata={title:$o(r("title-info book-title")),identifier:$o(r("document-info id")),language:$o(r("title-info lang")),author:o("title-info author").map(s),translator:o("title-info translator").map(s),producer:o("document-info author").map(s).concat(o("document-info program-used").map($o)),publisher:$o(r("publish-info publisher")),published:a(r("title-info date")),modified:a(r("document-info date")),description:l?i.convert(l,{annotation:["div",os]}).innerHTML:null,subject:o("title-info genre").map($o)},t.getCover=()=>fetch(as(r("coverpage image"))).then((e=>e.blob()));const A=Array.from(n.querySelectorAll("body"),(e=>{const t=i.convert(e,{body:["body",ss]});return[Array.from(t.children,(e=>{const t=[e,...e.querySelectorAll("[id]")].map((e=>e.id));return{el:e,ids:t}})),t]})),c=A[0][0].map((({el:e,ids:t})=>({ids:t,titles:Array.from(e.querySelectorAll(":scope > section > .title"),((e,t)=>(e.setAttribute(cs,t),{title:$o(e),index:t}))),el:e}))).concat(A.slice(1).map((([e,t])=>{const n=e.map((e=>e.ids)).flat();return t.classList.add("notesBodyType"),{ids:n,el:t,linear:"no"}}))).map((({ids:e,titles:t,el:n,linear:i})=>{const r=(o=n.outerHTML,`\n\n \n ${o}\n`);var o;const s=new Blob([r],{type:ns}),a=URL.createObjectURL(s);return{ids:e,title:_o(n.querySelector(".title, .subtitle, p")?.textContent??(n.classList.contains("title")?n.textContent:"")),titles:t,load:()=>a,createDocument:()=>(new DOMParser).parseFromString(r,ns),size:s.size-Array.from(n.querySelectorAll("[src]"),(e=>e.getAttribute("src")?.length??0)).reduce(((e,t)=>e+t),0),linear:i}})),g=new Map;return t.sections=c.map(((e,t)=>{const{ids:n,load:i,createDocument:r,size:o,linear:s}=e;for(const e of n)e&&g.set(e,t);return{id:t,load:i,createDocument:r,size:o,linear:s}})),t.toc=c.map((({title:e,titles:t},n)=>{const i=n.toString();return{label:e,href:i,subitems:t?.length?t.map((({title:e,index:t})=>({label:e,href:`${i}#${t}`}))):null}})).filter((e=>e)),t.resolveHref=e=>{const[t,n]=e.split("#");return t?{index:Number(t),anchor:e=>e.querySelector(`[${cs}="${n}"]`)}:{index:g.get(n),anchor:e=>e.getElementById(n)}},t.splitTOCHref=e=>e?.split("#")?.map((e=>Number(e)))??[],t.getTOCFragment=(e,t)=>e.querySelector(`[${cs}="${t}"]`),t};class ds extends Gt{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"FB2"})),this.fb2Buffer=e}renderTo(e){return new Promise(((t,n)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let n=new b(this.book);this.chapterList=yield n.getChapter(this.book.toc),this.chapterDocList=yield n.getChapterDoc(),p(e);let i=this.getDocument();i&&(y(e,this.readerMode,i),t())}))))}parse(){return c(this,void 0,void 0,(function*(){try{let e=new Blob([this.fb2Buffer]);this.book=yield gs(e)}catch(e){throw console.error(e),e}}))}preCache(){return c(this,void 0,void 0,(function*(){return this.book||(yield this.parse()),yield Wt(this.book)}))}getMetadata(){return c(this,void 0,void 0,(function*(){try{this.book||(yield this.parse());let e=new b(this.book);return yield e.getMetadata()}catch(e){throw console.error(e),e}}))}}class hs extends Gt{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"CACHE"})),this.cacheBuffer=e}renderTo(e){return new Promise(((t,n)=>c(this,void 0,void 0,(function*(){this.element=e,this.book=yield Nt(this.cacheBuffer);let n=new b(this.book);this.chapterList=yield n.getChapter(this.book.toc),this.chapterDocList=yield n.getChapterDoc(),p(e);let i=this.getDocument();i&&(y(e,this.readerMode,i),t())}))))}}class us extends Gt{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"DOCX"})),this.docxBuffer=e}renderTo(e){return new Promise(((t,n)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let n=new b(this.book);this.chapterList=yield n.getChapter(this.book.toc),this.chapterDocList=yield n.getChapterDoc(),p(e);let i=this.getDocument();i&&(y(e,this.readerMode,i),t())}))))}parse(){return c(this,void 0,void 0,(function*(){return new Promise(((e,t)=>{try{a.convertToHtml({arrayBuffer:this.docxBuffer}).then((t=>c(this,void 0,void 0,(function*(){this.book=Po(t.value,!1),e()}))))}catch(e){console.error(e),t(e)}}))}))}preCache(){return c(this,void 0,void 0,(function*(){return this.book||(yield this.parse()),yield Wt(this.book)}))}}class fs extends Gt{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"MD"})),this.mdBuffer=e}renderTo(e){return new Promise(((t,n)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let n=new b(this.book);this.chapterList=yield n.getChapter(this.book.toc),this.chapterDocList=yield n.getChapterDoc(),p(e);let i=this.getDocument();i&&(y(e,this.readerMode,i),t())}))))}parse(){return c(this,void 0,void 0,(function*(){return new Promise(((e,t)=>{try{var n=new Blob([this.mdBuffer],{type:"text/plain"}),i=new FileReader;i.onload=t=>c(this,void 0,void 0,(function*(){var n;let i=yield l(null===(n=t.target)||void 0===n?void 0:n.result);this.book=Po(i,!1),e()})),i.readAsText(n,"UTF-8")}catch(e){console.error(e),t(e)}}))}))}preCache(){return c(this,void 0,void 0,(function*(){return this.book||(yield this.parse()),yield Wt(this.book)}))}}class ps extends Gt{constructor(e,t){super(t),this.htmlBuffer=e}renderTo(e){return new Promise(((t,n)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let n=new b(this.book);this.chapterList=yield n.getChapter(this.book.toc),this.chapterDocList=yield n.getChapterDoc(),p(e);let i=this.getDocument();i&&(y(e,this.readerMode,i),t())}))))}parse(){return c(this,void 0,void 0,(function*(){return new Promise(((e,t)=>{try{var n=new Blob([this.htmlBuffer],{type:Ot[this.format.toLocaleLowerCase()]}),i=new FileReader;i.onload=t=>c(this,void 0,void 0,(function*(){var n;let i=null===(n=t.target)||void 0===n?void 0:n.result;"MHTML"===this.format&&(i=A.convert(i).window.document.documentElement.innerHTML),this.book=Po(i,!1),e()})),i.readAsText(n,"UTF-8")}catch(e){console.error(e),t(e)}}))}))}preCache(){return c(this,void 0,void 0,(function*(){return this.book||(yield this.parse()),yield Wt(this.book)}))}}export{hs as CacheRender,Zo as ComicRender,us as DocxRender,Or as EpubRender,ds as Fb2Render,ps as HtmlRender,fs as MdRender,So as MobiRender,No as PdfRender,Wo as PdfTextRender,Vo as TxtRender}; diff --git a/src/assets/locales/zh-CN/translation.json b/src/assets/locales/zh-CN/translation.json index c287ef5e..cca1540e 100644 --- a/src/assets/locales/zh-CN/translation.json +++ b/src/assets/locales/zh-CN/translation.json @@ -208,6 +208,8 @@ "Note": "笔记", "Page width": "页面宽度", "Tasks failed after multiple retries, please check the network connection": "多次重试后任务失败,请检查网络连接", + "Tasks failed after multiple retries, please check the network connection or reauthorize the data source in the settings": "多次重试后任务失败,请检查网络连接或在设置中重新授权数据源", + "This data source already contains a library. If you need to merge local and cloud data, please turn off Koodo Sync and resync.": "此数据源已经存在了一个图书库,如果需要将本地和云端的数据合并。请关闭 Koodo Sync 后重新同步。", "Render PDF from even page": "从偶数页开始渲染 PDF", "Filter by book": "按图书筛选", "Server path (Please first create this folder manually)": "服务器路径(请先手动创建此文件夹)", @@ -337,7 +339,11 @@ "Start Transferring Data": "开始传输数据", "Download successful": "下载成功", "Download failed": "下载失败", + "If you have purchased the code directly from our website, please redeem with an account registered in global server region": "如果您是直接从我们的网站购买的兑换码,请使用在全球服务器地区注册的账户进行兑换", + "If you have purchased the code from Tabao store, please redeem with an account registered in Chinese server region": "如果您是从淘宝店铺购买的兑换码,请使用在中国服务器地区注册的账户进行兑换", "Downloading": "下载中", + "Send email": "发送邮件", + "Email copied to clipboard": "邮箱已复制到剪贴板", "Back": "返回", "Almost finished": "即将完成", "Please select an empty folder": "请选择一个空文件夹", diff --git a/src/components/dialogs/aboutDialog/component.tsx b/src/components/dialogs/aboutDialog/component.tsx index 695c9d3b..5addeaf8 100644 --- a/src/components/dialogs/aboutDialog/component.tsx +++ b/src/components/dialogs/aboutDialog/component.tsx @@ -2,7 +2,7 @@ import React from "react"; import { Trans } from "react-i18next"; import { AboutDialogProps, AboutDialogState } from "./interface"; import { isElectron } from "react-device-detect"; -import { openExternalUrl, WEBSITE_URL } from "../../../utils/common"; +import { getWebsiteUrl, openExternalUrl } from "../../../utils/common"; import toast from "react-hot-toast"; import { exportBooks, @@ -13,8 +13,7 @@ import { import "./aboutDialog.css"; import DatabaseService from "../../../utils/storage/databaseService"; import { ConfigService } from "../../../assets/lib/kookit-extra-browser.min"; -import ConfigUtil from "../../../utils/file/configUtil"; - +import copyTextToClipboard from "copy-text-to-clipboard"; declare var window: any; class AboutDialog extends React.Component { constructor(props: AboutDialogProps) { @@ -59,9 +58,9 @@ class AboutDialog extends React.Component { ConfigService.getReaderConfig("lang") && ConfigService.getReaderConfig("lang").startsWith("zh") ) { - this.handleJump(WEBSITE_URL + "/zh/document"); + this.handleJump(getWebsiteUrl() + "/zh/document"); } else { - this.handleJump(WEBSITE_URL + "/en/document"); + this.handleJump(getWebsiteUrl() + "/en/document"); } }} > @@ -74,9 +73,9 @@ class AboutDialog extends React.Component { ConfigService.getReaderConfig("lang") && ConfigService.getReaderConfig("lang").startsWith("zh") ) { - openExternalUrl(WEBSITE_URL + "/zh/support"); + openExternalUrl(getWebsiteUrl() + "/zh/support"); } else { - openExternalUrl(WEBSITE_URL + "/en/support"); + openExternalUrl(getWebsiteUrl() + "/en/support"); } }} > @@ -85,11 +84,20 @@ class AboutDialog extends React.Component {
  • { - this.handleJump(WEBSITE_URL); + this.handleJump(getWebsiteUrl()); }} > Our website
  • +
  • { + copyTextToClipboard("feedback@koodoreader.com"); + toast.success(this.props.t("Email copied to clipboard")); + }} + > + Send email +
  • { @@ -125,7 +133,7 @@ class AboutDialog extends React.Component {
  • { - this.handleJump(WEBSITE_URL); + this.handleJump(getWebsiteUrl()); }} style={{ color: "rgb(35, 170, 242)" }} > diff --git a/src/components/dialogs/backupDialog/component.tsx b/src/components/dialogs/backupDialog/component.tsx index 3d515a0f..3cd0524c 100644 --- a/src/components/dialogs/backupDialog/component.tsx +++ b/src/components/dialogs/backupDialog/component.tsx @@ -14,7 +14,7 @@ import { ConfigService, TokenService, } from "../../../assets/lib/kookit-extra-browser.min"; -import { generateSyncRecord } from "../../../utils/common"; +import { generateSyncRecord, getServerRegion } from "../../../utils/common"; const successOptions = { loop: false, autoplay: true, @@ -157,7 +157,7 @@ class BackupDialog extends React.Component< {[ { label: "Local", value: "local", isPro: false }, ...driveList.filter((item) => { - if (ConfigService.getItem("serverRegion") === "china") { + if (getServerRegion() === "china") { return item.isCNAvailable; } return true; @@ -211,7 +211,7 @@ class BackupDialog extends React.Component< {[ { label: "Local", value: "local", isPro: false }, ...driveList.filter((item) => { - if (ConfigService.getItem("serverRegion") === "china") { + if (getServerRegion() === "china") { return item.isCNAvailable; } return true; diff --git a/src/components/dialogs/convertDialog/component.tsx b/src/components/dialogs/convertDialog/component.tsx index 06d40bd3..d3136830 100644 --- a/src/components/dialogs/convertDialog/component.tsx +++ b/src/components/dialogs/convertDialog/component.tsx @@ -48,7 +48,7 @@ class ConvertDialog extends React.Component< item.propName, this.state[item.propName] ? "no" : "yes" ); - BookUtil.reloadBooks(); + BookUtil.reloadBooks(this.props.currentBook); }} style={this.state[item.propName] ? {} : { opacity: 0.6 }} > @@ -123,7 +123,7 @@ class ConvertDialog extends React.Component< if ( ConfigService.getReaderConfig("isConvertPDF") === "yes" ) { - BookUtil.reloadBooks(); + BookUtil.reloadBooks(this.props.currentBook); } }} > @@ -182,7 +182,7 @@ class ConvertDialog extends React.Component< if ( ConfigService.getReaderConfig("isConvertPDF") === "yes" ) { - BookUtil.reloadBooks(); + BookUtil.reloadBooks(this.props.currentBook); } }} > @@ -237,7 +237,7 @@ class ConvertDialog extends React.Component< ConfigService.getReaderConfig("isConvertPDF") === "yes" ) { - BookUtil.reloadBooks(); + BookUtil.reloadBooks(this.props.currentBook); } }} > @@ -298,7 +298,7 @@ class ConvertDialog extends React.Component< ConfigService.getReaderConfig("isConvertPDF") === "yes" ) { - BookUtil.reloadBooks(); + BookUtil.reloadBooks(this.props.currentBook); } }} > diff --git a/src/components/dialogs/importDialog/component.tsx b/src/components/dialogs/importDialog/component.tsx index cd7327fa..2884ea0a 100644 --- a/src/components/dialogs/importDialog/component.tsx +++ b/src/components/dialogs/importDialog/component.tsx @@ -9,6 +9,7 @@ import { isElectron } from "react-device-detect"; import { getCloudConfig } from "../../../utils/file/common"; import SyncService from "../../../utils/storage/syncService"; import { + getServerRegion, getStorageLocation, openInBrowser, showDownloadProgress, @@ -368,7 +369,7 @@ class ImportDialog extends React.Component< <> {driveList .filter((item) => { - if (ConfigService.getItem("serverRegion") === "china") { + if (getServerRegion() === "china") { return item.isCNAvailable; } return true; @@ -411,8 +412,7 @@ class ImportDialog extends React.Component< ) { openInBrowser( new SyncUtil(settingDrive, {}).getAuthUrl( - ConfigService.getItem("serverRegion") === - "china" && + getServerRegion() === "china" && (settingDrive === "microsoft" || settingDrive === "microsoft_exp" || settingDrive === "adrive") diff --git a/src/components/dialogs/sortBookDialog/component.tsx b/src/components/dialogs/sortBookDialog/component.tsx index 73b4ca3f..93f4fd83 100644 --- a/src/components/dialogs/sortBookDialog/component.tsx +++ b/src/components/dialogs/sortBookDialog/component.tsx @@ -68,29 +68,17 @@ class SortDialog extends React.Component { onMouseEnter={() => { this.props.handleSortDisplay(true); }} - style={this.state.isNote ? { height: "132px" } : {}} + style={this.state.isNote ? { height: "102px" } : {}} > {this.state.isNote ? (
      - {["Book name", "Sort by Date"].map((item, index) => { - return ( -
    • { - this.handleSort(index + 1); - }} - style={sortCode.sort === index + 1 ? {} : { opacity: 0.34 }} - > - {item} - {sortCode.sort === index + 1 && ( - - )} -
    • - ); - })} +
    • + {"Sort by Date"} + +
    ) : (
      diff --git a/src/components/dialogs/supportDialog/component.tsx b/src/components/dialogs/supportDialog/component.tsx index b8ccff7b..ae52208a 100644 --- a/src/components/dialogs/supportDialog/component.tsx +++ b/src/components/dialogs/supportDialog/component.tsx @@ -6,9 +6,10 @@ import Lottie from "react-lottie"; import supportAnimation from "../../../assets/lotties/support.json"; import exitAnimation from "../../../assets/lotties/exit.json"; import { + getServerRegion, + getWebsiteUrl, handleContextMenu, openInBrowser, - WEBSITE_URL, } from "../../../utils/common"; import { ConfigService, @@ -237,6 +238,27 @@ class SupporDialog extends React.Component< id: "redeem-code", } ); + if (response.code === 10009) { + if (getServerRegion() === "china") { + toast( + this.props.t( + "If you have purchased the code directly from our website, please redeem with an account registered in global server region" + ), + { + duration: 8000, + } + ); + } else { + toast( + this.props.t( + "If you have purchased the code from Tabao store, please redeem with an account registered in Chinese server region" + ), + { + duration: 8000, + } + ); + } + } } }} > @@ -338,7 +360,7 @@ class SupporDialog extends React.Component< let deviceUuid = await TokenService.getFingerprint(); openInBrowser( - WEBSITE_URL + + getWebsiteUrl() + (ConfigService.getReaderConfig( "lang" ).startsWith("zh") diff --git a/src/components/dialogs/updateDialog/component.tsx b/src/components/dialogs/updateDialog/component.tsx index b41cf42a..437f3263 100644 --- a/src/components/dialogs/updateDialog/component.tsx +++ b/src/components/dialogs/updateDialog/component.tsx @@ -5,7 +5,7 @@ import packageInfo from "../../../../package.json"; import { Trans } from "react-i18next"; import Lottie from "react-lottie"; import animationNew from "../../../assets/lotties/new.json"; -import { openExternalUrl, WEBSITE_URL } from "../../../utils/common"; +import { getWebsiteUrl, openExternalUrl } from "../../../utils/common"; import { isElectron } from "react-device-detect"; import { sleep } from "../../../utils/common"; import { @@ -207,7 +207,7 @@ class UpdateInfo extends React.Component { lang = "zh"; } openExternalUrl( - WEBSITE_URL + + getWebsiteUrl() + "/" + lang + "/download" + @@ -238,7 +238,7 @@ class UpdateInfo extends React.Component { lang = "zh"; } openExternalUrl( - WEBSITE_URL + + getWebsiteUrl() + "/" + lang + "/download" + diff --git a/src/components/popups/popupAssist/component.tsx b/src/components/popups/popupAssist/component.tsx index d96e6dc1..f44be6f6 100644 --- a/src/components/popups/popupAssist/component.tsx +++ b/src/components/popups/popupAssist/component.tsx @@ -6,9 +6,9 @@ import Parser from "html-react-parser"; import DOMPurify from "dompurify"; import { Trans } from "react-i18next"; import { + getWebsiteUrl, handleContextMenu, openExternalUrl, - WEBSITE_URL, } from "../../../utils/common"; import toast from "react-hot-toast"; import DatabaseService from "../../../utils/storage/databaseService"; @@ -348,9 +348,9 @@ class PopupAssist extends React.Component { ConfigService.getReaderConfig("lang") && ConfigService.getReaderConfig("lang").startsWith("zh") ) { - openExternalUrl(WEBSITE_URL + "/zh/plugin"); + openExternalUrl(getWebsiteUrl() + "/zh/plugin"); } else { - openExternalUrl(WEBSITE_URL + "/en/plugin"); + openExternalUrl(getWebsiteUrl() + "/en/plugin"); } }} > diff --git a/src/components/popups/popupDict/component.tsx b/src/components/popups/popupDict/component.tsx index 600e09dd..c9a619c2 100644 --- a/src/components/popups/popupDict/component.tsx +++ b/src/components/popups/popupDict/component.tsx @@ -8,9 +8,9 @@ import axios from "axios"; import DictHistory from "../../../models/DictHistory"; import { Trans } from "react-i18next"; import { + getWebsiteUrl, handleContextMenu, openExternalUrl, - WEBSITE_URL, } from "../../../utils/common"; import toast from "react-hot-toast"; import DatabaseService from "../../../utils/storage/databaseService"; @@ -114,7 +114,7 @@ class PopupDict extends React.Component { let moreElement = document.querySelector(".dict-learn-more"); if (moreElement) { moreElement.addEventListener("click", () => { - openExternalUrl(window.learnMoreUrl || WEBSITE_URL); + openExternalUrl(window.learnMoreUrl || getWebsiteUrl()); }); } } @@ -273,9 +273,9 @@ class PopupDict extends React.Component { ConfigService.getReaderConfig("lang") && ConfigService.getReaderConfig("lang").startsWith("zh") ) { - openExternalUrl(WEBSITE_URL + "/zh/plugin"); + openExternalUrl(getWebsiteUrl() + "/zh/plugin"); } else { - openExternalUrl(WEBSITE_URL + "/en/plugin"); + openExternalUrl(getWebsiteUrl() + "/en/plugin"); } }} > diff --git a/src/components/popups/popupTrans/component.tsx b/src/components/popups/popupTrans/component.tsx index 93d48873..e9d9f276 100644 --- a/src/components/popups/popupTrans/component.tsx +++ b/src/components/popups/popupTrans/component.tsx @@ -7,9 +7,9 @@ import { Trans } from "react-i18next"; import toast from "react-hot-toast"; import { getDefaultTransTarget, + getWebsiteUrl, handleContextMenu, openExternalUrl, - WEBSITE_URL, } from "../../../utils/common"; import DatabaseService from "../../../utils/storage/databaseService"; import { checkPlugin } from "../../../utils/common"; @@ -214,9 +214,9 @@ class PopupTrans extends React.Component { ConfigService.getReaderConfig("lang") && ConfigService.getReaderConfig("lang").startsWith("zh") ) { - openExternalUrl(WEBSITE_URL + "/zh/plugin"); + openExternalUrl(getWebsiteUrl() + "/zh/plugin"); } else { - openExternalUrl(WEBSITE_URL + "/en/plugin"); + openExternalUrl(getWebsiteUrl() + "/en/plugin"); } }} > diff --git a/src/components/textToSpeech/component.tsx b/src/components/textToSpeech/component.tsx index c9178d41..03b6334c 100644 --- a/src/components/textToSpeech/component.tsx +++ b/src/components/textToSpeech/component.tsx @@ -6,10 +6,10 @@ import { ConfigService } from "../../assets/lib/kookit-extra-browser.min"; import { checkPlugin, getAllVoices, + getWebsiteUrl, handleContextMenu, sleep, splitSentences, - WEBSITE_URL, } from "../../utils/common"; import { isElectron } from "react-device-detect"; import toast from "react-hot-toast"; @@ -536,9 +536,9 @@ class TextToSpeech extends React.Component< ConfigService.getReaderConfig("lang") && ConfigService.getReaderConfig("lang").startsWith("zh") ) { - openExternalUrl(WEBSITE_URL + "/zh/plugin"); + openExternalUrl(getWebsiteUrl() + "/zh/plugin"); } else { - openExternalUrl(WEBSITE_URL + "/en/plugin"); + openExternalUrl(getWebsiteUrl() + "/en/plugin"); } }} > diff --git a/src/containers/header/component.tsx b/src/containers/header/component.tsx index adef0b75..e478c4dc 100644 --- a/src/containers/header/component.tsx +++ b/src/containers/header/component.tsx @@ -31,21 +31,21 @@ import { checkMissingBook, generateSyncRecord, getChatLocale, - getStorageLocation, + getWebsiteUrl, removeChatBox, + resetKoodoSync, showTaskProgress, - WEBSITE_URL, } from "../../utils/common"; import { driveList } from "../../constants/driveList"; import SupportDialog from "../../components/dialogs/supportDialog"; import SyncService from "../../utils/storage/syncService"; import { LocalFileManager } from "../../utils/file/localFile"; -import { updateUserConfig } from "../../utils/request/user"; import packageJson from "../../../package.json"; declare var window: any; class Header extends React.Component { timer: any; + private isSyncing: boolean = false; constructor(props: HeaderProps) { super(props); @@ -132,8 +132,13 @@ class Header extends React.Component { }); this.props.handleCloudSyncFunc(this.handleCloudSync); document.addEventListener("visibilitychange", async (event) => { - if (document.visibilityState === "visible") { + if ( + document.visibilityState === "visible" && + !isElectron && + ConfigService.getReaderConfig("isFinishWebReading") === "yes" + ) { this.handleFinishReading(); + ConfigService.setReaderConfig("isFinishWebReading", "no"); } }); } @@ -171,27 +176,24 @@ class Header extends React.Component { } } handleFinishReading = async () => { - if (!this.props.isLoadMore) { - this.props.handleFetchBooks(); - } - this.props.handleFetchBookmarks(); - this.props.handleFetchNotes(); - - if (ConfigService.getItem("isFinshReading") === "yes") { - ConfigService.setItem("isFinshReading", "no"); - if ( - ConfigService.getReaderConfig("isDisableAutoSync") !== "yes" && - ConfigService.getItem("defaultSyncOption") - ) { - await this.props.handleFetchUserInfo(); - this.setState({ isSync: true }); - this.handleCloudSync(); - } + ConfigService.setItem("isFinshReading", "yes"); + if ( + ConfigService.getReaderConfig("isDisableAutoSync") !== "yes" && + ConfigService.getItem("defaultSyncOption") && + !this.state.isSync + ) { + await this.props.handleFetchUserInfo(); + this.setState({ isSync: true }, async () => { + await this.handleCloudSync(); + ConfigService.setItem("isFinshReading", "no"); + }); } }; handleFinishUpgrade = () => { setTimeout(() => { - this.props.history.push("/manager/home"); + if (this.props.mode === "home") { + this.props.history.push("/manager/home"); + } }, 2000); }; @@ -247,7 +249,6 @@ class Header extends React.Component { beforeSync = async () => { if (!ConfigService.getItem("defaultSyncOption")) { toast.error(this.props.t("Please add data source in the setting")); - this.setState({ isSync: false }); return false; } if ( @@ -269,7 +270,6 @@ class Header extends React.Component { duration: 4000, } ); - this.setState({ isSync: false }); return false; } let config = await getCloudConfig( @@ -277,7 +277,6 @@ class Header extends React.Component { ); if (Object.keys(config).length === 0) { toast.error(this.props.t("Cannot get sync config")); - this.setState({ isSync: false }); return false; } if ( @@ -301,16 +300,7 @@ class Header extends React.Component { this.props.handleFetchDefaultSyncOption(); } if (ConfigService.getReaderConfig("isEnableKoodoSync") === "yes") { - await updateUserConfig({ - is_enable_koodo_sync: "no", - default_sync_option: - ConfigService.getItem("defaultSyncOption") === "google", - }); - setTimeout(() => { - updateUserConfig({ - is_enable_koodo_sync: "yes", - }); - }, 1000); + resetKoodoSync(); } toast( this.props.t( @@ -318,7 +308,6 @@ class Header extends React.Component { ), { duration: 4000 } ); - this.setState({ isSync: false }); return false; } checkMissingBook(this.props.books); @@ -329,7 +318,6 @@ class Header extends React.Component { "Broken data detected, please click the setting button to reset the sync records" ) ); - this.setState({ isSync: false }); return false; } if (ConfigService.getReaderConfig("isEnableKoodoSync") !== "yes") { @@ -360,12 +348,23 @@ class Header extends React.Component { ConfigUtil ); }; + handleSyncStateChange = (isSyncing: boolean) => { + this.setState({ isSync: isSyncing }); + }; handleCloudSync = async (): Promise => { - this.timer = await showTaskProgress(); - if (!this.timer) { + if (this.isSyncing) { + console.info("Sync already in progress, skipping..."); return false; } + this.isSyncing = true; + try { + this.timer = await showTaskProgress(this.handleSyncStateChange); + if (!this.timer) { + this.setState({ isSync: false }); + return false; + } + let res = await this.beforeSync(); if (!res) { clearInterval(this.timer); @@ -389,6 +388,8 @@ class Header extends React.Component { clearInterval(this.timer); this.setState({ isSync: false }); return false; + } finally { + this.isSyncing = false; } setTimeout(() => { toast.dismiss("syncing"); @@ -396,9 +397,10 @@ class Header extends React.Component { return; }; handleSuccess = async () => { - if (!this.props.isLoadMore) { + if (ConfigService.getItem("isFinshReading") !== "yes" || !isElectron) { this.props.handleFetchBooks(); } + this.props.handleFetchBookmarks(); this.props.handleFetchNotes(); toast.success(this.props.t("Synchronisation successful"), { @@ -424,7 +426,9 @@ class Header extends React.Component { } //when book is empty, need to refresh the book list setTimeout(() => { - this.props.history.push("/manager/home"); + if (this.props.mode === "home") { + this.props.history.push("/manager/home"); + } }, 1000); }; handleSync = async (compareResult) => { @@ -498,7 +502,7 @@ class Header extends React.Component { onClick={() => { window.require("electron").ipcRenderer.invoke("new-chat", { url: - WEBSITE_URL + + getWebsiteUrl() + (ConfigService.getReaderConfig("lang").startsWith("zh") ? "/zh/faq" : "/en/faq") + diff --git a/src/containers/header/index.tsx b/src/containers/header/index.tsx index e643b347..86aa9494 100644 --- a/src/containers/header/index.tsx +++ b/src/containers/header/index.tsx @@ -30,6 +30,7 @@ const mapStateToProps = (state: stateType) => { isCollapsed: state.sidebar.isCollapsed, isNewWarning: state.manager.isNewWarning, notes: state.reader.notes, + mode: state.sidebar.mode, isAuthed: state.manager.isAuthed, defaultSyncOption: state.backupPage.defaultSyncOption, userInfo: state.manager.userInfo, diff --git a/src/containers/header/interface.tsx b/src/containers/header/interface.tsx index 93a49865..94dcd8ae 100644 --- a/src/containers/header/interface.tsx +++ b/src/containers/header/interface.tsx @@ -14,6 +14,7 @@ export interface HeaderProps extends RouteComponentProps { notes: NoteModel[]; books: BookModel[]; defaultSyncOption: string; + mode: string; userInfo: any; bookSortCode: { sort: number; order: number }; handleSortDisplay: (isSortDisplay: boolean) => void; diff --git a/src/containers/lists/cardList/component.tsx b/src/containers/lists/cardList/component.tsx index 38114a27..3fc4d2dc 100644 --- a/src/containers/lists/cardList/component.tsx +++ b/src/containers/lists/cardList/component.tsx @@ -3,10 +3,8 @@ import "./cardList.css"; import NoteModel from "../../../models/Note"; import { Trans } from "react-i18next"; import { CardListProps, CardListStates } from "./interface"; -import DeleteIcon from "../../../components/deleteIcon"; import { withRouter } from "react-router-dom"; import { Redirect } from "react-router-dom"; -import NoteTag from "../../../components/noteTag"; import BookUtil from "../../../utils/file/bookUtil"; import toast from "react-hot-toast"; import BookModel from "../../../models/Book"; @@ -52,13 +50,13 @@ class CardList extends React.Component { } loadInitialCards = () => { - let sortedCards = Object.values( - SortUtil.sortNotes( - this.props.cards, - this.props.noteSortCode, - this.props.books - ) - ).flat() as NoteModel[]; + let sortedCards = [...this.props.cards]; + // 按照key排序 + sortedCards.sort((a, b) => { + return this.props.noteSortCode.order === 2 + ? b.key.localeCompare(a.key) + : a.key.localeCompare(b.key); + }); const { itemsPerPage } = this.state; // 根据屏幕大小动态调整每页显示的卡片数量 @@ -75,13 +73,12 @@ class CardList extends React.Component { }; loadMoreCards = () => { - let sortedCards = Object.values( - SortUtil.sortNotes( - this.props.cards, - this.props.noteSortCode, - this.props.books - ) - ).flat() as NoteModel[]; + let sortedCards = [...this.props.cards]; + sortedCards.sort((a, b) => { + return this.props.noteSortCode.order === 2 + ? b.key.localeCompare(a.key) + : a.key.localeCompare(b.key); + }); const { displayedCards, currentPage, itemsPerPage, isLoading } = this.state; if (isLoading || displayedCards.length >= sortedCards.length) { diff --git a/src/containers/panels/operationPanel/component.tsx b/src/containers/panels/operationPanel/component.tsx index 5fac0857..7e1a1703 100644 --- a/src/containers/panels/operationPanel/component.tsx +++ b/src/containers/panels/operationPanel/component.tsx @@ -70,7 +70,6 @@ class OperationPanel extends React.Component< } async handleExit() { ConfigService.setReaderConfig("isFullscreen", "no"); - ConfigService.setItem("isFinshReading", "yes"); this.props.handleReadingState(false); this.props.handleSearch(false); window.speechSynthesis && window.speechSynthesis.cancel(); @@ -86,6 +85,7 @@ class OperationPanel extends React.Component< window.close(); } } else { + ConfigService.setReaderConfig("isFinishWebReading", "yes"); window.close(); } } diff --git a/src/containers/settings/accountSetting/component.tsx b/src/containers/settings/accountSetting/component.tsx index bb4fb538..8a79ce55 100644 --- a/src/containers/settings/accountSetting/component.tsx +++ b/src/containers/settings/accountSetting/component.tsx @@ -3,16 +3,15 @@ import { SettingInfoProps, SettingInfoState } from "./interface"; import { Trans } from "react-i18next"; import { isElectron } from "react-device-detect"; import _ from "underscore"; -import { themeList } from "../../../constants/themeList"; import toast from "react-hot-toast"; import { formatTimestamp, + getServerRegion, + getWebsiteUrl, handleContextMenu, openInBrowser, reloadManager, - WEBSITE_URL, } from "../../../utils/common"; -import { getStorageLocation } from "../../../utils/common"; import { CommonTool, ConfigService, @@ -46,7 +45,7 @@ class AccountSetting extends React.Component< redeemCode: "", isSendingCode: false, countdown: 0, - serverRegion: ConfigService.getItem("serverRegion") || "global", + serverRegion: getServerRegion(), }; } componentDidMount(): void { @@ -93,8 +92,7 @@ class AccountSetting extends React.Component< let url = LoginHelper.getAuthUrl( event.target.value, "manual", - ConfigService.getItem("serverRegion") === "china" && - event.target.value === "microsoft" + getServerRegion() === "china" && event.target.value === "microsoft" ? KookitConfig.ThirdpartyConfig.cnCallbackUrl : KookitConfig.ThirdpartyConfig.callbackUrl ); @@ -160,7 +158,7 @@ class AccountSetting extends React.Component< KookitConfig.LoginAuthRequest[this.state.settingLogin].extraParams .scope, redirect_uri: - ConfigService.getItem("serverRegion") === "china" && + getServerRegion() === "china" && this.state.settingLogin === "microsoft" ? KookitConfig.ThirdpartyConfig.cnCallbackUrl : KookitConfig.ThirdpartyConfig.callbackUrl, @@ -252,7 +250,7 @@ class AccountSetting extends React.Component< let url = LoginHelper.getAuthUrl( this.state.settingLogin, "manual", - ConfigService.getItem("serverRegion") === "china" && + getServerRegion() === "china" && this.state.settingLogin === "microsoft" ? KookitConfig.ThirdpartyConfig.cnCallbackUrl : KookitConfig.ThirdpartyConfig.callbackUrl @@ -525,6 +523,27 @@ class AccountSetting extends React.Component< id: "redeem-code", } ); + if (response.code === 10009) { + if (getServerRegion() === "china") { + toast( + this.props.t( + "If you have purchased the code directly from our website, please redeem with an account registered in global server region" + ), + { + duration: 8000, + } + ); + } else { + toast( + this.props.t( + "If you have purchased the code from Tabao store, please redeem with an account registered in Chinese server region" + ), + { + duration: 8000, + } + ); + } + } } }} > @@ -544,49 +563,56 @@ class AccountSetting extends React.Component< )}
      - Select server region - { + if (!event.target.value) { + return; } - > - {this.props.t(item.label)} - - ))} - + if (event.target.value === "china") { + toast( + this.props.t( + "Some login options and data sources are not available in your selected server region" + ) + ); + } + ConfigService.setItem("serverRegion", event.target.value); + this.setState({ + serverRegion: event.target.value, + }); + resetReaderRequest(); + resetUserRequest(); + resetThirdpartyRequest(); + toast.success(this.props.t("Setup successful")); + }} + > + {[ + { value: "", label: "Please select" }, + { value: "global", label: "Global" }, + { value: "china", label: "China" }, + ].map((item) => ( + + ))} + + )}
      {!this.props.isAuthed && (
      @@ -599,7 +625,7 @@ class AccountSetting extends React.Component< {[ { label: "Please select", value: "" }, ...loginList.filter((item) => { - if (ConfigService.getItem("serverRegion") === "china") { + if (getServerRegion() === "china") { return item.isCNAvailable; } return true; @@ -827,7 +853,7 @@ class AccountSetting extends React.Component< onClick={async () => { if (!this.props.isAuthed) { openInBrowser( - WEBSITE_URL + + getWebsiteUrl() + (ConfigService.getReaderConfig("lang").startsWith("zh") ? "/zh" : "/en") + @@ -840,7 +866,7 @@ class AccountSetting extends React.Component< let tempToken = response.data.access_token; let deviceUuid = await TokenService.getFingerprint(); openInBrowser( - WEBSITE_URL + + getWebsiteUrl() + (ConfigService.getReaderConfig("lang").startsWith("zh") ? "/zh" : "/en") + diff --git a/src/containers/settings/pluginSetting/component.tsx b/src/containers/settings/pluginSetting/component.tsx index 3acebea7..e89ba1a0 100644 --- a/src/containers/settings/pluginSetting/component.tsx +++ b/src/containers/settings/pluginSetting/component.tsx @@ -6,9 +6,9 @@ import { themeList } from "../../../constants/themeList"; import toast from "react-hot-toast"; import { checkPlugin, + getWebsiteUrl, handleContextMenu, openExternalUrl, - WEBSITE_URL, } from "../../../utils/common"; import { getStorageLocation } from "../../../utils/common"; import DatabaseService from "../../../utils/storage/databaseService"; @@ -152,9 +152,9 @@ class SettingDialog extends React.Component< ConfigService.getReaderConfig("lang") && ConfigService.getReaderConfig("lang").startsWith("zh") ) { - openExternalUrl(WEBSITE_URL + "/zh/plugin"); + openExternalUrl(getWebsiteUrl() + "/zh/plugin"); } else { - openExternalUrl(WEBSITE_URL + "/en/plugin"); + openExternalUrl(getWebsiteUrl() + "/en/plugin"); } }} > diff --git a/src/containers/settings/syncSetting/component.tsx b/src/containers/settings/syncSetting/component.tsx index eb79d222..9b3cc3f7 100644 --- a/src/containers/settings/syncSetting/component.tsx +++ b/src/containers/settings/syncSetting/component.tsx @@ -10,13 +10,15 @@ import { themeList } from "../../../constants/themeList"; import toast from "react-hot-toast"; import { generateSyncRecord, + getServerRegion, + getWebsiteUrl, handleContextMenu, openExternalUrl, openInBrowser, + resetKoodoSync, showTaskProgress, testConnection, testCORS, - WEBSITE_URL, } from "../../../utils/common"; import { getStorageLocation } from "../../../utils/common"; import { driveInputConfig, driveList } from "../../../constants/driveList"; @@ -35,6 +37,7 @@ import SyncService from "../../../utils/storage/syncService"; import { updateUserConfig } from "../../../utils/request/user"; import BookUtil from "../../../utils/file/bookUtil"; import Book from "../../../models/Book"; +import ConfigUtil from "../../../utils/file/configUtil"; declare var window: any; class SyncSetting extends React.Component { constructor(props: SettingInfoProps) { @@ -112,7 +115,7 @@ class SyncSetting extends React.Component { ) { this.handleJump( new SyncUtil(settingDrive, {}).getAuthUrl( - ConfigService.getItem("serverRegion") === "china" && + getServerRegion() === "china" && (settingDrive === "microsoft" || settingDrive === "microsoft_exp" || settingDrive === "adrive") @@ -149,13 +152,24 @@ class SyncSetting extends React.Component { return; } ConfigService.setItem("defaultSyncOption", event.target.value); - if (ConfigService.getItem("isEnableKoodoSync") === "yes") { - updateUserConfig({ - default_sync_option: event.target.value, - }); + if (ConfigService.getReaderConfig("isEnableKoodoSync") === "yes") { + resetKoodoSync(); } this.props.handleFetchDefaultSyncOption(); toast.success(this.props.t("Change successful")); + if ( + !(await ConfigUtil.isCloudEmpty()) && + ConfigService.getReaderConfig("isEnableKoodoSync") === "yes" + ) { + toast( + this.props.t( + "This data source already contains a library. If you need to merge local and cloud data, please turn off Koodo Sync and resync." + ), + { + duration: 10000, + } + ); + } }; handleCancelDrive = () => { this.props.handleSettingDrive(""); @@ -238,7 +252,7 @@ class SyncSetting extends React.Component { ConfigService, BookUtil ); - let timer = await showTaskProgress(); + let timer = await showTaskProgress((_: boolean) => {}); if (!timer) { return; } @@ -452,8 +466,11 @@ class SyncSetting extends React.Component { } } if ( - this.props.settingDrive === "docker" || this.props.settingDrive === "webdav" || + this.props.settingDrive === "docker" || + this.props.settingDrive === "ftp" || + this.props.settingDrive === "sftp" || + this.props.settingDrive === "mega" || this.props.settingDrive === "s3compatible" ) { let connectionResult = await testConnection( @@ -495,7 +512,7 @@ class SyncSetting extends React.Component { onClick={async () => { this.handleJump( new SyncUtil(this.props.settingDrive, {}).getAuthUrl( - ConfigService.getItem("serverRegion") === "china" && + getServerRegion() === "china" && (this.props.settingDrive === "microsoft" || this.props.settingDrive === "microsoft_exp" || this.props.settingDrive === "adrive") @@ -545,7 +562,7 @@ class SyncSetting extends React.Component { className="voice-add-cancel" style={{ borderWidth: 0, lineHeight: "30px" }} onClick={() => { - openExternalUrl(WEBSITE_URL + "/zh/add-source"); + openExternalUrl(getWebsiteUrl() + "/zh/add-source"); }} > {this.props.t("How to fill out")} @@ -570,7 +587,7 @@ class SyncSetting extends React.Component { support: ["desktop", "browser", "phone"], }, ...driveList.filter((item) => { - if (ConfigService.getItem("serverRegion") === "china") { + if (getServerRegion() === "china") { return item.isCNAvailable; } return true; @@ -608,7 +625,7 @@ class SyncSetting extends React.Component { {[ { label: "Please select", value: "", isPro: false }, ...driveList.filter((item) => { - if (ConfigService.getItem("serverRegion") === "china") { + if (getServerRegion() === "china") { return item.isCNAvailable; } return true; @@ -672,7 +689,7 @@ class SyncSetting extends React.Component { {[ { label: "Please select", value: "", isPro: false }, ...driveList.filter((item) => { - if (ConfigService.getItem("serverRegion") === "china") { + if (getServerRegion() === "china") { return item.isCNAvailable; } return true; diff --git a/src/containers/sidebar/component.tsx b/src/containers/sidebar/component.tsx index 7fbe7bbd..e9d0f4e5 100644 --- a/src/containers/sidebar/component.tsx +++ b/src/containers/sidebar/component.tsx @@ -4,7 +4,7 @@ import { sideMenu } from "../../constants/sideMenu"; import { SidebarProps, SidebarState } from "./interface"; import { withRouter } from "react-router-dom"; import { ConfigService } from "../../assets/lib/kookit-extra-browser.min"; -import { openInBrowser, WEBSITE_URL } from "../../utils/common"; +import { getWebsiteUrl, openInBrowser } from "../../utils/common"; import { Trans } from "react-i18next"; import toast from "react-hot-toast"; class Sidebar extends React.Component { @@ -263,7 +263,7 @@ class Sidebar extends React.Component { } alt="" onClick={() => { - this.handleJump(WEBSITE_URL); + this.handleJump(getWebsiteUrl()); }} style={this.state.isCollapsed ? { display: "none" } : {}} className="logo" diff --git a/src/containers/viewer/component.tsx b/src/containers/viewer/component.tsx index a2893b03..0d011178 100644 --- a/src/containers/viewer/component.tsx +++ b/src/containers/viewer/component.tsx @@ -16,6 +16,7 @@ import PageWidget from "../pageWidget"; import { getPageWidth, getPdfPassword, + getServerRegion, scrollContents, showDownloadProgress, } from "../../utils/common"; @@ -82,9 +83,12 @@ class Viewer extends React.Component { ) ); this.props.handleRenderBookFunc(this.handleRenderBook); - - window.addEventListener("resize", () => { - BookUtil.reloadBooks(); + let resizeTimer: NodeJS.Timeout; + window.addEventListener("resize", (event) => { + clearTimeout(resizeTimer); + resizeTimer = setTimeout(() => { + BookUtil.reloadBooks(this.props.currentBook); + }, 300); // 300ms 防抖 }); } async UNSAFE_componentWillReceiveProps(nextProps: ViewerProps) { @@ -214,20 +218,13 @@ class Viewer extends React.Component { if (result) { toast.success(this.props.t("Download successful")); } else { - result = await BookUtil.downloadCacheBook(key); - if (result) { - toast.success(this.props.t("Download successful")); - } else { - toast.error(this.props.t("Download failed")); - return; - } + toast.error(this.props.t("Book not exists")); } } else { toast.error(this.props.t("Book not exists")); return; } } - let rendition = BookHelper.getRendition( result, { @@ -258,7 +255,10 @@ class Viewer extends React.Component { (item) => item.lang === ConfigService.getReaderConfig("lang") )?.value || "chi_sim", ocrEngine: ConfigService.getReaderConfig("ocrEngine") || "tesseract", - serverRegion: ConfigService.getItem("serverRegion") || "global", + serverRegion: + ConfigService.getItem("serverRegion") === "china" + ? "china" + : "global", paraSpacingValue: ConfigService.getReaderConfig("paraSpacingValue") || "1.5", titleSizeValue: diff --git a/src/pages/login/component.tsx b/src/pages/login/component.tsx index 18c58478..0f67ed5e 100644 --- a/src/pages/login/component.tsx +++ b/src/pages/login/component.tsx @@ -7,6 +7,7 @@ import toast, { Toaster } from "react-hot-toast"; import { loginList } from "../../constants/loginList"; import { generateSyncRecord, + getServerRegion, handleContextMenu, openInBrowser, removeSearchParams, @@ -37,7 +38,7 @@ class Login extends React.Component { loginConfig: {}, countdown: 0, isSendingCode: false, - serverRegion: ConfigService.getItem("serverRegion") || "global", + serverRegion: getServerRegion(), }; } @@ -366,8 +367,8 @@ class Login extends React.Component { let url = LoginHelper.getAuthUrl( item.value, isElectron ? "desktop" : "browser", - ConfigService.getItem("serverRegion") === - "china" && item.value === "microsoft" + getServerRegion() === "china" && + item.value === "microsoft" ? KookitConfig.ThirdpartyConfig.cnCallbackUrl : KookitConfig.ThirdpartyConfig.callbackUrl ); @@ -453,7 +454,7 @@ class Login extends React.Component {
      {driveList .filter((item) => { - if (ConfigService.getItem("serverRegion") === "china") { + if (getServerRegion() === "china") { return item.isCNAvailable; } return true; diff --git a/src/pages/reader/component.tsx b/src/pages/reader/component.tsx index 769c21b7..4d10d66d 100644 --- a/src/pages/reader/component.tsx +++ b/src/pages/reader/component.tsx @@ -11,8 +11,8 @@ import { Tooltip } from "react-tooltip"; import "./index.css"; import Book from "../../models/Book"; import DatabaseService from "../../utils/storage/databaseService"; -import BookUtil from "../../utils/file/bookUtil"; import ConvertDialog from "../../components/dialogs/convertDialog"; +import { isElectron } from "react-device-detect"; let lock = false; //prevent from clicking too fasts let throttleTime = @@ -67,8 +67,11 @@ class Reader extends React.Component { ); } }, 5000); + window.addEventListener("beforeunload", function (event) { - ConfigService.setItem("isFinshReading", "yes"); + if (!isElectron) { + ConfigService.setReaderConfig("isFinishWebReading", "yes"); + } }); window.addEventListener("mousemove", () => { isMouseMoving = true; diff --git a/src/store/actions/manager.tsx b/src/store/actions/manager.tsx index 86c83f0e..14243ad0 100644 --- a/src/store/actions/manager.tsx +++ b/src/store/actions/manager.tsx @@ -195,6 +195,9 @@ export function handleFetchAuthed() { try { TokenService.getToken("is_authed").then((value) => { let isAuthed = value === "yes"; + if (isAuthed && !ConfigService.getItem("serverRegion")) { + ConfigService.setItem("serverRegion", "global"); + } dispatch(handleAuthed(isAuthed)); }); } catch (error) { diff --git a/src/utils/common.ts b/src/utils/common.ts index 7d54cd31..78476824 100644 --- a/src/utils/common.ts +++ b/src/utils/common.ts @@ -19,6 +19,7 @@ import { getCloudConfig } from "./file/common"; import SyncService from "./storage/syncService"; import localforage from "localforage"; import { driveList } from "../constants/driveList"; +import { updateUserConfig } from "./request/user"; declare var window: any; export const supportedFormats = [ ".epub", @@ -580,6 +581,21 @@ export const getDefaultTransTarget = (langList) => { return langMap[langTarget || "English"]; }; export const WEBSITE_URL = "https://koodoreader.com"; +export const CN_WEBSITE_URL = "https://koodoreader.cn"; +export const getServerRegion = () => { + let isUseCN = false; + if (ConfigService.getItem("serverRegion")) { + isUseCN = ConfigService.getItem("serverRegion") === "china"; + } else { + if (navigator.language && navigator.language === "zh-CN") { + isUseCN = true; + } + } + return isUseCN ? "china" : "global"; +}; +export const getWebsiteUrl = () => { + return getServerRegion() === "china" ? CN_WEBSITE_URL : WEBSITE_URL; +}; export const formatTimestamp = (timestamp) => { if (!timestamp) return ""; @@ -800,7 +816,9 @@ export const showDownloadProgress = ( }, 500); return timer; }; -export const showTaskProgress = async () => { +export const showTaskProgress = async ( + handleSyncStateChange: (isSync: boolean) => void +) => { let config = {}; let timer: any; let service = ConfigService.getItem("defaultSyncOption"); @@ -829,13 +847,14 @@ export const showTaskProgress = async () => { if (stats.hasFailedTasks) { toast.error( i18n.t( - "Tasks failed after multiple retries, please check the network connection" + "Tasks failed after multiple retries, please check the network connection or reauthorize the data source in the settings" ), { id: "syncing", } ); clearInterval(timer); + handleSyncStateChange(false); return; } else { toast.loading( @@ -867,13 +886,14 @@ export const showTaskProgress = async () => { if (stats.hasFailedTasks) { toast.error( i18n.t( - "Tasks failed after multiple retries, please check the network connection" + "Tasks failed after multiple retries, please check the network connection or reauthorize the data source in the settings" ), { id: "syncing", } ); clearInterval(timer); + handleSyncStateChange(false); return; } else { toast.loading( @@ -925,3 +945,15 @@ export const clearAllData = async () => { } await localforage.clear(); }; +export const resetKoodoSync = async () => { + await updateUserConfig({ + is_enable_koodo_sync: "no", + default_sync_option: ConfigService.getItem("defaultSyncOption"), + }); + setTimeout(() => { + updateUserConfig({ + is_enable_koodo_sync: "yes", + default_sync_option: ConfigService.getItem("defaultSyncOption"), + }); + }, 1000); +}; diff --git a/src/utils/file/bookUtil.ts b/src/utils/file/bookUtil.ts index 040863ed..56a2dba7 100644 --- a/src/utils/file/bookUtil.ts +++ b/src/utils/file/bookUtil.ts @@ -200,15 +200,14 @@ class BookUtil { let result = await this.downloadBook(book.key, book.format); clearInterval(timer); toast.dismiss("offline-book"); - if (ConfigService.getItem("defaultSyncOption") === "adrive") { - let syncUtil = await SyncService.getSyncUtil(); - let covers = await syncUtil.listFiles("cover"); - for (let cover of covers) { - if (cover.startsWith(book.key)) { - await CoverUtil.downloadCover(cover); - } + + let covers = await CoverUtil.getCloudCoverList(); + for (let cover of covers) { + if (cover.startsWith(book.key)) { + await CoverUtil.downloadCover(cover); } } + if (result) { toast.success(i18n.t("Download successful"), { id: "offline-book", @@ -276,12 +275,16 @@ class BookUtil { let ref = book.format.toLowerCase(); return `/${ref}/${book.key}`; } - static reloadBooks() { + static reloadBooks(currentBook: BookModel) { if (isElectron) { if (ConfigService.getReaderConfig("isOpenInMain") === "yes") { - window.require("electron").ipcRenderer.invoke("reload-tab", "ping"); + window + .require("electron") + .ipcRenderer.invoke("reload-tab", { bookKey: currentBook.key }); } else { - window.require("electron").ipcRenderer.invoke("reload-reader", "ping"); + window.require("electron").ipcRenderer.invoke("reload-reader", { + bookKey: currentBook.key, + }); } } else { window.location.reload(); diff --git a/src/utils/file/configUtil.ts b/src/utils/file/configUtil.ts index 16207af7..d11554f4 100644 --- a/src/utils/file/configUtil.ts +++ b/src/utils/file/configUtil.ts @@ -113,10 +113,9 @@ class ConfigUtil { } let thirdpartyRequest = await getThirdpartyRequest(); - let response = await thirdpartyRequest.getSyncData(); + let response = await thirdpartyRequest.getSyncDataByType({ type }); if (response.code === 200) { - let syncData = response.data; - this.syncData = syncData; + this.syncData[type] = response.data; return JSON.parse(this.syncData[type] || defaultValue); } else if (response.code === 401) { handleExitApp(); @@ -282,5 +281,13 @@ class ConfigUtil { } } } + static async isCloudEmpty() { + let syncDataStr = await this.downloadConfig("sync"); + let syncData = JSON.parse(syncDataStr || "{}"); + if (!syncData || Object.keys(syncData).length === 0) { + return true; + } + return false; + } } export default ConfigUtil; diff --git a/src/utils/reader/mouseEvent.ts b/src/utils/reader/mouseEvent.ts index c5217dc1..ac3192fe 100644 --- a/src/utils/reader/mouseEvent.ts +++ b/src/utils/reader/mouseEvent.ts @@ -132,7 +132,7 @@ export const scrollChapter = async ( } } }; - +let lastScaleTime = 0; export const bindHtmlEvent = ( rendition: any, doc: any, @@ -152,10 +152,16 @@ export const bindHtmlEvent = ( }, { passive: false } ); + doc.addEventListener( "wheel", async (event) => { if (event.ctrlKey && readerMode !== "double") { + const currentTime = Date.now(); + if (currentTime - lastScaleTime < 1500) { + return; + } + lastScaleTime = currentTime; event.preventDefault(); let scale = parseFloat(ConfigService.getReaderConfig("scale") || "1"); if (event.deltaY < 0) { diff --git a/src/utils/request/common.ts b/src/utils/request/common.ts index e5d7e30b..341c345f 100644 --- a/src/utils/request/common.ts +++ b/src/utils/request/common.ts @@ -2,18 +2,18 @@ import axios from "axios"; import toast from "react-hot-toast"; import i18n from "../../i18n"; import { TokenService } from "../../assets/lib/kookit-extra-browser.min"; -import { reloadManager } from "../common"; +import { getServerRegion, reloadManager } from "../common"; const PUBLIC_URL = "https://api.960960.xyz"; +const CN_PUBLIC_URL = "https://api.koodoreader.cn"; +export const getPublicUrl = () => { + return getServerRegion() === "china" ? CN_PUBLIC_URL : PUBLIC_URL; +}; export const checkDeveloperUpdate = async () => { let res = await axios.get( - PUBLIC_URL + `/api/update_dev?name=${navigator.language}` + getPublicUrl() + `/api/update_dev?name=${navigator.language}` ); return res.data.log; }; -export const getUploadUrl = async () => { - let res = await axios.get(PUBLIC_URL + "/api/get_temp_upload_url"); - return res.data; -}; export const uploadFile = async (url: string, file: any) => { return new Promise((resolve) => { axios @@ -29,7 +29,7 @@ export const uploadFile = async (url: string, file: any) => { }; export const checkStableUpdate = async () => { let res = await axios.get( - PUBLIC_URL + `/api/update?name=${navigator.language}` + getPublicUrl() + `/api/update?name=${navigator.language}` ); return res.data.log; }; diff --git a/src/utils/request/reader.ts b/src/utils/request/reader.ts index afb55eef..c093e206 100644 --- a/src/utils/request/reader.ts +++ b/src/utils/request/reader.ts @@ -7,6 +7,7 @@ import { import i18n from "../../i18n"; import { handleExitApp } from "./common"; import { officialDictList } from "../../constants/settingList"; +import { getServerRegion } from "../common"; let readerRequest: ReaderRequest | undefined; export const getTransStream = async ( text: string, @@ -81,7 +82,11 @@ export const getReaderRequest = async () => { if (readerRequest) { return readerRequest; } - readerRequest = new ReaderRequest(TokenService, ConfigService); + readerRequest = new ReaderRequest( + TokenService, + ConfigService, + getServerRegion() + ); return readerRequest; }; export const resetReaderRequest = () => { diff --git a/src/utils/request/thirdparty.ts b/src/utils/request/thirdparty.ts index 34a26e5c..004b8757 100644 --- a/src/utils/request/thirdparty.ts +++ b/src/utils/request/thirdparty.ts @@ -7,12 +7,17 @@ import { } from "../../assets/lib/kookit-extra-browser.min"; import i18n from "../../i18n"; import { handleExitApp } from "./common"; +import { getServerRegion } from "../common"; let thirdpartyRequest: ThirdpartyRequest | undefined; export const getThirdpartyRequest = async () => { if (thirdpartyRequest) { return thirdpartyRequest; } - thirdpartyRequest = new ThirdpartyRequest(TokenService, ConfigService); + thirdpartyRequest = new ThirdpartyRequest( + TokenService, + ConfigService, + getServerRegion() + ); return thirdpartyRequest; }; export const resetThirdpartyRequest = () => { @@ -24,22 +29,7 @@ export const onSyncCallback = async (service: string, authCode: string) => { let thirdpartyRequest = await getThirdpartyRequest(); let syncUtil = new SyncUtil(service, {}, thirdpartyRequest); - let timer = setTimeout(() => { - if ( - ConfigService.getItem("serverRegion") !== "china" && - navigator.language === "zh-CN" - ) { - toast.error( - i18n.t( - "Request timed out, You may change the server region to China to solve the connection issue in mainland China. Go to Settings > Account" - ), - { id: "adding-sync-error", duration: 6000 } - ); - return; - } - }, 10000); let result = await syncUtil.authToken(authCode); - clearTimeout(timer); if (!result.refresh_token) { toast.error(i18n.t("Authorization failed"), { id: "adding-sync-id" }); return; @@ -95,24 +85,9 @@ export const encryptToken = async (service: string, config: any) => { return { code: 200, msg: "success", data: syncToken }; } let thirdpartyRequest = await getThirdpartyRequest(); - let timer = setTimeout(() => { - if ( - ConfigService.getItem("serverRegion") !== "china" && - navigator.language === "zh-CN" - ) { - toast.error( - i18n.t( - "Request timed out, You may change the server region to China to solve the connection issue in mainland China. Go to Settings > Account" - ), - { id: "adding-sync-error", duration: 6000 } - ); - return; - } - }, 10000); let response = await thirdpartyRequest.encryptToken({ token: syncToken, }); - clearTimeout(timer); if (response.code === 200) { await TokenService.setToken( service + "_token", @@ -143,22 +118,7 @@ export const decryptToken = async (service: string) => { }; } let thirdpartyRequest = await getThirdpartyRequest(); - let timer = setTimeout(() => { - if ( - ConfigService.getItem("serverRegion") !== "china" && - navigator.language === "zh-CN" - ) { - toast.error( - i18n.t( - "Request timed out, You may change the server region to China to solve the connection issue in mainland China. Go to Settings > Account" - ), - { id: "adding-sync-error", duration: 6000 } - ); - return; - } - }, 10000); let encryptedToken = await TokenService.getToken(service + "_token"); - clearTimeout(timer); if (!encryptedToken || encryptedToken === "{}") { return {}; } diff --git a/src/utils/request/user.ts b/src/utils/request/user.ts index f0f86a99..81770ee2 100644 --- a/src/utils/request/user.ts +++ b/src/utils/request/user.ts @@ -15,31 +15,17 @@ import packageJson from "../../../package.json"; import toast from "react-hot-toast"; import i18n from "../../i18n"; import { handleExitApp } from "./common"; +import { getServerRegion } from "../common"; let userRequest: UserRequest | undefined; export const loginRegister = async (service: string, code: string) => { let deviceName = detectBrowser(); let userRequest = await getUserRequest(); - let timer = setTimeout(() => { - if ( - ConfigService.getItem("serverRegion") !== "china" && - navigator.language === "zh-CN" - ) { - toast.error( - i18n.t( - "Request timed out, You may change the server region to China to solve the connection issue in mainland China. Go to Settings > Account" - ), - { id: "adding-sync-error", duration: 6000 } - ); - return; - } - }, 10000); let response = await userRequest.loginRegister({ code, provider: service, scope: KookitConfig.LoginAuthRequest[service].extraParams.scope, redirect_uri: - ConfigService.getItem("serverRegion") === "china" && - service === "microsoft" + getServerRegion() === "china" && service === "microsoft" ? KookitConfig.ThirdpartyConfig.cnCallbackUrl : KookitConfig.ThirdpartyConfig.callbackUrl, device_name: deviceName, @@ -50,11 +36,11 @@ export const loginRegister = async (service: string, code: string) => { device_uuid: await TokenService.getFingerprint(), app_version: packageJson.version, }); - clearTimeout(timer); if (response.code === 200) { await TokenService.setToken("is_authed", "yes"); await TokenService.setToken("access_token", response.data.access_token); await TokenService.setToken("refresh_token", response.data.refresh_token); + ConfigService.setItem("serverRegion", getServerRegion()); } return response; }; @@ -93,7 +79,7 @@ export const getUserRequest = async () => { if (userRequest) { return userRequest; } - userRequest = new UserRequest(TokenService, ConfigService); + userRequest = new UserRequest(TokenService, ConfigService, getServerRegion()); return userRequest; }; export const resetUserRequest = () => {