diff --git a/src/assets/lib/kookit-extra-browser.min.js b/src/assets/lib/kookit-extra-browser.min.js index 55361181..47fa6d50 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","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","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.960960.xyz",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",pcloudClientId:"pg8ten0B3vH",boxClientId:"ltimecqanmpxoaicn9qw3es6l3sdl1ya",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"}},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"}},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"},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"},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})});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.refresh_token}))}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})});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.refresh_token}))}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.refresh_token}))}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.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.refresh_token}))}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 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=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 R{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 O extends R{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 P{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.refresh_token}))}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 _ extends P{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});for(r=this.baseFolder+"/"+r;r.startsWith("/");)r=r.substring(1);const s=this.baseUrl+":/"+r+":/createUploadSession",a=yield e.post(s,null,{headers:{Authorization:"Bearer "+n,"Content-Type":"application/json"},maxContentLength:1/0,maxBodyLength:1/0});let c=o.size;const u=o.type,d=a.data.uploadUrl,l=yield e.put(d,o,{headers:{"Content-Type":u,"Content-Range":`bytes 0-${c-1}/${c}`},maxContentLength:1/0,maxBodyLength:1/0});return!(l.status>=300)||(console.error("Error occurred during file download:",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();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const n=`${this.baseUrl}:/${t}:/content`,i=yield e.get(n,{responseType:"arraybuffer",headers:{Authorization:"Bearer "+r},maxContentLength:1/0,maxBodyLength:1/0,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}}))))))}))}}class I{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 M{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.access_token}))}getAuthUrl(e){return`https://my.pcloud.com/oauth2/authorize?client_id=${y.pcloudClientId}&response_type=code&redirect_uri=${e}`}}class N extends M{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 F=e=>{let t=e.httpHandler;return{setHttpHandler(e){t=e},httpHandler:()=>t,updateHttpClientConfig(e,r){t.updateHttpClientConfig(e,r)},httpHandlerConfigs:()=>t.httpHandlerConfigs()}};var $,U,L,B,D;!function(e){e.HEADER="header",e.QUERY="query"}($||($={})),function(e){e.HEADER="header",e.QUERY="query"}(U||(U={})),function(e){e.HTTP="http",e.HTTPS="https"}(L||(L={})),function(e){e.MD5="md5",e.CRC32="crc32",e.CRC32C="crc32c",e.SHA1="sha1",e.SHA256="sha256"}(B||(B={})),function(e){e[e.HEADER=0]="HEADER",e[e.TRAILER=1]="TRAILER"}(D||(D={}));const z="__smithy_context";var j,q;!function(e){e.PROFILE="profile",e.SSO_SESSION="sso-session",e.SERVICES="services"}(j||(j={})),function(e){e.HTTP_0_9="http/0.9",e.HTTP_1_0="http/1.0",e.TDS_8_0="tds/8.0"}(q||(q={}));class H{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 H({...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 H.clone(this)}}class W{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 K={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0},V=e=>({applyToStack:t=>{t.add(function(e){return t=>async r=>{const{request:n}=r;return H.isInstance(n)&&n.body&&"node"===e.runtime&&"FetchHttpHandler"!==e.requestHandler?.constructor?.name&&(n.headers={...n.headers,Expect:"100-continue"}),t({...r,request:n})}}(e),K)}}),Q="WHEN_SUPPORTED",G=Q,J=Q;var X,Z;!function(e){e.MD5="MD5",e.CRC32="CRC32",e.CRC32C="CRC32C",e.SHA1="SHA1",e.SHA256="SHA256"}(X||(X={})),function(e){e.HEADER="header",e.TRAILER="trailer"}(Z||(Z={}));const Y=X.MD5,ee=X.CRC32;var te;function re(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"}(te||(te={}));const ne=e=>W.isInstance(e)?e.headers?.date??e.headers?.Date:void 0,ie=e=>new Date(Date.now()+e),oe=(e,t)=>{const r=Date.parse(e);return((e,t)=>Math.abs(ie(t).getTime()-e)>=3e5)(r,t)?r-Date.now():t},se=(e,t)=>{if(!t)throw new Error(`Property \`${e}\` is not resolved for AWS SDK SigV4Auth`);return t},ae=async e=>{const t=se("context",e.context),r=se("config",e.config),n=t.endpointV2?.properties?.authSchemes?.[0],i=se("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 ce{async sign(e,t,r){if(!H.isInstance(e))throw new Error("The request is not an instance of `HttpRequest` and cannot be signed");const n=await ae(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:ie(i.systemClockOffset),signingRegion:s,signingService:a})}errorHandler(e){return t=>{const r=t.ServerTime??ne(t.$response);if(r){const n=se("config",e.config),i=n.systemClockOffset;n.systemClockOffset=oe(r,n.systemClockOffset);n.systemClockOffset!==i&&t.$metadata&&(t.$metadata.clockSkewCorrected=!0)}throw t}}successHandler(e,t){const r=ne(e);if(r){const e=se("config",t.config);e.systemClockOffset=oe(r,e.systemClockOffset)}}}class ue extends ce{async sign(e,t,r){if(!H.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 ae(r),c=(await(n.sigv4aSigningRegionSet?.())??s??[o]).join(",");return await i.sign(e,{signingDate:ie(n.systemClockOffset),signingRegion:c,signingService:a})}}const de=e=>e[z]||(e[z]={}),le=e=>{if("function"==typeof e)return e;const t=Promise.resolve(e);return()=>t};const he=(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=de(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)},fe={step:"serialize",tags:["HTTP_AUTH_SCHEME"],name:"httpAuthSchemeMiddleware",override:!0,relation:"before",toMiddleware:"endpointV2Middleware"},pe={name:"deserializerMiddleware",step:"deserialize",tags:["DESERIALIZER"],override:!0},ge={name:"serializerMiddleware",step:"serialize",tags:["SERIALIZER"],override:!0};function me(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),pe),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),ge)}}}const ye=e=>e=>{throw e},ve=(e,t)=>{},be={step:"finalizeRequest",tags:["HTTP_SIGNING"],name:"httpSigningMiddleware",aliases:["apiKeyMiddleware","tokenMiddleware","awsAuthMiddleware"],override:!0,relation:"after",toMiddleware:"retryMiddleware"},we=e=>({applyToStack:e=>{e.addRelativeTo(((e,t)=>async r=>{if(!H.isInstance(r.request))return e(r);const n=de(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||ye)(i));return(s.successHandler||ve)(a.response,i),a}),be)}}),ke=e=>{if("function"==typeof e)return e;const t=Promise.resolve(e);return()=>t},Se={},Ee=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);Se[r]=e,Ee[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;Se[r]=n,Ee[n]=r}for(let e=0;e<10;e++){Se[e.toString(10)]=e+52;const t=e.toString(10),r=e+52;Se[t]=r,Ee[r]=t}Se["+"]=62,Ee[62]="+",Se["/"]=63,Ee[63]="/";const xe=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)},Ae=e=>(new TextEncoder).encode(e),Te=e=>"string"==typeof e?Ae(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e),Ce=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 Re(e){let t;t="string"==typeof e?Ae(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 Oe extends Uint8Array{static fromString(e,t="utf-8"){if("string"==typeof e)return function(e,t){return"base64"===t?Oe.mutate(xe(e)):Oe.mutate(Ae(e))}(e,t);throw new Error(`Unsupported conversion from ${typeof e} to Uint8ArrayBlobAdapter.`)}static mutate(e){return Object.setPrototypeOf(e,Oe.prototype),e}transformToString(e="utf-8"){return function(e,t="utf-8"){return"base64"===t?Re(e):Ce(e)}(this,e)}}const Pe=(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`)}})},_e=e=>encodeURIComponent(e).replace(/[!'()*]/g,Ie),Ie=e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`;function Me(e,t){return new Request(e,t)}function Ne(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 Fe={supported:void 0};class $e{static create(e){return"function"==typeof e?.handle?e:new $e(e)}constructor(e){"function"==typeof e?this.configProvider=e().then((e=>e||{})):(this.config=e??{},this.configProvider=Promise.resolve(this.config)),void 0===Fe.supported&&(Fe.supported=Boolean("undefined"!=typeof Request&&"keepalive"in Me("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=_e(r),Array.isArray(n))for(let e=0,i=n.length;e{};const p=Me(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 W({headers:r,reason:e.statusText,statusCode:e.status,body:e.body})}:e.blob().then((t=>({response:new W({headers:r,reason:e.statusText,statusCode:e.status,body:t})})))})),Ne(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 Ue=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 Le={},Be={};for(let e=0;e<256;e++){let t=e.toString(16).toLowerCase();1===t.length&&(t=`0${t}`),Le[e]=t,Be[t]=e}function De(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),qe="The stream has already been transformed.",He=e=>{if(!We(e)&&!je(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(qe);return t=!0,await Ue(e)};return Object.assign(e,{transformToByteArray:r,transformToString:async e=>{const t=await r();if("base64"===e)return Re(t);if("hex"===e)return ze(t);if(void 0===e||"utf8"===e||"utf-8"===e)return Ce(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(qe);if(t=!0,We(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(je(e))return e;throw new Error(`Cannot transform payload to web stream, got ${e}`)}})},We=e=>"function"==typeof Blob&&e instanceof Blob;const Ke="function"==typeof ReadableStream?ReadableStream:function(){};class Ve extends Ke{}const Qe=({expectedChecksum:e,checksum:t,source:r,checksumSourceLocation:n,base64Encoder:i})=>{if(!je(r))throw new Error(`@smithy/util-stream: unsupported source type ${r?.constructor?.name??r} in ChecksumStream.`);const o=i??Re;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,Ve.prototype),a},Ge=async(e=new Uint8Array,t)=>{if(e instanceof Uint8Array)return Oe.mutate(e);if(!e)return Oe.mutate(new Uint8Array);const r=t.streamCollector(e);return Oe.mutate(await r)};function Je(e){return encodeURIComponent(e).replace(/[!'()*]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function Xe(e,t){return new Ze(e,t)}class Ze{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 H({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=>Je(e))).join("/"):Je(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 Ye{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 et=(tt=3e5,e=>rt(e)&&e.expiration.getTime()-Date.now()void 0!==e.expiration,nt="X-Amz-Date",it="X-Amz-Signature",ot="X-Amz-Security-Token",st="authorization",at=nt.toLowerCase(),ct=[st,at,"date"],ut=it.toLowerCase(),dt="x-amz-content-sha256",lt=ot.toLowerCase(),ht={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},ft=/^proxy-/,pt=/^sec-/,gt="AWS4-HMAC-SHA256",mt="AWS4-HMAC-SHA256-PAYLOAD",yt="aws4_request",vt={},bt=[],wt=(e,t,r)=>`${e}/${t}/${r}/${yt}`,kt=(e,t,r)=>{const n=new e(t);return n.update(Te(r)),n.digest()},St=({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 ht||t?.has(o)||ft.test(o)||pt.test(o))&&(!r||r&&!r.has(o))||(n[o]=e[i].trim().replace(/\s+/g," "))}return n},Et=e=>"function"==typeof ArrayBuffer&&e instanceof ArrayBuffer||"[object ArrayBuffer]"===Object.prototype.toString.call(e),xt=async({headers:e,body:t},r)=>{for(const t of Object.keys(e))if(t.toLowerCase()===dt)return e[t];if(null==t)return"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";if("string"==typeof t||ArrayBuffer.isView(t)||Et(t)){const e=new r;return e.update(Te(t)),ze(await e.digest())}return"UNSIGNED-PAYLOAD"};class At{format(e){const t=[];for(const r of Object.keys(e)){const n=Ae(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=Ae(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(Rt.fromNumber(e.value.valueOf()).bytes,1),u;case"uuid":if(!Ct.test(e.value))throw new Error(`Invalid UUID received: ${e.value}`);const d=new Uint8Array(17);return d[0]=9,d.set(De(e.value.replace(/\-/g,"")),1),d}}}var Tt;!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"}(Tt||(Tt={}));const Ct=/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;class Rt{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&&Ot(t),new Rt(t)}valueOf(){const e=this.bytes.slice(0),t=128&e[0];return t&&Ot(e),parseInt(ze(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}}function Ot(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,0===e[t]);t--);}const Pt=e=>{e=H.clone(e);for(const t of Object.keys(e.headers))ct.indexOf(t.toLowerCase())>-1&&delete e.headers[t];return e},_t=e=>"number"==typeof e?new Date(1e3*e):"string"==typeof e?Number(e)?new Date(1e3*Number(e)):new Date(e):e;class It{constructor({applyChecksum:e,credentials:t,region:r,service:n,sha256:i,uriEscapePath:o=!0}){this.headerFormatter=new At,this.service=n,this.sha256=i,this.uriEscapePath=o,this.applyChecksum="boolean"!=typeof e||e,this.regionProvider=le(r),this.credentialProvider=le(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}=Mt(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=wt(f,l,u??this.service),g=((e,t={})=>{const{headers:r,query:n={}}=H.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}})(Pt(e),{unhoistableHeaders:o,hoistableHeaders:a});d.sessionToken&&(g.query[ot]=d.sessionToken),g.query["X-Amz-Algorithm"]=gt,g.query["X-Amz-Credential"]=`${d.accessKeyId}/${p}`,g.query[nt]=h,g.query["X-Amz-Expires"]=n.toString(10);const m=St(g,i,s);return g.query["X-Amz-SignedHeaders"]=Nt(m),g.query[it]=await this.getSignature(h,p,this.getSigningKey(d,l,f,u),this.createCanonicalRequest(g,m,await xt(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}=Mt(r),u=wt(a,s,o??this.service),d=await xt({headers:{},body:t},this.sha256),l=new this.sha256;l.update(e);const h=ze(await l.digest()),f=[mt,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}=Mt(t),a=new this.sha256(await this.getSigningKey(i,o,s,n));return a.update(Te(e)),ze(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=Pt(e),{longDate:u,shortDate:d}=Mt(t),l=wt(d,a,o??this.service);c.headers[at]=u,s.sessionToken&&(c.headers[lt]=s.sessionToken);const h=await xt(c,this.sha256);!((e,t)=>{e=e.toLowerCase();for(const r of Object.keys(t))if(e===r.toLowerCase())return!0;return!1})(dt,c.headers)&&this.applyChecksum&&(c.headers[dt]=h);const f=St(c,n,r),p=await this.getSignature(u,l,this.getSigningKey(s,a,d,o),this.createCanonicalRequest(c,f,h));return c.headers[st]=`${gt} Credential=${s.accessKeyId}/${l}, SignedHeaders=${Nt(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()===ut)continue;const i=_e(n);t.push(i);const o=e[n];"string"==typeof o?r[i]=`${i}=${_e(o)}`:Array.isArray(o)&&(r[i]=o.slice(0).reduce(((e,t)=>e.concat([`${i}=${_e(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(Te(r));const i=await n.digest();return`${gt}\n${e}\n${t}\n${ze(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 _e(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(Te(i)),ze(await o.digest())}getSigningKey(e,t,r,n){return(async(e,t,r,n,i)=>{const o=`${r}:${n}:${i}:${ze(await kt(e,t.secretAccessKey,t.accessKeyId))}:${t.sessionToken}`;if(o in vt)return vt[o];for(bt.push(o);bt.length>50;)delete vt[bt.shift()];let s=`AWS4${t.secretAccessKey}`;for(const t of[r,n,i,yt])s=await kt(e,s,t);return vt[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 Mt=e=>{const t=(r=e,_t(r).toISOString().replace(/\.\d{3}Z$/,"Z")).replace(/[\-:]/g,"");var r;return{longDate:t,shortDate:t.slice(0,8)}},Nt=e=>Object.keys(e).sort().join(";"),Ft=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,et,rt)),t||(t=e.credentialDefaultProvider?ke(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?ke(e.signer):e.regionInfoProvider?()=>ke(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||It)(c)})):async r=>{const i=(r=Object.assign({},{name:"sigv4",signingName:e.signingName||e.defaultSigningName,signingRegion:await ke(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||It)(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}},$t=(e,t)=>{const r=[];if(e&&r.push(e),t)for(const e of t)r.push(e);return r},Ut=(e,t)=>`${e||"anonymous"}${t&&t.length>0?` (a.k.a. ${t.join(",")})`:""}`,Lt=()=>{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 $t(t.name,t.aliases))s[e]=t;n.push(t)})),t.forEach((e=>{const t={...e,before:[],after:[]};for(const e of $t(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 ${Ut(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)=>Bt[t.step]-Bt[e.step]||Dt[t.priority||"normal"]-Dt[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=$t(i,s);if(c.length>0){if(c.some((e=>n.has(e)))){if(!o)throw new Error(`Duplicate middleware name '${Ut(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(`"${Ut(n.name,n.aliases)}" middleware with ${n.priority} priority in ${n.step} step cannot be overridden by "${Ut(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=$t(i,s);if(c.length>0){if(c.some((e=>n.has(e)))){if(!o)throw new Error(`Duplicate middleware name '${Ut(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(`"${Ut(n.name,n.aliases)}" middleware ${n.relation} "${n.toMiddleware}" middleware cannot be overridden by "${Ut(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(Lt()),use:e=>{e.applyToStack(a)},remove:r=>"string"==typeof r?(r=>{let i=!1;const o=e=>{const t=$t(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 $t(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=$t(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(Lt());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 Ut(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},Bt={initialize:5,serialize:4,build:3,finalizeRequest:2,deserialize:1},Dt={high:3,normal:2,low:1};class zt{constructor(e){this.config=e,this.middlewareStack=Lt()}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 jt{constructor(){this.middlewareStack=Lt()}static classBuilder(){return new qt}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,[z]:{commandInstance:this,...c},...u},{requestHandler:p}=t;return l.resolve((e=>p.handle(e.request,r||{})),f)}}class qt{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 jt{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 Ht="***SensitiveInformation***",Wt=e=>{switch(e){case"true":return!0;case"false":return!1;default:throw new Error(`Unable to parse boolean value "${e}"`)}},Kt=Math.ceil(2**127*(2-2**-23)),Vt=e=>{const t=(e=>{if(null!=e){if("string"==typeof e){const t=parseFloat(e);if(!Number.isNaN(t))return String(t)!==String(e)&&ur.warn(cr(`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)>Kt)throw new TypeError(`Expected 32-bit float, got ${e}`);return t},Qt=e=>{if(null!=e){if(Number.isInteger(e)&&!Number.isNaN(e))return e;throw new TypeError(`Expected integer, got ${typeof e}: ${e}`)}},Gt=e=>Zt(e,32),Jt=e=>Zt(e,16),Xt=e=>Zt(e,8),Zt=(e,t)=>{const r=Qt(e);if(void 0!==r&&Yt(r,t)!==r)throw new TypeError(`Expected ${t}-bit integer, got ${e}`);return r},Yt=(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]}},er=(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},tr=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}`)},rr=e=>{if(null!=e){if("string"==typeof e)return e;if(["boolean","number","bigint"].includes(typeof e))return ur.warn(cr(`Expected string, got ${typeof e}: ${e}`)),String(e);throw new TypeError(`Expected string, got ${typeof e}: ${e}`)}},nr=/(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g,ir=e=>{const t=e.match(nr);if(null===t||t[0].length!==e.length)throw new TypeError("Expected real number, got implicit NaN");return parseFloat(e)},or=e=>Qt("string"==typeof e?ir(e):e),sr=e=>Gt("string"==typeof e?ir(e):e),ar=e=>Jt("string"==typeof e?ir(e):e),cr=e=>String(new TypeError(e).stack||e).split("\n").slice(0,5).filter((e=>!e.includes("stackTraceWarning"))).join("\n"),ur={warn:console.warn},dr=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],lr=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function hr(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`${dr[n]}, ${i<10?`0${i}`:`${i}`} ${lr[r]} ${t} ${c}:${u}:${d} GMT`}const fr=new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(([-+]\d{2}\:\d{2})|[zZ])$/),pr=e=>{if(null==e)return;if("string"!=typeof e)throw new TypeError("RFC-3339 date-times must be expressed as strings");const t=fr.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=ar(Or(n)),h=Tr(i,"month",1,12),f=Tr(o,"day",1,31),p=br(l,h,f,{hours:s,minutes:a,seconds:c,fractionalMilliseconds:u});return"Z"!=d.toUpperCase()&&p.setTime(p.getTime()-Rr(d)),p},gr=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$/),mr=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$/),yr=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})$/),vr=e=>{if(null==e)return;if("string"!=typeof e)throw new TypeError("RFC-7231 date-times must be expressed as strings");let t=gr.exec(e);if(t){const[e,r,n,i,o,s,a,c]=t;return br(ar(Or(i)),Sr(n),Tr(r,"day",1,31),{hours:o,minutes:s,seconds:a,fractionalMilliseconds:c})}if(t=mr.exec(e),t){const[e,r,n,i,o,s,a,c]=t;return kr(br(wr(i),Sr(n),Tr(r,"day",1,31),{hours:o,minutes:s,seconds:a,fractionalMilliseconds:c}))}if(t=yr.exec(e),t){const[e,r,n,i,o,s,a,c]=t;return br(ar(Or(c)),Sr(r),Tr(n.trimLeft(),"day",1,31),{hours:i,minutes:o,seconds:s,fractionalMilliseconds:a})}throw new TypeError("Invalid RFC-7231 date-time value")},br=(e,t,r,n)=>{const i=t-1;return xr(e,i,r),new Date(Date.UTC(e,i,r,Tr(n.hours,"hour",0,23),Tr(n.minutes,"minute",0,59),Tr(n.seconds,"seconds",0,60),Cr(n.fractionalMilliseconds)))},wr=e=>{const t=(new Date).getUTCFullYear(),r=100*Math.floor(t/100)+ar(Or(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,Sr=e=>{const t=lr.indexOf(e);if(t<0)throw new TypeError(`Invalid month: ${e}`);return t+1},Er=[31,28,31,30,31,30,31,31,30,31,30,31],xr=(e,t,r)=>{let n=Er[t];if(1===t&&Ar(e)&&(n=29),r>n)throw new TypeError(`Invalid day for ${lr[t]} in ${e}: ${r}`)},Ar=e=>e%4==0&&(e%100!=0||e%400==0),Tr=(e,t,r,n)=>{const i=(e=>Xt("string"==typeof e?ir(e):e))(Or(e));if(in)throw new TypeError(`${t} must be between ${r} and ${n}, inclusive`);return i},Cr=e=>null==e?0:1e3*(e=>Vt("string"==typeof e?ir(e):e))("0."+e),Rr=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},Or=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},Ir=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"]}),Mr=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{}}},Nr=e=>{const t=[];for(const r in B){const n=B[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}}},Fr=e=>{const t={};return e.checksumAlgorithms().forEach((e=>{t[e.algorithmId()]=e.checksumConstructor()})),t},$r=e=>{let t=e.retryStrategy;return{setRetryStrategy(e){t=e},retryStrategy:()=>t}},Ur=e=>{const t={};return t.retryStrategy=e.retryStrategy(),t},Lr=e=>({...Nr(e),...$r(e)}),Br=e=>({...Fr(e),...Ur(e)}),Dr=e=>Array.isArray(e)?e:[e],zr=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]=zr(e[r]));return e},jr=e=>null!=e,qr=function(){const e=Object.getPrototypeOf(this).constructor,t=new(Function.bind.apply(String,[null,...arguments]));return Object.setPrototypeOf(t,e.prototype),t};qr.prototype=Object.create(String.prototype,{constructor:{value:qr,enumerable:!1,writable:!0,configurable:!0}}),Object.setPrototypeOf(qr,String);class Hr{trace(){}debug(){}info(){}warn(){}error(){}}function Wr(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,Kr(n,i,o);o=t}for(const e of Object.keys(o))Array.isArray(o[e])?Vr(n,null,o,e):n[e]=o[e];return n}const Kr=(e,t,r)=>Wr(e,Object.entries(r).reduce(((e,[r,n])=>(Array.isArray(n)?e[r]=n:e[r]="function"==typeof n?[t,n()]:[t,n],e)),{})),Vr=(e,t,r,n)=>{if(null!==t){let i=r[n];"function"==typeof i&&(i=[,i]);const[o=Qr,s=Gr,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)}},Qr=e=>null!=e,Gr=e=>e;function Jr(e){return(e.includes(",")||e.includes('"'))&&(e=`"${e.replace(/"/g,'\\"')}"`),e}function Xr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Zr={},Yr={};!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 hn("InvalidXml","XML declaration allowed only at the start of the document.",pn(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function on(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}Zr.validate=function(e,t){t=Object.assign({},tn,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,!en.isName(o)){let t;return t=0===u.trim().length?"Invalid space after '<'.":"Tag '"+u+"' is an invalid name.",hn("InvalidTag",t,pn(e,s))}const d=cn(e,s);if(!1===d)return hn("InvalidAttr","Attributes for '"+u+"' have open quote.",pn(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=dn(l,t);if(!0!==i)return hn(i.err.code,i.err.msg,pn(e,r+i.err.line));n=!0}else if(c){if(!d.tagClosed)return hn("InvalidTag","Closing tag '"+u+"' doesn't have proper closing.",pn(e,s));if(l.trim().length>0)return hn("InvalidTag","Closing tag '"+u+"' can't have attributes or invalid starting.",pn(e,a));if(0===r.length)return hn("InvalidTag","Closing tag '"+u+"' has not been opened.",pn(e,a));{const t=r.pop();if(u!==t.tagName){let r=pn(e,t.tagStartPos);return hn("InvalidTag","Expected closing tag '"+t.tagName+"' (opened in line "+r.line+", col "+r.col+") instead of closing tag '"+u+"'.",pn(e,a))}0==r.length&&(i=!0)}}else{const o=dn(l,t);if(!0!==o)return hn(o.err.code,o.err.msg,pn(e,s-l.length+o.err.line));if(!0===i)return hn("InvalidXml","Multiple possible root nodes found.",pn(e,s));-1!==t.unpairedTags.indexOf(u)||r.push({tagName:u,tagStartPos:a}),n=!0}for(s++;s0)||hn("InvalidXml","Invalid '"+JSON.stringify(r.map((e=>e.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):hn("InvalidXml","Start tag expected.",1)};const sn='"',an="'";function cn(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 un=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function dn(e,t){const r=en.getAllMatches(e,un),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}};mn.buildOptions=function(e){return Object.assign({},yn,e)},mn.defaultOptions=yn;var vn=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})}};const bn=Yr;function wn(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&&Sn(e,t))t+=7,[entityName,val,t]=wn(e,t+1),-1===val.indexOf("&")&&(r[Tn(entityName)]={regx:RegExp(`&${entityName};`,"g"),val:val});else if(i&&En(e,t))t+=8;else if(i&&xn(e,t))t+=8;else if(i&&An(e,t))t+=9;else{if(!kn)throw new Error("Invalid DOCTYPE");o=!0}n++,s=""}if(0!==n)throw new Error("Unclosed DOCTYPE")}return{entities:r,i:t}};const Rn=/^[-+]?0x[a-fA-F0-9]+$/,On=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const Pn={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};const _n=Yr,In=vn,Mn=Cn,Nn=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(t.hex&&Rn.test(r))return Number.parseInt(r,16);{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]);const a=n[4]||n[6];if(!t.leadingZeros&&o.length>0&&i&&"."!==r[2])return e;if(!t.leadingZeros&&o.length>0&&!i&&"."!==r[1])return e;{const n=Number(r),c=""+n;return-1!==c.search(/[eE]/)||a?t.eNotation?n:e:-1!==r.indexOf(".")?"0"===c&&""===s||c===s||i&&c==="-"+s?n:e:o?s===c||i+s===c?n:e:r===c||r===i+c?n:e}}return e}};function Fn(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 Qn(e,this.options.parseTagValue,this.options.numberParseOptions);return e.trim()===e?Qn(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function Un(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 Ln=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function Bn(e,t,r){if(!this.options.ignoreAttributes&&"string"==typeof e){const r=_n.getAllMatches(e,Ln),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=Kn(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 In(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=Wn(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=Mn(e,o);this.docTypeEntities=t.entities,o=t.i}else if("!["===e.substr(o+1,2)){const t=Wn(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=Kn(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 In(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 In(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 In(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 zn(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 jn=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 qn(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 Wn(e,t,r,n){const i=e.indexOf(t,r);if(-1===i)throw new Error(n);return i+t.length-1}function Kn(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=Wn(e,"?>",r+1,"StopNode is not closed.")}else if("!--"===e.substr(r+1,3)){r=Wn(e,"--\x3e",r+3,"StopNode is not closed.")}else if("!["===e.substr(r+1,2)){r=Wn(e,"]]>",r,"StopNode is not closed.")-2}else{const n=Kn(e,r,">");if(n){(n&&n.tagName)===t&&"/"!==n.tagExp[n.tagExp.length-1]&&i++,r=n.closeIndex}}}function Qn(e,t,r){if(t&&"string"==typeof e){const t=e.trim();return"true"===t||"false"!==t&&Nn(e,r)}return _n.isExist(e)?e:""}var Gn=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=Fn,this.parseXml=Dn,this.parseTextData=$n,this.resolveNameSpace=Un,this.buildAttributesMap=Bn,this.isItStopNode=Hn,this.replaceEntitiesValue=jn,this.readStopNodeData=Vn,this.saveTextToParentTag=qn,this.addChild=zn}},Jn={};function Xn(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 Zn(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=ci(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}${ci(a[":@"],t)}`,h=si(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 ai(e){const t=Object.keys(e);for(let r=0;r0&&t.processEntities)for(let r=0;r0&&(r="\n"),si(e,t,"",r)},hi={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 fi(e){this.options=Object.assign({},hi,e),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=mi),this.processTextOrObjNode=pi,this.options.format?(this.indentate=gi,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function pi(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 gi(e){return this.options.indentBy.repeat(e)}function mi(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}fi.prototype.build=function(e){return this.options.preserveOrder?li(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0).val)},fi.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}},fi.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)=>Ge(e,t).then((e=>t.utf8Encoder(e))))(e,t).then((e=>{if(e.length){const t=new yi.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]),zr(o)}return{}})),bi=async(e,t)=>{const r=await vi(e,t);return r.Error&&(r.Error.message=r.Error.message??r.Error.Message),r},wi=[X.CRC32,X.CRC32C,X.SHA1,X.SHA256],ki=[X.SHA256,X.SHA1,X.CRC32,X.CRC32C],Si=e=>e===X.MD5?"content-md5":`x-amz-checksum-${e.toLowerCase()}`,Ei=e=>void 0!==e&&"string"!=typeof e&&!ArrayBuffer.isView(e)&&!Et(e);function xi(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 Ai(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 Ci(e){return e instanceof Uint8Array?e:"string"==typeof e?Ti(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e)}function Ri(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^Mi[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}(),Mi=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 Ni(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 Fi(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^Li[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}(),Li=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)=>({[X.MD5]:t.md5,[X.CRC32]:$i,[X.CRC32C]:_i,[X.SHA1]:t.sha1,[X.SHA256]:t.sha256}[e]),Di=(e,t)=>{const r=new e;return r.update(Te(t||"")),r.digest()},zi={name:"flexibleChecksumsMiddleware",step:"build",tags:["BODY_CHECKSUM"],override:!0},ji=(e,t)=>(r,n)=>async i=>{if(!H.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?ee:Y;if(!r||!e[r])return t?i:void 0;const o=e[r];if(!wi.includes(o))throw new Error(`The checksum algorithm "${o}" is not supported by the client. Select one of ${wi}.`);return o})(s,{requestChecksumRequired:l,requestAlgorithmMember:h},!!n.isS3ExpressBucket);let p=a,g=c;if(f){switch(f){case X.CRC32:re(n,"FLEXIBLE_CHECKSUMS_REQ_CRC32","U");break;case X.CRC32C:re(n,"FLEXIBLE_CHECKSUMS_REQ_CRC32C","V");break;case X.SHA1:re(n,"FLEXIBLE_CHECKSUMS_REQ_SHA1","X");break;case X.SHA256:re(n,"FLEXIBLE_CHECKSUMS_REQ_SHA256","Y")}const t=Si(f),r=Bi(f,e);if(Ei(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 Di(r,a);g={...c,[t]:u(e)}}}return await r({...i,request:{...o,headers:g,body:p}})},qi=(e=[])=>{const t=[];for(const r of ki)e.includes(r)&&wi.includes(r)&&t.push(r);return t};function Hi(e){return new Blob([e]).stream()}const Wi=async(e,{checksumAlgorithmFn:t,base64Encoder:r})=>r(await Di(t,e)),Ki={name:"flexibleChecksumsResponseMiddleware",toMiddleware:"deserializerMiddleware",relation:"after",tags:["BODY_CHECKSUM"],override:!0},Vi=(e,t)=>(r,n)=>async i=>{if(!H.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&&qi(d).every((e=>{const t=Si(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=Ei(a.body);i&&(c=await e.streamCollector(a.body),a.body=Hi(c)),await(async(e,{config:t,responseAlgorithms:r})=>{const n=qi(r),{body:i,headers:o}=e;for(const r of n){const n=Si(r),s=o[n];if(s){const o=Bi(r,t),{base64Encoder:a}=t;if(Ei(i))return void(e.body=Qe({expectedChecksum:s,checksumSourceLocation:n,checksum:new o,source:i,base64Encoder:a}));const c=await Wi(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},Qi=(e,t)=>({applyToStack:r=>{r.add(ji(e,t),zi),r.addRelativeTo(Vi(e,t),Ki)}});const Gi={name:"hostHeaderMiddleware",step:"build",priority:"low",tags:["HOST"],override:!0},Ji=e=>({applyToStack:t=>{t.add((e=>t=>async r=>{if(!H.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),Gi)}}),Xi={name:"loggerMiddleware",tags:["LOGGER"],step:"initialize",override:!0},Zi="X-Amzn-Trace-Id",Yi={step:"build",tags:["RECURSION_DETECTION"],name:"recursionDetectionMiddleware",override:!0,priority:"low"},eo=e=>({applyToStack:t=>{t.add((e=>t=>async r=>{const{request:n}=r;if(!H.isInstance(n)||"node"!==e.runtime||n.headers.hasOwnProperty(Zi))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[Zi]=o),t({...r,request:n})})(e),Yi)}});const to={step:"finalizeRequest",tags:["CHECK_CONTENT_LENGTH_HEADER"],name:"getCheckContentLengthHeaderPlugin",override:!0},ro=e=>({applyToStack:e=>{e.add(((e,t)=>async r=>{const{request:n}=r;if(H.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 Hr?console.warn(e):t.logger.warn(e)}return e({...r})}),to)}}),no={tags:["REGION_REDIRECT","S3"],name:"regionRedirectEndpointMiddleware",override:!0,relation:"before",toMiddleware:"endpointV2Middleware"};const io={step:"initialize",tags:["REGION_REDIRECT","S3"],name:"regionRedirectMiddleware",override:!0},oo=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),io),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),no)}}),so={tags:["S3"],name:"s3ExpiresMiddleware",override:!0,relation:"after",toMiddleware:"deserializerMiddleware"},ao=e=>({applyToStack:e=>{e.addRelativeTo(((e,t)=>async r=>{const n=await e(r),{response:i}=n;if(W.isInstance(i)&&i.headers.expires){i.headers.expiresstring=i.headers.expires;try{vr(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}),so)}});class co{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+co.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 uo(Promise.resolve(e)))}))),e})):n.set(r,new uo(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 ho;lo.REFRESH_WINDOW_MS=6e4,function(e){e.ENV="env",e.CONFIG="shared config entry"}(ho||(ho={}));const fo="X-Amz-S3session-Token",po=fo.toLowerCase();class go extends It{async signWithCredentials(e,t,r){const n=mo(t);e.headers[po]=t.sessionToken;return yo(this,n),this.signRequest(e,r??{})}async presignWithCredentials(e,t,r){const n=mo(t);delete e.headers[po],e.headers[fo]=t.sessionToken,e.query=e.query??{},e.query[fo]=t.sessionToken;return yo(this,n),this.presign(e,r)}}function mo(e){return{accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey,expiration:e.expiration}}function yo(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 vo={name:"s3ExpressMiddleware",step:"build",tags:["S3","S3_EXPRESS"],override:!0},bo=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)&&(re(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,H.isInstance(n.request)&&i.sessionToken&&(n.request.headers[po]=i.sessionToken)}}}return t(n)})(e),vo)}}),wo=e=>e=>{throw e},ko=(e,t)=>{},So=e=>(t,r)=>async n=>{if(!H.isInstance(n.request))return t(n);const i=de(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||wo)(o));return(a.successHandler||ko)(u.response,o),u},Eo={CopyObjectCommand:!0,UploadPartCopyCommand:!0,CompleteMultipartUploadCommand:!0},xo=e=>(t,r)=>async n=>{const i=await t(n),{response:o}=i;if(!W.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 Ao(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&&Eo[r.commandName]){const e=new Error("S3 aborted request");throw e.name="InternalError",e}return l&&l.endsWith("")&&(o.statusCode=400),i},Ao=(e=new Uint8Array,t)=>e instanceof Uint8Array?Promise.resolve(e):t.streamCollector(e)||Promise.resolve(new Uint8Array),To={relation:"after",toMiddleware:"deserializerMiddleware",tags:["THROW_200_EXCEPTIONS","S3"],name:"throw200ExceptionsMiddleware",override:!0},Co=e=>({applyToStack:t=>{t.addRelativeTo(xo(e),To)}});const Ro={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),Ro)}});const _o=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}$"),Io=e=>_o.test(e)||e.startsWith("[")&&e.endsWith("]"),Mo=new RegExp("^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$"),No=(e,t=!1)=>{if(!t)return Mo.test(e);const r=e.split(".");for(const e of r)if(!No(e))return!1;return!0},Fo={},$o="endpoints";function Uo(e){return"object"!=typeof e||null==e?e:"ref"in e?`$${Uo(e.ref)}`:"fn"in e?`${e.fn}(${(e.argv||[]).map(Uo).join(", ")})`:JSON.stringify(e,null,2)}class Lo 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 Lo(`Path: '${e}' does not end with ']'`);const i=n.slice(t+1,-1);if(Number.isNaN(parseInt(i)))throw new Lo(`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 Lo(`Index '${n}' in '${t}' not found in '${JSON.stringify(e)}'`);return Array.isArray(r)?r[parseInt(n)]:r[n]}),e),Do={[L.HTTP]:80,[L.HTTPS]:443},zo={booleanEquals:(e,t)=>e===t,getAttr:Bo,isSet:e=>null!=e,isValidHostLabel:No,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(L).includes(c))return null;const u=Io(i);return{scheme:c,authority:`${n}${r.includes(`${n}:${Do[c]}`)||"string"==typeof e&&e.includes(`${n}:${Do[c]}`)?`:${Do[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()}`))},jo=(e,t)=>{const r=[],n={...t.endpointParams,...t.referenceRecord};let i=0;for(;i{if("string"==typeof e)return jo(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 Lo(`'${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:qo(e,"arg",r))),i=e.split(".");return i[0]in Fo&&null!=i[1]?Fo[i[0]][i[1]](...n):zo[e](...n)},Wo=({assign:e,...t},r)=>{if(e&&e in r.referenceRecord)throw new Lo(`'${e}' is already defined in Reference Record.`);const n=Ho(t,r);return r.logger?.debug?.(`${$o} evaluateCondition: ${Uo(t)} = ${Uo(n)}`),{result:""===n||!!n,...null!=e&&{toAssign:{name:e,value:n}}}},Ko=(e=[],t)=>{const r={};for(const n of e){const{result:e,toAssign:i}=Wo(n,{...t,referenceRecord:{...t.referenceRecord,...r}});if(!e)return{result:e};i&&(r[i.name]=i.value,t.logger?.debug?.(`${$o} assign: ${i.name} := ${Uo(i.value)}`))}return{result:!0,referenceRecord:r}},Vo=(e,t)=>Object.entries(e).reduce(((e,[r,n])=>({...e,[r]:n.map((e=>{const n=qo(e,"Header value entry",t);if("string"!=typeof n)throw new Lo(`Header '${r}' value '${n}' is not a string`);return n}))})),{}),Qo=(e,t)=>{if(Array.isArray(e))return e.map((e=>Qo(e,t)));switch(typeof e){case"string":return jo(e,t);case"object":if(null===e)throw new Lo(`Unexpected endpoint property: ${e}`);return Go(e,t);case"boolean":return e;default:throw new Lo("Unexpected endpoint property type: "+typeof e)}},Go=(e,t)=>Object.entries(e).reduce(((e,[r,n])=>({...e,[r]:Qo(n,t)})),{}),Jo=(e,t)=>{const r=qo(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 Lo("Endpoint URL must be a string, got "+typeof r)},Xo=(e,t)=>{const{conditions:r,endpoint:n}=e,{result:i,referenceRecord:o}=Ko(r,t);if(!i)return;const s={...t,referenceRecord:{...t.referenceRecord,...o}},{url:a,properties:c,headers:u}=n;return t.logger?.debug?.(`${$o} Resolving endpoint from template: ${Uo(n)}`),{...null!=u&&{headers:Vo(u,s)},...null!=c&&{properties:Go(c,s)},url:Jo(a,s)}},Zo=(e,t)=>{const{conditions:r,error:n}=e,{result:i,referenceRecord:o}=Ko(r,t);if(i)throw new Lo(qo(n,"Error",{...t,referenceRecord:{...t.referenceRecord,...o}}))},Yo=(e,t)=>{const{conditions:r,rules:n}=e,{result:i,referenceRecord:o}=Ko(r,t);if(i)return es(n,{...t,referenceRecord:{...t.referenceRecord,...o}})},es=(e,t)=>{for(const r of e)if("endpoint"===r.type){const e=Xo(r,t);if(e)return e}else if("error"===r.type)Zo(r,t);else{if("tree"!==r.type)throw new Lo(`Unknown endpoint rule: ${r}`);{const e=Yo(r,t);if(e)return e}}throw new Lo("Rules evaluation failed")},ts=(e,t=!1)=>{if(t){for(const t of e.split("."))if(!ts(t))return!1;return!0}return!!No(e)&&(!(e.length<3||e.length>63)&&(e===e.toLowerCase()&&!Io(e)))};let rs={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 ns={isVirtualHostableS3Bucket:ts,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}=rs;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}}};Fo.aws=ns;const is=/\d{12}\.ddb/;const os="user-agent",ss="x-amz-user-agent",as=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w]/g,cs=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w\#]/g;const us=e=>(t,r)=>async n=>{const{request:i}=n;if(!H.isInstance(i))return t(n);const{headers:o}=i,s=r?.userAgent?.map(ds)||[],a=(await e.defaultUserAgentProvider()).map(ds);await async function(e,t,r){const n=r.request;if("rpc-v2-cbor"===n?.headers?.["smithy-protocol"]&&re(e,"PROTOCOL_RPC_V2_CBOR","M"),"function"==typeof t.retryStrategy){const r=await t.retryStrategy();"function"==typeof r.acquireInitialRetryToken?r.constructor?.name?.includes("Adaptive")?re(e,"RETRY_MODE_ADAPTIVE","F"):re(e,"RETRY_MODE_STANDARD","E"):re(e,"RETRY_MODE_LEGACY","D")}if("function"==typeof t.accountIdEndpointMode){const r=e.endpointV2;switch(String(r?.url?.hostname).match(is)&&re(e,"ACCOUNT_ID_ENDPOINT","O"),await(t.accountIdEndpointMode?.())){case"disabled":re(e,"ACCOUNT_ID_MODE_DISABLED","Q");break;case"preferred":re(e,"ACCOUNT_ID_MODE_PREFERRED","P");break;case"required":re(e,"ACCOUNT_ID_MODE_REQUIRED","R")}}const i=e.__smithy_context?.selectedHttpAuthScheme?.identity;if(i?.$source){const t=i;t.accountId&&re(e,"RESOLVED_ACCOUNT_ID","T");for(const[r,n]of Object.entries(t.$source??{}))re(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(ds)||[],d=await e.userAgentAppId();d&&a.push(ds([`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[ss]=o[ss]?`${o[os]} ${h}`:h),o[os]=l):o[ss]=l,t({...n,request:i})},ds=e=>{const t=e[0].split("/").map((e=>e.replace(as,"-"))).join("/"),r=e[1]?.replace(cs,"-"),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}`}}),"")},ls={name:"getUserAgentMiddleware",step:"build",priority:"low",tags:["SET_USER_AGENT","USER_AGENT"],override:!0},hs=e=>"string"==typeof e&&(e.startsWith("fips-")||e.endsWith("-fips")),fs=e=>hs(e)?["fips-aws-global","aws-fips"].includes(e)?"us-east-1":e.replace(/fips-(dkr-|prod-)?|-fips/,""):e,ps="content-length";const gs={step:"build",tags:["SET_CONTENT_LENGTH","CONTENT_LENGTH"],name:"contentLengthMiddleware",override:!0},ms=e=>({applyToStack:t=>{var r;t.add((r=e.bodyLengthChecker,e=>async t=>{const n=t.request;if(H.isInstance(n)){const{body:e,headers:t}=n;if(e&&-1===Object.keys(t).map((e=>e.toLowerCase())).indexOf(ps))try{const t=r(e);n.headers={...n.headers,[ps]:String(t)}}catch(e){}}return e({...t,request:n})}),gs)}}),ys=/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/,vs=/(\d+\.){3}\d+/,bs=/\.\./,ws=e=>ys.test(e)&&!vs.test(e)&&!bs.test(e),ks=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},Ss=(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},Es=async e=>{};const xs=e=>{if("string"==typeof e)return xs(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}},As=e=>"object"==typeof e?"url"in e?xs(e.url):e:xs(e),Ts=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 Ss(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("?"))),ks(t)){if(!0===e.ForcePathStyle)throw new Error("Path-style addressing cannot be used with ARN buckets")}else(!ws(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},Cs=({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 Es(r.serviceId),e&&(r.endpoint=()=>Promise.resolve(As(e)))}const i=await Ts(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=de(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})},Rs={step:"serialize",tags:["ENDPOINT_PARAMETERS","ENDPOINT_V2","ENDPOINT"],name:"endpointV2Middleware",override:!0,relation:"before",toMiddleware:ge.name},Os=(e,t)=>({applyToStack:r=>{r.addRelativeTo(Cs({config:e,instructions:t}),Rs)}});var Ps;!function(e){e.STANDARD="standard",e.ADAPTIVE="adaptive"}(Ps||(Ps={}));const _s=Ps.STANDARD,Is=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],Ms=["TimeoutError","RequestTimeout","RequestTimeoutException"],Ns=[500,502,503,504],Fs=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],$s=e=>429===e.$metadata?.httpStatusCode||Is.includes(e.name)||1==e.$retryable?.throttling,Us=e=>(e=>e.$metadata?.clockSkewCorrected)(e)||Ms.includes(e.name)||Fs.includes(e?.code||"")||Ns.includes(e.$metadata?.httpStatusCode||0);class Ls{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=>Ls.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(),$s(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))}}Ls.setTimeoutFn=setTimeout;const Bs=({retryDelay:e,retryCount:t,retryCost:r})=>({getRetryCount:()=>t,getRetryDelay:()=>Math.min(2e4,e),getRetryCost:()=>r});class Ds{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 zs{constructor(e,t){this.maxAttemptsProvider=e,this.mode=Ps.ADAPTIVE;const{rateLimiter:r}=t??{};this.rateLimiter=r??new Ls,this.standardRetryStrategy=new Ds(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 js;const qs=new Uint8Array(16);function Hs(){if(!js&&(js="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!js))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return js(qs)}const Ws=[];for(let e=0;e<256;++e)Ws.push((e+256).toString(16).slice(1));var Ks={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Vs(e,t,r){if(Ks.randomUUID&&!t&&!e)return Ks.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 Ws[e[t+0]]+Ws[e[t+1]]+Ws[e[t+2]]+Ws[e[t+3]]+"-"+Ws[e[t+4]]+Ws[e[t+5]]+"-"+Ws[e[t+6]]+Ws[e[t+7]]+"-"+Ws[e[t+8]]+Ws[e[t+9]]+"-"+Ws[e[t+10]]+Ws[e[t+11]]+Ws[e[t+12]]+Ws[e[t+13]]+Ws[e[t+14]]+Ws[e[t+15]]}(n)}const Qs=e=>e?.body instanceof ReadableStream,Gs=e=>void 0!==e.acquireInitialRetryToken&&void 0!==e.refreshRetryTokenForRetry&&void 0!==e.recordSuccess,Js=e=>{const t={error:e,errorType:Xs(e)},r=ea(e.$response);return r&&(t.retryAfterHint=r),t},Xs=e=>$s(e)?"THROTTLING":Us(e)?"TRANSIENT":(e=>{if(void 0!==e.$metadata?.httpStatusCode){const t=e.$metadata.httpStatusCode;return 500<=t&&t<=599&&!Us(e)}return!1})(e)?"SERVER_ERROR":"CLIENT_ERROR",Zs={name:"retryMiddleware",tags:["RETRY"],step:"finalizeRequest",priority:"high",override:!0},Ys=e=>({applyToStack:t=>{t.add((e=>(t,r)=>async n=>{let i=await e.retryStrategy();const o=await e.maxAttempts();if(!Gs(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=H.isInstance(d);for(l&&(d.headers["amz-sdk-invocation-id"]=Vs());;)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=Js(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&&Qs(d))throw(r.logger instanceof Hr?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),Zs)}}),ea=e=>{if(!W.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)},ta=null;class ra{constructor(e){this.sigv4Signer=new go(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=ta,"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 na="required",ia="type",oa="conditions",sa="fn",aa="argv",ca="ref",ua="assign",da="url",la="properties",ha="backend",fa="authSchemes",pa="disableDoubleEncoding",ga="signingName",ma="signingRegion",ya="headers",va="signingRegionSet",ba=!0,wa="isSet",ka="booleanEquals",Sa="error",Ea="aws.partition",xa="stringEquals",Aa="getAttr",Ta="name",Ca="substring",Ra="bucketSuffix",Oa="parseURL",Pa="{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}",_a="endpoint",Ia="tree",Ma="aws.isVirtualHostableS3Bucket",Na="{url#scheme}://{Bucket}.{url#authority}{url#path}",Fa="not",$a="{url#scheme}://{url#authority}{url#path}",Ua="hardwareType",La="regionPrefix",Ba="bucketAliasSuffix",Da="outpostId",za="isValidHostLabel",ja="sigv4a",qa="s3-outposts",Ha="s3",Wa="{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}",Ka="https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}",Va="https://{Bucket}.s3.{partitionResult#dnsSuffix}",Qa="aws.parseArn",Ga="bucketArn",Ja="arnType",Xa="s3-object-lambda",Za="accesspoint",Ya="accessPointName",ec="{url#scheme}://{accessPointName}-{bucketArn#accountId}.{url#authority}{url#path}",tc="mrapPartition",rc="outpostType",nc="arnPrefix",ic="{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}",oc="https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",sc="https://s3.{partitionResult#dnsSuffix}",ac={[na]:!1,[ia]:"String"},cc={[na]:!0,default:!1,[ia]:"Boolean"},uc={[na]:!1,[ia]:"Boolean"},dc={[sa]:ka,[aa]:[{[ca]:"Accelerate"},!0]},lc={[sa]:ka,[aa]:[{[ca]:"UseFIPS"},!0]},hc={[sa]:ka,[aa]:[{[ca]:"UseDualStack"},!0]},fc={[sa]:wa,[aa]:[{[ca]:"Endpoint"}]},pc={[sa]:Ea,[aa]:[{[ca]:"Region"}],[ua]:"partitionResult"},gc={[sa]:xa,[aa]:[{[sa]:Aa,[aa]:[{[ca]:"partitionResult"},Ta]},"aws-cn"]},mc={[sa]:wa,[aa]:[{[ca]:"Bucket"}]},yc={[ca]:"Bucket"},vc={[sa]:Oa,[aa]:[{[ca]:"Endpoint"}],[ua]:"url"},bc={[sa]:ka,[aa]:[{[sa]:Aa,[aa]:[{[ca]:"url"},"isIp"]},!0]},wc={[ca]:"url"},kc={[sa]:"uriEncode",[aa]:[yc],[ua]:"uri_encoded_bucket"},Sc={[ha]:"S3Express",[fa]:[{[pa]:!0,[Ta]:"sigv4",[ga]:"s3express",[ma]:"{Region}"}]},Ec={},xc={[sa]:Ma,[aa]:[yc,!1]},Ac={[Sa]:"S3Express bucket name is not a valid virtual hostable name.",[ia]:Sa},Tc={[ha]:"S3Express",[fa]:[{[pa]:!0,[Ta]:"sigv4-s3express",[ga]:"s3express",[ma]:"{Region}"}]},Cc={[sa]:wa,[aa]:[{[ca]:"UseS3ExpressControlEndpoint"}]},Rc={[sa]:ka,[aa]:[{[ca]:"UseS3ExpressControlEndpoint"},!0]},Oc={[sa]:Fa,[aa]:[fc]},Pc={[Sa]:"Unrecognized S3Express bucket name format.",[ia]:Sa},_c={[sa]:Fa,[aa]:[mc]},Ic={[ca]:Ua},Mc={[oa]:[Oc],[Sa]:"Expected a endpoint to be specified but no endpoint was found",[ia]:Sa},Nc={[fa]:[{[pa]:!0,[Ta]:ja,[ga]:qa,[va]:["*"]},{[pa]:!0,[Ta]:"sigv4",[ga]:qa,[ma]:"{Region}"}]},Fc={[sa]:ka,[aa]:[{[ca]:"ForcePathStyle"},!1]},$c={[ca]:"ForcePathStyle"},Uc={[sa]:ka,[aa]:[{[ca]:"Accelerate"},!1]},Lc={[sa]:xa,[aa]:[{[ca]:"Region"},"aws-global"]},Bc={[fa]:[{[pa]:!0,[Ta]:"sigv4",[ga]:Ha,[ma]:"us-east-1"}]},Dc={[sa]:Fa,[aa]:[Lc]},zc={[sa]:ka,[aa]:[{[ca]:"UseGlobalEndpoint"},!0]},jc={[da]:"https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",[la]:{[fa]:[{[pa]:!0,[Ta]:"sigv4",[ga]:Ha,[ma]:"{Region}"}]},[ya]:{}},qc={[fa]:[{[pa]:!0,[Ta]:"sigv4",[ga]:Ha,[ma]:"{Region}"}]},Hc={[sa]:ka,[aa]:[{[ca]:"UseGlobalEndpoint"},!1]},Wc={[sa]:ka,[aa]:[{[ca]:"UseDualStack"},!1]},Kc={[da]:"https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}",[la]:qc,[ya]:{}},Vc={[sa]:ka,[aa]:[{[ca]:"UseFIPS"},!1]},Qc={[da]:"https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}",[la]:qc,[ya]:{}},Gc={[da]:"https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}",[la]:qc,[ya]:{}},Jc={[sa]:ka,[aa]:[{[sa]:Aa,[aa]:[wc,"isIp"]},!1]},Xc={[da]:Wa,[la]:qc,[ya]:{}},Zc={[da]:Na,[la]:qc,[ya]:{}},Yc={[_a]:Zc,[ia]:_a},eu={[da]:Ka,[la]:qc,[ya]:{}},tu={[da]:"https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}",[la]:qc,[ya]:{}},ru={[Sa]:"Invalid region: region was not a valid DNS name.",[ia]:Sa},nu={[ca]:Ga},iu={[ca]:Ja},ou={[sa]:Aa,[aa]:[nu,"service"]},su={[ca]:Ya},au={[oa]:[hc],[Sa]:"S3 Object Lambda does not support Dual-stack",[ia]:Sa},cu={[oa]:[dc],[Sa]:"S3 Object Lambda does not support S3 Accelerate",[ia]:Sa},uu={[oa]:[{[sa]:wa,[aa]:[{[ca]:"DisableAccessPoints"}]},{[sa]:ka,[aa]:[{[ca]:"DisableAccessPoints"},!0]}],[Sa]:"Access points are not supported for this operation",[ia]:Sa},du={[oa]:[{[sa]:wa,[aa]:[{[ca]:"UseArnRegion"}]},{[sa]:ka,[aa]:[{[ca]:"UseArnRegion"},!1]},{[sa]:Fa,[aa]:[{[sa]:xa,[aa]:[{[sa]:Aa,[aa]:[nu,"region"]},"{Region}"]}]}],[Sa]:"Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`",[ia]:Sa},lu={[sa]:Aa,[aa]:[{[ca]:"bucketPartition"},Ta]},hu={[sa]:Aa,[aa]:[nu,"accountId"]},fu={[fa]:[{[pa]:!0,[Ta]:"sigv4",[ga]:Xa,[ma]:"{bucketArn#region}"}]},pu={[Sa]:"Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName}`",[ia]:Sa},gu={[Sa]:"Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`",[ia]:Sa},mu={[Sa]:"Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)",[ia]:Sa},yu={[Sa]:"Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`",[ia]:Sa},vu={[Sa]:"Invalid ARN: The ARN may only contain a single resource component after `accesspoint`.",[ia]:Sa},bu={[Sa]:"Invalid ARN: Expected a resource of the format `accesspoint:` but no name was provided",[ia]:Sa},wu={[fa]:[{[pa]:!0,[Ta]:"sigv4",[ga]:Ha,[ma]:"{bucketArn#region}"}]},ku={[fa]:[{[pa]:!0,[Ta]:ja,[ga]:qa,[va]:["*"]},{[pa]:!0,[Ta]:"sigv4",[ga]:qa,[ma]:"{bucketArn#region}"}]},Su={[sa]:Qa,[aa]:[yc]},Eu={[da]:"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[la]:qc,[ya]:{}},xu={[da]:"https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[la]:qc,[ya]:{}},Au={[da]:"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[la]:qc,[ya]:{}},Tu={[da]:ic,[la]:qc,[ya]:{}},Cu={[da]:"https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[la]:qc,[ya]:{}},Ru={[ca]:"UseObjectLambdaEndpoint"},Ou={[fa]:[{[pa]:!0,[Ta]:"sigv4",[ga]:Xa,[ma]:"{Region}"}]},Pu={[da]:"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",[la]:qc,[ya]:{}},_u={[da]:"https://s3-fips.{Region}.{partitionResult#dnsSuffix}",[la]:qc,[ya]:{}},Iu={[da]:"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}",[la]:qc,[ya]:{}},Mu={[da]:$a,[la]:qc,[ya]:{}},Nu={[da]:"https://s3.{Region}.{partitionResult#dnsSuffix}",[la]:qc,[ya]:{}},Fu=[{[ca]:"Region"}],$u=[{[ca]:"Endpoint"}],Uu=[yc],Lu=[hc],Bu=[dc],Du=[fc,vc],zu=[{[sa]:wa,[aa]:[{[ca]:"DisableS3ExpressSessionAuth"}]},{[sa]:ka,[aa]:[{[ca]:"DisableS3ExpressSessionAuth"},!0]}],ju=[bc],qu=[kc],Hu=[xc],Wu=[lc],Ku=[{[sa]:Ca,[aa]:[yc,6,14,!0],[ua]:"s3expressAvailabilityZoneId"},{[sa]:Ca,[aa]:[yc,14,16,!0],[ua]:"s3expressAvailabilityZoneDelim"},{[sa]:xa,[aa]:[{[ca]:"s3expressAvailabilityZoneDelim"},"--"]}],Vu=[{[oa]:[lc],[_a]:{[da]:"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[la]:Sc,[ya]:{}},[ia]:_a},{[_a]:{[da]:"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[la]:Sc,[ya]:{}},[ia]:_a}],Qu=[{[sa]:Ca,[aa]:[yc,6,15,!0],[ua]:"s3expressAvailabilityZoneId"},{[sa]:Ca,[aa]:[yc,15,17,!0],[ua]:"s3expressAvailabilityZoneDelim"},{[sa]:xa,[aa]:[{[ca]:"s3expressAvailabilityZoneDelim"},"--"]}],Gu=[{[oa]:[lc],[_a]:{[da]:"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[la]:Tc,[ya]:{}},[ia]:_a},{[_a]:{[da]:"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[la]:Tc,[ya]:{}},[ia]:_a}],Ju=[mc],Xu=[{[sa]:za,[aa]:[{[ca]:Da},!1]}],Zu=[{[sa]:xa,[aa]:[{[ca]:La},"beta"]}],Yu=[pc],ed=[{[sa]:za,[aa]:[{[ca]:"Region"},!1]}],td=[{[sa]:xa,[aa]:[{[ca]:"Region"},"us-east-1"]}],rd=[{[sa]:xa,[aa]:[iu,Za]}],nd=[{[sa]:Aa,[aa]:[nu,"resourceId[1]"],[ua]:Ya},{[sa]:Fa,[aa]:[{[sa]:xa,[aa]:[su,""]}]}],id=[nu,"resourceId[1]"],od=[{[sa]:Fa,[aa]:[{[sa]:xa,[aa]:[{[sa]:Aa,[aa]:[nu,"region"]},""]}]}],sd=[{[sa]:Fa,[aa]:[{[sa]:wa,[aa]:[{[sa]:Aa,[aa]:[nu,"resourceId[2]"]}]}]}],ad=[nu,"resourceId[2]"],cd=[{[sa]:Ea,[aa]:[{[sa]:Aa,[aa]:[nu,"region"]}],[ua]:"bucketPartition"}],ud=[{[sa]:xa,[aa]:[lu,{[sa]:Aa,[aa]:[{[ca]:"partitionResult"},Ta]}]}],dd=[{[sa]:za,[aa]:[{[sa]:Aa,[aa]:[nu,"region"]},!0]}],ld=[{[sa]:za,[aa]:[hu,!1]}],hd=[{[sa]:za,[aa]:[su,!1]}],fd=[{[sa]:za,[aa]:[{[ca]:"Region"},!0]}],pd={version:"1.0",parameters:{Bucket:ac,Region:ac,UseFIPS:cc,UseDualStack:cc,Endpoint:ac,ForcePathStyle:cc,Accelerate:cc,UseGlobalEndpoint:cc,UseObjectLambdaEndpoint:uc,Key:ac,Prefix:ac,CopySource:ac,DisableAccessPoints:uc,DisableMultiRegionAccessPoints:cc,UseArnRegion:uc,UseS3ExpressControlEndpoint:uc,DisableS3ExpressSessionAuth:uc},rules:[{[oa]:[{[sa]:wa,[aa]:Fu}],rules:[{[oa]:[dc,lc],error:"Accelerate cannot be used with FIPS",[ia]:Sa},{[oa]:[hc,fc],error:"Cannot set dual-stack in combination with a custom endpoint.",[ia]:Sa},{[oa]:[fc,lc],error:"A custom endpoint cannot be combined with FIPS",[ia]:Sa},{[oa]:[fc,dc],error:"A custom endpoint cannot be combined with S3 Accelerate",[ia]:Sa},{[oa]:[lc,pc,gc],error:"Partition does not support FIPS",[ia]:Sa},{[oa]:[mc,{[sa]:Ca,[aa]:[yc,0,6,ba],[ua]:Ra},{[sa]:xa,[aa]:[{[ca]:Ra},"--x-s3"]}],rules:[{[oa]:Lu,error:"S3Express does not support Dual-stack.",[ia]:Sa},{[oa]:Bu,error:"S3Express does not support S3 Accelerate.",[ia]:Sa},{[oa]:Du,rules:[{[oa]:zu,rules:[{[oa]:ju,rules:[{[oa]:qu,rules:[{endpoint:{[da]:Pa,[la]:Sc,[ya]:Ec},[ia]:_a}],[ia]:Ia}],[ia]:Ia},{[oa]:Hu,rules:[{endpoint:{[da]:Na,[la]:Sc,[ya]:Ec},[ia]:_a}],[ia]:Ia},Ac],[ia]:Ia},{[oa]:ju,rules:[{[oa]:qu,rules:[{endpoint:{[da]:Pa,[la]:Tc,[ya]:Ec},[ia]:_a}],[ia]:Ia}],[ia]:Ia},{[oa]:Hu,rules:[{endpoint:{[da]:Na,[la]:Tc,[ya]:Ec},[ia]:_a}],[ia]:Ia},Ac],[ia]:Ia},{[oa]:[Cc,Rc],rules:[{[oa]:[kc,Oc],rules:[{[oa]:Wu,endpoint:{[da]:"https://s3express-control-fips.{Region}.amazonaws.com/{uri_encoded_bucket}",[la]:Sc,[ya]:Ec},[ia]:_a},{endpoint:{[da]:"https://s3express-control.{Region}.amazonaws.com/{uri_encoded_bucket}",[la]:Sc,[ya]:Ec},[ia]:_a}],[ia]:Ia}],[ia]:Ia},{[oa]:Hu,rules:[{[oa]:zu,rules:[{[oa]:Ku,rules:Vu,[ia]:Ia},{[oa]:Qu,rules:Vu,[ia]:Ia},Pc],[ia]:Ia},{[oa]:Ku,rules:Gu,[ia]:Ia},{[oa]:Qu,rules:Gu,[ia]:Ia},Pc],[ia]:Ia},Ac],[ia]:Ia},{[oa]:[_c,Cc,Rc],rules:[{[oa]:Du,endpoint:{[da]:$a,[la]:Sc,[ya]:Ec},[ia]:_a},{[oa]:Wu,endpoint:{[da]:"https://s3express-control-fips.{Region}.amazonaws.com",[la]:Sc,[ya]:Ec},[ia]:_a},{endpoint:{[da]:"https://s3express-control.{Region}.amazonaws.com",[la]:Sc,[ya]:Ec},[ia]:_a}],[ia]:Ia},{[oa]:[mc,{[sa]:Ca,[aa]:[yc,49,50,ba],[ua]:Ua},{[sa]:Ca,[aa]:[yc,8,12,ba],[ua]:La},{[sa]:Ca,[aa]:[yc,0,7,ba],[ua]:Ba},{[sa]:Ca,[aa]:[yc,32,49,ba],[ua]:Da},{[sa]:Ea,[aa]:Fu,[ua]:"regionPartition"},{[sa]:xa,[aa]:[{[ca]:Ba},"--op-s3"]}],rules:[{[oa]:Xu,rules:[{[oa]:[{[sa]:xa,[aa]:[Ic,"e"]}],rules:[{[oa]:Zu,rules:[Mc,{[oa]:Du,endpoint:{[da]:"https://{Bucket}.ec2.{url#authority}",[la]:Nc,[ya]:Ec},[ia]:_a}],[ia]:Ia},{endpoint:{[da]:"https://{Bucket}.ec2.s3-outposts.{Region}.{regionPartition#dnsSuffix}",[la]:Nc,[ya]:Ec},[ia]:_a}],[ia]:Ia},{[oa]:[{[sa]:xa,[aa]:[Ic,"o"]}],rules:[{[oa]:Zu,rules:[Mc,{[oa]:Du,endpoint:{[da]:"https://{Bucket}.op-{outpostId}.{url#authority}",[la]:Nc,[ya]:Ec},[ia]:_a}],[ia]:Ia},{endpoint:{[da]:"https://{Bucket}.op-{outpostId}.s3-outposts.{Region}.{regionPartition#dnsSuffix}",[la]:Nc,[ya]:Ec},[ia]:_a}],[ia]:Ia},{error:'Unrecognized hardware type: "Expected hardware type o or e but got {hardwareType}"',[ia]:Sa}],[ia]:Ia},{error:"Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`.",[ia]:Sa}],[ia]:Ia},{[oa]:Ju,rules:[{[oa]:[fc,{[sa]:Fa,[aa]:[{[sa]:wa,[aa]:[{[sa]:Oa,[aa]:$u}]}]}],error:"Custom endpoint `{Endpoint}` was not a valid URI",[ia]:Sa},{[oa]:[Fc,xc],rules:[{[oa]:Yu,rules:[{[oa]:ed,rules:[{[oa]:[dc,gc],error:"S3 Accelerate cannot be used in this region",[ia]:Sa},{[oa]:[hc,lc,Uc,Oc,Lc],endpoint:{[da]:"https://{Bucket}.s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[hc,lc,Uc,Oc,Dc,zc],rules:[{endpoint:jc,[ia]:_a}],[ia]:Ia},{[oa]:[hc,lc,Uc,Oc,Dc,Hc],endpoint:jc,[ia]:_a},{[oa]:[Wc,lc,Uc,Oc,Lc],endpoint:{[da]:"https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}",[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[Wc,lc,Uc,Oc,Dc,zc],rules:[{endpoint:Kc,[ia]:_a}],[ia]:Ia},{[oa]:[Wc,lc,Uc,Oc,Dc,Hc],endpoint:Kc,[ia]:_a},{[oa]:[hc,Vc,dc,Oc,Lc],endpoint:{[da]:"https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}",[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[hc,Vc,dc,Oc,Dc,zc],rules:[{endpoint:Qc,[ia]:_a}],[ia]:Ia},{[oa]:[hc,Vc,dc,Oc,Dc,Hc],endpoint:Qc,[ia]:_a},{[oa]:[hc,Vc,Uc,Oc,Lc],endpoint:{[da]:"https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[hc,Vc,Uc,Oc,Dc,zc],rules:[{endpoint:Gc,[ia]:_a}],[ia]:Ia},{[oa]:[hc,Vc,Uc,Oc,Dc,Hc],endpoint:Gc,[ia]:_a},{[oa]:[Wc,Vc,Uc,fc,vc,bc,Lc],endpoint:{[da]:Wa,[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[Wc,Vc,Uc,fc,vc,Jc,Lc],endpoint:{[da]:Na,[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[Wc,Vc,Uc,fc,vc,bc,Dc,zc],rules:[{[oa]:td,endpoint:Xc,[ia]:_a},{endpoint:Xc,[ia]:_a}],[ia]:Ia},{[oa]:[Wc,Vc,Uc,fc,vc,Jc,Dc,zc],rules:[{[oa]:td,endpoint:Zc,[ia]:_a},Yc],[ia]:Ia},{[oa]:[Wc,Vc,Uc,fc,vc,bc,Dc,Hc],endpoint:Xc,[ia]:_a},{[oa]:[Wc,Vc,Uc,fc,vc,Jc,Dc,Hc],endpoint:Zc,[ia]:_a},{[oa]:[Wc,Vc,dc,Oc,Lc],endpoint:{[da]:Ka,[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[Wc,Vc,dc,Oc,Dc,zc],rules:[{[oa]:td,endpoint:eu,[ia]:_a},{endpoint:eu,[ia]:_a}],[ia]:Ia},{[oa]:[Wc,Vc,dc,Oc,Dc,Hc],endpoint:eu,[ia]:_a},{[oa]:[Wc,Vc,Uc,Oc,Lc],endpoint:{[da]:Va,[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[Wc,Vc,Uc,Oc,Dc,zc],rules:[{[oa]:td,endpoint:{[da]:Va,[la]:qc,[ya]:Ec},[ia]:_a},{endpoint:tu,[ia]:_a}],[ia]:Ia},{[oa]:[Wc,Vc,Uc,Oc,Dc,Hc],endpoint:tu,[ia]:_a}],[ia]:Ia},ru],[ia]:Ia}],[ia]:Ia},{[oa]:[fc,vc,{[sa]:xa,[aa]:[{[sa]:Aa,[aa]:[wc,"scheme"]},"http"]},{[sa]:Ma,[aa]:[yc,ba]},Fc,Vc,Wc,Uc],rules:[{[oa]:Yu,rules:[{[oa]:ed,rules:[Yc],[ia]:Ia},ru],[ia]:Ia}],[ia]:Ia},{[oa]:[Fc,{[sa]:Qa,[aa]:Uu,[ua]:Ga}],rules:[{[oa]:[{[sa]:Aa,[aa]:[nu,"resourceId[0]"],[ua]:Ja},{[sa]:Fa,[aa]:[{[sa]:xa,[aa]:[iu,""]}]}],rules:[{[oa]:[{[sa]:xa,[aa]:[ou,Xa]}],rules:[{[oa]:rd,rules:[{[oa]:nd,rules:[au,cu,{[oa]:od,rules:[uu,{[oa]:sd,rules:[du,{[oa]:cd,rules:[{[oa]:Yu,rules:[{[oa]:ud,rules:[{[oa]:dd,rules:[{[oa]:[{[sa]:xa,[aa]:[hu,""]}],error:"Invalid ARN: Missing account id",[ia]:Sa},{[oa]:ld,rules:[{[oa]:hd,rules:[{[oa]:Du,endpoint:{[da]:ec,[la]:fu,[ya]:Ec},[ia]:_a},{[oa]:Wu,endpoint:{[da]:"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",[la]:fu,[ya]:Ec},[ia]:_a},{endpoint:{[da]:"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda.{bucketArn#region}.{bucketPartition#dnsSuffix}",[la]:fu,[ya]:Ec},[ia]:_a}],[ia]:Ia},pu],[ia]:Ia},gu],[ia]:Ia},mu],[ia]:Ia},yu],[ia]:Ia}],[ia]:Ia}],[ia]:Ia},vu],[ia]:Ia},{error:"Invalid ARN: bucket ARN is missing a region",[ia]:Sa}],[ia]:Ia},bu],[ia]:Ia},{error:"Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `{arnType}`",[ia]:Sa}],[ia]:Ia},{[oa]:rd,rules:[{[oa]:nd,rules:[{[oa]:od,rules:[{[oa]:rd,rules:[{[oa]:od,rules:[uu,{[oa]:sd,rules:[du,{[oa]:cd,rules:[{[oa]:Yu,rules:[{[oa]:[{[sa]:xa,[aa]:[lu,"{partitionResult#name}"]}],rules:[{[oa]:dd,rules:[{[oa]:[{[sa]:xa,[aa]:[ou,Ha]}],rules:[{[oa]:ld,rules:[{[oa]:hd,rules:[{[oa]:Bu,error:"Access Points do not support S3 Accelerate",[ia]:Sa},{[oa]:[lc,hc],endpoint:{[da]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",[la]:wu,[ya]:Ec},[ia]:_a},{[oa]:[lc,Wc],endpoint:{[da]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",[la]:wu,[ya]:Ec},[ia]:_a},{[oa]:[Vc,hc],endpoint:{[da]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",[la]:wu,[ya]:Ec},[ia]:_a},{[oa]:[Vc,Wc,fc,vc],endpoint:{[da]:ec,[la]:wu,[ya]:Ec},[ia]:_a},{[oa]:[Vc,Wc],endpoint:{[da]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.{bucketArn#region}.{bucketPartition#dnsSuffix}",[la]:wu,[ya]:Ec},[ia]:_a}],[ia]:Ia},pu],[ia]:Ia},gu],[ia]:Ia},{error:"Invalid ARN: The ARN was not for the S3 service, found: {bucketArn#service}",[ia]:Sa}],[ia]:Ia},mu],[ia]:Ia},yu],[ia]:Ia}],[ia]:Ia}],[ia]:Ia},vu],[ia]:Ia}],[ia]:Ia}],[ia]:Ia},{[oa]:[{[sa]:za,[aa]:[su,ba]}],rules:[{[oa]:Lu,error:"S3 MRAP does not support dual-stack",[ia]:Sa},{[oa]:Wu,error:"S3 MRAP does not support FIPS",[ia]:Sa},{[oa]:Bu,error:"S3 MRAP does not support S3 Accelerate",[ia]:Sa},{[oa]:[{[sa]:ka,[aa]:[{[ca]:"DisableMultiRegionAccessPoints"},ba]}],error:"Invalid configuration: Multi-Region Access Point ARNs are disabled.",[ia]:Sa},{[oa]:[{[sa]:Ea,[aa]:Fu,[ua]:tc}],rules:[{[oa]:[{[sa]:xa,[aa]:[{[sa]:Aa,[aa]:[{[ca]:tc},Ta]},{[sa]:Aa,[aa]:[nu,"partition"]}]}],rules:[{endpoint:{[da]:"https://{accessPointName}.accesspoint.s3-global.{mrapPartition#dnsSuffix}",[la]:{[fa]:[{[pa]:ba,name:ja,[ga]:Ha,[va]:["*"]}]},[ya]:Ec},[ia]:_a}],[ia]:Ia},{error:"Client was configured for partition `{mrapPartition#name}` but bucket referred to partition `{bucketArn#partition}`",[ia]:Sa}],[ia]:Ia}],[ia]:Ia},{error:"Invalid Access Point Name",[ia]:Sa}],[ia]:Ia},bu],[ia]:Ia},{[oa]:[{[sa]:xa,[aa]:[ou,qa]}],rules:[{[oa]:Lu,error:"S3 Outposts does not support Dual-stack",[ia]:Sa},{[oa]:Wu,error:"S3 Outposts does not support FIPS",[ia]:Sa},{[oa]:Bu,error:"S3 Outposts does not support S3 Accelerate",[ia]:Sa},{[oa]:[{[sa]:wa,[aa]:[{[sa]:Aa,[aa]:[nu,"resourceId[4]"]}]}],error:"Invalid Arn: Outpost Access Point ARN contains sub resources",[ia]:Sa},{[oa]:[{[sa]:Aa,[aa]:id,[ua]:Da}],rules:[{[oa]:Xu,rules:[du,{[oa]:cd,rules:[{[oa]:Yu,rules:[{[oa]:ud,rules:[{[oa]:dd,rules:[{[oa]:ld,rules:[{[oa]:[{[sa]:Aa,[aa]:ad,[ua]:rc}],rules:[{[oa]:[{[sa]:Aa,[aa]:[nu,"resourceId[3]"],[ua]:Ya}],rules:[{[oa]:[{[sa]:xa,[aa]:[{[ca]:rc},Za]}],rules:[{[oa]:Du,endpoint:{[da]:"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.{url#authority}",[la]:ku,[ya]:Ec},[ia]:_a},{endpoint:{[da]:"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.s3-outposts.{bucketArn#region}.{bucketPartition#dnsSuffix}",[la]:ku,[ya]:Ec},[ia]:_a}],[ia]:Ia},{error:"Expected an outpost type `accesspoint`, found {outpostType}",[ia]:Sa}],[ia]:Ia},{error:"Invalid ARN: expected an access point name",[ia]:Sa}],[ia]:Ia},{error:"Invalid ARN: Expected a 4-component resource",[ia]:Sa}],[ia]:Ia},gu],[ia]:Ia},mu],[ia]:Ia},yu],[ia]:Ia}],[ia]:Ia}],[ia]:Ia},{error:"Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `{outpostId}`",[ia]:Sa}],[ia]:Ia},{error:"Invalid ARN: The Outpost Id was not set",[ia]:Sa}],[ia]:Ia},{error:"Invalid ARN: Unrecognized format: {Bucket} (type: {arnType})",[ia]:Sa}],[ia]:Ia},{error:"Invalid ARN: No ARN type specified",[ia]:Sa}],[ia]:Ia},{[oa]:[{[sa]:Ca,[aa]:[yc,0,4,!1],[ua]:nc},{[sa]:xa,[aa]:[{[ca]:nc},"arn:"]},{[sa]:Fa,[aa]:[{[sa]:wa,[aa]:[Su]}]}],error:"Invalid ARN: `{Bucket}` was not a valid ARN",[ia]:Sa},{[oa]:[{[sa]:ka,[aa]:[$c,ba]},Su],error:"Path-style addressing cannot be used with ARN buckets",[ia]:Sa},{[oa]:qu,rules:[{[oa]:Yu,rules:[{[oa]:[Uc],rules:[{[oa]:[hc,Oc,lc,Lc],endpoint:{[da]:"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[hc,Oc,lc,Dc,zc],rules:[{endpoint:Eu,[ia]:_a}],[ia]:Ia},{[oa]:[hc,Oc,lc,Dc,Hc],endpoint:Eu,[ia]:_a},{[oa]:[Wc,Oc,lc,Lc],endpoint:{[da]:"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[Wc,Oc,lc,Dc,zc],rules:[{endpoint:xu,[ia]:_a}],[ia]:Ia},{[oa]:[Wc,Oc,lc,Dc,Hc],endpoint:xu,[ia]:_a},{[oa]:[hc,Oc,Vc,Lc],endpoint:{[da]:"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[hc,Oc,Vc,Dc,zc],rules:[{endpoint:Au,[ia]:_a}],[ia]:Ia},{[oa]:[hc,Oc,Vc,Dc,Hc],endpoint:Au,[ia]:_a},{[oa]:[Wc,fc,vc,Vc,Lc],endpoint:{[da]:ic,[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[Wc,fc,vc,Vc,Dc,zc],rules:[{[oa]:td,endpoint:Tu,[ia]:_a},{endpoint:Tu,[ia]:_a}],[ia]:Ia},{[oa]:[Wc,fc,vc,Vc,Dc,Hc],endpoint:Tu,[ia]:_a},{[oa]:[Wc,Oc,Vc,Lc],endpoint:{[da]:oc,[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[Wc,Oc,Vc,Dc,zc],rules:[{[oa]:td,endpoint:{[da]:oc,[la]:qc,[ya]:Ec},[ia]:_a},{endpoint:Cu,[ia]:_a}],[ia]:Ia},{[oa]:[Wc,Oc,Vc,Dc,Hc],endpoint:Cu,[ia]:_a}],[ia]:Ia},{error:"Path-style addressing cannot be used with S3 Accelerate",[ia]:Sa}],[ia]:Ia}],[ia]:Ia}],[ia]:Ia},{[oa]:[{[sa]:wa,[aa]:[Ru]},{[sa]:ka,[aa]:[Ru,ba]}],rules:[{[oa]:Yu,rules:[{[oa]:fd,rules:[au,cu,{[oa]:Du,endpoint:{[da]:$a,[la]:Ou,[ya]:Ec},[ia]:_a},{[oa]:Wu,endpoint:{[da]:"https://s3-object-lambda-fips.{Region}.{partitionResult#dnsSuffix}",[la]:Ou,[ya]:Ec},[ia]:_a},{endpoint:{[da]:"https://s3-object-lambda.{Region}.{partitionResult#dnsSuffix}",[la]:Ou,[ya]:Ec},[ia]:_a}],[ia]:Ia},ru],[ia]:Ia}],[ia]:Ia},{[oa]:[_c],rules:[{[oa]:Yu,rules:[{[oa]:fd,rules:[{[oa]:[lc,hc,Oc,Lc],endpoint:{[da]:"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[lc,hc,Oc,Dc,zc],rules:[{endpoint:Pu,[ia]:_a}],[ia]:Ia},{[oa]:[lc,hc,Oc,Dc,Hc],endpoint:Pu,[ia]:_a},{[oa]:[lc,Wc,Oc,Lc],endpoint:{[da]:"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}",[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[lc,Wc,Oc,Dc,zc],rules:[{endpoint:_u,[ia]:_a}],[ia]:Ia},{[oa]:[lc,Wc,Oc,Dc,Hc],endpoint:_u,[ia]:_a},{[oa]:[Vc,hc,Oc,Lc],endpoint:{[da]:"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[Vc,hc,Oc,Dc,zc],rules:[{endpoint:Iu,[ia]:_a}],[ia]:Ia},{[oa]:[Vc,hc,Oc,Dc,Hc],endpoint:Iu,[ia]:_a},{[oa]:[Vc,Wc,fc,vc,Lc],endpoint:{[da]:$a,[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[Vc,Wc,fc,vc,Dc,zc],rules:[{[oa]:td,endpoint:Mu,[ia]:_a},{endpoint:Mu,[ia]:_a}],[ia]:Ia},{[oa]:[Vc,Wc,fc,vc,Dc,Hc],endpoint:Mu,[ia]:_a},{[oa]:[Vc,Wc,Oc,Lc],endpoint:{[da]:sc,[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[Vc,Wc,Oc,Dc,zc],rules:[{[oa]:td,endpoint:{[da]:sc,[la]:qc,[ya]:Ec},[ia]:_a},{endpoint:Nu,[ia]:_a}],[ia]:Ia},{[oa]:[Vc,Wc,Oc,Dc,Hc],endpoint:Nu,[ia]:_a}],[ia]:Ia},ru],[ia]:Ia}],[ia]:Ia}],[ia]:Ia},{error:"A region must be set when sending requests to S3.",[ia]:Sa}]},gd=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"]}),md=(e,t={})=>gd.get(e,(()=>((e,t)=>{const{endpointParams:r,logger:n}=t,{parameters:i,rules:o}=e;t.logger?.debug?.(`${$o} Initial EndpointParams: ${Uo(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 Lo(`Missing required parameter: '${e}'`);const c=es(o,{endpointParams:r,logger:n,referenceRecord:{}});return t.logger?.debug?.(`${$o} Resolved endpoint: ${Uo(c)}`),c})(pd,{endpointParams:e,logger:t.logger})));Fo.aws=ns;const yd=(vd=async(e,t,r)=>({operation:de(t).operation,region:await le(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 vd(e,t,r),i=de(t)?.commandInstance?.constructor?.getEndpointParameterInstructions;if(!i)throw new Error(`getEndpointParameterInstructions() is not defined on \`${t.commandName}\``);const o=await Ts(r,{getEndpointParameterInstructions:i},e);return Object.assign(n,o)});var vd;function bd(e){return{schemeId:"aws.auth#sigv4",signingProperties:{name:"s3",region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}function wd(e){return{schemeId:"aws.auth#sigv4a",signingProperties:{name:"s3",region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}const kd=((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})(md,(e=>{const t=[];return e.operation,t.push(bd(e)),t.push(wd(e)),t}),{"aws.auth#sigv4":bd,"aws.auth#sigv4a":wd}),Sd=e=>{const t=(e=>(e.sigv4aSigningRegionSet=ke(e.sigv4aSigningRegionSet),e))(Ft(e));return{...t}},Ed={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 xd extends Pr{constructor(e){super(e),Object.setPrototypeOf(this,xd.prototype)}}class Ad extends xd{constructor(e){super({name:"NoSuchUpload",$fault:"client",...e}),this.name="NoSuchUpload",this.$fault="client",Object.setPrototypeOf(this,Ad.prototype)}}class Td extends xd{constructor(e){super({name:"ObjectNotInActiveTierError",$fault:"client",...e}),this.name="ObjectNotInActiveTierError",this.$fault="client",Object.setPrototypeOf(this,Td.prototype)}}class Cd extends xd{constructor(e){super({name:"BucketAlreadyExists",$fault:"client",...e}),this.name="BucketAlreadyExists",this.$fault="client",Object.setPrototypeOf(this,Cd.prototype)}}class Rd extends xd{constructor(e){super({name:"BucketAlreadyOwnedByYou",$fault:"client",...e}),this.name="BucketAlreadyOwnedByYou",this.$fault="client",Object.setPrototypeOf(this,Rd.prototype)}}class Od extends xd{constructor(e){super({name:"NoSuchBucket",$fault:"client",...e}),this.name="NoSuchBucket",this.$fault="client",Object.setPrototypeOf(this,Od.prototype)}}var Pd,_d;!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])}(_d||(_d={}));class Id extends xd{constructor(e){super({name:"InvalidObjectState",$fault:"client",...e}),this.name="InvalidObjectState",this.$fault="client",Object.setPrototypeOf(this,Id.prototype),this.StorageClass=e.StorageClass,this.AccessTier=e.AccessTier}}class Md extends xd{constructor(e){super({name:"NoSuchKey",$fault:"client",...e}),this.name="NoSuchKey",this.$fault="client",Object.setPrototypeOf(this,Md.prototype)}}class Nd extends xd{constructor(e){super({name:"NotFound",$fault:"client",...e}),this.name="NotFound",this.$fault="client",Object.setPrototypeOf(this,Nd.prototype)}}const Fd=e=>({...e,...e.SecretAccessKey&&{SecretAccessKey:Ht},...e.SessionToken&&{SessionToken:Ht}}),$d=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Ht},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Ht},...e.Credentials&&{Credentials:Fd(e.Credentials)}}),Ud=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Ht},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Ht}}),Ld=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Ht}}),Bd=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:Ht}});class Dd extends xd{constructor(e){super({name:"EncryptionTypeMismatch",$fault:"client",...e}),this.name="EncryptionTypeMismatch",this.$fault="client",Object.setPrototypeOf(this,Dd.prototype)}}class zd extends xd{constructor(e){super({name:"InvalidRequest",$fault:"client",...e}),this.name="InvalidRequest",this.$fault="client",Object.setPrototypeOf(this,zd.prototype)}}class jd extends xd{constructor(e){super({name:"InvalidWriteOffset",$fault:"client",...e}),this.name="InvalidWriteOffset",this.$fault="client",Object.setPrototypeOf(this,jd.prototype)}}class qd extends xd{constructor(e){super({name:"TooManyParts",$fault:"client",...e}),this.name="TooManyParts",this.$fault="client",Object.setPrototypeOf(this,qd.prototype)}}class Hd extends xd{constructor(e){super({name:"ObjectAlreadyInActiveTierError",$fault:"client",...e}),this.name="ObjectAlreadyInActiveTierError",this.$fault="client",Object.setPrototypeOf(this,Hd.prototype)}}var Wd;!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])}(Wd||(Wd={}));const Kd=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Ht},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Ht}}),Vd=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:Ht},...e.SSEKMSKeyId&&{SSEKMSKeyId:Ht},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Ht}}),Qd=async(e,t)=>{const r=Xe(e,t),n=Wr({},jr,{[tp]:e[Zh],[Ap]:e[Yh],[Tp]:e[of],[Rp]:e[nf],[Cp]:[()=>jr(e[Il]),()=>e[Il].toString()]});r.bp("/"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1);const i=Wr({[Wf]:[,""]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Gd=async(e,t)=>{const r=Xe(e,t),n=Wr({},jr,{[lp]:e[Eh],[kp]:e[Wh],[Gf]:[()=>jr(e[_l]),()=>e[_l].toString()],[ip]:e[th],[Of]:e[hh],[up]:[()=>jr(e[fh]),()=>hr(e[fh]).toString()],[dp]:[()=>jr(e[ph]),()=>e[ph].toString()]});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=Wr({[Up]:[,"DeleteObject"],[Vf]:[,e[df]]});return r.m("DELETE").h(n).q(i).b(undefined),r.build()},Jd=async(e,t)=>{const r=Xe(e,t),n=Wr({},jr,{[Of]:e[hh],[Pf]:[()=>jr(e[gh]),()=>hr(e[gh]).toString()],[_f]:e[mh],[If]:[()=>jr(e[bh]),()=>hr(e[bh]).toString()],[Lf]:e[$h],[Op]:e[ef],[Pp]:e[tf],[_p]:e[rf],[kp]:e[Wh],[ip]:e[th],[Zf]:e[jl]});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=Wr({[Up]:[,"GetObject"],[Bf]:[,e[Lh]],[Df]:[,e[Bh]],[zf]:[,e[Dh]],[jf]:[,e[zh]],[qf]:[,e[jh]],[Hf]:[()=>void 0!==e.ResponseExpires,()=>hr(e[qh]).toString()],[Vf]:[,e[df]],[$f]:[()=>void 0!==e.PartNumber,()=>e[Fh].toString()]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Xd=async(e,t)=>{const r=Xe(e,t),n=Wr({},jr,{[kp]:e[Wh],[ip]:e[th],[yp]:[()=>jr(e[Ih]),()=>(e[Ih]||[]).map(Jr).join(", ")]});r.bp("/"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1);const i=Wr({[Nf]:[,"2"],[Ef]:[,e[Xl]],[Af]:[,e[nh]],[Ff]:[()=>void 0!==e.MaxKeys,()=>e[xh].toString()],[Uf]:[,e[Mh]],[Sf]:[,e[Gl]],[Rf]:[()=>void 0!==e.FetchOwner,()=>e[sh].toString()],[Kf]:[,e[Gh]]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Zd=async(e,t)=>{const r=Xe(e,t),n=Wr({},jr,{[kf]:e[Ql]||"application/octet-stream",[Qf]:e[Cl],[pf]:e[Fl],[gf]:e[Ll],[mf]:e[Bl],[yf]:e[Dl],[vf]:[()=>jr(e[zl]),()=>e[zl].toString()],[bf]:e[ql],[xp]:e[Nl],[Jf]:e[$l],[Xf]:e[Ul],[Yf]:e[Kl],[ep]:e[Vl],[xf]:[()=>jr(e[eh]),()=>hr(e[eh]).toString()],[Of]:e[hh],[_f]:e[mh],[op]:e[ah],[sp]:e[ch],[ap]:e[uh],[cp]:e[dh],[Fp]:[()=>jr(e[lf]),()=>e[lf].toString()],[Ap]:e[Yh],[Ep]:e[Xh],[$p]:e[hf],[Op]:e[ef],[Pp]:e[tf],[_p]:e[rf],[Tp]:e[of],[Rp]:e[nf],[Cp]:[()=>jr(e[Il]),()=>e[Il].toString()],[kp]:e[Wh],[Ip]:e[cf],[gp]:e[Ph],[mp]:[()=>jr(e[_h]),()=>{return(t=e[_h],t.toISOString().replace(".000Z","Z")).toString();var t}],[pp]:e[Oh],[ip]:e[th],...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=Wr({[Up]:[,"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()},Yd=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return il(e,t);const r=Wr({$metadata:Tl(e),[Yh]:[,e.headers[Ap]],[of]:[,e.headers[Tp]],[nf]:[,e.headers[Rp]],[Il]:[()=>void 0!==e.headers[Cp],()=>Wt(e.headers[Cp])]}),n=er(tr(await vi(e.body,t)),"body");return null!=n[Ml]&&(r[Ml]=Al(n[Ml])),r},el=async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return il(e,t);const r=Wr({$metadata:Tl(e),[Zl]:[()=>void 0!==e.headers[rp],()=>Wt(e.headers[rp])],[df]:[,e.headers[Np]],[Uh]:[,e.headers[wp]]});return await Ge(e.body,t),r},tl=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return il(e,t);const r=Wr({$metadata:Tl(e),[Zl]:[()=>void 0!==e.headers[rp],()=>Wt(e.headers[rp])],[Ol]:[,e.headers[ff]],[oh]:[,e.headers[np]],[Qh]:[,e.headers[bp]],[Sh]:[()=>void 0!==e.headers[Mf],()=>er(vr(e.headers[Mf]))],[zl]:[()=>void 0!==e.headers[vf],()=>or(e.headers[vf])],[ih]:[,e.headers[Tf]],[$l]:[,e.headers[Jf]],[Ul]:[,e.headers[Xf]],[Kl]:[,e.headers[Yf]],[Vl]:[,e.headers[ep]],[Ah]:[()=>void 0!==e.headers[hp],()=>sr(e.headers[hp])],[df]:[,e.headers[Np]],[Fl]:[,e.headers[pf]],[Ll]:[,e.headers[gf]],[Bl]:[,e.headers[mf]],[Dl]:[,e.headers[yf]],[Wl]:[,e.headers[wf]],[Ql]:[,e.headers[kf]],[eh]:[()=>void 0!==e.headers[xf],()=>er(vr(e.headers[xf]))],[rh]:[,e.headers[Cf]],[hf]:[,e.headers[$p]],[Yh]:[,e.headers[Ap]],[ef]:[,e.headers[Op]],[rf]:[,e.headers[_p]],[of]:[,e.headers[Tp]],[Il]:[()=>void 0!==e.headers[Cp],()=>Wt(e.headers[Cp])],[Xh]:[,e.headers[Ep]],[Uh]:[,e.headers[wp]],[Kh]:[,e.headers[Sp]],[Nh]:[()=>void 0!==e.headers[fp],()=>sr(e.headers[fp])],[uf]:[()=>void 0!==e.headers[Mp],()=>sr(e.headers[Mp])],[Ph]:[,e.headers[gp]],[_h]:[()=>void 0!==e.headers[mp],()=>er(pr(e.headers[mp]))],[Oh]:[,e.headers[pp]],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},rl=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return il(e,t);const r=Wr({$metadata:Tl(e),[Uh]:[,e.headers[wp]]}),n=er(tr(await vi(e.body,t)),"body");return""===n.CommonPrefixes?r[Hl]=[]:null!=n[Hl]&&(r[Hl]=wl(Dr(n[Hl]))),""===n.Contents?r[Jl]=[]:null!=n[Jl]&&(r[Jl]=Sl(Dr(n[Jl]))),null!=n[Gl]&&(r[Gl]=rr(n[Gl])),null!=n[Xl]&&(r[Xl]=rr(n[Xl])),null!=n[nh]&&(r[nh]=rr(n[nh])),null!=n[vh]&&(r[vh]=Wt(n[vh])),null!=n[kh]&&(r[kh]=sr(n[kh])),null!=n[xh]&&(r[xh]=sr(n[xh])),null!=n[Th]&&(r[Th]=rr(n[Th])),null!=n[Ch]&&(r[Ch]=rr(n[Ch])),null!=n[Mh]&&(r[Mh]=rr(n[Mh])),null!=n[Gh]&&(r[Gh]=rr(n[Gh])),r},nl=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return il(e,t);const r=Wr({$metadata:Tl(e),[oh]:[,e.headers[np]],[ih]:[,e.headers[Tf]],[$l]:[,e.headers[Jf]],[Ul]:[,e.headers[Xf]],[Kl]:[,e.headers[Yf]],[Vl]:[,e.headers[ep]],[Yh]:[,e.headers[Ap]],[df]:[,e.headers[Np]],[ef]:[,e.headers[Op]],[rf]:[,e.headers[_p]],[of]:[,e.headers[Tp]],[nf]:[,e.headers[Rp]],[Il]:[()=>void 0!==e.headers[Cp],()=>Wt(e.headers[Cp])],[af]:[()=>void 0!==e.headers[vp],()=>or(e.headers[vp])],[Uh]:[,e.headers[wp]]});return await Ge(e.body,t),r},il=async(e,t)=>{const r={...e,body:await bi(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 gl(r,t);case"ObjectNotInActiveTierError":case"com.amazonaws.s3#ObjectNotInActiveTierError":throw await vl(r,t);case"BucketAlreadyExists":case"com.amazonaws.s3#BucketAlreadyExists":throw await al(r,t);case"BucketAlreadyOwnedByYou":case"com.amazonaws.s3#BucketAlreadyOwnedByYou":throw await cl(r,t);case"NoSuchBucket":case"com.amazonaws.s3#NoSuchBucket":throw await fl(r,t);case"InvalidObjectState":case"com.amazonaws.s3#InvalidObjectState":throw await dl(r,t);case"NoSuchKey":case"com.amazonaws.s3#NoSuchKey":throw await pl(r,t);case"NotFound":case"com.amazonaws.s3#NotFound":throw await ml(r,t);case"EncryptionTypeMismatch":case"com.amazonaws.s3#EncryptionTypeMismatch":throw await ul(r,t);case"InvalidRequest":case"com.amazonaws.s3#InvalidRequest":throw await ll(r,t);case"InvalidWriteOffset":case"com.amazonaws.s3#InvalidWriteOffset":throw await hl(r,t);case"TooManyParts":case"com.amazonaws.s3#TooManyParts":throw await bl(r,t);case"ObjectAlreadyInActiveTierError":case"com.amazonaws.s3#ObjectAlreadyInActiveTierError":throw await yl(r,t);default:const i=r.body;return ol({output:e,parsedBody:i,errorCode:n})}},ol=(sl=xd,({output:e,parsedBody:t,errorCode:r})=>{(({output:e,parsedBody:t,exceptionCtor:r,errorCode:n})=>{const i=Ir(e),o=i.httpStatusCode?i.httpStatusCode+"":void 0,s=new r({name:t?.code||t?.Code||n||o||"UnknownError",$fault:"client",$metadata:i});throw _r(s,t)})({output:e,parsedBody:t,exceptionCtor:sl,errorCode:r})});var sl;const al=async(e,t)=>{const r=Wr({});e.body;const n=new Cd({$metadata:Tl(e),...r});return _r(n,e.body)},cl=async(e,t)=>{const r=Wr({});e.body;const n=new Rd({$metadata:Tl(e),...r});return _r(n,e.body)},ul=async(e,t)=>{const r=Wr({});e.body;const n=new Dd({$metadata:Tl(e),...r});return _r(n,e.body)},dl=async(e,t)=>{const r=Wr({}),n=e.body;null!=n[Pl]&&(r[Pl]=rr(n[Pl])),null!=n[Xh]&&(r[Xh]=rr(n[Xh]));const i=new Id({$metadata:Tl(e),...r});return _r(i,e.body)},ll=async(e,t)=>{const r=Wr({});e.body;const n=new zd({$metadata:Tl(e),...r});return _r(n,e.body)},hl=async(e,t)=>{const r=Wr({});e.body;const n=new jd({$metadata:Tl(e),...r});return _r(n,e.body)},fl=async(e,t)=>{const r=Wr({});e.body;const n=new Od({$metadata:Tl(e),...r});return _r(n,e.body)},pl=async(e,t)=>{const r=Wr({});e.body;const n=new Md({$metadata:Tl(e),...r});return _r(n,e.body)},gl=async(e,t)=>{const r=Wr({});e.body;const n=new Ad({$metadata:Tl(e),...r});return _r(n,e.body)},ml=async(e,t)=>{const r=Wr({});e.body;const n=new Nd({$metadata:Tl(e),...r});return _r(n,e.body)},yl=async(e,t)=>{const r=Wr({});e.body;const n=new Hd({$metadata:Tl(e),...r});return _r(n,e.body)},vl=async(e,t)=>{const r=Wr({});e.body;const n=new Td({$metadata:Tl(e),...r});return _r(n,e.body)},bl=async(e,t)=>{const r=Wr({});e.body;const n=new qd({$metadata:Tl(e),...r});return _r(n,e.body)},wl=(e,t)=>(e||[]).filter((e=>null!=e)).map((e=>(e=>{const t={};return null!=e[Mh]&&(t[Mh]=rr(e[Mh])),t})(e))),kl=(e,t)=>{const r={};return null!=e[wh]&&(r[wh]=rr(e[wh])),null!=e[Sh]&&(r[Sh]=er(pr(e[Sh]))),null!=e[ih]&&(r[ih]=rr(e[ih])),""===e.ChecksumAlgorithm?r[Nl]=[]:null!=e[Nl]&&(r[Nl]=(e=>(e||[]).filter((e=>null!=e)).map((e=>rr(e))))(Dr(e[Nl]))),null!=e[af]&&(r[af]=or(e[af])),null!=e[Xh]&&(r[Xh]=rr(e[Xh])),null!=e[Rh]&&(r[Rh]=El(e[Rh])),null!=e[Vh]&&(r[Vh]=xl(e[Vh])),r},Sl=(e,t)=>(e||[]).filter((e=>null!=e)).map((e=>kl(e))),El=(e,t)=>{const r={};return null!=e[Yl]&&(r[Yl]=rr(e[Yl])),null!=e[lh]&&(r[lh]=rr(e[lh])),r},xl=(e,t)=>{const r={};return null!=e[yh]&&(r[yh]=Wt(e[yh])),null!=e[Hh]&&(r[Hh]=er(pr(e[Hh]))),r},Al=(e,t)=>{const r={};return null!=e[Rl]&&(r[Rl]=rr(e[Rl])),null!=e[Jh]&&(r[Jh]=rr(e[Jh])),null!=e[sf]&&(r[sf]=rr(e[sf])),null!=e[oh]&&(r[oh]=er(pr(e[oh]))),r},Tl=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"]}),Cl="ACL",Rl="AccessKeyId",Ol="AcceptRanges",Pl="AccessTier",_l="BypassGovernanceRetention",Il="BucketKeyEnabled",Ml="Credentials",Nl="ChecksumAlgorithm",Fl="CacheControl",$l="ChecksumCRC32",Ul="ChecksumCRC32C",Ll="ContentDisposition",Bl="ContentEncoding",Dl="ContentLanguage",zl="ContentLength",jl="ChecksumMode",ql="ContentMD5",Hl="CommonPrefixes",Wl="ContentRange",Kl="ChecksumSHA1",Vl="ChecksumSHA256",Ql="ContentType",Gl="ContinuationToken",Jl="Contents",Xl="Delimiter",Zl="DeleteMarker",Yl="DisplayName",eh="Expires",th="ExpectedBucketOwner",rh="ExpiresString",nh="EncodingType",ih="ETag",oh="Expiration",sh="FetchOwner",ah="GrantFullControl",ch="GrantRead",uh="GrantReadACP",dh="GrantWriteACP",lh="ID",hh="IfMatch",fh="IfMatchLastModifiedTime",ph="IfMatchSize",gh="IfModifiedSince",mh="IfNoneMatch",yh="IsRestoreInProgress",vh="IsTruncated",bh="IfUnmodifiedSince",wh="Key",kh="KeyCount",Sh="LastModified",Eh="MFA",xh="MaxKeys",Ah="MissingMeta",Th="Name",Ch="NextContinuationToken",Rh="Owner",Oh="ObjectLockLegalHoldStatus",Ph="ObjectLockMode",_h="ObjectLockRetainUntilDate",Ih="OptionalObjectAttributes",Mh="Prefix",Nh="PartsCount",Fh="PartNumber",$h="Range",Uh="RequestCharged",Lh="ResponseCacheControl",Bh="ResponseContentDisposition",Dh="ResponseContentEncoding",zh="ResponseContentLanguage",jh="ResponseContentType",qh="ResponseExpires",Hh="RestoreExpiryDate",Wh="RequestPayer",Kh="ReplicationStatus",Vh="RestoreStatus",Qh="Restore",Gh="StartAfter",Jh="SecretAccessKey",Xh="StorageClass",Zh="SessionMode",Yh="ServerSideEncryption",ef="SSECustomerAlgorithm",tf="SSECustomerKey",rf="SSECustomerKeyMD5",nf="SSEKMSEncryptionContext",of="SSEKMSKeyId",sf="SessionToken",af="Size",cf="Tagging",uf="TagCount",df="VersionId",lf="WriteOffsetBytes",hf="WebsiteRedirectLocation",ff="accept-ranges",pf="cache-control",gf="content-disposition",mf="content-encoding",yf="content-language",vf="content-length",bf="content-md5",wf="content-range",kf="content-type",Sf="continuation-token",Ef="delimiter",xf="expires",Af="encoding-type",Tf="etag",Cf="expiresstring",Rf="fetch-owner",Of="if-match",Pf="if-modified-since",_f="if-none-match",If="if-unmodified-since",Mf="last-modified",Nf="list-type",Ff="max-keys",$f="partNumber",Uf="prefix",Lf="range",Bf="response-cache-control",Df="response-content-disposition",zf="response-content-encoding",jf="response-content-language",qf="response-content-type",Hf="response-expires",Wf="session",Kf="start-after",Vf="versionId",Qf="x-amz-acl",Gf="x-amz-bypass-governance-retention",Jf="x-amz-checksum-crc32",Xf="x-amz-checksum-crc32c",Zf="x-amz-checksum-mode",Yf="x-amz-checksum-sha1",ep="x-amz-checksum-sha256",tp="x-amz-create-session-mode",rp="x-amz-delete-marker",np="x-amz-expiration",ip="x-amz-expected-bucket-owner",op="x-amz-grant-full-control",sp="x-amz-grant-read",ap="x-amz-grant-read-acp",cp="x-amz-grant-write-acp",up="x-amz-if-match-last-modified-time",dp="x-amz-if-match-size",lp="x-amz-mfa",hp="x-amz-missing-meta",fp="x-amz-mp-parts-count",pp="x-amz-object-lock-legal-hold",gp="x-amz-object-lock-mode",mp="x-amz-object-lock-retain-until-date",yp="x-amz-optional-object-attributes",vp="x-amz-object-size",bp="x-amz-restore",wp="x-amz-request-charged",kp="x-amz-request-payer",Sp="x-amz-replication-status",Ep="x-amz-storage-class",xp="x-amz-sdk-checksum-algorithm",Ap="x-amz-server-side-encryption",Tp="x-amz-server-side-encryption-aws-kms-key-id",Cp="x-amz-server-side-encryption-bucket-key-enabled",Rp="x-amz-server-side-encryption-context",Op="x-amz-server-side-encryption-customer-algorithm",Pp="x-amz-server-side-encryption-customer-key",_p="x-amz-server-side-encryption-customer-key-md5",Ip="x-amz-tagging",Mp="x-amz-tagging-count",Np="x-amz-version-id",Fp="x-amz-write-offset-bytes",$p="x-amz-website-redirect-location",Up="x-id";class Lp extends(jt.classBuilder().ep({...Ed,DisableS3ExpressSessionAuth:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(e,t,r,n){return[me(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),Co(r)]})).s("AmazonS3","CreateSession",{}).n("S3Client","CreateSessionCommand").f(Ud,$d).ser(Qd).de(Yd).build()){}var Bp="3.701.0";function Dp(e){return"string"==typeof e?0===e.length:0===e.byteLength}var zp={name:"SHA-1"},jp={name:"HMAC",hash:zp},qp=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 Wp(){return"undefined"!=typeof window?window:"undefined"!=typeof self?self:Hp}var Kp=function(){function e(e){this.toHash=new Uint8Array(0),void 0!==e&&(this.key=new Promise((function(t,r){Wp().crypto.subtle.importKey("raw",Vp(e),jp,!1,["sign"]).then(t,r)})),this.key.catch((function(){})))}return e.prototype.update=function(e){if(!Dp(e)){var t=Vp(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 Wp().crypto.subtle.sign(jp,t,e.toHash).then((function(e){return new Uint8Array(e)}))})):Dp(this.toHash)?Promise.resolve(qp):Promise.resolve().then((function(){return Wp().crypto.subtle.digest(zp,e.toHash)})).then((function(e){return Promise.resolve(new Uint8Array(e))}))},e.prototype.reset=function(){this.toHash=new Uint8Array(0)},e}();function Vp(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 Qp=["decrypt","digest","encrypt","exportKey","generateKey","importKey","sign","verify"];function Gp(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&&Qp.every((function(t){return"function"==typeof e[t]}))}(e.crypto.subtle)}var Jp=function(){function e(e){if(!Gp(Wp()))throw new Error("SHA1 not supported");this.hash=new Kp(e)}return e.prototype.update=function(e,t){this.hash.update(Ci(e))},e.prototype.digest=function(){return this.hash.digest()},e.prototype.reset=function(){this.hash.reset()},e}(),Xp={name:"SHA-256"},Zp={name:"HMAC",hash:Xp},Yp=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]),eg=function(){function e(e){this.toHash=new Uint8Array(0),this.secret=e,this.reset()}return e.prototype.update=function(e){if(!Ri(e)){var t=Ci(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 Wp().crypto.subtle.sign(Zp,t,e.toHash).then((function(e){return new Uint8Array(e)}))})):Ri(this.toHash)?Promise.resolve(Yp):Promise.resolve().then((function(){return Wp().crypto.subtle.digest(Xp,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){Wp().crypto.subtle.importKey("raw",Ci(e.secret),Zp,!1,["sign"]).then(t,r)})),this.key.catch((function(){})))},e}();function tg(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 rg(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]sg)throw new Error("Cannot hash more than 2^53 - 1 bits");for(;r>0;)this.buffer[this.bufferLength++]=e[t++],r--,this.bufferLength===ng&&(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%ng>=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+(ig[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}(),cg=function(){function e(e){this.secret=e,this.hash=new ag,this.reset()}return e.prototype.update=function(e){if(!Ri(e)&&!this.error)try{this.hash.update(Ci(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 tg(this,void 0,void 0,(function(){return rg(this,(function(e){return[2,this.digestSync()]}))}))},e.prototype.reset=function(){if(this.hash=new ag,this.secret){this.outer=new ag;var e=function(e){var t=Ci(e);if(t.byteLength>ng){var r=new ag;r.update(t),t=r.digest()}var n=new Uint8Array(ng);return n.set(t),n}(this.secret),t=new Uint8Array(ng);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 lg=Xr(dg.exports);const hg=({serviceId:e,clientVersion:t})=>async r=>{const n="undefined"!=typeof window&&window?.navigator?.userAgent?lg.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 fg{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&&pg(t),new fg(t)}valueOf(){const e=this.bytes.slice(0),t=128&e[0];return t&&pg(e),parseInt(ze(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}}function pg(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,0===e[t]);t--);}class gg{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(fg.fromNumber(e.value.valueOf()).bytes,1),u;case"uuid":if(!Tg.test(e.value))throw new Error(`Invalid UUID received: ${e.value}`);const d=new Uint8Array(17);return d[0]=9,d.set(De(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 Ui;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 Ui).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 Rg{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 _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.serializer(e);yield t}}}function Ig(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 Mg{constructor({utf8Encoder:e,utf8Decoder:t}){this.eventStreamCodec=new Cg(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 Fg=e=>"function"==typeof ReadableStream&&e instanceof ReadableStream,$g=e=>new Ng(e);const Ug=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()},Lg=64,Bg=[1732584193,4023233417,2562383102,271733878];class Dg{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 Ae(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===Lg&&(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%Lg>=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=jg(r,n,i,o,e.getUint32(0,!0),7,3614090360),o=jg(o,r,n,i,e.getUint32(4,!0),12,3905402710),i=jg(i,o,r,n,e.getUint32(8,!0),17,606105819),n=jg(n,i,o,r,e.getUint32(12,!0),22,3250441966),r=jg(r,n,i,o,e.getUint32(16,!0),7,4118548399),o=jg(o,r,n,i,e.getUint32(20,!0),12,1200080426),i=jg(i,o,r,n,e.getUint32(24,!0),17,2821735955),n=jg(n,i,o,r,e.getUint32(28,!0),22,4249261313),r=jg(r,n,i,o,e.getUint32(32,!0),7,1770035416),o=jg(o,r,n,i,e.getUint32(36,!0),12,2336552879),i=jg(i,o,r,n,e.getUint32(40,!0),17,4294925233),n=jg(n,i,o,r,e.getUint32(44,!0),22,2304563134),r=jg(r,n,i,o,e.getUint32(48,!0),7,1804603682),o=jg(o,r,n,i,e.getUint32(52,!0),12,4254626195),i=jg(i,o,r,n,e.getUint32(56,!0),17,2792965006),n=jg(n,i,o,r,e.getUint32(60,!0),22,1236535329),r=qg(r,n,i,o,e.getUint32(4,!0),5,4129170786),o=qg(o,r,n,i,e.getUint32(24,!0),9,3225465664),i=qg(i,o,r,n,e.getUint32(44,!0),14,643717713),n=qg(n,i,o,r,e.getUint32(0,!0),20,3921069994),r=qg(r,n,i,o,e.getUint32(20,!0),5,3593408605),o=qg(o,r,n,i,e.getUint32(40,!0),9,38016083),i=qg(i,o,r,n,e.getUint32(60,!0),14,3634488961),n=qg(n,i,o,r,e.getUint32(16,!0),20,3889429448),r=qg(r,n,i,o,e.getUint32(36,!0),5,568446438),o=qg(o,r,n,i,e.getUint32(56,!0),9,3275163606),i=qg(i,o,r,n,e.getUint32(12,!0),14,4107603335),n=qg(n,i,o,r,e.getUint32(32,!0),20,1163531501),r=qg(r,n,i,o,e.getUint32(52,!0),5,2850285829),o=qg(o,r,n,i,e.getUint32(8,!0),9,4243563512),i=qg(i,o,r,n,e.getUint32(28,!0),14,1735328473),n=qg(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=Wg(r,n,i,o,e.getUint32(0,!0),6,4096336452),o=Wg(o,r,n,i,e.getUint32(28,!0),10,1126891415),i=Wg(i,o,r,n,e.getUint32(56,!0),15,2878612391),n=Wg(n,i,o,r,e.getUint32(20,!0),21,4237533241),r=Wg(r,n,i,o,e.getUint32(48,!0),6,1700485571),o=Wg(o,r,n,i,e.getUint32(12,!0),10,2399980690),i=Wg(i,o,r,n,e.getUint32(40,!0),15,4293915773),n=Wg(n,i,o,r,e.getUint32(4,!0),21,2240044497),r=Wg(r,n,i,o,e.getUint32(32,!0),6,1873313359),o=Wg(o,r,n,i,e.getUint32(60,!0),10,4264355552),i=Wg(i,o,r,n,e.getUint32(24,!0),15,2734768916),n=Wg(n,i,o,r,e.getUint32(52,!0),21,1309151649),r=Wg(r,n,i,o,e.getUint32(16,!0),6,4149444226),o=Wg(o,r,n,i,e.getUint32(44,!0),10,3174756917),i=Wg(i,o,r,n,e.getUint32(8,!0),15,718787259),n=Wg(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(Lg)),this.bufferLength=0,this.bytesHashed=0,this.finished=!1}}function zg(e,t,r,n,i,o){return((t=(t+e&4294967295)+(n+o&4294967295)&4294967295)<>>32-i)+r&4294967295}function jg(e,t,r,n,i,o,s){return zg(t&r|~t&n,e,t,i,o,s)}function qg(e,t,r,n,i,o,s){return zg(t&n|r&~n,e,t,i,o,s)}function Hg(e,t,r,n,i,o,s){return zg(t^r^n,e,t,i,o,s)}function Wg(e,t,r,n,i,o,s){return zg(r^(t|~n),e,t,i,o,s)}const Kg="function"==typeof TextEncoder?new TextEncoder:null,Vg=e=>{if("string"==typeof e){if(Kg)return Kg.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}`)},Qg=["in-region","cross-region","mobile","standard","legacy"],Gg=()=>{const e="undefined"!=typeof window&&window?.navigator?.userAgent?lg.parse(window.navigator.userAgent):void 0,t=e?.platform?.type;return"tablet"===t||"mobile"===t},Jg=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(Gg()?"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 ${Qg.join(", ")}, got ${t}`)}})))(e),r=()=>t().then(Mr),n=(e=>({apiVersion:"2006-03-01",base64Decoder:e?.base64Decoder??xe,base64Encoder:e?.base64Encoder??Re,disableHostPrefix:e?.disableHostPrefix??!1,endpointProvider:e?.endpointProvider??md,extensions:e?.extensions??[],getAwsChunkedEncodingStream:e?.getAwsChunkedEncodingStream??Pe,httpAuthSchemeProvider:e?.httpAuthSchemeProvider??kd,httpAuthSchemes:e?.httpAuthSchemes??[{schemeId:"aws.auth#sigv4",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4"),signer:new ce},{schemeId:"aws.auth#sigv4a",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4a"),signer:new ue}],logger:e?.logger??new Hr,sdkStreamMixin:e?.sdkStreamMixin??He,serviceId:e?.serviceId??"S3",signerConstructor:e?.signerConstructor??ra,signingEscapePath:e?.signingEscapePath??!1,urlParser:e?.urlParser??xs,useArnRegion:e?.useArnRegion??!1,utf8Decoder:e?.utf8Decoder??Ae,utf8Encoder:e?.utf8Encoder??Ce}))(e);return{...n,...e,runtime:"browser",defaultsMode:t,bodyLengthChecker:e?.bodyLengthChecker??Vg,credentialDefaultProvider:e?.credentialDefaultProvider??(e=>()=>Promise.reject(new Error("Credential is missing"))),defaultUserAgentProvider:e?.defaultUserAgentProvider??hg({serviceId:n.serviceId,clientVersion:Bp}),eventStreamSerdeProvider:e?.eventStreamSerdeProvider??$g,maxAttempts:e?.maxAttempts??3,md5:e?.md5??Dg,region:e?.region??(i="Region is missing",()=>Promise.reject(i)),requestHandler:$e.create(e?.requestHandler??r),retryMode:e?.retryMode??(async()=>(await r()).retryMode||_s),sha1:e?.sha1??Jp,sha256:e?.sha256??ug,streamCollector:e?.streamCollector??Ue,streamHasher:e?.streamHasher??Ug,useDualstackEndpoint:e?.useDualstackEndpoint??(()=>Promise.resolve(false)),useFipsEndpoint:e?.useFipsEndpoint??(()=>Promise.resolve(false))};var i},Xg=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}},Zg=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}},Yg=e=>({httpAuthSchemes:e.httpAuthSchemes(),httpAuthSchemeProvider:e.httpAuthSchemeProvider(),credentials:e.credentials()});class em extends zt{constructor(...[e]){const t=Jg(e||{});var r;const n=function(e){const t=ke(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()=>As(await le(r)()):void 0,i=!!r,o={...e,endpoint:n,tls:t,isCustomEndpoint:i,useDualstackEndpoint:le(e.useDualstackEndpoint??!1),useFipsEndpoint:le(e.useFipsEndpoint??!1)};let s;return o.serviceConfiguredEndpoint=async()=>(e.serviceId&&!s&&(s=Es(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 fs(t);const e=await t();return fs(e)},useFipsEndpoint:async()=>{const e="string"==typeof t?t:await t();return!!hs(e)||("function"!=typeof r?Promise.resolve(!!r):r())}}})((e=>{const{retryStrategy:t}=e,r=le(e.maxAttempts??3);return{...e,maxAttempts:r,retryStrategy:async()=>t||(await le(e.retryMode)()===Ps.ADAPTIVE?new zs(r):new Ds(r))}})((i=n,{...i,requestChecksumCalculation:le(i.requestChecksumCalculation??G),responseChecksumValidation:le(i.responseChecksumValidation??J)}))))),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 lo((async e=>r().send(new n({Bucket:e,SessionMode:"ReadWrite"})))),bucketEndpoint:e.bucketEndpoint??!1}})(Sd(o),{session:[()=>this,Lp]}),a=((e,t)=>{const r={...Xg(e),...Lr(e),...F(e),...Zg(e)};return t.forEach((e=>e.configure(r))),{...e,...(i=r,{region:i.region()}),...Br(r),...(n=r,{httpHandler:n.httpHandler()}),...Yg(r)};var n,i})(s,e?.extensions||[]);super(a),this.config=a,this.middlewareStack.use((e=>({applyToStack:t=>{t.add(us(e),ls)}}))(this.config)),this.middlewareStack.use(Ys(this.config)),this.middlewareStack.use(ms(this.config)),this.middlewareStack.use(Ji(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}}),Xi)}})),this.middlewareStack.use(eo(this.config)),this.middlewareStack.use(((e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:r})=>({applyToStack:n=>{n.addRelativeTo(he(e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:r}),fe)}}))(this.config,{httpAuthSchemeParametersProvider:yd,identityProviderConfigProvider:async e=>new Ye({"aws.auth#sigv4":e.credentials,"aws.auth#sigv4a":e.credentials})})),this.middlewareStack.use(we(this.config)),this.middlewareStack.use(Po(this.config)),this.middlewareStack.use(V(this.config)),this.middlewareStack.use(oo(this.config)),this.middlewareStack.use(bo(this.config)),this.middlewareStack.use((e=>({applyToStack:t=>{t.addRelativeTo(So(e),be)}}))(this.config))}destroy(){super.destroy()}}const tm={name:"ssecMiddleware",step:"initialize",tags:["SSE"],override:!0},rm=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?nm(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})}),tm)}});function nm(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 im extends(jt.classBuilder().ep({...Ed,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[me(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),Co(r)]})).s("AmazonS3","DeleteObject",{}).n("S3Client","DeleteObjectCommand").f(void 0,void 0).ser(Gd).de(el).build()){}class om extends(jt.classBuilder().ep({...Ed,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[me(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),Qi(r,{requestChecksumRequired:!1,requestValidationModeMember:"ChecksumMode",responseAlgorithms:["CRC32","CRC32C","SHA256","SHA1"]}),rm(r),ao()]})).s("AmazonS3","GetObject",{}).n("S3Client","GetObjectCommand").f(Bd,Ld).ser(Jd).de(tl).build()){}class sm extends(jt.classBuilder().ep({...Ed,Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}}).m((function(e,t,r,n){return[me(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),Co(r)]})).s("AmazonS3","ListObjectsV2",{}).n("S3Client","ListObjectsV2Command").f(void 0,void 0).ser(Xd).de(rl).build()){}class am extends(jt.classBuilder().ep({...Ed,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[me(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),Qi(r,{requestAlgorithmMember:"ChecksumAlgorithm",requestAlgorithmMemberHttpHeader:"x-amz-sdk-checksum-algorithm",requestChecksumRequired:!1}),ro(),Co(r),rm(r)]})).s("AmazonS3","PutObject",{}).n("S3Client","PutObjectCommand").f(Vd,Kd).ser(Zd).de(nl).build()){}class cm{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)))}}))}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 em({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o}});try{let e,t=[],r=[],i=!0;for(;i;){const o=yield c.send(new sm({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 em({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o}});let c=s+"/"+e;for(;c.startsWith("/");)c=c.substring(1);try{return yield a.send(new im({Bucket:n,Key:c})),!0}catch(e){return console.error(e),!1}}))}}class um extends cm{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 em({endpoint:r,region:n,credentials:{accessKeyId:o,secretAccessKey:s}});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 am({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 em({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o}});let c=s+"/"+e;for(;c.startsWith("/");)c=c.substring(1);try{const e=yield a.send(new om({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 dm{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 lm{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 hm extends lm{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 fm=["book","config","cover","font"];class pm{constructor(e,t,r){this.type=e,this.remote="dropbox"===e?new A(t,r):"microsoft"===e?new _(t,r):"google"===e?new C(t,r):"microsoft_exp"===e?new _(Object.assign(Object.assign({},t),{isExp:!0}),r):"google_exp"===e?new C(Object.assign(Object.assign({},t),{isExp:!0}),r):"s3compatible"===e?new um(t):"webdav"===e?new dm(t):"docker"===e?new hm(t):"boxnet"===e?new E(t,r):"mega"===e?new O(t):"adrive"===e?new k(t,r):"pcloud"===e?new N(t,r):new I}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 fm){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 gm={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 = ?"},mm={notes:"SELECT * FROM notes WHERE bookKey = ?",bookmarks:"SELECT * FROM bookmarks WHERE bookKey = ?",words:"SELECT * FROM words WHERE bookKey = ?",books:"SELECT * FROM books WHERE key = ?"},ym={notes:"DELETE FROM notes WHERE bookKey = ?",bookmarks:"DELETE FROM bookmarks WHERE bookKey = ?",words:"DELETE FROM words WHERE bookKey = ?"};function vm(e){for(const t in e)e.hasOwnProperty(t)&&(e[`temp-${t}`]=e[t]);return e}const bm={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 wm,km={sqlStatement:{createTableStatement:vm({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:vm({notes:"SELECT * FROM notes",bookmarks:"SELECT * FROM bookmarks",books:"SELECT * FROM books",plugins:"SELECT * FROM plugins",words:"SELECT * FROM words"}),saveStatement:vm({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:vm({notes:"DELETE FROM notes",bookmarks:"DELETE FROM bookmarks",books:"DELETE FROM books",plugins:"DELETE FROM plugins",words:"DELETE FROM words"}),updateStatement:vm({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:vm({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:vm({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:vm(gm),getByBookKeyStatement:vm(mm),getByBookKeysStatement:vm({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:vm(ym)},jsonToSqlite:vm({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:vm(bm)};class Sm{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 Em{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 Sm(a,u,d,h,r,m,y,l,n,p,i,f))}catch(e){console.error(e),u(e)}}))))}}wm=Em,Em.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},Em.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=wm.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",(()=>{let e=Object.assign({},window.rendition.getPosition());"PDF"===t.format&&(e.chapterDocIndex=window.chapterDocIndex),window.ReactNativeWebView.postMessage(JSON.stringify({event:"content-loaded",bookLocation:e})),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)))}}((()=>{let e=Object.assign({},window.rendition.getPosition());window.ReactNativeWebView.postMessage(JSON.stringify({event:"page-changed",bookLocation:e}))}),6e3);let a=null;window.rendition.on("page-changed",(()=>{a&&clearTimeout(a),a=setTimeout((()=>{s(),a=null}),window.isTouchNavigation?3e3: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"}))}})),Em.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 Sm(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=wm.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 Em.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"}))}})),Em.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 xm=m.cloudUrl,Am=m.cloudCNUrl;class Tm{constructor(e,t){this.TokenService=e,this.ConfigService=t,this.baseUrl="china"===t.getItem("serverRegion")?Am:xm,this.refreshToken="",this.accessToken="",this.streamPromise=null}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),this.accessToken=t.data.access_token,this.refreshToken=t.data.refresh_token),t}))}requestWithRetry(e){return a(this,void 0,void 0,(function*(){return Tm.requestQueue||(Tm.requestQueue=[]),new Promise(((t,r)=>{Tm.requestQueue.push({config:e,resolve:t,reject:r}),Tm.processingQueue||this.processQueue()}))}))}processQueue(){return a(this,void 0,void 0,(function*(){if(!Tm.processingQueue){Tm.processingQueue=!0;try{for(;Tm.requestQueue.length>0;){const e=Tm.requestQueue.shift();try{let t=yield this.executeRequest(e.config);e.resolve(t)}catch(t){e.reject(t)}}}finally{Tm.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",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{let n="";try{n=(yield this.TokenService.getToken("access_token"))||""}catch(e){console.error("Error get Token:",e)}let 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)):(402===r.code&&(yield this.refreshUserToken()),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{let r="";try{r=(yield this.TokenService.getToken("access_token"))||""}catch(e){console.error("Error get Token:",e)}let 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)):(402===r.code&&(yield this.refreshUserToken()),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}))}}Tm.processingQueue=!1,Tm.requestQueue=[];class Cm extends Tm{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)}))}}class Rm extends Tm{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){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):console.info("ignore",a)),"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)):console.info("ignore",a)),"delete"===s.operation&&console.info("ignore",a)),"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):console.info("ignore",a)),"delete"===s.operation&&(s.timea.time?p[n].upload.push(o):console.info("ignore",a)))):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):console.info("ignore",s):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)):console.info("ignore",a)),"delete"===s.operation&&console.info("ignore",a)),"update"===a.operation&&("update"===s.operation&&(s.timea.time?h[n].upload.push(o):console.info("ignore",a)),"delete"===s.operation&&(s.timea.time?h[n].upload.push(o):console.info("ignore",a)))):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 Im=(Mm=class{static getItem(e){return localStorage.getItem(e)}static setItem(e,t){localStorage.setItem(e,t)}static removeItem(e){localStorage.removeItem(e)}},Nm="browser",class extends Mm{static getReaderConfig(e){return JSON.parse(this.getItem("readerConfig")||"{}")[e]}static setReaderConfig(e,t,r=!0){let n=JSON.parse(this.getItem("readerConfig")||"{}");n[e]=t,this.setItem("readerConfig",JSON.stringify(n)),r&&this.setSyncRecord({type:"config",catergory:"readerConfig",name:Nm,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 setSyncRecord(e,t){let r=JSON.parse(this.getItem("syncRecord")||"{}");r[e.type+"."+e.catergory+"."+e.name+"."+e.key]=t,this.setItem("syncRecord",JSON.stringify(r))}static setAllSyncRecord(e){this.setItem("syncRecord",JSON.stringify(e))}});var Mm,Nm;class Fm{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 Lm(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=$m((new TextEncoder).encode(JSON.stringify(r))),i=$m((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}.${$m(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<=iy}}function Iy(e){return function(t){return null==t?void 0:t[e]}}var My=Iy("byteLength"),Ny=_y(My),Fy=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var $y=Qm?function(e){return Ym?Ym(e)&&!xy(e):Ny(e)&&Fy.test(Km.call(e))}:Py(!1),Uy=Iy("length");function Ly(e,t){t=function(e){for(var t={},r=e.length,n=0;n":">",'"':""","'":"'","`":"`"},Rv=Tv(Cv),Ov=Tv(ov(Cv)),Pv=zy.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},_v=/(.)^/,Iv={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},Mv=/\\|'|\r|\n|\u2028|\u2029/g;function Nv(e){return"\\"+Iv[e]}var Fv=/^\s*(\w|\$)+\s*$/;var $v=0;function Uv(e,t,r,n,i){if(!(n instanceof t))return e.apply(r,i);var o=lv(e.prototype),s=e.apply(o,i);return sy(s)?s:o}var Lv=oy((function(e,t){var r=Lv.placeholder,n=function(){for(var i=0,o=t.length,s=Array(o),a=0;a1)zv(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 Vv=Lv(Kv,2);function Qv(e,t,r){t=Sv(t,r);for(var n,i=By(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(Wm.call(n,s,a),Oy))>=0?o+s:-1;for(o=e>0?s:a-1;o>=0&&o=3;return function(t,r,n,i){var o=!Dv(t)&&By(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 hb=oy((function(e,t,r){var n,i;return by(t)?i=t:(t=fv(t),n=t.slice(0,-1),t=t[t.length-1]),ib(e,(function(e){var o=i;if(!o){if(n&&n.length&&(e=pv(e,n)),null==e)return;o=e[t]}return null==o?o:o.apply(e,r)}))}));function fb(e,t){return ib(e,vv(t))}function pb(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=Dv(e)?e:iv(e)).length;ao&&(o=n);else t=Sv(t,r),nb(e,(function(e,r,n){((i=t(e,r,n))>s||i===-1/0&&o===-1/0)&&(o=e,s=i)}));return o}var gb=/[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;function mb(e){return e?Ay(e)?Wm.call(e):dy(e)?e.match(gb):Dv(e)?ib(e,mv):iv(e):[]}function yb(e,t,r){if(null==t||r)return Dv(e)||(e=iv(e)),e[xv(e.length-1)];var n=mb(e),i=Uy(n);t=Math.max(Math.min(t,i),0);for(var o=i-1,s=0;s1&&(n=bv(n,t[1])),t=Ky(e)):(n=Eb,t=zv(t,!1,!1),e=Object(e));for(var i=0,o=t.length;i1&&(r=t[1])):(t=ib(zv(t,!1,!1),String),n=function(e,r){return!lb(t,r)}),xb(e,n,r)}));function Tb(e,t,r){return Wm.call(e,0,Math.max(0,e.length-(null==t||r?1:t)))}function Cb(e,t,r){return null==e||e.length<1?null==t||r?void 0:[]:null==t||r?e[0]:Tb(e,e.length-t)}function Rb(e,t,r){return Wm.call(e,null==t||r?1:t)}var Ob=oy((function(e,t){return t=zv(t,!0,!0),cb(e,(function(e){return!lb(t,e)}))})),Pb=oy((function(e,t){return Ob(e,t)}));function _b(e,t,r,n){cy(t)||(n=r,r=t,t=!1),null!=r&&(r=Sv(r,n));for(var i=[],o=[],s=0,a=Uy(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=Av()-i;t>u?n=setTimeout(c,t-u):(n=null,r||(s=e.apply(a,o)),n||(o=a=null))},u=oy((function(u){return a=this,o=u,i=Av(),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 Lv(t,e)},negate:Wv,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:Kv,once:Vv,findKey:Qv,findIndex:Jv,findLastIndex:Xv,sortedIndex:Zv,indexOf:eb,lastIndexOf:tb,find:rb,detect:rb,findWhere:function(e,t){return rb(e,yv(t))},each:nb,forEach:nb,map:ib,collect:ib,reduce:sb,foldl:sb,inject:sb,reduceRight:ab,foldr:ab,filter:cb,select:cb,reject:function(e,t,r){return cb(e,Wv(Sv(t)),r)},every:ub,all:ub,some:db,any:db,contains:lb,includes:lb,include:lb,invoke:hb,pluck:fb,where:function(e,t){return cb(e,yv(t))},max:pb,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=Dv(e)?e:iv(e)).length;an||void 0===r)return 1;if(re.map((e=>e.name)),Db=e=>e.map((e=>e.key)),zb=(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 jb{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?zb(i,n).reverse():zb(i,n);if(2===t.sort){let r=Bb(e),n=Bb(e).sort();return 1===t.order?zb(n,r).reverse():zb(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=Db(e);return 1===t.order?zb(Lb.union(n,i),i).reverse():zb(Lb.union(n,i),i)}if(5===t.sort){let r=Db(e),n=(e=>Lb.sortBy(e.map((e=>({key:e.key,author:e.author}))),"author").map((e=>e.key)))(e);return 1===t.order?zb(n,r).reverse():zb(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=Db(e);return 1===t.order?zb(n,i).reverse():zb(n,i)}}static sortNotes(e,t,r=[]){if(3===t.sort){let r=Lb.clone(e).reverse(),n=Lb.uniq(e.map((e=>({chapter:e.chapter,chapterIndex:e.chapterIndex}))));n=1===t.order?Lb.sortBy(n,"chapterIndex"):Lb.sortBy(n,"chapterIndex").reverse();let i=Lb.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=Lb.clone(e).reverse(),n=Lb.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=Lb.clone(e).reverse(),i=Lb.uniq(e.map((e=>{let t=Lb.findLastIndex(r,{key:e.bookKey});return t>-1?r[t].name:""})));1===t.order?i.sort():i.sort().reverse();let o={};return i.forEach((e=>{o[e]=[]})),n.forEach((e=>{i.forEach((t=>{let n=Lb.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=Lb.clone(e).reverse(),n=Lb.uniq(e.map((e=>({chapter:e.chapter,chapterIndex:parseInt(JSON.parse(e.cfi).chapterDocIndex)}))));n=1===t.order?Lb.sortBy(n,"chapterIndex"):Lb.sortBy(n,"chapterIndex").reverse();let i=Lb.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 qb{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;}.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")?"2rem":""};text-decoration: ${"yes"===e.getReaderConfig("isUnderline")?"underline !important":""};margin-bottom: ${e.getReaderConfig("paraSpacing")||0}px !important;word-wrap: break-word !important; writing-mode: horizontal-tb !important; max-width: 100% !important;overflow: visible !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 Hb{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{Em as BookHelper,g as CommonTool,Im as ConfigService,b as KookitConfig,Pm as LoginHelper,Cm as ReaderRequest,Hb as SearchUtil,jb as SortUtil,km as SqlStatement,qb as StyleHelper,_m as SyncHelper,pm as SyncUtil,Rm as ThirdpartyRequest,Fm as TokenService,Om 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)=>{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","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","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.960960.xyz",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",pcloudClientId:"pg8ten0B3vH",boxClientId:"ltimecqanmpxoaicn9qw3es6l3sdl1ya",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"}},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"}},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"},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"},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})});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.refresh_token}))}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})});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.refresh_token}))}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.refresh_token}))}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.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.refresh_token}))}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 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=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 R{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 O extends R{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 P{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.refresh_token}))}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 _ extends P{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});for(r=this.baseFolder+"/"+r;r.startsWith("/");)r=r.substring(1);const s=this.baseUrl+":/"+r+":/createUploadSession",a=yield e.post(s,null,{headers:{Authorization:"Bearer "+n,"Content-Type":"application/json"},maxContentLength:1/0,maxBodyLength:1/0});let c=o.size;const u=o.type,d=a.data.uploadUrl,l=yield e.put(d,o,{headers:{"Content-Type":u,"Content-Range":`bytes 0-${c-1}/${c}`},maxContentLength:1/0,maxBodyLength:1/0});return!(l.status>=300)||(console.error("Error occurred during file download:",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();for(t=this.baseFolder+"/"+t;t.startsWith("/");)t=t.substring(1);const n=`${this.baseUrl}:/${t}:/content`,i=yield e.get(n,{responseType:"arraybuffer",headers:{Authorization:"Bearer "+r},maxContentLength:1/0,maxBodyLength:1/0,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}}))))))}))}}class I{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 M{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.access_token}))}getAuthUrl(e){return`https://my.pcloud.com/oauth2/authorize?client_id=${y.pcloudClientId}&response_type=code&redirect_uri=${e}`}}class N extends M{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 F=e=>{let t=e.httpHandler;return{setHttpHandler(e){t=e},httpHandler:()=>t,updateHttpClientConfig(e,r){t.updateHttpClientConfig(e,r)},httpHandlerConfigs:()=>t.httpHandlerConfigs()}};var $,U,L,B,D;!function(e){e.HEADER="header",e.QUERY="query"}($||($={})),function(e){e.HEADER="header",e.QUERY="query"}(U||(U={})),function(e){e.HTTP="http",e.HTTPS="https"}(L||(L={})),function(e){e.MD5="md5",e.CRC32="crc32",e.CRC32C="crc32c",e.SHA1="sha1",e.SHA256="sha256"}(B||(B={})),function(e){e[e.HEADER=0]="HEADER",e[e.TRAILER=1]="TRAILER"}(D||(D={}));const z="__smithy_context";var j,q;!function(e){e.PROFILE="profile",e.SSO_SESSION="sso-session",e.SERVICES="services"}(j||(j={})),function(e){e.HTTP_0_9="http/0.9",e.HTTP_1_0="http/1.0",e.TDS_8_0="tds/8.0"}(q||(q={}));class H{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 H({...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 H.clone(this)}}class W{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 K={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0},V=e=>({applyToStack:t=>{t.add(function(e){return t=>async r=>{const{request:n}=r;return H.isInstance(n)&&n.body&&"node"===e.runtime&&"FetchHttpHandler"!==e.requestHandler?.constructor?.name&&(n.headers={...n.headers,Expect:"100-continue"}),t({...r,request:n})}}(e),K)}}),Q="WHEN_SUPPORTED",G=Q,J=Q;var X,Z;!function(e){e.MD5="MD5",e.CRC32="CRC32",e.CRC32C="CRC32C",e.SHA1="SHA1",e.SHA256="SHA256"}(X||(X={})),function(e){e.HEADER="header",e.TRAILER="trailer"}(Z||(Z={}));const Y=X.MD5,ee=X.CRC32;var te;function re(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"}(te||(te={}));const ne=e=>W.isInstance(e)?e.headers?.date??e.headers?.Date:void 0,ie=e=>new Date(Date.now()+e),oe=(e,t)=>{const r=Date.parse(e);return((e,t)=>Math.abs(ie(t).getTime()-e)>=3e5)(r,t)?r-Date.now():t},se=(e,t)=>{if(!t)throw new Error(`Property \`${e}\` is not resolved for AWS SDK SigV4Auth`);return t},ae=async e=>{const t=se("context",e.context),r=se("config",e.config),n=t.endpointV2?.properties?.authSchemes?.[0],i=se("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 ce{async sign(e,t,r){if(!H.isInstance(e))throw new Error("The request is not an instance of `HttpRequest` and cannot be signed");const n=await ae(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:ie(i.systemClockOffset),signingRegion:s,signingService:a})}errorHandler(e){return t=>{const r=t.ServerTime??ne(t.$response);if(r){const n=se("config",e.config),i=n.systemClockOffset;n.systemClockOffset=oe(r,n.systemClockOffset);n.systemClockOffset!==i&&t.$metadata&&(t.$metadata.clockSkewCorrected=!0)}throw t}}successHandler(e,t){const r=ne(e);if(r){const e=se("config",t.config);e.systemClockOffset=oe(r,e.systemClockOffset)}}}class ue extends ce{async sign(e,t,r){if(!H.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 ae(r),c=(await(n.sigv4aSigningRegionSet?.())??s??[o]).join(",");return await i.sign(e,{signingDate:ie(n.systemClockOffset),signingRegion:c,signingService:a})}}const de=e=>e[z]||(e[z]={}),le=e=>{if("function"==typeof e)return e;const t=Promise.resolve(e);return()=>t};const he=(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=de(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)},fe={step:"serialize",tags:["HTTP_AUTH_SCHEME"],name:"httpAuthSchemeMiddleware",override:!0,relation:"before",toMiddleware:"endpointV2Middleware"},pe={name:"deserializerMiddleware",step:"deserialize",tags:["DESERIALIZER"],override:!0},ge={name:"serializerMiddleware",step:"serialize",tags:["SERIALIZER"],override:!0};function me(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),pe),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),ge)}}}const ye=e=>e=>{throw e},ve=(e,t)=>{},be={step:"finalizeRequest",tags:["HTTP_SIGNING"],name:"httpSigningMiddleware",aliases:["apiKeyMiddleware","tokenMiddleware","awsAuthMiddleware"],override:!0,relation:"after",toMiddleware:"retryMiddleware"},we=e=>({applyToStack:e=>{e.addRelativeTo(((e,t)=>async r=>{if(!H.isInstance(r.request))return e(r);const n=de(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||ye)(i));return(s.successHandler||ve)(a.response,i),a}),be)}}),ke=e=>{if("function"==typeof e)return e;const t=Promise.resolve(e);return()=>t},Se={},Ee=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);Se[r]=e,Ee[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;Se[r]=n,Ee[n]=r}for(let e=0;e<10;e++){Se[e.toString(10)]=e+52;const t=e.toString(10),r=e+52;Se[t]=r,Ee[r]=t}Se["+"]=62,Ee[62]="+",Se["/"]=63,Ee[63]="/";const xe=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)},Ae=e=>(new TextEncoder).encode(e),Te=e=>"string"==typeof e?Ae(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e),Ce=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 Re(e){let t;t="string"==typeof e?Ae(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 Oe extends Uint8Array{static fromString(e,t="utf-8"){if("string"==typeof e)return function(e,t){return"base64"===t?Oe.mutate(xe(e)):Oe.mutate(Ae(e))}(e,t);throw new Error(`Unsupported conversion from ${typeof e} to Uint8ArrayBlobAdapter.`)}static mutate(e){return Object.setPrototypeOf(e,Oe.prototype),e}transformToString(e="utf-8"){return function(e,t="utf-8"){return"base64"===t?Re(e):Ce(e)}(this,e)}}const Pe=(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`)}})},_e=e=>encodeURIComponent(e).replace(/[!'()*]/g,Ie),Ie=e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`;function Me(e,t){return new Request(e,t)}function Ne(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 Fe={supported:void 0};class $e{static create(e){return"function"==typeof e?.handle?e:new $e(e)}constructor(e){"function"==typeof e?this.configProvider=e().then((e=>e||{})):(this.config=e??{},this.configProvider=Promise.resolve(this.config)),void 0===Fe.supported&&(Fe.supported=Boolean("undefined"!=typeof Request&&"keepalive"in Me("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=_e(r),Array.isArray(n))for(let e=0,i=n.length;e{};const p=Me(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 W({headers:r,reason:e.statusText,statusCode:e.status,body:e.body})}:e.blob().then((t=>({response:new W({headers:r,reason:e.statusText,statusCode:e.status,body:t})})))})),Ne(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 Ue=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 Le={},Be={};for(let e=0;e<256;e++){let t=e.toString(16).toLowerCase();1===t.length&&(t=`0${t}`),Le[e]=t,Be[t]=e}function De(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),qe="The stream has already been transformed.",He=e=>{if(!We(e)&&!je(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(qe);return t=!0,await Ue(e)};return Object.assign(e,{transformToByteArray:r,transformToString:async e=>{const t=await r();if("base64"===e)return Re(t);if("hex"===e)return ze(t);if(void 0===e||"utf8"===e||"utf-8"===e)return Ce(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(qe);if(t=!0,We(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(je(e))return e;throw new Error(`Cannot transform payload to web stream, got ${e}`)}})},We=e=>"function"==typeof Blob&&e instanceof Blob;const Ke="function"==typeof ReadableStream?ReadableStream:function(){};class Ve extends Ke{}const Qe=({expectedChecksum:e,checksum:t,source:r,checksumSourceLocation:n,base64Encoder:i})=>{if(!je(r))throw new Error(`@smithy/util-stream: unsupported source type ${r?.constructor?.name??r} in ChecksumStream.`);const o=i??Re;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,Ve.prototype),a},Ge=async(e=new Uint8Array,t)=>{if(e instanceof Uint8Array)return Oe.mutate(e);if(!e)return Oe.mutate(new Uint8Array);const r=t.streamCollector(e);return Oe.mutate(await r)};function Je(e){return encodeURIComponent(e).replace(/[!'()*]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function Xe(e,t){return new Ze(e,t)}class Ze{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 H({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=>Je(e))).join("/"):Je(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 Ye{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 et=(tt=3e5,e=>rt(e)&&e.expiration.getTime()-Date.now()void 0!==e.expiration,nt="X-Amz-Date",it="X-Amz-Signature",ot="X-Amz-Security-Token",st="authorization",at=nt.toLowerCase(),ct=[st,at,"date"],ut=it.toLowerCase(),dt="x-amz-content-sha256",lt=ot.toLowerCase(),ht={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},ft=/^proxy-/,pt=/^sec-/,gt="AWS4-HMAC-SHA256",mt="AWS4-HMAC-SHA256-PAYLOAD",yt="aws4_request",vt={},bt=[],wt=(e,t,r)=>`${e}/${t}/${r}/${yt}`,kt=(e,t,r)=>{const n=new e(t);return n.update(Te(r)),n.digest()},St=({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 ht||t?.has(o)||ft.test(o)||pt.test(o))&&(!r||r&&!r.has(o))||(n[o]=e[i].trim().replace(/\s+/g," "))}return n},Et=e=>"function"==typeof ArrayBuffer&&e instanceof ArrayBuffer||"[object ArrayBuffer]"===Object.prototype.toString.call(e),xt=async({headers:e,body:t},r)=>{for(const t of Object.keys(e))if(t.toLowerCase()===dt)return e[t];if(null==t)return"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";if("string"==typeof t||ArrayBuffer.isView(t)||Et(t)){const e=new r;return e.update(Te(t)),ze(await e.digest())}return"UNSIGNED-PAYLOAD"};class At{format(e){const t=[];for(const r of Object.keys(e)){const n=Ae(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=Ae(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(Rt.fromNumber(e.value.valueOf()).bytes,1),u;case"uuid":if(!Ct.test(e.value))throw new Error(`Invalid UUID received: ${e.value}`);const d=new Uint8Array(17);return d[0]=9,d.set(De(e.value.replace(/\-/g,"")),1),d}}}var Tt;!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"}(Tt||(Tt={}));const Ct=/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;class Rt{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&&Ot(t),new Rt(t)}valueOf(){const e=this.bytes.slice(0),t=128&e[0];return t&&Ot(e),parseInt(ze(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}}function Ot(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,0===e[t]);t--);}const Pt=e=>{e=H.clone(e);for(const t of Object.keys(e.headers))ct.indexOf(t.toLowerCase())>-1&&delete e.headers[t];return e},_t=e=>"number"==typeof e?new Date(1e3*e):"string"==typeof e?Number(e)?new Date(1e3*Number(e)):new Date(e):e;class It{constructor({applyChecksum:e,credentials:t,region:r,service:n,sha256:i,uriEscapePath:o=!0}){this.headerFormatter=new At,this.service=n,this.sha256=i,this.uriEscapePath=o,this.applyChecksum="boolean"!=typeof e||e,this.regionProvider=le(r),this.credentialProvider=le(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}=Mt(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=wt(f,l,u??this.service),g=((e,t={})=>{const{headers:r,query:n={}}=H.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}})(Pt(e),{unhoistableHeaders:o,hoistableHeaders:a});d.sessionToken&&(g.query[ot]=d.sessionToken),g.query["X-Amz-Algorithm"]=gt,g.query["X-Amz-Credential"]=`${d.accessKeyId}/${p}`,g.query[nt]=h,g.query["X-Amz-Expires"]=n.toString(10);const m=St(g,i,s);return g.query["X-Amz-SignedHeaders"]=Nt(m),g.query[it]=await this.getSignature(h,p,this.getSigningKey(d,l,f,u),this.createCanonicalRequest(g,m,await xt(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}=Mt(r),u=wt(a,s,o??this.service),d=await xt({headers:{},body:t},this.sha256),l=new this.sha256;l.update(e);const h=ze(await l.digest()),f=[mt,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}=Mt(t),a=new this.sha256(await this.getSigningKey(i,o,s,n));return a.update(Te(e)),ze(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=Pt(e),{longDate:u,shortDate:d}=Mt(t),l=wt(d,a,o??this.service);c.headers[at]=u,s.sessionToken&&(c.headers[lt]=s.sessionToken);const h=await xt(c,this.sha256);!((e,t)=>{e=e.toLowerCase();for(const r of Object.keys(t))if(e===r.toLowerCase())return!0;return!1})(dt,c.headers)&&this.applyChecksum&&(c.headers[dt]=h);const f=St(c,n,r),p=await this.getSignature(u,l,this.getSigningKey(s,a,d,o),this.createCanonicalRequest(c,f,h));return c.headers[st]=`${gt} Credential=${s.accessKeyId}/${l}, SignedHeaders=${Nt(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()===ut)continue;const i=_e(n);t.push(i);const o=e[n];"string"==typeof o?r[i]=`${i}=${_e(o)}`:Array.isArray(o)&&(r[i]=o.slice(0).reduce(((e,t)=>e.concat([`${i}=${_e(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(Te(r));const i=await n.digest();return`${gt}\n${e}\n${t}\n${ze(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 _e(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(Te(i)),ze(await o.digest())}getSigningKey(e,t,r,n){return(async(e,t,r,n,i)=>{const o=`${r}:${n}:${i}:${ze(await kt(e,t.secretAccessKey,t.accessKeyId))}:${t.sessionToken}`;if(o in vt)return vt[o];for(bt.push(o);bt.length>50;)delete vt[bt.shift()];let s=`AWS4${t.secretAccessKey}`;for(const t of[r,n,i,yt])s=await kt(e,s,t);return vt[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 Mt=e=>{const t=(r=e,_t(r).toISOString().replace(/\.\d{3}Z$/,"Z")).replace(/[\-:]/g,"");var r;return{longDate:t,shortDate:t.slice(0,8)}},Nt=e=>Object.keys(e).sort().join(";"),Ft=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,et,rt)),t||(t=e.credentialDefaultProvider?ke(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?ke(e.signer):e.regionInfoProvider?()=>ke(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||It)(c)})):async r=>{const i=(r=Object.assign({},{name:"sigv4",signingName:e.signingName||e.defaultSigningName,signingRegion:await ke(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||It)(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}},$t=(e,t)=>{const r=[];if(e&&r.push(e),t)for(const e of t)r.push(e);return r},Ut=(e,t)=>`${e||"anonymous"}${t&&t.length>0?` (a.k.a. ${t.join(",")})`:""}`,Lt=()=>{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 $t(t.name,t.aliases))s[e]=t;n.push(t)})),t.forEach((e=>{const t={...e,before:[],after:[]};for(const e of $t(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 ${Ut(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)=>Bt[t.step]-Bt[e.step]||Dt[t.priority||"normal"]-Dt[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=$t(i,s);if(c.length>0){if(c.some((e=>n.has(e)))){if(!o)throw new Error(`Duplicate middleware name '${Ut(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(`"${Ut(n.name,n.aliases)}" middleware with ${n.priority} priority in ${n.step} step cannot be overridden by "${Ut(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=$t(i,s);if(c.length>0){if(c.some((e=>n.has(e)))){if(!o)throw new Error(`Duplicate middleware name '${Ut(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(`"${Ut(n.name,n.aliases)}" middleware ${n.relation} "${n.toMiddleware}" middleware cannot be overridden by "${Ut(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(Lt()),use:e=>{e.applyToStack(a)},remove:r=>"string"==typeof r?(r=>{let i=!1;const o=e=>{const t=$t(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 $t(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=$t(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(Lt());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 Ut(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},Bt={initialize:5,serialize:4,build:3,finalizeRequest:2,deserialize:1},Dt={high:3,normal:2,low:1};class zt{constructor(e){this.config=e,this.middlewareStack=Lt()}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 jt{constructor(){this.middlewareStack=Lt()}static classBuilder(){return new qt}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,[z]:{commandInstance:this,...c},...u},{requestHandler:p}=t;return l.resolve((e=>p.handle(e.request,r||{})),f)}}class qt{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 jt{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 Ht="***SensitiveInformation***",Wt=e=>{switch(e){case"true":return!0;case"false":return!1;default:throw new Error(`Unable to parse boolean value "${e}"`)}},Kt=Math.ceil(2**127*(2-2**-23)),Vt=e=>{const t=(e=>{if(null!=e){if("string"==typeof e){const t=parseFloat(e);if(!Number.isNaN(t))return String(t)!==String(e)&&ur.warn(cr(`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)>Kt)throw new TypeError(`Expected 32-bit float, got ${e}`);return t},Qt=e=>{if(null!=e){if(Number.isInteger(e)&&!Number.isNaN(e))return e;throw new TypeError(`Expected integer, got ${typeof e}: ${e}`)}},Gt=e=>Zt(e,32),Jt=e=>Zt(e,16),Xt=e=>Zt(e,8),Zt=(e,t)=>{const r=Qt(e);if(void 0!==r&&Yt(r,t)!==r)throw new TypeError(`Expected ${t}-bit integer, got ${e}`);return r},Yt=(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]}},er=(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},tr=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}`)},rr=e=>{if(null!=e){if("string"==typeof e)return e;if(["boolean","number","bigint"].includes(typeof e))return ur.warn(cr(`Expected string, got ${typeof e}: ${e}`)),String(e);throw new TypeError(`Expected string, got ${typeof e}: ${e}`)}},nr=/(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g,ir=e=>{const t=e.match(nr);if(null===t||t[0].length!==e.length)throw new TypeError("Expected real number, got implicit NaN");return parseFloat(e)},or=e=>Qt("string"==typeof e?ir(e):e),sr=e=>Gt("string"==typeof e?ir(e):e),ar=e=>Jt("string"==typeof e?ir(e):e),cr=e=>String(new TypeError(e).stack||e).split("\n").slice(0,5).filter((e=>!e.includes("stackTraceWarning"))).join("\n"),ur={warn:console.warn},dr=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],lr=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function hr(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`${dr[n]}, ${i<10?`0${i}`:`${i}`} ${lr[r]} ${t} ${c}:${u}:${d} GMT`}const fr=new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(([-+]\d{2}\:\d{2})|[zZ])$/),pr=e=>{if(null==e)return;if("string"!=typeof e)throw new TypeError("RFC-3339 date-times must be expressed as strings");const t=fr.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=ar(Or(n)),h=Tr(i,"month",1,12),f=Tr(o,"day",1,31),p=br(l,h,f,{hours:s,minutes:a,seconds:c,fractionalMilliseconds:u});return"Z"!=d.toUpperCase()&&p.setTime(p.getTime()-Rr(d)),p},gr=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$/),mr=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$/),yr=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})$/),vr=e=>{if(null==e)return;if("string"!=typeof e)throw new TypeError("RFC-7231 date-times must be expressed as strings");let t=gr.exec(e);if(t){const[e,r,n,i,o,s,a,c]=t;return br(ar(Or(i)),Sr(n),Tr(r,"day",1,31),{hours:o,minutes:s,seconds:a,fractionalMilliseconds:c})}if(t=mr.exec(e),t){const[e,r,n,i,o,s,a,c]=t;return kr(br(wr(i),Sr(n),Tr(r,"day",1,31),{hours:o,minutes:s,seconds:a,fractionalMilliseconds:c}))}if(t=yr.exec(e),t){const[e,r,n,i,o,s,a,c]=t;return br(ar(Or(c)),Sr(r),Tr(n.trimLeft(),"day",1,31),{hours:i,minutes:o,seconds:s,fractionalMilliseconds:a})}throw new TypeError("Invalid RFC-7231 date-time value")},br=(e,t,r,n)=>{const i=t-1;return xr(e,i,r),new Date(Date.UTC(e,i,r,Tr(n.hours,"hour",0,23),Tr(n.minutes,"minute",0,59),Tr(n.seconds,"seconds",0,60),Cr(n.fractionalMilliseconds)))},wr=e=>{const t=(new Date).getUTCFullYear(),r=100*Math.floor(t/100)+ar(Or(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,Sr=e=>{const t=lr.indexOf(e);if(t<0)throw new TypeError(`Invalid month: ${e}`);return t+1},Er=[31,28,31,30,31,30,31,31,30,31,30,31],xr=(e,t,r)=>{let n=Er[t];if(1===t&&Ar(e)&&(n=29),r>n)throw new TypeError(`Invalid day for ${lr[t]} in ${e}: ${r}`)},Ar=e=>e%4==0&&(e%100!=0||e%400==0),Tr=(e,t,r,n)=>{const i=(e=>Xt("string"==typeof e?ir(e):e))(Or(e));if(in)throw new TypeError(`${t} must be between ${r} and ${n}, inclusive`);return i},Cr=e=>null==e?0:1e3*(e=>Vt("string"==typeof e?ir(e):e))("0."+e),Rr=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},Or=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},Ir=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"]}),Mr=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{}}},Nr=e=>{const t=[];for(const r in B){const n=B[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}}},Fr=e=>{const t={};return e.checksumAlgorithms().forEach((e=>{t[e.algorithmId()]=e.checksumConstructor()})),t},$r=e=>{let t=e.retryStrategy;return{setRetryStrategy(e){t=e},retryStrategy:()=>t}},Ur=e=>{const t={};return t.retryStrategy=e.retryStrategy(),t},Lr=e=>({...Nr(e),...$r(e)}),Br=e=>({...Fr(e),...Ur(e)}),Dr=e=>Array.isArray(e)?e:[e],zr=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]=zr(e[r]));return e},jr=e=>null!=e,qr=function(){const e=Object.getPrototypeOf(this).constructor,t=new(Function.bind.apply(String,[null,...arguments]));return Object.setPrototypeOf(t,e.prototype),t};qr.prototype=Object.create(String.prototype,{constructor:{value:qr,enumerable:!1,writable:!0,configurable:!0}}),Object.setPrototypeOf(qr,String);class Hr{trace(){}debug(){}info(){}warn(){}error(){}}function Wr(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,Kr(n,i,o);o=t}for(const e of Object.keys(o))Array.isArray(o[e])?Vr(n,null,o,e):n[e]=o[e];return n}const Kr=(e,t,r)=>Wr(e,Object.entries(r).reduce(((e,[r,n])=>(Array.isArray(n)?e[r]=n:e[r]="function"==typeof n?[t,n()]:[t,n],e)),{})),Vr=(e,t,r,n)=>{if(null!==t){let i=r[n];"function"==typeof i&&(i=[,i]);const[o=Qr,s=Gr,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)}},Qr=e=>null!=e,Gr=e=>e;function Jr(e){return(e.includes(",")||e.includes('"'))&&(e=`"${e.replace(/"/g,'\\"')}"`),e}function Xr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Zr={},Yr={};!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 hn("InvalidXml","XML declaration allowed only at the start of the document.",pn(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function on(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}Zr.validate=function(e,t){t=Object.assign({},tn,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,!en.isName(o)){let t;return t=0===u.trim().length?"Invalid space after '<'.":"Tag '"+u+"' is an invalid name.",hn("InvalidTag",t,pn(e,s))}const d=cn(e,s);if(!1===d)return hn("InvalidAttr","Attributes for '"+u+"' have open quote.",pn(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=dn(l,t);if(!0!==i)return hn(i.err.code,i.err.msg,pn(e,r+i.err.line));n=!0}else if(c){if(!d.tagClosed)return hn("InvalidTag","Closing tag '"+u+"' doesn't have proper closing.",pn(e,s));if(l.trim().length>0)return hn("InvalidTag","Closing tag '"+u+"' can't have attributes or invalid starting.",pn(e,a));if(0===r.length)return hn("InvalidTag","Closing tag '"+u+"' has not been opened.",pn(e,a));{const t=r.pop();if(u!==t.tagName){let r=pn(e,t.tagStartPos);return hn("InvalidTag","Expected closing tag '"+t.tagName+"' (opened in line "+r.line+", col "+r.col+") instead of closing tag '"+u+"'.",pn(e,a))}0==r.length&&(i=!0)}}else{const o=dn(l,t);if(!0!==o)return hn(o.err.code,o.err.msg,pn(e,s-l.length+o.err.line));if(!0===i)return hn("InvalidXml","Multiple possible root nodes found.",pn(e,s));-1!==t.unpairedTags.indexOf(u)||r.push({tagName:u,tagStartPos:a}),n=!0}for(s++;s0)||hn("InvalidXml","Invalid '"+JSON.stringify(r.map((e=>e.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):hn("InvalidXml","Start tag expected.",1)};const sn='"',an="'";function cn(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 un=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function dn(e,t){const r=en.getAllMatches(e,un),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}};mn.buildOptions=function(e){return Object.assign({},yn,e)},mn.defaultOptions=yn;var vn=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})}};const bn=Yr;function wn(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&&Sn(e,t))t+=7,[entityName,val,t]=wn(e,t+1),-1===val.indexOf("&")&&(r[Tn(entityName)]={regx:RegExp(`&${entityName};`,"g"),val:val});else if(i&&En(e,t))t+=8;else if(i&&xn(e,t))t+=8;else if(i&&An(e,t))t+=9;else{if(!kn)throw new Error("Invalid DOCTYPE");o=!0}n++,s=""}if(0!==n)throw new Error("Unclosed DOCTYPE")}return{entities:r,i:t}};const Rn=/^[-+]?0x[a-fA-F0-9]+$/,On=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const Pn={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};const _n=Yr,In=vn,Mn=Cn,Nn=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(t.hex&&Rn.test(r))return Number.parseInt(r,16);{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]);const a=n[4]||n[6];if(!t.leadingZeros&&o.length>0&&i&&"."!==r[2])return e;if(!t.leadingZeros&&o.length>0&&!i&&"."!==r[1])return e;{const n=Number(r),c=""+n;return-1!==c.search(/[eE]/)||a?t.eNotation?n:e:-1!==r.indexOf(".")?"0"===c&&""===s||c===s||i&&c==="-"+s?n:e:o?s===c||i+s===c?n:e:r===c||r===i+c?n:e}}return e}};function Fn(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 Qn(e,this.options.parseTagValue,this.options.numberParseOptions);return e.trim()===e?Qn(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function Un(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 Ln=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function Bn(e,t,r){if(!this.options.ignoreAttributes&&"string"==typeof e){const r=_n.getAllMatches(e,Ln),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=Kn(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 In(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=Wn(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=Mn(e,o);this.docTypeEntities=t.entities,o=t.i}else if("!["===e.substr(o+1,2)){const t=Wn(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=Kn(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 In(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 In(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 In(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 zn(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 jn=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 qn(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 Wn(e,t,r,n){const i=e.indexOf(t,r);if(-1===i)throw new Error(n);return i+t.length-1}function Kn(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=Wn(e,"?>",r+1,"StopNode is not closed.")}else if("!--"===e.substr(r+1,3)){r=Wn(e,"--\x3e",r+3,"StopNode is not closed.")}else if("!["===e.substr(r+1,2)){r=Wn(e,"]]>",r,"StopNode is not closed.")-2}else{const n=Kn(e,r,">");if(n){(n&&n.tagName)===t&&"/"!==n.tagExp[n.tagExp.length-1]&&i++,r=n.closeIndex}}}function Qn(e,t,r){if(t&&"string"==typeof e){const t=e.trim();return"true"===t||"false"!==t&&Nn(e,r)}return _n.isExist(e)?e:""}var Gn=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=Fn,this.parseXml=Dn,this.parseTextData=$n,this.resolveNameSpace=Un,this.buildAttributesMap=Bn,this.isItStopNode=Hn,this.replaceEntitiesValue=jn,this.readStopNodeData=Vn,this.saveTextToParentTag=qn,this.addChild=zn}},Jn={};function Xn(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 Zn(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=ci(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}${ci(a[":@"],t)}`,h=si(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 ai(e){const t=Object.keys(e);for(let r=0;r0&&t.processEntities)for(let r=0;r0&&(r="\n"),si(e,t,"",r)},hi={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 fi(e){this.options=Object.assign({},hi,e),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=mi),this.processTextOrObjNode=pi,this.options.format?(this.indentate=gi,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function pi(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 gi(e){return this.options.indentBy.repeat(e)}function mi(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}fi.prototype.build=function(e){return this.options.preserveOrder?li(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0).val)},fi.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}},fi.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)=>Ge(e,t).then((e=>t.utf8Encoder(e))))(e,t).then((e=>{if(e.length){const t=new yi.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]),zr(o)}return{}})),bi=async(e,t)=>{const r=await vi(e,t);return r.Error&&(r.Error.message=r.Error.message??r.Error.Message),r},wi=[X.CRC32,X.CRC32C,X.SHA1,X.SHA256],ki=[X.SHA256,X.SHA1,X.CRC32,X.CRC32C],Si=e=>e===X.MD5?"content-md5":`x-amz-checksum-${e.toLowerCase()}`,Ei=e=>void 0!==e&&"string"!=typeof e&&!ArrayBuffer.isView(e)&&!Et(e);function xi(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 Ai(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 Ci(e){return e instanceof Uint8Array?e:"string"==typeof e?Ti(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e)}function Ri(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^Mi[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}(),Mi=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 Ni(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 Fi(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^Li[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}(),Li=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)=>({[X.MD5]:t.md5,[X.CRC32]:$i,[X.CRC32C]:_i,[X.SHA1]:t.sha1,[X.SHA256]:t.sha256}[e]),Di=(e,t)=>{const r=new e;return r.update(Te(t||"")),r.digest()},zi={name:"flexibleChecksumsMiddleware",step:"build",tags:["BODY_CHECKSUM"],override:!0},ji=(e,t)=>(r,n)=>async i=>{if(!H.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?ee:Y;if(!r||!e[r])return t?i:void 0;const o=e[r];if(!wi.includes(o))throw new Error(`The checksum algorithm "${o}" is not supported by the client. Select one of ${wi}.`);return o})(s,{requestChecksumRequired:l,requestAlgorithmMember:h},!!n.isS3ExpressBucket);let p=a,g=c;if(f){switch(f){case X.CRC32:re(n,"FLEXIBLE_CHECKSUMS_REQ_CRC32","U");break;case X.CRC32C:re(n,"FLEXIBLE_CHECKSUMS_REQ_CRC32C","V");break;case X.SHA1:re(n,"FLEXIBLE_CHECKSUMS_REQ_SHA1","X");break;case X.SHA256:re(n,"FLEXIBLE_CHECKSUMS_REQ_SHA256","Y")}const t=Si(f),r=Bi(f,e);if(Ei(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 Di(r,a);g={...c,[t]:u(e)}}}return await r({...i,request:{...o,headers:g,body:p}})},qi=(e=[])=>{const t=[];for(const r of ki)e.includes(r)&&wi.includes(r)&&t.push(r);return t};function Hi(e){return new Blob([e]).stream()}const Wi=async(e,{checksumAlgorithmFn:t,base64Encoder:r})=>r(await Di(t,e)),Ki={name:"flexibleChecksumsResponseMiddleware",toMiddleware:"deserializerMiddleware",relation:"after",tags:["BODY_CHECKSUM"],override:!0},Vi=(e,t)=>(r,n)=>async i=>{if(!H.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&&qi(d).every((e=>{const t=Si(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=Ei(a.body);i&&(c=await e.streamCollector(a.body),a.body=Hi(c)),await(async(e,{config:t,responseAlgorithms:r})=>{const n=qi(r),{body:i,headers:o}=e;for(const r of n){const n=Si(r),s=o[n];if(s){const o=Bi(r,t),{base64Encoder:a}=t;if(Ei(i))return void(e.body=Qe({expectedChecksum:s,checksumSourceLocation:n,checksum:new o,source:i,base64Encoder:a}));const c=await Wi(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},Qi=(e,t)=>({applyToStack:r=>{r.add(ji(e,t),zi),r.addRelativeTo(Vi(e,t),Ki)}});const Gi={name:"hostHeaderMiddleware",step:"build",priority:"low",tags:["HOST"],override:!0},Ji=e=>({applyToStack:t=>{t.add((e=>t=>async r=>{if(!H.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),Gi)}}),Xi={name:"loggerMiddleware",tags:["LOGGER"],step:"initialize",override:!0},Zi="X-Amzn-Trace-Id",Yi={step:"build",tags:["RECURSION_DETECTION"],name:"recursionDetectionMiddleware",override:!0,priority:"low"},eo=e=>({applyToStack:t=>{t.add((e=>t=>async r=>{const{request:n}=r;if(!H.isInstance(n)||"node"!==e.runtime||n.headers.hasOwnProperty(Zi))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[Zi]=o),t({...r,request:n})})(e),Yi)}});const to={step:"finalizeRequest",tags:["CHECK_CONTENT_LENGTH_HEADER"],name:"getCheckContentLengthHeaderPlugin",override:!0},ro=e=>({applyToStack:e=>{e.add(((e,t)=>async r=>{const{request:n}=r;if(H.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 Hr?console.warn(e):t.logger.warn(e)}return e({...r})}),to)}}),no={tags:["REGION_REDIRECT","S3"],name:"regionRedirectEndpointMiddleware",override:!0,relation:"before",toMiddleware:"endpointV2Middleware"};const io={step:"initialize",tags:["REGION_REDIRECT","S3"],name:"regionRedirectMiddleware",override:!0},oo=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),io),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),no)}}),so={tags:["S3"],name:"s3ExpiresMiddleware",override:!0,relation:"after",toMiddleware:"deserializerMiddleware"},ao=e=>({applyToStack:e=>{e.addRelativeTo(((e,t)=>async r=>{const n=await e(r),{response:i}=n;if(W.isInstance(i)&&i.headers.expires){i.headers.expiresstring=i.headers.expires;try{vr(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}),so)}});class co{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+co.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 uo(Promise.resolve(e)))}))),e})):n.set(r,new uo(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 ho;lo.REFRESH_WINDOW_MS=6e4,function(e){e.ENV="env",e.CONFIG="shared config entry"}(ho||(ho={}));const fo="X-Amz-S3session-Token",po=fo.toLowerCase();class go extends It{async signWithCredentials(e,t,r){const n=mo(t);e.headers[po]=t.sessionToken;return yo(this,n),this.signRequest(e,r??{})}async presignWithCredentials(e,t,r){const n=mo(t);delete e.headers[po],e.headers[fo]=t.sessionToken,e.query=e.query??{},e.query[fo]=t.sessionToken;return yo(this,n),this.presign(e,r)}}function mo(e){return{accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey,expiration:e.expiration}}function yo(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 vo={name:"s3ExpressMiddleware",step:"build",tags:["S3","S3_EXPRESS"],override:!0},bo=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)&&(re(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,H.isInstance(n.request)&&i.sessionToken&&(n.request.headers[po]=i.sessionToken)}}}return t(n)})(e),vo)}}),wo=e=>e=>{throw e},ko=(e,t)=>{},So=e=>(t,r)=>async n=>{if(!H.isInstance(n.request))return t(n);const i=de(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||wo)(o));return(a.successHandler||ko)(u.response,o),u},Eo={CopyObjectCommand:!0,UploadPartCopyCommand:!0,CompleteMultipartUploadCommand:!0},xo=e=>(t,r)=>async n=>{const i=await t(n),{response:o}=i;if(!W.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 Ao(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&&Eo[r.commandName]){const e=new Error("S3 aborted request");throw e.name="InternalError",e}return l&&l.endsWith("")&&(o.statusCode=400),i},Ao=(e=new Uint8Array,t)=>e instanceof Uint8Array?Promise.resolve(e):t.streamCollector(e)||Promise.resolve(new Uint8Array),To={relation:"after",toMiddleware:"deserializerMiddleware",tags:["THROW_200_EXCEPTIONS","S3"],name:"throw200ExceptionsMiddleware",override:!0},Co=e=>({applyToStack:t=>{t.addRelativeTo(xo(e),To)}});const Ro={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),Ro)}});const _o=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}$"),Io=e=>_o.test(e)||e.startsWith("[")&&e.endsWith("]"),Mo=new RegExp("^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$"),No=(e,t=!1)=>{if(!t)return Mo.test(e);const r=e.split(".");for(const e of r)if(!No(e))return!1;return!0},Fo={},$o="endpoints";function Uo(e){return"object"!=typeof e||null==e?e:"ref"in e?`$${Uo(e.ref)}`:"fn"in e?`${e.fn}(${(e.argv||[]).map(Uo).join(", ")})`:JSON.stringify(e,null,2)}class Lo 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 Lo(`Path: '${e}' does not end with ']'`);const i=n.slice(t+1,-1);if(Number.isNaN(parseInt(i)))throw new Lo(`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 Lo(`Index '${n}' in '${t}' not found in '${JSON.stringify(e)}'`);return Array.isArray(r)?r[parseInt(n)]:r[n]}),e),Do={[L.HTTP]:80,[L.HTTPS]:443},zo={booleanEquals:(e,t)=>e===t,getAttr:Bo,isSet:e=>null!=e,isValidHostLabel:No,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(L).includes(c))return null;const u=Io(i);return{scheme:c,authority:`${n}${r.includes(`${n}:${Do[c]}`)||"string"==typeof e&&e.includes(`${n}:${Do[c]}`)?`:${Do[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()}`))},jo=(e,t)=>{const r=[],n={...t.endpointParams,...t.referenceRecord};let i=0;for(;i{if("string"==typeof e)return jo(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 Lo(`'${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:qo(e,"arg",r))),i=e.split(".");return i[0]in Fo&&null!=i[1]?Fo[i[0]][i[1]](...n):zo[e](...n)},Wo=({assign:e,...t},r)=>{if(e&&e in r.referenceRecord)throw new Lo(`'${e}' is already defined in Reference Record.`);const n=Ho(t,r);return r.logger?.debug?.(`${$o} evaluateCondition: ${Uo(t)} = ${Uo(n)}`),{result:""===n||!!n,...null!=e&&{toAssign:{name:e,value:n}}}},Ko=(e=[],t)=>{const r={};for(const n of e){const{result:e,toAssign:i}=Wo(n,{...t,referenceRecord:{...t.referenceRecord,...r}});if(!e)return{result:e};i&&(r[i.name]=i.value,t.logger?.debug?.(`${$o} assign: ${i.name} := ${Uo(i.value)}`))}return{result:!0,referenceRecord:r}},Vo=(e,t)=>Object.entries(e).reduce(((e,[r,n])=>({...e,[r]:n.map((e=>{const n=qo(e,"Header value entry",t);if("string"!=typeof n)throw new Lo(`Header '${r}' value '${n}' is not a string`);return n}))})),{}),Qo=(e,t)=>{if(Array.isArray(e))return e.map((e=>Qo(e,t)));switch(typeof e){case"string":return jo(e,t);case"object":if(null===e)throw new Lo(`Unexpected endpoint property: ${e}`);return Go(e,t);case"boolean":return e;default:throw new Lo("Unexpected endpoint property type: "+typeof e)}},Go=(e,t)=>Object.entries(e).reduce(((e,[r,n])=>({...e,[r]:Qo(n,t)})),{}),Jo=(e,t)=>{const r=qo(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 Lo("Endpoint URL must be a string, got "+typeof r)},Xo=(e,t)=>{const{conditions:r,endpoint:n}=e,{result:i,referenceRecord:o}=Ko(r,t);if(!i)return;const s={...t,referenceRecord:{...t.referenceRecord,...o}},{url:a,properties:c,headers:u}=n;return t.logger?.debug?.(`${$o} Resolving endpoint from template: ${Uo(n)}`),{...null!=u&&{headers:Vo(u,s)},...null!=c&&{properties:Go(c,s)},url:Jo(a,s)}},Zo=(e,t)=>{const{conditions:r,error:n}=e,{result:i,referenceRecord:o}=Ko(r,t);if(i)throw new Lo(qo(n,"Error",{...t,referenceRecord:{...t.referenceRecord,...o}}))},Yo=(e,t)=>{const{conditions:r,rules:n}=e,{result:i,referenceRecord:o}=Ko(r,t);if(i)return es(n,{...t,referenceRecord:{...t.referenceRecord,...o}})},es=(e,t)=>{for(const r of e)if("endpoint"===r.type){const e=Xo(r,t);if(e)return e}else if("error"===r.type)Zo(r,t);else{if("tree"!==r.type)throw new Lo(`Unknown endpoint rule: ${r}`);{const e=Yo(r,t);if(e)return e}}throw new Lo("Rules evaluation failed")},ts=(e,t=!1)=>{if(t){for(const t of e.split("."))if(!ts(t))return!1;return!0}return!!No(e)&&(!(e.length<3||e.length>63)&&(e===e.toLowerCase()&&!Io(e)))};let rs={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 ns={isVirtualHostableS3Bucket:ts,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}=rs;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}}};Fo.aws=ns;const is=/\d{12}\.ddb/;const os="user-agent",ss="x-amz-user-agent",as=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w]/g,cs=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w\#]/g;const us=e=>(t,r)=>async n=>{const{request:i}=n;if(!H.isInstance(i))return t(n);const{headers:o}=i,s=r?.userAgent?.map(ds)||[],a=(await e.defaultUserAgentProvider()).map(ds);await async function(e,t,r){const n=r.request;if("rpc-v2-cbor"===n?.headers?.["smithy-protocol"]&&re(e,"PROTOCOL_RPC_V2_CBOR","M"),"function"==typeof t.retryStrategy){const r=await t.retryStrategy();"function"==typeof r.acquireInitialRetryToken?r.constructor?.name?.includes("Adaptive")?re(e,"RETRY_MODE_ADAPTIVE","F"):re(e,"RETRY_MODE_STANDARD","E"):re(e,"RETRY_MODE_LEGACY","D")}if("function"==typeof t.accountIdEndpointMode){const r=e.endpointV2;switch(String(r?.url?.hostname).match(is)&&re(e,"ACCOUNT_ID_ENDPOINT","O"),await(t.accountIdEndpointMode?.())){case"disabled":re(e,"ACCOUNT_ID_MODE_DISABLED","Q");break;case"preferred":re(e,"ACCOUNT_ID_MODE_PREFERRED","P");break;case"required":re(e,"ACCOUNT_ID_MODE_REQUIRED","R")}}const i=e.__smithy_context?.selectedHttpAuthScheme?.identity;if(i?.$source){const t=i;t.accountId&&re(e,"RESOLVED_ACCOUNT_ID","T");for(const[r,n]of Object.entries(t.$source??{}))re(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(ds)||[],d=await e.userAgentAppId();d&&a.push(ds([`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[ss]=o[ss]?`${o[os]} ${h}`:h),o[os]=l):o[ss]=l,t({...n,request:i})},ds=e=>{const t=e[0].split("/").map((e=>e.replace(as,"-"))).join("/"),r=e[1]?.replace(cs,"-"),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}`}}),"")},ls={name:"getUserAgentMiddleware",step:"build",priority:"low",tags:["SET_USER_AGENT","USER_AGENT"],override:!0},hs=e=>"string"==typeof e&&(e.startsWith("fips-")||e.endsWith("-fips")),fs=e=>hs(e)?["fips-aws-global","aws-fips"].includes(e)?"us-east-1":e.replace(/fips-(dkr-|prod-)?|-fips/,""):e,ps="content-length";const gs={step:"build",tags:["SET_CONTENT_LENGTH","CONTENT_LENGTH"],name:"contentLengthMiddleware",override:!0},ms=e=>({applyToStack:t=>{var r;t.add((r=e.bodyLengthChecker,e=>async t=>{const n=t.request;if(H.isInstance(n)){const{body:e,headers:t}=n;if(e&&-1===Object.keys(t).map((e=>e.toLowerCase())).indexOf(ps))try{const t=r(e);n.headers={...n.headers,[ps]:String(t)}}catch(e){}}return e({...t,request:n})}),gs)}}),ys=/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/,vs=/(\d+\.){3}\d+/,bs=/\.\./,ws=e=>ys.test(e)&&!vs.test(e)&&!bs.test(e),ks=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},Ss=(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},Es=async e=>{};const xs=e=>{if("string"==typeof e)return xs(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}},As=e=>"object"==typeof e?"url"in e?xs(e.url):e:xs(e),Ts=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 Ss(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("?"))),ks(t)){if(!0===e.ForcePathStyle)throw new Error("Path-style addressing cannot be used with ARN buckets")}else(!ws(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},Cs=({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 Es(r.serviceId),e&&(r.endpoint=()=>Promise.resolve(As(e)))}const i=await Ts(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=de(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})},Rs={step:"serialize",tags:["ENDPOINT_PARAMETERS","ENDPOINT_V2","ENDPOINT"],name:"endpointV2Middleware",override:!0,relation:"before",toMiddleware:ge.name},Os=(e,t)=>({applyToStack:r=>{r.addRelativeTo(Cs({config:e,instructions:t}),Rs)}});var Ps;!function(e){e.STANDARD="standard",e.ADAPTIVE="adaptive"}(Ps||(Ps={}));const _s=Ps.STANDARD,Is=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],Ms=["TimeoutError","RequestTimeout","RequestTimeoutException"],Ns=[500,502,503,504],Fs=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],$s=e=>429===e.$metadata?.httpStatusCode||Is.includes(e.name)||1==e.$retryable?.throttling,Us=e=>(e=>e.$metadata?.clockSkewCorrected)(e)||Ms.includes(e.name)||Fs.includes(e?.code||"")||Ns.includes(e.$metadata?.httpStatusCode||0);class Ls{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=>Ls.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(),$s(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))}}Ls.setTimeoutFn=setTimeout;const Bs=({retryDelay:e,retryCount:t,retryCost:r})=>({getRetryCount:()=>t,getRetryDelay:()=>Math.min(2e4,e),getRetryCost:()=>r});class Ds{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 zs{constructor(e,t){this.maxAttemptsProvider=e,this.mode=Ps.ADAPTIVE;const{rateLimiter:r}=t??{};this.rateLimiter=r??new Ls,this.standardRetryStrategy=new Ds(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 js;const qs=new Uint8Array(16);function Hs(){if(!js&&(js="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!js))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return js(qs)}const Ws=[];for(let e=0;e<256;++e)Ws.push((e+256).toString(16).slice(1));var Ks={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Vs(e,t,r){if(Ks.randomUUID&&!t&&!e)return Ks.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 Ws[e[t+0]]+Ws[e[t+1]]+Ws[e[t+2]]+Ws[e[t+3]]+"-"+Ws[e[t+4]]+Ws[e[t+5]]+"-"+Ws[e[t+6]]+Ws[e[t+7]]+"-"+Ws[e[t+8]]+Ws[e[t+9]]+"-"+Ws[e[t+10]]+Ws[e[t+11]]+Ws[e[t+12]]+Ws[e[t+13]]+Ws[e[t+14]]+Ws[e[t+15]]}(n)}const Qs=e=>e?.body instanceof ReadableStream,Gs=e=>void 0!==e.acquireInitialRetryToken&&void 0!==e.refreshRetryTokenForRetry&&void 0!==e.recordSuccess,Js=e=>{const t={error:e,errorType:Xs(e)},r=ea(e.$response);return r&&(t.retryAfterHint=r),t},Xs=e=>$s(e)?"THROTTLING":Us(e)?"TRANSIENT":(e=>{if(void 0!==e.$metadata?.httpStatusCode){const t=e.$metadata.httpStatusCode;return 500<=t&&t<=599&&!Us(e)}return!1})(e)?"SERVER_ERROR":"CLIENT_ERROR",Zs={name:"retryMiddleware",tags:["RETRY"],step:"finalizeRequest",priority:"high",override:!0},Ys=e=>({applyToStack:t=>{t.add((e=>(t,r)=>async n=>{let i=await e.retryStrategy();const o=await e.maxAttempts();if(!Gs(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=H.isInstance(d);for(l&&(d.headers["amz-sdk-invocation-id"]=Vs());;)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=Js(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&&Qs(d))throw(r.logger instanceof Hr?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),Zs)}}),ea=e=>{if(!W.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)},ta=null;class ra{constructor(e){this.sigv4Signer=new go(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=ta,"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 na="required",ia="type",oa="conditions",sa="fn",aa="argv",ca="ref",ua="assign",da="url",la="properties",ha="backend",fa="authSchemes",pa="disableDoubleEncoding",ga="signingName",ma="signingRegion",ya="headers",va="signingRegionSet",ba=!0,wa="isSet",ka="booleanEquals",Sa="error",Ea="aws.partition",xa="stringEquals",Aa="getAttr",Ta="name",Ca="substring",Ra="bucketSuffix",Oa="parseURL",Pa="{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}",_a="endpoint",Ia="tree",Ma="aws.isVirtualHostableS3Bucket",Na="{url#scheme}://{Bucket}.{url#authority}{url#path}",Fa="not",$a="{url#scheme}://{url#authority}{url#path}",Ua="hardwareType",La="regionPrefix",Ba="bucketAliasSuffix",Da="outpostId",za="isValidHostLabel",ja="sigv4a",qa="s3-outposts",Ha="s3",Wa="{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}",Ka="https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}",Va="https://{Bucket}.s3.{partitionResult#dnsSuffix}",Qa="aws.parseArn",Ga="bucketArn",Ja="arnType",Xa="s3-object-lambda",Za="accesspoint",Ya="accessPointName",ec="{url#scheme}://{accessPointName}-{bucketArn#accountId}.{url#authority}{url#path}",tc="mrapPartition",rc="outpostType",nc="arnPrefix",ic="{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}",oc="https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",sc="https://s3.{partitionResult#dnsSuffix}",ac={[na]:!1,[ia]:"String"},cc={[na]:!0,default:!1,[ia]:"Boolean"},uc={[na]:!1,[ia]:"Boolean"},dc={[sa]:ka,[aa]:[{[ca]:"Accelerate"},!0]},lc={[sa]:ka,[aa]:[{[ca]:"UseFIPS"},!0]},hc={[sa]:ka,[aa]:[{[ca]:"UseDualStack"},!0]},fc={[sa]:wa,[aa]:[{[ca]:"Endpoint"}]},pc={[sa]:Ea,[aa]:[{[ca]:"Region"}],[ua]:"partitionResult"},gc={[sa]:xa,[aa]:[{[sa]:Aa,[aa]:[{[ca]:"partitionResult"},Ta]},"aws-cn"]},mc={[sa]:wa,[aa]:[{[ca]:"Bucket"}]},yc={[ca]:"Bucket"},vc={[sa]:Oa,[aa]:[{[ca]:"Endpoint"}],[ua]:"url"},bc={[sa]:ka,[aa]:[{[sa]:Aa,[aa]:[{[ca]:"url"},"isIp"]},!0]},wc={[ca]:"url"},kc={[sa]:"uriEncode",[aa]:[yc],[ua]:"uri_encoded_bucket"},Sc={[ha]:"S3Express",[fa]:[{[pa]:!0,[Ta]:"sigv4",[ga]:"s3express",[ma]:"{Region}"}]},Ec={},xc={[sa]:Ma,[aa]:[yc,!1]},Ac={[Sa]:"S3Express bucket name is not a valid virtual hostable name.",[ia]:Sa},Tc={[ha]:"S3Express",[fa]:[{[pa]:!0,[Ta]:"sigv4-s3express",[ga]:"s3express",[ma]:"{Region}"}]},Cc={[sa]:wa,[aa]:[{[ca]:"UseS3ExpressControlEndpoint"}]},Rc={[sa]:ka,[aa]:[{[ca]:"UseS3ExpressControlEndpoint"},!0]},Oc={[sa]:Fa,[aa]:[fc]},Pc={[Sa]:"Unrecognized S3Express bucket name format.",[ia]:Sa},_c={[sa]:Fa,[aa]:[mc]},Ic={[ca]:Ua},Mc={[oa]:[Oc],[Sa]:"Expected a endpoint to be specified but no endpoint was found",[ia]:Sa},Nc={[fa]:[{[pa]:!0,[Ta]:ja,[ga]:qa,[va]:["*"]},{[pa]:!0,[Ta]:"sigv4",[ga]:qa,[ma]:"{Region}"}]},Fc={[sa]:ka,[aa]:[{[ca]:"ForcePathStyle"},!1]},$c={[ca]:"ForcePathStyle"},Uc={[sa]:ka,[aa]:[{[ca]:"Accelerate"},!1]},Lc={[sa]:xa,[aa]:[{[ca]:"Region"},"aws-global"]},Bc={[fa]:[{[pa]:!0,[Ta]:"sigv4",[ga]:Ha,[ma]:"us-east-1"}]},Dc={[sa]:Fa,[aa]:[Lc]},zc={[sa]:ka,[aa]:[{[ca]:"UseGlobalEndpoint"},!0]},jc={[da]:"https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",[la]:{[fa]:[{[pa]:!0,[Ta]:"sigv4",[ga]:Ha,[ma]:"{Region}"}]},[ya]:{}},qc={[fa]:[{[pa]:!0,[Ta]:"sigv4",[ga]:Ha,[ma]:"{Region}"}]},Hc={[sa]:ka,[aa]:[{[ca]:"UseGlobalEndpoint"},!1]},Wc={[sa]:ka,[aa]:[{[ca]:"UseDualStack"},!1]},Kc={[da]:"https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}",[la]:qc,[ya]:{}},Vc={[sa]:ka,[aa]:[{[ca]:"UseFIPS"},!1]},Qc={[da]:"https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}",[la]:qc,[ya]:{}},Gc={[da]:"https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}",[la]:qc,[ya]:{}},Jc={[sa]:ka,[aa]:[{[sa]:Aa,[aa]:[wc,"isIp"]},!1]},Xc={[da]:Wa,[la]:qc,[ya]:{}},Zc={[da]:Na,[la]:qc,[ya]:{}},Yc={[_a]:Zc,[ia]:_a},eu={[da]:Ka,[la]:qc,[ya]:{}},tu={[da]:"https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}",[la]:qc,[ya]:{}},ru={[Sa]:"Invalid region: region was not a valid DNS name.",[ia]:Sa},nu={[ca]:Ga},iu={[ca]:Ja},ou={[sa]:Aa,[aa]:[nu,"service"]},su={[ca]:Ya},au={[oa]:[hc],[Sa]:"S3 Object Lambda does not support Dual-stack",[ia]:Sa},cu={[oa]:[dc],[Sa]:"S3 Object Lambda does not support S3 Accelerate",[ia]:Sa},uu={[oa]:[{[sa]:wa,[aa]:[{[ca]:"DisableAccessPoints"}]},{[sa]:ka,[aa]:[{[ca]:"DisableAccessPoints"},!0]}],[Sa]:"Access points are not supported for this operation",[ia]:Sa},du={[oa]:[{[sa]:wa,[aa]:[{[ca]:"UseArnRegion"}]},{[sa]:ka,[aa]:[{[ca]:"UseArnRegion"},!1]},{[sa]:Fa,[aa]:[{[sa]:xa,[aa]:[{[sa]:Aa,[aa]:[nu,"region"]},"{Region}"]}]}],[Sa]:"Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`",[ia]:Sa},lu={[sa]:Aa,[aa]:[{[ca]:"bucketPartition"},Ta]},hu={[sa]:Aa,[aa]:[nu,"accountId"]},fu={[fa]:[{[pa]:!0,[Ta]:"sigv4",[ga]:Xa,[ma]:"{bucketArn#region}"}]},pu={[Sa]:"Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName}`",[ia]:Sa},gu={[Sa]:"Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`",[ia]:Sa},mu={[Sa]:"Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)",[ia]:Sa},yu={[Sa]:"Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`",[ia]:Sa},vu={[Sa]:"Invalid ARN: The ARN may only contain a single resource component after `accesspoint`.",[ia]:Sa},bu={[Sa]:"Invalid ARN: Expected a resource of the format `accesspoint:` but no name was provided",[ia]:Sa},wu={[fa]:[{[pa]:!0,[Ta]:"sigv4",[ga]:Ha,[ma]:"{bucketArn#region}"}]},ku={[fa]:[{[pa]:!0,[Ta]:ja,[ga]:qa,[va]:["*"]},{[pa]:!0,[Ta]:"sigv4",[ga]:qa,[ma]:"{bucketArn#region}"}]},Su={[sa]:Qa,[aa]:[yc]},Eu={[da]:"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[la]:qc,[ya]:{}},xu={[da]:"https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[la]:qc,[ya]:{}},Au={[da]:"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[la]:qc,[ya]:{}},Tu={[da]:ic,[la]:qc,[ya]:{}},Cu={[da]:"https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[la]:qc,[ya]:{}},Ru={[ca]:"UseObjectLambdaEndpoint"},Ou={[fa]:[{[pa]:!0,[Ta]:"sigv4",[ga]:Xa,[ma]:"{Region}"}]},Pu={[da]:"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",[la]:qc,[ya]:{}},_u={[da]:"https://s3-fips.{Region}.{partitionResult#dnsSuffix}",[la]:qc,[ya]:{}},Iu={[da]:"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}",[la]:qc,[ya]:{}},Mu={[da]:$a,[la]:qc,[ya]:{}},Nu={[da]:"https://s3.{Region}.{partitionResult#dnsSuffix}",[la]:qc,[ya]:{}},Fu=[{[ca]:"Region"}],$u=[{[ca]:"Endpoint"}],Uu=[yc],Lu=[hc],Bu=[dc],Du=[fc,vc],zu=[{[sa]:wa,[aa]:[{[ca]:"DisableS3ExpressSessionAuth"}]},{[sa]:ka,[aa]:[{[ca]:"DisableS3ExpressSessionAuth"},!0]}],ju=[bc],qu=[kc],Hu=[xc],Wu=[lc],Ku=[{[sa]:Ca,[aa]:[yc,6,14,!0],[ua]:"s3expressAvailabilityZoneId"},{[sa]:Ca,[aa]:[yc,14,16,!0],[ua]:"s3expressAvailabilityZoneDelim"},{[sa]:xa,[aa]:[{[ca]:"s3expressAvailabilityZoneDelim"},"--"]}],Vu=[{[oa]:[lc],[_a]:{[da]:"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[la]:Sc,[ya]:{}},[ia]:_a},{[_a]:{[da]:"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[la]:Sc,[ya]:{}},[ia]:_a}],Qu=[{[sa]:Ca,[aa]:[yc,6,15,!0],[ua]:"s3expressAvailabilityZoneId"},{[sa]:Ca,[aa]:[yc,15,17,!0],[ua]:"s3expressAvailabilityZoneDelim"},{[sa]:xa,[aa]:[{[ca]:"s3expressAvailabilityZoneDelim"},"--"]}],Gu=[{[oa]:[lc],[_a]:{[da]:"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[la]:Tc,[ya]:{}},[ia]:_a},{[_a]:{[da]:"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[la]:Tc,[ya]:{}},[ia]:_a}],Ju=[mc],Xu=[{[sa]:za,[aa]:[{[ca]:Da},!1]}],Zu=[{[sa]:xa,[aa]:[{[ca]:La},"beta"]}],Yu=[pc],ed=[{[sa]:za,[aa]:[{[ca]:"Region"},!1]}],td=[{[sa]:xa,[aa]:[{[ca]:"Region"},"us-east-1"]}],rd=[{[sa]:xa,[aa]:[iu,Za]}],nd=[{[sa]:Aa,[aa]:[nu,"resourceId[1]"],[ua]:Ya},{[sa]:Fa,[aa]:[{[sa]:xa,[aa]:[su,""]}]}],id=[nu,"resourceId[1]"],od=[{[sa]:Fa,[aa]:[{[sa]:xa,[aa]:[{[sa]:Aa,[aa]:[nu,"region"]},""]}]}],sd=[{[sa]:Fa,[aa]:[{[sa]:wa,[aa]:[{[sa]:Aa,[aa]:[nu,"resourceId[2]"]}]}]}],ad=[nu,"resourceId[2]"],cd=[{[sa]:Ea,[aa]:[{[sa]:Aa,[aa]:[nu,"region"]}],[ua]:"bucketPartition"}],ud=[{[sa]:xa,[aa]:[lu,{[sa]:Aa,[aa]:[{[ca]:"partitionResult"},Ta]}]}],dd=[{[sa]:za,[aa]:[{[sa]:Aa,[aa]:[nu,"region"]},!0]}],ld=[{[sa]:za,[aa]:[hu,!1]}],hd=[{[sa]:za,[aa]:[su,!1]}],fd=[{[sa]:za,[aa]:[{[ca]:"Region"},!0]}],pd={version:"1.0",parameters:{Bucket:ac,Region:ac,UseFIPS:cc,UseDualStack:cc,Endpoint:ac,ForcePathStyle:cc,Accelerate:cc,UseGlobalEndpoint:cc,UseObjectLambdaEndpoint:uc,Key:ac,Prefix:ac,CopySource:ac,DisableAccessPoints:uc,DisableMultiRegionAccessPoints:cc,UseArnRegion:uc,UseS3ExpressControlEndpoint:uc,DisableS3ExpressSessionAuth:uc},rules:[{[oa]:[{[sa]:wa,[aa]:Fu}],rules:[{[oa]:[dc,lc],error:"Accelerate cannot be used with FIPS",[ia]:Sa},{[oa]:[hc,fc],error:"Cannot set dual-stack in combination with a custom endpoint.",[ia]:Sa},{[oa]:[fc,lc],error:"A custom endpoint cannot be combined with FIPS",[ia]:Sa},{[oa]:[fc,dc],error:"A custom endpoint cannot be combined with S3 Accelerate",[ia]:Sa},{[oa]:[lc,pc,gc],error:"Partition does not support FIPS",[ia]:Sa},{[oa]:[mc,{[sa]:Ca,[aa]:[yc,0,6,ba],[ua]:Ra},{[sa]:xa,[aa]:[{[ca]:Ra},"--x-s3"]}],rules:[{[oa]:Lu,error:"S3Express does not support Dual-stack.",[ia]:Sa},{[oa]:Bu,error:"S3Express does not support S3 Accelerate.",[ia]:Sa},{[oa]:Du,rules:[{[oa]:zu,rules:[{[oa]:ju,rules:[{[oa]:qu,rules:[{endpoint:{[da]:Pa,[la]:Sc,[ya]:Ec},[ia]:_a}],[ia]:Ia}],[ia]:Ia},{[oa]:Hu,rules:[{endpoint:{[da]:Na,[la]:Sc,[ya]:Ec},[ia]:_a}],[ia]:Ia},Ac],[ia]:Ia},{[oa]:ju,rules:[{[oa]:qu,rules:[{endpoint:{[da]:Pa,[la]:Tc,[ya]:Ec},[ia]:_a}],[ia]:Ia}],[ia]:Ia},{[oa]:Hu,rules:[{endpoint:{[da]:Na,[la]:Tc,[ya]:Ec},[ia]:_a}],[ia]:Ia},Ac],[ia]:Ia},{[oa]:[Cc,Rc],rules:[{[oa]:[kc,Oc],rules:[{[oa]:Wu,endpoint:{[da]:"https://s3express-control-fips.{Region}.amazonaws.com/{uri_encoded_bucket}",[la]:Sc,[ya]:Ec},[ia]:_a},{endpoint:{[da]:"https://s3express-control.{Region}.amazonaws.com/{uri_encoded_bucket}",[la]:Sc,[ya]:Ec},[ia]:_a}],[ia]:Ia}],[ia]:Ia},{[oa]:Hu,rules:[{[oa]:zu,rules:[{[oa]:Ku,rules:Vu,[ia]:Ia},{[oa]:Qu,rules:Vu,[ia]:Ia},Pc],[ia]:Ia},{[oa]:Ku,rules:Gu,[ia]:Ia},{[oa]:Qu,rules:Gu,[ia]:Ia},Pc],[ia]:Ia},Ac],[ia]:Ia},{[oa]:[_c,Cc,Rc],rules:[{[oa]:Du,endpoint:{[da]:$a,[la]:Sc,[ya]:Ec},[ia]:_a},{[oa]:Wu,endpoint:{[da]:"https://s3express-control-fips.{Region}.amazonaws.com",[la]:Sc,[ya]:Ec},[ia]:_a},{endpoint:{[da]:"https://s3express-control.{Region}.amazonaws.com",[la]:Sc,[ya]:Ec},[ia]:_a}],[ia]:Ia},{[oa]:[mc,{[sa]:Ca,[aa]:[yc,49,50,ba],[ua]:Ua},{[sa]:Ca,[aa]:[yc,8,12,ba],[ua]:La},{[sa]:Ca,[aa]:[yc,0,7,ba],[ua]:Ba},{[sa]:Ca,[aa]:[yc,32,49,ba],[ua]:Da},{[sa]:Ea,[aa]:Fu,[ua]:"regionPartition"},{[sa]:xa,[aa]:[{[ca]:Ba},"--op-s3"]}],rules:[{[oa]:Xu,rules:[{[oa]:[{[sa]:xa,[aa]:[Ic,"e"]}],rules:[{[oa]:Zu,rules:[Mc,{[oa]:Du,endpoint:{[da]:"https://{Bucket}.ec2.{url#authority}",[la]:Nc,[ya]:Ec},[ia]:_a}],[ia]:Ia},{endpoint:{[da]:"https://{Bucket}.ec2.s3-outposts.{Region}.{regionPartition#dnsSuffix}",[la]:Nc,[ya]:Ec},[ia]:_a}],[ia]:Ia},{[oa]:[{[sa]:xa,[aa]:[Ic,"o"]}],rules:[{[oa]:Zu,rules:[Mc,{[oa]:Du,endpoint:{[da]:"https://{Bucket}.op-{outpostId}.{url#authority}",[la]:Nc,[ya]:Ec},[ia]:_a}],[ia]:Ia},{endpoint:{[da]:"https://{Bucket}.op-{outpostId}.s3-outposts.{Region}.{regionPartition#dnsSuffix}",[la]:Nc,[ya]:Ec},[ia]:_a}],[ia]:Ia},{error:'Unrecognized hardware type: "Expected hardware type o or e but got {hardwareType}"',[ia]:Sa}],[ia]:Ia},{error:"Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`.",[ia]:Sa}],[ia]:Ia},{[oa]:Ju,rules:[{[oa]:[fc,{[sa]:Fa,[aa]:[{[sa]:wa,[aa]:[{[sa]:Oa,[aa]:$u}]}]}],error:"Custom endpoint `{Endpoint}` was not a valid URI",[ia]:Sa},{[oa]:[Fc,xc],rules:[{[oa]:Yu,rules:[{[oa]:ed,rules:[{[oa]:[dc,gc],error:"S3 Accelerate cannot be used in this region",[ia]:Sa},{[oa]:[hc,lc,Uc,Oc,Lc],endpoint:{[da]:"https://{Bucket}.s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[hc,lc,Uc,Oc,Dc,zc],rules:[{endpoint:jc,[ia]:_a}],[ia]:Ia},{[oa]:[hc,lc,Uc,Oc,Dc,Hc],endpoint:jc,[ia]:_a},{[oa]:[Wc,lc,Uc,Oc,Lc],endpoint:{[da]:"https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}",[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[Wc,lc,Uc,Oc,Dc,zc],rules:[{endpoint:Kc,[ia]:_a}],[ia]:Ia},{[oa]:[Wc,lc,Uc,Oc,Dc,Hc],endpoint:Kc,[ia]:_a},{[oa]:[hc,Vc,dc,Oc,Lc],endpoint:{[da]:"https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}",[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[hc,Vc,dc,Oc,Dc,zc],rules:[{endpoint:Qc,[ia]:_a}],[ia]:Ia},{[oa]:[hc,Vc,dc,Oc,Dc,Hc],endpoint:Qc,[ia]:_a},{[oa]:[hc,Vc,Uc,Oc,Lc],endpoint:{[da]:"https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[hc,Vc,Uc,Oc,Dc,zc],rules:[{endpoint:Gc,[ia]:_a}],[ia]:Ia},{[oa]:[hc,Vc,Uc,Oc,Dc,Hc],endpoint:Gc,[ia]:_a},{[oa]:[Wc,Vc,Uc,fc,vc,bc,Lc],endpoint:{[da]:Wa,[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[Wc,Vc,Uc,fc,vc,Jc,Lc],endpoint:{[da]:Na,[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[Wc,Vc,Uc,fc,vc,bc,Dc,zc],rules:[{[oa]:td,endpoint:Xc,[ia]:_a},{endpoint:Xc,[ia]:_a}],[ia]:Ia},{[oa]:[Wc,Vc,Uc,fc,vc,Jc,Dc,zc],rules:[{[oa]:td,endpoint:Zc,[ia]:_a},Yc],[ia]:Ia},{[oa]:[Wc,Vc,Uc,fc,vc,bc,Dc,Hc],endpoint:Xc,[ia]:_a},{[oa]:[Wc,Vc,Uc,fc,vc,Jc,Dc,Hc],endpoint:Zc,[ia]:_a},{[oa]:[Wc,Vc,dc,Oc,Lc],endpoint:{[da]:Ka,[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[Wc,Vc,dc,Oc,Dc,zc],rules:[{[oa]:td,endpoint:eu,[ia]:_a},{endpoint:eu,[ia]:_a}],[ia]:Ia},{[oa]:[Wc,Vc,dc,Oc,Dc,Hc],endpoint:eu,[ia]:_a},{[oa]:[Wc,Vc,Uc,Oc,Lc],endpoint:{[da]:Va,[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[Wc,Vc,Uc,Oc,Dc,zc],rules:[{[oa]:td,endpoint:{[da]:Va,[la]:qc,[ya]:Ec},[ia]:_a},{endpoint:tu,[ia]:_a}],[ia]:Ia},{[oa]:[Wc,Vc,Uc,Oc,Dc,Hc],endpoint:tu,[ia]:_a}],[ia]:Ia},ru],[ia]:Ia}],[ia]:Ia},{[oa]:[fc,vc,{[sa]:xa,[aa]:[{[sa]:Aa,[aa]:[wc,"scheme"]},"http"]},{[sa]:Ma,[aa]:[yc,ba]},Fc,Vc,Wc,Uc],rules:[{[oa]:Yu,rules:[{[oa]:ed,rules:[Yc],[ia]:Ia},ru],[ia]:Ia}],[ia]:Ia},{[oa]:[Fc,{[sa]:Qa,[aa]:Uu,[ua]:Ga}],rules:[{[oa]:[{[sa]:Aa,[aa]:[nu,"resourceId[0]"],[ua]:Ja},{[sa]:Fa,[aa]:[{[sa]:xa,[aa]:[iu,""]}]}],rules:[{[oa]:[{[sa]:xa,[aa]:[ou,Xa]}],rules:[{[oa]:rd,rules:[{[oa]:nd,rules:[au,cu,{[oa]:od,rules:[uu,{[oa]:sd,rules:[du,{[oa]:cd,rules:[{[oa]:Yu,rules:[{[oa]:ud,rules:[{[oa]:dd,rules:[{[oa]:[{[sa]:xa,[aa]:[hu,""]}],error:"Invalid ARN: Missing account id",[ia]:Sa},{[oa]:ld,rules:[{[oa]:hd,rules:[{[oa]:Du,endpoint:{[da]:ec,[la]:fu,[ya]:Ec},[ia]:_a},{[oa]:Wu,endpoint:{[da]:"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",[la]:fu,[ya]:Ec},[ia]:_a},{endpoint:{[da]:"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda.{bucketArn#region}.{bucketPartition#dnsSuffix}",[la]:fu,[ya]:Ec},[ia]:_a}],[ia]:Ia},pu],[ia]:Ia},gu],[ia]:Ia},mu],[ia]:Ia},yu],[ia]:Ia}],[ia]:Ia}],[ia]:Ia},vu],[ia]:Ia},{error:"Invalid ARN: bucket ARN is missing a region",[ia]:Sa}],[ia]:Ia},bu],[ia]:Ia},{error:"Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `{arnType}`",[ia]:Sa}],[ia]:Ia},{[oa]:rd,rules:[{[oa]:nd,rules:[{[oa]:od,rules:[{[oa]:rd,rules:[{[oa]:od,rules:[uu,{[oa]:sd,rules:[du,{[oa]:cd,rules:[{[oa]:Yu,rules:[{[oa]:[{[sa]:xa,[aa]:[lu,"{partitionResult#name}"]}],rules:[{[oa]:dd,rules:[{[oa]:[{[sa]:xa,[aa]:[ou,Ha]}],rules:[{[oa]:ld,rules:[{[oa]:hd,rules:[{[oa]:Bu,error:"Access Points do not support S3 Accelerate",[ia]:Sa},{[oa]:[lc,hc],endpoint:{[da]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",[la]:wu,[ya]:Ec},[ia]:_a},{[oa]:[lc,Wc],endpoint:{[da]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",[la]:wu,[ya]:Ec},[ia]:_a},{[oa]:[Vc,hc],endpoint:{[da]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",[la]:wu,[ya]:Ec},[ia]:_a},{[oa]:[Vc,Wc,fc,vc],endpoint:{[da]:ec,[la]:wu,[ya]:Ec},[ia]:_a},{[oa]:[Vc,Wc],endpoint:{[da]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.{bucketArn#region}.{bucketPartition#dnsSuffix}",[la]:wu,[ya]:Ec},[ia]:_a}],[ia]:Ia},pu],[ia]:Ia},gu],[ia]:Ia},{error:"Invalid ARN: The ARN was not for the S3 service, found: {bucketArn#service}",[ia]:Sa}],[ia]:Ia},mu],[ia]:Ia},yu],[ia]:Ia}],[ia]:Ia}],[ia]:Ia},vu],[ia]:Ia}],[ia]:Ia}],[ia]:Ia},{[oa]:[{[sa]:za,[aa]:[su,ba]}],rules:[{[oa]:Lu,error:"S3 MRAP does not support dual-stack",[ia]:Sa},{[oa]:Wu,error:"S3 MRAP does not support FIPS",[ia]:Sa},{[oa]:Bu,error:"S3 MRAP does not support S3 Accelerate",[ia]:Sa},{[oa]:[{[sa]:ka,[aa]:[{[ca]:"DisableMultiRegionAccessPoints"},ba]}],error:"Invalid configuration: Multi-Region Access Point ARNs are disabled.",[ia]:Sa},{[oa]:[{[sa]:Ea,[aa]:Fu,[ua]:tc}],rules:[{[oa]:[{[sa]:xa,[aa]:[{[sa]:Aa,[aa]:[{[ca]:tc},Ta]},{[sa]:Aa,[aa]:[nu,"partition"]}]}],rules:[{endpoint:{[da]:"https://{accessPointName}.accesspoint.s3-global.{mrapPartition#dnsSuffix}",[la]:{[fa]:[{[pa]:ba,name:ja,[ga]:Ha,[va]:["*"]}]},[ya]:Ec},[ia]:_a}],[ia]:Ia},{error:"Client was configured for partition `{mrapPartition#name}` but bucket referred to partition `{bucketArn#partition}`",[ia]:Sa}],[ia]:Ia}],[ia]:Ia},{error:"Invalid Access Point Name",[ia]:Sa}],[ia]:Ia},bu],[ia]:Ia},{[oa]:[{[sa]:xa,[aa]:[ou,qa]}],rules:[{[oa]:Lu,error:"S3 Outposts does not support Dual-stack",[ia]:Sa},{[oa]:Wu,error:"S3 Outposts does not support FIPS",[ia]:Sa},{[oa]:Bu,error:"S3 Outposts does not support S3 Accelerate",[ia]:Sa},{[oa]:[{[sa]:wa,[aa]:[{[sa]:Aa,[aa]:[nu,"resourceId[4]"]}]}],error:"Invalid Arn: Outpost Access Point ARN contains sub resources",[ia]:Sa},{[oa]:[{[sa]:Aa,[aa]:id,[ua]:Da}],rules:[{[oa]:Xu,rules:[du,{[oa]:cd,rules:[{[oa]:Yu,rules:[{[oa]:ud,rules:[{[oa]:dd,rules:[{[oa]:ld,rules:[{[oa]:[{[sa]:Aa,[aa]:ad,[ua]:rc}],rules:[{[oa]:[{[sa]:Aa,[aa]:[nu,"resourceId[3]"],[ua]:Ya}],rules:[{[oa]:[{[sa]:xa,[aa]:[{[ca]:rc},Za]}],rules:[{[oa]:Du,endpoint:{[da]:"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.{url#authority}",[la]:ku,[ya]:Ec},[ia]:_a},{endpoint:{[da]:"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.s3-outposts.{bucketArn#region}.{bucketPartition#dnsSuffix}",[la]:ku,[ya]:Ec},[ia]:_a}],[ia]:Ia},{error:"Expected an outpost type `accesspoint`, found {outpostType}",[ia]:Sa}],[ia]:Ia},{error:"Invalid ARN: expected an access point name",[ia]:Sa}],[ia]:Ia},{error:"Invalid ARN: Expected a 4-component resource",[ia]:Sa}],[ia]:Ia},gu],[ia]:Ia},mu],[ia]:Ia},yu],[ia]:Ia}],[ia]:Ia}],[ia]:Ia},{error:"Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `{outpostId}`",[ia]:Sa}],[ia]:Ia},{error:"Invalid ARN: The Outpost Id was not set",[ia]:Sa}],[ia]:Ia},{error:"Invalid ARN: Unrecognized format: {Bucket} (type: {arnType})",[ia]:Sa}],[ia]:Ia},{error:"Invalid ARN: No ARN type specified",[ia]:Sa}],[ia]:Ia},{[oa]:[{[sa]:Ca,[aa]:[yc,0,4,!1],[ua]:nc},{[sa]:xa,[aa]:[{[ca]:nc},"arn:"]},{[sa]:Fa,[aa]:[{[sa]:wa,[aa]:[Su]}]}],error:"Invalid ARN: `{Bucket}` was not a valid ARN",[ia]:Sa},{[oa]:[{[sa]:ka,[aa]:[$c,ba]},Su],error:"Path-style addressing cannot be used with ARN buckets",[ia]:Sa},{[oa]:qu,rules:[{[oa]:Yu,rules:[{[oa]:[Uc],rules:[{[oa]:[hc,Oc,lc,Lc],endpoint:{[da]:"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[hc,Oc,lc,Dc,zc],rules:[{endpoint:Eu,[ia]:_a}],[ia]:Ia},{[oa]:[hc,Oc,lc,Dc,Hc],endpoint:Eu,[ia]:_a},{[oa]:[Wc,Oc,lc,Lc],endpoint:{[da]:"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[Wc,Oc,lc,Dc,zc],rules:[{endpoint:xu,[ia]:_a}],[ia]:Ia},{[oa]:[Wc,Oc,lc,Dc,Hc],endpoint:xu,[ia]:_a},{[oa]:[hc,Oc,Vc,Lc],endpoint:{[da]:"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[hc,Oc,Vc,Dc,zc],rules:[{endpoint:Au,[ia]:_a}],[ia]:Ia},{[oa]:[hc,Oc,Vc,Dc,Hc],endpoint:Au,[ia]:_a},{[oa]:[Wc,fc,vc,Vc,Lc],endpoint:{[da]:ic,[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[Wc,fc,vc,Vc,Dc,zc],rules:[{[oa]:td,endpoint:Tu,[ia]:_a},{endpoint:Tu,[ia]:_a}],[ia]:Ia},{[oa]:[Wc,fc,vc,Vc,Dc,Hc],endpoint:Tu,[ia]:_a},{[oa]:[Wc,Oc,Vc,Lc],endpoint:{[da]:oc,[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[Wc,Oc,Vc,Dc,zc],rules:[{[oa]:td,endpoint:{[da]:oc,[la]:qc,[ya]:Ec},[ia]:_a},{endpoint:Cu,[ia]:_a}],[ia]:Ia},{[oa]:[Wc,Oc,Vc,Dc,Hc],endpoint:Cu,[ia]:_a}],[ia]:Ia},{error:"Path-style addressing cannot be used with S3 Accelerate",[ia]:Sa}],[ia]:Ia}],[ia]:Ia}],[ia]:Ia},{[oa]:[{[sa]:wa,[aa]:[Ru]},{[sa]:ka,[aa]:[Ru,ba]}],rules:[{[oa]:Yu,rules:[{[oa]:fd,rules:[au,cu,{[oa]:Du,endpoint:{[da]:$a,[la]:Ou,[ya]:Ec},[ia]:_a},{[oa]:Wu,endpoint:{[da]:"https://s3-object-lambda-fips.{Region}.{partitionResult#dnsSuffix}",[la]:Ou,[ya]:Ec},[ia]:_a},{endpoint:{[da]:"https://s3-object-lambda.{Region}.{partitionResult#dnsSuffix}",[la]:Ou,[ya]:Ec},[ia]:_a}],[ia]:Ia},ru],[ia]:Ia}],[ia]:Ia},{[oa]:[_c],rules:[{[oa]:Yu,rules:[{[oa]:fd,rules:[{[oa]:[lc,hc,Oc,Lc],endpoint:{[da]:"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[lc,hc,Oc,Dc,zc],rules:[{endpoint:Pu,[ia]:_a}],[ia]:Ia},{[oa]:[lc,hc,Oc,Dc,Hc],endpoint:Pu,[ia]:_a},{[oa]:[lc,Wc,Oc,Lc],endpoint:{[da]:"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}",[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[lc,Wc,Oc,Dc,zc],rules:[{endpoint:_u,[ia]:_a}],[ia]:Ia},{[oa]:[lc,Wc,Oc,Dc,Hc],endpoint:_u,[ia]:_a},{[oa]:[Vc,hc,Oc,Lc],endpoint:{[da]:"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[Vc,hc,Oc,Dc,zc],rules:[{endpoint:Iu,[ia]:_a}],[ia]:Ia},{[oa]:[Vc,hc,Oc,Dc,Hc],endpoint:Iu,[ia]:_a},{[oa]:[Vc,Wc,fc,vc,Lc],endpoint:{[da]:$a,[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[Vc,Wc,fc,vc,Dc,zc],rules:[{[oa]:td,endpoint:Mu,[ia]:_a},{endpoint:Mu,[ia]:_a}],[ia]:Ia},{[oa]:[Vc,Wc,fc,vc,Dc,Hc],endpoint:Mu,[ia]:_a},{[oa]:[Vc,Wc,Oc,Lc],endpoint:{[da]:sc,[la]:Bc,[ya]:Ec},[ia]:_a},{[oa]:[Vc,Wc,Oc,Dc,zc],rules:[{[oa]:td,endpoint:{[da]:sc,[la]:qc,[ya]:Ec},[ia]:_a},{endpoint:Nu,[ia]:_a}],[ia]:Ia},{[oa]:[Vc,Wc,Oc,Dc,Hc],endpoint:Nu,[ia]:_a}],[ia]:Ia},ru],[ia]:Ia}],[ia]:Ia}],[ia]:Ia},{error:"A region must be set when sending requests to S3.",[ia]:Sa}]},gd=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"]}),md=(e,t={})=>gd.get(e,(()=>((e,t)=>{const{endpointParams:r,logger:n}=t,{parameters:i,rules:o}=e;t.logger?.debug?.(`${$o} Initial EndpointParams: ${Uo(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 Lo(`Missing required parameter: '${e}'`);const c=es(o,{endpointParams:r,logger:n,referenceRecord:{}});return t.logger?.debug?.(`${$o} Resolved endpoint: ${Uo(c)}`),c})(pd,{endpointParams:e,logger:t.logger})));Fo.aws=ns;const yd=(vd=async(e,t,r)=>({operation:de(t).operation,region:await le(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 vd(e,t,r),i=de(t)?.commandInstance?.constructor?.getEndpointParameterInstructions;if(!i)throw new Error(`getEndpointParameterInstructions() is not defined on \`${t.commandName}\``);const o=await Ts(r,{getEndpointParameterInstructions:i},e);return Object.assign(n,o)});var vd;function bd(e){return{schemeId:"aws.auth#sigv4",signingProperties:{name:"s3",region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}function wd(e){return{schemeId:"aws.auth#sigv4a",signingProperties:{name:"s3",region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}const kd=((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})(md,(e=>{const t=[];return e.operation,t.push(bd(e)),t.push(wd(e)),t}),{"aws.auth#sigv4":bd,"aws.auth#sigv4a":wd}),Sd=e=>{const t=(e=>(e.sigv4aSigningRegionSet=ke(e.sigv4aSigningRegionSet),e))(Ft(e));return{...t}},Ed={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 xd extends Pr{constructor(e){super(e),Object.setPrototypeOf(this,xd.prototype)}}class Ad extends xd{constructor(e){super({name:"NoSuchUpload",$fault:"client",...e}),this.name="NoSuchUpload",this.$fault="client",Object.setPrototypeOf(this,Ad.prototype)}}class Td extends xd{constructor(e){super({name:"ObjectNotInActiveTierError",$fault:"client",...e}),this.name="ObjectNotInActiveTierError",this.$fault="client",Object.setPrototypeOf(this,Td.prototype)}}class Cd extends xd{constructor(e){super({name:"BucketAlreadyExists",$fault:"client",...e}),this.name="BucketAlreadyExists",this.$fault="client",Object.setPrototypeOf(this,Cd.prototype)}}class Rd extends xd{constructor(e){super({name:"BucketAlreadyOwnedByYou",$fault:"client",...e}),this.name="BucketAlreadyOwnedByYou",this.$fault="client",Object.setPrototypeOf(this,Rd.prototype)}}class Od extends xd{constructor(e){super({name:"NoSuchBucket",$fault:"client",...e}),this.name="NoSuchBucket",this.$fault="client",Object.setPrototypeOf(this,Od.prototype)}}var Pd,_d;!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])}(_d||(_d={}));class Id extends xd{constructor(e){super({name:"InvalidObjectState",$fault:"client",...e}),this.name="InvalidObjectState",this.$fault="client",Object.setPrototypeOf(this,Id.prototype),this.StorageClass=e.StorageClass,this.AccessTier=e.AccessTier}}class Md extends xd{constructor(e){super({name:"NoSuchKey",$fault:"client",...e}),this.name="NoSuchKey",this.$fault="client",Object.setPrototypeOf(this,Md.prototype)}}class Nd extends xd{constructor(e){super({name:"NotFound",$fault:"client",...e}),this.name="NotFound",this.$fault="client",Object.setPrototypeOf(this,Nd.prototype)}}const Fd=e=>({...e,...e.SecretAccessKey&&{SecretAccessKey:Ht},...e.SessionToken&&{SessionToken:Ht}}),$d=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Ht},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Ht},...e.Credentials&&{Credentials:Fd(e.Credentials)}}),Ud=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Ht},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Ht}}),Ld=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Ht}}),Bd=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:Ht}});class Dd extends xd{constructor(e){super({name:"EncryptionTypeMismatch",$fault:"client",...e}),this.name="EncryptionTypeMismatch",this.$fault="client",Object.setPrototypeOf(this,Dd.prototype)}}class zd extends xd{constructor(e){super({name:"InvalidRequest",$fault:"client",...e}),this.name="InvalidRequest",this.$fault="client",Object.setPrototypeOf(this,zd.prototype)}}class jd extends xd{constructor(e){super({name:"InvalidWriteOffset",$fault:"client",...e}),this.name="InvalidWriteOffset",this.$fault="client",Object.setPrototypeOf(this,jd.prototype)}}class qd extends xd{constructor(e){super({name:"TooManyParts",$fault:"client",...e}),this.name="TooManyParts",this.$fault="client",Object.setPrototypeOf(this,qd.prototype)}}class Hd extends xd{constructor(e){super({name:"ObjectAlreadyInActiveTierError",$fault:"client",...e}),this.name="ObjectAlreadyInActiveTierError",this.$fault="client",Object.setPrototypeOf(this,Hd.prototype)}}var Wd;!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])}(Wd||(Wd={}));const Kd=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:Ht},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Ht}}),Vd=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:Ht},...e.SSEKMSKeyId&&{SSEKMSKeyId:Ht},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:Ht}}),Qd=async(e,t)=>{const r=Xe(e,t),n=Wr({},jr,{[tp]:e[Zh],[Ap]:e[Yh],[Tp]:e[of],[Rp]:e[nf],[Cp]:[()=>jr(e[Il]),()=>e[Il].toString()]});r.bp("/"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1);const i=Wr({[Wf]:[,""]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Gd=async(e,t)=>{const r=Xe(e,t),n=Wr({},jr,{[lp]:e[Eh],[kp]:e[Wh],[Gf]:[()=>jr(e[_l]),()=>e[_l].toString()],[ip]:e[th],[Of]:e[hh],[up]:[()=>jr(e[fh]),()=>hr(e[fh]).toString()],[dp]:[()=>jr(e[ph]),()=>e[ph].toString()]});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=Wr({[Up]:[,"DeleteObject"],[Vf]:[,e[df]]});return r.m("DELETE").h(n).q(i).b(undefined),r.build()},Jd=async(e,t)=>{const r=Xe(e,t),n=Wr({},jr,{[Of]:e[hh],[Pf]:[()=>jr(e[gh]),()=>hr(e[gh]).toString()],[_f]:e[mh],[If]:[()=>jr(e[bh]),()=>hr(e[bh]).toString()],[Lf]:e[$h],[Op]:e[ef],[Pp]:e[tf],[_p]:e[rf],[kp]:e[Wh],[ip]:e[th],[Zf]:e[jl]});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=Wr({[Up]:[,"GetObject"],[Bf]:[,e[Lh]],[Df]:[,e[Bh]],[zf]:[,e[Dh]],[jf]:[,e[zh]],[qf]:[,e[jh]],[Hf]:[()=>void 0!==e.ResponseExpires,()=>hr(e[qh]).toString()],[Vf]:[,e[df]],[$f]:[()=>void 0!==e.PartNumber,()=>e[Fh].toString()]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Xd=async(e,t)=>{const r=Xe(e,t),n=Wr({},jr,{[kp]:e[Wh],[ip]:e[th],[yp]:[()=>jr(e[Ih]),()=>(e[Ih]||[]).map(Jr).join(", ")]});r.bp("/"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1);const i=Wr({[Nf]:[,"2"],[Ef]:[,e[Xl]],[Af]:[,e[nh]],[Ff]:[()=>void 0!==e.MaxKeys,()=>e[xh].toString()],[Uf]:[,e[Mh]],[Sf]:[,e[Gl]],[Rf]:[()=>void 0!==e.FetchOwner,()=>e[sh].toString()],[Kf]:[,e[Gh]]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Zd=async(e,t)=>{const r=Xe(e,t),n=Wr({},jr,{[kf]:e[Ql]||"application/octet-stream",[Qf]:e[Cl],[pf]:e[Fl],[gf]:e[Ll],[mf]:e[Bl],[yf]:e[Dl],[vf]:[()=>jr(e[zl]),()=>e[zl].toString()],[bf]:e[ql],[xp]:e[Nl],[Jf]:e[$l],[Xf]:e[Ul],[Yf]:e[Kl],[ep]:e[Vl],[xf]:[()=>jr(e[eh]),()=>hr(e[eh]).toString()],[Of]:e[hh],[_f]:e[mh],[op]:e[ah],[sp]:e[ch],[ap]:e[uh],[cp]:e[dh],[Fp]:[()=>jr(e[lf]),()=>e[lf].toString()],[Ap]:e[Yh],[Ep]:e[Xh],[$p]:e[hf],[Op]:e[ef],[Pp]:e[tf],[_p]:e[rf],[Tp]:e[of],[Rp]:e[nf],[Cp]:[()=>jr(e[Il]),()=>e[Il].toString()],[kp]:e[Wh],[Ip]:e[cf],[gp]:e[Ph],[mp]:[()=>jr(e[_h]),()=>{return(t=e[_h],t.toISOString().replace(".000Z","Z")).toString();var t}],[pp]:e[Oh],[ip]:e[th],...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=Wr({[Up]:[,"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()},Yd=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return il(e,t);const r=Wr({$metadata:Tl(e),[Yh]:[,e.headers[Ap]],[of]:[,e.headers[Tp]],[nf]:[,e.headers[Rp]],[Il]:[()=>void 0!==e.headers[Cp],()=>Wt(e.headers[Cp])]}),n=er(tr(await vi(e.body,t)),"body");return null!=n[Ml]&&(r[Ml]=Al(n[Ml])),r},el=async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return il(e,t);const r=Wr({$metadata:Tl(e),[Zl]:[()=>void 0!==e.headers[rp],()=>Wt(e.headers[rp])],[df]:[,e.headers[Np]],[Uh]:[,e.headers[wp]]});return await Ge(e.body,t),r},tl=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return il(e,t);const r=Wr({$metadata:Tl(e),[Zl]:[()=>void 0!==e.headers[rp],()=>Wt(e.headers[rp])],[Ol]:[,e.headers[ff]],[oh]:[,e.headers[np]],[Qh]:[,e.headers[bp]],[Sh]:[()=>void 0!==e.headers[Mf],()=>er(vr(e.headers[Mf]))],[zl]:[()=>void 0!==e.headers[vf],()=>or(e.headers[vf])],[ih]:[,e.headers[Tf]],[$l]:[,e.headers[Jf]],[Ul]:[,e.headers[Xf]],[Kl]:[,e.headers[Yf]],[Vl]:[,e.headers[ep]],[Ah]:[()=>void 0!==e.headers[hp],()=>sr(e.headers[hp])],[df]:[,e.headers[Np]],[Fl]:[,e.headers[pf]],[Ll]:[,e.headers[gf]],[Bl]:[,e.headers[mf]],[Dl]:[,e.headers[yf]],[Wl]:[,e.headers[wf]],[Ql]:[,e.headers[kf]],[eh]:[()=>void 0!==e.headers[xf],()=>er(vr(e.headers[xf]))],[rh]:[,e.headers[Cf]],[hf]:[,e.headers[$p]],[Yh]:[,e.headers[Ap]],[ef]:[,e.headers[Op]],[rf]:[,e.headers[_p]],[of]:[,e.headers[Tp]],[Il]:[()=>void 0!==e.headers[Cp],()=>Wt(e.headers[Cp])],[Xh]:[,e.headers[Ep]],[Uh]:[,e.headers[wp]],[Kh]:[,e.headers[Sp]],[Nh]:[()=>void 0!==e.headers[fp],()=>sr(e.headers[fp])],[uf]:[()=>void 0!==e.headers[Mp],()=>sr(e.headers[Mp])],[Ph]:[,e.headers[gp]],[_h]:[()=>void 0!==e.headers[mp],()=>er(pr(e.headers[mp]))],[Oh]:[,e.headers[pp]],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},rl=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return il(e,t);const r=Wr({$metadata:Tl(e),[Uh]:[,e.headers[wp]]}),n=er(tr(await vi(e.body,t)),"body");return""===n.CommonPrefixes?r[Hl]=[]:null!=n[Hl]&&(r[Hl]=wl(Dr(n[Hl]))),""===n.Contents?r[Jl]=[]:null!=n[Jl]&&(r[Jl]=Sl(Dr(n[Jl]))),null!=n[Gl]&&(r[Gl]=rr(n[Gl])),null!=n[Xl]&&(r[Xl]=rr(n[Xl])),null!=n[nh]&&(r[nh]=rr(n[nh])),null!=n[vh]&&(r[vh]=Wt(n[vh])),null!=n[kh]&&(r[kh]=sr(n[kh])),null!=n[xh]&&(r[xh]=sr(n[xh])),null!=n[Th]&&(r[Th]=rr(n[Th])),null!=n[Ch]&&(r[Ch]=rr(n[Ch])),null!=n[Mh]&&(r[Mh]=rr(n[Mh])),null!=n[Gh]&&(r[Gh]=rr(n[Gh])),r},nl=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return il(e,t);const r=Wr({$metadata:Tl(e),[oh]:[,e.headers[np]],[ih]:[,e.headers[Tf]],[$l]:[,e.headers[Jf]],[Ul]:[,e.headers[Xf]],[Kl]:[,e.headers[Yf]],[Vl]:[,e.headers[ep]],[Yh]:[,e.headers[Ap]],[df]:[,e.headers[Np]],[ef]:[,e.headers[Op]],[rf]:[,e.headers[_p]],[of]:[,e.headers[Tp]],[nf]:[,e.headers[Rp]],[Il]:[()=>void 0!==e.headers[Cp],()=>Wt(e.headers[Cp])],[af]:[()=>void 0!==e.headers[vp],()=>or(e.headers[vp])],[Uh]:[,e.headers[wp]]});return await Ge(e.body,t),r},il=async(e,t)=>{const r={...e,body:await bi(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 gl(r,t);case"ObjectNotInActiveTierError":case"com.amazonaws.s3#ObjectNotInActiveTierError":throw await vl(r,t);case"BucketAlreadyExists":case"com.amazonaws.s3#BucketAlreadyExists":throw await al(r,t);case"BucketAlreadyOwnedByYou":case"com.amazonaws.s3#BucketAlreadyOwnedByYou":throw await cl(r,t);case"NoSuchBucket":case"com.amazonaws.s3#NoSuchBucket":throw await fl(r,t);case"InvalidObjectState":case"com.amazonaws.s3#InvalidObjectState":throw await dl(r,t);case"NoSuchKey":case"com.amazonaws.s3#NoSuchKey":throw await pl(r,t);case"NotFound":case"com.amazonaws.s3#NotFound":throw await ml(r,t);case"EncryptionTypeMismatch":case"com.amazonaws.s3#EncryptionTypeMismatch":throw await ul(r,t);case"InvalidRequest":case"com.amazonaws.s3#InvalidRequest":throw await ll(r,t);case"InvalidWriteOffset":case"com.amazonaws.s3#InvalidWriteOffset":throw await hl(r,t);case"TooManyParts":case"com.amazonaws.s3#TooManyParts":throw await bl(r,t);case"ObjectAlreadyInActiveTierError":case"com.amazonaws.s3#ObjectAlreadyInActiveTierError":throw await yl(r,t);default:const i=r.body;return ol({output:e,parsedBody:i,errorCode:n})}},ol=(sl=xd,({output:e,parsedBody:t,errorCode:r})=>{(({output:e,parsedBody:t,exceptionCtor:r,errorCode:n})=>{const i=Ir(e),o=i.httpStatusCode?i.httpStatusCode+"":void 0,s=new r({name:t?.code||t?.Code||n||o||"UnknownError",$fault:"client",$metadata:i});throw _r(s,t)})({output:e,parsedBody:t,exceptionCtor:sl,errorCode:r})});var sl;const al=async(e,t)=>{const r=Wr({});e.body;const n=new Cd({$metadata:Tl(e),...r});return _r(n,e.body)},cl=async(e,t)=>{const r=Wr({});e.body;const n=new Rd({$metadata:Tl(e),...r});return _r(n,e.body)},ul=async(e,t)=>{const r=Wr({});e.body;const n=new Dd({$metadata:Tl(e),...r});return _r(n,e.body)},dl=async(e,t)=>{const r=Wr({}),n=e.body;null!=n[Pl]&&(r[Pl]=rr(n[Pl])),null!=n[Xh]&&(r[Xh]=rr(n[Xh]));const i=new Id({$metadata:Tl(e),...r});return _r(i,e.body)},ll=async(e,t)=>{const r=Wr({});e.body;const n=new zd({$metadata:Tl(e),...r});return _r(n,e.body)},hl=async(e,t)=>{const r=Wr({});e.body;const n=new jd({$metadata:Tl(e),...r});return _r(n,e.body)},fl=async(e,t)=>{const r=Wr({});e.body;const n=new Od({$metadata:Tl(e),...r});return _r(n,e.body)},pl=async(e,t)=>{const r=Wr({});e.body;const n=new Md({$metadata:Tl(e),...r});return _r(n,e.body)},gl=async(e,t)=>{const r=Wr({});e.body;const n=new Ad({$metadata:Tl(e),...r});return _r(n,e.body)},ml=async(e,t)=>{const r=Wr({});e.body;const n=new Nd({$metadata:Tl(e),...r});return _r(n,e.body)},yl=async(e,t)=>{const r=Wr({});e.body;const n=new Hd({$metadata:Tl(e),...r});return _r(n,e.body)},vl=async(e,t)=>{const r=Wr({});e.body;const n=new Td({$metadata:Tl(e),...r});return _r(n,e.body)},bl=async(e,t)=>{const r=Wr({});e.body;const n=new qd({$metadata:Tl(e),...r});return _r(n,e.body)},wl=(e,t)=>(e||[]).filter((e=>null!=e)).map((e=>(e=>{const t={};return null!=e[Mh]&&(t[Mh]=rr(e[Mh])),t})(e))),kl=(e,t)=>{const r={};return null!=e[wh]&&(r[wh]=rr(e[wh])),null!=e[Sh]&&(r[Sh]=er(pr(e[Sh]))),null!=e[ih]&&(r[ih]=rr(e[ih])),""===e.ChecksumAlgorithm?r[Nl]=[]:null!=e[Nl]&&(r[Nl]=(e=>(e||[]).filter((e=>null!=e)).map((e=>rr(e))))(Dr(e[Nl]))),null!=e[af]&&(r[af]=or(e[af])),null!=e[Xh]&&(r[Xh]=rr(e[Xh])),null!=e[Rh]&&(r[Rh]=El(e[Rh])),null!=e[Vh]&&(r[Vh]=xl(e[Vh])),r},Sl=(e,t)=>(e||[]).filter((e=>null!=e)).map((e=>kl(e))),El=(e,t)=>{const r={};return null!=e[Yl]&&(r[Yl]=rr(e[Yl])),null!=e[lh]&&(r[lh]=rr(e[lh])),r},xl=(e,t)=>{const r={};return null!=e[yh]&&(r[yh]=Wt(e[yh])),null!=e[Hh]&&(r[Hh]=er(pr(e[Hh]))),r},Al=(e,t)=>{const r={};return null!=e[Rl]&&(r[Rl]=rr(e[Rl])),null!=e[Jh]&&(r[Jh]=rr(e[Jh])),null!=e[sf]&&(r[sf]=rr(e[sf])),null!=e[oh]&&(r[oh]=er(pr(e[oh]))),r},Tl=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"]}),Cl="ACL",Rl="AccessKeyId",Ol="AcceptRanges",Pl="AccessTier",_l="BypassGovernanceRetention",Il="BucketKeyEnabled",Ml="Credentials",Nl="ChecksumAlgorithm",Fl="CacheControl",$l="ChecksumCRC32",Ul="ChecksumCRC32C",Ll="ContentDisposition",Bl="ContentEncoding",Dl="ContentLanguage",zl="ContentLength",jl="ChecksumMode",ql="ContentMD5",Hl="CommonPrefixes",Wl="ContentRange",Kl="ChecksumSHA1",Vl="ChecksumSHA256",Ql="ContentType",Gl="ContinuationToken",Jl="Contents",Xl="Delimiter",Zl="DeleteMarker",Yl="DisplayName",eh="Expires",th="ExpectedBucketOwner",rh="ExpiresString",nh="EncodingType",ih="ETag",oh="Expiration",sh="FetchOwner",ah="GrantFullControl",ch="GrantRead",uh="GrantReadACP",dh="GrantWriteACP",lh="ID",hh="IfMatch",fh="IfMatchLastModifiedTime",ph="IfMatchSize",gh="IfModifiedSince",mh="IfNoneMatch",yh="IsRestoreInProgress",vh="IsTruncated",bh="IfUnmodifiedSince",wh="Key",kh="KeyCount",Sh="LastModified",Eh="MFA",xh="MaxKeys",Ah="MissingMeta",Th="Name",Ch="NextContinuationToken",Rh="Owner",Oh="ObjectLockLegalHoldStatus",Ph="ObjectLockMode",_h="ObjectLockRetainUntilDate",Ih="OptionalObjectAttributes",Mh="Prefix",Nh="PartsCount",Fh="PartNumber",$h="Range",Uh="RequestCharged",Lh="ResponseCacheControl",Bh="ResponseContentDisposition",Dh="ResponseContentEncoding",zh="ResponseContentLanguage",jh="ResponseContentType",qh="ResponseExpires",Hh="RestoreExpiryDate",Wh="RequestPayer",Kh="ReplicationStatus",Vh="RestoreStatus",Qh="Restore",Gh="StartAfter",Jh="SecretAccessKey",Xh="StorageClass",Zh="SessionMode",Yh="ServerSideEncryption",ef="SSECustomerAlgorithm",tf="SSECustomerKey",rf="SSECustomerKeyMD5",nf="SSEKMSEncryptionContext",of="SSEKMSKeyId",sf="SessionToken",af="Size",cf="Tagging",uf="TagCount",df="VersionId",lf="WriteOffsetBytes",hf="WebsiteRedirectLocation",ff="accept-ranges",pf="cache-control",gf="content-disposition",mf="content-encoding",yf="content-language",vf="content-length",bf="content-md5",wf="content-range",kf="content-type",Sf="continuation-token",Ef="delimiter",xf="expires",Af="encoding-type",Tf="etag",Cf="expiresstring",Rf="fetch-owner",Of="if-match",Pf="if-modified-since",_f="if-none-match",If="if-unmodified-since",Mf="last-modified",Nf="list-type",Ff="max-keys",$f="partNumber",Uf="prefix",Lf="range",Bf="response-cache-control",Df="response-content-disposition",zf="response-content-encoding",jf="response-content-language",qf="response-content-type",Hf="response-expires",Wf="session",Kf="start-after",Vf="versionId",Qf="x-amz-acl",Gf="x-amz-bypass-governance-retention",Jf="x-amz-checksum-crc32",Xf="x-amz-checksum-crc32c",Zf="x-amz-checksum-mode",Yf="x-amz-checksum-sha1",ep="x-amz-checksum-sha256",tp="x-amz-create-session-mode",rp="x-amz-delete-marker",np="x-amz-expiration",ip="x-amz-expected-bucket-owner",op="x-amz-grant-full-control",sp="x-amz-grant-read",ap="x-amz-grant-read-acp",cp="x-amz-grant-write-acp",up="x-amz-if-match-last-modified-time",dp="x-amz-if-match-size",lp="x-amz-mfa",hp="x-amz-missing-meta",fp="x-amz-mp-parts-count",pp="x-amz-object-lock-legal-hold",gp="x-amz-object-lock-mode",mp="x-amz-object-lock-retain-until-date",yp="x-amz-optional-object-attributes",vp="x-amz-object-size",bp="x-amz-restore",wp="x-amz-request-charged",kp="x-amz-request-payer",Sp="x-amz-replication-status",Ep="x-amz-storage-class",xp="x-amz-sdk-checksum-algorithm",Ap="x-amz-server-side-encryption",Tp="x-amz-server-side-encryption-aws-kms-key-id",Cp="x-amz-server-side-encryption-bucket-key-enabled",Rp="x-amz-server-side-encryption-context",Op="x-amz-server-side-encryption-customer-algorithm",Pp="x-amz-server-side-encryption-customer-key",_p="x-amz-server-side-encryption-customer-key-md5",Ip="x-amz-tagging",Mp="x-amz-tagging-count",Np="x-amz-version-id",Fp="x-amz-write-offset-bytes",$p="x-amz-website-redirect-location",Up="x-id";class Lp extends(jt.classBuilder().ep({...Ed,DisableS3ExpressSessionAuth:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(e,t,r,n){return[me(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),Co(r)]})).s("AmazonS3","CreateSession",{}).n("S3Client","CreateSessionCommand").f(Ud,$d).ser(Qd).de(Yd).build()){}var Bp="3.701.0";function Dp(e){return"string"==typeof e?0===e.length:0===e.byteLength}var zp={name:"SHA-1"},jp={name:"HMAC",hash:zp},qp=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 Wp(){return"undefined"!=typeof window?window:"undefined"!=typeof self?self:Hp}var Kp=function(){function e(e){this.toHash=new Uint8Array(0),void 0!==e&&(this.key=new Promise((function(t,r){Wp().crypto.subtle.importKey("raw",Vp(e),jp,!1,["sign"]).then(t,r)})),this.key.catch((function(){})))}return e.prototype.update=function(e){if(!Dp(e)){var t=Vp(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 Wp().crypto.subtle.sign(jp,t,e.toHash).then((function(e){return new Uint8Array(e)}))})):Dp(this.toHash)?Promise.resolve(qp):Promise.resolve().then((function(){return Wp().crypto.subtle.digest(zp,e.toHash)})).then((function(e){return Promise.resolve(new Uint8Array(e))}))},e.prototype.reset=function(){this.toHash=new Uint8Array(0)},e}();function Vp(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 Qp=["decrypt","digest","encrypt","exportKey","generateKey","importKey","sign","verify"];function Gp(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&&Qp.every((function(t){return"function"==typeof e[t]}))}(e.crypto.subtle)}var Jp=function(){function e(e){if(!Gp(Wp()))throw new Error("SHA1 not supported");this.hash=new Kp(e)}return e.prototype.update=function(e,t){this.hash.update(Ci(e))},e.prototype.digest=function(){return this.hash.digest()},e.prototype.reset=function(){this.hash.reset()},e}(),Xp={name:"SHA-256"},Zp={name:"HMAC",hash:Xp},Yp=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]),eg=function(){function e(e){this.toHash=new Uint8Array(0),this.secret=e,this.reset()}return e.prototype.update=function(e){if(!Ri(e)){var t=Ci(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 Wp().crypto.subtle.sign(Zp,t,e.toHash).then((function(e){return new Uint8Array(e)}))})):Ri(this.toHash)?Promise.resolve(Yp):Promise.resolve().then((function(){return Wp().crypto.subtle.digest(Xp,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){Wp().crypto.subtle.importKey("raw",Ci(e.secret),Zp,!1,["sign"]).then(t,r)})),this.key.catch((function(){})))},e}();function tg(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 rg(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]sg)throw new Error("Cannot hash more than 2^53 - 1 bits");for(;r>0;)this.buffer[this.bufferLength++]=e[t++],r--,this.bufferLength===ng&&(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%ng>=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+(ig[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}(),cg=function(){function e(e){this.secret=e,this.hash=new ag,this.reset()}return e.prototype.update=function(e){if(!Ri(e)&&!this.error)try{this.hash.update(Ci(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 tg(this,void 0,void 0,(function(){return rg(this,(function(e){return[2,this.digestSync()]}))}))},e.prototype.reset=function(){if(this.hash=new ag,this.secret){this.outer=new ag;var e=function(e){var t=Ci(e);if(t.byteLength>ng){var r=new ag;r.update(t),t=r.digest()}var n=new Uint8Array(ng);return n.set(t),n}(this.secret),t=new Uint8Array(ng);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 lg=Xr(dg.exports);const hg=({serviceId:e,clientVersion:t})=>async r=>{const n="undefined"!=typeof window&&window?.navigator?.userAgent?lg.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 fg{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&&pg(t),new fg(t)}valueOf(){const e=this.bytes.slice(0),t=128&e[0];return t&&pg(e),parseInt(ze(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}}function pg(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,0===e[t]);t--);}class gg{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(fg.fromNumber(e.value.valueOf()).bytes,1),u;case"uuid":if(!Tg.test(e.value))throw new Error(`Invalid UUID received: ${e.value}`);const d=new Uint8Array(17);return d[0]=9,d.set(De(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 Ui;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 Ui).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 Rg{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 _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.serializer(e);yield t}}}function Ig(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 Mg{constructor({utf8Encoder:e,utf8Decoder:t}){this.eventStreamCodec=new Cg(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 Fg=e=>"function"==typeof ReadableStream&&e instanceof ReadableStream,$g=e=>new Ng(e);const Ug=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()},Lg=64,Bg=[1732584193,4023233417,2562383102,271733878];class Dg{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 Ae(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===Lg&&(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%Lg>=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=jg(r,n,i,o,e.getUint32(0,!0),7,3614090360),o=jg(o,r,n,i,e.getUint32(4,!0),12,3905402710),i=jg(i,o,r,n,e.getUint32(8,!0),17,606105819),n=jg(n,i,o,r,e.getUint32(12,!0),22,3250441966),r=jg(r,n,i,o,e.getUint32(16,!0),7,4118548399),o=jg(o,r,n,i,e.getUint32(20,!0),12,1200080426),i=jg(i,o,r,n,e.getUint32(24,!0),17,2821735955),n=jg(n,i,o,r,e.getUint32(28,!0),22,4249261313),r=jg(r,n,i,o,e.getUint32(32,!0),7,1770035416),o=jg(o,r,n,i,e.getUint32(36,!0),12,2336552879),i=jg(i,o,r,n,e.getUint32(40,!0),17,4294925233),n=jg(n,i,o,r,e.getUint32(44,!0),22,2304563134),r=jg(r,n,i,o,e.getUint32(48,!0),7,1804603682),o=jg(o,r,n,i,e.getUint32(52,!0),12,4254626195),i=jg(i,o,r,n,e.getUint32(56,!0),17,2792965006),n=jg(n,i,o,r,e.getUint32(60,!0),22,1236535329),r=qg(r,n,i,o,e.getUint32(4,!0),5,4129170786),o=qg(o,r,n,i,e.getUint32(24,!0),9,3225465664),i=qg(i,o,r,n,e.getUint32(44,!0),14,643717713),n=qg(n,i,o,r,e.getUint32(0,!0),20,3921069994),r=qg(r,n,i,o,e.getUint32(20,!0),5,3593408605),o=qg(o,r,n,i,e.getUint32(40,!0),9,38016083),i=qg(i,o,r,n,e.getUint32(60,!0),14,3634488961),n=qg(n,i,o,r,e.getUint32(16,!0),20,3889429448),r=qg(r,n,i,o,e.getUint32(36,!0),5,568446438),o=qg(o,r,n,i,e.getUint32(56,!0),9,3275163606),i=qg(i,o,r,n,e.getUint32(12,!0),14,4107603335),n=qg(n,i,o,r,e.getUint32(32,!0),20,1163531501),r=qg(r,n,i,o,e.getUint32(52,!0),5,2850285829),o=qg(o,r,n,i,e.getUint32(8,!0),9,4243563512),i=qg(i,o,r,n,e.getUint32(28,!0),14,1735328473),n=qg(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=Wg(r,n,i,o,e.getUint32(0,!0),6,4096336452),o=Wg(o,r,n,i,e.getUint32(28,!0),10,1126891415),i=Wg(i,o,r,n,e.getUint32(56,!0),15,2878612391),n=Wg(n,i,o,r,e.getUint32(20,!0),21,4237533241),r=Wg(r,n,i,o,e.getUint32(48,!0),6,1700485571),o=Wg(o,r,n,i,e.getUint32(12,!0),10,2399980690),i=Wg(i,o,r,n,e.getUint32(40,!0),15,4293915773),n=Wg(n,i,o,r,e.getUint32(4,!0),21,2240044497),r=Wg(r,n,i,o,e.getUint32(32,!0),6,1873313359),o=Wg(o,r,n,i,e.getUint32(60,!0),10,4264355552),i=Wg(i,o,r,n,e.getUint32(24,!0),15,2734768916),n=Wg(n,i,o,r,e.getUint32(52,!0),21,1309151649),r=Wg(r,n,i,o,e.getUint32(16,!0),6,4149444226),o=Wg(o,r,n,i,e.getUint32(44,!0),10,3174756917),i=Wg(i,o,r,n,e.getUint32(8,!0),15,718787259),n=Wg(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(Lg)),this.bufferLength=0,this.bytesHashed=0,this.finished=!1}}function zg(e,t,r,n,i,o){return((t=(t+e&4294967295)+(n+o&4294967295)&4294967295)<>>32-i)+r&4294967295}function jg(e,t,r,n,i,o,s){return zg(t&r|~t&n,e,t,i,o,s)}function qg(e,t,r,n,i,o,s){return zg(t&n|r&~n,e,t,i,o,s)}function Hg(e,t,r,n,i,o,s){return zg(t^r^n,e,t,i,o,s)}function Wg(e,t,r,n,i,o,s){return zg(r^(t|~n),e,t,i,o,s)}const Kg="function"==typeof TextEncoder?new TextEncoder:null,Vg=e=>{if("string"==typeof e){if(Kg)return Kg.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}`)},Qg=["in-region","cross-region","mobile","standard","legacy"],Gg=()=>{const e="undefined"!=typeof window&&window?.navigator?.userAgent?lg.parse(window.navigator.userAgent):void 0,t=e?.platform?.type;return"tablet"===t||"mobile"===t},Jg=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(Gg()?"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 ${Qg.join(", ")}, got ${t}`)}})))(e),r=()=>t().then(Mr),n=(e=>({apiVersion:"2006-03-01",base64Decoder:e?.base64Decoder??xe,base64Encoder:e?.base64Encoder??Re,disableHostPrefix:e?.disableHostPrefix??!1,endpointProvider:e?.endpointProvider??md,extensions:e?.extensions??[],getAwsChunkedEncodingStream:e?.getAwsChunkedEncodingStream??Pe,httpAuthSchemeProvider:e?.httpAuthSchemeProvider??kd,httpAuthSchemes:e?.httpAuthSchemes??[{schemeId:"aws.auth#sigv4",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4"),signer:new ce},{schemeId:"aws.auth#sigv4a",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4a"),signer:new ue}],logger:e?.logger??new Hr,sdkStreamMixin:e?.sdkStreamMixin??He,serviceId:e?.serviceId??"S3",signerConstructor:e?.signerConstructor??ra,signingEscapePath:e?.signingEscapePath??!1,urlParser:e?.urlParser??xs,useArnRegion:e?.useArnRegion??!1,utf8Decoder:e?.utf8Decoder??Ae,utf8Encoder:e?.utf8Encoder??Ce}))(e);return{...n,...e,runtime:"browser",defaultsMode:t,bodyLengthChecker:e?.bodyLengthChecker??Vg,credentialDefaultProvider:e?.credentialDefaultProvider??(e=>()=>Promise.reject(new Error("Credential is missing"))),defaultUserAgentProvider:e?.defaultUserAgentProvider??hg({serviceId:n.serviceId,clientVersion:Bp}),eventStreamSerdeProvider:e?.eventStreamSerdeProvider??$g,maxAttempts:e?.maxAttempts??3,md5:e?.md5??Dg,region:e?.region??(i="Region is missing",()=>Promise.reject(i)),requestHandler:$e.create(e?.requestHandler??r),retryMode:e?.retryMode??(async()=>(await r()).retryMode||_s),sha1:e?.sha1??Jp,sha256:e?.sha256??ug,streamCollector:e?.streamCollector??Ue,streamHasher:e?.streamHasher??Ug,useDualstackEndpoint:e?.useDualstackEndpoint??(()=>Promise.resolve(false)),useFipsEndpoint:e?.useFipsEndpoint??(()=>Promise.resolve(false))};var i},Xg=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}},Zg=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}},Yg=e=>({httpAuthSchemes:e.httpAuthSchemes(),httpAuthSchemeProvider:e.httpAuthSchemeProvider(),credentials:e.credentials()});class em extends zt{constructor(...[e]){const t=Jg(e||{});var r;const n=function(e){const t=ke(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()=>As(await le(r)()):void 0,i=!!r,o={...e,endpoint:n,tls:t,isCustomEndpoint:i,useDualstackEndpoint:le(e.useDualstackEndpoint??!1),useFipsEndpoint:le(e.useFipsEndpoint??!1)};let s;return o.serviceConfiguredEndpoint=async()=>(e.serviceId&&!s&&(s=Es(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 fs(t);const e=await t();return fs(e)},useFipsEndpoint:async()=>{const e="string"==typeof t?t:await t();return!!hs(e)||("function"!=typeof r?Promise.resolve(!!r):r())}}})((e=>{const{retryStrategy:t}=e,r=le(e.maxAttempts??3);return{...e,maxAttempts:r,retryStrategy:async()=>t||(await le(e.retryMode)()===Ps.ADAPTIVE?new zs(r):new Ds(r))}})((i=n,{...i,requestChecksumCalculation:le(i.requestChecksumCalculation??G),responseChecksumValidation:le(i.responseChecksumValidation??J)}))))),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 lo((async e=>r().send(new n({Bucket:e,SessionMode:"ReadWrite"})))),bucketEndpoint:e.bucketEndpoint??!1}})(Sd(o),{session:[()=>this,Lp]}),a=((e,t)=>{const r={...Xg(e),...Lr(e),...F(e),...Zg(e)};return t.forEach((e=>e.configure(r))),{...e,...(i=r,{region:i.region()}),...Br(r),...(n=r,{httpHandler:n.httpHandler()}),...Yg(r)};var n,i})(s,e?.extensions||[]);super(a),this.config=a,this.middlewareStack.use((e=>({applyToStack:t=>{t.add(us(e),ls)}}))(this.config)),this.middlewareStack.use(Ys(this.config)),this.middlewareStack.use(ms(this.config)),this.middlewareStack.use(Ji(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}}),Xi)}})),this.middlewareStack.use(eo(this.config)),this.middlewareStack.use(((e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:r})=>({applyToStack:n=>{n.addRelativeTo(he(e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:r}),fe)}}))(this.config,{httpAuthSchemeParametersProvider:yd,identityProviderConfigProvider:async e=>new Ye({"aws.auth#sigv4":e.credentials,"aws.auth#sigv4a":e.credentials})})),this.middlewareStack.use(we(this.config)),this.middlewareStack.use(Po(this.config)),this.middlewareStack.use(V(this.config)),this.middlewareStack.use(oo(this.config)),this.middlewareStack.use(bo(this.config)),this.middlewareStack.use((e=>({applyToStack:t=>{t.addRelativeTo(So(e),be)}}))(this.config))}destroy(){super.destroy()}}const tm={name:"ssecMiddleware",step:"initialize",tags:["SSE"],override:!0},rm=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?nm(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})}),tm)}});function nm(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 im extends(jt.classBuilder().ep({...Ed,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[me(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),Co(r)]})).s("AmazonS3","DeleteObject",{}).n("S3Client","DeleteObjectCommand").f(void 0,void 0).ser(Gd).de(el).build()){}class om extends(jt.classBuilder().ep({...Ed,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[me(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),Qi(r,{requestChecksumRequired:!1,requestValidationModeMember:"ChecksumMode",responseAlgorithms:["CRC32","CRC32C","SHA256","SHA1"]}),rm(r),ao()]})).s("AmazonS3","GetObject",{}).n("S3Client","GetObjectCommand").f(Bd,Ld).ser(Jd).de(tl).build()){}class sm extends(jt.classBuilder().ep({...Ed,Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}}).m((function(e,t,r,n){return[me(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),Co(r)]})).s("AmazonS3","ListObjectsV2",{}).n("S3Client","ListObjectsV2Command").f(void 0,void 0).ser(Xd).de(rl).build()){}class am extends(jt.classBuilder().ep({...Ed,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[me(r,this.serialize,this.deserialize),Os(r,e.getEndpointParameterInstructions()),Qi(r,{requestAlgorithmMember:"ChecksumAlgorithm",requestAlgorithmMemberHttpHeader:"x-amz-sdk-checksum-algorithm",requestChecksumRequired:!1}),ro(),Co(r),rm(r)]})).s("AmazonS3","PutObject",{}).n("S3Client","PutObjectCommand").f(Vd,Kd).ser(Zd).de(nl).build()){}class cm{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)))}}))}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 em({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o}});try{let e,t=[],r=[],i=!0;for(;i;){const o=yield c.send(new sm({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 em({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o}});let c=s+"/"+e;for(;c.startsWith("/");)c=c.substring(1);try{return yield a.send(new im({Bucket:n,Key:c})),!0}catch(e){return console.error(e),!1}}))}}class um extends cm{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 em({endpoint:r,region:n,credentials:{accessKeyId:o,secretAccessKey:s}});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 am({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 em({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o}});let c=s+"/"+e;for(;c.startsWith("/");)c=c.substring(1);try{const e=yield a.send(new om({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 dm{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 lm{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 hm extends lm{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 fm=["book","config","cover","font"];class pm{constructor(e,t,r){this.type=e,this.remote="dropbox"===e?new A(t,r):"microsoft"===e?new _(t,r):"google"===e?new C(t,r):"microsoft_exp"===e?new _(Object.assign(Object.assign({},t),{isExp:!0}),r):"google_exp"===e?new C(Object.assign(Object.assign({},t),{isExp:!0}),r):"s3compatible"===e?new um(t):"webdav"===e?new dm(t):"docker"===e?new hm(t):"boxnet"===e?new E(t,r):"mega"===e?new O(t):"adrive"===e?new k(t,r):"pcloud"===e?new N(t,r):new I}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 fm){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 gm={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 = ?"},mm={notes:"SELECT * FROM notes WHERE bookKey = ?",bookmarks:"SELECT * FROM bookmarks WHERE bookKey = ?",words:"SELECT * FROM words WHERE bookKey = ?",books:"SELECT * FROM books WHERE key = ?"},ym={notes:"DELETE FROM notes WHERE bookKey = ?",bookmarks:"DELETE FROM bookmarks WHERE bookKey = ?",words:"DELETE FROM words WHERE bookKey = ?"};function vm(e){for(const t in e)e.hasOwnProperty(t)&&(e[`temp-${t}`]=e[t]);return e}const bm={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 wm,km={sqlStatement:{createTableStatement:vm({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:vm({notes:"SELECT * FROM notes",bookmarks:"SELECT * FROM bookmarks",books:"SELECT * FROM books",plugins:"SELECT * FROM plugins",words:"SELECT * FROM words"}),saveStatement:vm({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:vm({notes:"DELETE FROM notes",bookmarks:"DELETE FROM bookmarks",books:"DELETE FROM books",plugins:"DELETE FROM plugins",words:"DELETE FROM words"}),updateStatement:vm({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:vm({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:vm({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:vm(gm),getByBookKeyStatement:vm(mm),getByBookKeysStatement:vm({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:vm(ym)},jsonToSqlite:vm({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:vm(bm)};class Sm{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 Em{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 Sm(a,u,d,h,r,m,y,l,n,p,i,f))}catch(e){console.error(e),u(e)}}))))}}wm=Em,Em.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},Em.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=wm.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&&(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?3e3: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"}))}})),Em.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 Sm(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=wm.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 Em.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"}))}})),Em.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 xm=m.cloudUrl,Am=m.cloudCNUrl;class Tm{constructor(e,t){this.TokenService=e,this.ConfigService=t,this.baseUrl="china"===t.getItem("serverRegion")?Am:xm,this.refreshToken="",this.accessToken="",this.streamPromise=null}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),this.accessToken=t.data.access_token,this.refreshToken=t.data.refresh_token),t}))}requestWithRetry(e){return a(this,void 0,void 0,(function*(){return Tm.requestQueue||(Tm.requestQueue=[]),new Promise(((t,r)=>{Tm.requestQueue.push({config:e,resolve:t,reject:r}),Tm.processingQueue||this.processQueue()}))}))}processQueue(){return a(this,void 0,void 0,(function*(){if(!Tm.processingQueue){Tm.processingQueue=!0;try{for(;Tm.requestQueue.length>0;){const e=Tm.requestQueue.shift();try{let t=yield this.executeRequest(e.config);e.resolve(t)}catch(t){e.reject(t)}}}finally{Tm.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",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{let n="";try{n=(yield this.TokenService.getToken("access_token"))||""}catch(e){console.error("Error get Token:",e)}let 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)):(402===r.code&&(yield this.refreshUserToken()),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{let r="";try{r=(yield this.TokenService.getToken("access_token"))||""}catch(e){console.error("Error get Token:",e)}let 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)):(402===r.code&&(yield this.refreshUserToken()),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}))}}Tm.processingQueue=!1,Tm.requestQueue=[];class Cm extends Tm{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)}))}}class Rm extends Tm{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){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):console.info("ignore",a)),"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)):console.info("ignore",a)),"delete"===s.operation&&console.info("ignore",a)),"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):console.info("ignore",a)),"delete"===s.operation&&(s.timea.time?p[n].upload.push(o):console.info("ignore",a)))):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):console.info("ignore",s):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)):console.info("ignore",a)),"delete"===s.operation&&console.info("ignore",a)),"update"===a.operation&&("update"===s.operation&&(s.timea.time?h[n].upload.push(o):console.info("ignore",a)),"delete"===s.operation&&(s.timea.time?h[n].upload.push(o):console.info("ignore",a)))):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 Im=(Mm=class{static getItem(e){return localStorage.getItem(e)}static setItem(e,t){localStorage.setItem(e,t)}static removeItem(e){localStorage.removeItem(e)}},Nm="browser",class extends Mm{static getReaderConfig(e){return JSON.parse(this.getItem("readerConfig")||"{}")[e]}static setReaderConfig(e,t,r=!0){let n=JSON.parse(this.getItem("readerConfig")||"{}");n[e]=t,this.setItem("readerConfig",JSON.stringify(n)),r&&this.setSyncRecord({type:"config",catergory:"readerConfig",name:Nm,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 setSyncRecord(e,t){let r=JSON.parse(this.getItem("syncRecord")||"{}");r[e.type+"."+e.catergory+"."+e.name+"."+e.key]=t,this.setItem("syncRecord",JSON.stringify(r))}static setAllSyncRecord(e){this.setItem("syncRecord",JSON.stringify(e))}});var Mm,Nm;class Fm{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 Lm(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=$m((new TextEncoder).encode(JSON.stringify(r))),i=$m((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}.${$m(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<=iy}}function Iy(e){return function(t){return null==t?void 0:t[e]}}var My=Iy("byteLength"),Ny=_y(My),Fy=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var $y=Qm?function(e){return Ym?Ym(e)&&!xy(e):Ny(e)&&Fy.test(Km.call(e))}:Py(!1),Uy=Iy("length");function Ly(e,t){t=function(e){for(var t={},r=e.length,n=0;n":">",'"':""","'":"'","`":"`"},Rv=Tv(Cv),Ov=Tv(ov(Cv)),Pv=zy.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},_v=/(.)^/,Iv={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},Mv=/\\|'|\r|\n|\u2028|\u2029/g;function Nv(e){return"\\"+Iv[e]}var Fv=/^\s*(\w|\$)+\s*$/;var $v=0;function Uv(e,t,r,n,i){if(!(n instanceof t))return e.apply(r,i);var o=lv(e.prototype),s=e.apply(o,i);return sy(s)?s:o}var Lv=oy((function(e,t){var r=Lv.placeholder,n=function(){for(var i=0,o=t.length,s=Array(o),a=0;a1)zv(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 Vv=Lv(Kv,2);function Qv(e,t,r){t=Sv(t,r);for(var n,i=By(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(Wm.call(n,s,a),Oy))>=0?o+s:-1;for(o=e>0?s:a-1;o>=0&&o=3;return function(t,r,n,i){var o=!Dv(t)&&By(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 hb=oy((function(e,t,r){var n,i;return by(t)?i=t:(t=fv(t),n=t.slice(0,-1),t=t[t.length-1]),ib(e,(function(e){var o=i;if(!o){if(n&&n.length&&(e=pv(e,n)),null==e)return;o=e[t]}return null==o?o:o.apply(e,r)}))}));function fb(e,t){return ib(e,vv(t))}function pb(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=Dv(e)?e:iv(e)).length;ao&&(o=n);else t=Sv(t,r),nb(e,(function(e,r,n){((i=t(e,r,n))>s||i===-1/0&&o===-1/0)&&(o=e,s=i)}));return o}var gb=/[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;function mb(e){return e?Ay(e)?Wm.call(e):dy(e)?e.match(gb):Dv(e)?ib(e,mv):iv(e):[]}function yb(e,t,r){if(null==t||r)return Dv(e)||(e=iv(e)),e[xv(e.length-1)];var n=mb(e),i=Uy(n);t=Math.max(Math.min(t,i),0);for(var o=i-1,s=0;s1&&(n=bv(n,t[1])),t=Ky(e)):(n=Eb,t=zv(t,!1,!1),e=Object(e));for(var i=0,o=t.length;i1&&(r=t[1])):(t=ib(zv(t,!1,!1),String),n=function(e,r){return!lb(t,r)}),xb(e,n,r)}));function Tb(e,t,r){return Wm.call(e,0,Math.max(0,e.length-(null==t||r?1:t)))}function Cb(e,t,r){return null==e||e.length<1?null==t||r?void 0:[]:null==t||r?e[0]:Tb(e,e.length-t)}function Rb(e,t,r){return Wm.call(e,null==t||r?1:t)}var Ob=oy((function(e,t){return t=zv(t,!0,!0),cb(e,(function(e){return!lb(t,e)}))})),Pb=oy((function(e,t){return Ob(e,t)}));function _b(e,t,r,n){cy(t)||(n=r,r=t,t=!1),null!=r&&(r=Sv(r,n));for(var i=[],o=[],s=0,a=Uy(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=Av()-i;t>u?n=setTimeout(c,t-u):(n=null,r||(s=e.apply(a,o)),n||(o=a=null))},u=oy((function(u){return a=this,o=u,i=Av(),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 Lv(t,e)},negate:Wv,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:Kv,once:Vv,findKey:Qv,findIndex:Jv,findLastIndex:Xv,sortedIndex:Zv,indexOf:eb,lastIndexOf:tb,find:rb,detect:rb,findWhere:function(e,t){return rb(e,yv(t))},each:nb,forEach:nb,map:ib,collect:ib,reduce:sb,foldl:sb,inject:sb,reduceRight:ab,foldr:ab,filter:cb,select:cb,reject:function(e,t,r){return cb(e,Wv(Sv(t)),r)},every:ub,all:ub,some:db,any:db,contains:lb,includes:lb,include:lb,invoke:hb,pluck:fb,where:function(e,t){return cb(e,yv(t))},max:pb,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=Dv(e)?e:iv(e)).length;an||void 0===r)return 1;if(re.map((e=>e.name)),Db=e=>e.map((e=>e.key)),zb=(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 jb{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?zb(i,n).reverse():zb(i,n);if(2===t.sort){let r=Bb(e),n=Bb(e).sort();return 1===t.order?zb(n,r).reverse():zb(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=Db(e);return 1===t.order?zb(Lb.union(n,i),i).reverse():zb(Lb.union(n,i),i)}if(5===t.sort){let r=Db(e),n=(e=>Lb.sortBy(e.map((e=>({key:e.key,author:e.author}))),"author").map((e=>e.key)))(e);return 1===t.order?zb(n,r).reverse():zb(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=Db(e);return 1===t.order?zb(n,i).reverse():zb(n,i)}}static sortNotes(e,t,r=[]){if(3===t.sort){let r=Lb.clone(e).reverse(),n=Lb.uniq(e.map((e=>({chapter:e.chapter,chapterIndex:e.chapterIndex}))));n=1===t.order?Lb.sortBy(n,"chapterIndex"):Lb.sortBy(n,"chapterIndex").reverse();let i=Lb.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=Lb.clone(e).reverse(),n=Lb.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=Lb.clone(e).reverse(),i=Lb.uniq(e.map((e=>{let t=Lb.findLastIndex(r,{key:e.bookKey});return t>-1?r[t].name:""})));1===t.order?i.sort():i.sort().reverse();let o={};return i.forEach((e=>{o[e]=[]})),n.forEach((e=>{i.forEach((t=>{let n=Lb.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=Lb.clone(e).reverse(),n=Lb.uniq(e.map((e=>({chapter:e.chapter,chapterIndex:parseInt(JSON.parse(e.cfi).chapterDocIndex)}))));n=1===t.order?Lb.sortBy(n,"chapterIndex"):Lb.sortBy(n,"chapterIndex").reverse();let i=Lb.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 qb{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;}.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?"0rem !important":"2rem !important"};text-decoration: ${"yes"===e.getReaderConfig("isUnderline")?"underline !important":""};margin-bottom: ${e.getReaderConfig("paraSpacing")||0}px !important;word-wrap: break-word !important; writing-mode: horizontal-tb !important; max-width: 100% !important;overflow: visible !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 Hb{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{Em as BookHelper,g as CommonTool,Im as ConfigService,b as KookitConfig,Pm as LoginHelper,Cm as ReaderRequest,Hb as SearchUtil,jb as SortUtil,km as SqlStatement,qb as StyleHelper,_m as SyncHelper,pm as SyncUtil,Rm as ThirdpartyRequest,Fm as TokenService,Om as UserRequest}; diff --git a/src/assets/lib/kookit.min.js b/src/assets/lib/kookit.min.js index 1852e53e..f09e1f6e 100644 --- a/src/assets/lib/kookit.min.js +++ b/src/assets/lib/kookit.min.js @@ -1 +1 @@ -import e from"underscore";import t from"rangy/lib/rangy-core.js";import"rangy/lib/rangy-textrange";import i from"jszip";import{unzlibSync as r}from"fflate";import n from"chardet";import o from"js-untar";import s from"mammoth";import{marked as a}from"marked";import l from"mhtml2html";function c(e,t,i,r){return new(i||(i=Promise))((function(n,o){function s(e){try{l(r.next(e))}catch(e){o(e)}}function a(e){try{l(r.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(s,a)}l((r=r.apply(e,t||[])).next())}))}const h=e=>e?parseFloat(e+""):0,d=(e,t)=>c(void 0,void 0,void 0,(function*(){let i="";if(e&&e.load){let t=yield fetch(yield e.load()).then((e=>e.blob()));i=yield t.text()}return t||(e&&e.loadAsset&&(i=yield f(i,e.loadAsset)),i=p(i)),i})),u=e=>Array.from(e.querySelectorAll("img, image")),f=(e,t)=>c(void 0,void 0,void 0,(function*(){let i=(new DOMParser).parseFromString(e,"text/html"),r=u(i);for(let e=0;e{let t=(new DOMParser).parseFromString(e,"text/html"),i=u(t);if(0===i.length)return e;for(let e=0;e{var i=document.createElement("iframe");i.style.width=t?100*(t-.4)+"%":"100%",i.style.margin="0",i.style.border="0",i.style.padding="0",i.style.minHeight="calc(100% - 2px)",i.style.fontSize="100%",i.style.font="inherit",i.scrolling="no",i.tabIndex=0,i.id="kookit-iframe",i.style.verticalAlign="baseline",e.innerHTML="",e.appendChild(i),t&&(e.scrollLeft=e.scrollWidth/2-e.clientWidth/2)},m=(e,t,i)=>{let r=Math.floor(i.clientWidth/12),n=r%2==0?r:r-1;return{totalPage:"scroll"===e?Math.floor(i.scrollHeight/(i.clientHeight-50)):"single"===e?Math.round(parseFloat(t.body.scrollWidth/(t.body.clientWidth+n)+"")):2*Math.round(parseFloat(t.body.scrollWidth/(t.body.clientWidth+n)+"")),currentPage:"scroll"===e?Math.floor(i.scrollTop/(i.clientHeight-50))+1:Math.round(parseFloat(h(t.body.scrollLeft)/(t.body.clientWidth+n)+""))+1}},y=e=>{var t;let i=e.querySelectorAll("a, article, cite, div, li, p, span, pre, dt, dd, table, bold, font");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})),v=(e,t,i,r)=>c(void 0,void 0,void 0,(function*(){var n,o;let s=Math.floor(e.clientWidth/12),a=s%2==0?s:s-1;e.clientWidth;let l=r.querySelectorAll("img, image");for(let s of l){let l=s.parentElement,c=0,h=0,d=s.naturalWidth,u=s.naturalHeight;if("image"===s.tagName){let e=yield b(s.getAttribute("xlink:href"));d=e.naturalWidth,u=e.naturalHeight}if(i.startsWith("CB")&&"scroll"===t)h=l.offsetWidth;else if(i.startsWith("CB")&&"single"===t)c=e.clientHeight,h=e.clientWidth;else if(l&&d&&u&&l.clientHeight&&l.clientWidth){u/d>l.clientHeight/l.clientWidth?(c=l.clientHeight,h=parseInt(c*d/u+"")):(h=l.clientWidth,c=parseInt(h*u/d+"")),c>r.body.clientHeight&&"scroll"!==t&&(h=parseInt(h*(r.body.clientHeight/c)+""),c=r.body.clientHeight),l.style.textIndent="0px"}else l&&l.clientWidth&&l.clientWidth>0?(h=l.clientWidth,c=l.clientHeight,l.style.textIndent="0px"):(h=e.clientWidth,c=e.clientHeight);h=h?Math.min("scroll"===t||"single"===t?e.clientWidth:(e.clientWidth-a)/2,h):"scroll"===t||"single"===t?e.clientWidth:(e.clientWidth-a)/2,d&&u&&(d>u||c/h>u/d?c=h*(u/d):h=c*(d/u)),(h||c)&&s.setAttribute("style",(s.getAttribute("style")?s.getAttribute("style"):"")+";"+`max-width: ${h>0?h+"px":""};max-height:${c>0?c+"px":""}; margin: 0 auto; min-width: 0px; min-height: 0px; ${i.startsWith("CB")?`margin-left: calc(100% - ${s.clientWidth}px);`:""}`),"image"===s.tagName&&(null===(n=s.parentElement)||void 0===n||n.setAttribute("width",h),null===(o=s.parentElement)||void 0===o||o.setAttribute("height",c)),i.startsWith("CB")&&"scroll"===t&&s.setAttribute("style",(s.getAttribute("style")?s.getAttribute("style"):"")+";margin-left: 0px; width: 100%;"),i.startsWith("CB")&&"scroll"!==t&&s.setAttribute("style",(s.getAttribute("style")?s.getAttribute("style"):"")+`;margin-left: calc(50% - ${s.getBoundingClientRect().width/2}px);`)}})),w=(e,t,i)=>{let r=i.createElement("style");if(r.id="default-style",r.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.head.appendChild(r),"scroll"===t)return;let n="double"===t?2:1,o=Math.floor(e.clientWidth/12),s=o%2==0?o:o-1;i.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)/n}px;`)};function x(e){const t=e.getSelection();if(!t)return null;if(t.rangeCount>0){return t.getRangeAt(0).startContainer.parentElement}return null}const C=e=>"string"==typeof e||e instanceof String;class T{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 i=t;try{i=e.href&&(yield this.book.resolveHref(e.href))?(yield this.book.resolveHref(e.href)).index:i}catch(e){console.error(e)}return{label:this.unescapeHtml(e.label)?this.unescapeHtml(e.label):i+"",href:e.href?e.href:"title"+i,index:i,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:this.unescapeHtml(e.label)?this.unescapeHtml(e.label):t+"",href:e.href?e.href:"title"+t,index:t,subitems: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,i)=>e.indexOf(i)>-1?{label:this.unescapeHtml(this.flattenChapters[e.indexOf(i)].label),href:this.flattenChapters[e.indexOf(i)].href,text:t}:{label:"",href:"",text:t}))}))}flatChapter(e){let t=[];for(let i=0;i0?(t.push(e[i]),t=t.concat(this.flatChapter(e[i].subitems))):t.push(e[i]);return t}getMetadata(){return new Promise(((e,t)=>c(this,void 0,void 0,(function*(){const i=this.book.metadata;let r=i.author&&i.author[0]&&i.author[0].name&&C(i.author[0].name)?i.author[0].name:i.author&&i.author[0]&&C(i.author[0])?i.author[0]:i.author&&C(i.author)?i.author:"";try{const t=yield this.book.getCover();var n=new FileReader;n.readAsDataURL(t),n.onloadend=()=>{e(Object.assign(Object.assign({},i),{name:i.title,author:r,description:i.description,publisher:i.publisher,cover:n.result}))}}catch(n){console.error(n);try{e(Object.assign(Object.assign({},i),{name:i.title,author:r,description:i.description,publisher:i.publisher,cover:""}))}catch(e){console.error(e),t(e)}}}))))}}const L=(e,t)=>[-1,...t,e.length].reduce((({xs:t,a:i},r)=>({xs:t?.concat([e.slice(i+1,r)])??[],a:r})),{}).xs,S=/\d/,M=/^epubcfi\((.*)\)$/,D=e=>e.replace(/[\^[\](),;=]/g,"^$&"),k=(e,t)=>{return i=([e])=>e===t,e.map(((e,t,r)=>i(e,t,r)?t:null)).filter((e=>null!=e));var i},A=e=>{const t=[];let i;for(const[r,n]of e){if("/"===r)t.push({index:n});else{const e=t[t.length-1];if(":"===r)e.offset=n;else if("~"===r)e.temporal=n;else if("@"===r)e.spatial=(e.spatial??[]).concat(n);else if(";s"===r)e.side=n;else if("["===r){if("/"!==i||!n){e.text=(e.text??[]).concat(n);continue}e.id=n}}i=r}return t},E=e=>L(e,k(e,"!")).map(A),I=e=>{const t=(e=>{const t=[];let i,r,n="";const o=e=>(t.push(e),i=null,n=""),s=e=>(n+=e,r=!1);for(const t of Array.from(e.trim()).concat(""))if("^"!==t||r){if("!"===i)o(["!"]);else if(","===i)o([","]);else if("/"===i||":"===i){if(S.test(t)){s(t);continue}o([i,parseInt(n)])}else if("~"===i){if(S.test(t)||"."===t){s(t);continue}o(["~",parseFloat(n)])}else if("@"===i){if(":"===t){o(["@",parseFloat(n)]),i="@";continue}if(S.test(t)||"."===t){s(t);continue}o(["@",parseFloat(n)])}else{if("["===i){";"!==t||r?","!==t||r?"]"!==t||r?s(t):o(["[",n]):(o(["[",n]),i="["):(o(["[",n]),i=";");continue}if(i?.startsWith(";")){"="!==t||r?";"!==t||r?"]"!==t||r?s(t):o([i,n]):(o([i,n]),i=";"):(i=`;${n}`,n="");continue}}"/"!==t&&":"!==t&&"~"!==t&&"@"!==t&&"["!==t&&"!"!==t&&","!==t||(i=t)}else r=!0;return t})((i=e,i.match(M)?.[1]??i));var i;const r=k(t,",");if(!r.length)return E(t);const[n,o,s]=L(t,r).map(E);return{parent:n,start:o,end:s}},N=({index:e,id:t,offset:i,temporal:r,spatial:n,text:o,side:s})=>{const a=s?`;s=${s}`:"";return`/${e}`+(t?`[${D(t)}${a}]`:"")+(null!=i&&e%2?`:${i}`:"")+(r?`~${r}`:"")+(n?`@${n.join(":")}`:"")+(o||!t&&s?"["+(o?.map(D)?.join(",")??"")+a+"]":"")},R=e=>e.parent?[e.parent,e.start,e.end].map(R).join(","):e.map((e=>e.map(N).join(""))).join("!"),O=e=>{return t=R(e),M.test(t)?t:`epubcfi(${t})`;var t},P=(e,t)=>{return"string"==typeof e?O(P(I(e),t)):e.parent?(i=e.parent,r=e[t?"end":"start"],i.slice(0,-1).concat([i[i.length-1].concat(r[0])]).concat(r.slice(1))):e;var i,r},B=({nodeType:e})=>3===e||4===e,F=({nodeType:e})=>1===e,H=e=>{const t=Array.from(e.childNodes).filter((e=>B(e)||F(e))).reduce(((e,t)=>{let i=e[e.length-1];return i?B(t)?Array.isArray(i)?i.push(t):B(i)?e[e.length-1]=[i,t]:e.push(t):F(i)?e.push(null,t):e.push(t):e.push(t),e}),[]);return F(t[0])&&t.unshift("first"),F(t[t.length-1])&&t.push("last"),t.unshift("before"),t.push("after"),t},j=(e,t)=>e?H(e)[t]:null,W=(e,t)=>{const{id:i}=t[t.length-1];if(i){const t=e.ownerDocument.getElementById(i);if(t)return{node:t,offset:0}}for(const{index:i}of t){const t=j(e,i);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:r}=t[t.length-1];if(!Array.isArray(e))return{node:e,offset:r};let n=0;for(const t of e){const{length:e}=t.nodeValue;if(n+e>=r)return{node:t,offset:r-n};n+=e}},$=(e,t)=>{const{parentNode:i,id:r}=e,n=H(i),o=n.findIndex((t=>Array.isArray(t)?t.some((t=>t===e)):t===e)),s=n[o];if(Array.isArray(s)){let i=0;for(const r of s){if(r===e){i+=t;break}i+=r.nodeValue.length}t=i}const a={id:r,index:o,offset:t};return i!==e.ownerDocument.documentElement?$(i).concat(a):[a]},U=(e,t)=>W(e.documentElement,P(t)).node,z="urn:oasis:names:tc:opendocument:xmlns:container",q="http://www.w3.org/1999/xhtml",V="http://www.idpf.org/2007/opf",X="http://www.idpf.org/2007/ops",J="http://purl.org/dc/elements/1.1/",G="http://www.w3.org/2001/04/xmlenc#",_="http://www.daisy.org/z3986/2005/ncx/",Y="http://www.w3.org/1999/xlink",Z="http://www.w3.org/ns/SMIL",K={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)/},Q=e=>e.toLowerCase().replace(/[-:](.)/g,((e,t)=>t.toUpperCase())),ee=(e,t,i)=>i?i=>i.getAttribute(e)?.split(/\s/)?.includes(t):"function"==typeof t?i=>t(i.getAttribute(e)):i=>i.getAttribute(e)===t,te=(...e)=>t=>t?Object.fromEntries(e.map((e=>[Q(e),t.getAttribute(e)]))):null,ie=e=>{return t=e?.textContent,t?t.trim().replace(/\s{2,}/g," "):"";var t},re=(e,t)=>{const i=e.lookupNamespaceURI(null)===t||e.lookupPrefix(t),r=i?(e,i)=>e=>e.namespaceURI===t&&e.localName===i:(e,t)=>e=>e.localName===t;return{$:(e,t)=>[...e.children].find(r(e,t)),$$:(e,t)=>[...e.children].filter(r(e,t)),$$$:i?(e,i)=>[...e.getElementsByTagNameNS(t,i)]:(e,i)=>[...e.getElementsByTagName(t,i)]}},ne=(e,t)=>{try{if(t.includes(":"))return new URL(e,t);const i="whatever://whatever/";return decodeURI(new URL(e,i+t).href.replace(i,""))}catch(t){return console.warn(t),e}},oe=e=>/^(?!blob)\w+:/i.test(e),se=async(e,t,i)=>{const r=[];e.replace(t,((...e)=>(r.push(e),null)));const n=[];for(const e of r)n.push(await i(...e));return e.replace(t,(()=>n.shift()))},ae=e=>e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),le={attrs:["dir","xml:lang"]},ce={name:"alternate-script",many:!0,...le,props:["file-as"]},he={many:!0,...le,props:[{name:"role",many:!0,attrs:["scheme"]},"file-as",ce]},de=[{name:"title",many:!0,...le,props:["title-type","display-seq","file-as",ce]},{name:"identifier",many:!0,props:[{name:"identifier-type",attrs:["scheme"]}]},{name:"language",many:!0},{name:"creator",...he},{name:"contributor",...he},{name:"publisher",...le,props:["file-as",ce]},{name:"description",...le,props:[ce]},{name:"rights",...le,props:[ce]},{name:"date"},{name:"dcterms:modified",type:"meta"},{name:"subject",many:!0,...le,props:["term","authority",ce]},{name:"belongs-to-collection",type:"meta",many:!0,...le,props:["collection-type","group-position","dcterms:identifier","file-as",ce,{name:"belongs-to-collection",recursive:!0}]}],ue=(e,t=e=>e)=>{const{$:i,$$:r,$$$:n}=re(e,q),o=e=>r=>{const n=i(r,"a")??i(r,"span"),o=i(r,"ol"),a=(e=>e?decodeURI(t(e)):null)(n?.getAttribute("href")),l={label:ie(n)||n?.getAttribute("title"),href:a,subitems:s(o)};return e&&(l.type=n?.getAttributeNS(X,"type")?.split(/\s/)),l},s=(e,t)=>e?r(e,"li").map(o(t)):null,a=(e,t)=>s(i(e,"ol"),t),l=n(e,"nav");let c=null,h=null,d=null,u=[];for(const e of l){const t=e.getAttributeNS(X,"type")?.split(/\s/)??[];t.includes("toc")?c??=a(e):t.includes("page-list")?h??=a(e):t.includes("landmarks")?d??=a(e,!0):u.push({label:ie(e.firstElementChild),type:t,list:a(e)})}return{toc:c,pageList:h,landmarks:d,others:u}},fe=(e,t=e=>e)=>{const{$:i,$$:r}=re(e,_),n=e=>{const o=i(e,"navLabel"),s=i(e,"content"),a=ie(o),l=(e=>e?decodeURI(t(e)):null)(s.getAttribute("src"));if("navPoint"===e.localName){const t=r(e,"navPoint");return{label:a,href:l,subitems:t.length?t.map(n):null}}return{label:a,href:l}},o=(e,t)=>r(e,t).map(n),s=(t,r)=>{const n=i(e.documentElement,t);return n?o(n,r):null};return{toc:s("navMap","navPoint"),pageList:s("pageList","pageTarget"),others:r(e.documentElement,"navList").map((e=>({label:ie(i(e,"navLabel")),list:o(e,"navTarget")})))}},pe=e=>{if(!e)return;const t=e.split(":").map((e=>parseFloat(e)));if(3===t.length){const[e,i,r]=t;return 60*e*60+60*i+r}if(2===t.length){const[e,i]=t;return 60*e+i}const[i,r]=e.split(/(?=[^\d.])/);return parseFloat(i)*("h"===r?3600:"min"===r?60:"ms"===r?.001:1)},ge=/([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]),ye=async(e,t,i)=>{const r=new Uint8Array(await i.slice(0,t).arrayBuffer());t=Math.min(t,r.length);for(var n=0;n{const t=(new TextEncoder).encode(e),i=await globalThis.crypto.subtle.digest("SHA-1",t);return new Uint8Array(i)},ve=(e=be)=>({"http://www.idpf.org/2008/embedding":{key:t=>e(me(t).replaceAll(/[\u0020\u0009\u000d\u000a]/g,"")),decode:(e,t)=>ye(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(ge.test(e))return e}return""})(e).replaceAll("-","");return Uint8Array.from({length:16},((e,i)=>parseInt(t.slice(2*i,2*i+2),16)))},decode:(e,t)=>ye(e,1024,t)}});class we{#e=new Map;#t=new Map;#i;constructor(e){this.#i=e}async init(e,t){if(!e)return;const i=Array.from(e.getElementsByTagNameNS(G,"EncryptedData"),(e=>({algorithm:e.getElementsByTagNameNS(G,"EncryptionMethod")[0]?.getAttribute("Algorithm"),uri:e.getElementsByTagNameNS(G,"CipherReference")[0]?.getAttribute("URI")})));for(const{algorithm:e,uri:r}of i){if(!this.#t.has(e)){const i=this.#i[e];if(!i){console.warn("Unknown encryption algorithm");continue}const r=await i.key(t);this.#t.set(e,(e=>i.decode(r,e)))}this.#e.set(r,e)}}getDecoder(e){return this.#t.get(this.#e.get(e))??(e=>e)}}class xe{constructor({opf:e,resolveHref:t}){this.opf=e;const{$:i,$$:r,$$$:n}=re(e,V),o=i(e.documentElement,"manifest"),s=i(e.documentElement,"spine"),a=r(s,"itemref");this.manifest=r(o,"item").map(te("href","id","media-type","properties","media-overlay")).map((e=>(e.href=t(e.href),e.properties=e.properties?.split(/\s/),e))),this.spine=a.map(te("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===K.NCX)))?.href;const l=i(e.documentElement,"guide");l&&(this.guide=r(l,"reference").map(te("type","title","href")).map((({type:e,title:i,href:r})=>({label:i,type:e.split(/\s/),href:t(r)})))),this.cover=this.getItemByProperty("cover-image")??this.getItemByID("cover-image")??this.getItemByID(n(e,"meta").find(ee("name","cover"))?.getAttribute("content"))??this.getItemByID("cover")??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("xml")))?.href),this.cfis=(e=>{const t=[],{parentNode:i}=e[0],r=$(i);for(const[n,o]of H(i).entries()){const i=e[t.length];o===i&&t.push(O([r.concat({id:i.id,index:n})]))}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=I(e),i=(t.parent??t).shift();let r=U(this.opf,i);r&&"idref"!==r.nodeName&&(i.at(-1).id=null,r=U(this.opf,i));const n=r?.getAttribute("idref");return{index:this.spine.findIndex((e=>e.idref===n)),anchor:e=>((e,t)=>{const i=P(t),r=P(t,!0),n=e.documentElement,o=W(n,i[0]),s=W(n,r[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 Ce{#r=new Map;#n=new Map;#o=new Map;allowScript=!1;constructor({loadText:e,loadBlob:t,resources:i}){this.loadText=e,this.loadBlob=t,this.manifest=i.manifest,this.assets=i.manifest}createURL(e,t,i,r){if(!t)return"";const n=URL.createObjectURL(new Blob([t],{type:i}));if(this.#r.set(e,n),this.#o.set(e,1),r){const t=this.#n.get(r);t?t.push(e):this.#n.set(r,[e])}return n}ref(e,t){const i=this.#n.get(t);return i?.includes(e)||(this.#o.set(e,this.#o.get(e)+1),i?i.push(e):this.#n.set(t,[e])),this.#r.get(e)}unref(e){if(!this.#o.has(e))return;const t=this.#o.get(e)-1;if(t<1){URL.revokeObjectURL(this.#r.get(e)),this.#r.delete(e),this.#o.delete(e);const t=this.#n.get(e);if(t)for(;t.length;)this.unref(t.pop());this.#n.delete(e)}else this.#o.set(e,t)}async loadItem(e,t=[]){if(!e)return null;const{href:i,mediaType:r}=e,n=K.JS.test(e.mediaType);if(n&&!this.allowScript)return null;const o=t.at(-1);if(this.#r.has(i))return this.ref(i,o);return(n||[K.XHTML,K.HTML,K.CSS,K.SVG].includes(r))&&t.every((e=>e!==i))?this.loadReplaced(e,t):this.createURL(i,await this.loadBlob(i),r,o)}async loadHref(e,t,i=[]){if(oe(e))return e;const r=ne(e,t);let n=this.manifest.find((e=>e.href===r));return n||(n={href:r,mediaType:""}),this.loadItem(n,i.concat(t))}async loadReplaced(e,t=[]){const{href:i,mediaType:r}=e,n=t.at(-1),o=await this.loadText(i);if(!o)return null;if([K.XHTML,K.HTML,K.SVG].includes(r)){let s=(new DOMParser).parseFromString(o.trim(),r);if(r===K.XHTML&&s.querySelector("parsererror")&&(console.warn(s.querySelector("parsererror").innerText),e.mediaType=K.HTML,s=(new DOMParser).parseFromString(o.trim(),e.mediaType)),[K.XHTML,K.SVG].includes(e.mediaType)){let e=s.firstChild;for(;e instanceof ProcessingInstruction;){if(e.data){const r=await se(e.data,/(?:^|\s*)(href\s*=\s*['"])([^'"]*)(['"])/i,((e,r,n,o)=>this.loadHref(n,i,t).then((e=>`${r}${e}${o}`))));e.replaceWith(s.createProcessingInstruction(e.target,r))}e=e.nextSibling}}const a=async(e,r)=>e.setAttribute(r,await this.loadHref(e.getAttribute(r),i,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(Y,"href",await this.loadHref(e.getAttributeNS(Y,"href"),i,t));for(const e of s.querySelectorAll("style"))e.textContent&&(e.textContent=await this.replaceCSS(e.textContent,i,t));for(const e of s.querySelectorAll("[style]"))e.setAttribute("style",await this.replaceCSS(e.getAttribute("style"),i,t));const l=(new XMLSerializer).serializeToString(s);return this.createURL(i,l,e.mediaType,n)}const s=r===K.CSS?await this.replaceCSS(o,i,t):await this.replaceString(o,i,t);return this.createURL(i,s,r,n)}async replaceCSS(e,t,i=[]){const r=await se(e,/url\(\s*["']?([^'"\n]*?)\s*["']?\s*\)/gi,((e,r)=>this.loadHref(r,t,i).then((e=>`url("${e}")`)))),n=await se(r,/@import\s*["']([^"'\n]*?)["']/gi,((e,r)=>this.loadHref(r,t,i).then((e=>`@import "${e}"`)))),o=window?.innerWidth??800,s=window?.innerHeight??600;return n.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,i=[]){const r=new Map,n=this.assets.map((e=>{if(e.href===t)return;const i=((e,t)=>{if(!e)return t;const i=e.replace(/\/$/,"").split("/"),r=t.replace(/\/$/,"").split("/"),n=(i.length>r.length?i:r).findIndex(((e,t)=>i[t]!==r[t]));return n<0?"":Array(i.length-n).fill("..").concat(r.slice(n)).join("/")})((e=>e.slice(0,e.lastIndexOf("/")+1))(t),e.href),n=encodeURI(i),o="/"+e.href,s=encodeURI(o),a=new Set([i,n,o,s]);for(const t of a)r.set(t,e);return Array.from(a)})).flat().filter((e=>e));if(!n.length)return e;const o=new RegExp(n.map(ae).join("|"),"g");return se(e,o,(async e=>this.loadItem(r.get(e.replace(/^\//,"")),i.concat(t))))}unloadItem(e){this.unref(e?.href)}}const Te=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 Le{parser=new DOMParser;#s;constructor({loadText:e,loadBlob:t,getSize:i,sha1:r}){this.loadText=e,this.loadBlob=t,this.getSize=i,this.#s=new we(ve(r))}#a(e){return e&&e.includes("opf:scheme")&&(e=e.replaceAll("opf:scheme","scheme")),e?this.parser.parseFromString(e.trim(),K.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(z,"rootfile"),te("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 i=t[0].fullPath,r=await this.#l(i);if(!r)throw new Error("Failed to load package document");const n=await this.#l("META-INF/encryption.xml");await this.#s.init(n,r),this.resources=new xe({opf:r,resolveHref:e=>ne(e,i)});const o=new Ce({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:i,linear:r,properties:n=[]}=e,s=this.resources.getItemByID(i);return s?{id:this.resources.getItemByID(i)?.href,load:()=>o.loadItem(s),unload:()=>o.unloadItem(s),createDocument:()=>this.loadDocument(s),size:this.getSize(s.href),cfi:this.resources.cfis[t],linear:r,pageSpread:Te(n),resolveHref:e=>ne(e,s.href),loadMediaOverlay:()=>this.loadMediaOverlay(s)}:(console.warn(`Could not find item with ID "${i}" in manifest`),null)}));const{navPath:s,ncxPath:a}=this.resources;if(s)try{const e=e=>ne(e,s),t=ue(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=>ne(e,a),t=fe(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:c,media:h}=(e=>{const{$:t,$$:i}=re(e,V),r=t(e.documentElement,"metadata"),n=Array.from(r.children),o=(e,t)=>{if(!t)return null;const{props:i=[],attrs:r=[]}=e,s=ie(t);if(!i.length&&!r.length)return s;const a=t.getAttribute("id"),l=a?n.filter(ee("refines","#"+a)):[];return Object.fromEntries([["value",s]].concat(i.map((t=>{const{many:i,recursive:r}=t,n="string"==typeof t?t:t.name,s=ee("property",n),a=r?e:t;return[Q(n),i?l.filter(s).map((e=>o(a,e))):o(a,l.find(s))]}))).concat(r.map((e=>[Q(e),t.getAttribute(e)]))))},s=n.filter(ee("refines",null)),a=e=>Object.fromEntries(i(r,"meta").filter(ee("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:i,many:r}=e,n="meta"===t?e=>e.namespaceURI===V&&e.getAttribute("property")===i:e=>e.namespaceURI===J&&e.localName===i;return[Q(i),r?s.filter(n).map((t=>o(e,t))):o(e,s.find(n))]}))),rendition:a("rendition:"),media:a("media:")}})(r);this.rendition=c,this.media=h,h.duration=pe(h.duration),this.dir=this.resources.pageProgressionDirection,this.rawMetadata=l;const d=l?.title?.[0];this.metadata={title:d?.value,sortAs:d?.fileAs,language:l?.language,identifier:me(r),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:i})=>({name:e,code:t,scheme:i}))),rights:l?.rights?.value};const u={art:"artist",aut:"author",bkp:"producer",clr:"colorist",edt:"editor",ill:"illustrator",trl:"translator",pbl:"publisher"},f=e=>t=>{const i=[...new Set(t.role?.map((({value:t,scheme:i})=>(i&&"marc:relators"!==i?null:u[t])??e)))],r={name:t.value,sortAs:t.fileAs};return[i?.length?i:[e],r]};return l?.creator?.map(f("author"))?.concat(l?.contributor?.map?.(f("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 i=this.resources.getItemByID(t),r=((e,t=e=>e)=>{const{$:i,$$$:r}=re(e,Z);return r(e,"par").map((e=>{const r=i(e,"text")?.getAttribute("src")?.split("#")?.[1],n=i(e,"audio");return n?{id:r,audio:{src:(o=n.getAttribute("src"),o?decodeURI(t(o)):null),clipBegin:pe(n.getAttribute("clipBegin")),clipEnd:pe(n.getAttribute("clipEnd"))}}:{id:r};var o}))})(await this.#l(i.href),(e=>ne(e,i.href)));return r}resolveCFI(e){return this.resources.resolveCFI(e)}resolveHref(e){const[t,i]=e.split("#"),r=this.resources.getItemByHref(decodeURI(t));if(!r)return null;return{index:this.resources.spine.findIndex((({idref:e})=>e===r.id)),anchor:i?e=>((e,t)=>e.getElementById(t)??e.querySelector(`[name="${CSS.escape(t)}"]`))(e,i):()=>0}}splitTOCHref(e){return e?.split("#")??[]}getTOCFragment(e,t){return e.getElementById(t)??e.querySelector(`[name="${CSS.escape(t)}"]`)}isExternal(e){return oe(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 Se={"㐷":"傌","㐹":"㑶","㐽":"偑","㑇":"㑳","㑈":"倲","㑔":"㑯","㑩":"儸","㓆":"𠗣","㓥":"劏","㓰":"劃","㔉":"劚","㖊":"噚","㖞":"喎","㘎":"㘚","㚯":"㜄","㛀":"媰","㛟":"𡞵","㛠":"𡢃","㛣":"㜏","㛤":"孋","㛿":"𡠹","㟆":"㠏","㟜":"𡾱","㟥":"嵾","㡎":"幓","㤘":"㥮","㤽":"懤","㥪":"慺","㧏":"掆","㧐":"㩳","㧑":"撝","㧟":"擓","㧰":"擽","㨫":"㩜","㭎":"棡","㭏":"椲","㭣":"𣙎","㭤":"樢","㭴":"樫","㱩":"殰","㱮":"殨","㲿":"瀇","㳔":"濧","㳕":"灡","㳠":"澾","㳡":"濄","㳢":"𣾷","㳽":"瀰","㴋":"潚","㶉":"鸂","㶶":"燶","㶽":"煱","㺍":"獱","㻅":"璯","㻏":"𤫩","㻘":"𤪺","䀥":"䁻","䁖":"瞜","䂵":"碽","䃅":"磾","䅉":"稏","䅟":"穇","䅪":"𥢢","䇲":"筴","䉤":"籔","䌶":"䊷","䌷":"紬","䌸":"縳","䌹":"絅","䌺":"䋙","䌻":"䋚","䌼":"綐","䌽":"綵","䌾":"䋻","䌿":"䋹","䍀":"繿","䍁":"繸","䍠":"䍦","䎬":"䎱","䏝":"膞","䑽":"𦪙","䓓":"薵","䓕":"薳","䓖":"藭","䓨":"罃","䗖":"螮","䘛":"𧝞","䘞":"𧜗","䙊":"𧜵","䙌":"䙡","䙓":"襬","䜣":"訢","䜤":"鿁","䜥":"𧩙","䜧":"䜀","䜩":"讌","䝙":"貙","䞌":"𧵳","䞍":"䝼","䞎":"𧶧","䞐":"賰","䟢":"躎","䢀":"𨊰","䢁":"𨊸","䢂":"𨋢","䥺":"釾","䥽":"鏺","䥾":"䥱","䥿":"𨯅","䦀":"𨦫","䦁":"𨧜","䦂":"䥇","䦃":"鐯","䦅":"鐥","䦆":"钁","䦶":"䦛","䦷":"䦟","䩄":"靦","䭪":"𩞯","䯃":"𩣑","䯄":"騧","䯅":"䯀","䲝":"䱽","䲞":"𩶘","䲟":"鮣","䲠":"鰆","䲡":"鰌","䲢":"鰧","䲣":"䱷","䴓":"鳾","䴔":"鵁","䴕":"鴷","䴖":"鶄","䴗":"鶪","䴘":"鷉","䴙":"鸊","䶮":"龑","万":"萬","与":"與","丑":"醜","专":"專","业":"業","丛":"叢","东":"東","丝":"絲","丢":"丟","两":"兩","严":"嚴","丧":"喪","个":"個","丰":"豐","临":"臨","为":"爲","丽":"麗","举":"舉","么":"麼","义":"義","乌":"烏","乐":"樂","乔":"喬","习":"習","乡":"鄉","书":"書","买":"買","乱":"亂","了":"了","争":"爭","于":"於","亏":"虧","云":"雲","亘":"亙","亚":"亞","产":"產","亩":"畝","亲":"親","亵":"褻","亸":"嚲","亿":"億","仅":"僅","仆":"僕","仇":"仇","从":"從","仑":"侖","仓":"倉","仪":"儀","们":"們","价":"價","仿":"仿","众":"衆","优":"優","伙":"夥","会":"會","伛":"傴","伞":"傘","伟":"偉","传":"傳","伡":"俥","伣":"俔","伤":"傷","伥":"倀","伦":"倫","伧":"傖","伪":"僞","伫":"佇","体":"體","余":"餘","佛":"佛","佣":"傭","佥":"僉","侠":"俠","侣":"侶","侥":"僥","侦":"偵","侧":"側","侨":"僑","侩":"儈","侪":"儕","侬":"儂","侭":"儘","俊":"俊","俣":"俁","俦":"儔","俨":"儼","俩":"倆","俪":"儷","俫":"倈","俭":"儉","修":"修","借":"借","债":"債","倾":"傾","偬":"傯","偻":"僂","偾":"僨","偿":"償","傤":"儎","傥":"儻","傧":"儐","储":"儲","傩":"儺","僵":"僵","儿":"兒","克":"克","兑":"兌","兖":"兗","党":"黨","兰":"蘭","关":"關","兴":"興","兹":"茲","养":"養","兽":"獸","冁":"囅","内":"內","冈":"岡","册":"冊","写":"寫","军":"軍","农":"農","冬":"冬","冯":"馮","冲":"衝","决":"決","况":"況","冻":"凍","净":"淨","凄":"悽","准":"準","凉":"涼","凌":"凌","减":"減","凑":"湊","凛":"凜","几":"幾","凤":"鳳","凫":"鳧","凭":"憑","凯":"凱","凶":"兇","出":"出","击":"擊","凿":"鑿","刍":"芻","划":"劃","刘":"劉","则":"則","刚":"剛","创":"創","删":"刪","别":"別","刬":"剗","刭":"剄","刮":"刮","制":"制","刹":"剎","刽":"劊","刾":"㓨","刿":"劌","剀":"剴","剂":"劑","剐":"剮","剑":"劍","剥":"剝","剧":"劇","劝":"勸","办":"辦","务":"務","劢":"勱","动":"動","励":"勵","劲":"勁","劳":"勞","势":"勢","勋":"勳","勚":"勩","匀":"勻","匦":"匭","匮":"匱","区":"區","医":"醫","千":"千","升":"升","华":"華","协":"協","单":"單","卖":"賣","卜":"卜","占":"佔","卢":"盧","卤":"滷","卧":"臥","卫":"衛","却":"卻","卷":"卷","卺":"巹","厂":"廠","厅":"廳","历":"歷","厉":"厲","压":"壓","厌":"厭","厍":"厙","厐":"龎","厕":"廁","厘":"釐","厢":"廂","厣":"厴","厦":"廈","厨":"廚","厩":"廄","厮":"廝","县":"縣","叁":"叄","参":"參","叆":"靉","叇":"靆","双":"雙","发":"發","变":"變","叙":"敘","叠":"疊","只":"只","台":"臺","叶":"葉","号":"號","叹":"嘆","叽":"嘰","吁":"籲","吃":"喫","合":"合","吊":"吊","同":"同","后":"後","向":"向","吓":"嚇","吕":"呂","吗":"嗎","吨":"噸","听":"聽","启":"啓","吴":"吳","呐":"吶","呒":"嘸","呓":"囈","呕":"嘔","呖":"嚦","呗":"唄","员":"員","呙":"咼","呛":"嗆","呜":"嗚","周":"周","咏":"詠","咙":"嚨","咛":"嚀","咝":"噝","咤":"吒","咨":"諮","咸":"鹹","咽":"咽","哄":"哄","响":"響","哑":"啞","哒":"噠","哓":"嘵","哔":"嗶","哕":"噦","哗":"譁","哙":"噲","哜":"嚌","哝":"噥","哟":"喲","唇":"脣","唛":"嘜","唝":"嗊","唠":"嘮","唡":"啢","唢":"嗩","唤":"喚","啧":"嘖","啬":"嗇","啭":"囀","啮":"齧","啯":"嘓","啰":"囉","啴":"嘽","啸":"嘯","喂":"喂","喷":"噴","喽":"嘍","喾":"嚳","嗫":"囁","嗳":"噯","嘘":"噓","嘤":"嚶","嘱":"囑","噜":"嚕","噪":"噪","嚣":"囂","回":"回","团":"團","园":"園","困":"困","囱":"囪","围":"圍","囵":"圇","国":"國","图":"圖","圆":"圓","圣":"聖","圹":"壙","场":"場","坏":"壞","块":"塊","坚":"堅","坛":"壇","坜":"壢","坝":"壩","坞":"塢","坟":"墳","坠":"墜","垄":"壟","垅":"壠","垆":"壚","垒":"壘","垦":"墾","垩":"堊","垫":"墊","垭":"埡","垯":"墶","垱":"壋","垲":"塏","垴":"堖","埘":"塒","埙":"壎","埚":"堝","堑":"塹","堕":"墮","塆":"壪","墙":"牆","壮":"壯","声":"聲","壳":"殼","壶":"壺","壸":"壼","处":"處","备":"備","复":"復","够":"夠","夫":"夫","头":"頭","夸":"誇","夹":"夾","夺":"奪","奁":"奩","奂":"奐","奋":"奮","奖":"獎","奥":"奧","奸":"奸","妆":"妝","妇":"婦","妈":"媽","妩":"嫵","妪":"嫗","妫":"嬀","姗":"姍","姜":"姜","姹":"奼","娄":"婁","娅":"婭","娆":"嬈","娇":"嬌","娈":"孌","娘":"娘","娱":"娛","娲":"媧","娴":"嫺","婳":"嫿","婴":"嬰","婵":"嬋","婶":"嬸","媪":"媼","媭":"嬃","嫒":"嬡","嫔":"嬪","嫱":"嬙","嬷":"嬤","孙":"孫","学":"學","孪":"孿","宁":"寧","它":"它","宝":"寶","实":"實","宠":"寵","审":"審","宪":"憲","宫":"宮","家":"家","宽":"寬","宾":"賓","寝":"寢","对":"對","寻":"尋","导":"導","寿":"壽","将":"將","尔":"爾","尘":"塵","尝":"嘗","尧":"堯","尴":"尷","尸":"屍","尽":"盡","局":"局","层":"層","屃":"屓","屉":"屜","届":"屆","属":"屬","屡":"屢","屦":"屨","屿":"嶼","岁":"歲","岂":"豈","岖":"嶇","岗":"崗","岘":"峴","岚":"嵐","岛":"島","岩":"巖","岭":"嶺","岳":"嶽","岽":"崬","岿":"巋","峃":"嶨","峄":"嶧","峡":"峽","峣":"嶢","峤":"嶠","峥":"崢","峦":"巒","峰":"峯","崂":"嶗","崃":"崍","崄":"嶮","崭":"嶄","嵘":"嶸","嵚":"嶔","嵝":"嶁","巅":"巔","巨":"巨","巩":"鞏","巯":"巰","币":"幣","布":"布","帅":"帥","师":"師","帏":"幃","帐":"帳","帘":"簾","帜":"幟","带":"帶","帧":"幀","席":"席","帮":"幫","帱":"幬","帻":"幘","帼":"幗","幂":"冪","干":"幹","并":"並","幸":"幸","广":"廣","庄":"莊","庆":"慶","床":"牀","庐":"廬","庑":"廡","库":"庫","应":"應","庙":"廟","庞":"龐","废":"廢","庵":"庵","庼":"廎","廪":"廩","开":"開","异":"異","弃":"棄","弑":"弒","张":"張","弥":"彌","弦":"弦","弪":"弳","弯":"彎","弹":"彈","强":"強","归":"歸","当":"當","录":"錄","彟":"彠","彦":"彥","彨":"彲","彩":"彩","彻":"徹","征":"徵","径":"徑","徕":"徠","御":"御","忆":"憶","忏":"懺","志":"志","忧":"憂","念":"念","忾":"愾","怀":"懷","态":"態","怂":"慫","怃":"憮","怄":"慪","怅":"悵","怆":"愴","怜":"憐","总":"總","怼":"懟","怿":"懌","恋":"戀","恒":"恆","恤":"恤","恳":"懇","恶":"惡","恸":"慟","恹":"懨","恺":"愷","恻":"惻","恼":"惱","恽":"惲","悦":"悅","悫":"愨","悬":"懸","悭":"慳","悮":"悞","悯":"憫","惊":"驚","惧":"懼","惨":"慘","惩":"懲","惫":"憊","惬":"愜","惭":"慚","惮":"憚","惯":"慣","愈":"愈","愠":"慍","愤":"憤","愦":"憒","愿":"願","慑":"懾","慭":"憖","懑":"懣","懒":"懶","懔":"懍","戆":"戇","戋":"戔","戏":"戲","戗":"戧","战":"戰","戚":"戚","戬":"戩","戯":"戱","户":"戶","才":"才","扎":"扎","扑":"撲","托":"託","扣":"扣","执":"執","扩":"擴","扪":"捫","扫":"掃","扬":"揚","扰":"擾","折":"折","抚":"撫","抛":"拋","抟":"摶","抠":"摳","抡":"掄","抢":"搶","护":"護","报":"報","抵":"抵","担":"擔","拐":"拐","拟":"擬","拢":"攏","拣":"揀","拥":"擁","拦":"攔","拧":"擰","拨":"撥","择":"擇","挂":"掛","挚":"摯","挛":"攣","挜":"掗","挝":"撾","挞":"撻","挟":"挾","挠":"撓","挡":"擋","挢":"撟","挣":"掙","挤":"擠","挥":"揮","挦":"撏","挨":"挨","挽":"挽","捝":"挩","捞":"撈","损":"損","捡":"撿","换":"換","捣":"搗","据":"據","掳":"擄","掴":"摑","掷":"擲","掸":"撣","掺":"摻","掼":"摜","揽":"攬","揾":"搵","揿":"撳","搀":"攙","搁":"擱","搂":"摟","搄":"揯","搅":"攪","搜":"搜","携":"攜","摄":"攝","摅":"攄","摆":"擺","摇":"搖","摈":"擯","摊":"攤","撄":"攖","撑":"撐","撵":"攆","撷":"擷","撸":"擼","撺":"攛","擜":"㩵","擞":"擻","攒":"攢","敌":"敵","敚":"敓","敛":"斂","敩":"斆","数":"數","斋":"齋","斓":"斕","斗":"鬥","斩":"斬","断":"斷","旋":"旋","无":"無","旧":"舊","时":"時","旷":"曠","旸":"暘","昆":"昆","昙":"曇","昵":"暱","昼":"晝","昽":"曨","显":"顯","晋":"晉","晒":"曬","晓":"曉","晔":"曄","晕":"暈","晖":"暉","暂":"暫","暅":"𣈶","暗":"暗","暧":"曖","曲":"曲","术":"術","朱":"朱","朴":"樸","机":"機","杀":"殺","杂":"雜","权":"權","杆":"杆","杠":"槓","条":"條","来":"來","杨":"楊","杩":"榪","杯":"杯","杰":"傑","松":"松","板":"板","极":"極","构":"構","枞":"樅","枢":"樞","枣":"棗","枥":"櫪","枧":"梘","枨":"棖","枪":"槍","枫":"楓","枭":"梟","柜":"櫃","柠":"檸","柽":"檉","栀":"梔","栅":"柵","标":"標","栈":"棧","栉":"櫛","栊":"櫳","栋":"棟","栌":"櫨","栎":"櫟","栏":"欄","树":"樹","栖":"棲","栗":"栗","样":"樣","核":"核","栾":"欒","桠":"椏","桡":"橈","桢":"楨","档":"檔","桤":"榿","桥":"橋","桦":"樺","桧":"檜","桨":"槳","桩":"樁","桪":"樳","梁":"梁","梦":"夢","梼":"檮","梾":"棶","梿":"槤","检":"檢","棁":"梲","棂":"欞","椁":"槨","椝":"槼","椟":"櫝","椠":"槧","椢":"槶","椤":"欏","椫":"樿","椭":"橢","椮":"槮","楼":"樓","榄":"欖","榅":"榲","榇":"櫬","榈":"櫚","榉":"櫸","榝":"樧","槚":"檟","槛":"檻","槟":"檳","槠":"櫧","横":"橫","樯":"檣","樱":"櫻","橥":"櫫","橱":"櫥","橹":"櫓","橼":"櫞","檩":"檁","欢":"歡","欤":"歟","欧":"歐","欲":"欲","歼":"殲","殁":"歿","殇":"殤","残":"殘","殒":"殞","殓":"殮","殚":"殫","殡":"殯","殴":"毆","毁":"毀","毂":"轂","毕":"畢","毙":"斃","毡":"氈","毵":"毿","毶":"𣯶","氇":"氌","气":"氣","氢":"氫","氩":"氬","氲":"氳","汇":"匯","汉":"漢","汤":"湯","汹":"洶","沄":"澐","沈":"沈","沟":"溝","没":"沒","沣":"灃","沤":"漚","沥":"瀝","沦":"淪","沧":"滄","沨":"渢","沩":"潙","沪":"滬","沾":"沾","泛":"泛","泞":"濘","注":"注","泪":"淚","泶":"澩","泷":"瀧","泸":"瀘","泺":"濼","泻":"瀉","泼":"潑","泽":"澤","泾":"涇","洁":"潔","洒":"灑","洼":"窪","浃":"浹","浅":"淺","浆":"漿","浇":"澆","浈":"湞","浉":"溮","浊":"濁","测":"測","浍":"澮","济":"濟","浏":"瀏","浐":"滻","浑":"渾","浒":"滸","浓":"濃","浔":"潯","浕":"濜","涂":"塗","涌":"湧","涚":"涗","涛":"濤","涝":"澇","涞":"淶","涟":"漣","涠":"潿","涡":"渦","涢":"溳","涣":"渙","涤":"滌","润":"潤","涧":"澗","涨":"漲","涩":"澀","淀":"澱","渊":"淵","渌":"淥","渍":"漬","渎":"瀆","渐":"漸","渑":"澠","渔":"漁","渖":"瀋","渗":"滲","温":"溫","游":"遊","湾":"灣","湿":"溼","溁":"濚","溃":"潰","溅":"濺","溆":"漵","溇":"漊","滗":"潷","滚":"滾","滞":"滯","滟":"灩","滠":"灄","满":"滿","滢":"瀅","滤":"濾","滥":"濫","滦":"灤","滨":"濱","滩":"灘","滪":"澦","漓":"漓","潆":"瀠","潇":"瀟","潋":"瀲","潍":"濰","潜":"潛","潴":"瀦","澛":"瀂","澜":"瀾","濑":"瀨","濒":"瀕","灏":"灝","灭":"滅","灯":"燈","灵":"靈","灶":"竈","灾":"災","灿":"燦","炀":"煬","炉":"爐","炖":"燉","炜":"煒","炝":"熗","点":"點","炼":"煉","炽":"熾","烁":"爍","烂":"爛","烃":"烴","烛":"燭","烟":"煙","烦":"煩","烧":"燒","烨":"燁","烩":"燴","烫":"燙","烬":"燼","热":"熱","焕":"煥","焖":"燜","焘":"燾","煴":"熅","熏":"燻","爱":"愛","爷":"爺","牍":"牘","牦":"犛","牵":"牽","牺":"犧","犊":"犢","状":"狀","犷":"獷","犸":"獁","犹":"猶","狈":"狽","狝":"獮","狞":"獰","独":"獨","狭":"狹","狮":"獅","狯":"獪","狰":"猙","狱":"獄","狲":"猻","猃":"獫","猎":"獵","猕":"獼","猡":"玀","猪":"豬","猫":"貓","猬":"蝟","献":"獻","獭":"獺","玑":"璣","玙":"璵","玚":"瑒","玛":"瑪","玩":"玩","玮":"瑋","环":"環","现":"現","玱":"瑲","玺":"璽","珐":"琺","珑":"瓏","珰":"璫","珲":"琿","琎":"璡","琏":"璉","琐":"瑣","琼":"瓊","瑶":"瑤","瑷":"璦","瑸":"璸","璇":"璇","璎":"瓔","瓒":"瓚","瓮":"甕","瓯":"甌","电":"電","画":"畫","畅":"暢","畴":"疇","疖":"癤","疗":"療","疟":"瘧","疠":"癘","疡":"瘍","疬":"癧","疭":"瘲","疮":"瘡","疯":"瘋","疱":"皰","疴":"痾","症":"症","痈":"癰","痉":"痙","痒":"癢","痖":"瘂","痨":"癆","痪":"瘓","痫":"癇","痴":"癡","瘅":"癉","瘆":"瘮","瘗":"瘞","瘘":"瘻","瘪":"癟","瘫":"癱","瘾":"癮","瘿":"癭","癞":"癩","癣":"癬","癫":"癲","皂":"皁","皑":"皚","皱":"皺","皲":"皸","盏":"盞","盐":"鹽","监":"監","盖":"蓋","盗":"盜","盘":"盤","眍":"瞘","眦":"眥","眬":"矓","睁":"睜","睐":"睞","睑":"瞼","瞆":"瞶","瞒":"瞞","瞩":"矚","矩":"矩","矫":"矯","矶":"磯","矾":"礬","矿":"礦","砀":"碭","码":"碼","砖":"磚","砗":"硨","砚":"硯","砜":"碸","砺":"礪","砻":"礱","砾":"礫","础":"礎","硁":"硜","硕":"碩","硖":"硤","硗":"磽","硙":"磑","硚":"礄","确":"確","硵":"磠","硷":"礆","碍":"礙","碛":"磧","碜":"磣","碱":"鹼","礼":"禮","祃":"禡","祎":"禕","祢":"禰","祯":"禎","祷":"禱","祸":"禍","禀":"稟","禄":"祿","禅":"禪","离":"離","私":"私","秃":"禿","秆":"稈","秋":"秋","种":"種","秘":"祕","积":"積","称":"稱","秽":"穢","秾":"穠","稆":"穭","税":"稅","稣":"穌","稳":"穩","穑":"穡","穞":"穭","穷":"窮","窃":"竊","窍":"竅","窎":"窵","窑":"窯","窜":"竄","窝":"窩","窥":"窺","窦":"竇","窭":"窶","竖":"豎","竞":"競","笃":"篤","笋":"筍","笔":"筆","笕":"筧","笺":"箋","笼":"籠","笾":"籩","筑":"築","筚":"篳","筛":"篩","筜":"簹","筝":"箏","筹":"籌","筼":"篔","签":"籤","筿":"篠","简":"簡","箓":"籙","箦":"簀","箧":"篋","箨":"籜","箩":"籮","箪":"簞","箫":"簫","篑":"簣","篓":"簍","篮":"籃","篯":"籛","篱":"籬","簖":"籪","籁":"籟","籴":"糴","类":"類","籼":"秈","粜":"糶","粝":"糲","粤":"粵","粪":"糞","粮":"糧","粽":"糉","糁":"糝","糇":"餱","糍":"餈","系":"系","紧":"緊","絷":"縶","緼":"縕","縆":"緪","纟":"糹","纠":"糾","纡":"紆","红":"紅","纣":"紂","纤":"纖","纥":"紇","约":"約","级":"級","纨":"紈","纩":"纊","纪":"紀","纫":"紉","纬":"緯","纭":"紜","纮":"紘","纯":"純","纰":"紕","纱":"紗","纲":"綱","纳":"納","纴":"紝","纵":"縱","纶":"綸","纷":"紛","纸":"紙","纹":"紋","纺":"紡","纻":"紵","纼":"紖","纽":"紐","纾":"紓","线":"線","绀":"紺","绁":"紲","绂":"紱","练":"練","组":"組","绅":"紳","细":"細","织":"織","终":"終","绉":"縐","绊":"絆","绋":"紼","绌":"絀","绍":"紹","绎":"繹","经":"經","绐":"紿","绑":"綁","绒":"絨","结":"結","绔":"絝","绕":"繞","绖":"絰","绗":"絎","绘":"繪","给":"給","绚":"絢","绛":"絳","络":"絡","绝":"絕","绞":"絞","统":"統","绠":"綆","绡":"綃","绢":"絹","绣":"繡","绤":"綌","绥":"綏","绦":"絛","继":"繼","绨":"綈","绩":"績","绪":"緒","绫":"綾","绬":"緓","续":"續","绮":"綺","绯":"緋","绰":"綽","绱":"鞝","绲":"緄","绳":"繩","维":"維","绵":"綿","绶":"綬","绷":"繃","绸":"綢","绹":"綯","绺":"綹","绻":"綣","综":"綜","绽":"綻","绾":"綰","绿":"綠","缀":"綴","缁":"緇","缂":"緙","缃":"緗","缄":"緘","缅":"緬","缆":"纜","缇":"緹","缈":"緲","缉":"緝","缊":"縕","缋":"繢","缌":"緦","缍":"綞","缎":"緞","缏":"緶","缐":"線","缑":"緱","缒":"縋","缓":"緩","缔":"締","缕":"縷","编":"編","缗":"緡","缘":"緣","缙":"縉","缚":"縛","缛":"縟","缜":"縝","缝":"縫","缞":"縗","缟":"縞","缠":"纏","缡":"縭","缢":"縊","缣":"縑","缤":"繽","缥":"縹","缦":"縵","缧":"縲","缨":"纓","缩":"縮","缪":"繆","缫":"繅","缬":"纈","缭":"繚","缮":"繕","缯":"繒","缰":"繮","缱":"繾","缲":"繰","缳":"繯","缴":"繳","缵":"纘","罂":"罌","网":"網","罗":"羅","罚":"罰","罢":"罷","罴":"羆","羁":"羈","羟":"羥","羡":"羨","群":"羣","翘":"翹","翙":"翽","翚":"翬","耢":"耮","耧":"耬","耸":"聳","耻":"恥","聂":"聶","聋":"聾","职":"職","聍":"聹","联":"聯","聩":"聵","聪":"聰","肃":"肅","肠":"腸","肤":"膚","肮":"骯","肴":"餚","肾":"腎","肿":"腫","胀":"脹","胁":"脅","胄":"胄","胆":"膽","背":"背","胜":"勝","胡":"胡","胧":"朧","胨":"腖","胪":"臚","胫":"脛","胶":"膠","脉":"脈","脍":"膾","脏":"髒","脐":"臍","脑":"腦","脓":"膿","脔":"臠","脚":"腳","脱":"脫","脶":"腡","脸":"臉","腊":"臘","腌":"醃","腘":"膕","腭":"齶","腻":"膩","腼":"靦","腽":"膃","腾":"騰","膑":"臏","膻":"羶","臜":"臢","致":"致","舆":"輿","舍":"舍","舣":"艤","舰":"艦","舱":"艙","舻":"艫","艰":"艱","艳":"豔","艺":"藝","节":"節","芈":"羋","芗":"薌","芜":"蕪","芦":"蘆","芸":"芸","苁":"蓯","苇":"葦","苈":"藶","苋":"莧","苌":"萇","苍":"蒼","苎":"苧","苏":"蘇","苔":"苔","苧":"薴","苹":"蘋","范":"範","茎":"莖","茏":"蘢","茑":"蔦","茔":"塋","茕":"煢","茧":"繭","荆":"荊","荐":"薦","荙":"薘","荚":"莢","荛":"蕘","荜":"蓽","荝":"萴","荞":"蕎","荟":"薈","荠":"薺","荡":"蕩","荣":"榮","荤":"葷","荥":"滎","荦":"犖","荧":"熒","荨":"蕁","荩":"藎","荪":"蓀","荫":"蔭","荬":"蕒","荭":"葒","荮":"葤","药":"藥","莅":"蒞","莱":"萊","莲":"蓮","莳":"蒔","莴":"萵","莶":"薟","获":"獲","莸":"蕕","莹":"瑩","莺":"鶯","莼":"蓴","萚":"蘀","萝":"蘿","萤":"螢","营":"營","萦":"縈","萧":"蕭","萨":"薩","葱":"蔥","蒀":"蒕","蒇":"蕆","蒉":"蕢","蒋":"蔣","蒌":"蔞","蒏":"醟","蒙":"蒙","蓝":"藍","蓟":"薊","蓠":"蘺","蓣":"蕷","蓥":"鎣","蓦":"驀","蔂":"虆","蔑":"蔑","蔷":"薔","蔹":"蘞","蔺":"藺","蔼":"藹","蕰":"薀","蕲":"蘄","蕴":"蘊","薮":"藪","藓":"蘚","藴":"蘊","蘖":"櫱","虏":"虜","虑":"慮","虚":"虛","虫":"蟲","虬":"虯","虮":"蟣","虱":"蝨","虽":"雖","虾":"蝦","虿":"蠆","蚀":"蝕","蚁":"蟻","蚂":"螞","蚃":"蠁","蚕":"蠶","蚝":"蠔","蚬":"蜆","蛊":"蠱","蛎":"蠣","蛏":"蟶","蛮":"蠻","蛰":"蟄","蛱":"蛺","蛲":"蟯","蛳":"螄","蛴":"蠐","蜕":"蛻","蜗":"蝸","蜡":"蠟","蝇":"蠅","蝈":"蟈","蝉":"蟬","蝎":"蠍","蝼":"螻","蝾":"蠑","螀":"螿","螨":"蟎","蟏":"蠨","衅":"釁","衔":"銜","补":"補","表":"表","衬":"襯","衮":"袞","袄":"襖","袅":"嫋","袆":"褘","袜":"襪","袭":"襲","袯":"襏","装":"裝","裆":"襠","裈":"褌","裢":"褳","裣":"襝","裤":"褲","裥":"襉","褛":"褸","褴":"襤","襕":"襴","见":"見","观":"觀","觃":"覎","规":"規","觅":"覓","视":"視","觇":"覘","览":"覽","觉":"覺","觊":"覬","觋":"覡","觌":"觿","觍":"覥","觎":"覦","觏":"覯","觐":"覲","觑":"覷","觞":"觴","触":"觸","觯":"觶","訚":"誾","詟":"讋","誉":"譽","誊":"謄","讠":"訁","计":"計","订":"訂","讣":"訃","认":"認","讥":"譏","讦":"訐","讧":"訌","讨":"討","让":"讓","讪":"訕","讫":"訖","讬":"託","训":"訓","议":"議","讯":"訊","记":"記","讱":"訒","讲":"講","讳":"諱","讴":"謳","讵":"詎","讶":"訝","讷":"訥","许":"許","讹":"訛","论":"論","讻":"訩","讼":"訟","讽":"諷","设":"設","访":"訪","诀":"訣","证":"證","诂":"詁","诃":"訶","评":"評","诅":"詛","识":"識","诇":"詗","诈":"詐","诉":"訴","诊":"診","诋":"詆","诌":"謅","词":"詞","诎":"詘","诏":"詔","诐":"詖","译":"譯","诒":"詒","诓":"誆","诔":"誄","试":"試","诖":"詿","诗":"詩","诘":"詰","诙":"詼","诚":"誠","诛":"誅","诜":"詵","话":"話","诞":"誕","诟":"詬","诠":"詮","诡":"詭","询":"詢","诣":"詣","诤":"諍","该":"該","详":"詳","诧":"詫","诨":"諢","诩":"詡","诪":"譸","诫":"誡","诬":"誣","语":"語","诮":"誚","误":"誤","诰":"誥","诱":"誘","诲":"誨","诳":"誑","说":"說","诵":"誦","诶":"誒","请":"請","诸":"諸","诹":"諏","诺":"諾","读":"讀","诼":"諑","诽":"誹","课":"課","诿":"諉","谀":"諛","谁":"誰","谂":"諗","调":"調","谄":"諂","谅":"諒","谆":"諄","谇":"誶","谈":"談","谉":"讅","谊":"誼","谋":"謀","谌":"諶","谍":"諜","谎":"謊","谏":"諫","谐":"諧","谑":"謔","谒":"謁","谓":"謂","谔":"諤","谕":"諭","谖":"諼","谗":"讒","谘":"諮","谙":"諳","谚":"諺","谛":"諦","谜":"謎","谝":"諞","谞":"諝","谟":"謨","谠":"讜","谡":"謖","谢":"謝","谣":"謠","谤":"謗","谥":"諡","谦":"謙","谧":"謐","谨":"謹","谩":"謾","谪":"謫","谫":"譾","谬":"謬","谭":"譚","谮":"譖","谯":"譙","谰":"讕","谱":"譜","谲":"譎","谳":"讞","谴":"譴","谵":"譫","谶":"讖","谷":"谷","豮":"豶","贝":"貝","贞":"貞","负":"負","贠":"貟","贡":"貢","财":"財","责":"責","贤":"賢","败":"敗","账":"賬","货":"貨","质":"質","贩":"販","贪":"貪","贫":"貧","贬":"貶","购":"購","贮":"貯","贯":"貫","贰":"貳","贱":"賤","贲":"賁","贳":"貰","贴":"貼","贵":"貴","贶":"貺","贷":"貸","贸":"貿","费":"費","贺":"賀","贻":"貽","贼":"賊","贽":"贄","贾":"賈","贿":"賄","赀":"貲","赁":"賃","赂":"賂","赃":"贓","资":"資","赅":"賅","赆":"贐","赇":"賕","赈":"賑","赉":"賚","赊":"賒","赋":"賦","赌":"賭","赍":"齎","赎":"贖","赏":"賞","赐":"賜","赑":"贔","赒":"賙","赓":"賡","赔":"賠","赕":"賧","赖":"賴","赗":"賵","赘":"贅","赙":"賻","赚":"賺","赛":"賽","赜":"賾","赝":"贗","赞":"贊","赟":"贇","赠":"贈","赡":"贍","赢":"贏","赣":"贛","赪":"赬","赵":"趙","赶":"趕","趋":"趨","趱":"趲","趸":"躉","跃":"躍","跄":"蹌","跖":"蹠","跞":"躒","践":"踐","跶":"躂","跷":"蹺","跸":"蹕","跹":"躚","跻":"躋","踌":"躊","踪":"蹤","踬":"躓","踯":"躑","蹑":"躡","蹒":"蹣","蹰":"躕","蹿":"躥","躏":"躪","躜":"躦","躯":"軀","輼":"轀","车":"車","轧":"軋","轨":"軌","轩":"軒","轪":"軑","轫":"軔","转":"轉","轭":"軛","轮":"輪","软":"軟","轰":"轟","轱":"軲","轲":"軻","轳":"轤","轴":"軸","轵":"軹","轶":"軼","轷":"軤","轸":"軫","轹":"轢","轺":"軺","轻":"輕","轼":"軾","载":"載","轾":"輊","轿":"轎","辀":"輈","辁":"輇","辂":"輅","较":"較","辄":"輒","辅":"輔","辆":"輛","辇":"輦","辈":"輩","辉":"輝","辊":"輥","辋":"輞","辌":"輬","辍":"輟","辎":"輜","辏":"輳","辐":"輻","辑":"輯","辒":"轀","输":"輸","辔":"轡","辕":"轅","辖":"轄","辗":"輾","辘":"轆","辙":"轍","辚":"轔","辞":"辭","辟":"闢","辩":"辯","辫":"辮","边":"邊","辽":"遼","达":"達","迁":"遷","过":"過","迈":"邁","运":"運","还":"還","这":"這","进":"進","远":"遠","违":"違","连":"連","迟":"遲","迩":"邇","迳":"逕","迹":"跡","适":"適","选":"選","逊":"遜","递":"遞","逦":"邐","逻":"邏","遗":"遺","遥":"遙","邓":"鄧","邝":"鄺","邬":"鄔","邮":"郵","邹":"鄒","邺":"鄴","邻":"鄰","郁":"鬱","郏":"郟","郐":"鄶","郑":"鄭","郓":"鄆","郦":"酈","郧":"鄖","郸":"鄲","酂":"酇","酝":"醞","酦":"醱","酱":"醬","酸":"酸","酽":"釅","酾":"釃","酿":"釀","醖":"醞","采":"採","释":"釋","里":"裏","鉴":"鑑","銮":"鑾","錾":"鏨","钅":"釒","钆":"釓","钇":"釔","针":"針","钉":"釘","钊":"釗","钋":"釙","钌":"釕","钍":"釷","钎":"釺","钏":"釧","钐":"釤","钑":"鈒","钒":"釩","钓":"釣","钔":"鍆","钕":"釹","钖":"鍚","钗":"釵","钘":"鈃","钙":"鈣","钚":"鈈","钛":"鈦","钜":"鉅","钝":"鈍","钞":"鈔","钟":"鍾","钠":"鈉","钡":"鋇","钢":"鋼","钣":"鈑","钤":"鈐","钥":"鑰","钦":"欽","钧":"鈞","钨":"鎢","钩":"鉤","钪":"鈧","钫":"鈁","钬":"鈥","钭":"鈄","钮":"鈕","钯":"鈀","钰":"鈺","钱":"錢","钲":"鉦","钳":"鉗","钴":"鈷","钵":"鉢","钶":"鈳","钷":"鉕","钸":"鈽","钹":"鈸","钺":"鉞","钻":"鑽","钼":"鉬","钽":"鉭","钾":"鉀","钿":"鈿","铀":"鈾","铁":"鐵","铂":"鉑","铃":"鈴","铄":"鑠","铅":"鉛","铆":"鉚","铇":"鉋","铈":"鈰","铉":"鉉","铊":"鉈","铋":"鉍","铌":"鈮","铍":"鈹","铎":"鐸","铏":"鉶","铐":"銬","铑":"銠","铒":"鉺","铓":"鋩","铔":"錏","铕":"銪","铖":"鋮","铗":"鋏","铘":"鋣","铙":"鐃","铚":"銍","铛":"鐺","铜":"銅","铝":"鋁","铞":"銱","铟":"銦","铠":"鎧","铡":"鍘","铢":"銖","铣":"銑","铤":"鋌","铥":"銩","铦":"銛","铧":"鏵","铨":"銓","铩":"鎩","铪":"鉿","铫":"銚","铬":"鉻","铭":"銘","铮":"錚","铯":"銫","铰":"鉸","铱":"銥","铲":"鏟","铳":"銃","铴":"鐋","铵":"銨","银":"銀","铷":"銣","铸":"鑄","铹":"鐒","铺":"鋪","铻":"鋙","铼":"錸","铽":"鋱","链":"鏈","铿":"鏗","销":"銷","锁":"鎖","锂":"鋰","锃":"鋥","锄":"鋤","锅":"鍋","锆":"鋯","锇":"鋨","锈":"鏽","锉":"銼","锊":"鋝","锋":"鋒","锌":"鋅","锍":"鋶","锎":"鐦","锏":"鐧","锐":"銳","锑":"銻","锒":"鋃","锓":"鋟","锔":"鋦","锕":"錒","锖":"錆","锗":"鍺","锘":"鍩","错":"錯","锚":"錨","锛":"錛","锜":"錡","锝":"鍀","锞":"錁","锟":"錕","锠":"錩","锡":"錫","锢":"錮","锣":"鑼","锤":"錘","锥":"錐","锦":"錦","锧":"鑕","锨":"鍁","锩":"錈","锪":"鍃","锫":"錇","锬":"錟","锭":"錠","键":"鍵","锯":"鋸","锰":"錳","锱":"錙","锲":"鍥","锳":"鍈","锴":"鍇","锵":"鏘","锶":"鍶","锷":"鍔","锸":"鍤","锹":"鍬","锺":"鍾","锻":"鍛","锼":"鎪","锽":"鍠","锾":"鍰","锿":"鎄","镀":"鍍","镁":"鎂","镂":"鏤","镃":"鎡","镄":"鐨","镅":"鎇","镆":"鏌","镇":"鎮","镈":"鎛","镉":"鎘","镊":"鑷","镋":"钂","镌":"鐫","镍":"鎳","镎":"鎿","镏":"鎦","镐":"鎬","镑":"鎊","镒":"鎰","镓":"鎵","镔":"鑌","镕":"鎔","镖":"鏢","镗":"鏜","镘":"鏝","镙":"鏍","镚":"鏰","镛":"鏞","镜":"鏡","镝":"鏑","镞":"鏃","镟":"鏇","镠":"鏐","镡":"鐔","镢":"钁","镣":"鐐","镤":"鏷","镥":"鑥","镦":"鐓","镧":"鑭","镨":"鐠","镩":"鑹","镪":"鏹","镫":"鐙","镬":"鑊","镭":"鐳","镮":"鐶","镯":"鐲","镰":"鐮","镱":"鐿","镲":"鑔","镳":"鑣","镴":"鑞","镵":"鑱","镶":"鑲","长":"長","门":"門","闩":"閂","闪":"閃","闫":"閆","闬":"閈","闭":"閉","问":"問","闯":"闖","闰":"閏","闱":"闈","闲":"閒","闳":"閎","间":"間","闵":"閔","闶":"閌","闷":"悶","闸":"閘","闹":"鬧","闺":"閨","闻":"聞","闼":"闥","闽":"閩","闾":"閭","闿":"闓","阀":"閥","阁":"閣","阂":"閡","阃":"閫","阄":"鬮","阅":"閱","阆":"閬","阇":"闍","阈":"閾","阉":"閹","阊":"閶","阋":"鬩","阌":"閿","阍":"閽","阎":"閻","阏":"閼","阐":"闡","阑":"闌","阒":"闃","阓":"闠","阔":"闊","阕":"闋","阖":"闔","阗":"闐","阘":"闒","阙":"闕","阚":"闞","阛":"闤","队":"隊","阳":"陽","阴":"陰","阵":"陣","阶":"階","际":"際","陆":"陸","陇":"隴","陈":"陳","陉":"陘","陕":"陝","陦":"隯","陧":"隉","陨":"隕","险":"險","随":"隨","隐":"隱","隶":"隸","隽":"雋","难":"難","雇":"僱","雏":"雛","雕":"雕","雠":"讎","雳":"靂","雾":"霧","霁":"霽","霉":"黴","霡":"霢","霭":"靄","靓":"靚","靔":"靝","静":"靜","面":"面","靥":"靨","鞑":"韃","鞒":"鞽","鞯":"韉","鞲":"韝","韦":"韋","韧":"韌","韨":"韍","韩":"韓","韪":"韙","韫":"韞","韬":"韜","韵":"韻","页":"頁","顶":"頂","顷":"頃","顸":"頇","项":"項","顺":"順","须":"須","顼":"頊","顽":"頑","顾":"顧","顿":"頓","颀":"頎","颁":"頒","颂":"頌","颃":"頏","预":"預","颅":"顱","领":"領","颇":"頗","颈":"頸","颉":"頡","颊":"頰","颋":"頲","颌":"頜","颍":"潁","颎":"熲","颏":"頦","颐":"頤","频":"頻","颒":"頮","颓":"頹","颔":"頷","颕":"頴","颖":"穎","颗":"顆","题":"題","颙":"顒","颚":"顎","颛":"顓","颜":"顏","额":"額","颞":"顳","颟":"顢","颠":"顛","颡":"顙","颢":"顥","颣":"纇","颤":"顫","颥":"顬","颦":"顰","颧":"顴","风":"風","飏":"颺","飐":"颭","飑":"颮","飒":"颯","飓":"颶","飔":"颸","飕":"颼","飖":"颻","飗":"飀","飘":"飄","飙":"飆","飚":"飈","飞":"飛","飨":"饗","餍":"饜","饣":"飠","饤":"飣","饥":"飢","饦":"飥","饧":"餳","饨":"飩","饩":"餼","饪":"飪","饫":"飫","饬":"飭","饭":"飯","饮":"飲","饯":"餞","饰":"飾","饱":"飽","饲":"飼","饳":"飿","饴":"飴","饵":"餌","饶":"饒","饷":"餉","饸":"餄","饹":"餎","饺":"餃","饻":"餏","饼":"餅","饽":"餑","饾":"餖","饿":"餓","馀":"餘","馁":"餒","馂":"餕","馃":"餜","馄":"餛","馅":"餡","馆":"館","馇":"餷","馈":"饋","馉":"餶","馊":"餿","馋":"饞","馌":"饁","馍":"饃","馎":"餺","馏":"餾","馐":"饈","馑":"饉","馒":"饅","馓":"饊","馔":"饌","馕":"饢","马":"馬","驭":"馭","驮":"馱","驯":"馴","驰":"馳","驱":"驅","驲":"馹","驳":"駁","驴":"驢","驵":"駔","驶":"駛","驷":"駟","驸":"駙","驹":"駒","驺":"騶","驻":"駐","驼":"駝","驽":"駑","驾":"駕","驿":"驛","骀":"駘","骁":"驍","骂":"罵","骃":"駰","骄":"驕","骅":"驊","骆":"駱","骇":"駭","骈":"駢","骉":"驫","骊":"驪","骋":"騁","验":"驗","骍":"騂","骎":"駸","骏":"駿","骐":"騏","骑":"騎","骒":"騍","骓":"騅","骔":"騌","骕":"驌","骖":"驂","骗":"騙","骘":"騭","骙":"騤","骚":"騷","骛":"騖","骜":"驁","骝":"騮","骞":"騫","骟":"騸","骠":"驃","骡":"騾","骢":"驄","骣":"驏","骤":"驟","骥":"驥","骦":"驦","骧":"驤","髅":"髏","髋":"髖","髌":"髕","鬓":"鬢","鬶":"鬹","魇":"魘","魉":"魎","鱼":"魚","鱽":"魛","鱾":"魢","鱿":"魷","鲀":"魨","鲁":"魯","鲂":"魴","鲃":"䰾","鲄":"魺","鲅":"鮁","鲆":"鮃","鲇":"鮎","鲈":"鱸","鲉":"鮋","鲊":"鮓","鲋":"鮒","鲌":"鮊","鲍":"鮑","鲎":"鱟","鲏":"鮍","鲐":"鮐","鲑":"鮭","鲒":"鮚","鲓":"鮳","鲔":"鮪","鲕":"鮞","鲖":"鮦","鲗":"鰂","鲘":"鮜","鲙":"鱠","鲚":"鱭","鲛":"鮫","鲜":"鮮","鲝":"鮺","鲞":"鯗","鲟":"鱘","鲠":"鯁","鲡":"鱺","鲢":"鰱","鲣":"鰹","鲤":"鯉","鲥":"鰣","鲦":"鰷","鲧":"鯀","鲨":"鯊","鲩":"鯇","鲪":"鮶","鲫":"鯽","鲬":"鯒","鲭":"鯖","鲮":"鯪","鲯":"鯕","鲰":"鯫","鲱":"鯡","鲲":"鯤","鲳":"鯧","鲴":"鯝","鲵":"鯢","鲶":"鯰","鲷":"鯛","鲸":"鯨","鲹":"鰺","鲺":"鯴","鲻":"鯔","鲼":"鱝","鲽":"鰈","鲾":"鰏","鲿":"鱨","鳀":"鯷","鳁":"鰮","鳂":"鰃","鳃":"鰓","鳄":"鱷","鳅":"鰍","鳆":"鰒","鳇":"鰉","鳈":"鰁","鳉":"鱂","鳊":"鯿","鳋":"鰠","鳌":"鰲","鳍":"鰭","鳎":"鰨","鳏":"鰥","鳐":"鰩","鳑":"鰟","鳒":"鰜","鳓":"鰳","鳔":"鰾","鳕":"鱈","鳖":"鱉","鳗":"鰻","鳘":"鰵","鳙":"鱅","鳚":"䲁","鳛":"鰼","鳜":"鱖","鳝":"鱔","鳞":"鱗","鳟":"鱒","鳠":"鱯","鳡":"鱤","鳢":"鱧","鳣":"鱣","鳤":"䲘","鸟":"鳥","鸠":"鳩","鸡":"雞","鸢":"鳶","鸣":"鳴","鸤":"鳲","鸥":"鷗","鸦":"鴉","鸧":"鶬","鸨":"鴇","鸩":"鴆","鸪":"鴣","鸫":"鶇","鸬":"鸕","鸭":"鴨","鸮":"鴞","鸯":"鴦","鸰":"鴒","鸱":"鴟","鸲":"鴝","鸳":"鴛","鸴":"鷽","鸵":"鴕","鸶":"鷥","鸷":"鷙","鸸":"鴯","鸹":"鴰","鸺":"鵂","鸻":"鴴","鸼":"鵃","鸽":"鴿","鸾":"鸞","鸿":"鴻","鹀":"鵐","鹁":"鵓","鹂":"鸝","鹃":"鵑","鹄":"鵠","鹅":"鵝","鹆":"鵒","鹇":"鷳","鹈":"鵜","鹉":"鵡","鹊":"鵲","鹋":"鶓","鹌":"鵪","鹍":"鵾","鹎":"鵯","鹏":"鵬","鹐":"鵮","鹑":"鶉","鹒":"鶊","鹓":"鵷","鹔":"鷫","鹕":"鶘","鹖":"鶡","鹗":"鶚","鹘":"鶻","鹙":"鶖","鹚":"鷀","鹛":"鶥","鹜":"鶩","鹝":"鷊","鹞":"鷂","鹟":"鶲","鹠":"鶹","鹡":"鶺","鹢":"鷁","鹣":"鶼","鹤":"鶴","鹥":"鷖","鹦":"鸚","鹧":"鷓","鹨":"鷚","鹩":"鷯","鹪":"鷦","鹫":"鷲","鹬":"鷸","鹭":"鷺","鹮":"䴉","鹯":"鸇","鹰":"鷹","鹱":"鸌","鹲":"鸏","鹳":"鸛","鹴":"鸘","鹾":"鹺","麦":"麥","麸":"麩","麹":"麴","麺":"麪","麽":"麼","黄":"黃","黉":"黌","黡":"黶","黩":"黷","黪":"黲","黾":"黽","鼋":"黿","鼌":"鼂","鼍":"鼉","鼹":"鼴","齐":"齊","齑":"齏","齿":"齒","龀":"齔","龁":"齕","龂":"齗","龃":"齟","龄":"齡","龅":"齙","龆":"齠","龇":"齜","龈":"齦","龉":"齬","龊":"齪","龋":"齲","龌":"齷","龙":"龍","龚":"龔","龛":"龕","龟":"龜","鿎":"䃮","鿏":"䥑","鿒":"鿓","鿔":"鎶","𠀾":"𠁞","𠆲":"儣","𠆿":"𠌥","𠇹":"俓","𠉂":"㒓","𠉗":"𠏢","𠋆":"儭","𠚳":"𠠎","𠛅":"剾","𠛆":"𠞆","𠛾":"𪟖","𠡠":"勑","𠮶":"嗰","𠯟":"哯","𠯠":"噅","𠰱":"㘉","𠰷":"嚧","𠱞":"囃","𠲥":"𡅏","𠴛":"𡃕","𠴢":"𡄔","𠵸":"𡄣","𠵾":"㗲","𡋀":"𡓾","𡋗":"𡑭","𡋤":"壗","𡍣":"𡔖","𡒄":"壈","𡝠":"㜷","𡞋":"㜗","𡞱":"㜢","𡠟":"孎","𡥧":"孻","𡭜":"𡮉","𡭬":"𡮣","𡳃":"𡳳","𡳒":"𦘧","𡶴":"嵼","𡸃":"𡽗","𡺃":"嶈","𡺄":"嶘","𢋈":"㢝","𢗓":"㦛","𢘙":"𢤱","𢘝":"𢣚","𢘞":"𢣭","𢙏":"愻","𢙐":"憹","𢙑":"𢠼","𢙒":"憢","𢙓":"懀","𢛯":"㦎","𢠁":"懎","𢢐":"𤢻","𢧐":"戰","𢫊":"𢷮","𢫞":"𢶫","𢫬":"摋","𢬍":"擫","𢬦":"𢹿","𢭏":"擣","𢽾":"斅","𣃁":"斸","𣆐":"曥","𣈣":"𣋋","𣍨":"𦢈","𣍯":"腪","𣍰":"脥","𣎑":"臗","𣏢":"槫","𣐕":"桱","𣐤":"欍","𣑶":"𣠲","𣒌":"楇","𣓿":"橯","𣔌":"樤","𣗊":"樠","𣗋":"欓","𣗙":"㰙","𣘐":"㯤","𣘓":"𣞻","𣘴":"檭","𣘷":"𣝕","𣚚":"欘","𣞎":"𣠩","𣨼":"殢","𣭤":"𣯴","𣯣":"𣯩","𣱝":"氭","𣲗":"湋","𣲘":"潕","𣳆":"㵗","𣶩":"澅","𣶫":"𣿉","𣶭":"𪷓","𣷷":"𤅶","𣸣":"濆","𣺼":"灙","𣺽":"𤁣","𣽷":"瀃","𤆡":"熓","𤆢":"㷍","𤇃":"爄","𤇄":"熌","𤇭":"爖","𤇹":"熚","𤈶":"熉","𤈷":"㷿","𤊀":"𤒎","𤊰":"𤓩","𤋏":"熡","𤎺":"𤓎","𤎻":"𤑳","𤙯":"𤛮","𤝢":"𤢟","𤞃":"獩","𤞤":"玁","𤠋":"㺏","𤦀":"瓕","𤩽":"瓛","𤳄":"𤳸","𤶊":"癐","𤶧":"𤸫","𤻊":"㿗","𤽯":"㿧","𤾀":"皟","𤿲":"麬","𥁢":"䀉","𥅘":"𥌃","𥅴":"䀹","𥅿":"𥊝","𥆧":"瞤","𥇢":"䁪","𥎝":"䂎","𥐟":"礒","𥐯":"𥖅","𥐰":"𥕥","𥐻":"碙","𥞦":"𥞵","𥧂":"𥨐","𥩟":"竚","𥩺":"𥪂","𥫣":"籅","𥬀":"䉙","𥬞":"籋","𥬠":"篘","𥭉":"𥵊","𥮋":"𥸠","𥮜":"䉲","𥮾":"篸","𥱔":"𥵃","𥹥":"𥼽","𥺅":"䊭","𥺇":"𥽖","𦈈":"𥿊","𦈉":"緷","𦈋":"綇","𦈌":"綀","𦈎":"繟","𦈏":"緍","𦈐":"縺","𦈑":"緸","𦈒":"𦂅","𦈓":"䋿","𦈔":"縎","𦈕":"緰","𦈖":"䌈","𦈗":"𦃄","𦈘":"䌋","𦈙":"䌰","𦈚":"縬","𦈛":"繓","𦈜":"䌖","𦈝":"繏","𦈞":"䌟","𦈟":"䌝","𦈠":"䌥","𦈡":"繻","𦍠":"䍽","𦛨":"朥","𦝼":"膢","𦟗":"𦣎","𦨩":"𦪽","𦰏":"蓧","𦰴":"䕳","𦶟":"爇","𦶻":"𦾟","𦻕":"蘟","𧉐":"𧕟","𧉞":"䗿","𧌥":"𧎈","𧏖":"蠙","𧏗":"蠀","𧑏":"蠾","𧒭":"𧔥","𧜭":"䙱","𧝝":"襰","𧝧":"𧟀","𧮪":"詀","𧳕":"𧳟","𧹑":"䞈","𧹒":"買","𧹓":"𧶔","𧹔":"賬","𧹕":"𝻻","𧹖":"賟","𧹗":"贃","𧿈":"𨇁","𨀁":"躘","𨀱":"𨄣","𨁴":"𨅍","𨂺":"𨈊","𨄄":"𨈌","𨅛":"䠱","𨅫":"𨇞","𨅬":"躝","𨉗":"軉","𨐅":"軗","𨐆":"𨊻","𨐇":"𨏠","𨐈":"輄","𨐉":"𨎮","𨐊":"𨏥","𨑹":"䢨","𨟳":"𨣞","𨠨":"𨣧","𨡙":"𨢿","𨡺":"𨣈","𨤰":"𨤻","𨰾":"鎷","𨰿":"釳","𨱀":"𨥛","𨱁":"鈠","𨱂":"鈋","𨱃":"鈲","𨱄":"鈯","𨱅":"鉁","𨱆":"龯","𨱇":"銶","𨱈":"鋉","𨱉":"鍄","𨱊":"𨧱","𨱋":"錂","𨱌":"鏆","𨱍":"鎯","𨱎":"鍮","𨱏":"鎝","𨱐":"𨫒","𨱑":"鐄","𨱒":"鏉","𨱓":"鐎","𨱔":"鐏","𨱕":"𨮂","𨱖":"䥩","𨷿":"䦳","𨸀":"𨳕","𨸁":"𨳑","𨸂":"閍","𨸃":"閐","𨸄":"䦘","𨸅":"𨴗","𨸆":"𨵩","𨸇":"𨵸","𨸉":"𨶀","𨸊":"𨶏","𨸋":"𨶲","𨸌":"𨶮","𨸎":"𨷲","𨸘":"𨽏","𨸟":"䧢","𩏼":"䪏","𩏽":"𩏪","𩏾":"𩎢","𩏿":"䪘","𩐀":"䪗","𩓋":"顂","𩖕":"𩓣","𩖖":"顃","𩖗":"䫴","𩙥":"颰","𩙦":"𩗀","𩙧":"䬞","𩙨":"𩘹","𩙩":"𩘀","𩙪":"颷","𩙫":"颾","𩙬":"𩘺","𩙭":"𩘝","𩙮":"䬘","𩙯":"䬝","𩙰":"𩙈","𩟿":"𩚛","𩠀":"𩚥","𩠁":"𩚵","𩠂":"𩛆","𩠃":"𩛩","𩠅":"𩟐","𩠆":"𩜦","𩠇":"䭀","𩠈":"䭃","𩠉":"𩜇","𩠊":"𩜵","𩠋":"𩝔","𩠌":"餸","𩠎":"𩞄","𩠏":"𩞦","𩠠":"𩠴","𩡖":"𩡣","𩧦":"𩡺","𩧨":"駎","𩧩":"𩤊","𩧪":"䮾","𩧫":"駚","𩧬":"𩢡","𩧭":"䭿","𩧮":"𩢾","𩧯":"驋","𩧰":"䮝","𩧱":"𩥉","𩧲":"駧","𩧳":"𩢸","𩧴":"駩","𩧵":"𩢴","𩧶":"𩣏","𩧸":"𩣫","𩧺":"駶","𩧻":"𩣵","𩧼":"𩣺","𩧿":"䮠","𩨀":"騔","𩨁":"䮞","𩨂":"驄","𩨃":"騝","𩨄":"騪","𩨅":"𩤸","𩨆":"𩤙","𩨇":"䮫","𩨈":"騟","𩨉":"𩤲","𩨊":"騚","𩨋":"𩥄","𩨌":"𩥑","𩨍":"𩥇","𩨎":"龭","𩨏":"䮳","𩨐":"𩧆","𩩈":"䯤","𩬣":"𩭙","𩬤":"𩰀","𩭹":"鬖","𩯒":"𩯳","𩰰":"𩰹","𩲒":"𩳤","𩴌":"𩴵","𩽹":"魥","𩽺":"𩵩","𩽻":"𩵹","𩽼":"鯶","𩽽":"𩶱","𩽾":"鮟","𩽿":"𩶰","𩾁":"鯄","𩾂":"䲖","𩾃":"鮸","𩾄":"𩷰","𩾅":"𩸃","𩾆":"𩸦","𩾇":"鯱","𩾈":"䱙","𩾊":"䱬","𩾋":"䱰","𩾌":"鱇","𩾎":"𩽇","𪉂":"䲰","𪉃":"鳼","𪉄":"𩿪","𪉅":"𪀦","𪉆":"鴲","𪉈":"鴜","𪉉":"𪁈","𪉊":"鷨","𪉋":"𪀾","𪉌":"𪁖","𪉍":"鵚","𪉎":"𪂆","𪉏":"𪃏","𪉐":"𪃍","𪉑":"鷔","𪉒":"𪄕","𪉔":"𪄆","𪉕":"𪇳","𪎈":"䴬","𪎉":"麲","𪎊":"麨","𪎋":"䴴","𪎌":"麳","𪑅":"䵳","𪔭":"𪔵","𪚏":"𪘀","𪚐":"𪘯","𪜎":"𠿕","𪞝":"凙","𪟎":"㔋","𪟝":"勣","𪠀":"𧷎","𪠟":"㓄","𪠡":"𠬙","𪠳":"唓","𪠵":"㖮","𪠸":"嚛","𪠺":"𠽃","𪠽":"噹","𪡀":"嘺","𪡃":"嘪","𪡋":"噞","𪡏":"嗹","𪡛":"㗿","𪡞":"嘳","𪡺":"𡃄","𪢌":"㘓","𪢐":"𡃤","𪢒":"𡂡","𪢕":"嚽","𪢖":"𡅯","𪢠":"囒","𪢮":"圞","𪢸":"墲","𪣆":"埬","𪣒":"堚","𪣻":"塿","𪤄":"𡓁","𪤚":"壣","𪥠":"𧹈","𪥫":"孇","𪥰":"嬣","𪥿":"嬻","𪧀":"孾","𪧘":"寠","𪨊":"㞞","𪨗":"屩","𪨧":"崙","𪨩":"𡸗","𪨶":"輋","𪨷":"巗","𪨹":"𡹬","𪩇":"㟺","𪩎":"巊","𪩘":"巘","𪩛":"𡿖","𪩷":"幝","𪩸":"幩","𪪏":"廬","𪪑":"㢗","𪪞":"廧","𪪴":"𢍰","𪪼":"彃","𪫌":"徿","𪫡":"𢤩","𪫷":"㦞","𪫺":"憸","𪬚":"𢣐","𪬯":"𢤿","𪭝":"𢯷","𪭢":"摐","𪭧":"擟","𪭯":"𢶒","𪭵":"掚","𪭾":"撊","𪮃":"㨻","𪮋":"㩋","𪮖":"撧","𪮳":"𢺳","𪮶":"攋","𪯋":"㪎","𪰶":"曊","𪱥":"膹","𪱷":"梖","𪲎":"櫅","𪲔":"欐","𪲛":"檵","𪲮":"櫠","𪳍":"欇","𪳗":"𣜬","𪴙":"欑","𪵑":"毊","𪵣":"霼","𪵱":"濿","𪶄":"溡","𪶒":"𤄷","𪶮":"𣽏","𪷍":"㵾","𪷽":"灒","𪸕":"熂","𪸩":"煇","𪹀":"𤑹","𪹠":"𤓌","𪹳":"爥","𪹹":"𤒻","𪺣":"𤘀","𪺪":"𤜆","𪺭":"犞","𪺷":"獊","𪺸":"𤠮","𪺻":"㺜","𪺽":"猌","𪻐":"瑽","𪻨":"瓄","𪻲":"瑻","𪻺":"璝","𪼋":"㻶","𪼴":"𤬅","𪽈":"畼","𪽝":"𤳷","𪽪":"痮","𪽭":"𤷃","𪽮":"㿖","𪽴":"𤺔","𪽷":"瘱","𪾔":"盨","𪾢":"睍","𪾣":"眝","𪾦":"矑","𪾸":"矉","𪿊":"𥏝","𪿞":"𥖲","𪿫":"礮","𪿵":"𥗇","𫀌":"𥜰","𫀓":"𥜐","𫀨":"䅐","𫀬":"䅳","𫀮":"𥢷","𫁂":"䆉","𫁟":"竱","𫁡":"鴗","𫁱":"𥶽","𫁲":"䉑","𫁳":"𥯤","𫁷":"䉶","𫁺":"𥴼","𫂃":"簢","𫂆":"簂","𫂈":"䉬","𫂖":"𥴨","𫂿":"𥻦","𫃗":"𩏷","𫄙":"糺","𫄚":"䊺","𫄛":"紟","𫄜":"䋃","𫄝":"𥾯","𫄞":"䋔","𫄟":"絁","𫄠":"絙","𫄡":"絧","𫄢":"絥","𫄣":"繷","𫄤":"繨","𫄥":"纚","𫄦":"𦀖","𫄧":"綖","𫄨":"絺","𫄩":"䋦","𫄪":"𦅇","𫄫":"綟","𫄬":"緤","𫄭":"緮","𫄮":"䋼","𫄯":"𦃩","𫄰":"縍","𫄱":"繬","𫄲":"縸","𫄳":"縰","𫄴":"繂","𫄵":"𦅈","𫄶":"繈","𫄷":"繶","𫄸":"纁","𫄹":"纗","𫅅":"䍤","𫅗":"羵","𫅥":"𦒀","𫅭":"䎙","𫅼":"𦔖","𫆏":"聻","𫆝":"𦟼","𫆫":"𦡝","𫇘":"𦧺","𫇛":"艣","𫇪":"𦱌","𫇭":"蔿","𫇴":"蒭","𫇽":"蕽","𫈉":"蕳","𫈎":"葝","𫈟":"蔯","𫈵":"蕝","𫉁":"薆","𫉄":"藷","𫊪":"䗅","𫊮":"蠦","𫊸":"蟜","𫊹":"𧒯","𫊻":"蟳","𫋇":"蟂","𫋌":"蟘","𫋲":"䙔","𫋷":"襗","𫋹":"襓","𫋻":"襘","𫌀":"襀","𫌇":"襵","𫌋":"𧞫","𫌨":"覼","𫌪":"覛","𫌫":"𧡴","𫌬":"𧢄","𫌭":"覹","𫌯":"䚩","𫍐":"𧭹","𫍙":"訑","𫍚":"訞","𫍛":"訜","𫍜":"詓","𫍝":"諫","𫍞":"𧦝","𫍟":"𧦧","𫍠":"䛄","𫍡":"詑","𫍢":"譊","𫍣":"詷","𫍤":"譑","𫍥":"誂","𫍦":"譨","𫍧":"誺","𫍨":"誫","𫍩":"諣","𫍪":"誋","𫍫":"䛳","𫍬":"誷","𫍭":"𧩕","𫍮":"誳","𫍯":"諴","𫍰":"諰","𫍱":"諯","𫍲":"謏","𫍳":"諥","𫍴":"謱","𫍵":"謸","𫍶":"𧩼","𫍷":"謉","𫍸":"謆","𫍹":"謯","𫍺":"𧫝","𫍻":"譆","𫍼":"𧬤","𫍽":"譞","𫍾":"𧭈","𫍿":"譾","𫎆":"豵","𫎌":"貗","𫎦":"贚","𫎧":"䝭","𫎨":"𧸘","𫎩":"賝","𫎪":"䞋","𫎫":"贉","𫎬":"贑","𫎭":"䞓","𫎱":"䟐","𫎳":"䟆","𫎸":"𧽯","𫎺":"䟃","𫏃":"䠆","𫏆":"蹳","𫏋":"蹻","𫏌":"𨂐","𫏐":"蹔","𫏑":"𨇽","𫏕":"𨆪","𫏞":"𨇰","𫏨":"𨇤","𫐄":"軏","𫐅":"軕","𫐆":"轣","𫐇":"軜","𫐈":"軷","𫐉":"軨","𫐊":"軬","𫐋":"𨎌","𫐌":"軿","𫐍":"𨌈","𫐎":"輢","𫐏":"輖","𫐐":"輗","𫐑":"輨","𫐒":"輷","𫐓":"輮","𫐔":"𨍰","𫐕":"轊","𫐖":"轇","𫐗":"轐","𫐘":"轗","𫐙":"轠","𫐷":"遱","𫑘":"鄟","𫑡":"鄳","𫑷":"醶","𫓥":"釟","𫓦":"釨","𫓧":"鈇","𫓨":"鈛","𫓩":"鏦","𫓪":"鈆","𫓫":"𨥟","𫓬":"鉔","𫓭":"鉠","𫓮":"𨪕","𫓯":"銈","𫓰":"銊","𫓱":"鐈","𫓲":"銁","𫓳":"𨰋","𫓴":"鉾","𫓵":"鋠","𫓶":"鋗","𫓷":"𫒡","𫓸":"錽","𫓹":"錤","𫓺":"鐪","𫓻":"錜","𫓼":"𨨛","𫓽":"錝","𫓾":"錥","𫓿":"𨨢","𫔀":"鍊","𫔁":"鐼","𫔂":"鍉","𫔃":"𨰲","𫔄":"鍒","𫔅":"鎍","𫔆":"䥯","𫔇":"鎞","𫔈":"鎙","𫔉":"𨰃","𫔊":"鏥","𫔋":"䥗","𫔌":"鏾","𫔍":"鐇","𫔎":"鐍","𫔏":"𨬖","𫔐":"𨭸","𫔑":"𨭖","𫔒":"𨮳","𫔓":"𨯟","𫔔":"鑴","𫔕":"𨰥","𫔖":"𨲳","𫔭":"開","𫔮":"閒","𫔯":"閗","𫔰":"閞","𫔲":"𨴹","𫔴":"閵","𫔵":"䦯","𫔶":"闑","𫔽":"𨼳","𫕚":"𩀨","𫕥":"霣","𫕨":"𩅙","𫖃":"靧","𫖅":"䪊","𫖇":"鞾","𫖑":"𩎖","𫖒":"韠","𫖓":"𩏂","𫖔":"韛","𫖕":"韝","𫖖":"𩏠","𫖪":"𩑔","𫖫":"䪴","𫖬":"䪾","𫖭":"𩒎","𫖮":"顗","𫖯":"頫","𫖰":"䫂","𫖱":"䫀","𫖲":"䫟","𫖳":"頵","𫖴":"𩔳","𫖵":"𩓥","𫖶":"顅","𫖷":"𩔑","𫖸":"願","𫖹":"顣","𫖺":"䫶","𫗇":"䫻","𫗈":"𩗓","𫗉":"𩗴","𫗊":"䬓","𫗋":"飋","𫗚":"𩟗","𫗞":"飦","𫗟":"䬧","𫗠":"餦","𫗡":"𩚩","𫗢":"飵","𫗣":"飶","𫗤":"𩛌","𫗥":"餫","𫗦":"餔","𫗧":"餗","𫗨":"𩛡","𫗩":"饠","𫗪":"餧","𫗫":"餬","𫗬":"餪","𫗭":"餵","𫗮":"餭","𫗯":"餱","𫗰":"䭔","𫗱":"䭑","𫗳":"𩝽","𫗴":"饘","𫗵":"饟","𫘛":"馯","𫘜":"馼","𫘝":"駃","𫘞":"駞","𫘟":"駊","𫘠":"駤","𫘡":"駫","𫘣":"駻","𫘤":"騃","𫘥":"騉","𫘦":"騊","𫘧":"騄","𫘨":"騠","𫘩":"騜","𫘪":"騵","𫘫":"騴","𫘬":"騱","𫘭":"騻","𫘮":"䮰","𫘯":"驓","𫘰":"驙","𫘱":"驨","𫘽":"鬠","𫙂":"𩯁","𫚈":"鱮","𫚉":"魟","𫚊":"鰑","𫚋":"鱄","𫚌":"魦","𫚍":"魵","𫚎":"𩶁","𫚏":"䱁","𫚐":"䱀","𫚑":"鮅","𫚒":"鮄","𫚓":"鮤","𫚔":"鮰","𫚕":"鰤","𫚖":"鮆","𫚗":"鮯","𫚘":"𩻮","𫚙":"鯆","𫚚":"鮿","𫚛":"鮵","𫚜":"䲅","𫚝":"𩸄","𫚞":"鯬","𫚟":"𩸡","𫚠":"䱧","𫚡":"鯞","𫚢":"鰋","𫚣":"鯾","𫚤":"鰦","𫚥":"鰕","𫚦":"鰫","𫚧":"鰽","𫚨":"𩻗","𫚩":"𩻬","𫚪":"鱊","𫚫":"鱢","𫚬":"𩼶","𫚭":"鱲","𫛚":"鳽","𫛛":"鳷","𫛜":"鴀","𫛝":"鴅","𫛞":"鴃","𫛟":"鸗","𫛠":"𩿤","𫛡":"鴔","𫛢":"鸋","𫛣":"鴥","𫛤":"鴐","𫛥":"鵊","𫛦":"鴮","𫛧":"𪀖","𫛨":"鵧","𫛩":"鴳","𫛪":"鴽","𫛫":"鶰","𫛬":"䳜","𫛭":"鵟","𫛮":"䳤","𫛯":"鶭","𫛰":"䳢","𫛱":"鵫","𫛲":"鵰","𫛳":"鵩","𫛴":"鷤","𫛵":"鶌","𫛶":"鶒","𫛷":"鶦","𫛸":"鶗","𫛹":"𪃧","𫛺":"䳧","𫛻":"𪃒","𫛼":"䳫","𫛽":"鷅","𫛾":"𪆷","𫜀":"鷐","𫜁":"鷩","𫜂":"𪅂","𫜃":"鷣","𫜄":"鷷","𫜅":"䴋","𫜊":"𪉸","𫜑":"麷","𫜒":"䴱","𫜓":"𪌭","𫜔":"䴽","𫜕":"𪍠","𫜙":"䵴","𫜟":"𪓰","𫜨":"𪶕","𫜩":"齧","𫜪":"齩","𫜫":"𫜦","𫜬":"齰","𫜭":"齭","𫜮":"齴","𫜯":"𪙏","𫜰":"齾","𫜲":"龓","𫜳":"䶲","𫝈":"㑮","𫝋":"𠐊","𫝦":"㛝","𫝧":"㜐","𫝨":"媈","𫝩":"嬦","𫝪":"𡟫","𫝫":"婡","𫝬":"嬇","𫝭":"孆","𫝮":"孄","𫝵":"嶹","𫞅":"𦠅","𫞗":"潣","𫞚":"澬","𫞛":"㶆","𫞝":"灍","𫞠":"爧","𫞡":"爃","𫞢":"𤛱","𫞣":"㹽","𫞥":"珼","𫞦":"璾","𫞧":"𤩂","𫞨":"璼","𫞩":"璊","𫞷":"𥢶","𫟃":"絍","𫟄":"綋","𫟅":"綡","𫟆":"緟","𫟇":"𦆲","𫟑":"䖅","𫟕":"䕤","𫟞":"訨","𫟟":"詊","𫟠":"譂","𫟡":"誴","𫟢":"䜖","𫟤":"䡐","𫟥":"䡩","𫟦":"䡵","𫟫":"𨞺","𫟬":"𨟊","𫟲":"釚","𫟳":"釲","𫟴":"鈖","𫟵":"鈗","𫟶":"銏","𫟷":"鉝","𫟸":"鉽","𫟹":"鉷","𫟺":"䤤","𫟻":"銂","𫟼":"鐽","𫟽":"𨧰","𫟾":"𨩰","𫟿":"鎈","𫠀":"䥄","𫠁":"鑉","𫠂":"閝","𫠅":"韚","𫠆":"頍","𫠇":"𩖰","𫠈":"䫾","𫠊":"䮄","𫠋":"騼","𫠌":"𩦠","𫠏":"𩵦","𫠐":"魽","𫠑":"䱸","𫠒":"鱆","𫠖":"𩿅","𫠜":"齯","𫢸":"僤","𫧃":"𣍐","𫧮":"𪋿","𫫇":"噁","𫬐":"㘔","𫭟":"塸","𫭢":"埨","𫭼":"𡑍","𫮃":"墠","𫰛":"娙","𫵷":"㠣","𫶇":"嵽","𫷷":"廞","𫸩":"彄","𬀩":"暐","𬀪":"晛","𬂩":"梜","𬃊":"櫍","𬇕":"澫","𬇙":"浿","𬇹":"漍","𬉼":"熰","𬊈":"燖","𬊤":"燀","𬍛":"瓅","𬍡":"璗","𬍤":"璕","𬒈":"礐","𬒗":"𥗽","𬕂":"篢","𬘓":"紃","𬘘":"紞","𬘡":"絪","𬘩":"綎","𬘫":"綄","𬘬":"綪","𬘭":"綝","𬘯":"綧","𬙂":"縯","𬙊":"纆","𬙋":"纕","𬜬":"蔄","𬜯":"䓣","𬞟":"蘋","𬟁":"虉","𬟽":"蝀","𬣙":"訏","𬣞":"詝","𬣡":"諓","𬣳":"詪","𬤇":"諲","𬤊":"諟","𬤝":"譓","𬨂":"軝","𬨎":"輶","𬩽":"鄩","𬪩":"醲","𬬩":"釴","𬬭":"錀","𬬮":"鋹","𬬱":"釿","𬬸":"鉥","𬬹":"鉮","𬬻":"鑪","𬬿":"鉊","𬭁":"鉧","𬭊":"𨧀","𬭎":"鋐","𬭚":"錞","𬭛":"𨨏","𬭤":"鍭","𬭩":"鎓","𬭬":"鏏","𬭭":"鏚","𬭯":"䥕","𬭳":"𨭎","𬭶":"𨭆","𬭸":"鏻","𬭼":"鐩","𬮱":"闉","𬮿":"隑","𬯀":"隮","𬯎":"隤","𬱖":"頔","𬱟":"頠","𬳵":"駓","𬳶":"駉","𬳽":"駪","𬳿":"駼","𬴂":"騑","𬴃":"騞","𬴊":"驎","𬶋":"鮈","𬶍":"鮀","𬶏":"鮠","𬶐":"鮡","𬶟":"鯻","𬶠":"鰊","𬶨":"鱀","𬶭":"鰶","𬶮":"鱚","𬷕":"鵏","𬸘":"鶠","𬸚":"鸑","𬸣":"鶱","𬸦":"鷟","𬸪":"鷭","𬸯":"鷿","𬹼":"齘","𬺈":"齮","𬺓":"齼","𰬸":"繐","𰰨":"菕","𰶎":"譅","𰾄":"鋂","𰾭":"鑀","𱊜":"𪈼"},Me={"㑮":"𫝈","㑯":"㑔","㑳":"㑇","㑶":"㐹","㒓":"𠉂","㓄":"𪠟","㓨":"刾","㔋":"𪟎","㖮":"𪠵","㗲":"𠵾","㗿":"𪡛","㘉":"𠰱","㘓":"𪢌","㘔":"𫬐","㘚":"㘎","㛝":"𫝦","㜄":"㚯","㜏":"㛣","㜐":"𫝧","㜗":"𡞋","㜢":"𡞱","㜷":"𡝠","㞞":"𪨊","㟺":"𪩇","㠏":"㟆","㠣":"𫵷","㢗":"𪪑","㢝":"𢋈","㥮":"㤘","㦎":"𢛯","㦛":"𢗓","㦞":"𪫷","㨻":"𪮃","㩋":"𪮋","㩜":"㨫","㩳":"㧐","㩵":"擜","㪎":"𪯋","㯤":"𣘐","㰙":"𣗙","㵗":"𣳆","㵾":"𪷍","㶆":"𫞛","㷍":"𤆢","㷿":"𤈷","㸇":"𤎺","㹽":"𫞣","㺏":"𤠋","㺜":"𪺻","㻶":"𪼋","㿖":"𪽮","㿗":"𤻊","㿧":"𤽯","䀉":"𥁢","䀹":"𥅴","䁪":"𥇢","䁻":"䀥","䂎":"𥎝","䃮":"鿎","䅐":"𫀨","䅳":"𫀬","䆉":"𫁂","䉑":"𫁲","䉙":"𥬀","䉬":"𫂈","䉲":"𥮜","䉶":"𫁷","䊭":"𥺅","䊷":"䌶","䊺":"𫄚","䋃":"𫄜","䋔":"𫄞","䋙":"䌺","䋚":"䌻","䋦":"𫄩","䋹":"䌿","䋻":"䌾","䋼":"𫄮","䋿":"𦈓","䌈":"𦈖","䌋":"𦈘","䌖":"𦈜","䌝":"𦈟","䌟":"𦈞","䌥":"𦈠","䌰":"𦈙","䍤":"𫅅","䍦":"䍠","䍽":"𦍠","䎙":"𫅭","䎱":"䎬","䓣":"𬜯","䕤":"𫟕","䕳":"𦰴","䖅":"𫟑","䗅":"𫊪","䗿":"𧉞","䙔":"𫋲","䙡":"䙌","䙱":"𧜭","䚩":"𫌯","䛄":"𫍠","䛳":"𫍫","䜀":"䜧","䜖":"𫟢","䝭":"𫎧","䝻":"𧹕","䝼":"䞍","䞈":"𧹑","䞋":"𫎪","䞓":"𫎭","䟃":"𫎺","䟆":"𫎳","䟐":"𫎱","䠆":"𫏃","䠱":"𨅛","䡐":"𫟤","䡩":"𫟥","䡵":"𫟦","䢨":"𨑹","䤤":"𫟺","䥄":"𫠀","䥇":"䦂","䥑":"鿏","䥕":"𬭯","䥗":"𫔋","䥩":"𨱖","䥯":"𫔆","䥱":"䥾","䦘":"𨸄","䦛":"䦶","䦟":"䦷","䦯":"𫔵","䦳":"𨷿","䧢":"𨸟","䪊":"𫖅","䪏":"𩏼","䪗":"𩐀","䪘":"𩏿","䪴":"𫖫","䪾":"𫖬","䫀":"𫖱","䫂":"𫖰","䫟":"𫖲","䫴":"𩖗","䫶":"𫖺","䫻":"𫗇","䫾":"𫠈","䬓":"𫗊","䬘":"𩙮","䬝":"𩙯","䬞":"𩙧","䬧":"𫗟","䭀":"𩠇","䭃":"𩠈","䭑":"𫗱","䭔":"𫗰","䭿":"𩧭","䮄":"𫠊","䮝":"𩧰","䮞":"𩨁","䮠":"𩧿","䮫":"𩨇","䮰":"𫘮","䮳":"𩨏","䮾":"𩧪","䯀":"䯅","䯤":"𩩈","䰾":"鲃","䱀":"𫚐","䱁":"𫚏","䱙":"𩾈","䱧":"𫚠","䱬":"𩾊","䱰":"𩾋","䱷":"䲣","䱸":"𫠑","䱽":"䲝","䲁":"鳚","䲅":"𫚜","䲖":"𩾂","䲘":"鳤","䲰":"𪉂","䳜":"𫛬","䳢":"𫛰","䳤":"𫛮","䳧":"𫛺","䳫":"𫛼","䴉":"鹮","䴋":"𫜅","䴬":"𪎈","䴱":"𫜒","䴴":"𪎋","䴽":"𫜔","䵳":"𪑅","䵴":"𫜙","䶕":"𫜨","䶲":"𫜳","丟":"丢","並":"并","乾":"干","亂":"乱","亙":"亘","亞":"亚","佇":"伫","佈":"布","佔":"占","併":"并","來":"来","侖":"仑","侶":"侣","侷":"局","俁":"俣","係":"系","俓":"𠇹","俔":"伣","俠":"侠","俥":"伡","俬":"私","倀":"伥","倆":"俩","倈":"俫","倉":"仓","個":"个","們":"们","倖":"幸","倫":"伦","倲":"㑈","偉":"伟","偑":"㐽","側":"侧","偵":"侦","偽":"伪","傌":"㐷","傑":"杰","傖":"伧","傘":"伞","備":"备","傢":"家","傭":"佣","傯":"偬","傳":"传","傴":"伛","債":"债","傷":"伤","傾":"倾","僂":"偻","僅":"仅","僉":"佥","僑":"侨","僕":"仆","僞":"伪","僤":"𫢸","僥":"侥","僨":"偾","僱":"雇","價":"价","儀":"仪","儁":"俊","儂":"侬","億":"亿","儈":"侩","儉":"俭","儎":"","儐":"","儔":"俦","儕":"侪","儘":"尽","償":"偿","儣":"𠆲","優":"优","儭":"𠋆","儲":"储","儷":"俪","儸":"㑩","儺":"傩","儻":"傥","儼":"俨","兇":"凶","兌":"兑","兒":"儿","兗":"兖","內":"内","兩":"两","冊":"册","冑":"胄","冪":"幂","凈":"净","凍":"冻","凙":"𪞝","凜":"凛","凱":"凯","別":"别","刪":"删","剄":"刭","則":"则","剋":"克","剎":"刹","剗":"刬","剛":"刚","剝":"剥","剮":"剐","剴":"剀","創":"创","剷":"铲","剾":"𠛅","劃":"划","劇":"剧","劉":"刘","劊":"刽","劌":"刿","劍":"剑","劏":"㓥","劑":"剂","劚":"㔉","勁":"劲","勑":"𠡠","動":"动","務":"务","勛":"勋","勝":"胜","勞":"劳","勢":"势","勣":"𪟝","勩":"勚","勱":"劢","勳":"勋","勵":"励","勸":"劝","勻":"匀","匭":"匦","匯":"汇","匱":"匮","區":"区","協":"协","卹":"恤","卻":"却","卽":"即","厙":"厍","厠":"厕","厤":"历","厭":"厌","厲":"厉","厴":"厣","參":"参","叄":"叁","叢":"丛","吒":"咤","吳":"吴","吶":"呐","呂":"吕","咼":"呙","員":"员","哯":"𠯟","唄":"呗","唓":"𪠳","唸":"念","問":"问","啓":"启","啞":"哑","啟":"启","啢":"唡","喎":"㖞","喚":"唤","喪":"丧","喫":"吃","喬":"乔","單":"单","喲":"哟","嗆":"呛","嗇":"啬","嗊":"唝","嗎":"吗","嗚":"呜","嗩":"唢","嗰":"𠮶","嗶":"哔","嗹":"𪡏","嘆":"叹","嘍":"喽","嘓":"啯","嘔":"呕","嘖":"啧","嘗":"尝","嘜":"唛","嘩":"哗","嘪":"𪡃","嘮":"唠","嘯":"啸","嘰":"叽","嘳":"𪡞","嘵":"哓","嘸":"呒","嘺":"𪡀","嘽":"啴","噁":"恶","噅":"𠯠","噓":"嘘","噚":"㖊","噝":"咝","噞":"𪡋","噠":"哒","噥":"哝","噦":"哕","噯":"嗳","噲":"哙","噴":"喷","噸":"吨","噹":"当","嚀":"咛","嚇":"吓","嚌":"哜","嚐":"尝","嚕":"噜","嚙":"啮","嚛":"𪠸","嚥":"咽","嚦":"呖","嚧":"𠰷","嚨":"咙","嚮":"向","嚲":"亸","嚳":"喾","嚴":"严","嚶":"嘤","嚽":"𪢕","囀":"啭","囁":"嗫","囂":"嚣","囃":"𠱞","囅":"冁","囈":"呓","囉":"啰","囌":"苏","囑":"嘱","囒":"𪢠","囪":"囱","圇":"囵","國":"国","圍":"围","園":"园","圓":"圆","圖":"图","團":"团","圞":"𪢮","垻":"坝","埡":"垭","埨":"𫭢","埬":"𪣆","埰":"采","執":"执","堅":"坚","堊":"垩","堖":"垴","堚":"𪣒","堝":"埚","堯":"尧","報":"报","場":"场","塊":"块","塋":"茔","塏":"垲","塒":"埘","塗":"涂","塚":"冢","塢":"坞","塤":"埙","塵":"尘","塸":"𫭟","塹":"堑","塿":"𪣻","墊":"垫","墜":"坠","墠":"𫮃","墮":"堕","墰":"坛","墲":"𪢸","墳":"坟","墶":"垯","墻":"墙","墾":"垦","壇":"坛","壈":"𡒄","壋":"垱","壎":"埙","壓":"压","壗":"𡋤","壘":"垒","壙":"圹","壚":"垆","壜":"坛","壞":"坏","壟":"垄","壠":"垅","壢":"坜","壣":"𪤚","壩":"坝","壪":"塆","壯":"壮","壺":"壶","壼":"壸","壽":"寿","夠":"够","夢":"梦","夥":"伙","夾":"夹","奐":"奂","奧":"奥","奩":"奁","奪":"夺","奬":"奖","奮":"奋","奼":"姹","妝":"妆","姍":"姗","姦":"奸","娙":"𫰛","娛":"娱","婁":"娄","婡":"𫝫","婦":"妇","婭":"娅","媈":"𫝨","媧":"娲","媯":"妫","媰":"㛀","媼":"媪","媽":"妈","嫋":"袅","嫗":"妪","嫵":"妩","嫺":"娴","嫻":"娴","嫿":"婳","嬀":"妫","嬃":"媭","嬇":"𫝬","嬈":"娆","嬋":"婵","嬌":"娇","嬙":"嫱","嬡":"嫒","嬣":"𪥰","嬤":"嬷","嬦":"𫝩","嬪":"嫔","嬰":"婴","嬸":"婶","嬻":"𪥿","孃":"娘","孄":"𫝮","孆":"𫝭","孇":"𪥫","孋":"㛤","孌":"娈","孎":"𡠟","孫":"孙","學":"学","孻":"𡥧","孾":"𪧀","孿":"孪","宮":"宫","寀":"采","寠":"𪧘","寢":"寝","實":"实","寧":"宁","審":"审","寫":"写","寬":"宽","寵":"宠","寶":"宝","將":"将","專":"专","尋":"寻","對":"对","導":"导","尷":"尴","屆":"届","屍":"尸","屓":"屃","屜":"屉","屢":"屡","層":"层","屨":"屦","屩":"𪨗","屬":"属","岡":"冈","峯":"峰","峴":"岘","島":"岛","峽":"峡","崍":"崃","崑":"昆","崗":"岗","崙":"仑","崢":"峥","崬":"岽","嵐":"岚","嵗":"岁","嵼":"𡶴","嵽":"𫶇","嵾":"㟥","嶁":"嵝","嶄":"崭","嶇":"岖","嶈":"𡺃","嶔":"嵚","嶗":"崂","嶘":"𡺄","嶠":"峤","嶢":"峣","嶧":"峄","嶨":"峃","嶮":"崄","嶸":"嵘","嶹":"𫝵","嶺":"岭","嶼":"屿","嶽":"岳","巊":"𪩎","巋":"岿","巒":"峦","巔":"巅","巖":"岩","巗":"𪨷","巘":"𪩘","巰":"巯","巹":"卺","帥":"帅","師":"师","帳":"帐","帶":"带","幀":"帧","幃":"帏","幓":"㡎","幗":"帼","幘":"帻","幝":"𪩷","幟":"帜","幣":"币","幩":"𪩸","幫":"帮","幬":"帱","幹":"干","幾":"几","庫":"库","廁":"厕","廂":"厢","廄":"厩","廈":"厦","廎":"庼","廕":"荫","廚":"厨","廝":"厮","廞":"𫷷","廟":"庙","廠":"厂","廡":"庑","廢":"废","廣":"广","廧":"𪪞","廩":"廪","廬":"庐","廳":"厅","弒":"弑","弔":"吊","弳":"弪","張":"张","強":"强","彃":"𪪼","彄":"𫸩","彆":"别","彈":"弹","彌":"弥","彎":"弯","彔":"录","彙":"汇","彠":"彟","彥":"彦","彫":"雕","彲":"彨","彷":"彷","彿":"佛","後":"后","徑":"径","從":"从","徠":"徕","復":"复","徵":"征","徹":"彻","徿":"𪫌","恆":"恒","恥":"耻","悅":"悦","悞":"悮","悵":"怅","悶":"闷","悽":"凄","惡":"恶","惱":"恼","惲":"恽","惻":"恻","愛":"爱","愜":"惬","愨":"悫","愴":"怆","愷":"恺","愻":"𢙏","愾":"忾","慄":"栗","態":"态","慍":"愠","慘":"惨","慚":"惭","慟":"恸","慣":"惯","慤":"悫","慪":"怄","慫":"怂","慮":"虑","慳":"悭","慶":"庆","慺":"㥪","慼":"戚","慾":"欲","憂":"忧","憊":"惫","憐":"怜","憑":"凭","憒":"愦","憖":"慭","憚":"惮","憢":"𢙒","憤":"愤","憫":"悯","憮":"怃","憲":"宪","憶":"忆","憸":"𪫺","憹":"𢙐","懀":"𢙓","懇":"恳","應":"应","懌":"怿","懍":"懔","懎":"𢠁","懞":"蒙","懟":"怼","懣":"懑","懤":"㤽","懨":"恹","懲":"惩","懶":"懒","懷":"怀","懸":"悬","懺":"忏","懼":"惧","懾":"慑","戀":"恋","戇":"戆","戔":"戋","戧":"戗","戩":"戬","戰":"战","戱":"戯","戲":"戏","戶":"户","拋":"抛","挩":"捝","挱":"挲","挾":"挟","捨":"舍","捫":"扪","捱":"挨","捲":"卷","掃":"扫","掄":"抡","掆":"㧏","掗":"挜","掙":"挣","掚":"𪭵","掛":"挂","採":"采","揀":"拣","揚":"扬","換":"换","揮":"挥","揯":"搄","損":"损","搖":"摇","搗":"捣","搵":"揾","搶":"抢","摋":"𢫬","摐":"𪭢","摑":"掴","摜":"掼","摟":"搂","摯":"挚","摳":"抠","摶":"抟","摺":"折","摻":"掺","撈":"捞","撊":"𪭾","撏":"挦","撐":"撑","撓":"挠","撝":"㧑","撟":"挢","撣":"掸","撥":"拨","撧":"𪮖","撫":"抚","撲":"扑","撳":"揿","撻":"挞","撾":"挝","撿":"捡","擁":"拥","擄":"掳","擇":"择","擊":"击","擋":"挡","擓":"㧟","擔":"担","據":"据","擟":"𪭧","擠":"挤","擣":"捣","擫":"𢬍","擬":"拟","擯":"摈","擰":"拧","擱":"搁","擲":"掷","擴":"扩","擷":"撷","擺":"摆","擻":"擞","擼":"撸","擽":"㧰","擾":"扰","攄":"摅","攆":"撵","攋":"𪮶","攏":"拢","攔":"拦","攖":"撄","攙":"搀","攛":"撺","攜":"携","攝":"摄","攢":"攒","攣":"挛","攤":"摊","攪":"搅","攬":"揽","敎":"教","敓":"敚","敗":"败","敘":"叙","敵":"敌","數":"数","斂":"敛","斃":"毙","斅":"𢽾","斆":"敩","斕":"斓","斬":"斩","斷":"断","斸":"𣃁","於":"于","旂":"旗","旣":"既","昇":"升","時":"时","晉":"晋","晛":"𬀪","晝":"昼","暈":"晕","暉":"晖","暐":"𬀩","暘":"旸","暢":"畅","暫":"暂","曄":"晔","曆":"历","曇":"昙","曉":"晓","曊":"𪰶","曏":"向","曖":"暧","曠":"旷","曥":"𣆐","曨":"昽","曬":"晒","書":"书","會":"会","朥":"𦛨","朧":"胧","朮":"术","東":"东","枴":"拐","柵":"栅","柺":"拐","査":"查","桱":"𣐕","桿":"杆","梔":"栀","梖":"𪱷","梘":"枧","梜":"𬂩","條":"条","梟":"枭","梲":"棁","棄":"弃","棊":"棋","棖":"枨","棗":"枣","棟":"栋","棡":"㭎","棧":"栈","棲":"栖","棶":"梾","椏":"桠","椲":"㭏","楇":"𣒌","楊":"杨","楓":"枫","楨":"桢","業":"业","極":"极","榘":"矩","榦":"干","榪":"杩","榮":"荣","榲":"榅","榿":"桤","構":"构","槍":"枪","槓":"杠","槤":"梿","槧":"椠","槨":"椁","槫":"𣏢","槮":"椮","槳":"桨","槶":"椢","槼":"椝","樁":"桩","樂":"乐","樅":"枞","樑":"梁","樓":"楼","標":"标","樞":"枢","樠":"𣗊","樢":"㭤","樣":"样","樤":"𣔌","樧":"榝","樫":"㭴","樳":"桪","樸":"朴","樹":"树","樺":"桦","樿":"椫","橈":"桡","橋":"桥","機":"机","橢":"椭","橫":"横","橯":"𣓿","檁":"檩","檉":"柽","檔":"档","檜":"桧","檟":"槚","檢":"检","檣":"樯","檭":"𣘴","檮":"梼","檯":"台","檳":"槟","檵":"𪲛","檸":"柠","檻":"槛","櫃":"柜","櫅":"𪲎","櫍":"𬃊","櫓":"橹","櫚":"榈","櫛":"栉","櫝":"椟","櫞":"橼","櫟":"栎","櫠":"𪲮","櫥":"橱","櫧":"槠","櫨":"栌","櫪":"枥","櫫":"橥","櫬":"榇","櫱":"蘖","櫳":"栊","櫸":"榉","櫻":"樱","欄":"栏","欅":"榉","欇":"𪳍","權":"权","欍":"𣐤","欏":"椤","欐":"𪲔","欑":"𪴙","欒":"栾","欓":"𣗋","欖":"榄","欘":"𣚚","欞":"棂","欽":"钦","歎":"叹","歐":"欧","歟":"欤","歡":"欢","歲":"岁","歷":"历","歸":"归","歿":"殁","殘":"残","殞":"殒","殢":"𣨼","殤":"殇","殨":"㱮","殫":"殚","殭":"僵","殮":"殓","殯":"殡","殰":"㱩","殲":"歼","殺":"杀","殻":"壳","殼":"壳","毀":"毁","毆":"殴","毊":"𪵑","毿":"毵","氂":"牦","氈":"毡","氌":"氇","氣":"气","氫":"氢","氬":"氩","氭":"𣱝","氳":"氲","氾":"泛","汎":"泛","汙":"污","決":"决","沒":"没","沖":"冲","況":"况","泝":"溯","洩":"泄","洶":"汹","浹":"浃","浿":"𬇙","涇":"泾","涗":"涚","涼":"凉","淒":"凄","淚":"泪","淥":"渌","淨":"净","淩":"凌","淪":"沦","淵":"渊","淶":"涞","淺":"浅","渙":"涣","減":"减","渢":"沨","渦":"涡","測":"测","渾":"浑","湊":"凑","湋":"𣲗","湞":"浈","湧":"涌","湯":"汤","溈":"沩","準":"准","溝":"沟","溡":"𪶄","溫":"温","溮":"浉","溳":"涢","溼":"湿","滄":"沧","滅":"灭","滌":"涤","滎":"荥","滙":"汇","滬":"沪","滯":"滞","滲":"渗","滷":"卤","滸":"浒","滻":"浐","滾":"滚","滿":"满","漁":"渔","漊":"溇","漍":"𬇹","漚":"沤","漢":"汉","漣":"涟","漬":"渍","漲":"涨","漵":"溆","漸":"渐","漿":"浆","潁":"颍","潑":"泼","潔":"洁","潕":"𣲘","潙":"沩","潚":"㴋","潛":"潜","潣":"𫞗","潤":"润","潯":"浔","潰":"溃","潷":"滗","潿":"涠","澀":"涩","澅":"𣶩","澆":"浇","澇":"涝","澐":"沄","澗":"涧","澠":"渑","澤":"泽","澦":"滪","澩":"泶","澫":"𬇕","澬":"𫞚","澮":"浍","澱":"淀","澾":"㳠","濁":"浊","濃":"浓","濄":"㳡","濆":"𣸣","濕":"湿","濘":"泞","濚":"溁","濛":"蒙","濜":"浕","濟":"济","濤":"涛","濧":"㳔","濫":"滥","濰":"潍","濱":"滨","濺":"溅","濼":"泺","濾":"滤","濿":"𪵱","瀂":"澛","瀃":"𣽷","瀅":"滢","瀆":"渎","瀇":"㲿","瀉":"泻","瀋":"沈","瀏":"浏","瀕":"濒","瀘":"泸","瀝":"沥","瀟":"潇","瀠":"潆","瀦":"潴","瀧":"泷","瀨":"濑","瀰":"弥","瀲":"潋","瀾":"澜","灃":"沣","灄":"滠","灍":"𫞝","灑":"洒","灒":"𪷽","灕":"漓","灘":"滩","灙":"𣺼","灝":"灏","灡":"㳕","灣":"湾","灤":"滦","灧":"滟","灩":"滟","災":"灾","為":"为","烏":"乌","烴":"烃","無":"无","煇":"𪸩","煉":"炼","煒":"炜","煙":"烟","煢":"茕","煥":"焕","煩":"烦","煬":"炀","煱":"㶽","熂":"𪸕","熅":"煴","熉":"𤈶","熌":"𤇄","熒":"荧","熓":"𤆡","熗":"炝","熚":"𤇹","熡":"𤋏","熰":"𬉼","熱":"热","熲":"颎","熾":"炽","燀":"𬊤","燁":"烨","燈":"灯","燉":"炖","燒":"烧","燖":"𬊈","燙":"烫","燜":"焖","營":"营","燦":"灿","燬":"毁","燭":"烛","燴":"烩","燶":"㶶","燻":"熏","燼":"烬","燾":"焘","爃":"𫞡","爄":"𤇃","爇":"𦶟","爍":"烁","爐":"炉","爖":"𤇭","爛":"烂","爥":"𪹳","爧":"𫞠","爭":"争","爲":"为","爺":"爷","爾":"尔","牀":"床","牆":"墙","牘":"牍","牴":"牴","牽":"牵","犖":"荦","犛":"牦","犞":"𪺭","犢":"犊","犧":"牺","狀":"状","狹":"狭","狽":"狈","猌":"𪺽","猙":"狰","猶":"犹","猻":"狲","獁":"犸","獃":"呆","獄":"狱","獅":"狮","獊":"𪺷","獎":"奖","獨":"独","獩":"𤞃","獪":"狯","獫":"猃","獮":"狝","獰":"狞","獱":"㺍","獲":"获","獵":"猎","獷":"犷","獸":"兽","獺":"獭","獻":"献","獼":"猕","玀":"猡","玁":"𤞤","珼":"𫞥","現":"现","琱":"雕","琺":"珐","琿":"珲","瑋":"玮","瑒":"玚","瑣":"琐","瑤":"瑶","瑩":"莹","瑪":"玛","瑲":"玱","瑻":"𪻲","瑽":"𪻐","璉":"琏","璊":"𫞩","璕":"𬍤","璗":"𬍡","璝":"𪻺","璡":"琎","璣":"玑","璦":"瑷","璫":"珰","璯":"㻅","環":"环","璵":"玙","璸":"瑸","璼":"𫞨","璽":"玺","璾":"𫞦","璿":"璇","瓄":"𪻨","瓅":"𬍛","瓊":"琼","瓏":"珑","瓔":"璎","瓕":"𤦀","瓚":"瓒","瓛":"𤩽","甌":"瓯","甕":"瓮","產":"产","産":"产","甦":"苏","甯":"宁","畝":"亩","畢":"毕","畫":"画","異":"异","畵":"画","當":"当","畼":"𪽈","疇":"畴","疊":"叠","痙":"痉","痠":"酸","痮":"𪽪","痾":"疴","瘂":"痖","瘋":"疯","瘍":"疡","瘓":"痪","瘞":"瘗","瘡":"疮","瘧":"疟","瘮":"瘆","瘱":"𪽷","瘲":"疭","瘺":"瘘","瘻":"瘘","療":"疗","癆":"痨","癇":"痫","癉":"瘅","癐":"𤶊","癒":"愈","癘":"疠","癟":"瘪","癡":"痴","癢":"痒","癤":"疖","癥":"症","癧":"疬","癩":"癞","癬":"癣","癭":"瘿","癮":"瘾","癰":"痈","癱":"瘫","癲":"癫","發":"发","皁":"皂","皚":"皑","皟":"𤾀","皰":"疱","皸":"皲","皺":"皱","盃":"杯","盜":"盗","盞":"盏","盡":"尽","監":"监","盤":"盘","盧":"卢","盨":"𪾔","盪":"荡","眝":"𪾣","眞":"真","眥":"眦","眾":"众","睍":"𪾢","睏":"困","睜":"睁","睞":"睐","瞘":"眍","瞜":"䁖","瞞":"瞒","瞤":"𥆧","瞭":"瞭","瞶":"瞆","瞼":"睑","矇":"蒙","矉":"𪾸","矑":"𪾦","矓":"眬","矚":"瞩","矯":"矫","硃":"朱","硜":"硁","硤":"硖","硨":"砗","硯":"砚","碕":"埼","碙":"𥐻","碩":"硕","碭":"砀","碸":"砜","確":"确","碼":"码","碽":"䂵","磑":"硙","磚":"砖","磠":"硵","磣":"碜","磧":"碛","磯":"矶","磽":"硗","磾":"䃅","礄":"硚","礆":"硷","礎":"础","礐":"𬒈","礒":"𥐟","礙":"碍","礦":"矿","礪":"砺","礫":"砾","礬":"矾","礮":"𪿫","礱":"砻","祇":"祇","祕":"秘","祿":"禄","禍":"祸","禎":"祯","禕":"祎","禡":"祃","禦":"御","禪":"禅","禮":"礼","禰":"祢","禱":"祷","禿":"秃","秈":"籼","稅":"税","稈":"秆","稏":"䅉","稜":"棱","稟":"禀","種":"种","稱":"称","穀":"谷","穇":"䅟","穌":"稣","積":"积","穎":"颖","穠":"秾","穡":"穑","穢":"秽","穩":"稳","穫":"获","穭":"穞","窩":"窝","窪":"洼","窮":"穷","窯":"窑","窵":"窎","窶":"窭","窺":"窥","竄":"窜","竅":"窍","竇":"窦","竈":"灶","竊":"窃","竚":"𥩟","竪":"竖","竱":"𫁟","競":"竞","筆":"笔","筍":"笋","筧":"笕","筴":"䇲","箇":"个","箋":"笺","箏":"筝","節":"节","範":"范","築":"筑","篋":"箧","篔":"筼","篘":"𥬠","篠":"筿","篢":"𬕂","篤":"笃","篩":"筛","篳":"筚","篸":"𥮾","簀":"箦","簂":"𫂆","簍":"篓","簑":"蓑","簞":"箪","簡":"简","簢":"𫂃","簣":"篑","簫":"箫","簹":"筜","簽":"签","簾":"帘","籃":"篮","籅":"𥫣","籋":"𥬞","籌":"筹","籔":"䉤","籙":"箓","籛":"篯","籜":"箨","籟":"籁","籠":"笼","籤":"签","籩":"笾","籪":"簖","籬":"篱","籮":"箩","籲":"吁","粵":"粤","糉":"粽","糝":"糁","糞":"粪","糧":"粮","糰":"团","糲":"粝","糴":"籴","糶":"粜","糹":"纟","糺":"𫄙","糾":"纠","紀":"纪","紂":"纣","紃":"𬘓","約":"约","紅":"红","紆":"纡","紇":"纥","紈":"纨","紉":"纫","紋":"纹","納":"纳","紐":"纽","紓":"纾","純":"纯","紕":"纰","紖":"纼","紗":"纱","紘":"纮","紙":"纸","級":"级","紛":"纷","紜":"纭","紝":"纴","紞":"𬘘","紟":"𫄛","紡":"纺","紬":"䌷","紮":"扎","細":"细","紱":"绂","紲":"绁","紳":"绅","紵":"纻","紹":"绍","紺":"绀","紼":"绋","紿":"绐","絀":"绌","絁":"𫄟","終":"终","絃":"弦","組":"组","絅":"䌹","絆":"绊","絍":"𫟃","絎":"绗","結":"结","絕":"绝","絙":"𫄠","絛":"绦","絝":"绔","絞":"绞","絡":"络","絢":"绚","絥":"𫄢","給":"给","絧":"𫄡","絨":"绒","絪":"𬘡","絰":"绖","統":"统","絲":"丝","絳":"绛","絶":"绝","絹":"绢","絺":"𫄨","綀":"𦈌","綁":"绑","綃":"绡","綄":"𬘫","綆":"绠","綇":"𦈋","綈":"绨","綉":"绣","綋":"𫟄","綌":"绤","綎":"𬘩","綏":"绥","綐":"䌼","綑":"捆","經":"经","綖":"𫄧","綜":"综","綝":"𬘭","綞":"缍","綟":"𫄫","綠":"绿","綡":"𫟅","綢":"绸","綣":"绻","綧":"𬘯","綪":"𬘬","綫":"线","綬":"绶","維":"维","綯":"绹","綰":"绾","綱":"纲","網":"网","綳":"绷","綴":"缀","綵":"彩","綸":"纶","綹":"绺","綺":"绮","綻":"绽","綽":"绰","綾":"绫","綿":"绵","緄":"绲","緇":"缁","緊":"紧","緋":"绯","緍":"𦈏","緑":"绿","緒":"绪","緓":"绬","緔":"绱","緗":"缃","緘":"缄","緙":"缂","線":"线","緝":"缉","緞":"缎","緟":"𫟆","締":"缔","緡":"缗","緣":"缘","緤":"𫄬","緦":"缌","編":"编","緩":"缓","緬":"缅","緮":"𫄭","緯":"纬","緰":"𦈕","緱":"缑","緲":"缈","練":"练","緶":"缏","緷":"𦈉","緸":"𦈑","緹":"缇","緻":"致","緼":"缊","縈":"萦","縉":"缙","縊":"缢","縋":"缒","縍":"𫄰","縎":"𦈔","縐":"绉","縑":"缣","縕":"缊","縗":"缞","縛":"缚","縝":"缜","縞":"缟","縟":"缛","縣":"县","縧":"绦","縫":"缝","縬":"𦈚","縭":"缡","縮":"缩","縯":"𬙂","縰":"𫄳","縱":"纵","縲":"缧","縳":"䌸","縴":"纤","縵":"缦","縶":"絷","縷":"缕","縸":"𫄲","縹":"缥","縺":"𦈐","總":"总","績":"绩","繂":"𫄴","繃":"绷","繅":"缫","繆":"缪","繈":"𫄶","繏":"𦈝","繐":"𰬸","繒":"缯","繓":"𦈛","織":"织","繕":"缮","繚":"缭","繞":"绕","繟":"𦈎","繡":"绣","繢":"缋","繨":"𫄤","繩":"绳","繪":"绘","繫":"系","繬":"𫄱","繭":"茧","繮":"缰","繯":"缳","繰":"缲","繳":"缴","繶":"𫄷","繷":"𫄣","繸":"䍁","繹":"绎","繻":"𦈡","繼":"继","繽":"缤","繾":"缱","繿":"䍀","纁":"𫄸","纆":"𬙊","纇":"颣","纈":"缬","纊":"纩","續":"续","纍":"累","纏":"缠","纓":"缨","纔":"才","纕":"𬙋","纖":"纤","纗":"𫄹","纘":"缵","纚":"𫄥","纜":"缆","缽":"钵","罃":"䓨","罈":"坛","罌":"罂","罎":"坛","罰":"罚","罵":"骂","罷":"罢","羅":"罗","羆":"罴","羈":"羁","羋":"芈","羣":"群","羥":"羟","羨":"羡","義":"义","羵":"𫅗","羶":"膻","習":"习","翫":"玩","翬":"翚","翹":"翘","翽":"翙","耬":"耧","耮":"耢","聖":"圣","聞":"闻","聯":"联","聰":"聪","聲":"声","聳":"耸","聵":"聩","聶":"聂","職":"职","聹":"聍","聻":"𫆏","聽":"听","聾":"聋","肅":"肃","脅":"胁","脈":"脉","脛":"胫","脣":"唇","脥":"𣍰","脩":"修","脫":"脱","脹":"胀","腎":"肾","腖":"胨","腡":"脶","腦":"脑","腪":"𣍯","腫":"肿","腳":"脚","腸":"肠","膃":"腽","膕":"腘","膚":"肤","膞":"䏝","膠":"胶","膢":"𦝼","膩":"腻","膹":"𪱥","膽":"胆","膾":"脍","膿":"脓","臉":"脸","臍":"脐","臏":"膑","臗":"𣎑","臘":"腊","臚":"胪","臟":"脏","臠":"脔","臢":"臜","臥":"卧","臨":"临","臺":"台","與":"与","興":"兴","舉":"举","舊":"旧","舘":"馆","艙":"舱","艣":"𫇛","艤":"舣","艦":"舰","艫":"舻","艱":"艰","艷":"艳","芻":"刍","苧":"苎","茲":"兹","荊":"荆","莊":"庄","莖":"茎","莢":"荚","莧":"苋","菕":"𰰨","華":"华","菴":"庵","菸":"烟","萇":"苌","萊":"莱","萬":"万","萴":"荝","萵":"莴","葉":"叶","葒":"荭","葝":"𫈎","葤":"荮","葦":"苇","葯":"药","葷":"荤","蒍":"𫇭","蒐":"搜","蒓":"莼","蒔":"莳","蒕":"蒀","蒞":"莅","蒭":"𫇴","蒼":"苍","蓀":"荪","蓆":"席","蓋":"盖","蓧":"𦰏","蓮":"莲","蓯":"苁","蓴":"莼","蓽":"荜","蔄":"𬜬","蔔":"卜","蔘":"参","蔞":"蒌","蔣":"蒋","蔥":"葱","蔦":"茑","蔭":"荫","蔯":"𫈟","蔿":"𫇭","蕁":"荨","蕆":"蒇","蕎":"荞","蕒":"荬","蕓":"芸","蕕":"莸","蕘":"荛","蕝":"𫈵","蕢":"蒉","蕩":"荡","蕪":"芜","蕭":"萧","蕳":"𫈉","蕷":"蓣","蕽":"𫇽","薀":"蕰","薆":"𫉁","薈":"荟","薊":"蓟","薌":"芗","薑":"姜","薔":"蔷","薘":"荙","薟":"莶","薦":"荐","薩":"萨","薳":"䓕","薴":"苧","薵":"䓓","薹":"苔","薺":"荠","藉":"藉","藍":"蓝","藎":"荩","藝":"艺","藥":"药","藪":"薮","藭":"䓖","藴":"蕴","藶":"苈","藷":"𫉄","藹":"蔼","藺":"蔺","蘀":"萚","蘄":"蕲","蘆":"芦","蘇":"苏","蘊":"蕴","蘋":"苹","蘚":"藓","蘞":"蔹","蘟":"𦻕","蘢":"茏","蘭":"兰","蘺":"蓠","蘿":"萝","虆":"蔂","虉":"𬟁","處":"处","虛":"虚","虜":"虏","號":"号","虧":"亏","虯":"虬","蛺":"蛱","蛻":"蜕","蜆":"蚬","蝀":"𬟽","蝕":"蚀","蝟":"猬","蝦":"虾","蝨":"虱","蝸":"蜗","螄":"蛳","螞":"蚂","螢":"萤","螮":"䗖","螻":"蝼","螿":"螀","蟂":"𫋇","蟄":"蛰","蟈":"蝈","蟎":"螨","蟘":"𫋌","蟜":"𫊸","蟣":"虮","蟬":"蝉","蟯":"蛲","蟲":"虫","蟳":"𫊻","蟶":"蛏","蟻":"蚁","蠀":"𧏗","蠁":"蚃","蠅":"蝇","蠆":"虿","蠍":"蝎","蠐":"蛴","蠑":"蝾","蠔":"蚝","蠙":"𧏖","蠟":"蜡","蠣":"蛎","蠦":"𫊮","蠨":"蟏","蠱":"蛊","蠶":"蚕","蠻":"蛮","蠾":"𧑏","衆":"众","衊":"蔑","術":"术","衕":"同","衚":"胡","衛":"卫","衝":"冲","衹":"衹","袞":"衮","裊":"袅","裏":"里","補":"补","裝":"装","裡":"里","製":"制","複":"复","褌":"裈","褘":"袆","褲":"裤","褳":"裢","褸":"褛","褻":"亵","襀":"𫌀","襇":"裥","襉":"裥","襏":"袯","襓":"𫋹","襖":"袄","襗":"𫋷","襘":"𫋻","襝":"裣","襠":"裆","襤":"褴","襪":"袜","襬":"摆","襯":"衬","襰":"𧝝","襲":"袭","襴":"襕","襵":"𫌇","覆":"覆","覈":"核","見":"见","覎":"觃","規":"规","覓":"觅","視":"视","覘":"觇","覛":"𫌪","覡":"觋","覥":"觍","覦":"觎","親":"亲","覬":"觊","覯":"觏","覲":"觐","覷":"觑","覹":"𫌭","覺":"觉","覼":"𫌨","覽":"览","覿":"觌","觀":"观","觴":"觞","觶":"觯","觸":"触","訁":"讠","訂":"订","訃":"讣","計":"计","訊":"讯","訌":"讧","討":"讨","訏":"𬣙","訐":"讦","訑":"𫍙","訒":"讱","訓":"训","訕":"讪","訖":"讫","託":"托","記":"记","訛":"讹","訜":"𫍛","訝":"讶","訞":"𫍚","訟":"讼","訢":"䜣","訣":"诀","訥":"讷","訨":"𫟞","訩":"讻","訪":"访","設":"设","許":"许","訴":"诉","訶":"诃","診":"诊","註":"注","証":"证","詀":"𧮪","詁":"诂","詆":"诋","詊":"𫟟","詎":"讵","詐":"诈","詑":"𫍡","詒":"诒","詓":"𫍜","詔":"诏","評":"评","詖":"诐","詗":"诇","詘":"诎","詛":"诅","詝":"𬣞","詞":"词","詠":"咏","詡":"诩","詢":"询","詣":"诣","試":"试","詩":"诗","詪":"𬣳","詫":"诧","詬":"诟","詭":"诡","詮":"诠","詰":"诘","話":"话","該":"该","詳":"详","詵":"诜","詷":"𫍣","詼":"诙","詿":"诖","誂":"𫍥","誄":"诔","誅":"诛","誆":"诓","誇":"夸","誋":"𫍪","誌":"志","認":"认","誑":"诳","誒":"诶","誕":"诞","誘":"诱","誚":"诮","語":"语","誠":"诚","誡":"诫","誣":"诬","誤":"误","誥":"诰","誦":"诵","誨":"诲","說":"说","誫":"𫍨","説":"说","誰":"谁","課":"课","誳":"𫍮","誴":"𫟡","誶":"谇","誷":"𫍬","誹":"诽","誺":"𫍧","誼":"谊","誾":"訚","調":"调","諂":"谄","諄":"谆","談":"谈","諉":"诿","請":"请","諍":"诤","諏":"诹","諑":"诼","諒":"谅","諓":"𬣡","論":"论","諗":"谂","諛":"谀","諜":"谍","諝":"谞","諞":"谝","諟":"𬤊","諡":"谥","諢":"诨","諣":"𫍩","諤":"谔","諥":"𫍳","諦":"谛","諧":"谐","諫":"谏","諭":"谕","諮":"咨","諯":"𫍱","諰":"𫍰","諱":"讳","諲":"𬤇","諳":"谙","諴":"𫍯","諶":"谌","諷":"讽","諸":"诸","諺":"谚","諼":"谖","諾":"诺","謀":"谋","謁":"谒","謂":"谓","謄":"誊","謅":"诌","謆":"𫍸","謉":"𫍷","謊":"谎","謎":"谜","謏":"𫍲","謐":"谧","謔":"谑","謖":"谡","謗":"谤","謙":"谦","謚":"谥","講":"讲","謝":"谢","謠":"谣","謡":"谣","謨":"谟","謫":"谪","謬":"谬","謭":"谫","謯":"𫍹","謱":"𫍴","謳":"讴","謸":"𫍵","謹":"谨","謾":"谩","譁":"哗","譂":"𫟠","譅":"𰶎","譆":"𫍻","證":"证","譊":"𫍢","譎":"谲","譏":"讥","譑":"𫍤","譓":"𬤝","譖":"谮","識":"识","譙":"谯","譚":"谭","譜":"谱","譞":"𫍽","譟":"噪","譨":"𫍦","譫":"谵","譭":"毁","譯":"译","議":"议","譴":"谴","護":"护","譸":"诪","譽":"誉","譾":"谫","讀":"读","讅":"谉","變":"变","讋":"詟","讌":"䜩","讎":"雠","讒":"谗","讓":"让","讕":"谰","讖":"谶","讚":"赞","讜":"谠","讞":"谳","豈":"岂","豎":"竖","豐":"丰","豔":"艳","豬":"猪","豵":"𫎆","豶":"豮","貓":"猫","貗":"𫎌","貙":"䝙","貝":"贝","貞":"贞","貟":"贠","負":"负","財":"财","貢":"贡","貧":"贫","貨":"货","販":"贩","貪":"贪","貫":"贯","責":"责","貯":"贮","貰":"贳","貲":"赀","貳":"贰","貴":"贵","貶":"贬","買":"买","貸":"贷","貺":"贶","費":"费","貼":"贴","貽":"贻","貿":"贸","賀":"贺","賁":"贲","賂":"赂","賃":"赁","賄":"贿","賅":"赅","資":"资","賈":"贾","賊":"贼","賑":"赈","賒":"赊","賓":"宾","賕":"赇","賙":"赒","賚":"赉","賜":"赐","賝":"𫎩","賞":"赏","賟":"𧹖","賠":"赔","賡":"赓","賢":"贤","賣":"卖","賤":"贱","賦":"赋","賧":"赕","質":"质","賫":"赍","賬":"账","賭":"赌","賰":"䞐","賴":"赖","賵":"赗","賺":"赚","賻":"赙","購":"购","賽":"赛","賾":"赜","贃":"𧹗","贄":"贽","贅":"赘","贇":"赟","贈":"赠","贉":"𫎫","贊":"赞","贋":"赝","贍":"赡","贏":"赢","贐":"赆","贑":"𫎬","贓":"赃","贔":"赑","贖":"赎","贗":"赝","贚":"𫎦","贛":"赣","贜":"赃","赬":"赪","趕":"赶","趙":"赵","趨":"趋","趲":"趱","跡":"迹","踐":"践","踰":"逾","踴":"踊","蹌":"跄","蹔":"𫏐","蹕":"跸","蹟":"迹","蹠":"跖","蹣":"蹒","蹤":"踪","蹳":"𫏆","蹺":"跷","蹻":"𫏋","躂":"跶","躉":"趸","躊":"踌","躋":"跻","躍":"跃","躎":"䟢","躑":"踯","躒":"跞","躓":"踬","躕":"蹰","躘":"𨀁","躚":"跹","躝":"𨅬","躡":"蹑","躥":"蹿","躦":"躜","躪":"躏","軀":"躯","軉":"𨉗","車":"车","軋":"轧","軌":"轨","軍":"军","軏":"𫐄","軑":"轪","軒":"轩","軔":"轫","軕":"𫐅","軗":"𨐅","軛":"轭","軜":"𫐇","軝":"𬨂","軟":"软","軤":"轷","軨":"𫐉","軫":"轸","軬":"𫐊","軲":"轱","軷":"𫐈","軸":"轴","軹":"轵","軺":"轺","軻":"轲","軼":"轶","軾":"轼","軿":"𫐌","較":"较","輄":"𨐈","輅":"辂","輇":"辁","輈":"辀","載":"载","輊":"轾","輋":"𪨶","輒":"辄","輓":"挽","輔":"辅","輕":"轻","輖":"𫐏","輗":"𫐐","輛":"辆","輜":"辎","輝":"辉","輞":"辋","輟":"辍","輢":"𫐎","輥":"辊","輦":"辇","輨":"𫐑","輩":"辈","輪":"轮","輬":"辌","輮":"𫐓","輯":"辑","輳":"辏","輶":"𬨎","輷":"𫐒","輸":"输","輻":"辐","輼":"辒","輾":"辗","輿":"舆","轀":"辒","轂":"毂","轄":"辖","轅":"辕","轆":"辘","轇":"𫐖","轉":"转","轊":"𫐕","轍":"辙","轎":"轿","轐":"𫐗","轔":"辚","轗":"𫐘","轟":"轰","轠":"𫐙","轡":"辔","轢":"轹","轣":"𫐆","轤":"轳","辦":"办","辭":"辞","辮":"辫","辯":"辩","農":"农","迴":"回","逕":"迳","這":"这","連":"连","週":"周","進":"进","遊":"游","運":"运","過":"过","達":"达","違":"违","遙":"遥","遜":"逊","遞":"递","遠":"远","遡":"溯","適":"适","遱":"𫐷","遲":"迟","遷":"迁","選":"选","遺":"遗","遼":"辽","邁":"迈","還":"还","邇":"迩","邊":"边","邏":"逻","邐":"逦","郟":"郏","郵":"邮","鄆":"郓","鄉":"乡","鄒":"邹","鄔":"邬","鄖":"郧","鄟":"𫑘","鄧":"邓","鄩":"𬩽","鄭":"郑","鄰":"邻","鄲":"郸","鄳":"𫑡","鄴":"邺","鄶":"郐","鄺":"邝","酇":"酂","酈":"郦","醃":"腌","醖":"酝","醜":"丑","醞":"酝","醟":"蒏","醣":"糖","醫":"医","醬":"酱","醱":"酦","醲":"𬪩","醶":"𫑷","釀":"酿","釁":"衅","釃":"酾","釅":"酽","釋":"释","釐":"厘","釒":"钅","釓":"钆","釔":"钇","釕":"钌","釗":"钊","釘":"钉","釙":"钋","釚":"𫟲","針":"针","釟":"𫓥","釣":"钓","釤":"钐","釦":"扣","釧":"钏","釨":"𫓦","釩":"钒","釲":"𫟳","釳":"𨰿","釴":"𬬩","釵":"钗","釷":"钍","釹":"钕","釺":"钎","釾":"䥺","釿":"𬬱","鈀":"钯","鈁":"钫","鈃":"钘","鈄":"钭","鈅":"钥","鈆":"𫓪","鈇":"𫓧","鈈":"钚","鈉":"钠","鈋":"𨱂","鈍":"钝","鈎":"钩","鈐":"钤","鈑":"钣","鈒":"钑","鈔":"钞","鈕":"钮","鈖":"𫟴","鈗":"𫟵","鈛":"𫓨","鈞":"钧","鈠":"𨱁","鈡":"钟","鈣":"钙","鈥":"钬","鈦":"钛","鈧":"钪","鈮":"铌","鈯":"𨱄","鈰":"铈","鈲":"𨱃","鈳":"钶","鈴":"铃","鈷":"钴","鈸":"钹","鈹":"铍","鈺":"钰","鈽":"钸","鈾":"铀","鈿":"钿","鉀":"钾","鉁":"𨱅","鉅":"巨","鉆":"钻","鉈":"铊","鉉":"铉","鉊":"𬬿","鉋":"铇","鉍":"铋","鉑":"铂","鉔":"𫓬","鉕":"钷","鉗":"钳","鉚":"铆","鉛":"铅","鉝":"𫟷","鉞":"钺","鉠":"𫓭","鉢":"钵","鉤":"钩","鉥":"𬬸","鉦":"钲","鉧":"𬭁","鉬":"钼","鉭":"钽","鉮":"𬬹","鉳":"锫","鉶":"铏","鉷":"𫟹","鉸":"铰","鉺":"铒","鉻":"铬","鉽":"𫟸","鉾":"𫓴","鉿":"铪","銀":"银","銁":"𫓲","銂":"𫟻","銃":"铳","銅":"铜","銈":"𫓯","銊":"𫓰","銍":"铚","銏":"𫟶","銑":"铣","銓":"铨","銖":"铢","銘":"铭","銚":"铫","銛":"铦","銜":"衔","銠":"铑","銣":"铷","銥":"铱","銦":"铟","銨":"铵","銩":"铥","銪":"铕","銫":"铯","銬":"铐","銱":"铞","銳":"锐","銶":"𨱇","銷":"销","銹":"锈","銻":"锑","銼":"锉","鋁":"铝","鋂":"𰾄","鋃":"锒","鋅":"锌","鋇":"钡","鋉":"𨱈","鋌":"铤","鋏":"铗","鋐":"𬭎","鋒":"锋","鋗":"𫓶","鋙":"铻","鋝":"锊","鋟":"锓","鋠":"𫓵","鋣":"铘","鋤":"锄","鋥":"锃","鋦":"锔","鋨":"锇","鋩":"铓","鋪":"铺","鋭":"锐","鋮":"铖","鋯":"锆","鋰":"锂","鋱":"铽","鋶":"锍","鋸":"锯","鋹":"𬬮","鋼":"钢","錀":"𬬭","錁":"锞","錂":"𨱋","錄":"录","錆":"锖","錇":"锫","錈":"锩","錏":"铔","錐":"锥","錒":"锕","錕":"锟","錘":"锤","錙":"锱","錚":"铮","錛":"锛","錜":"𫓻","錝":"𫓽","錞":"𬭚","錟":"锬","錠":"锭","錡":"锜","錢":"钱","錤":"𫓹","錥":"𫓾","錦":"锦","錨":"锚","錩":"锠","錫":"锡","錮":"锢","錯":"错","録":"录","錳":"锰","錶":"表","錸":"铼","錼":"镎","錽":"𫓸","鍀":"锝","鍁":"锨","鍃":"锪","鍄":"𨱉","鍅":"钫","鍆":"钔","鍇":"锴","鍈":"锳","鍉":"𫔂","鍊":"炼","鍋":"锅","鍍":"镀","鍒":"𫔄","鍔":"锷","鍘":"铡","鍚":"钖","鍛":"锻","鍠":"锽","鍤":"锸","鍥":"锲","鍩":"锘","鍬":"锹","鍭":"𬭤","鍮":"𨱎","鍰":"锾","鍵":"键","鍶":"锶","鍺":"锗","鍼":"针","鍾":"钟","鎂":"镁","鎄":"锿","鎇":"镅","鎈":"𫟿","鎊":"镑","鎌":"镰","鎍":"𫔅","鎓":"𬭩","鎔":"镕","鎖":"锁","鎘":"镉","鎙":"𫔈","鎚":"锤","鎛":"镈","鎝":"𨱏","鎞":"𫔇","鎡":"镃","鎢":"钨","鎣":"蓥","鎦":"镏","鎧":"铠","鎩":"铩","鎪":"锼","鎬":"镐","鎭":"镇","鎮":"镇","鎯":"𨱍","鎰":"镒","鎲":"镋","鎳":"镍","鎵":"镓","鎶":"鿔","鎷":"𨰾","鎸":"镌","鎿":"镎","鏃":"镞","鏆":"𨱌","鏇":"旋","鏈":"链","鏉":"𨱒","鏌":"镆","鏍":"镙","鏏":"𬭬","鏐":"镠","鏑":"镝","鏗":"铿","鏘":"锵","鏚":"𬭭","鏜":"镗","鏝":"镘","鏞":"镛","鏟":"铲","鏡":"镜","鏢":"镖","鏤":"镂","鏥":"𫔊","鏦":"𫓩","鏨":"錾","鏰":"镚","鏵":"铧","鏷":"镤","鏹":"镪","鏺":"䥽","鏻":"𬭸","鏽":"锈","鏾":"𫔌","鐃":"铙","鐄":"𨱑","鐇":"𫔍","鐈":"𫓱","鐋":"铴","鐍":"𫔎","鐎":"𨱓","鐏":"𨱔","鐐":"镣","鐒":"铹","鐓":"镦","鐔":"镡","鐘":"钟","鐙":"镫","鐝":"镢","鐠":"镨","鐥":"䦅","鐦":"锎","鐧":"锏","鐨":"镄","鐩":"𬭼","鐪":"𫓺","鐫":"镌","鐮":"镰","鐯":"䦃","鐲":"镯","鐳":"镭","鐵":"铁","鐶":"镮","鐸":"铎","鐺":"铛","鐼":"𫔁","鐽":"𫟼","鐿":"镱","鑀":"𰾭","鑄":"铸","鑉":"𫠁","鑊":"镬","鑌":"镔","鑑":"鉴","鑒":"鉴","鑔":"镲","鑕":"锧","鑞":"镴","鑠":"铄","鑣":"镳","鑥":"镥","鑪":"𬬻","鑭":"镧","鑰":"钥","鑱":"镵","鑲":"镶","鑴":"𫔔","鑷":"镊","鑹":"镩","鑼":"锣","鑽":"钻","鑾":"銮","鑿":"凿","钁":"镢","钂":"镋","長":"长","門":"门","閂":"闩","閃":"闪","閆":"闫","閈":"闬","閉":"闭","開":"开","閌":"闶","閍":"𨸂","閎":"闳","閏":"闰","閐":"𨸃","閑":"闲","閒":"闲","間":"间","閔":"闵","閗":"𫔯","閘":"闸","閝":"𫠂","閞":"𫔰","閡":"阂","閣":"阁","閤":"合","閥":"阀","閨":"闺","閩":"闽","閫":"阃","閬":"阆","閭":"闾","閱":"阅","閲":"阅","閵":"𫔴","閶":"阊","閹":"阉","閻":"阎","閼":"阏","閽":"阍","閾":"阈","閿":"阌","闃":"阒","闆":"板","闇":"暗","闈":"闱","闉":"𬮱","闊":"阔","闋":"阕","闌":"阑","闍":"阇","闐":"阗","闑":"𫔶","闒":"阘","闓":"闿","闔":"阖","闕":"阙","闖":"闯","關":"关","闞":"阚","闠":"阓","闡":"阐","闢":"辟","闤":"阛","闥":"闼","阪":"阪","陘":"陉","陝":"陕","陞":"升","陣":"阵","陰":"阴","陳":"陈","陸":"陆","陽":"阳","隉":"陧","隊":"队","階":"阶","隑":"𬮿","隕":"陨","際":"际","隤":"𬯎","隨":"随","險":"险","隮":"𬯀","隯":"陦","隱":"隐","隴":"陇","隸":"隶","隻":"只","雋":"隽","雖":"虽","雙":"双","雛":"雏","雜":"杂","雞":"鸡","離":"离","難":"难","雲":"云","電":"电","霑":"沾","霢":"霡","霣":"𫕥","霧":"雾","霼":"𪵣","霽":"霁","靂":"雳","靄":"霭","靆":"叇","靈":"灵","靉":"叆","靚":"靓","靜":"静","靝":"靔","靦":"腼","靧":"𫖃","靨":"靥","鞏":"巩","鞝":"绱","鞦":"秋","鞽":"鞒","鞾":"𫖇","韁":"缰","韃":"鞑","韆":"千","韉":"鞯","韋":"韦","韌":"韧","韍":"韨","韓":"韩","韙":"韪","韚":"𫠅","韛":"𫖔","韜":"韬","韝":"鞲","韞":"韫","韠":"𫖒","韻":"韵","響":"响","頁":"页","頂":"顶","頃":"顷","項":"项","順":"顺","頇":"顸","須":"须","頊":"顼","頌":"颂","頍":"𫠆","頎":"颀","頏":"颃","預":"预","頑":"顽","頒":"颁","頓":"顿","頔":"𬱖","頗":"颇","領":"领","頜":"颌","頠":"𬱟","頡":"颉","頤":"颐","頦":"颏","頫":"𫖯","頭":"头","頮":"颒","頰":"颊","頲":"颋","頴":"颕","頵":"𫖳","頷":"颔","頸":"颈","頹":"颓","頻":"频","頽":"颓","顂":"𩓋","顃":"𩖖","顅":"𫖶","顆":"颗","題":"题","額":"额","顎":"颚","顏":"颜","顒":"颙","顓":"颛","顔":"颜","顗":"𫖮","願":"愿","顙":"颡","顛":"颠","類":"类","顢":"颟","顣":"𫖹","顥":"颢","顧":"顾","顫":"颤","顬":"颥","顯":"显","顰":"颦","顱":"颅","顳":"颞","顴":"颧","風":"风","颭":"飐","颮":"飑","颯":"飒","颰":"𩙥","颱":"台","颳":"刮","颶":"飓","颷":"𩙪","颸":"飔","颺":"飏","颻":"飖","颼":"飕","颾":"𩙫","飀":"飗","飄":"飘","飆":"飙","飈":"飚","飋":"𫗋","飛":"飞","飠":"饣","飢":"饥","飣":"饤","飥":"饦","飦":"𫗞","飩":"饨","飪":"饪","飫":"饫","飭":"饬","飯":"饭","飱":"飧","飲":"饮","飴":"饴","飵":"𫗢","飶":"𫗣","飼":"饲","飽":"饱","飾":"饰","飿":"饳","餃":"饺","餄":"饸","餅":"饼","餈":"糍","餉":"饷","養":"养","餌":"饵","餎":"饹","餏":"饻","餑":"饽","餒":"馁","餓":"饿","餔":"𫗦","餕":"馂","餖":"饾","餗":"𫗧","餘":"余","餚":"肴","餛":"馄","餜":"馃","餞":"饯","餡":"馅","餦":"𫗠","餧":"𫗪","館":"馆","餪":"𫗬","餫":"𫗥","餬":"糊","餭":"𫗮","餱":"糇","餳":"饧","餵":"喂","餶":"馉","餷":"馇","餸":"𩠌","餺":"馎","餼":"饩","餾":"馏","餿":"馊","饁":"馌","饃":"馍","饅":"馒","饈":"馐","饉":"馑","饊":"馓","饋":"馈","饌":"馔","饑":"饥","饒":"饶","饗":"飨","饘":"𫗴","饜":"餍","饞":"馋","饟":"𫗵","饠":"𫗩","饢":"馕","馬":"马","馭":"驭","馮":"冯","馯":"𫘛","馱":"驮","馳":"驰","馴":"驯","馹":"驲","馼":"𫘜","駁":"驳","駃":"𫘝","駉":"𬳶","駊":"𫘟","駎":"𩧨","駐":"驻","駑":"驽","駒":"驹","駓":"𬳵","駔":"驵","駕":"驾","駘":"骀","駙":"驸","駚":"𩧫","駛":"驶","駝":"驼","駞":"𫘞","駟":"驷","駡":"骂","駢":"骈","駤":"𫘠","駧":"𩧲","駩":"𩧴","駪":"𬳽","駫":"𫘡","駭":"骇","駰":"骃","駱":"骆","駶":"𩧺","駸":"骎","駻":"𫘣","駼":"𬳿","駿":"骏","騁":"骋","騂":"骍","騃":"𫘤","騄":"𫘧","騅":"骓","騉":"𫘥","騊":"𫘦","騌":"骔","騍":"骒","騎":"骑","騏":"骐","騑":"𬴂","騔":"𩨀","騖":"骛","騙":"骗","騚":"𩨊","騜":"𫘩","騝":"𩨃","騞":"𬴃","騟":"𩨈","騠":"𫘨","騤":"骙","騧":"䯄","騪":"𩨄","騫":"骞","騭":"骘","騮":"骝","騰":"腾","騱":"𫘬","騴":"𫘫","騵":"𫘪","騶":"驺","騷":"骚","騸":"骟","騻":"𫘭","騼":"𫠋","騾":"骡","驀":"蓦","驁":"骜","驂":"骖","驃":"骠","驄":"骢","驅":"驱","驊":"骅","驋":"𩧯","驌":"骕","驍":"骁","驎":"𬴊","驏":"骣","驓":"𫘯","驕":"骄","驗":"验","驙":"𫘰","驚":"惊","驛":"驿","驟":"骤","驢":"驴","驤":"骧","驥":"骥","驦":"骦","驨":"𫘱","驪":"骊","驫":"骉","骯":"肮","髏":"髅","髒":"脏","體":"体","髕":"髌","髖":"髋","髮":"发","鬆":"松","鬍":"胡","鬖":"𩭹","鬚":"须","鬠":"𫘽","鬢":"鬓","鬥":"斗","鬧":"闹","鬨":"哄","鬩":"阋","鬮":"阄","鬱":"郁","鬹":"鬶","魎":"魉","魘":"魇","魚":"鱼","魛":"鱽","魟":"𫚉","魢":"鱾","魥":"𩽹","魦":"𫚌","魨":"鲀","魯":"鲁","魴":"鲂","魵":"𫚍","魷":"鱿","魺":"鲄","魽":"𫠐","鮀":"𬶍","鮁":"鲅","鮃":"鲆","鮄":"𫚒","鮅":"𫚑","鮆":"𫚖","鮈":"𬶋","鮊":"鲌","鮋":"鲉","鮍":"鲏","鮎":"鲇","鮐":"鲐","鮑":"鲍","鮒":"鲋","鮓":"鲊","鮚":"鲒","鮜":"鲘","鮝":"鲞","鮞":"鲕","鮟":"𩽾","鮠":"𬶏","鮡":"𬶐","鮣":"䲟","鮤":"𫚓","鮦":"鲖","鮪":"鲔","鮫":"鲛","鮭":"鲑","鮮":"鲜","鮯":"𫚗","鮰":"𫚔","鮳":"鲓","鮵":"𫚛","鮶":"鲪","鮸":"3","鮺":"鲝","鮿":"𫚚","鯀":"鲧","鯁":"鲠","鯄":"𩾁","鯆":"𫚙","鯇":"鲩","鯉":"鲤","鯊":"鲨","鯒":"鲬","鯔":"鲻","鯕":"鲯","鯖":"鲭","鯗":"鲞","鯛":"鲷","鯝":"鲴","鯞":"𫚡","鯡":"鲱","鯢":"鲵","鯤":"鲲","鯧":"鲳","鯨":"鲸","鯪":"鲮","鯫":"鲰","鯬":"𫚞","鯰":"鲶","鯱":"𩾇","鯴":"鲺","鯶":"𩽼","鯷":"鳀","鯻":"𬶟","鯽":"鲫","鯾":"𫚣","鯿":"鳊","鰁":"鳈","鰂":"鲗","鰃":"鳂","鰆":"䲠","鰈":"鲽","鰉":"鳇","鰊":"𬶠","鰋":"𫚢","鰌":"䲡","鰍":"鳅","鰏":"鲾","鰐":"鳄","鰑":"𫚊","鰒":"鳆","鰓":"鳃","鰕":"𫚥","鰛":"鳁","鰜":"鳒","鰟":"鳑","鰠":"鳋","鰣":"鲥","鰤":"𫚕","鰥":"鳏","鰦":"𫚤","鰧":"䲢","鰨":"鳎","鰩":"鳐","鰫":"𫚦","鰭":"鳍","鰮":"鳁","鰱":"鲢","鰲":"鳌","鰳":"鳓","鰵":"鳘","鰶":"𬶭","鰷":"鲦","鰹":"鲣","鰺":"鲹","鰻":"鳗","鰼":"鳛","鰽":"𫚧","鰾":"鳔","鱀":"𬶨","鱂":"鳉","鱄":"𫚋","鱅":"鳙","鱆":"𫠒","鱇":"𩾌","鱈":"鳕","鱉":"鳖","鱊":"𫚪","鱒":"鳟","鱔":"鳝","鱖":"鳜","鱗":"鳞","鱘":"鲟","鱚":"𬶮","鱝":"鲼","鱟":"鲎","鱠":"鲙","鱢":"𫚫","鱣":"鳣","鱤":"鳡","鱧":"鳢","鱨":"鲿","鱭":"鲚","鱮":"𫚈","鱯":"鳠","鱲":"𫚭","鱷":"鳄","鱸":"鲈","鱺":"鲡","鳥":"鸟","鳧":"凫","鳩":"鸠","鳬":"凫","鳲":"鸤","鳳":"凤","鳴":"鸣","鳶":"鸢","鳷":"𫛛","鳼":"𪉃","鳽":"𫛚","鳾":"䴓","鴀":"𫛜","鴃":"𫛞","鴅":"𫛝","鴆":"鸩","鴇":"鸨","鴉":"鸦","鴐":"𫛤","鴒":"鸰","鴔":"𫛡","鴕":"鸵","鴗":"𫁡","鴛":"鸳","鴜":"𪉈","鴝":"鸲","鴞":"鸮","鴟":"鸱","鴣":"鸪","鴥":"𫛣","鴦":"鸯","鴨":"鸭","鴮":"𫛦","鴯":"鸸","鴰":"鸹","鴲":"𪉆","鴳":"𫛩","鴴":"鸻","鴷":"䴕","鴻":"鸿","鴽":"𫛪","鴿":"鸽","鵁":"䴔","鵂":"鸺","鵃":"鸼","鵊":"𫛥","鵏":"𬷕","鵐":"鹀","鵑":"鹃","鵒":"鹆","鵓":"鹁","鵚":"𪉍","鵜":"鹈","鵝":"鹅","鵟":"𫛭","鵠":"鹄","鵡":"鹉","鵧":"𫛨","鵩":"𫛳","鵪":"鹌","鵫":"𫛱","鵬":"鹏","鵮":"鹐","鵯":"鹎","鵰":"雕","鵲":"鹊","鵷":"鹓","鵾":"鹍","鶄":"䴖","鶇":"鸫","鶉":"鹑","鶊":"鹒","鶌":"𫛵","鶒":"𫛶","鶓":"鹋","鶖":"鹙","鶗":"𫛸","鶘":"鹕","鶚":"鹗","鶠":"𬸘","鶡":"鹖","鶥":"鹛","鶦":"𫛷","鶩":"鹜","鶪":"䴗","鶬":"鸧","鶭":"𫛯","鶯":"莺","鶰":"𫛫","鶱":"𬸣","鶲":"鹟","鶴":"鹤","鶹":"鹠","鶺":"鹡","鶻":"鹘","鶼":"鹣","鶿":"鹚","鷀":"鹚","鷁":"鹢","鷂":"鹞","鷄":"鸡","鷅":"𫛽","鷉":"䴘","鷊":"鹝","鷐":"𫜀","鷓":"鹧","鷔":"𪉑","鷖":"鹥","鷗":"鸥","鷙":"鸷","鷚":"鹨","鷟":"𬸦","鷣":"𫜃","鷤":"𫛴","鷥":"鸶","鷦":"鹪","鷨":"𪉊","鷩":"𫜁","鷫":"鹔","鷭":"𬸪","鷯":"鹩","鷲":"鹫","鷳":"鹇","鷴":"鹇","鷷":"𫜄","鷸":"鹬","鷹":"鹰","鷺":"鹭","鷽":"鸴","鷿":"𬸯","鸂":"㶉","鸇":"鹯","鸊":"䴙","鸋":"𫛢","鸌":"鹱","鸏":"鹲","鸑":"𬸚","鸕":"鸬","鸗":"𫛟","鸘":"鹴","鸚":"鹦","鸛":"鹳","鸝":"鹂","鸞":"鸾","鹵":"卤","鹹":"咸","鹺":"鹾","鹼":"碱","鹽":"盐","麗":"丽","麥":"麦","麨":"𪎊","麩":"麸","麪":"面","麫":"面","麬":"𤿲","麯":"曲","麲":"𪎉","麳":"𪎌","麴":"曲","麵":"面","麷":"𫜑","麼":"么","麽":"么","黃":"黄","黌":"黉","點":"点","黨":"党","黲":"黪","黴":"霉","黶":"黡","黷":"黩","黽":"黾","黿":"鼋","鼂":"鼌","鼉":"鼍","鼕":"冬","鼴":"鼹","齊":"齐","齋":"斋","齎":"赍","齏":"齑","齒":"齿","齔":"龀","齕":"龁","齗":"龂","齘":"𬹼","齙":"龅","齜":"龇","齟":"龃","齠":"龆","齡":"龄","齣":"出","齦":"龈","齧":"啮","齩":"𫜪","齪":"龊","齬":"龉","齭":"𫜭","齮":"𬺈","齯":"𫠜","齰":"𫜬","齲":"龋","齴":"𫜮","齶":"腭","齷":"龌","齼":"𬺓","齾":"𫜰","龍":"龙","龎":"厐","龐":"庞","龑":"䶮","龓":"𫜲","龔":"龚","龕":"龛","龜":"龟","龭":"𩨎","龯":"𨱆","鿁":"䜤","鿓":"鿒","𠁞":"𠀾","𠌥":"𠆿","𠏢":"𠉗","𠐊":"𫝋","𠗣":"㓆","𠞆":"𠛆","𠠎":"𠚳","𠬙":"𪠡","𠽃":"𪠺","𠿕":"𪜎","𡂡":"𪢒","𡃄":"𪡺","𡃕":"𠴛","𡃤":"𪢐","𡄔":"𠴢","𡄣":"𠵸","𡅏":"𠲥","𡅯":"𪢖","𡑍":"𫭼","𡑭":"𡋗","𡓁":"𪤄","𡓾":"𡋀","𡔖":"𡍣","𡞵":"㛟","𡟫":"𫝪","𡠹":"㛿","𡢃":"㛠","𡮉":"𡭜","𡮣":"𡭬","𡳳":"𡳃","𡸗":"𪨩","𡹬":"𪨹","𡻕":"岁","𡽗":"𡸃","𡾱":"㟜","𡿖":"𪩛","𢍰":"𪪴","𢠼":"𢙑","𢣐":"𪬚","𢣚":"𢘝","𢣭":"𢘞","𢤩":"𪫡","𢤱":"𢘙","𢤿":"𪬯","𢯷":"𪭝","𢶒":"𪭯","𢶫":"𢫞","𢷮":"𢫊","𢹿":"𢬦","𢺳":"𪮳","𣈶":"暅","𣋋":"𣈣","𣍐":"𫧃","𣙎":"㭣","𣜬":"𪳗","𣝕":"𣘷","𣞻":"𣘓","𣠩":"𣞎","𣠲":"𣑶","𣯩":"𣯣","𣯴":"𣭤","𣯶":"毶","𣽏":"𪶮","𣾷":"㳢","𣿉":"𣶫","𤁣":"𣺽","𤄷":"𪶒","𤅶":"𣷷","𤑳":"𤎻","𤑹":"𪹀","𤒎":"𤊀","𤒻":"𪹹","𤓌":"𪹠","𤓎":"𤎺","𤓩":"𤊰","𤘀":"𪺣","𤛮":"𤙯","𤛱":"𫞢","𤜆":"𪺪","𤠮":"𪺸","𤢟":"𤝢","𤢻":"𢢐","𤩂":"𫞧","𤪺":"㻘","𤫩":"㻏","𤬅":"𪼴","𤳷":"𪽝","𤳸":"𤳄","𤷃":"𪽭","𤸫":"𤶧","𤺔":"𪽴","𥊝":"𥅿","𥌃":"𥅘","𥏝":"𪿊","𥕥":"𥐰","𥖅":"𥐯","𥖲":"𪿞","𥗇":"𪿵","𥗽":"𬒗","𥜐":"𫀓","𥜰":"𫀌","𥞵":"𥞦","𥢢":"䅪","𥢶":"𫞷","𥢷":"𫀮","𥨐":"𥧂","𥪂":"𥩺","𥯤":"𫁳","𥴨":"𫂖","𥴼":"𫁺","𥵃":"𥱔","𥵊":"𥭉","𥶽":"𫁱","𥸠":"𥮋","𥻦":"𫂿","𥼽":"𥹥","𥽖":"𥺇","𥾯":"𫄝","𥿊":"𦈈","𦀖":"𫄦","𦂅":"𦈒","𦃄":"𦈗","𦃩":"𫄯","𦅇":"𫄪","𦅈":"𫄵","𦆲":"𫟇","𦒀":"𫅥","𦔖":"𫅼","𦘧":"𡳒","𦟼":"𫆝","𦠅":"𫞅","𦡝":"𫆫","𦢈":"𣍨","𦣎":"𦟗","𦧺":"𫇘","𦪙":"䑽","𦪽":"𦨩","𦱌":"𫇪","𦾟":"𦶻","𧎈":"𧌥","𧒯":"𫊹","𧔥":"𧒭","𧕟":"𧉐","𧜗":"䘞","𧜵":"䙊","𧝞":"䘛","𧞫":"𫌋","𧟀":"𧝧","𧡴":"𫌫","𧢄":"𫌬","𧦝":"𫍞","𧦧":"𫍟","𧩕":"𫍭","𧩙":"𬣥","𧩼":"𫍶","𧫝":"𫍺","𧬤":"𫍼","𧭈":"𫍾","𧭹":"𫍐","𧳟":"𧳕","𧵳":"䞌","𧶔":"𧹓","𧶧":"䞎","𧷎":"𪠀","𧸘":"𫎨","𧹈":"𪥠","𧽯":"𫎸","𨂐":"𫏌","𨄣":"𨀱","𨅍":"𨁴","𨆪":"𫏕","𨇁":"𧿈","𨇞":"𨅫","𨇤":"𫏨","𨇰":"𫏞","𨇽":"𫏑","𨈊":"𨂺","𨈌":"𨄄","𨊰":"䢀","𨊸":"䢁","𨊻":"𨐆","𨋢":"䢂","𨌈":"𫐍","𨍰":"𫐔","𨎌":"𫐋","𨎮":"𨐉","𨏠":"𨐇","𨏥":"𨐊","𨞺":"𫟫","𨟊":"𫟬","𨢿":"𨡙","𨣈":"𨡺","𨣞":"𨟳","𨣧":"𨠨","𨤻":"𨤰","𨥛":"𨱀","𨥟":"𫓫","𨦫":"䦀","𨧀":"𬭊","𨧜":"䦁","𨧰":"𫟽","𨧱":"𨱊","𨨏":"𬭛","𨨛":"𫓼","𨨢":"𫓽","𨩰":"𫟾","𨪕":"𫓮","𨫒":"𨱐","𨬖":"𫔏","𨭆":"𬭶","𨭎":"𬭳","𨭖":"𫔑","𨭸":"𫔐","𨮂":"𨱕","𨮳":"𫔒","𨯅":"䥿","𨯟":"𫔓","𨰃":"𫔉","𨰋":"𫓳","𨰥":"𫔕","𨰲":"𫔃","𨲳":"𫔖","𨳑":"𨸁","𨳕":"𨸀","𨴗":"𨸅","𨴹":"𫔲","𨵩":"𨸆","𨵸":"𨸇","𨶀":"𨸉","𨶏":"𨸊","𨶮":"𨸌","𨶲":"𨸋","𨷲":"𨸎","𨼳":"𫔽","𨽏":"𨸘","𩀨":"𫕚","𩅙":"𫕨","𩎖":"𫖑","𩎢":"𩏾","𩏂":"𫖓","𩏠":"𫖖","𩏪":"𩏽","𩏷":"𫃗","𩑔":"𫖪","𩒎":"𫖭","𩓣":"𩖕","𩓥":"𫖵","𩔑":"𫖷","𩔳":"𫖴","𩖰":"𫠇","𩗀":"𩙦","𩗓":"𫗈","𩗴":"𫗉","𩘀":"𩙩","𩘝":"𩙭","𩘹":"𩙨","𩘺":"𩙬","𩙈":"𩙰","𩚛":"𩟿","𩚥":"𩠀","𩚩":"𫗡","𩚵":"𩠁","𩛆":"𩠂","𩛌":"𫗤","𩛡":"𫗨","𩛩":"𩠃","𩜇":"𩠉","𩜦":"𩠆","𩜵":"𩠊","𩝔":"𩠋","𩝽":"𫗳","𩞄":"𩠎","𩞦":"𩠏","𩞯":"䭪","𩟐":"𩠅","𩟗":"𫗚","𩠴":"𩠠","𩡣":"𩡖","𩡺":"𩧦","𩢡":"𩧬","𩢴":"𩧵","𩢸":"𩧳","𩢾":"𩧮","𩣏":"𩧶","𩣑":"䯃","𩣫":"𩧸","𩣵":"𩧻","𩣺":"𩧼","𩤊":"𩧩","𩤙":"𩨆","𩤲":"𩨉","𩤸":"𩨅","𩥄":"𩨋","𩥇":"𩨍","𩥉":"𩧱","𩥑":"𩨌","𩦠":"𫠌","𩧆":"𩨐","𩭙":"𩬣","𩯁":"𫙂","𩯳":"𩯒","𩰀":"𩬤","𩰹":"𩰰","𩳤":"𩲒","𩴵":"𩴌","𩵦":"𫠏","𩵩":"𩽺","𩵹":"𩽻","𩶁":"𫚎","𩶘":"䲞","𩶰":"𩽿","𩶱":"𩽽","𩷰":"𩾄","𩸃":"𩾅","𩸄":"𫚝","𩸡":"𫚟","𩸦":"𩾆","𩻗":"𫚨","𩻬":"𫚩","𩻮":"𫚘","𩼶":"𫚬","𩽇":"𩾎","𩿅":"𫠖","𩿤":"𫛠","𩿪":"𪉄","𪀖":"𫛧","𪀦":"𪉅","𪀾":"𪉋","𪁈":"𪉉","𪁖":"𪉌","𪂆":"𪉎","𪃍":"𪉐","𪃏":"𪉏","𪃒":"𫛻","𪃧":"𫛹","𪄆":"𪉔","𪄕":"𪉒","𪅂":"𫜂","𪆷":"𫛾","𪇳":"𪉕","𪈼":"𱊜","𪉸":"𫜊","𪋿":"𫧮","𪌭":"𫜓","𪍠":"𫜕","𪓰":"𫜟","𪔵":"𪔭","𪘀":"𪚏","𪘯":"𪚐","𪙏":"𫜯","𪟖":"𠛾","𪷓":"𣶭","𫒡":"𫓷","𫜦":"𫜫"};function De(e,t){var i,r,n,o,s="";if(o=t?Se:Me,"string"!=typeof e)return e;for(i=0;i13312&&n<40899||n>63744&&n<64106)){s+=r;continue}let t=o[r];s+=t||r}return s}var ke=function(e){return De(e,!0)},Ae=function(e){return De(e,!1)};let Ee=["章","节","回","節","卷","部","輯","辑","話","集","话","篇"," "," "],Ie=[],Ne=["CHAPTER","Chapter","序章","前言","声明","写在前面的话","后记","楔子","后序","章节目录","尾声","聲明","寫在前面的話","後記","後序","章節目錄","尾聲"],Re=[" "," ","、","·",".",":",":"];const Oe=e=>e.trim().replace(/(\r\n|\n|\r|\t)/gm,"").substring(0,100).split("").filter((e=>"="!==e&&"-"!==e&&"_"!==e&&"+"!==e)).join(""),Pe=(e,t="")=>t?new RegExp(t).test(e):e&&e.length<40&&!Be(e)&&(Fe(e)||e.startsWith("第")&&je(e)||e.startsWith("卷")&&We(e)||e.indexOf("第")>-1&&e.lastIndexOf("第")<7&&je(e.substr(e.indexOf("第")))||He(e)),Be=e=>Ie.filter((t=>e.indexOf(t)>-1)).length>0,Fe=e=>Ne.filter((t=>e.startsWith(t))).length>0,He=e=>Re.filter((t=>e.indexOf(t)>-1&&(/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341\u767e\u5343\u4e07\u842c\u96f6]+$/.test(e.substring(0,e.indexOf(t)))||/^\d+$/.test(e.substring(0,e.indexOf(t)))))).length>0,je=e=>{let t=!1;for(let i=0;i!(!/^[\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 $e=!1;const Ue=e=>Array.from(e.querySelectorAll("h1,h2,h3,h4,h5,h6,p,div,ul,dl,ol,li,dt,dd,pre,blockquote,address,kookitmarker")),ze=(e,t,i,r,n,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 c=e.clientWidth;if("mimical"===t&&"yes"!==s){let e=document.getElementById("book");e&&(e.style.display="block",i>0?o():i<0&&n(),setTimeout((()=>{if(!e)return{};e.style.display="none"}),1e3))}const h=r.body.scrollLeft,d=c+l;if(i>0){const e=Math.round(h/d),i=Math.max(0,e-1)*d;r.body.scrollTo({top:0,left:i,behavior:"sliding"===t&&"yes"!==s?"smooth":"auto"})}else if(i<0){const e=(Math.round(h/d)+1)*d;r.body.scrollTo({top:0,left:e,behavior:"sliding"===t&&"yes"!==s?"smooth":"auto"})}})),qe=(t,i,r,n)=>{let o=e.findLastIndex(r,(e=>e.href===i||e.href&&e.href.includes("#")&&e.href.includes(i)));return i&&e.findLastIndex(r,(e=>e.href===i||e.href&&e.href.includes("#")&&e.href.includes(i)))>-1||(o=t),"prev"===n?Object.assign(Object.assign({},r[o-1]),{index:o-1}):Object.assign(Object.assign({},r[o+1]),{index:o+1})},Ve=(e,t,i,r,n,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 c=qe(t,l,i,"prev");c&&(o.text="prevChapter",o.page="",yield Xe(c.index,c.label,c.href,i,e,r,n,o,s,a))})),Xe=(t,i,r,n,o,s,a,l,h,u)=>c(void 0,void 0,void 0,(function*(){if(h.body.innerHTML="",u.height="0px",h.body.scrollTo(0,0),i&&!t||n[t]&&n[t].label&&i&&i!==n[t].label&&-1===r.indexOf("#")){let r=e.findLastIndex(n,{label:i});-1!==r&&(t=r)}if(-1===t&&r.indexOf("#")>-1){let i=r.split("#")[0],o=e.findLastIndex(n,(e=>e.href===i||e.href&&e.href.includes("#")&&e.href.includes(i)));-1!==o&&(t=o)}(-1===t||t>n.length-1)&&(t=0);let f=yield d(n[t].text,!1),p=function(e){const t=e.match(/]*)>/i);if(!t)return{};const i=t[1],r={},n=/([\w-]+)\s*=\s*(?:"([^"]*)"|'([^']*)'|([^>\s]+))/g;let o;for(;null!==(o=n.exec(i));){const e=o[2]||o[3]||o[4]||"";r[o[1]]=e}return r}(f);h.body.innerHTML=f,p.style?h.body.setAttribute("style",h.body.getAttribute("style")||""):p.class?h.body.setAttribute("class",p.class):p.id?h.body.setAttribute("id",p.id):p.class?p.id||h.body.removeAttribute("id"):h.body.removeAttribute("class"),yield Je(h),l.chapterTitle=i,l.chapterHref=r,l.chapterDocIndex=t+"",l.percentage=n.slice(0,t).map((e=>e.text&&e.text.size||1)).reduce(((e,t)=>e+t),0)/n.map((e=>e.text&&e.text.size||1)).reduce(((e,t)=>e+t),0)+"",l.text="",yield((e,t,i,r,n)=>c(void 0,void 0,void 0,(function*(){if(yield Promise.race([Promise.all(Array.from([...n.images,...n.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")}),3e3)}))]),yield v(e,t,i,n),y(n),"scroll"!==t){if(r.height=e.clientHeight+"px","double"===t){let t=Math.floor(e.clientWidth/12),i=t%2==0?t:t-1,r=(e.clientWidth+i)/2;if((n.body.scrollWidth-n.body.clientWidth)/r%2==1){let e=document.createElement("div");e.setAttribute("style","height: "+n.body.clientHeight+"px; display: inline-block; width: "+(r-i)+"px"),n.body.appendChild(e)}}}else r.height=n.body.scrollHeight+"px",r.height=n.body.scrollHeight+300+"px"})))(o,s,a,u,h),yield Ge(o,s,"","","","",h)}));const Je=e=>c(void 0,void 0,void 0,(function*(){let t=Array.from(e.getElementsByTagName("link"));if(0===t.length)return;let i=[];for(let e=0;e{r.addEventListener("load",e)})))}try{yield Promise.race([Promise.all(i),new Promise(((e,t)=>{setTimeout((()=>{e("css load timeout")}),10)}))])}catch(e){console.error(e)}})),Ge=(e,t,i,r,n,o,s)=>c(void 0,void 0,void 0,(function*(){let a=0,l=s.body;if(o&&"scroll"!==t){let t=Math.floor(e.clientWidth/12),i=t%2==0?t:t-1;a=((c=getComputedStyle(e).width,parseFloat(c.substring(0,c.length-2)))+i)*(parseInt(o)-1)}else if(i){let n=Ue(s.body).filter(((e,t)=>Oe(e.textContent)&&(Oe(e.textContent)===Oe(i)||Oe(e.textContent)===Ae(Oe(i))||Oe(e.textContent)===ke(Oe(i)))&&(Math.abs(t-parseInt(r))<2||"search"===r||"ignore"===r||"next"===r)));if(0===n.length)return;l=_e(n[0],e,t),a=l?h(l.offsetLeft)-h(l.marginLeft||parseFloat(getComputedStyle(l).marginLeft)):"prevChapter"===i?s.body.scrollWidth:0}else if(n&&n.indexOf("#")>-1){let i=CSS.escape(n.split("#").reverse()[0]);if(!s.body.querySelector("#"+i))return;l=_e(s.body.querySelector("#"+i)||s.body,e,t),a=l?h(l.offsetLeft)-h(l.marginLeft||parseFloat(getComputedStyle(l).marginLeft)):0}var c;"scroll"!==t?s.body.scrollTo(a,0):l.scrollIntoView()})),_e=(e,t,i)=>{let r=Math.floor(t.clientWidth/12),n=r%2==0?r:r-1,o=h(e.offsetLeft)-h(e.marginLeft||parseFloat(getComputedStyle(e).marginLeft));return"scroll"===i||"scroll"!==i&&Ye(parseInt(o+""),(t.clientWidth+n)/2)?e:e.parentElement?_e(e.parentElement,t,i):e},Ye=(e,t)=>{for(let i=e-10;i<=e+10;i++)if(i%t==0)return!0;return!1},Ze=(e,t,i,r,n,o,s)=>c(void 0,void 0,void 0,(function*(){var a,l;if($e)return;let c=Ue(o.body),h=c.filter((i=>nt(e,i,t)&&(i.textContent||"").trim())),d=h[0];s&&(d=s);let u=0;for(let i=0;ie.text&&e.text.size||1)).reduce(((e,t)=>e+t),0);n.percentage=r.slice(0,parseInt(n.chapterDocIndex)).map((e=>e.text&&e.text.size||1)).reduce(((e,t)=>e+t),0)/e+((null===(a=r.find(((e,t)=>t===parseInt(n.chapterDocIndex))))||void 0===a?void 0:a.text.size)||0)/e*(u/c.length)+""}else n.page=(null===(l=yield m(t,o,e))||void 0===l?void 0:l.currentPage)+"";$e=!0,setTimeout((()=>{$e=!1}),100)})),Ke=(e,t,i)=>{let r=Math.floor(t.clientWidth/12),n=r%2==0?r:r-1;return Math.abs(e.offsetLeft-_e(e,t,i).offsetLeft)>(t.clientWidth+n)/2},Qe=(t,i,r)=>{let n=r.chapterHref||"",o=n.lastIndexOf("#"),s="";s=-1===o?n:n.substring(0,o);for(let n=0;n-1&&(r.chapterHref=t,r.chapterTitle=i[n].label)}}},et=(e,t,i,r,n,o,s,a)=>c(void 0,void 0,void 0,(function*(){let t=parseInt(o.chapterDocIndex||"0"),l=o.chapterHref||"";if(t>=i.length-1)return void(o.percentage="1");let c=qe(t,l,i,"next");c&&(o.page="",yield Xe(c.index,c.label,c.href,i,e,r,n,o,s,a))})),tt=(e,t,i)=>{let r=Ue(i.body).filter((e=>!rt(e))),n=r.filter((i=>nt(e,i,t)&&(i.textContent||"").trim()));return n=n.filter((e=>{if(!(e.textContent||"").trim())return!1;let t=e.parentElement;for(;t&&t!==i.body;){if(r.includes(t))return!1;t=t.parentElement}return!0})),n.filter((e=>{var t;return"img"!==e.textContent&&!(null===(t=e.textContent)||void 0===t?void 0:t.startsWith("img"))})).map((e=>e.textContent))},it=(e,t,i)=>{if(i.querySelectorAll('span[data-highlight="true"]').forEach((e=>{const t=e.parentNode;t&&t.replaceChild(i.createTextNode(e.textContent||""),e)})),!e.trim())return;let r=Array.from(i.body.querySelectorAll("span, p, div, h1, h2, h3, h4, h5, h6 ")).filter((t=>{const i=t.textContent||"";return i.trim()&&i.indexOf(e)>-1}));if(r.length>0){const n=r=>{var n;if(r.nodeType===Node.TEXT_NODE){const o=r.textContent||"",s=o.indexOf(e);if(s>-1){const a=o.substring(0,s),l=o.substring(s+e.length),c=i.createElement("span");c.setAttribute("style",t),c.setAttribute("data-highlight","true"),c.textContent=e;const h=i.createDocumentFragment();return a&&h.appendChild(i.createTextNode(a)),h.appendChild(c),l&&h.appendChild(i.createTextNode(l)),null===(n=r.parentNode)||void 0===n||n.replaceChild(h,r),!0}}return!1},o=e=>{if(n(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 i=!1;var r=/^(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=>r.test(e.nodeName))).length<3)return!1;for(var n=0;n{var r=!1,n=t.getBoundingClientRect();if("scroll"!==i&&t.textContent&&t.textContent.trim()){let t=n.left;r=t>-10&&t<=e.clientWidth}else if("scroll"===i&&t.textContent&&t.textContent.trim()){let t=n.top;r=t>=e.scrollTop&&t<=e.scrollTop+e.clientHeight}else if("scroll"!==i){let t=n.left;r=t>=0&&t<=e.clientWidth}return r};class ot{constructor(){this.callbacks={},this.callbacks.base={}}on(e,t){const i=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 r=i.resolveName(e);i.callbacks[r.namespace]instanceof Object||(i.callbacks[r.namespace]={}),i.callbacks[r.namespace][r.value]instanceof Array||(i.callbacks[r.namespace][r.value]=[]),i.callbacks[r.namespace][r.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 i=t.resolveName(e);if("base"!==i.namespace&&""===i.value)delete t.callbacks[i.namespace];else if("base"===i.namespace)for(const e in t.callbacks)t.callbacks[e]instanceof Object&&t.callbacks[e][i.value]instanceof Array&&(delete t.callbacks[e][i.value],0===Object.keys(t.callbacks[e]).length&&delete t.callbacks[e]);else t.callbacks[i.namespace]instanceof Object&&t.callbacks[i.namespace][i.value]instanceof Array&&(delete t.callbacks[i.namespace][i.value],0===Object.keys(t.callbacks[i.namespace]).length&&delete t.callbacks[i.namespace])})),this}trigger(e,t=[]){if(void 0===e||""===e)return console.warn("wrong name"),!1;const i=this;const r=t instanceof Array?t:[];let n=this.resolveNames(e);n=this.resolveName(n[0]),setTimeout((()=>{if("base"===n.namespace)for(const e in i.callbacks){if(i.callbacks[e]instanceof Object&&i.callbacks[e][n.value]instanceof Array&&i.callbacks[e][n.value])i.callbacks[e][n.value].forEach((function(e){e.apply(i,r)}));else if(this.callbacks[n.namespace]instanceof Object&&i.callbacks[n.namespace][n.value]){if(""===n.value)return console.warn("wrong name"),this;i.callbacks[n.namespace][n.value].forEach((function(e){e.apply(i,r)}))}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={},i=e.split(".");return t.original=e,t.value=i[0],t.namespace="base",i.length>1&&""!==i[1]&&(t.namespace=i[1]),t}}const st=Node.ELEMENT_NODE,at=Node.TEXT_NODE,lt=Node.CDATA_SECTION_NODE;function ct(e,t,i){let r,n,o,s=0,a=0,l=!0;for(n=0;nthis.compare(e,t)))}static compare(e,t){let i=e.get(),r=t.get();if(e.isRange||t.isRange){if(e.isRange&&t.isRange){const e=this.comparePath(i.from,r.from);return e||this.comparePath(i.to,r.to)}return e.isRange&&(i=i.from),t.isRange&&(r=r.from),this.comparePath(i,r)}return this.comparePath(i,r)}static compareParts(e,t){const i=Math.max(e.length,t.length);let r,n,o,s;for(r=0;r=i)return"img"===a.tagName.toLowerCase()&&r?{node:a,offset:r}:{node:a,offset:0}}else{if(l+=1,l===i)return"img"===a.tagName.toLowerCase()&&r?{node:a,offset:r}:{node:a,offset:0};if(l>i)return o?{node:o,offset:this.trueLength(e,o.textContent)}:{node:t,offset:0}}o=a;break;case at:case lt:if(0!==l&&l%2!=0||(l+=1),l===i){const t=this.trueLength(e,a.textContent);if(!(r>=t))return{node:a,offset:r};r-=t}o=a;break;default:continue}if(i>l){const i={relativeToNode:"after",offset:0};return i.node=o||t,this.isTextNode(i.node)&&(i.offset=this.trueLength(e,i.node.textContent.length)),i}}isTextNode(e){return!!e&&(e.nodeType===at||e.nodeType===lt)}correctOffset(e,t,i,r){let n,o=t;if("string"==typeof r?n=this.decodeEntities(e,r):(r.pre=this.decodeEntities(e,r.pre),r.post=this.decodeEntities(e,r.post),n=r.pre+"."+r.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 c="",h=0;for(;this.isTextNode(o)&&(a=this.decodeEntities(e,o.textContent),l[h]=a.length,c+=a,o.nextSibling);)o=o.nextSibling,h++;const d=r.pre?r.pre.length:0,u=function(e,t,i){i=i||0;const r=[];let n,o=0;do{if(n=e.match(t),!n)break;r.push(n.index+i),o+=n.index+n.length,e=e.slice(n.index+n.length)}while(o=l[h];){if(f-=l[h],f<0)return{node:t,offset:i};const e=[];if(!o.nextSibling||h+1>=e.length)return{node:t,offset:i};h++,o=o.nextSibling}return{node:o,offset:f}}resolveNode(e,t,i,r){if(r=Object.assign({},r||{}),!i)throw new Error("Missing DOM argument");let n;if(0===e&&(n=i.querySelector("package")),!n)for(const e of i.childNodes)if(e.nodeType===st){n=e;break}if(n=i,!n)throw new Error("Document incompatible with CFIs");let o,s,a=n,l=0;for(o=t.length-1;o>=0;o--)if(s=t[o],!r.ignoreIDs&&s.nodeID&&(a=i.getElementById(s.nodeID))){l=o+1;break}a||(a=n);let c={node:a,offset:0};for(o=l;othis.parts.length-2)throw new Error("index is out of bounds");const r=this.parts[e];if(!r)throw new Error("Missing CFI part for index: "+e);let n=this.resolveNode(e,r,t,i).node;const o=n.tagName.toLowerCase();if("itemref"===o&&"spine"===n.parentNode.tagName.toLowerCase()){const e=n.getAttribute("idref");if(!e)throw new Error("Referenced node had not 'idref' attribute");if(n=t.getElementById(e),!n)throw new Error("Specified node is missing from manifest");const i=n.getAttribute("href");if(!i)throw new Error("Manifest item is missing href attribute");return i}if("iframe"===o||"embed"===o){const e=n.getAttribute("src");if(!e)throw new Error(o+" element is missing 'src' attribute");return e}if("object"===o){const e=n.getAttribute("data");if(!e)throw new Error(o+" element is missing 'data' attribute");return e}if("image"===o||"use"===o){const e=n.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 i=t.length-1,r=t[i];if(!r)throw new Error("Missing CFI part for index: "+i);const n=this.resolveNode(i,r,e),o=this.deepClone(r[r.length-1]);return delete o.nodeIndex,o.offset||delete n.offset,Object.assign(Object.assign({},o),n)}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(),i=this.getFrom();"before"===i.relativeToNode?t.setStartBefore(i.node,i.offset):"after"===i.relativeToNode?t.setStartAfter(i.node,i.offset):t.setStart(i.node,i.offset);const r=this.getTo();return"before"===r.relativeToNode?t.setEndBefore(r.node,r.offset):"after"===r.relativeToNode?t.setEndAfter(r.node,r.offset):t.setEnd(r.node,r.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"],gt=["#FF0000","#000080","#0000FF","#2EFF2E"],mt=["#fac106","#ebe702","#0be603","#0493e6"],yt=(e,i,r,n,o,s)=>{var a,l;t.init();let c=ft[i],h=s.contentWindow||(null===(a=s.contentDocument)||void 0===a?void 0:a.defaultView),d=e;d=[d],t.getSelection(s).restoreCharacterRanges(o,d);let u=o.getSelection();if(!u)return;let f=u.getRangeAt(0);for(var p=Ct(f),g=0;g{let a=ft[t],l=s.querySelector(".noteLayer"),c=s.querySelector("#koodoPDFLayer");var h=n.getViewport({scale:o});for(let t=0;t-1?"background-color: ":"border-bottom: ")+(a.indexOf("color")>-1?mt[a.split("-")[1]]:`2px solid ${gt[a.split("-")[1]]}`)+"; left:"+(Math.min(d[0],d[2])+parseFloat(getComputedStyle(c).marginLeft))+"px; top:"+Math.min(d[1],d[3])+"px;width:"+Math.abs(d[0]-d[2])+"px; height:"+Math.abs(d[1]-d[3])+"px; z-index: 1; cursor: pointer; opacity: "+(a.indexOf("color")>-1?.3:1)+";"),null==u||u.setAttribute("data-key",i),null==u||u.setAttribute("class","kookit-note"),null==u||u.addEventListener("click",(e=>{e&&e.target&&e.target.dataset&&e.target.dataset.key&&r(e)})),u.ontouchend=e=>{window.isSwiping||(e&&e.target&&e.target.dataset&&e.target.dataset.key&&r(e),e.preventDefault(),e.stopPropagation())},l.appendChild(u))}}},vt=e=>{const t=e.querySelectorAll(".kookit-note");for(let e=0;e{const o=xt(e.getClientRects());for(let e=0;e-1?"background-color: ":"border-bottom: ")+(t.indexOf("color")>-1?pt[t.split("-")[1]]+";opacity: 1":`2px solid ${gt[t.split("-")[1]]}`)+";left:"+(Math.min(l.left,l.x)+n.body.scrollLeft)+"px; top:"+(Math.min(l.top,l.y)+n.body.scrollTop)+"px;width:"+l.width+"px; height:"+l.height+"px; z-index:-1;opacity: "+(t.indexOf("color")>-1?.8:1)+"; cursor: pointer;"),s.setAttribute("class"," kookit-note"),s.setAttribute("data-key",i),n.body.appendChild(s);var a=document.createElement("span");null==a||a.setAttribute("style","position: absolute;left:"+(Math.min(l.left,l.x)+n.body.scrollLeft)+"px; top:"+(Math.min(l.top,l.y)+n.body.scrollTop)+"px;width:"+l.width+"px; height:"+l.height+"px; z-index:1;"),a.setAttribute("class"," kookit-note"),a.setAttribute("data-key",i),a.addEventListener("click",(e=>{e&&e.target&&e.target.dataset&&e.target.dataset.key&&r(e)})),a.ontouchend=e=>{window.isSwiping||(e&&e.target&&e.target.dataset&&e.target.dataset.key&&r(e),e.preventDefault(),e.stopPropagation())},n.body.appendChild(a)}},xt=e=>{let t=[];for(let i=0;i{var t=e.commonAncestorContainer,i=new Array(0),r=new Array(0);if(e.startContainer!==t)for(let r=e.startContainer;r!==t;r=r.parentNode)i.push(r);if(i.length>0)for(let t=0;t0)for(let t=0;t0&&o.length>0))return[e];var c=document.createRange();return c.setStartAfter(i[i.length-1]),c.setEndBefore(o[o.length-1]),r.push(c),r.concat(s)};const Tt=(e,t,i)=>{!function(e){let t=document.getElementById("book");t&&t.remove();const i=document.createElement("div");i.id="book";const r=document.createElement("canvas");r.id="pageflip-canvas";const n=document.createElement("div");n.id="pages";for(let t=0;t{u+1{u-1>=0&&(m[u-1].target=1,u=Math.max(u-1,0))},mouseDownHandler:C,mouseUpHandler:T,mouseMoveHandler:x}}}function x(e){if(!y)return;const t=e.touches[0],i=t.screenX,r=t.screenY;g.x=i-y.offsetLeft-o/2,g.y=r-y.offsetTop}function C(e){const t=e.touches[0];c=t.screenX,t.screenX=0?m[u-1].dragging=!0:t.screenX>window.screen.width/2&&u+1a/4*1&&h-c>0?(m[i].target=1,u=Math.max(u-1,0)):i===u?m[i].target=1:i===u-1&&(m[i].target=-1)),m[i].dragging=!1}function L(e){var r=1-Math.abs(e.progress),n=.5*a*(1-e.progress),s=a*e.progress+n,c=20*r,h=.5*a*Math.max(Math.min(1-e.progress,.5),0),u=.5*a*Math.max(Math.min(r,.5),0),f=.5*a*Math.max(Math.min(r,.5),0);e.page.style.width=Math.max(s,0)+"px",p.save(),p.translate(0+o/2,d+0),p.strokeStyle=("no"===t?"rgba(0,0,0,":"rgba(255,255,255,")+.05*r+")",p.lineWidth=30*r,p.beginPath(),p.moveTo(s-n,.5*-c),p.lineTo(s-n,l+.5*c),p.stroke();var g=p.createLinearGradient(s,0,s+u,0);g.addColorStop(0,("no"===t?"rgba(0,0,0,":"rgba(255,255,255,")+.2*r+")"),g.addColorStop(.8,("no"===t?"rgba(0,0,0,":"rgba(255,255,255,")+"0.0)"),p.fillStyle=g,p.beginPath(),p.moveTo(s,0),p.lineTo(s+u,0),p.lineTo(s+u,l),p.lineTo(s,l),p.fill();var m=p.createLinearGradient(s-n-f,0,s-n,0);m.addColorStop(0,("no"===t?"rgba(0,0,0,":"rgba(255,255,255,")+"0.0)"),m.addColorStop(1,("no"===t?"rgba(0,0,0,":"rgba(255,255,255,")+.15*+r+")"),p.fillStyle=m,p.beginPath(),p.moveTo(s-n-f,0),p.lineTo(s-n,0),p.lineTo(s-n,l),p.lineTo(s-n-f,l),p.fill();var y=p.createLinearGradient(s-h,0,s,0);i?(y.addColorStop(.35,i),y.addColorStop(.73,i),y.addColorStop(.9,i),y.addColorStop(1,i)):"no"===t?(y.addColorStop(.35,"#fafafa"),y.addColorStop(.73,"#eeeeee"),y.addColorStop(.9,"#fafafa"),y.addColorStop(1,"#e2e2e2")):(y.addColorStop(.35,"#333"),y.addColorStop(.73,"#444"),y.addColorStop(.9,"#333"),y.addColorStop(1,"#444")),p.fillStyle=y,p.strokeStyle=("no"===t?"rgba(0,0,0,":"rgba(255,255,255,")+"0.06)",p.lineWidth=.5,p.beginPath(),p.moveTo(s,0),p.lineTo(s,l),p.quadraticCurveTo(s,l+2*c,s-n,l+c),p.lineTo(s-n,-c),p.quadraticCurveTo(s,2*-c,s,0),p.fill(),p.stroke(),p.restore()}},Lt=(e,t,i,r,n)=>c(void 0,void 0,void 0,(function*(){let{width:o,height:s}=yield i[r].text.getDimension(),a=n.body.clientWidth,l=e.clientHeight,c=Math.min(a/o,l/s);return"scroll"===t&&(c=a/o),c})),St=(e,t)=>{var i;const r=t.getElementById("pdf-container-"+e);if(!r)return;let n=document.createElement("iframe");n.style.position="absolute",n.style.top="0",n.style.left="0",n.style.width="100%",n.style.height="100%",n.style.border="0",n.style.margin="0",n.style.padding="0",n.style.fontSize="100%",n.style.font="inherit",n.scrolling="no",n.tabIndex=0,n.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}",r.appendChild(n),null===(i=n.contentDocument)||void 0===i||i.head.appendChild(o),n},Mt=(e,t,i)=>c(void 0,void 0,void 0,(function*(){let r=i.getElementById("pdf-container-"+e);if(r){if("scroll"!==t){let e=r?h(r.offsetLeft)-h(r.marginLeft||parseFloat(getComputedStyle(r).marginLeft)):0;i.body.scrollTo(e,0)}else r.scrollIntoView();r.scrollIntoView()}})),Dt=(e,t,i,r)=>{var n=!1,o=t.getBoundingClientRect();if("scroll"!==i){let e=o.left;n=e>-10&&e<=r.body.clientWidth}else{let t=o.top,i=o.bottom;n=t-10>=e.scrollTop&&t+10<=e.scrollTop+e.clientHeight||i-10>=e.scrollTop&&i+10<=e.scrollTop+e.clientHeight||t+10<=e.scrollTop&&i-10>=e.scrollTop+e.clientHeight}return n},kt=(e,t,i)=>{if(i.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 r=i.querySelectorAll("p,span"),n=Array.from(r).filter(((t,i)=>(t.textContent||"").trim()&&t.textContent===e));n.length>0&&(n[0].setAttribute("style",(n[0].getAttribute("style")||"")+t),n[0].setAttribute("data-highlight","true"))},At=(e,t,i,r,n,o,s,a,l)=>c(void 0,void 0,void 0,(function*(){let e=Math.floor(r.body.clientWidth/12),c=e%2==0?e:e-1;const h=r.body.clientWidth;if("mimical"===t&&"yes"!==s){let e=document.getElementById("book");e&&(e.style.display="block",i>0?o():i<0&&n(),setTimeout((()=>{if(!e)return{};e.style.display="none"}),1e3))}if(i>0)if("single"===l){let e=r.querySelector("#pdf-container-"+(a-1));e&&e.scrollIntoView()}else r.body.scrollBy(-(h+c)/2,0);else if(i<0)if("single"===l){let e=r.querySelector("#pdf-container-"+(a+1));e&&e.scrollIntoView()}else r.body.scrollBy((h+c)/2,0)})),Et=e=>c(void 0,void 0,void 0,(function*(){const t=e.getViewport({scale:1}),i=document.createElement("canvas"),r=i.getContext("2d");i.width=800,i.height=800/t.width*t.height;const n={canvasContext:r,viewport:e.getViewport({scale:800/t.width})};yield e.render(n).promise;const o=i.toDataURL("image/jpeg",.8),s=function(e){const t=e.length-23;return Math.ceil(.75*t)}(o);return{imageURL:o,size:s}}));function It(e){return c(this,void 0,void 0,(function*(){try{const t=yield fetch(e),i=yield t.blob();return yield new Promise(((e,t)=>{const r=new FileReader;r.onloadend=()=>e(r.result),r.onerror=t,r.readAsDataURL(i)}))}catch(e){throw console.error("转换失败:",e),e}}))}function Nt(){return window.visualViewport?window.visualViewport.offsetLeft:window.pageXOffset||document.documentElement.scrollLeft||0}function Rt(){return window.visualViewport?window.visualViewport.offsetTop:window.pageYOffset||document.documentElement.scrollTop||0}const Ot=(e,t,i)=>c(void 0,void 0,void 0,(function*(){const r=e.target;if(!r)return;const n=Pt(r);if(n){e.preventDefault(),e.stopPropagation();let r=n.getAttribute("href");if(r&&r.startsWith("kindle:")){let e=i.resolveChapter(r);if(e)return yield i.goToChapter(e.index,e.href,e.label),!0;r="#"+(yield i.resolveHref(r)).id}let o="";if(r&&r.indexOf("#")>-1){let n=r.split("#").reverse()[0],s=t.body.querySelector("#"+n);if(!s){if(r.indexOf("filepos")>-1){let e=i.resolveChapter(r);return yield i.goToChapter(e.index,e.href,e.label),!0}if(0!==r.indexOf("#")){for(;r.startsWith(".");)r=r.substring(1);let e=i.resolveChapter(r);e&&(yield i.goToChapter(e.index,e.href,e.label))}if(s=t.body.querySelector("#"+CSS.escape(n)),!s)return!1;yield i.goToNode(t.body.querySelector("#"+CSS.escape(n)))}if((s.textContent.trim()===e.target.textContent.trim()||!s.textContent.trim())&&s.parentElement){if("BODY"===s.parentElement.tagName)return!1;s=s.parentElement}o=s.textContent}else if(r){let e=i.resolveChapter(r);e&&(yield i.goToChapter(e.index,e.href,e.label))}return window.ReactNativeWebView.postMessage(JSON.stringify({event:"link-clicked",href:r,footnote:o})),!1}}));function Pt(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 Bt(e,t,i){const r=3*t+e+1;return i.layout.A.area.includes(r)?i.touchControlA:i.layout.B.area.includes(r)?i.touchControlB:i.layout.C.area.includes(r)?i.touchControlC:"right"}const Ft=(e,i,r,n,o,s,a,l)=>{var h;let d=i.contentWindow||(null===(h=i.contentDocument)||void 0===h?void 0:h.defaultView),u=l.getDocument(),f=0,p=0,g=0,m=0;const y=30;let b=Math.floor(r.clientWidth/12),v=b%2==0?b:b-1,w=r.clientWidth+v,x=!1,C=0;e.addEventListener("touchend",(function(t){window.isSwiping=!1,window.isTouchNavigation=!0,setTimeout((()=>{window.isTouchNavigation=!1}),4e3);let i=(new Date).getTime();if(i-m<=300)return void t.preventDefault();m=i;const c=t.changedTouches[0],h=Date.now();let b=c.screenX,C=c.screenY;const L=h-f,S=b-p,M=C-g;if(x&&"mimical"===o&&"scroll"!==n)return x=!1,l.mouseUpHandler(t),c.screenXwindow.screen.width/4*1&&b-p>0&&l.prev(),void setTimeout((()=>{let e=document.getElementById("book");e&&(e.style.display="none")}),400);if(x&&"sliding"===o&&"scroll"!==n){let N="PDF"===s?u:e;if(window.scrollAnimationId&&cancelAnimationFrame(window.scrollAnimationId),Math.abs(N.body.scrollWidth-N.body.scrollLeft-r.clientWidth)<10)return T&&clearTimeout(T),void(T=setTimeout((()=>{l.next()}),300));if(0===N.body.scrollLeft)return T&&clearTimeout(T),void(T=setTimeout((()=>{l.prev()}),300));N.body.style.transform="";let R,O=N.body.scrollLeft;const P=Math.round(O/w),B=Math.abs(S)/window.screen.width,F=.1;R=S>0&&B>F?(P-1)*w:S<0&&B>F?(P+1)*w:P*w,R=Math.max(0,Math.min(R,N.body.scrollWidth-w)),N.body.scrollWidth-R1-Math.pow(1-e,3);function z(e){const t=e-H;if(t>=$)return N.body.scrollLeft=R,N.body.style.willChange="auto",l.record(),void(x=!1);const i=U(t/$),r=j+W*i;N.body.scrollLeft=r,window.scrollAnimationId=requestAnimationFrame(z)}window.scrollAnimationId=requestAnimationFrame(z)}else{var D=d.getSelection().toString(),k=Math.abs(S)>=y||Math.abs(M)>=y;if(!D||"PDF"===s&&("PDF"!==s||k)){if(L>500){const q=t.target;if(!q)return;if("IMG"===q.tagName||"image"===q.tagName){const V=q.src||q.getAttribute("xlink:href");return void(V.startsWith("blob:")&&It(V).then((e=>{window.ReactNativeWebView.postMessage(JSON.stringify({event:"view-image",imgSrc:e}))})))}}if(L<500&&Math.abs(S)=y||Math.abs(M)>=y)&&(window.ReactNativeWebView.postMessage(JSON.stringify({event:"swipe"})),"scroll"===n&&Math.abs(r.scrollHeight-r.scrollTop-r.clientHeight)<10&&window.ReactNativeWebView.postMessage(JSON.stringify({event:"scroll-bottom"})),"scroll"===n&&0===r.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){f=Date.now();const t=e.target;if(!t)return;if(Pt(t))return;e.touches.length>1&&e.preventDefault();const i=e.touches[0];p=i.screenX,g=i.screenY}),!1),e.addEventListener("touchmove",(function(t){if(!x&&Math.abs(t.touches[0].screenX-p)<=10)return;if(t.preventDefault(),window.visualViewport.scale>1&&"PDF"===s)return void t.preventDefault();const i=t.touches[0],r=i.screenX,a=i.screenY,c=r-p,h=a-g;if(!x&&Math.abs(c)>Math.abs(h)&&Math.abs(c)>10){if(x=!0,C=r,e.body.style.transform="translateZ(0)","mimical"===o&&"scroll"!==n){window.isSwiping=!0;let e=document.getElementById("book");e&&(e.style.display="block",l.mouseDownHandler(t))}}else if(x&&"mimical"===o&&"scroll"!==n&&l.mouseMoveHandler(t),x&&"sliding"===o&&"scroll"!==n){window.isSwiping=!0;let t="PDF"===s?u:e;const i=r-C,n=t.body.scrollLeft;t.body.scrollLeft=n-i,C=r,requestAnimationFrame((()=>{}))}}),!1),e.addEventListener("click",(t=>{Ot(t,e,l)}),!0);let T=null,L=0,S=0,M=e=>c(void 0,void 0,void 0,(function*(){var i,n;const o=d.getSelection().toString().trim();if(o){var a=d.getSelection().getRangeAt(0);let u=l.getPageSize();var c=a.getBoundingClientRect();if("PDF"===s){let e=a.getClientRects();if(e.length>0){e=Array.from(e).filter((e=>Math.abs(e.height-u.sectionHeight)>10&&Math.abs(e.width-u.sectionWidth)>10&&e.height>0&&e.width>0));let t=1/0,i=1/0,r=-1/0,n=-1/0;for(let o=0;o{1===S&&M(e)}),600):M(e),e.preventDefault(),e.stopPropagation(),!1;{const e=t.src||t.getAttribute("xlink:href");e.startsWith("blob:")&&It(e).then((e=>{window.ReactNativeWebView.postMessage(JSON.stringify({event:"view-image",imgSrc:e}))}))}}};let D=0,k=0,A=0;e.addEventListener("selectstart",(t=>{S=0,L=Date.now(),k=Nt(),A=Rt(),"scroll"!==n&&(D=e.body.scrollLeft)}),!1);let E=0;e.addEventListener("selectionchange",(t=>{D>0&&(e.body.scrollLeft=D),S++;const i=Date.now();i-E>=3e3&&(E=i,window.ReactNativeWebView.postMessage(JSON.stringify({event:"selection-change"})))}),!1)},Ht=(e,i,r,n,o,s,a,l)=>{var h;let d=i.contentWindow||(null===(h=i.contentDocument)||void 0===h?void 0:h.defaultView),u=l.getDocument(),f=0,p=0,g=0,m=0;let y=Math.floor(r.clientWidth/12),b=y%2==0?y:y-1,v=!1,w=0;e.addEventListener("touchend",(function(i){var h,y;return c(this,void 0,void 0,(function*(){window.isSwiping=!1,window.isTouchNavigation=!0,setTimeout((()=>{window.isTouchNavigation=!1}),4e3);let c=(new Date).getTime();if(c-m<=300)return void i.preventDefault();m=c;const w=i.changedTouches[0],C=Date.now(),T=w.screenX,L=w.screenY,S=C-f,M=T-p,D=L-g;if(v&&"mimical"===o&&"scroll"!==n)return v=!1,l.mouseUpHandler(i),Twindow.screen.width/4*1&&T-p>0&&l.prev(),void setTimeout((()=>{let e=document.getElementById("book");e&&(e.style.display="none")}),400);if(v&&"sliding"===o&&"scroll"!==n){let N="PDF"===s?u:e;if(window.scrollAnimationId&&cancelAnimationFrame(window.scrollAnimationId),Math.abs(N.body.scrollWidth-N.body.scrollLeft-r.clientWidth)<10)return x&&clearTimeout(x),void(x=setTimeout((()=>{l.next()}),300));if(0===N.body.scrollLeft)return x&&clearTimeout(x),void(x=setTimeout((()=>{l.prev()}),300));N.body.style.transform="";let R,O=r.clientWidth+b,P=N.body.scrollLeft;const B=Math.round(P/O),F=Math.abs(M)/window.screen.width,H=.1;R=M>0&&F>H?(B-1)*O:M<0&&F>H?(B+1)*O:B*O,R=Math.max(0,Math.min(R,N.body.scrollWidth-O)),N.body.scrollWidth-R1-Math.pow(1-e,3);function q(e){const t=e-j;if(t>=U)return N.body.scrollLeft=R,N.body.style.willChange="auto",l.record(),void(v=!1);const i=z(t/U),r=W+$*i;N.body.scrollLeft=r,window.scrollAnimationId=requestAnimationFrame(q)}return void(window.scrollAnimationId=requestAnimationFrame(q))}const k=d.getSelection().toString().trim();if(k){var A=d.getSelection().getRangeAt(0).getBoundingClientRect(),E=l.getPageSize(),I={top:A.top-r.scrollTop,left:A.left,width:A.width,height:A.height,screenWidth:window.innerWidth,screenHeight:window.innerHeight,sectionHeight:E.sectionHeight,sectionWidth:E.sectionWidth,gap:E.gap,scale:window.visualViewport.scale,offsetLeft:Nt(),offsetTop:Rt()};t.init();let V=null;if("PDF"===s){let X=i.target.ownerDocument,J=null===(h=null==X?void 0:X.defaultView)||void 0===h?void 0:h.frameElement,G=(null==J?void 0:J.getAttribute("id"))||"",_=G?parseInt(G.split("-").reverse()[0]):0;I.chapterDocIndex=_,V=yield l.getHightlightCoords(_);let Y=J.parentElement;Y&&(I.top=I.top+parseFloat(getComputedStyle(Y).top))}else V=yield l.getHightlightCoords();window.ReactNativeWebView.postMessage(JSON.stringify({event:"select-text",selectedText:k,position:I,range:V}))}else{if(S>500){const Z=i.target;if(!Z)return;if("IMG"===Z.tagName||"image"===Z.tagName){const K=Z.src||Z.getAttribute("xlink:href");return void(K.startsWith("blob:")&&It(K).then((e=>{window.ReactNativeWebView.postMessage(JSON.stringify({event:"view-image",imgSrc:e}))})))}}if(S<500&&Math.abs(M)<30&&Math.abs(D)<30){const Q=document.documentElement.clientWidth,ee=document.documentElement.clientHeight;let te=Math.min(Math.max(T,0),Q),ie=Math.min(Math.max(L,0),ee);if("PDF"===s&&"double"===n){let se=i.target.ownerDocument,ae=null===(y=null==se?void 0:se.defaultView)||void 0===y?void 0:y.frameElement,le=(null==ae?void 0:ae.getAttribute("id"))||"";(le?parseInt(le.split("-").reverse()[0]):0)%2==1&&(te+=Q/2)}const re=Q/3,ne=ee/3;let oe=Bt(Math.min(Math.floor(te/re),2),Math.min(Math.floor(ie/ne),2),a);window.ReactNativeWebView.postMessage(JSON.stringify({event:oe}))}else(Math.abs(M)>=30||Math.abs(D)>=30)&&(window.ReactNativeWebView.postMessage(JSON.stringify({event:"swipe"})),"scroll"===n&&Math.abs(r.scrollHeight-r.scrollTop-r.clientHeight)<10&&window.ReactNativeWebView.postMessage(JSON.stringify({event:"scroll-bottom"})),"scroll"===n&&0===r.scrollTop&&window.ReactNativeWebView.postMessage(JSON.stringify({event:"scroll-top"})))}}))}),{passive:!1}),e.addEventListener("touchstart",(function(e){const t=e.target;if(!t)return;if(Pt(t))return;const i=e.touches[0];f=Date.now(),p=i.screenX,g=i.screenY}),{passive:!1}),e.addEventListener("touchmove",(function(t){const i=d.getSelection().toString().trim();if(!v&&Math.abs(t.touches[0].screenX-p)<=10||i)return;if(window.visualViewport.scale>1&&"PDF"===s)return;const r=t.touches[0],a=r.screenX,c=r.screenY,h=a-p,f=c-g;if(!v&&Math.abs(h)>Math.abs(f)&&Math.abs(h)>10){if(v=!0,w=a,"mimical"===o&&"scroll"!==n){window.isSwiping=!0;let e=document.getElementById("book");e&&(e.style.display="block",l.mouseDownHandler(t))}}else if(v&&"mimical"===o&&"scroll"!==n&&l.mouseMoveHandler(t),v&&"sliding"===o&&"scroll"!==n){window.isSwiping=!0;let t="PDF"===s?u:e;const i=a-w,r=t.body.scrollLeft;t.body.scrollLeft=r-i,w=a,requestAnimationFrame((()=>{}))}}),{passive:!1}),e.addEventListener("click",(t=>{Ot(t,e,l)}),!0);let x=null;e.body.oncontextmenu=function(e){return e.preventDefault(),e.stopPropagation(),!1};let C=0;e.addEventListener("selectionchange",(e=>{const t=Date.now();t-C>=3e3&&(C=t,window.ReactNativeWebView.postMessage(JSON.stringify({event:"selection-change"})))}),{passive:!1})};class jt extends ot{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=>ke(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=>Ae(e))).join("")})))},this.addPageAnimation=e=>{if("mimical"===this.animation){let t=this.getProgress();if(!t)return;const i=Tt(t.totalPage,this.isDarkMode,e);i&&(this.flipToNextPage=i.flipToNextPage,this.flipToPrevPage=i.flipToPrevPage,this.mouseDownHandler=i.mouseDownHandler,this.mouseUpHandler=i.mouseUpHandler,this.mouseMoveHandler=i.mouseMoveHandler)}},this.readerMode=e.readerMode,this.animation=e.animation,this.format=e.format,this.convertChinese=e.convertChinese,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),i=t%2==0?t:t-1,r=this.getIframe();if(!r)return;let n=null==r?void 0:r.getBoundingClientRect().height;return{width:this.element.clientWidth,height:this.element.clientHeight,left:this.element.offsetLeft,top:this.element.offsetTop,scrollTop:this.element.scrollTop,sectionWidth:(this.element.clientWidth-i)/e,sectionHeight:n,gap:i}}scrollToText(e){let t=this.getDocument();if(!t)return;let i=Ue(t.body).filter((e=>!rt(e))).filter((t=>(t.textContent||"").indexOf(e)>-1));if(i.length>0){let e=i[0],r=e?h(e.offsetLeft)-h(e.marginLeft||parseFloat(getComputedStyle(e).marginLeft)):0,n=e?h(e.offsetTop)-h(e.marginTop||parseFloat(getComputedStyle(e).marginTop)):0;"scroll"!==this.readerMode?t.body.scrollTo(r,0):this.element.scrollTo(0,n)}}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 i=Math.floor(this.element.clientWidth/12),r=i%2==0?i:i-1;const n=this.element.clientWidth+r;"double"===this.readerMode?e=(e%2==0?e-2:e-1)/2:e-=1,e<0&&(e=0);const o=e*n;t.body.scrollTo({top:0,left:o,behavior:"sliding"===this.animation&&"yes"!==this.isMobile?"smooth":"auto"})}yield this.record()}))}resolveChapter(e){let t=e,i=-1;for(let e=0;e-1)return this.flattenChapters[i];{let r=e.split("#")[0];for(let e=0;e-1)return this.flattenChapters[i];for(let e=0;e-1?{label:"",href:"",index:i}:null}}flatChapter(e){let t=[];for(let i=0;i0?(t.push(e[i]),t=t.concat(this.flatChapter(e[i].subitems))):t.push(e[i]);return this.flattenChapters=t,t}getChapter(){return this.chapterList}getChapterDoc(){return this.chapterDocList}goToPercentage(e){return c(this,void 0,void 0,(function*(){if(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*(){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,i){return c(this,void 0,void 0,(function*(){let r=this.getDocument(),n=this.getIframe();r&&n&&(yield Xe(parseInt(e),i,t,this.chapterDocList,this.element,this.readerMode,this.format,this.tempLocation,r,n),t&&t.indexOf("#")>-1&&(yield Ge(this.element,this.readerMode,"","",t,"",r)),yield this.record(),this.trigger("rendered"))}))}goToPosition(e){return c(this,void 0,void 0,(function*(){let t=this.getDocument(),i=this.getIframe();if(!t||!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:n,chapterTitle:o,chapterDocIndex:s,chapterHref:a,count:l,page:c,cfi:h}=r;if(yield Xe(parseInt(s),o,a,this.chapterDocList,this.element,this.readerMode,this.format,this.tempLocation,t,i),h){const e=new ut(h,{});let t=this.getDocument();if(!t)return;const{node:i,offset:r}=e.resolve(t,{});if(i){let e=null,t=i;for(;t;){const i=t;if(i.tagName&&"h1,h2,h3,h4,h5,h6,p,div,ul,dl,ol,pre,li,dt,dd,blockquote,address,kookitmarker".indexOf(i.tagName.toLowerCase())>-1){e=i;break}t=t.parentNode}e&&(l="ignore",n=e.textContent)}}yield Ge(this.element,this.readerMode,n,l,"",c,t),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 i=t.contentDocument;return i||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;let i=_e(e,this.element,this.readerMode),r=i?h(i.offsetLeft)-h(i.marginLeft||parseFloat(getComputedStyle(i).marginLeft)):0,n=i?h(i.offsetTop)-h(i.marginTop||parseFloat(getComputedStyle(i).marginTop)):0;"scroll"!==this.readerMode?t.body.scrollTo(r,0):this.element.scrollTo(0,n),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===h(this.element.scrollTop)||"scroll"!==this.readerMode&&0===h(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 Ve(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 ze(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();e&&t&&(Math.abs(e.body.scrollWidth-h(e.body.scrollLeft)-e.body.clientWidth)<50&&"scroll"!==this.readerMode||Math.abs(this.element.scrollHeight-h(this.element.scrollTop)-this.element.clientHeight)<20&&"scroll"===this.readerMode?("mimical"===this.animation&&"scroll"!==this.readerMode&&"yes"===this.isMobile&&(yield new Promise((e=>setTimeout(e,500)))),yield et(this.element,this.flatChapter(this.chapterList),this.chapterDocList,this.readerMode,this.format,this.tempLocation,e,t),this.trigger("rendered")):"scroll"===this.readerMode?this.element.scrollBy({left:0,top:this.element.clientHeight-50,behavior:"smooth"}):yield ze(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 Ve(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 et(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?tt(this.element,this.readerMode,e):""}))}audioText(){return c(this,void 0,void 0,(function*(){let e=this.getDocument();return e?((e,t,i)=>{let r=Ue(i.body).filter((e=>!rt(e))),n=r.filter((e=>{if(!(e.textContent||"").trim())return!1;let t=e.parentElement;for(;t&&t!==i.body;){if(r.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=tt(e,t,i);if(s&&s.length>0){let e=s[0];o=n.indexOf(e)}return n.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 i=0,r=0;const n=()=>{if(i+=e,r++,Math.abs(e)<1){if((Math.abs(i)>=.5||r%Math.max(1,Math.floor(30/Math.abs(e)))==0)&&Math.abs(i)>=.1){const e=Math.round(10*i)/10;this.element.scrollBy({left:0,top:e,behavior:"auto"}),i=0,r=0}}else if(Math.abs(i)>=1){const e=Math.floor(i);this.element.scrollBy({left:0,top:e,behavior:"auto"}),i-=e}this.scrollTimer=requestAnimationFrame(n)};this.scrollTimer=requestAnimationFrame(n),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 i=this.getDocument();if(!i)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 r=0,n=this.element.scrollTop;this.scrollTimer=setInterval((()=>{r+=e,i&&(i.body.style.transform=`translateY(-${r}px)`,Math.abs(r)>=50&&(i.body.style.transform="translateY(0px)",n+=r,this.element.scrollTo({left:0,top:n,behavior:"auto"}),r=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 i=this.getDocument();i&&it(e,t,i)}highlightAudioNode(e,t){let i=this.getDocument();i&&((e,t,i,r,n)=>{if(i.querySelectorAll('span[data-highlight="true"]').forEach((e=>{const t=e.parentNode;t&&t.replaceChild(i.createTextNode(e.textContent||""),e)})),!e.trim())return;let o=Ue(i.body).filter((e=>nt(r,e,n)&&(e.textContent||"").trim())).filter((t=>{const i=t.textContent||"";return i.trim()&&i.indexOf(e)>-1}));if(o.length>0){const r=r=>{var n;if(r.nodeType===Node.TEXT_NODE){const o=r.textContent||"",s=o.indexOf(e);if(s>-1){const a=o.substring(0,s),l=o.substring(s+e.length),c=i.createElement("span");c.setAttribute("style",t),c.setAttribute("data-highlight","true"),c.textContent=e;const h=i.createDocumentFragment();return a&&h.appendChild(i.createTextNode(a)),h.appendChild(c),l&&h.appendChild(i.createTextNode(l)),null===(n=r.parentNode)||void 0===n||n.replaceChild(h,r),!0}}return!1},n=e=>{if(r(e))return!0;const t=Array.from(e.childNodes);for(const e of t)if(n(e))return!0;return!1};n(o[0])}})(e,t,i,this.element,this.readerMode)}doSearch(t){return c(this,void 0,void 0,(function*(){return"PDF"===this.format?yield((t,i)=>c(void 0,void 0,void 0,(function*(){let r=[];for(let e=0;e{n.str.indexOf(t)>-1&&r.push({excerpt:n.str,cfi:JSON.stringify({text:n.str+"#"+e+"#"+o,chapterTitle:i[e].label,chapterDocIndex:e,chapterHref:i[e].href,count:"search",percentage:e/i.length,keyword:t})})}));return e.uniq(r,"excerpt")})))(t,this.chapterDocList):yield((t,i)=>c(void 0,void 0,void 0,(function*(){var r;let n=[];for(let e=0;e!rt(e)));for(let o=0;o-1&&n.push({excerpt:(null===(r=s[o].textContent)||void 0===r?void 0:r.substring(a-100,a+100))||"",cfi:JSON.stringify({text:s[o].textContent,chapterTitle:i[e].label,chapterDocIndex:e,chapterHref:i[e].href,count:"search",percentage:e/i.length,keyword:t})})}}return e.uniq(n,"excerpt")})))(t,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 Ze(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=x(e);return t?(yield Ze(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 i=document.createElement("style");i.innerHTML=e,t.head.appendChild(i)}}getHightlightCoords(){return c(this,void 0,void 0,(function*(){t.init();let e=this.getDocument(),i=this.getIframe();if(e&&i)return t.getSelection(i).saveCharacterRanges(e.body)[0]}))}renderHighlighters(e,t){return c(this,void 0,void 0,(function*(){let i=this.getDocument(),r=this.getIframe();if(i&&r){vt(i);for(let n=0;n{let t=e.contentDocument;t&&i.push(t)})),[e,...i]}getAllIframes(){let e=this.getIframe();if(!e)return[];if("PDF"!==this.format)return[e];let t=this.getDocument();if(!t)return[];let i=t.querySelectorAll("iframe"),r=[];return i.forEach((e=>{let t=e;r.push(t)})),[e,...r]}addTouchEvent(e,t){let i=this.getAllDocuments(),r=this.getAllIframes();for(let n=0;n{var t;null===(t=e.parentNode)||void 0===t||t.removeChild(e)}));let i=this.getIframe();if(!i)return;t.init();let r=window.charRange;r&&t.getSelection(i).restoreCharacterRanges(e,[r])}}const Wt={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"},$t={"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"},Ut=t=>c(void 0,void 0,void 0,(function*(){let r=yield i.loadAsync(t);var n=r.file("toc.json");let o=[];n&&(o=JSON.parse(yield n.async("string")));var s=r.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=r.file("chapters/"+e+".html");let i="";return t&&(i=yield t.async("string")),URL.createObjectURL(new Blob([i],{type:"text/html"}))})))(t),unload:()=>{},loadAsset:e=>(e=>c(void 0,void 0,void 0,(function*(){var t=r.file(e);let i;return t&&(i=yield t.async("arraybuffer")),URL.createObjectURL(new Blob([i],{type:Wt[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})),zt=e=>new Promise(((t,r)=>c(void 0,void 0,void 0,(function*(){let r=new T(e),n=yield r.getChapter(e.toc),o=yield r.getChapterDoc(),s=n,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 i=yield fetch(yield e.text.load()).then((e=>e.blob()));t=yield i.text()}return t}))))),h=new i;h.file("toc.json",JSON.stringify(s)),h.file("sections.json",JSON.stringify(a));let d=[];for(let e=0;ee.blob()));r.file(t+"."+$t[o.type],o);let s="imgs/"+e+"/"+t+"."+$t[o.type];i[t].src=s,i[t].getAttribute("xlink:href")&&i[t].setAttribute("xlink:href",s)}catch(e){console.error(e)}}let r=Array.from(t.getElementsByTagName("link"));for(let t=0;te.blob()));n.file(t+"."+$t[r.type],r),i.href="css/"+e+"/"+t+"."+$t[r.type]}catch(e){console.error(e)}}d.push(t.documentElement.innerHTML)}let f=h.folder("chapters");if(f){for(let e=0;ec(void 0,void 0,void 0,(function*(){t(yield new Response(e).arrayBuffer())})))).catch((e=>{t("err")}))}}))));class qt extends jt{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"EPUB"})),this.epubBuffer=e}renderTo(e){return new Promise(((t,i)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let i=new T(this.book);this.chapterList=yield i.getChapter(this.book.toc),this.chapterDocList=yield i.getChapterDoc(),g(e);let r=this.getDocument();r&&(w(e,this.readerMode,r),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 Le(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 zt(this.book)}catch(e){return""}}))}makeZipLoader(e){return c(this,void 0,void 0,(function*(){let t=yield i.loadAsync(e);const r=t.files;return{entries:Object.values(r).map((e=>({filename:e.name}))),loadText:e=>c(this,void 0,void 0,(function*(){let i=t.file(e);return i?i.async("string"):""})),loadBlob:e=>c(this,void 0,void 0,(function*(){let i=t.file(e);if(i){let e=yield i.async("arraybuffer");return new Blob([e])}return new Blob([new ArrayBuffer(0)])})),getSize:e=>{let i=t.file(e);if(i)return i._data.uncompressedSize||0}}}))}getMetadata(){return c(this,void 0,void 0,(function*(){try{this.book||(yield this.parse());let e=new T(this.book);return yield e.getMetadata()}catch(e){throw console.error(e,"error"),e}}))}}const Vt=e=>{if(!e)return"";const t=document.createElement("textarea");return t.innerHTML=e,t.value},Xt={XML:"application/xml",XHTML:"application/xhtml+xml",HTML:"text/html",CSS:"text/css",SVG:"image/svg+xml"},Jt={name:[0,32,"string"],type:[60,4,"string"],creator:[64,4,"string"],numRecords:[76,2,"uint"]},Gt={compression:[0,2,"uint"],numTextRecords:[8,2,"uint"],recordSize:[10,2,"uint"],encryption:[12,2,"uint"]},_t={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"]},Yt={resourceStart:[108,4,"uint"],fdst:[192,4,"uint"],numFdst:[196,4,"uint"],frag:[248,4,"uint"],skel:[252,4,"uint"],guide:[260,4,"uint"]},Zt={magic:[0,4,"string"],length:[4,4,"uint"],count:[8,4,"uint"]},Kt={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"]},Qt={magic:[0,4,"string"],length:[4,4,"uint"],numControlBytes:[8,4,"uint"]},ei={magic:[0,4,"string"],offset1:[8,4,"uint"],offset2:[12,4,"uint"]},ti={magic:[0,4,"string"],length:[4,4,"uint"],numEntries:[8,4,"uint"],codeLength:[12,4,"uint"]},ii={magic:[0,4,"string"],numEntries:[8,4,"uint"]},ri={flags:[8,4,"uint"],dataStart:[12,4,"uint"],keyLength:[16,4,"uint"],keyStart:[20,4,"uint"]},ni={1252:"windows-1252",65001:"utf-8"},oi={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"]},si={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"]},ai=(e,t)=>{const i=new e.constructor(e.length+t.length);return i.set(e),i.set(t,e.length),i},li=(e,t,i)=>{const r=new e.constructor(e.length+t.length+i.length);return r.set(e),r.set(t,e.length),r.set(i,e.length+t.length),r},ci=new TextDecoder,hi=e=>ci.decode(e),di=e=>{if(!e)return;const t=e.byteLength,i=4===t?"getUint32":2===t?"getUint16":"getUint8";return new DataView(e)[i](0)},ui=(e,t)=>Object.fromEntries(Array.from(Object.entries(e)).map((([e,[i,r,n]])=>[e,("string"===n?hi:di)(t.slice(i,i+r))]))),fi=e=>new TextDecoder(ni[e]),pi=(e,t=0)=>{let i=0,r=0;for(const n of e.subarray(t,t+4))if(i=i<<7|(127&n)>>>0,r++,128&n)break;return{value:i,length:r}},gi=e=>{let t=0;for(const i of e.subarray(-4))128&i&&(t=0),t=t<<7|127&i;return t},mi=e=>{let t=0;for(;e>0;e>>=1)1&~e||t++;return t},yi=e=>{let t=0;for(;!(1&e);)e>>=1,t++;return t},bi=e=>{let t=[];for(let i=0;i>>3,s=3+(7&n);for(let e=0;e{const i=t+32,r=i>>3;let n=0n;for(let i=t>>3;i<=r;i++)n=n<<8n|BigInt(e[i]??0);return n>>8n-BigInt(7&i)&0xffffffffn},wi=async(e,t)=>{const i=await t(e),r=ui(Kt,i);if("INDX"!==r.magic)throw new Error("Invalid INDX record");const n=fi(r.encoding),o=i.slice(r.length),s=ui(Qt,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)))),c={};let h=0;for(let i=0;i1){const{value:i,length:r}=pi(n,p);h.push([e,null,i,t]),p+=r}else h.push([e,1,null,t]);else h.push([e,a>>yi(i),null,t])}const g={};for(const[e,t,i,r]of h){const o=[];if(null!=t)for(let e=0;edi(i.slice(8*t,8*t+4)))).map(((e,t,i)=>[e,i[t+1]]))}loadRecord(e){const t=this.#h[e];if(!t)throw new RangeError("Record index out of bounds");return this.#c.slice(...t).arrayBuffer()}async loadMagic(e){const t=this.#h[e][0];return hi(await this.#c.slice(t,t+4).arrayBuffer())}}class Ci extends xi{#d=0;#u;#f;#p;#g;#m;constructor({unzlib:e}){super(),this.unzlib=e}async open(e){await super.open(e),this.headers=this.#y(await super.loadRecord(0)),this.#u=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.#y(await super.loadRecord(e)),this.#d=e,t=!0}catch(e){console.warn(e),console.warn("Failed to open KF8; falling back to MOBI")}}return await this.#b(),t?new Ni(this).init():new Si(this).init()}#y(e){const t=ui(Gt,e),i=ui(_t,e);if("MOBI"!==i.magic)throw new Error("Missing MOBI header");const{titleOffset:r,titleLength:n,localeLanguage:o,localeRegion:s}=i;i.title=e.slice(r,r+n);const a=si[o];i.language=a?.[s>>2]??a?.[0];const l=64&i.exthFlag?((e,t)=>{const{magic:i,count:r}=ui(Zt,e);if("EXTH"!==i)throw new Error("Invalid EXTH header");const n=fi(t),o={};let s=12;for(let t=0;t=8?ui(Yt,e):null}}async#b(){const{palmdoc:e,mobi:t}=this.headers;this.#f=fi(t.encoding),this.#p=new TextEncoder;const{compression:i}=e;if(this.#g=1===i?e=>e:2===i?bi:17480===i?await(async(e,t)=>{const i=await t(e.huffcdic),{magic:r,offset1:n,offset2:o}=ui(ei,i);if("HUFF"!==r)throw new Error("Invalid HUFF record");const s=Array.from({length:256},((e,t)=>n+4*t)).map((e=>di(i.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=>[di(i.slice(e,e+4)),di(i.slice(e+4,e+8))]))),l=[];for(let i=1;i{let t=new Uint8Array;const i=8*e.byteLength;for(let r=0;r>>24];if(!o){for(;n>>>32-hi)break;const u=d-(n>>>32-h);let[f,p]=l[u];p||(f=c(f),l[u]=[f,!0]),t=ai(t,f)}return t};return c})(t,this.loadRecord.bind(this)):null,!this.#g)throw new Error("Unknown compression type");const{trailingFlags:r}=t,n=1&r,o=mi(r>>>1);this.#m=e=>{for(let t=0;tnew Uint8Array(e))).then(this.#m).then(this.#g)}async loadResource(e){const t=await super.loadRecord(this.#u+e),i=hi(t.slice(0,4));return"FONT"===i?(async(e,t)=>{const{flags:i,dataStart:r,keyLength:n,keyStart:o}=ui(ri,e),s=new Uint8Array(e.slice(r));if(2&i){const t=16===n?1024:1040,i=new Uint8Array(e.slice(o,o+n)),r=Math.min(t,s.length);for(var a=0;a{const{table:i,cncx:r}=await wi(e,t),n=i.map((({tagMap:e},t)=>({index:t,offset:e[1]?.[0],size:e[2]?.[0],label:r[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=n.filter((t=>t.parent===e.index)).map(o)),e);return n.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:Vt(t?.title||this.decode(e.title)),author:t?.creator?.map(Vt),publisher:Vt(t?.publisher),language:t?.language??e.language,published:t?.date,description:Vt(t?.description),subject:t?.subject?.map(Vt),rights:Vt(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 Ti=/<\s*(?:mbp:)?pagebreak[^>]*>/gi,Li=/<[^<>]+filepos=['"]{0,1}(\d+)[^<>]*>/gi;class Si{parser=new DOMParser;serializer=new XMLSerializer;#v=new Map;#w=new Map;#r=new Map;#x;#C=[];#T=Xt.HTML;constructor(e){this.mobi=e}async init(){let e=new Uint8Array;for(let t=0;tString.fromCharCode(e))).join("");this.#x=[0].concat(Array.from(t.matchAll(Ti),(e=>e.index))).map(((e,i,r)=>t.slice(e,r[i+1]))).map((e=>Uint8Array.from(e,(e=>e.charCodeAt(0))))).map((e=>({book:this,raw:e}))).reduce(((e,t)=>{const i=e[e.length-1];return t.start=i?.end??0,t.end=t.start+t.raw.byteLength,e.concat(t)}),[]),this.sections=this.#x.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),i=await this.sections[t].createDocument();let r,n=0,o=0;const s=new Map,a=new Map;this.toc=Array.from(i.querySelectorAll("a[filepos]")).reduce(((e,t)=>{const i=(e=>{let t=0;for(;e;){const i=e.parentElement;if(i){const e=i.tagName.toLowerCase();"p"===e?t+=1.5:"blockquote"===e&&(t+=2)}e=i}return t})(t),l={label:t.innerText?.trim(),href:`#filepos${t.getAttribute("filepos")}`},c=i>o?n+1:i===o?n:s.get(i)??Math.max(0,n-1);if(c>n)r?(r.subitems??=[],r.subitems.push(l),a.set(c,r)):e.push(l);else{const t=a.get(c);t?t.subitems.push(l):e.push(l)}return r=l,n=c,o=i,s.set(i,c),e}),[])}}catch(e){console.warn(e)}return this.#C=[...new Set(Array.from(t.matchAll(Li),(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.#x[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.#v.has(e))return this.#v.get(e);const t=await this.mobi.loadResource(e),i=URL.createObjectURL(new Blob([t]));return this.#v.set(e,i),i}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"),i=t.getAttribute("recindex");try{t.src=await this.loadRecindex(e),i&&(t.poster=await this.loadRecindex(i))}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.#w.has(e))return this.#w.get(e);const{raw:t}=e,i=this.#C.filter((({number:t})=>t>=e.start&&t({...t,offset:t.number-e.start})));let r=t;i.length&&(r=t.subarray(0,i[0].offset),i.forEach((({filepos:e,offset:n},o)=>{const s=i[o+1],a=this.mobi.encode(``);r=li(r,a,t.subarray(n,s?.offset))})));const n=this.mobi.decode(r).replaceAll(Ti,"");return this.#w.set(e,n),n}async createDocument(e){const t=await this.loadText(e);return this.parser.parseFromString(t,this.#T)}async loadSection(e){if(this.#r.has(e))return this.#r.get(e);const t=await this.createDocument(e),i=t.createElement("style");t.head.append(i),i.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 r=this.serializer.serializeToString(t),n=URL.createObjectURL(new Blob([r],{type:this.#T}));return this.#r.set(e,n),n}resolveHref(e){const t=e.match(/#filepos(.*)/)[1],i=Number(t);return{index:this.#x.findIndex((e=>e.end>i)),anchor:e=>e.getElementById(`filepos${t}`)}}splitTOCHref(e){const t=e.match(/#filepos(.*)/)[1],i=Number(t);return[this.#x.findIndex((e=>e.end>i)),`filepos${t}`]}getTOCFragment(e,t){return e.getElementById(t)}isExternal(e){return/^(?!blob|filepos)\w+:/i.test(e)}destroy(){for(const e of this.#v.values())URL.revokeObjectURL(e);for(const e of this.#r.values())URL.revokeObjectURL(e)}}const Mi=/kindle:(flow|embed):(\w+)(?:\?mime=(\w+\/[-+.\w]+))?/,Di=/kindle:pos:fid:(\w+):off:(\w+)/,ki=e=>{const[t,i]=e.match(Di).slice(1);return{fid:parseInt(t,32),off:parseInt(i,32)}},Ai=(e=0,t=0)=>`kindle:pos:fid:${e.toString(32).toUpperCase().padStart(4,"0")}:off:${t.toString(32).toUpperCase().padStart(10,"0")}`,Ei=e=>{const t=e.match(/\s(id|name|aid)\s*=\s*['"]([^'"]*)['"]/i);if(!t)return;const[,i,r]=t;return`[${i}="${CSS.escape(r)}"]`},Ii=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 Ni{parser=new DOMParser;serializer=new XMLSerializer;#r=new Map;#L=new Map;#S=new Map;#M={};#x;#D;#k=new Uint8Array;#A=new Uint8Array;#E=-1;#I=-1;#T=Xt.XHTML;#N=new Map;constructor(e){this.mobi=e}async init(){const e=this.mobi.loadRecord.bind(this.mobi),{kf8:t}=this.mobi.headers;try{const i=await e(t.fdst),r=ui(ii,i);if("FDST"!==r.magic)throw new Error("Missing FDST record");const n=Array.from({length:r.numEntries},((e,t)=>12+8*t)).map((e=>[di(i.slice(e,e+4)),di(i.slice(e+4,e+8))]));this.#M.fdstTable=n,this.#D=n[n.length-1][1]}catch{}const i=(await wi(t.skel,e)).table.map((({name:e,tagMap:t},i)=>({index:i,name:e,numFrag:t[1][0],offset:t[6][0],length:t[6][1]}))),r=await wi(t.frag,e),n=r.table.map((({name:e,tagMap:t})=>({insertOffset:parseInt(e),selector:r.cncx[t[2][0]],index:t[4][0],offset:t[6][0],length:t[6][1]})));this.#M.skelTable=i,this.#M.fragTable=n,this.#x=i.reduce(((e,t)=>{const i=e[e.length-1],r=i?.fragEnd??0,o=r+t.numFrag,s=n.slice(r,o),a=t.length+s.map((e=>e.length)).reduce(((e,t)=>e+t)),l=(i?.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,""),i=t.search(/\?>/),r=`${t.slice(i)}`,n=this.parser.parseFromString(r,Xt.XML);for(const e of n.querySelectorAll("spine > itemref")){const t=parseInt(e.getAttribute("skelid"));s.set(t,Ii(e.getAttribute("properties")?.split(" ")??[]))}}this.sections=this.#x.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:i,children:r})=>{const[n,o]=i,s=Ai(n,o),a=this.#L.get(n);return a?a.push(o):this.#L.set(n,[o]),{label:Vt(e),href:s,subitems:r?.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={},i=this.mobi.headers.kf8.resourceStart,r=this.mobi.pdb.numRecords;for(let n=i;ne===i));r&&(t[r]=n)}catch{}return t}async getGuide(){const e=this.mobi.headers.kf8.guide;if(e<4294967295){const t=this.mobi.loadRecord.bind(this.mobi),{table:i,cncx:r}=await wi(e,t);return i.map((({name:e,tagMap:t})=>({label:r[t[1][0]]??"",type:e?.split(/\s/),href:Ai(t[6]?.[0]??t[3]?.[0])})))}}async loadResourceBlob(e){let{resourceType:t,id:i,type:r}=(e=>{const[t,i,r]=e.match(Mi).slice(1);return{resourceType:t,id:parseInt(i,32),type:r}})(e);"image/jpg"===r&&(r="image/jpeg");const n="flow"===t?await this.loadFlow(i):await this.mobi.loadResource(i-1),o=[Xt.XHTML,Xt.HTML,Xt.CSS,Xt.SVG].includes(r)?await this.replaceResources(this.mobi.decode(n)):n,s=r===Xt.SVG?this.parser.parseFromString(o,r):null;return[new Blob([o],{type:r}),s?.getElementsByTagNameNS("http://www.w3.org/2000/svg","image")?.length?s.documentElement:null]}async loadResource(e){if(this.#r.has(e))return this.#r.get(e);const[t,i]=await this.loadResourceBlob(e),r=i?e:URL.createObjectURL(t);return i&&this.#N.set(r,i),this.#r.set(e,r),r}replaceResources(e){return(async(e,t,i)=>{const r=[];e.replace(t,((...e)=>(r.push(e),null)));const n=[];for(const e of r)n.push(await i(...e));return e.replace(t,(()=>n.shift()))})(e,new RegExp(Mi,"g"),this.loadResource.bind(this))}async loadRaw(e,t){const i=t-this.#k.length,r=null==this.#D?1/0:this.#D-this.#A.length-e;if(i<0||ie;){const e=this.mobi.headers.palmdoc.numTextRecords-1-++this.#I,t=await this.mobi.loadText(e);this.#A=ai(t,this.#A)}const n=this.#D-this.#A.length;return this.#A.slice(e-n,t-n)}loadFlow(e){if(e<4294967295)return this.loadRaw(...this.#M.fdstTable[e])}async loadText(e){const{skel:t,frags:i,length:r}=e,n=await this.loadRaw(t.offset,t.offset+r);let o=n.slice(0,t.length);for(const e of i){const i=e.insertOffset-t.offset,r=t.length+e.offset,s=n.slice(r,r+e.length);o=li(o.slice(0,i),s,o.slice(i));const a=this.#L.get(e.index);if(a)for(const t of a){const i=this.mobi.decode(s).slice(t),r=Ei(i);this.#R(e.index,t,r)}}return this.mobi.decode(o)}async createDocument(e){const t=await this.loadText(e);return this.parser.parseFromString(t,this.#T)}async loadSection(e){if(this.#r.has(e))return this.#r.get(e);const t=await this.loadText(e),i=await this.replaceResources(t);let r=this.parser.parseFromString(i,this.#T);r.querySelector("parsererror")&&(this.#T=Xt.HTML,r=this.parser.parseFromString(i,this.#T));for(const[e,t]of this.#N)for(const i of r.querySelectorAll(`img[src="${e}"]`))i.replaceWith(t);const n=URL.createObjectURL(new Blob([this.serializer.serializeToString(r)],{type:this.#T}));return this.#r.set(e,n),n}getIndexByFID(e){return this.#x.findIndex((t=>t.frags.some((t=>t.index===e))))}#R(e,t,i){const r=this.#S.get(e);if(r)r.set(t,i);else{const r=new Map;this.#S.set(e,r),r.set(t,i)}}async resolveHref(e){const{fid:t,off:i}=ki(e),r=this.getIndexByFID(t);if(r<0)return;const n=this.#S.get(t)?.get(i);if(n)return{index:r,anchor:e=>e.querySelector(n)};const{skel:o,frags:s}=this.#x[r],a=s.find((e=>e.index===t)),l=o.offset+o.length+a.offset,c=await this.loadRaw(l,l+a.length),h=this.mobi.decode(c.slice(i)),d=Ei(h);this.#R(t,i,d);return{index:r,anchor:e=>e.querySelector(d)}}splitTOCHref(e){const t=ki(e);return[this.getIndexByFID(t.fid),t]}getTOCFragment(e,{fid:t,off:i}){const r=this.#S.get(t)?.get(i);return e.querySelector(r)}isExternal(e){return/^(?!blob|kindle)\w+:/i.test(e)}destroy(){for(const e of this.#r.values())URL.revokeObjectURL(e)}}class Ri extends jt{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"MOBI"})),this.mobiBuffer=e}renderTo(e){return new Promise(((t,i)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let i=new T(this.book);this.chapterList=yield i.getChapter(this.book.toc),this.chapterDocList=yield i.getChapterDoc(),g(e);let r=this.getDocument();r&&(w(e,this.readerMode,r),t())}))))}resolveHref(e){return c(this,void 0,void 0,(function*(){let t=this.tempLocation.chapterDocIndex,i=this.chapterDocList[t];if(i){let r=yield i.text.resolveHref(e);if(!r)return{};if(r.index===parseInt(t)){let e=this.getDocument();if(!e)return r;let t=r.anchor(e);if(!t)return r;let i=t.getAttribute("id")||"";return Object.assign(Object.assign({},r),{id:i})}return r}return{}}))}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});(yield(async e=>"BOOKMOBI"===hi(await e.slice(60,68).arrayBuffer()))(t))&&(this.book=yield new Ci({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 zt(this.book)}))}getMetadata(){return c(this,void 0,void 0,(function*(){try{this.book||(yield this.parse());let e=new T(this.book);return yield e.getMetadata()}catch(e){throw console.error(e),e}}))}}const Oi=e=>`${Fi()?".":""}/lib/pdfjs/${e}`,Pi=window.pdfjsLib,Bi=async e=>await(await fetch(e)).text(),Fi=()=>"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 Hi(e,t="",i=""){return new Promise((r=>{vex.dialog.prompt({message:e,placeholder:t,value:i,callback:function(e){r(e)}})}))}const ji=async()=>await Bi(Oi("text_layer_builder.css")),Wi=async()=>await Bi(Oi("annotation_layer_builder.css")),$i=async(e,t)=>{const i=e.getViewport({scale:1});if(t){const t=document.createElement("canvas");t.height=i.height,t.width=i.width;const r=t.getContext("2d");return await e.render({canvasContext:r,viewport:i}).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"}))},Ui=e=>({label:e.title,href:e.dest?JSON.stringify(e.dest):null,subitems:e.items.length?e.items.map(Ui):null});function zi(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 qi=async(e,t)=>{let i;for(;;){const r=new Pi.PDFDataRangeTransport(e.size,[]);r.requestDataRange=(t,i)=>{e.slice(t,i).arrayBuffer().then((e=>{r.onDataRange(t,e)}))};try{i=await Pi.getDocument({range:r,cMapUrl:Oi("cmaps/"),standardFontDataUrl:Oi("standard_fonts/"),isEvalSupported:!1,password:t}).promise;break}catch(e){if("PasswordException"!==e.name)throw e;if(e.code===Pi.PasswordResponses.NEED_PASSWORD?Fi()?(t=await Hi(zi("need"),"",""),vex.closeAll()):t=prompt(zi("need")):e.code===Pi.PasswordResponses.INCORRECT_PASSWORD&&(Fi()?(t=await Hi(zi("incorrect"),"",""),vex.closeAll()):t=prompt(zi("incorrect"))),!t)throw new Error("PDF loading failed: no password provided")}}let r=!1,n=i.numPages>0?await i.getPage(Math.floor(i.numPages/2)+1):null;if(n){const e=await n.getTextContent();if(r=0===e.items.length,e.items.length>0){r=e.items.reduce(((e,t)=>e+t.str.trim().length),0)<40}n.cleanup()}const o={rendition:{layout:"pre-paginated"}},{metadata:s,info:a}=await i.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:"")+(r?"\nscanned PDF":"")+(t?"\nprotected PDF: #"+t+"#":"");const l=await i.getOutline();o.toc=l?.map(Ui);const c=new Map;return o.sections=Array.from({length:i.numPages}).map(((e,t)=>({id:t,load:async()=>{const e=c.get(t);if(e)return e;const r=await $i(await i.getPage(t+1));return c.set(t,r),r},unload:async()=>{(await i.getPage(t+1)).cleanup()},render:async(e,r,n,o)=>{await(async(e,t,i,r)=>{let n=window.devicePixelRatio*("yes"===r?1/i*1.5:1);const o=i*n;let s=t.querySelector("#koodoPDFLayer");s.style.visibility="hidden",s.style.transform=`scale(${1/n})`,s.style.transformOrigin="top left",s.style.setProperty("--scale-factor",o);const a=e.getViewport({scale:o}),l=document.createElement("canvas");s.style.width=`${a.width}px`,s.style.height=`${a.height}px`,l.height=a.height,l.width=a.width;const c=l.getContext("2d");await e.render({canvasContext:c,viewport:a,background:"rgba(0,0,0,0)"}).promise,t.querySelector("#canvas").replaceChildren(t.adoptNode(l)),s.style.overflow="hidden";const h=t.querySelector("#textLayer"),d=new Pi.TextLayer({textContentSource:await e.streamTextContent(),container:h,viewport:a});await d.render();for(const e of document.querySelectorAll(".hiddenCanvasElement"))Object.assign(e.style,{position:"absolute",top:"0",left:"0",width:"0",height:"0",display:"none"});const u=document.createElement("div");u.className="endOfContent",h.append(u);let f=!1,p=null;h.onpointerdown=()=>{let e=t?.defaultView;if(e.getSelection().toString().trim().length>0)return h.classList.remove("selecting"),f=!1,u.remove(),void h.append(u);h.classList.add("selecting"),f=!0},"yes"!==r?(h.onpointerup=()=>{h.classList.remove("selecting"),f=!1,u.remove(),h.append(u)},h.onpointermove=e=>{if(!f)return;let t=e.target.closest(".textLayer > span");const i=null!==t;h.style.cursor=i?"text":"default",i&&(p=t),u.remove(),h.insertBefore(u,p)}):t.addEventListener("selectionchange",(e=>{if(!f)return;let i=t?.defaultView;var r=i.getSelection().getRangeAt(0).endContainer;let n=r.nodeType===Node.TEXT_NODE?r.parentNode:r;n=n.closest(".textLayer > span");const o=null!==n;h.style.cursor=o?"text":"default",o&&(p=n),u.remove(),h.insertBefore(u,p.nextSibling?p.nextSibling:p)}));const g=t.querySelector("#annotationLayer");await new Pi.AnnotationLayer({page:e,viewport:a,div:g}).render({annotations:await e.getAnnotations(),linkService:{goToDestination:()=>{},getDestinationHash:e=>JSON.stringify(e),addLinkAttributes:(e,t)=>e.href=t}})})(await i.getPage(t+1),e,r,n)},getTextContent:async()=>{const e=await i.getPage(t+1);return await e.getTextContent()},size:1e3,getDimension:async()=>{let e=(await i.getPage(t+1)).getViewport({scale:1});return{width:e.width,height:e.height}},getPage:async()=>await i.getPage(t+1)}))),o.isExternal=e=>/^\w+:/i.test(e),o.resolveHref=async e=>{const t=JSON.parse(e),r="string"==typeof t?await i.getDestination(t):t;return{index:await i.getPageIndex(r[0])}},o.splitTOCHref=async e=>{const t=JSON.parse(e),r="string"==typeof t?await i.getDestination(t):t;return[await i.getPageIndex(r[0]),null]},o.getTOCFragment=e=>e.documentElement,o.getCover=async()=>$i(await i.getPage(1),!0),o.destroy=()=>i.destroy(),o},Vi=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]};class Xi extends jt{constructor(e,t){super(Object.assign(Object.assign({},t),{convertChinese:"Default",format:"PDF"})),this.isStartFromEven="no",this.password="",this.scale=1,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,i)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let i=new T(this.book);this.chapterList=yield i.getChapter(this.book.toc),this.chapterDocList=yield i.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]),document.body.clientWidth*Math.abs(this.scale)-.4*document.body.clientWidth>document.body.clientWidth&&"double"!==this.readerMode?g(e,this.scale):g(e);const r=yield this.chapterDocList[Math.floor(this.chapterDocList.length/2)].text.getDimension();let n=this.getDocument();if(!n)return;((e,t,i,r)=>{for(let n=0;n{o&&clearTimeout(o),o=setTimeout((()=>c(this,void 0,void 0,(function*(){yield this.handlePDFScrollEvent(n),yield this.record()}))),100)})):n.addEventListener("scroll",(e=>{o&&clearTimeout(o),o=setTimeout((()=>c(this,void 0,void 0,(function*(){yield this.handlePDFScrollEvent(n),yield this.record()}))),200)})),((e,t,i)=>{if("scroll"===t)return;let r="double"===t?2:1,n=Math.floor(i.body.clientWidth/12),o=n%2==0?n:n-1;i.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: ${(i.body.clientWidth-o)/r}px;`)})(e,this.readerMode,n),t()}))))}handlePDFScrollEvent(e){return c(this,void 0,void 0,(function*(){let t=e.querySelectorAll(".pdf-container");for(let i=0;i0&&(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,i=Math.floor(e.body.clientWidth/12),r=i%2==0?i:i-1,n=e.querySelectorAll("iframe")[0],o=null==n?void 0:n.getBoundingClientRect().height;return{width:e.body.clientWidth,height:this.element.clientHeight,left:this.element.offsetLeft,top:this.element.offsetTop,scrollTop:this.element.scrollTop,sectionWidth:(e.body.clientWidth-r)/t,sectionHeight:o,gap:r}}goToChapter(e,t,i){return c(this,void 0,void 0,(function*(){"double"===this.readerMode&&e%2==1&&e--;let t=this.getDocument(),i=this.getIframe();t&&i&&(yield this.renderPdfPage(e,t),yield Mt(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 t;return c(this,void 0,void 0,(function*(){let i=this.getDocument(),r=this.getIframe();if(!i||!r)return;let n=JSON.parse(e);void 0===n.chapterDocIndex&&(n.chapterDocIndex=0),this.tempLocation={text:n.text,chapterTitle:n.chapterTitle,chapterDocIndex:n.chapterDocIndex,chapterHref:n.chapterHref,count:n.count,page:n.page,percentage:n.percentage};let{chapterTitle:o,chapterDocIndex:s,chapterHref:a}=n;if("double"===this.readerMode&&s%2==1&&s--,yield this.renderPdfPage(parseInt(s),i),"scroll"===this.readerMode){let e=this.getSubIframe(void 0!==s?s:parseInt(this.tempLocation.chapterDocIndex));if(!e)return;let i=(null===(t=e.parentElement)||void 0===t?void 0:t.getBoundingClientRect().height)||0;r.style.height=i*this.chapterDocList.length+"px"}yield Mt(parseInt(s),this.readerMode,i),yield this.recordByChapter(parseInt(s))}))}prev(e){return c(this,void 0,void 0,(function*(){let t=this.getDocument(),i=this.getIframe();t&&i&&("scroll"===this.readerMode?this.element.scrollBy({left:0,top:-(this.element.clientHeight-50),behavior:"smooth"}):("ios"===e?yield At(this.element,this.animation,1,t,this.flipToNextPage,this.flipToPrevPage,this.isMobile,parseInt(this.tempLocation.chapterDocIndex||"0"),this.readerMode):yield ze(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(),i=this.getIframe();t&&i&&("scroll"===this.readerMode?this.element.scrollBy({left:0,top:this.element.clientHeight-50,behavior:"smooth"}):("ios"===e?yield At(this.element,this.animation,-1,t,this.flipToNextPage,this.flipToPrevPage,this.isMobile,parseInt(this.tempLocation.chapterDocIndex||"0"),this.readerMode):yield ze(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,i=this.readerMode,c(void 0,void 0,void 0,(function*(){let r=(yield t[e].text.getTextContent()).items.map((e=>e.str));if("double"===i){let i=(yield t[e+1].text.getTextContent()).items.map((e=>e.str));r=r.concat(i)}return r}))):"";var e,t,i}))}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*(){""!==this.animation&&(yield new Promise((e=>setTimeout(e,1e3)))),e>=this.chapterDocList.length||e<0||(this.tempLocation.chapterDocIndex=e+"",this.tempLocation.percentage=e/(this.chapterDocList.length-1)+"",this.tempLocation.chapterHref=this.chapterDocList[e].href,this.tempLocation.chapterTitle=this.chapterDocList[e].label,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&&Dt(this.element,t[t.length-1],this.readerMode,e))this.handleRecord(t[t.length-1]);else for(let i=0;ir[e].left&&(c[c.length-1].left=r[e].left),c[c.length-1].right=this.chapterDocList.length||e<0)return;let i=t.getElementById("pdf-iframe-"+e);i||(i=St(e,t));let r=null==i?void 0:i.contentDocument;if(!r)return;if(r.body.innerHTML)return;r.body.innerHTML="";let n=yield fetch(yield this.chapterDocList[e].text.load()).then((e=>e.blob())),o=yield n.text();r.body.innerHTML=o;let s=yield Lt(this.element,this.readerMode,this.chapterDocList,e,r);yield this.chapterDocList[e].text.render(r,s,this.isMobile);let a=r.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",i.style.height=a.getBoundingClientRect().height+e+"px";let t=r.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 Ji extends jt{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,i)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let i=new T(this.book);this.chapterList=yield i.getChapter(this.book.toc),this.chapterDocList=yield i.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 i="";return"yes"===this.isScannedPDF?(i=yield this.processCurrentChapter(e),this.preProcessNextChapters(e)):(i=yield this.getTextFromDoc(t),this.cache[e]=i),i}))}g(e);let r=this.getDocument();r&&(w(e,this.readerMode,r),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],i=yield this.getTextByOCR(t);return this.cache[e]=i,i}))}preProcessNextChapters(e){const t=Math.min(e+3,this.chapterDocList.length-1);for(let i=e+1;i<=t;i++)if(!this.cache[i]&&!this.processingPromises.has(i)){const e=this.processChapterOCR(i);this.processingPromises.set(i,e),e.finally((()=>{this.processingPromises.delete(i)}))}}processChapterOCR(e){return c(this,void 0,void 0,(function*(){try{const t=this.chapterDocList[e],i=yield this.getTextByOCR(t);this.cache[e]=i}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:i}=yield Et(t);let r=(yield this.performOCR(i)).split("\n").filter((e=>""!==e.trim()));return URL.createObjectURL(new Blob([`\n \n \n \n \n
${r.map((e=>`

${e}

`)).join("")}
\n `],{type:"text/html"}))}))}getTextFromDoc(e){return c(this,void 0,void 0,(function*(){let t=yield e.text.getTextContent(),i=[];if(t&&t.items&&Array.isArray(t.items)){const e=t.items.filter((e=>e.str&&e.transform)).map((e=>e.transform[3]));let r=10;if(e.length>0){const t=e.reduce(((e,t)=>(e[t]=(e[t]||0)+1,e)),{});r=Object.keys(t).map(Number).reduce(((e,i)=>t[e]>t[i]?e:i))}let n={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(r)*this.titleSizeValue;t>e.height*this.paraSpacingValue&&n.text.trim()?(i.push(n),n={text:"",styles:new Set,y:e.transform[5],tag:s,isBold:a}):n.hasOwnProperty("isBold")||(n.isBold=a);const l=e.str;e.hasEOL?l.endsWith("-")?n.text+=l.slice(0,-1):n.text+=l+" ":n.text+=l,o=e.transform[5]}})),n.text.trim()&&i.push(n)}return URL.createObjectURL(new Blob([`\n \n \n \n \n
${i.length>0?i.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]),i=new File([t],"book",{lastModified:(new Date).getTime(),type:t.type});if((yield Vi(i))&&(this.book=yield qi(i,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()}))),i=URL.createObjectURL(new Blob([t],{type:"application/javascript"}));const r=yield window.Tesseract.createWorker([this.ocrLang],1,{workerPath:i,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 r.load(),this.worker=r}}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 zt(this.book)}))}getMetadata(){return c(this,void 0,void 0,(function*(){try{this.book||(yield this.parse());let e=new T(this.book);return yield e.getMetadata()}catch(e){throw console.error(e),e}}))}}const Gi=(e,t=!1,i="",r)=>{const n=(new DOMParser).parseFromString(t?((e,t,i)=>{let r=e.split("\n");1===r.length&&(r=e.split("\r"));const n=[];let o=!1;if(i&&i.refresh&&(o=!0),r.length>1e4&&!o){i&&i.text||(i={text:r[0],chapterTitle:"",chapterDocIndex:0});let e=r.findIndex((e=>Oe(e)===Oe(i.text)));-1===e&&(e=0);const o=Math.max(e-1e3,0),s=Math.min(e+1e3,r.length),a=r.slice(o,s),l=a.filter((e=>{const i=Oe(e);return i&&Pe(i,t)})),c=new Set(l.map((e=>Oe(e))));let h=l.findIndex((e=>Oe(e)===Oe(i.chapterTitle)));if(-1===h&&(h=0),h0)for(let t=0;tChapter ${t}`),n.push(`

Chapter ${t}

`)}for(const e of a){const t=Oe(e);t&&c.has(t)?n.push(`

${t}

`):n.push(`

${e}

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

${i}

`):n.push(`

${e}

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

Title

${e}

`})(e,i,r):e,"text/html");let o=_i(n);0===o.length&&(o=Qi(n));for(let e=0;e""};return h.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}))),h.toc=l.map((e=>({label:e.label,href:"title"+e.index}))).filter((e=>""!==e.label)),h.rendition={layout:"pre-paginated"},h.resolveHref=e=>({index:parseInt(e.substring(5,e.length))}),h.splitTOCHref=e=>[e,null],h.getTOCFragment=e=>e.documentElement,h},_i=e=>Array.from(e.querySelectorAll("h1,h2,h3,h4,h5,h6,title")),Yi=e=>{let t=[],i=e.split(" ").filter((e=>""!==e.trim())),r=i.map((e=>Zi(e)||Ki(e)));return t=i.map(((e,t)=>({index:t,label:r[t],text:e,href:"title"+t}))),t},Zi=e=>{var t;const i=(new DOMParser).parseFromString(e,"text/html").querySelector("h1, h2, h3, h4, h5, h6");return i&&(null===(t=i.textContent)||void 0===t?void 0:t.trim())||""},Ki=e=>{var t;const i=(new DOMParser).parseFromString(e,"text/html").querySelector("title");return i&&(null===(t=i.textContent)||void 0===t?void 0:t.trim())||""},Qi=e=>{let t=e.getElementsByTagName("*"),i=Array.from(t).filter((e=>1===e.childNodes.length&&e.childNodes[0].nodeType===Node.TEXT_NODE&&Pe(Oe(e.textContent)))),r=[];for(let e=0;ec(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse(t));let r=new T(this.book);this.chapterList=yield r.getChapter(this.book.toc),this.chapterDocList=yield r.getChapterDoc(),g(e);let n=this.getDocument();n&&(w(e,this.readerMode,n),i())}))))}parse(e){return c(this,void 0,void 0,(function*(){try{const t=new TextDecoder(this.charset),i=new Uint8Array(this.txtBuffer);let r=t.decode(i);this.book=Gi(r,!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 T(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 zt(this.book)}))}getMetadata(e){return c(this,void 0,void 0,(function*(){try{const t=4096,i=e.byteLength,r=Math.min(i,t),o=new Uint8Array(e,0,r);const s=n.detect(o)||"utf8";return this.charset=s,{charset:s}}catch(e){return console.error("Error detecting charset:",e),this.charset="utf8",{charset:"utf8"}}}))}}const tr=({entries:e,loadBlob:t,getSize:i},r,n)=>{const o=new Map,s=new Map,a=async(e,i)=>{if(o.has(e))return o.get(e);if(i){const r=URL.createObjectURL(await t(e)),n=URL.createObjectURL(await t(i)),a=URL.createObjectURL(new Blob([`
`],{type:"text/html"}));return s.set(e,[r,a]),o.set(e,a),a}{const i=URL.createObjectURL(await t(e)),r=URL.createObjectURL(new Blob([`
`],{type:"text/html"}));return s.set(e,[i,r]),o.set(e,r),r}},l=[".jpg",".jpeg",".png",".gif",".bmp",".webp",".svg"],c=e.map((e=>e.filename)).filter((e=>l.some((t=>e.endsWith(t))))).sort(((e,t)=>{const i=parseInt(e.replace(/\D/g,"")),r=parseInt(t.replace(/\D/g,""));return isNaN(i)||isNaN(r)?isNaN(i)?isNaN(r)?e.localeCompare(t):1:-1:i-r})),h={getCover:()=>t(c[0])};return h.metadata={title:r.name},h.sections=c.map(((e,t)=>({id:e,load:()=>{if("double"===n){const i=c[t+1];return a(e,i)}return a(e)},unload:()=>(e=>{s.get(e)?.forEach?.((e=>URL.revokeObjectURL(e))),s.delete(e),o.delete(e)})(e),size:i(e)}))).filter(((e,t)=>"double"!==n||t%2==0)),h.toc=c.map((e=>({label:e,href:e}))).filter(((e,t)=>"double"!==n||t%2==0)),h.rendition={layout:"pre-paginated"},h.resolveHref=e=>({index:h.sections.findIndex((t=>t.id===e))}),h.splitTOCHref=e=>[e,null],h.getTOCFragment=e=>e.documentElement,h};class ir extends jt{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,i)=>c(this,void 0,void 0,(function*(){if(this.element=e,g(e),!this.book)try{yield this.parse()}catch(e){console.error(e),i(e)}let r=new T(this.book);this.chapterList=yield r.getChapter(this.book.toc),this.chapterDocList=yield r.getChapterDoc();let n=this.getDocument();n&&(w(e,this.readerMode,n),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=tr(e,t,this.readerMode)}else if("CBT"===this.format){const e=yield this.makeTarLoader();this.book=tr(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,i){console.info(i)}}),yield new Promise((e=>setTimeout(e,200)));const e=yield this.makeRarLoader();this.book=tr(e,t,this.readerMode)}else if("CB7"===this.format){const e=yield this.make7zLoader();this.book=tr(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 zt(this.book)}))}makeZipLoader(e){return c(this,void 0,void 0,(function*(){let t=yield i.loadAsync(e);const r=t.files;return{entries:Object.values(r).map((e=>({filename:e.name}))),loadText:e=>c(this,void 0,void 0,(function*(){let i=t.file(e);return i?i.async("string"):""})),loadBlob:e=>c(this,void 0,void 0,(function*(){let i=t.file(e);if(i){let e=yield i.async("arraybuffer");return new Blob([e])}return new Blob([new ArrayBuffer(0)])})),getSize:e=>{let i=t.file(e);if(i)return i._data.uncompressedSize||1}}}))}makeTarLoader(){return c(this,void 0,void 0,(function*(){const e=yield o(this.comicBuffer),t=new Map(e.map((e=>[e.name,e]))),i=e=>(i,...r)=>t.has(i)?e(t.get(i),...r):null,r=i((e=>e.readAsString())),n=i(((e,t)=>e.blob));return{entries:e.map((e=>({filename:e.name}))),loadText:r,loadBlob:n,getSize:e=>{var i,r;return null!==(r=null===(i=t.get(e))||void 0===i?void 0:i.size)&&void 0!==r?r:1}}}))}makeRarLoader(){return c(this,void 0,void 0,(function*(){return new Promise(((e,t)=>{var i=[this.comicBuffer],r=[{name:"book.rar",content:this.comicBuffer}];this.rpc.transferables=i,this.rpc.unrar(r,null,0).then((t=>{let i=this.getRarEntries(t.ls);const r=new Map(Object.values(i).map((e=>[e.fullFileName,e]))),n=e=>(t,...i)=>r.has(t)?e(r.get(t),...i):null,o=n((e=>e.fullFileName)),s=n(((e,t)=>new Blob([e.fileContent])));e({entries:Object.values(i).map((e=>({filename:e.fullFileName}))),loadText:o,loadBlob:s,getSize:e=>{var t,i;return null!==(i=null===(t=r.get(e))||void 0===t?void 0:t.fileSize)&&void 0!==i?i: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}),i=new Uint8Array(this.comicBuffer),r="archive.cb7",n=t.FS.open(r,"w+");t.FS.write(n,i,0,i.length),t.FS.close(n),t.callMain(["x",r]);const o=t.FS,s=this.get7zEntries(o.lookupPath("/").node),a=new Map(s.map((e=>[e.name,e]))),l=e=>(t,...i)=>a.has(t)?e(a.get(t),...i):null,c=l((e=>e.name)),h=l(((e,t)=>new Blob([e.buffer])));return{entries:s.map((e=>({filename:e.name}))),loadText:c,loadBlob:h,getSize:e=>{var t,i;return null!==(i=null===(t=a.get(e))||void 0===t?void 0:t.size)&&void 0!==i?i:1}}}))}getRarEntries(e){const t=Object.keys(e);let i=[];for(let r=0;r"archive.cb7"!=e&&"dev"!=e&&"home"!=e&&"proc"!=e&&"tmp"!=e));let r=[];for(let e=0;ec(this,void 0,void 0,(function*(){try{this.book||(yield this.parse());const t=yield this.book.getCover();var i=new FileReader;i.readAsDataURL(t),i.onloadend=()=>{e({cover:i.result})}}catch(e){console.error(e),t(e)}}))))}))}}const rr=e=>e?.trim()?.replace(/\s{2,}/g," "),nr=e=>rr(e?.textContent),or={XLINK:"http://www.w3.org/1999/xlink",EPUB:"http://www.idpf.org/2007/ops"},sr="application/xml",ar="application/xhtml+xml",lr={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"},cr={epigraph:["blockquote"],subtitle:["h2",lr],"text-author":["p",lr],date:["p",lr],stanza:"stanza"},hr={title:["header",{p:["h1",lr],"empty-line":["br"]}],epigraph:["blockquote","self"],image:"image",annotation:["aside"],section:["section","self"],p:["p",lr],poem:["blockquote",cr],subtitle:["h2",lr],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",lr]};cr.epigraph.push(hr);const dr={image:"image",title:["section",{p:["h1",lr],"empty-line":["br"]}],epigraph:["section",hr],section:["section",hr]},ur=e=>{const t=e.getAttributeNS(or.XLINK,"href"),[,i]=t.split("#"),r=e.getRootNode().getElementById(i);return r?`data:${r.getAttribute("content-type")};base64,${r.textContent}`:t};class fr{constructor(e){this.fb2=e,this.doc=document.implementation.createDocument(or.XHTML,"html")}image(e){const t=this.doc.createElement("img");return t.alt=e.getAttribute("alt"),t.title=e.getAttribute("title"),t.setAttribute("src",ur(e)),t}anchor(e){const t=this.convert(e,{a:["a",lr]});return t.setAttribute("href",e.getAttributeNS(or.XLINK,"href")),"note"===e.getAttribute("type")&&t.setAttributeNS(or.EPUB,"epub:type","noteref"),t}stanza(e){const t=this.convert(e,{stanza:["p",{title:["header",{p:["strong",lr],"empty-line":["br"]}],subtitle:["p",lr]}]});for(const i of e.children)"v"===i.nodeName&&(t.append(this.doc.createTextNode(i.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 i=t?.[e.nodeName];if(!i)return null;if("string"==typeof i)return this[i](e);const[r,n]=i,o=this.doc.createElement(r);if(e.id&&(o.id=e.id),o.classList.add(e.nodeName),Array.isArray(n))for(const t of n)o.setAttribute(t,e.getAttribute(t));const s="self"===n?t:Array.isArray(n)?null:n;let a=e.firstChild;for(;a;){const e=this.convert(a,s);e&&o.append(e),a=a.nextSibling}return o}}const pr=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"})),gr="data-foliate-id",mr=async e=>{const t={},i=await(async e=>{const t=await e.arrayBuffer(),i=new TextDecoder("utf-8").decode(t),r=new DOMParser,n=r.parseFromString(i,sr),o=n.xmlEncoding||i.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 r.parseFromString(e,sr)}return n})(e),r=new fr(i),n=e=>i.querySelector(e),o=e=>[...i.querySelectorAll(e)],s=e=>{const t=nr(e.querySelector("nickname"));if(t)return t;const i=nr(e.querySelector("first-name")),r=nr(e.querySelector("middle-name")),n=nr(e.querySelector("last-name"));return{name:[i,r,n].filter((e=>e)).join(" "),sortAs:n?[n,[i,r].filter((e=>e)).join(" ")].join(", "):null}},a=e=>e?.getAttribute("value")??nr(e),l=n("title-info annotation");t.metadata={title:nr(n("title-info book-title")),identifier:nr(n("document-info id")),language:nr(n("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(nr)),publisher:nr(n("publish-info publisher")),published:a(n("title-info date")),modified:a(n("document-info date")),description:l?r.convert(l,{annotation:["div",hr]}).innerHTML:null,subject:o("title-info genre").map(nr)},t.getCover=()=>fetch(ur(n("coverpage image"))).then((e=>e.blob()));const c=Array.from(i.querySelectorAll("body"),(e=>{const t=r.convert(e,{body:["body",dr]});return[Array.from(t.children,(e=>{const t=[e,...e.querySelectorAll("[id]")].map((e=>e.id));return{el:e,ids:t}})),t]})),h=c[0][0].map((({el:e,ids:t})=>({ids:t,titles:Array.from(e.querySelectorAll(":scope > section > .title"),((e,t)=>(e.setAttribute(gr,t),{title:nr(e),index:t}))),el:e}))).concat(c.slice(1).map((([e,t])=>{const i=e.map((e=>e.ids)).flat();return t.classList.add("notesBodyType"),{ids:i,el:t,linear:"no"}}))).map((({ids:e,titles:t,el:i,linear:r})=>{const n=(o=i.outerHTML,`\n\n \n ${o}\n`);var o;const s=new Blob([n],{type:ar}),a=URL.createObjectURL(s);return{ids:e,title:rr(i.querySelector(".title, .subtitle, p")?.textContent??(i.classList.contains("title")?i.textContent:"")),titles:t,load:()=>a,createDocument:()=>(new DOMParser).parseFromString(n,ar),size:s.size-Array.from(i.querySelectorAll("[src]"),(e=>e.getAttribute("src")?.length??0)).reduce(((e,t)=>e+t),0),linear:r}})),d=new Map;return t.sections=h.map(((e,t)=>{const{ids:i,load:r,createDocument:n,size:o,linear:s}=e;for(const e of i)e&&d.set(e,t);return{id:t,load:r,createDocument:n,size:o,linear:s}})),t.toc=h.map((({title:e,titles:t},i)=>{const r=i.toString();return{label:e,href:r,subitems:t?.length?t.map((({title:e,index:t})=>({label:e,href:`${r}#${t}`}))):null}})).filter((e=>e)),t.resolveHref=e=>{const[t,i]=e.split("#");return t?{index:Number(t),anchor:e=>e.querySelector(`[${gr}="${i}"]`)}:{index:d.get(i),anchor:e=>e.getElementById(i)}},t.splitTOCHref=e=>e?.split("#")?.map((e=>Number(e)))??[],t.getTOCFragment=(e,t)=>e.querySelector(`[${gr}="${t}"]`),t};class yr extends jt{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"FB2"})),this.fb2Buffer=e}renderTo(e){return new Promise(((t,i)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let i=new T(this.book);this.chapterList=yield i.getChapter(this.book.toc),this.chapterDocList=yield i.getChapterDoc(),g(e);let r=this.getDocument();r&&(w(e,this.readerMode,r),t())}))))}parse(){return c(this,void 0,void 0,(function*(){try{let e=new Blob([this.fb2Buffer]);this.book=yield mr(e)}catch(e){throw console.error(e),e}}))}preCache(){return c(this,void 0,void 0,(function*(){return this.book||(yield this.parse()),yield zt(this.book)}))}getMetadata(){return c(this,void 0,void 0,(function*(){try{this.book||(yield this.parse());let e=new T(this.book);return yield e.getMetadata()}catch(e){throw console.error(e),e}}))}}class br extends jt{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"CACHE"})),this.cacheBuffer=e}renderTo(e){return new Promise(((t,i)=>c(this,void 0,void 0,(function*(){this.element=e,this.book=yield Ut(this.cacheBuffer);let i=new T(this.book);this.chapterList=yield i.getChapter(this.book.toc),this.chapterDocList=yield i.getChapterDoc(),g(e);let r=this.getDocument();r&&(w(e,this.readerMode,r),t())}))))}}class vr extends jt{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"DOCX"})),this.docxBuffer=e}renderTo(e){return new Promise(((t,i)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let i=new T(this.book);this.chapterList=yield i.getChapter(this.book.toc),this.chapterDocList=yield i.getChapterDoc(),g(e);let r=this.getDocument();r&&(w(e,this.readerMode,r),t())}))))}parse(){return c(this,void 0,void 0,(function*(){return new Promise(((e,t)=>{try{s.convertToHtml({arrayBuffer:this.docxBuffer}).then((t=>c(this,void 0,void 0,(function*(){this.book=Gi(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 zt(this.book)}))}}class wr extends jt{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"MD"})),this.mdBuffer=e}renderTo(e){return new Promise(((t,i)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let i=new T(this.book);this.chapterList=yield i.getChapter(this.book.toc),this.chapterDocList=yield i.getChapterDoc(),g(e);let r=this.getDocument();r&&(w(e,this.readerMode,r),t())}))))}parse(){return c(this,void 0,void 0,(function*(){return new Promise(((e,t)=>{try{var i=new Blob([this.mdBuffer],{type:"text/plain"}),r=new FileReader;r.onload=t=>c(this,void 0,void 0,(function*(){var i;let r=yield a(null===(i=t.target)||void 0===i?void 0:i.result);this.book=Gi(r,!1),e()})),r.readAsText(i,"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 zt(this.book)}))}}class xr extends jt{constructor(e,t){super(t),this.htmlBuffer=e}renderTo(e){return new Promise(((t,i)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let i=new T(this.book);this.chapterList=yield i.getChapter(this.book.toc),this.chapterDocList=yield i.getChapterDoc(),g(e);let r=this.getDocument();r&&(w(e,this.readerMode,r),t())}))))}parse(){return c(this,void 0,void 0,(function*(){return new Promise(((e,t)=>{try{var i=new Blob([this.htmlBuffer],{type:Wt[this.format.toLocaleLowerCase()]}),r=new FileReader;r.onload=t=>c(this,void 0,void 0,(function*(){var i;let r=null===(i=t.target)||void 0===i?void 0:i.result;"MHTML"===this.format&&(r=l.convert(r).window.document.documentElement.innerHTML),this.book=Gi(r,!1),e()})),r.readAsText(i,"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 zt(this.book)}))}}export{br as CacheRender,ir as ComicRender,vr as DocxRender,qt as EpubRender,yr as Fb2Render,xr as HtmlRender,wr as MdRender,Ri as MobiRender,Xi as PdfRender,Ji as PdfTextRender,er as TxtRender}; +import e from"underscore";import t from"rangy/lib/rangy-core.js";import"rangy/lib/rangy-textrange";import i from"jszip";import{unzlibSync as r}from"fflate";import n from"chardet";import o from"js-untar";import s from"mammoth";import{marked as a}from"marked";import l from"mhtml2html";function c(e,t,i,r){return new(i||(i=Promise))((function(n,o){function s(e){try{l(r.next(e))}catch(e){o(e)}}function a(e){try{l(r.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(s,a)}l((r=r.apply(e,t||[])).next())}))}const h=e=>e?parseFloat(e+""):0,d=(e,t)=>c(void 0,void 0,void 0,(function*(){let i="";if(e&&e.load){let t=yield fetch(yield e.load()).then((e=>e.blob()));i=yield t.text()}return t||(e&&e.loadAsset&&(i=yield f(i,e.loadAsset)),i=p(i)),i})),u=e=>Array.from(e.querySelectorAll("img, image")),f=(e,t)=>c(void 0,void 0,void 0,(function*(){let i=(new DOMParser).parseFromString(e,"text/html"),r=u(i);for(let e=0;e{let t=(new DOMParser).parseFromString(e,"text/html"),i=u(t);if(0===i.length)return e;for(let e=0;e{var i=document.createElement("iframe");i.style.width=t?100*(t-.4)+"%":"100%",i.style.margin="0",i.style.border="0",i.style.padding="0",i.style.minHeight="calc(100% - 2px)",i.style.fontSize="100%",i.style.font="inherit",i.scrolling="no",i.tabIndex=0,i.id="kookit-iframe",i.style.verticalAlign="baseline",e.innerHTML="",e.appendChild(i),t&&(e.scrollLeft=e.scrollWidth/2-e.clientWidth/2)},m=(e,t,i)=>{let r=Math.floor(i.clientWidth/12),n=r%2==0?r:r-1;return{totalPage:"scroll"===e?Math.floor(i.scrollHeight/(i.clientHeight-50)):"single"===e?Math.round(parseFloat(t.body.scrollWidth/(t.body.clientWidth+n)+"")):2*Math.round(parseFloat(t.body.scrollWidth/(t.body.clientWidth+n)+"")),currentPage:"scroll"===e?Math.floor(i.scrollTop/(i.clientHeight-50))+1:Math.round(parseFloat(h(t.body.scrollLeft)/(t.body.clientWidth+n)+""))+1}},y=e=>{var t;let i=e.querySelectorAll("a, article, cite, div, li, p, span, pre, dt, dd, table, bold, font");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})),v=(e,t,i,r)=>c(void 0,void 0,void 0,(function*(){var n,o;let s=Math.floor(e.clientWidth/12),a=s%2==0?s:s-1;e.clientWidth;let l=r.querySelectorAll("img, image");for(let s of l){let l=s.parentElement,c=0,h=0,d=s.naturalWidth,u=s.naturalHeight;if("image"===s.tagName){let e=yield b(s.getAttribute("xlink:href"));d=e.naturalWidth,u=e.naturalHeight}if(i.startsWith("CB")&&"scroll"===t)h=l.offsetWidth;else if(i.startsWith("CB")&&"single"===t)c=e.clientHeight,h=e.clientWidth;else if(l&&d&&u&&l.clientHeight&&l.clientWidth){u/d>l.clientHeight/l.clientWidth?(c=l.clientHeight,h=parseInt(c*d/u+"")):(h=l.clientWidth,c=parseInt(h*u/d+"")),c>r.body.clientHeight&&"scroll"!==t&&(h=parseInt(h*(r.body.clientHeight/c)+""),c=r.body.clientHeight),l.style.textIndent="0px"}else l&&l.clientWidth&&l.clientWidth>0?(h=l.clientWidth,c=l.clientHeight,l.style.textIndent="0px"):(h=e.clientWidth,c=e.clientHeight);h=h?Math.min("scroll"===t||"single"===t?e.clientWidth:(e.clientWidth-a)/2,h):"scroll"===t||"single"===t?e.clientWidth:(e.clientWidth-a)/2,d&&u&&(d>u||c/h>u/d?c=h*(u/d):h=c*(d/u)),(h||c)&&s.setAttribute("style",(s.getAttribute("style")?s.getAttribute("style"):"")+";"+`max-width: ${h>0?h+"px":""};max-height:${c>0?c+"px":""}; margin: 0 auto; min-width: 0px; min-height: 0px; ${i.startsWith("CB")?`margin-left: calc(100% - ${s.clientWidth}px);`:""}`),"image"===s.tagName&&(null===(n=s.parentElement)||void 0===n||n.setAttribute("width",h),null===(o=s.parentElement)||void 0===o||o.setAttribute("height",c)),i.startsWith("CB")&&"scroll"===t&&s.setAttribute("style",(s.getAttribute("style")?s.getAttribute("style"):"")+";margin-left: 0px; width: 100%;"),i.startsWith("CB")&&"scroll"!==t&&s.setAttribute("style",(s.getAttribute("style")?s.getAttribute("style"):"")+`;margin-left: calc(50% - ${s.getBoundingClientRect().width/2}px);`)}})),w=(e,t,i)=>{let r=i.createElement("style");if(r.id="default-style",r.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.head.appendChild(r),"scroll"===t)return;let n="double"===t?2:1,o=Math.floor(e.clientWidth/12),s=o%2==0?o:o-1;i.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)/n}px;`)};function x(e){const t=e.getSelection();if(!t)return null;if(t.rangeCount>0){return t.getRangeAt(0).startContainer.parentElement}return null}const C=e=>"string"==typeof e||e instanceof String;class T{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 i=t;try{i=e.href&&(yield this.book.resolveHref(e.href))?(yield this.book.resolveHref(e.href)).index:i}catch(e){console.error(e)}return{label:this.unescapeHtml(e.label)?this.unescapeHtml(e.label):i+"",href:e.href?e.href:"title"+i,index:i,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:this.unescapeHtml(e.label)?this.unescapeHtml(e.label):t+"",href:e.href?e.href:"title"+t,index:t,subitems: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,i)=>e.indexOf(i)>-1?{label:this.unescapeHtml(this.flattenChapters[e.indexOf(i)].label),href:this.flattenChapters[e.indexOf(i)].href,text:t}:{label:"",href:"",text:t}))}))}flatChapter(e){let t=[];for(let i=0;i0?(t.push(e[i]),t=t.concat(this.flatChapter(e[i].subitems))):t.push(e[i]);return t}getMetadata(){return new Promise(((e,t)=>c(this,void 0,void 0,(function*(){const i=this.book.metadata;let r=i.author&&i.author[0]&&i.author[0].name&&C(i.author[0].name)?i.author[0].name:i.author&&i.author[0]&&C(i.author[0])?i.author[0]:i.author&&C(i.author)?i.author:"";try{const t=yield this.book.getCover();var n=new FileReader;n.readAsDataURL(t),n.onloadend=()=>{e(Object.assign(Object.assign({},i),{name:i.title,author:r,description:i.description,publisher:i.publisher,cover:n.result}))}}catch(n){console.error(n);try{e(Object.assign(Object.assign({},i),{name:i.title,author:r,description:i.description,publisher:i.publisher,cover:""}))}catch(e){console.error(e),t(e)}}}))))}}const L=(e,t)=>[-1,...t,e.length].reduce((({xs:t,a:i},r)=>({xs:t?.concat([e.slice(i+1,r)])??[],a:r})),{}).xs,S=/\d/,M=/^epubcfi\((.*)\)$/,D=e=>e.replace(/[\^[\](),;=]/g,"^$&"),k=(e,t)=>{return i=([e])=>e===t,e.map(((e,t,r)=>i(e,t,r)?t:null)).filter((e=>null!=e));var i},A=e=>{const t=[];let i;for(const[r,n]of e){if("/"===r)t.push({index:n});else{const e=t[t.length-1];if(":"===r)e.offset=n;else if("~"===r)e.temporal=n;else if("@"===r)e.spatial=(e.spatial??[]).concat(n);else if(";s"===r)e.side=n;else if("["===r){if("/"!==i||!n){e.text=(e.text??[]).concat(n);continue}e.id=n}}i=r}return t},E=e=>L(e,k(e,"!")).map(A),I=e=>{const t=(e=>{const t=[];let i,r,n="";const o=e=>(t.push(e),i=null,n=""),s=e=>(n+=e,r=!1);for(const t of Array.from(e.trim()).concat(""))if("^"!==t||r){if("!"===i)o(["!"]);else if(","===i)o([","]);else if("/"===i||":"===i){if(S.test(t)){s(t);continue}o([i,parseInt(n)])}else if("~"===i){if(S.test(t)||"."===t){s(t);continue}o(["~",parseFloat(n)])}else if("@"===i){if(":"===t){o(["@",parseFloat(n)]),i="@";continue}if(S.test(t)||"."===t){s(t);continue}o(["@",parseFloat(n)])}else{if("["===i){";"!==t||r?","!==t||r?"]"!==t||r?s(t):o(["[",n]):(o(["[",n]),i="["):(o(["[",n]),i=";");continue}if(i?.startsWith(";")){"="!==t||r?";"!==t||r?"]"!==t||r?s(t):o([i,n]):(o([i,n]),i=";"):(i=`;${n}`,n="");continue}}"/"!==t&&":"!==t&&"~"!==t&&"@"!==t&&"["!==t&&"!"!==t&&","!==t||(i=t)}else r=!0;return t})((i=e,i.match(M)?.[1]??i));var i;const r=k(t,",");if(!r.length)return E(t);const[n,o,s]=L(t,r).map(E);return{parent:n,start:o,end:s}},N=({index:e,id:t,offset:i,temporal:r,spatial:n,text:o,side:s})=>{const a=s?`;s=${s}`:"";return`/${e}`+(t?`[${D(t)}${a}]`:"")+(null!=i&&e%2?`:${i}`:"")+(r?`~${r}`:"")+(n?`@${n.join(":")}`:"")+(o||!t&&s?"["+(o?.map(D)?.join(",")??"")+a+"]":"")},R=e=>e.parent?[e.parent,e.start,e.end].map(R).join(","):e.map((e=>e.map(N).join(""))).join("!"),O=e=>{return t=R(e),M.test(t)?t:`epubcfi(${t})`;var t},P=(e,t)=>{return"string"==typeof e?O(P(I(e),t)):e.parent?(i=e.parent,r=e[t?"end":"start"],i.slice(0,-1).concat([i[i.length-1].concat(r[0])]).concat(r.slice(1))):e;var i,r},B=({nodeType:e})=>3===e||4===e,F=({nodeType:e})=>1===e,H=e=>{const t=Array.from(e.childNodes).filter((e=>B(e)||F(e))).reduce(((e,t)=>{let i=e[e.length-1];return i?B(t)?Array.isArray(i)?i.push(t):B(i)?e[e.length-1]=[i,t]:e.push(t):F(i)?e.push(null,t):e.push(t):e.push(t),e}),[]);return F(t[0])&&t.unshift("first"),F(t[t.length-1])&&t.push("last"),t.unshift("before"),t.push("after"),t},j=(e,t)=>e?H(e)[t]:null,W=(e,t)=>{const{id:i}=t[t.length-1];if(i){const t=e.ownerDocument.getElementById(i);if(t)return{node:t,offset:0}}for(const{index:i}of t){const t=j(e,i);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:r}=t[t.length-1];if(!Array.isArray(e))return{node:e,offset:r};let n=0;for(const t of e){const{length:e}=t.nodeValue;if(n+e>=r)return{node:t,offset:r-n};n+=e}},$=(e,t)=>{const{parentNode:i,id:r}=e,n=H(i),o=n.findIndex((t=>Array.isArray(t)?t.some((t=>t===e)):t===e)),s=n[o];if(Array.isArray(s)){let i=0;for(const r of s){if(r===e){i+=t;break}i+=r.nodeValue.length}t=i}const a={id:r,index:o,offset:t};return i!==e.ownerDocument.documentElement?$(i).concat(a):[a]},U=(e,t)=>W(e.documentElement,P(t)).node,z="urn:oasis:names:tc:opendocument:xmlns:container",q="http://www.w3.org/1999/xhtml",V="http://www.idpf.org/2007/opf",X="http://www.idpf.org/2007/ops",J="http://purl.org/dc/elements/1.1/",G="http://www.w3.org/2001/04/xmlenc#",_="http://www.daisy.org/z3986/2005/ncx/",Y="http://www.w3.org/1999/xlink",Z="http://www.w3.org/ns/SMIL",K={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)/},Q=e=>e.toLowerCase().replace(/[-:](.)/g,((e,t)=>t.toUpperCase())),ee=(e,t,i)=>i?i=>i.getAttribute(e)?.split(/\s/)?.includes(t):"function"==typeof t?i=>t(i.getAttribute(e)):i=>i.getAttribute(e)===t,te=(...e)=>t=>t?Object.fromEntries(e.map((e=>[Q(e),t.getAttribute(e)]))):null,ie=e=>{return t=e?.textContent,t?t.trim().replace(/\s{2,}/g," "):"";var t},re=(e,t)=>{const i=e.lookupNamespaceURI(null)===t||e.lookupPrefix(t),r=i?(e,i)=>e=>e.namespaceURI===t&&e.localName===i:(e,t)=>e=>e.localName===t;return{$:(e,t)=>[...e.children].find(r(e,t)),$$:(e,t)=>[...e.children].filter(r(e,t)),$$$:i?(e,i)=>[...e.getElementsByTagNameNS(t,i)]:(e,i)=>[...e.getElementsByTagName(t,i)]}},ne=(e,t)=>{console.log(e,t);try{const i="whatever://whatever/";return decodeURI(new URL(e,i+t).href.replace(i,""))}catch(t){return console.warn(t),e}},oe=e=>/^(?!blob)\w+:/i.test(e),se=async(e,t,i)=>{const r=[];e.replace(t,((...e)=>(r.push(e),null)));const n=[];for(const e of r)n.push(await i(...e));return e.replace(t,(()=>n.shift()))},ae=e=>e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),le={attrs:["dir","xml:lang"]},ce={name:"alternate-script",many:!0,...le,props:["file-as"]},he={many:!0,...le,props:[{name:"role",many:!0,attrs:["scheme"]},"file-as",ce]},de=[{name:"title",many:!0,...le,props:["title-type","display-seq","file-as",ce]},{name:"identifier",many:!0,props:[{name:"identifier-type",attrs:["scheme"]}]},{name:"language",many:!0},{name:"creator",...he},{name:"contributor",...he},{name:"publisher",...le,props:["file-as",ce]},{name:"description",...le,props:[ce]},{name:"rights",...le,props:[ce]},{name:"date"},{name:"dcterms:modified",type:"meta"},{name:"subject",many:!0,...le,props:["term","authority",ce]},{name:"belongs-to-collection",type:"meta",many:!0,...le,props:["collection-type","group-position","dcterms:identifier","file-as",ce,{name:"belongs-to-collection",recursive:!0}]}],ue=(e,t=e=>e)=>{const{$:i,$$:r,$$$:n}=re(e,q),o=e=>r=>{const n=i(r,"a")??i(r,"span"),o=i(r,"ol"),a=(e=>e?decodeURI(t(e)):null)(n?.getAttribute("href")),l={label:ie(n)||n?.getAttribute("title"),href:a,subitems:s(o)};return e&&(l.type=n?.getAttributeNS(X,"type")?.split(/\s/)),l},s=(e,t)=>e?r(e,"li").map(o(t)):null,a=(e,t)=>s(i(e,"ol"),t),l=n(e,"nav");let c=null,h=null,d=null,u=[];for(const e of l){const t=e.getAttributeNS(X,"type")?.split(/\s/)??[];t.includes("toc")?c??=a(e):t.includes("page-list")?h??=a(e):t.includes("landmarks")?d??=a(e,!0):u.push({label:ie(e.firstElementChild),type:t,list:a(e)})}return{toc:c,pageList:h,landmarks:d,others:u}},fe=(e,t=e=>e)=>{const{$:i,$$:r}=re(e,_),n=e=>{const o=i(e,"navLabel"),s=i(e,"content"),a=ie(o),l=(e=>e?decodeURI(t(e)):null)(s.getAttribute("src"));if("navPoint"===e.localName){const t=r(e,"navPoint");return{label:a,href:l,subitems:t.length?t.map(n):null}}return{label:a,href:l}},o=(e,t)=>r(e,t).map(n),s=(t,r)=>{const n=i(e.documentElement,t);return n?o(n,r):null};return{toc:s("navMap","navPoint"),pageList:s("pageList","pageTarget"),others:r(e.documentElement,"navList").map((e=>({label:ie(i(e,"navLabel")),list:o(e,"navTarget")})))}},pe=e=>{if(!e)return;const t=e.split(":").map((e=>parseFloat(e)));if(3===t.length){const[e,i,r]=t;return 60*e*60+60*i+r}if(2===t.length){const[e,i]=t;return 60*e+i}const[i,r]=e.split(/(?=[^\d.])/);return parseFloat(i)*("h"===r?3600:"min"===r?60:"ms"===r?.001:1)},ge=/([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]),ye=async(e,t,i)=>{const r=new Uint8Array(await i.slice(0,t).arrayBuffer());t=Math.min(t,r.length);for(var n=0;n{const t=(new TextEncoder).encode(e),i=await globalThis.crypto.subtle.digest("SHA-1",t);return new Uint8Array(i)},ve=(e=be)=>({"http://www.idpf.org/2008/embedding":{key:t=>e(me(t).replaceAll(/[\u0020\u0009\u000d\u000a]/g,"")),decode:(e,t)=>ye(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(ge.test(e))return e}return""})(e).replaceAll("-","");return Uint8Array.from({length:16},((e,i)=>parseInt(t.slice(2*i,2*i+2),16)))},decode:(e,t)=>ye(e,1024,t)}});class we{#e=new Map;#t=new Map;#i;constructor(e){this.#i=e}async init(e,t){if(!e)return;const i=Array.from(e.getElementsByTagNameNS(G,"EncryptedData"),(e=>({algorithm:e.getElementsByTagNameNS(G,"EncryptionMethod")[0]?.getAttribute("Algorithm"),uri:e.getElementsByTagNameNS(G,"CipherReference")[0]?.getAttribute("URI")})));for(const{algorithm:e,uri:r}of i){if(!this.#t.has(e)){const i=this.#i[e];if(!i){console.warn("Unknown encryption algorithm");continue}const r=await i.key(t);this.#t.set(e,(e=>i.decode(r,e)))}this.#e.set(r,e)}}getDecoder(e){return this.#t.get(this.#e.get(e))??(e=>e)}}class xe{constructor({opf:e,resolveHref:t}){this.opf=e;const{$:i,$$:r,$$$:n}=re(e,V),o=i(e.documentElement,"manifest"),s=i(e.documentElement,"spine"),a=r(s,"itemref");this.manifest=r(o,"item").map(te("href","id","media-type","properties","media-overlay")).map((e=>(e.href=t(e.href),e.properties=e.properties?.split(/\s/),e))),this.spine=a.map(te("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===K.NCX)))?.href;const l=i(e.documentElement,"guide");l&&(this.guide=r(l,"reference").map(te("type","title","href")).map((({type:e,title:i,href:r})=>({label:i,type:e.split(/\s/),href:t(r)})))),this.cover=this.getItemByProperty("cover-image")??this.getItemByID("cover-image")??this.getItemByID(n(e,"meta").find(ee("name","cover"))?.getAttribute("content"))??this.getItemByID("cover")??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("xml")))?.href),this.cfis=(e=>{const t=[],{parentNode:i}=e[0],r=$(i);for(const[n,o]of H(i).entries()){const i=e[t.length];o===i&&t.push(O([r.concat({id:i.id,index:n})]))}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=I(e),i=(t.parent??t).shift();let r=U(this.opf,i);r&&"idref"!==r.nodeName&&(i.at(-1).id=null,r=U(this.opf,i));const n=r?.getAttribute("idref");return{index:this.spine.findIndex((e=>e.idref===n)),anchor:e=>((e,t)=>{const i=P(t),r=P(t,!0),n=e.documentElement,o=W(n,i[0]),s=W(n,r[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 Ce{#r=new Map;#n=new Map;#o=new Map;allowScript=!1;constructor({loadText:e,loadBlob:t,resources:i}){this.loadText=e,this.loadBlob=t,this.manifest=i.manifest,this.assets=i.manifest}createURL(e,t,i,r){if(!t)return"";const n=URL.createObjectURL(new Blob([t],{type:i}));if(this.#r.set(e,n),this.#o.set(e,1),r){const t=this.#n.get(r);t?t.push(e):this.#n.set(r,[e])}return n}ref(e,t){const i=this.#n.get(t);return i?.includes(e)||(this.#o.set(e,this.#o.get(e)+1),i?i.push(e):this.#n.set(t,[e])),this.#r.get(e)}unref(e){if(!this.#o.has(e))return;const t=this.#o.get(e)-1;if(t<1){URL.revokeObjectURL(this.#r.get(e)),this.#r.delete(e),this.#o.delete(e);const t=this.#n.get(e);if(t)for(;t.length;)this.unref(t.pop());this.#n.delete(e)}else this.#o.set(e,t)}async loadItem(e,t=[]){if(!e)return null;const{href:i,mediaType:r}=e,n=K.JS.test(e.mediaType);if(n&&!this.allowScript)return null;const o=t.at(-1);if(this.#r.has(i))return this.ref(i,o);return(n||[K.XHTML,K.HTML,K.CSS,K.SVG].includes(r))&&t.every((e=>e!==i))?this.loadReplaced(e,t):this.createURL(i,await this.loadBlob(i),r,o)}async loadHref(e,t,i=[]){if(oe(e))return e;const r=ne(e,t);let n=this.manifest.find((e=>e.href===r));return n||(n={href:r,mediaType:""}),this.loadItem(n,i.concat(t))}async loadReplaced(e,t=[]){const{href:i,mediaType:r}=e,n=t.at(-1),o=await this.loadText(i);if(!o)return null;if([K.XHTML,K.HTML,K.SVG].includes(r)){let s=(new DOMParser).parseFromString(o.trim(),r);if(r===K.XHTML&&s.querySelector("parsererror")&&(console.warn(s.querySelector("parsererror").innerText),e.mediaType=K.HTML,s=(new DOMParser).parseFromString(o.trim(),e.mediaType)),[K.XHTML,K.SVG].includes(e.mediaType)){let e=s.firstChild;for(;e instanceof ProcessingInstruction;){if(e.data){const r=await se(e.data,/(?:^|\s*)(href\s*=\s*['"])([^'"]*)(['"])/i,((e,r,n,o)=>this.loadHref(n,i,t).then((e=>`${r}${e}${o}`))));e.replaceWith(s.createProcessingInstruction(e.target,r))}e=e.nextSibling}}const a=async(e,r)=>e.setAttribute(r,await this.loadHref(e.getAttribute(r),i,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(Y,"href",await this.loadHref(e.getAttributeNS(Y,"href"),i,t));for(const e of s.querySelectorAll("style"))e.textContent&&(e.textContent=await this.replaceCSS(e.textContent,i,t));for(const e of s.querySelectorAll("[style]"))e.setAttribute("style",await this.replaceCSS(e.getAttribute("style"),i,t));const l=(new XMLSerializer).serializeToString(s);return this.createURL(i,l,e.mediaType,n)}const s=r===K.CSS?await this.replaceCSS(o,i,t):await this.replaceString(o,i,t);return this.createURL(i,s,r,n)}async replaceCSS(e,t,i=[]){const r=await se(e,/url\(\s*["']?([^'"\n]*?)\s*["']?\s*\)/gi,((e,r)=>this.loadHref(r,t,i).then((e=>`url("${e}")`)))),n=await se(r,/@import\s*["']([^"'\n]*?)["']/gi,((e,r)=>this.loadHref(r,t,i).then((e=>`@import "${e}"`)))),o=window?.innerWidth??800,s=window?.innerHeight??600;return n.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,i=[]){const r=new Map,n=this.assets.map((e=>{if(e.href===t)return;const i=((e,t)=>{if(!e)return t;const i=e.replace(/\/$/,"").split("/"),r=t.replace(/\/$/,"").split("/"),n=(i.length>r.length?i:r).findIndex(((e,t)=>i[t]!==r[t]));return n<0?"":Array(i.length-n).fill("..").concat(r.slice(n)).join("/")})((e=>e.slice(0,e.lastIndexOf("/")+1))(t),e.href),n=encodeURI(i),o="/"+e.href,s=encodeURI(o),a=new Set([i,n,o,s]);for(const t of a)r.set(t,e);return Array.from(a)})).flat().filter((e=>e));if(!n.length)return e;const o=new RegExp(n.map(ae).join("|"),"g");return se(e,o,(async e=>this.loadItem(r.get(e.replace(/^\//,"")),i.concat(t))))}unloadItem(e){this.unref(e?.href)}}const Te=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 Le{parser=new DOMParser;#s;constructor({loadText:e,loadBlob:t,getSize:i,sha1:r}){this.loadText=e,this.loadBlob=t,this.getSize=i,this.#s=new we(ve(r))}#a(e){return e&&e.includes("opf:scheme")&&(e=e.replaceAll("opf:scheme","scheme")),e?this.parser.parseFromString(e.trim(),K.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(z,"rootfile"),te("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 i=t[0].fullPath,r=await this.#l(i);if(!r)throw new Error("Failed to load package document");const n=await this.#l("META-INF/encryption.xml");await this.#s.init(n,r),this.resources=new xe({opf:r,resolveHref:e=>ne(e,i)});const o=new Ce({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:i,linear:r,properties:n=[]}=e,s=this.resources.getItemByID(i);return s?{id:this.resources.getItemByID(i)?.href,load:()=>o.loadItem(s),unload:()=>o.unloadItem(s),createDocument:()=>this.loadDocument(s),size:this.getSize(s.href),cfi:this.resources.cfis[t],linear:r,pageSpread:Te(n),resolveHref:e=>ne(e,s.href),loadMediaOverlay:()=>this.loadMediaOverlay(s)}:(console.warn(`Could not find item with ID "${i}" in manifest`),null)}));const{navPath:s,ncxPath:a}=this.resources;if(s)try{const e=e=>ne(e,s),t=ue(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=>ne(e,a),t=fe(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:c,media:h}=(e=>{const{$:t,$$:i}=re(e,V),r=t(e.documentElement,"metadata"),n=Array.from(r.children),o=(e,t)=>{if(!t)return null;const{props:i=[],attrs:r=[]}=e,s=ie(t);if(!i.length&&!r.length)return s;const a=t.getAttribute("id"),l=a?n.filter(ee("refines","#"+a)):[];return Object.fromEntries([["value",s]].concat(i.map((t=>{const{many:i,recursive:r}=t,n="string"==typeof t?t:t.name,s=ee("property",n),a=r?e:t;return[Q(n),i?l.filter(s).map((e=>o(a,e))):o(a,l.find(s))]}))).concat(r.map((e=>[Q(e),t.getAttribute(e)]))))},s=n.filter(ee("refines",null)),a=e=>Object.fromEntries(i(r,"meta").filter(ee("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:i,many:r}=e,n="meta"===t?e=>e.namespaceURI===V&&e.getAttribute("property")===i:e=>e.namespaceURI===J&&e.localName===i;return[Q(i),r?s.filter(n).map((t=>o(e,t))):o(e,s.find(n))]}))),rendition:a("rendition:"),media:a("media:")}})(r);this.rendition=c,this.media=h,h.duration=pe(h.duration),this.dir=this.resources.pageProgressionDirection,this.rawMetadata=l;const d=l?.title?.[0];this.metadata={title:d?.value,sortAs:d?.fileAs,language:l?.language,identifier:me(r),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:i})=>({name:e,code:t,scheme:i}))),rights:l?.rights?.value};const u={art:"artist",aut:"author",bkp:"producer",clr:"colorist",edt:"editor",ill:"illustrator",trl:"translator",pbl:"publisher"},f=e=>t=>{const i=[...new Set(t.role?.map((({value:t,scheme:i})=>(i&&"marc:relators"!==i?null:u[t])??e)))],r={name:t.value,sortAs:t.fileAs};return[i?.length?i:[e],r]};return l?.creator?.map(f("author"))?.concat(l?.contributor?.map?.(f("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 i=this.resources.getItemByID(t),r=((e,t=e=>e)=>{const{$:i,$$$:r}=re(e,Z);return r(e,"par").map((e=>{const r=i(e,"text")?.getAttribute("src")?.split("#")?.[1],n=i(e,"audio");return n?{id:r,audio:{src:(o=n.getAttribute("src"),o?decodeURI(t(o)):null),clipBegin:pe(n.getAttribute("clipBegin")),clipEnd:pe(n.getAttribute("clipEnd"))}}:{id:r};var o}))})(await this.#l(i.href),(e=>ne(e,i.href)));return r}resolveCFI(e){return this.resources.resolveCFI(e)}resolveHref(e){const[t,i]=e.split("#"),r=this.resources.getItemByHref(decodeURI(t));if(!r)return null;return{index:this.resources.spine.findIndex((({idref:e})=>e===r.id)),anchor:i?e=>((e,t)=>e.getElementById(t)??e.querySelector(`[name="${CSS.escape(t)}"]`))(e,i):()=>0}}splitTOCHref(e){return e?.split("#")??[]}getTOCFragment(e,t){return e.getElementById(t)??e.querySelector(`[name="${CSS.escape(t)}"]`)}isExternal(e){return oe(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 Se={"㐷":"傌","㐹":"㑶","㐽":"偑","㑇":"㑳","㑈":"倲","㑔":"㑯","㑩":"儸","㓆":"𠗣","㓥":"劏","㓰":"劃","㔉":"劚","㖊":"噚","㖞":"喎","㘎":"㘚","㚯":"㜄","㛀":"媰","㛟":"𡞵","㛠":"𡢃","㛣":"㜏","㛤":"孋","㛿":"𡠹","㟆":"㠏","㟜":"𡾱","㟥":"嵾","㡎":"幓","㤘":"㥮","㤽":"懤","㥪":"慺","㧏":"掆","㧐":"㩳","㧑":"撝","㧟":"擓","㧰":"擽","㨫":"㩜","㭎":"棡","㭏":"椲","㭣":"𣙎","㭤":"樢","㭴":"樫","㱩":"殰","㱮":"殨","㲿":"瀇","㳔":"濧","㳕":"灡","㳠":"澾","㳡":"濄","㳢":"𣾷","㳽":"瀰","㴋":"潚","㶉":"鸂","㶶":"燶","㶽":"煱","㺍":"獱","㻅":"璯","㻏":"𤫩","㻘":"𤪺","䀥":"䁻","䁖":"瞜","䂵":"碽","䃅":"磾","䅉":"稏","䅟":"穇","䅪":"𥢢","䇲":"筴","䉤":"籔","䌶":"䊷","䌷":"紬","䌸":"縳","䌹":"絅","䌺":"䋙","䌻":"䋚","䌼":"綐","䌽":"綵","䌾":"䋻","䌿":"䋹","䍀":"繿","䍁":"繸","䍠":"䍦","䎬":"䎱","䏝":"膞","䑽":"𦪙","䓓":"薵","䓕":"薳","䓖":"藭","䓨":"罃","䗖":"螮","䘛":"𧝞","䘞":"𧜗","䙊":"𧜵","䙌":"䙡","䙓":"襬","䜣":"訢","䜤":"鿁","䜥":"𧩙","䜧":"䜀","䜩":"讌","䝙":"貙","䞌":"𧵳","䞍":"䝼","䞎":"𧶧","䞐":"賰","䟢":"躎","䢀":"𨊰","䢁":"𨊸","䢂":"𨋢","䥺":"釾","䥽":"鏺","䥾":"䥱","䥿":"𨯅","䦀":"𨦫","䦁":"𨧜","䦂":"䥇","䦃":"鐯","䦅":"鐥","䦆":"钁","䦶":"䦛","䦷":"䦟","䩄":"靦","䭪":"𩞯","䯃":"𩣑","䯄":"騧","䯅":"䯀","䲝":"䱽","䲞":"𩶘","䲟":"鮣","䲠":"鰆","䲡":"鰌","䲢":"鰧","䲣":"䱷","䴓":"鳾","䴔":"鵁","䴕":"鴷","䴖":"鶄","䴗":"鶪","䴘":"鷉","䴙":"鸊","䶮":"龑","万":"萬","与":"與","丑":"醜","专":"專","业":"業","丛":"叢","东":"東","丝":"絲","丢":"丟","两":"兩","严":"嚴","丧":"喪","个":"個","丰":"豐","临":"臨","为":"爲","丽":"麗","举":"舉","么":"麼","义":"義","乌":"烏","乐":"樂","乔":"喬","习":"習","乡":"鄉","书":"書","买":"買","乱":"亂","了":"了","争":"爭","于":"於","亏":"虧","云":"雲","亘":"亙","亚":"亞","产":"產","亩":"畝","亲":"親","亵":"褻","亸":"嚲","亿":"億","仅":"僅","仆":"僕","仇":"仇","从":"從","仑":"侖","仓":"倉","仪":"儀","们":"們","价":"價","仿":"仿","众":"衆","优":"優","伙":"夥","会":"會","伛":"傴","伞":"傘","伟":"偉","传":"傳","伡":"俥","伣":"俔","伤":"傷","伥":"倀","伦":"倫","伧":"傖","伪":"僞","伫":"佇","体":"體","余":"餘","佛":"佛","佣":"傭","佥":"僉","侠":"俠","侣":"侶","侥":"僥","侦":"偵","侧":"側","侨":"僑","侩":"儈","侪":"儕","侬":"儂","侭":"儘","俊":"俊","俣":"俁","俦":"儔","俨":"儼","俩":"倆","俪":"儷","俫":"倈","俭":"儉","修":"修","借":"借","债":"債","倾":"傾","偬":"傯","偻":"僂","偾":"僨","偿":"償","傤":"儎","傥":"儻","傧":"儐","储":"儲","傩":"儺","僵":"僵","儿":"兒","克":"克","兑":"兌","兖":"兗","党":"黨","兰":"蘭","关":"關","兴":"興","兹":"茲","养":"養","兽":"獸","冁":"囅","内":"內","冈":"岡","册":"冊","写":"寫","军":"軍","农":"農","冬":"冬","冯":"馮","冲":"衝","决":"決","况":"況","冻":"凍","净":"淨","凄":"悽","准":"準","凉":"涼","凌":"凌","减":"減","凑":"湊","凛":"凜","几":"幾","凤":"鳳","凫":"鳧","凭":"憑","凯":"凱","凶":"兇","出":"出","击":"擊","凿":"鑿","刍":"芻","划":"劃","刘":"劉","则":"則","刚":"剛","创":"創","删":"刪","别":"別","刬":"剗","刭":"剄","刮":"刮","制":"制","刹":"剎","刽":"劊","刾":"㓨","刿":"劌","剀":"剴","剂":"劑","剐":"剮","剑":"劍","剥":"剝","剧":"劇","劝":"勸","办":"辦","务":"務","劢":"勱","动":"動","励":"勵","劲":"勁","劳":"勞","势":"勢","勋":"勳","勚":"勩","匀":"勻","匦":"匭","匮":"匱","区":"區","医":"醫","千":"千","升":"升","华":"華","协":"協","单":"單","卖":"賣","卜":"卜","占":"佔","卢":"盧","卤":"滷","卧":"臥","卫":"衛","却":"卻","卷":"卷","卺":"巹","厂":"廠","厅":"廳","历":"歷","厉":"厲","压":"壓","厌":"厭","厍":"厙","厐":"龎","厕":"廁","厘":"釐","厢":"廂","厣":"厴","厦":"廈","厨":"廚","厩":"廄","厮":"廝","县":"縣","叁":"叄","参":"參","叆":"靉","叇":"靆","双":"雙","发":"發","变":"變","叙":"敘","叠":"疊","只":"只","台":"臺","叶":"葉","号":"號","叹":"嘆","叽":"嘰","吁":"籲","吃":"喫","合":"合","吊":"吊","同":"同","后":"後","向":"向","吓":"嚇","吕":"呂","吗":"嗎","吨":"噸","听":"聽","启":"啓","吴":"吳","呐":"吶","呒":"嘸","呓":"囈","呕":"嘔","呖":"嚦","呗":"唄","员":"員","呙":"咼","呛":"嗆","呜":"嗚","周":"周","咏":"詠","咙":"嚨","咛":"嚀","咝":"噝","咤":"吒","咨":"諮","咸":"鹹","咽":"咽","哄":"哄","响":"響","哑":"啞","哒":"噠","哓":"嘵","哔":"嗶","哕":"噦","哗":"譁","哙":"噲","哜":"嚌","哝":"噥","哟":"喲","唇":"脣","唛":"嘜","唝":"嗊","唠":"嘮","唡":"啢","唢":"嗩","唤":"喚","啧":"嘖","啬":"嗇","啭":"囀","啮":"齧","啯":"嘓","啰":"囉","啴":"嘽","啸":"嘯","喂":"喂","喷":"噴","喽":"嘍","喾":"嚳","嗫":"囁","嗳":"噯","嘘":"噓","嘤":"嚶","嘱":"囑","噜":"嚕","噪":"噪","嚣":"囂","回":"回","团":"團","园":"園","困":"困","囱":"囪","围":"圍","囵":"圇","国":"國","图":"圖","圆":"圓","圣":"聖","圹":"壙","场":"場","坏":"壞","块":"塊","坚":"堅","坛":"壇","坜":"壢","坝":"壩","坞":"塢","坟":"墳","坠":"墜","垄":"壟","垅":"壠","垆":"壚","垒":"壘","垦":"墾","垩":"堊","垫":"墊","垭":"埡","垯":"墶","垱":"壋","垲":"塏","垴":"堖","埘":"塒","埙":"壎","埚":"堝","堑":"塹","堕":"墮","塆":"壪","墙":"牆","壮":"壯","声":"聲","壳":"殼","壶":"壺","壸":"壼","处":"處","备":"備","复":"復","够":"夠","夫":"夫","头":"頭","夸":"誇","夹":"夾","夺":"奪","奁":"奩","奂":"奐","奋":"奮","奖":"獎","奥":"奧","奸":"奸","妆":"妝","妇":"婦","妈":"媽","妩":"嫵","妪":"嫗","妫":"嬀","姗":"姍","姜":"姜","姹":"奼","娄":"婁","娅":"婭","娆":"嬈","娇":"嬌","娈":"孌","娘":"娘","娱":"娛","娲":"媧","娴":"嫺","婳":"嫿","婴":"嬰","婵":"嬋","婶":"嬸","媪":"媼","媭":"嬃","嫒":"嬡","嫔":"嬪","嫱":"嬙","嬷":"嬤","孙":"孫","学":"學","孪":"孿","宁":"寧","它":"它","宝":"寶","实":"實","宠":"寵","审":"審","宪":"憲","宫":"宮","家":"家","宽":"寬","宾":"賓","寝":"寢","对":"對","寻":"尋","导":"導","寿":"壽","将":"將","尔":"爾","尘":"塵","尝":"嘗","尧":"堯","尴":"尷","尸":"屍","尽":"盡","局":"局","层":"層","屃":"屓","屉":"屜","届":"屆","属":"屬","屡":"屢","屦":"屨","屿":"嶼","岁":"歲","岂":"豈","岖":"嶇","岗":"崗","岘":"峴","岚":"嵐","岛":"島","岩":"巖","岭":"嶺","岳":"嶽","岽":"崬","岿":"巋","峃":"嶨","峄":"嶧","峡":"峽","峣":"嶢","峤":"嶠","峥":"崢","峦":"巒","峰":"峯","崂":"嶗","崃":"崍","崄":"嶮","崭":"嶄","嵘":"嶸","嵚":"嶔","嵝":"嶁","巅":"巔","巨":"巨","巩":"鞏","巯":"巰","币":"幣","布":"布","帅":"帥","师":"師","帏":"幃","帐":"帳","帘":"簾","帜":"幟","带":"帶","帧":"幀","席":"席","帮":"幫","帱":"幬","帻":"幘","帼":"幗","幂":"冪","干":"幹","并":"並","幸":"幸","广":"廣","庄":"莊","庆":"慶","床":"牀","庐":"廬","庑":"廡","库":"庫","应":"應","庙":"廟","庞":"龐","废":"廢","庵":"庵","庼":"廎","廪":"廩","开":"開","异":"異","弃":"棄","弑":"弒","张":"張","弥":"彌","弦":"弦","弪":"弳","弯":"彎","弹":"彈","强":"強","归":"歸","当":"當","录":"錄","彟":"彠","彦":"彥","彨":"彲","彩":"彩","彻":"徹","征":"徵","径":"徑","徕":"徠","御":"御","忆":"憶","忏":"懺","志":"志","忧":"憂","念":"念","忾":"愾","怀":"懷","态":"態","怂":"慫","怃":"憮","怄":"慪","怅":"悵","怆":"愴","怜":"憐","总":"總","怼":"懟","怿":"懌","恋":"戀","恒":"恆","恤":"恤","恳":"懇","恶":"惡","恸":"慟","恹":"懨","恺":"愷","恻":"惻","恼":"惱","恽":"惲","悦":"悅","悫":"愨","悬":"懸","悭":"慳","悮":"悞","悯":"憫","惊":"驚","惧":"懼","惨":"慘","惩":"懲","惫":"憊","惬":"愜","惭":"慚","惮":"憚","惯":"慣","愈":"愈","愠":"慍","愤":"憤","愦":"憒","愿":"願","慑":"懾","慭":"憖","懑":"懣","懒":"懶","懔":"懍","戆":"戇","戋":"戔","戏":"戲","戗":"戧","战":"戰","戚":"戚","戬":"戩","戯":"戱","户":"戶","才":"才","扎":"扎","扑":"撲","托":"託","扣":"扣","执":"執","扩":"擴","扪":"捫","扫":"掃","扬":"揚","扰":"擾","折":"折","抚":"撫","抛":"拋","抟":"摶","抠":"摳","抡":"掄","抢":"搶","护":"護","报":"報","抵":"抵","担":"擔","拐":"拐","拟":"擬","拢":"攏","拣":"揀","拥":"擁","拦":"攔","拧":"擰","拨":"撥","择":"擇","挂":"掛","挚":"摯","挛":"攣","挜":"掗","挝":"撾","挞":"撻","挟":"挾","挠":"撓","挡":"擋","挢":"撟","挣":"掙","挤":"擠","挥":"揮","挦":"撏","挨":"挨","挽":"挽","捝":"挩","捞":"撈","损":"損","捡":"撿","换":"換","捣":"搗","据":"據","掳":"擄","掴":"摑","掷":"擲","掸":"撣","掺":"摻","掼":"摜","揽":"攬","揾":"搵","揿":"撳","搀":"攙","搁":"擱","搂":"摟","搄":"揯","搅":"攪","搜":"搜","携":"攜","摄":"攝","摅":"攄","摆":"擺","摇":"搖","摈":"擯","摊":"攤","撄":"攖","撑":"撐","撵":"攆","撷":"擷","撸":"擼","撺":"攛","擜":"㩵","擞":"擻","攒":"攢","敌":"敵","敚":"敓","敛":"斂","敩":"斆","数":"數","斋":"齋","斓":"斕","斗":"鬥","斩":"斬","断":"斷","旋":"旋","无":"無","旧":"舊","时":"時","旷":"曠","旸":"暘","昆":"昆","昙":"曇","昵":"暱","昼":"晝","昽":"曨","显":"顯","晋":"晉","晒":"曬","晓":"曉","晔":"曄","晕":"暈","晖":"暉","暂":"暫","暅":"𣈶","暗":"暗","暧":"曖","曲":"曲","术":"術","朱":"朱","朴":"樸","机":"機","杀":"殺","杂":"雜","权":"權","杆":"杆","杠":"槓","条":"條","来":"來","杨":"楊","杩":"榪","杯":"杯","杰":"傑","松":"松","板":"板","极":"極","构":"構","枞":"樅","枢":"樞","枣":"棗","枥":"櫪","枧":"梘","枨":"棖","枪":"槍","枫":"楓","枭":"梟","柜":"櫃","柠":"檸","柽":"檉","栀":"梔","栅":"柵","标":"標","栈":"棧","栉":"櫛","栊":"櫳","栋":"棟","栌":"櫨","栎":"櫟","栏":"欄","树":"樹","栖":"棲","栗":"栗","样":"樣","核":"核","栾":"欒","桠":"椏","桡":"橈","桢":"楨","档":"檔","桤":"榿","桥":"橋","桦":"樺","桧":"檜","桨":"槳","桩":"樁","桪":"樳","梁":"梁","梦":"夢","梼":"檮","梾":"棶","梿":"槤","检":"檢","棁":"梲","棂":"欞","椁":"槨","椝":"槼","椟":"櫝","椠":"槧","椢":"槶","椤":"欏","椫":"樿","椭":"橢","椮":"槮","楼":"樓","榄":"欖","榅":"榲","榇":"櫬","榈":"櫚","榉":"櫸","榝":"樧","槚":"檟","槛":"檻","槟":"檳","槠":"櫧","横":"橫","樯":"檣","樱":"櫻","橥":"櫫","橱":"櫥","橹":"櫓","橼":"櫞","檩":"檁","欢":"歡","欤":"歟","欧":"歐","欲":"欲","歼":"殲","殁":"歿","殇":"殤","残":"殘","殒":"殞","殓":"殮","殚":"殫","殡":"殯","殴":"毆","毁":"毀","毂":"轂","毕":"畢","毙":"斃","毡":"氈","毵":"毿","毶":"𣯶","氇":"氌","气":"氣","氢":"氫","氩":"氬","氲":"氳","汇":"匯","汉":"漢","汤":"湯","汹":"洶","沄":"澐","沈":"沈","沟":"溝","没":"沒","沣":"灃","沤":"漚","沥":"瀝","沦":"淪","沧":"滄","沨":"渢","沩":"潙","沪":"滬","沾":"沾","泛":"泛","泞":"濘","注":"注","泪":"淚","泶":"澩","泷":"瀧","泸":"瀘","泺":"濼","泻":"瀉","泼":"潑","泽":"澤","泾":"涇","洁":"潔","洒":"灑","洼":"窪","浃":"浹","浅":"淺","浆":"漿","浇":"澆","浈":"湞","浉":"溮","浊":"濁","测":"測","浍":"澮","济":"濟","浏":"瀏","浐":"滻","浑":"渾","浒":"滸","浓":"濃","浔":"潯","浕":"濜","涂":"塗","涌":"湧","涚":"涗","涛":"濤","涝":"澇","涞":"淶","涟":"漣","涠":"潿","涡":"渦","涢":"溳","涣":"渙","涤":"滌","润":"潤","涧":"澗","涨":"漲","涩":"澀","淀":"澱","渊":"淵","渌":"淥","渍":"漬","渎":"瀆","渐":"漸","渑":"澠","渔":"漁","渖":"瀋","渗":"滲","温":"溫","游":"遊","湾":"灣","湿":"溼","溁":"濚","溃":"潰","溅":"濺","溆":"漵","溇":"漊","滗":"潷","滚":"滾","滞":"滯","滟":"灩","滠":"灄","满":"滿","滢":"瀅","滤":"濾","滥":"濫","滦":"灤","滨":"濱","滩":"灘","滪":"澦","漓":"漓","潆":"瀠","潇":"瀟","潋":"瀲","潍":"濰","潜":"潛","潴":"瀦","澛":"瀂","澜":"瀾","濑":"瀨","濒":"瀕","灏":"灝","灭":"滅","灯":"燈","灵":"靈","灶":"竈","灾":"災","灿":"燦","炀":"煬","炉":"爐","炖":"燉","炜":"煒","炝":"熗","点":"點","炼":"煉","炽":"熾","烁":"爍","烂":"爛","烃":"烴","烛":"燭","烟":"煙","烦":"煩","烧":"燒","烨":"燁","烩":"燴","烫":"燙","烬":"燼","热":"熱","焕":"煥","焖":"燜","焘":"燾","煴":"熅","熏":"燻","爱":"愛","爷":"爺","牍":"牘","牦":"犛","牵":"牽","牺":"犧","犊":"犢","状":"狀","犷":"獷","犸":"獁","犹":"猶","狈":"狽","狝":"獮","狞":"獰","独":"獨","狭":"狹","狮":"獅","狯":"獪","狰":"猙","狱":"獄","狲":"猻","猃":"獫","猎":"獵","猕":"獼","猡":"玀","猪":"豬","猫":"貓","猬":"蝟","献":"獻","獭":"獺","玑":"璣","玙":"璵","玚":"瑒","玛":"瑪","玩":"玩","玮":"瑋","环":"環","现":"現","玱":"瑲","玺":"璽","珐":"琺","珑":"瓏","珰":"璫","珲":"琿","琎":"璡","琏":"璉","琐":"瑣","琼":"瓊","瑶":"瑤","瑷":"璦","瑸":"璸","璇":"璇","璎":"瓔","瓒":"瓚","瓮":"甕","瓯":"甌","电":"電","画":"畫","畅":"暢","畴":"疇","疖":"癤","疗":"療","疟":"瘧","疠":"癘","疡":"瘍","疬":"癧","疭":"瘲","疮":"瘡","疯":"瘋","疱":"皰","疴":"痾","症":"症","痈":"癰","痉":"痙","痒":"癢","痖":"瘂","痨":"癆","痪":"瘓","痫":"癇","痴":"癡","瘅":"癉","瘆":"瘮","瘗":"瘞","瘘":"瘻","瘪":"癟","瘫":"癱","瘾":"癮","瘿":"癭","癞":"癩","癣":"癬","癫":"癲","皂":"皁","皑":"皚","皱":"皺","皲":"皸","盏":"盞","盐":"鹽","监":"監","盖":"蓋","盗":"盜","盘":"盤","眍":"瞘","眦":"眥","眬":"矓","睁":"睜","睐":"睞","睑":"瞼","瞆":"瞶","瞒":"瞞","瞩":"矚","矩":"矩","矫":"矯","矶":"磯","矾":"礬","矿":"礦","砀":"碭","码":"碼","砖":"磚","砗":"硨","砚":"硯","砜":"碸","砺":"礪","砻":"礱","砾":"礫","础":"礎","硁":"硜","硕":"碩","硖":"硤","硗":"磽","硙":"磑","硚":"礄","确":"確","硵":"磠","硷":"礆","碍":"礙","碛":"磧","碜":"磣","碱":"鹼","礼":"禮","祃":"禡","祎":"禕","祢":"禰","祯":"禎","祷":"禱","祸":"禍","禀":"稟","禄":"祿","禅":"禪","离":"離","私":"私","秃":"禿","秆":"稈","秋":"秋","种":"種","秘":"祕","积":"積","称":"稱","秽":"穢","秾":"穠","稆":"穭","税":"稅","稣":"穌","稳":"穩","穑":"穡","穞":"穭","穷":"窮","窃":"竊","窍":"竅","窎":"窵","窑":"窯","窜":"竄","窝":"窩","窥":"窺","窦":"竇","窭":"窶","竖":"豎","竞":"競","笃":"篤","笋":"筍","笔":"筆","笕":"筧","笺":"箋","笼":"籠","笾":"籩","筑":"築","筚":"篳","筛":"篩","筜":"簹","筝":"箏","筹":"籌","筼":"篔","签":"籤","筿":"篠","简":"簡","箓":"籙","箦":"簀","箧":"篋","箨":"籜","箩":"籮","箪":"簞","箫":"簫","篑":"簣","篓":"簍","篮":"籃","篯":"籛","篱":"籬","簖":"籪","籁":"籟","籴":"糴","类":"類","籼":"秈","粜":"糶","粝":"糲","粤":"粵","粪":"糞","粮":"糧","粽":"糉","糁":"糝","糇":"餱","糍":"餈","系":"系","紧":"緊","絷":"縶","緼":"縕","縆":"緪","纟":"糹","纠":"糾","纡":"紆","红":"紅","纣":"紂","纤":"纖","纥":"紇","约":"約","级":"級","纨":"紈","纩":"纊","纪":"紀","纫":"紉","纬":"緯","纭":"紜","纮":"紘","纯":"純","纰":"紕","纱":"紗","纲":"綱","纳":"納","纴":"紝","纵":"縱","纶":"綸","纷":"紛","纸":"紙","纹":"紋","纺":"紡","纻":"紵","纼":"紖","纽":"紐","纾":"紓","线":"線","绀":"紺","绁":"紲","绂":"紱","练":"練","组":"組","绅":"紳","细":"細","织":"織","终":"終","绉":"縐","绊":"絆","绋":"紼","绌":"絀","绍":"紹","绎":"繹","经":"經","绐":"紿","绑":"綁","绒":"絨","结":"結","绔":"絝","绕":"繞","绖":"絰","绗":"絎","绘":"繪","给":"給","绚":"絢","绛":"絳","络":"絡","绝":"絕","绞":"絞","统":"統","绠":"綆","绡":"綃","绢":"絹","绣":"繡","绤":"綌","绥":"綏","绦":"絛","继":"繼","绨":"綈","绩":"績","绪":"緒","绫":"綾","绬":"緓","续":"續","绮":"綺","绯":"緋","绰":"綽","绱":"鞝","绲":"緄","绳":"繩","维":"維","绵":"綿","绶":"綬","绷":"繃","绸":"綢","绹":"綯","绺":"綹","绻":"綣","综":"綜","绽":"綻","绾":"綰","绿":"綠","缀":"綴","缁":"緇","缂":"緙","缃":"緗","缄":"緘","缅":"緬","缆":"纜","缇":"緹","缈":"緲","缉":"緝","缊":"縕","缋":"繢","缌":"緦","缍":"綞","缎":"緞","缏":"緶","缐":"線","缑":"緱","缒":"縋","缓":"緩","缔":"締","缕":"縷","编":"編","缗":"緡","缘":"緣","缙":"縉","缚":"縛","缛":"縟","缜":"縝","缝":"縫","缞":"縗","缟":"縞","缠":"纏","缡":"縭","缢":"縊","缣":"縑","缤":"繽","缥":"縹","缦":"縵","缧":"縲","缨":"纓","缩":"縮","缪":"繆","缫":"繅","缬":"纈","缭":"繚","缮":"繕","缯":"繒","缰":"繮","缱":"繾","缲":"繰","缳":"繯","缴":"繳","缵":"纘","罂":"罌","网":"網","罗":"羅","罚":"罰","罢":"罷","罴":"羆","羁":"羈","羟":"羥","羡":"羨","群":"羣","翘":"翹","翙":"翽","翚":"翬","耢":"耮","耧":"耬","耸":"聳","耻":"恥","聂":"聶","聋":"聾","职":"職","聍":"聹","联":"聯","聩":"聵","聪":"聰","肃":"肅","肠":"腸","肤":"膚","肮":"骯","肴":"餚","肾":"腎","肿":"腫","胀":"脹","胁":"脅","胄":"胄","胆":"膽","背":"背","胜":"勝","胡":"胡","胧":"朧","胨":"腖","胪":"臚","胫":"脛","胶":"膠","脉":"脈","脍":"膾","脏":"髒","脐":"臍","脑":"腦","脓":"膿","脔":"臠","脚":"腳","脱":"脫","脶":"腡","脸":"臉","腊":"臘","腌":"醃","腘":"膕","腭":"齶","腻":"膩","腼":"靦","腽":"膃","腾":"騰","膑":"臏","膻":"羶","臜":"臢","致":"致","舆":"輿","舍":"舍","舣":"艤","舰":"艦","舱":"艙","舻":"艫","艰":"艱","艳":"豔","艺":"藝","节":"節","芈":"羋","芗":"薌","芜":"蕪","芦":"蘆","芸":"芸","苁":"蓯","苇":"葦","苈":"藶","苋":"莧","苌":"萇","苍":"蒼","苎":"苧","苏":"蘇","苔":"苔","苧":"薴","苹":"蘋","范":"範","茎":"莖","茏":"蘢","茑":"蔦","茔":"塋","茕":"煢","茧":"繭","荆":"荊","荐":"薦","荙":"薘","荚":"莢","荛":"蕘","荜":"蓽","荝":"萴","荞":"蕎","荟":"薈","荠":"薺","荡":"蕩","荣":"榮","荤":"葷","荥":"滎","荦":"犖","荧":"熒","荨":"蕁","荩":"藎","荪":"蓀","荫":"蔭","荬":"蕒","荭":"葒","荮":"葤","药":"藥","莅":"蒞","莱":"萊","莲":"蓮","莳":"蒔","莴":"萵","莶":"薟","获":"獲","莸":"蕕","莹":"瑩","莺":"鶯","莼":"蓴","萚":"蘀","萝":"蘿","萤":"螢","营":"營","萦":"縈","萧":"蕭","萨":"薩","葱":"蔥","蒀":"蒕","蒇":"蕆","蒉":"蕢","蒋":"蔣","蒌":"蔞","蒏":"醟","蒙":"蒙","蓝":"藍","蓟":"薊","蓠":"蘺","蓣":"蕷","蓥":"鎣","蓦":"驀","蔂":"虆","蔑":"蔑","蔷":"薔","蔹":"蘞","蔺":"藺","蔼":"藹","蕰":"薀","蕲":"蘄","蕴":"蘊","薮":"藪","藓":"蘚","藴":"蘊","蘖":"櫱","虏":"虜","虑":"慮","虚":"虛","虫":"蟲","虬":"虯","虮":"蟣","虱":"蝨","虽":"雖","虾":"蝦","虿":"蠆","蚀":"蝕","蚁":"蟻","蚂":"螞","蚃":"蠁","蚕":"蠶","蚝":"蠔","蚬":"蜆","蛊":"蠱","蛎":"蠣","蛏":"蟶","蛮":"蠻","蛰":"蟄","蛱":"蛺","蛲":"蟯","蛳":"螄","蛴":"蠐","蜕":"蛻","蜗":"蝸","蜡":"蠟","蝇":"蠅","蝈":"蟈","蝉":"蟬","蝎":"蠍","蝼":"螻","蝾":"蠑","螀":"螿","螨":"蟎","蟏":"蠨","衅":"釁","衔":"銜","补":"補","表":"表","衬":"襯","衮":"袞","袄":"襖","袅":"嫋","袆":"褘","袜":"襪","袭":"襲","袯":"襏","装":"裝","裆":"襠","裈":"褌","裢":"褳","裣":"襝","裤":"褲","裥":"襉","褛":"褸","褴":"襤","襕":"襴","见":"見","观":"觀","觃":"覎","规":"規","觅":"覓","视":"視","觇":"覘","览":"覽","觉":"覺","觊":"覬","觋":"覡","觌":"觿","觍":"覥","觎":"覦","觏":"覯","觐":"覲","觑":"覷","觞":"觴","触":"觸","觯":"觶","訚":"誾","詟":"讋","誉":"譽","誊":"謄","讠":"訁","计":"計","订":"訂","讣":"訃","认":"認","讥":"譏","讦":"訐","讧":"訌","讨":"討","让":"讓","讪":"訕","讫":"訖","讬":"託","训":"訓","议":"議","讯":"訊","记":"記","讱":"訒","讲":"講","讳":"諱","讴":"謳","讵":"詎","讶":"訝","讷":"訥","许":"許","讹":"訛","论":"論","讻":"訩","讼":"訟","讽":"諷","设":"設","访":"訪","诀":"訣","证":"證","诂":"詁","诃":"訶","评":"評","诅":"詛","识":"識","诇":"詗","诈":"詐","诉":"訴","诊":"診","诋":"詆","诌":"謅","词":"詞","诎":"詘","诏":"詔","诐":"詖","译":"譯","诒":"詒","诓":"誆","诔":"誄","试":"試","诖":"詿","诗":"詩","诘":"詰","诙":"詼","诚":"誠","诛":"誅","诜":"詵","话":"話","诞":"誕","诟":"詬","诠":"詮","诡":"詭","询":"詢","诣":"詣","诤":"諍","该":"該","详":"詳","诧":"詫","诨":"諢","诩":"詡","诪":"譸","诫":"誡","诬":"誣","语":"語","诮":"誚","误":"誤","诰":"誥","诱":"誘","诲":"誨","诳":"誑","说":"說","诵":"誦","诶":"誒","请":"請","诸":"諸","诹":"諏","诺":"諾","读":"讀","诼":"諑","诽":"誹","课":"課","诿":"諉","谀":"諛","谁":"誰","谂":"諗","调":"調","谄":"諂","谅":"諒","谆":"諄","谇":"誶","谈":"談","谉":"讅","谊":"誼","谋":"謀","谌":"諶","谍":"諜","谎":"謊","谏":"諫","谐":"諧","谑":"謔","谒":"謁","谓":"謂","谔":"諤","谕":"諭","谖":"諼","谗":"讒","谘":"諮","谙":"諳","谚":"諺","谛":"諦","谜":"謎","谝":"諞","谞":"諝","谟":"謨","谠":"讜","谡":"謖","谢":"謝","谣":"謠","谤":"謗","谥":"諡","谦":"謙","谧":"謐","谨":"謹","谩":"謾","谪":"謫","谫":"譾","谬":"謬","谭":"譚","谮":"譖","谯":"譙","谰":"讕","谱":"譜","谲":"譎","谳":"讞","谴":"譴","谵":"譫","谶":"讖","谷":"谷","豮":"豶","贝":"貝","贞":"貞","负":"負","贠":"貟","贡":"貢","财":"財","责":"責","贤":"賢","败":"敗","账":"賬","货":"貨","质":"質","贩":"販","贪":"貪","贫":"貧","贬":"貶","购":"購","贮":"貯","贯":"貫","贰":"貳","贱":"賤","贲":"賁","贳":"貰","贴":"貼","贵":"貴","贶":"貺","贷":"貸","贸":"貿","费":"費","贺":"賀","贻":"貽","贼":"賊","贽":"贄","贾":"賈","贿":"賄","赀":"貲","赁":"賃","赂":"賂","赃":"贓","资":"資","赅":"賅","赆":"贐","赇":"賕","赈":"賑","赉":"賚","赊":"賒","赋":"賦","赌":"賭","赍":"齎","赎":"贖","赏":"賞","赐":"賜","赑":"贔","赒":"賙","赓":"賡","赔":"賠","赕":"賧","赖":"賴","赗":"賵","赘":"贅","赙":"賻","赚":"賺","赛":"賽","赜":"賾","赝":"贗","赞":"贊","赟":"贇","赠":"贈","赡":"贍","赢":"贏","赣":"贛","赪":"赬","赵":"趙","赶":"趕","趋":"趨","趱":"趲","趸":"躉","跃":"躍","跄":"蹌","跖":"蹠","跞":"躒","践":"踐","跶":"躂","跷":"蹺","跸":"蹕","跹":"躚","跻":"躋","踌":"躊","踪":"蹤","踬":"躓","踯":"躑","蹑":"躡","蹒":"蹣","蹰":"躕","蹿":"躥","躏":"躪","躜":"躦","躯":"軀","輼":"轀","车":"車","轧":"軋","轨":"軌","轩":"軒","轪":"軑","轫":"軔","转":"轉","轭":"軛","轮":"輪","软":"軟","轰":"轟","轱":"軲","轲":"軻","轳":"轤","轴":"軸","轵":"軹","轶":"軼","轷":"軤","轸":"軫","轹":"轢","轺":"軺","轻":"輕","轼":"軾","载":"載","轾":"輊","轿":"轎","辀":"輈","辁":"輇","辂":"輅","较":"較","辄":"輒","辅":"輔","辆":"輛","辇":"輦","辈":"輩","辉":"輝","辊":"輥","辋":"輞","辌":"輬","辍":"輟","辎":"輜","辏":"輳","辐":"輻","辑":"輯","辒":"轀","输":"輸","辔":"轡","辕":"轅","辖":"轄","辗":"輾","辘":"轆","辙":"轍","辚":"轔","辞":"辭","辟":"闢","辩":"辯","辫":"辮","边":"邊","辽":"遼","达":"達","迁":"遷","过":"過","迈":"邁","运":"運","还":"還","这":"這","进":"進","远":"遠","违":"違","连":"連","迟":"遲","迩":"邇","迳":"逕","迹":"跡","适":"適","选":"選","逊":"遜","递":"遞","逦":"邐","逻":"邏","遗":"遺","遥":"遙","邓":"鄧","邝":"鄺","邬":"鄔","邮":"郵","邹":"鄒","邺":"鄴","邻":"鄰","郁":"鬱","郏":"郟","郐":"鄶","郑":"鄭","郓":"鄆","郦":"酈","郧":"鄖","郸":"鄲","酂":"酇","酝":"醞","酦":"醱","酱":"醬","酸":"酸","酽":"釅","酾":"釃","酿":"釀","醖":"醞","采":"採","释":"釋","里":"裏","鉴":"鑑","銮":"鑾","錾":"鏨","钅":"釒","钆":"釓","钇":"釔","针":"針","钉":"釘","钊":"釗","钋":"釙","钌":"釕","钍":"釷","钎":"釺","钏":"釧","钐":"釤","钑":"鈒","钒":"釩","钓":"釣","钔":"鍆","钕":"釹","钖":"鍚","钗":"釵","钘":"鈃","钙":"鈣","钚":"鈈","钛":"鈦","钜":"鉅","钝":"鈍","钞":"鈔","钟":"鍾","钠":"鈉","钡":"鋇","钢":"鋼","钣":"鈑","钤":"鈐","钥":"鑰","钦":"欽","钧":"鈞","钨":"鎢","钩":"鉤","钪":"鈧","钫":"鈁","钬":"鈥","钭":"鈄","钮":"鈕","钯":"鈀","钰":"鈺","钱":"錢","钲":"鉦","钳":"鉗","钴":"鈷","钵":"鉢","钶":"鈳","钷":"鉕","钸":"鈽","钹":"鈸","钺":"鉞","钻":"鑽","钼":"鉬","钽":"鉭","钾":"鉀","钿":"鈿","铀":"鈾","铁":"鐵","铂":"鉑","铃":"鈴","铄":"鑠","铅":"鉛","铆":"鉚","铇":"鉋","铈":"鈰","铉":"鉉","铊":"鉈","铋":"鉍","铌":"鈮","铍":"鈹","铎":"鐸","铏":"鉶","铐":"銬","铑":"銠","铒":"鉺","铓":"鋩","铔":"錏","铕":"銪","铖":"鋮","铗":"鋏","铘":"鋣","铙":"鐃","铚":"銍","铛":"鐺","铜":"銅","铝":"鋁","铞":"銱","铟":"銦","铠":"鎧","铡":"鍘","铢":"銖","铣":"銑","铤":"鋌","铥":"銩","铦":"銛","铧":"鏵","铨":"銓","铩":"鎩","铪":"鉿","铫":"銚","铬":"鉻","铭":"銘","铮":"錚","铯":"銫","铰":"鉸","铱":"銥","铲":"鏟","铳":"銃","铴":"鐋","铵":"銨","银":"銀","铷":"銣","铸":"鑄","铹":"鐒","铺":"鋪","铻":"鋙","铼":"錸","铽":"鋱","链":"鏈","铿":"鏗","销":"銷","锁":"鎖","锂":"鋰","锃":"鋥","锄":"鋤","锅":"鍋","锆":"鋯","锇":"鋨","锈":"鏽","锉":"銼","锊":"鋝","锋":"鋒","锌":"鋅","锍":"鋶","锎":"鐦","锏":"鐧","锐":"銳","锑":"銻","锒":"鋃","锓":"鋟","锔":"鋦","锕":"錒","锖":"錆","锗":"鍺","锘":"鍩","错":"錯","锚":"錨","锛":"錛","锜":"錡","锝":"鍀","锞":"錁","锟":"錕","锠":"錩","锡":"錫","锢":"錮","锣":"鑼","锤":"錘","锥":"錐","锦":"錦","锧":"鑕","锨":"鍁","锩":"錈","锪":"鍃","锫":"錇","锬":"錟","锭":"錠","键":"鍵","锯":"鋸","锰":"錳","锱":"錙","锲":"鍥","锳":"鍈","锴":"鍇","锵":"鏘","锶":"鍶","锷":"鍔","锸":"鍤","锹":"鍬","锺":"鍾","锻":"鍛","锼":"鎪","锽":"鍠","锾":"鍰","锿":"鎄","镀":"鍍","镁":"鎂","镂":"鏤","镃":"鎡","镄":"鐨","镅":"鎇","镆":"鏌","镇":"鎮","镈":"鎛","镉":"鎘","镊":"鑷","镋":"钂","镌":"鐫","镍":"鎳","镎":"鎿","镏":"鎦","镐":"鎬","镑":"鎊","镒":"鎰","镓":"鎵","镔":"鑌","镕":"鎔","镖":"鏢","镗":"鏜","镘":"鏝","镙":"鏍","镚":"鏰","镛":"鏞","镜":"鏡","镝":"鏑","镞":"鏃","镟":"鏇","镠":"鏐","镡":"鐔","镢":"钁","镣":"鐐","镤":"鏷","镥":"鑥","镦":"鐓","镧":"鑭","镨":"鐠","镩":"鑹","镪":"鏹","镫":"鐙","镬":"鑊","镭":"鐳","镮":"鐶","镯":"鐲","镰":"鐮","镱":"鐿","镲":"鑔","镳":"鑣","镴":"鑞","镵":"鑱","镶":"鑲","长":"長","门":"門","闩":"閂","闪":"閃","闫":"閆","闬":"閈","闭":"閉","问":"問","闯":"闖","闰":"閏","闱":"闈","闲":"閒","闳":"閎","间":"間","闵":"閔","闶":"閌","闷":"悶","闸":"閘","闹":"鬧","闺":"閨","闻":"聞","闼":"闥","闽":"閩","闾":"閭","闿":"闓","阀":"閥","阁":"閣","阂":"閡","阃":"閫","阄":"鬮","阅":"閱","阆":"閬","阇":"闍","阈":"閾","阉":"閹","阊":"閶","阋":"鬩","阌":"閿","阍":"閽","阎":"閻","阏":"閼","阐":"闡","阑":"闌","阒":"闃","阓":"闠","阔":"闊","阕":"闋","阖":"闔","阗":"闐","阘":"闒","阙":"闕","阚":"闞","阛":"闤","队":"隊","阳":"陽","阴":"陰","阵":"陣","阶":"階","际":"際","陆":"陸","陇":"隴","陈":"陳","陉":"陘","陕":"陝","陦":"隯","陧":"隉","陨":"隕","险":"險","随":"隨","隐":"隱","隶":"隸","隽":"雋","难":"難","雇":"僱","雏":"雛","雕":"雕","雠":"讎","雳":"靂","雾":"霧","霁":"霽","霉":"黴","霡":"霢","霭":"靄","靓":"靚","靔":"靝","静":"靜","面":"面","靥":"靨","鞑":"韃","鞒":"鞽","鞯":"韉","鞲":"韝","韦":"韋","韧":"韌","韨":"韍","韩":"韓","韪":"韙","韫":"韞","韬":"韜","韵":"韻","页":"頁","顶":"頂","顷":"頃","顸":"頇","项":"項","顺":"順","须":"須","顼":"頊","顽":"頑","顾":"顧","顿":"頓","颀":"頎","颁":"頒","颂":"頌","颃":"頏","预":"預","颅":"顱","领":"領","颇":"頗","颈":"頸","颉":"頡","颊":"頰","颋":"頲","颌":"頜","颍":"潁","颎":"熲","颏":"頦","颐":"頤","频":"頻","颒":"頮","颓":"頹","颔":"頷","颕":"頴","颖":"穎","颗":"顆","题":"題","颙":"顒","颚":"顎","颛":"顓","颜":"顏","额":"額","颞":"顳","颟":"顢","颠":"顛","颡":"顙","颢":"顥","颣":"纇","颤":"顫","颥":"顬","颦":"顰","颧":"顴","风":"風","飏":"颺","飐":"颭","飑":"颮","飒":"颯","飓":"颶","飔":"颸","飕":"颼","飖":"颻","飗":"飀","飘":"飄","飙":"飆","飚":"飈","飞":"飛","飨":"饗","餍":"饜","饣":"飠","饤":"飣","饥":"飢","饦":"飥","饧":"餳","饨":"飩","饩":"餼","饪":"飪","饫":"飫","饬":"飭","饭":"飯","饮":"飲","饯":"餞","饰":"飾","饱":"飽","饲":"飼","饳":"飿","饴":"飴","饵":"餌","饶":"饒","饷":"餉","饸":"餄","饹":"餎","饺":"餃","饻":"餏","饼":"餅","饽":"餑","饾":"餖","饿":"餓","馀":"餘","馁":"餒","馂":"餕","馃":"餜","馄":"餛","馅":"餡","馆":"館","馇":"餷","馈":"饋","馉":"餶","馊":"餿","馋":"饞","馌":"饁","馍":"饃","馎":"餺","馏":"餾","馐":"饈","馑":"饉","馒":"饅","馓":"饊","馔":"饌","馕":"饢","马":"馬","驭":"馭","驮":"馱","驯":"馴","驰":"馳","驱":"驅","驲":"馹","驳":"駁","驴":"驢","驵":"駔","驶":"駛","驷":"駟","驸":"駙","驹":"駒","驺":"騶","驻":"駐","驼":"駝","驽":"駑","驾":"駕","驿":"驛","骀":"駘","骁":"驍","骂":"罵","骃":"駰","骄":"驕","骅":"驊","骆":"駱","骇":"駭","骈":"駢","骉":"驫","骊":"驪","骋":"騁","验":"驗","骍":"騂","骎":"駸","骏":"駿","骐":"騏","骑":"騎","骒":"騍","骓":"騅","骔":"騌","骕":"驌","骖":"驂","骗":"騙","骘":"騭","骙":"騤","骚":"騷","骛":"騖","骜":"驁","骝":"騮","骞":"騫","骟":"騸","骠":"驃","骡":"騾","骢":"驄","骣":"驏","骤":"驟","骥":"驥","骦":"驦","骧":"驤","髅":"髏","髋":"髖","髌":"髕","鬓":"鬢","鬶":"鬹","魇":"魘","魉":"魎","鱼":"魚","鱽":"魛","鱾":"魢","鱿":"魷","鲀":"魨","鲁":"魯","鲂":"魴","鲃":"䰾","鲄":"魺","鲅":"鮁","鲆":"鮃","鲇":"鮎","鲈":"鱸","鲉":"鮋","鲊":"鮓","鲋":"鮒","鲌":"鮊","鲍":"鮑","鲎":"鱟","鲏":"鮍","鲐":"鮐","鲑":"鮭","鲒":"鮚","鲓":"鮳","鲔":"鮪","鲕":"鮞","鲖":"鮦","鲗":"鰂","鲘":"鮜","鲙":"鱠","鲚":"鱭","鲛":"鮫","鲜":"鮮","鲝":"鮺","鲞":"鯗","鲟":"鱘","鲠":"鯁","鲡":"鱺","鲢":"鰱","鲣":"鰹","鲤":"鯉","鲥":"鰣","鲦":"鰷","鲧":"鯀","鲨":"鯊","鲩":"鯇","鲪":"鮶","鲫":"鯽","鲬":"鯒","鲭":"鯖","鲮":"鯪","鲯":"鯕","鲰":"鯫","鲱":"鯡","鲲":"鯤","鲳":"鯧","鲴":"鯝","鲵":"鯢","鲶":"鯰","鲷":"鯛","鲸":"鯨","鲹":"鰺","鲺":"鯴","鲻":"鯔","鲼":"鱝","鲽":"鰈","鲾":"鰏","鲿":"鱨","鳀":"鯷","鳁":"鰮","鳂":"鰃","鳃":"鰓","鳄":"鱷","鳅":"鰍","鳆":"鰒","鳇":"鰉","鳈":"鰁","鳉":"鱂","鳊":"鯿","鳋":"鰠","鳌":"鰲","鳍":"鰭","鳎":"鰨","鳏":"鰥","鳐":"鰩","鳑":"鰟","鳒":"鰜","鳓":"鰳","鳔":"鰾","鳕":"鱈","鳖":"鱉","鳗":"鰻","鳘":"鰵","鳙":"鱅","鳚":"䲁","鳛":"鰼","鳜":"鱖","鳝":"鱔","鳞":"鱗","鳟":"鱒","鳠":"鱯","鳡":"鱤","鳢":"鱧","鳣":"鱣","鳤":"䲘","鸟":"鳥","鸠":"鳩","鸡":"雞","鸢":"鳶","鸣":"鳴","鸤":"鳲","鸥":"鷗","鸦":"鴉","鸧":"鶬","鸨":"鴇","鸩":"鴆","鸪":"鴣","鸫":"鶇","鸬":"鸕","鸭":"鴨","鸮":"鴞","鸯":"鴦","鸰":"鴒","鸱":"鴟","鸲":"鴝","鸳":"鴛","鸴":"鷽","鸵":"鴕","鸶":"鷥","鸷":"鷙","鸸":"鴯","鸹":"鴰","鸺":"鵂","鸻":"鴴","鸼":"鵃","鸽":"鴿","鸾":"鸞","鸿":"鴻","鹀":"鵐","鹁":"鵓","鹂":"鸝","鹃":"鵑","鹄":"鵠","鹅":"鵝","鹆":"鵒","鹇":"鷳","鹈":"鵜","鹉":"鵡","鹊":"鵲","鹋":"鶓","鹌":"鵪","鹍":"鵾","鹎":"鵯","鹏":"鵬","鹐":"鵮","鹑":"鶉","鹒":"鶊","鹓":"鵷","鹔":"鷫","鹕":"鶘","鹖":"鶡","鹗":"鶚","鹘":"鶻","鹙":"鶖","鹚":"鷀","鹛":"鶥","鹜":"鶩","鹝":"鷊","鹞":"鷂","鹟":"鶲","鹠":"鶹","鹡":"鶺","鹢":"鷁","鹣":"鶼","鹤":"鶴","鹥":"鷖","鹦":"鸚","鹧":"鷓","鹨":"鷚","鹩":"鷯","鹪":"鷦","鹫":"鷲","鹬":"鷸","鹭":"鷺","鹮":"䴉","鹯":"鸇","鹰":"鷹","鹱":"鸌","鹲":"鸏","鹳":"鸛","鹴":"鸘","鹾":"鹺","麦":"麥","麸":"麩","麹":"麴","麺":"麪","麽":"麼","黄":"黃","黉":"黌","黡":"黶","黩":"黷","黪":"黲","黾":"黽","鼋":"黿","鼌":"鼂","鼍":"鼉","鼹":"鼴","齐":"齊","齑":"齏","齿":"齒","龀":"齔","龁":"齕","龂":"齗","龃":"齟","龄":"齡","龅":"齙","龆":"齠","龇":"齜","龈":"齦","龉":"齬","龊":"齪","龋":"齲","龌":"齷","龙":"龍","龚":"龔","龛":"龕","龟":"龜","鿎":"䃮","鿏":"䥑","鿒":"鿓","鿔":"鎶","𠀾":"𠁞","𠆲":"儣","𠆿":"𠌥","𠇹":"俓","𠉂":"㒓","𠉗":"𠏢","𠋆":"儭","𠚳":"𠠎","𠛅":"剾","𠛆":"𠞆","𠛾":"𪟖","𠡠":"勑","𠮶":"嗰","𠯟":"哯","𠯠":"噅","𠰱":"㘉","𠰷":"嚧","𠱞":"囃","𠲥":"𡅏","𠴛":"𡃕","𠴢":"𡄔","𠵸":"𡄣","𠵾":"㗲","𡋀":"𡓾","𡋗":"𡑭","𡋤":"壗","𡍣":"𡔖","𡒄":"壈","𡝠":"㜷","𡞋":"㜗","𡞱":"㜢","𡠟":"孎","𡥧":"孻","𡭜":"𡮉","𡭬":"𡮣","𡳃":"𡳳","𡳒":"𦘧","𡶴":"嵼","𡸃":"𡽗","𡺃":"嶈","𡺄":"嶘","𢋈":"㢝","𢗓":"㦛","𢘙":"𢤱","𢘝":"𢣚","𢘞":"𢣭","𢙏":"愻","𢙐":"憹","𢙑":"𢠼","𢙒":"憢","𢙓":"懀","𢛯":"㦎","𢠁":"懎","𢢐":"𤢻","𢧐":"戰","𢫊":"𢷮","𢫞":"𢶫","𢫬":"摋","𢬍":"擫","𢬦":"𢹿","𢭏":"擣","𢽾":"斅","𣃁":"斸","𣆐":"曥","𣈣":"𣋋","𣍨":"𦢈","𣍯":"腪","𣍰":"脥","𣎑":"臗","𣏢":"槫","𣐕":"桱","𣐤":"欍","𣑶":"𣠲","𣒌":"楇","𣓿":"橯","𣔌":"樤","𣗊":"樠","𣗋":"欓","𣗙":"㰙","𣘐":"㯤","𣘓":"𣞻","𣘴":"檭","𣘷":"𣝕","𣚚":"欘","𣞎":"𣠩","𣨼":"殢","𣭤":"𣯴","𣯣":"𣯩","𣱝":"氭","𣲗":"湋","𣲘":"潕","𣳆":"㵗","𣶩":"澅","𣶫":"𣿉","𣶭":"𪷓","𣷷":"𤅶","𣸣":"濆","𣺼":"灙","𣺽":"𤁣","𣽷":"瀃","𤆡":"熓","𤆢":"㷍","𤇃":"爄","𤇄":"熌","𤇭":"爖","𤇹":"熚","𤈶":"熉","𤈷":"㷿","𤊀":"𤒎","𤊰":"𤓩","𤋏":"熡","𤎺":"𤓎","𤎻":"𤑳","𤙯":"𤛮","𤝢":"𤢟","𤞃":"獩","𤞤":"玁","𤠋":"㺏","𤦀":"瓕","𤩽":"瓛","𤳄":"𤳸","𤶊":"癐","𤶧":"𤸫","𤻊":"㿗","𤽯":"㿧","𤾀":"皟","𤿲":"麬","𥁢":"䀉","𥅘":"𥌃","𥅴":"䀹","𥅿":"𥊝","𥆧":"瞤","𥇢":"䁪","𥎝":"䂎","𥐟":"礒","𥐯":"𥖅","𥐰":"𥕥","𥐻":"碙","𥞦":"𥞵","𥧂":"𥨐","𥩟":"竚","𥩺":"𥪂","𥫣":"籅","𥬀":"䉙","𥬞":"籋","𥬠":"篘","𥭉":"𥵊","𥮋":"𥸠","𥮜":"䉲","𥮾":"篸","𥱔":"𥵃","𥹥":"𥼽","𥺅":"䊭","𥺇":"𥽖","𦈈":"𥿊","𦈉":"緷","𦈋":"綇","𦈌":"綀","𦈎":"繟","𦈏":"緍","𦈐":"縺","𦈑":"緸","𦈒":"𦂅","𦈓":"䋿","𦈔":"縎","𦈕":"緰","𦈖":"䌈","𦈗":"𦃄","𦈘":"䌋","𦈙":"䌰","𦈚":"縬","𦈛":"繓","𦈜":"䌖","𦈝":"繏","𦈞":"䌟","𦈟":"䌝","𦈠":"䌥","𦈡":"繻","𦍠":"䍽","𦛨":"朥","𦝼":"膢","𦟗":"𦣎","𦨩":"𦪽","𦰏":"蓧","𦰴":"䕳","𦶟":"爇","𦶻":"𦾟","𦻕":"蘟","𧉐":"𧕟","𧉞":"䗿","𧌥":"𧎈","𧏖":"蠙","𧏗":"蠀","𧑏":"蠾","𧒭":"𧔥","𧜭":"䙱","𧝝":"襰","𧝧":"𧟀","𧮪":"詀","𧳕":"𧳟","𧹑":"䞈","𧹒":"買","𧹓":"𧶔","𧹔":"賬","𧹕":"𝻻","𧹖":"賟","𧹗":"贃","𧿈":"𨇁","𨀁":"躘","𨀱":"𨄣","𨁴":"𨅍","𨂺":"𨈊","𨄄":"𨈌","𨅛":"䠱","𨅫":"𨇞","𨅬":"躝","𨉗":"軉","𨐅":"軗","𨐆":"𨊻","𨐇":"𨏠","𨐈":"輄","𨐉":"𨎮","𨐊":"𨏥","𨑹":"䢨","𨟳":"𨣞","𨠨":"𨣧","𨡙":"𨢿","𨡺":"𨣈","𨤰":"𨤻","𨰾":"鎷","𨰿":"釳","𨱀":"𨥛","𨱁":"鈠","𨱂":"鈋","𨱃":"鈲","𨱄":"鈯","𨱅":"鉁","𨱆":"龯","𨱇":"銶","𨱈":"鋉","𨱉":"鍄","𨱊":"𨧱","𨱋":"錂","𨱌":"鏆","𨱍":"鎯","𨱎":"鍮","𨱏":"鎝","𨱐":"𨫒","𨱑":"鐄","𨱒":"鏉","𨱓":"鐎","𨱔":"鐏","𨱕":"𨮂","𨱖":"䥩","𨷿":"䦳","𨸀":"𨳕","𨸁":"𨳑","𨸂":"閍","𨸃":"閐","𨸄":"䦘","𨸅":"𨴗","𨸆":"𨵩","𨸇":"𨵸","𨸉":"𨶀","𨸊":"𨶏","𨸋":"𨶲","𨸌":"𨶮","𨸎":"𨷲","𨸘":"𨽏","𨸟":"䧢","𩏼":"䪏","𩏽":"𩏪","𩏾":"𩎢","𩏿":"䪘","𩐀":"䪗","𩓋":"顂","𩖕":"𩓣","𩖖":"顃","𩖗":"䫴","𩙥":"颰","𩙦":"𩗀","𩙧":"䬞","𩙨":"𩘹","𩙩":"𩘀","𩙪":"颷","𩙫":"颾","𩙬":"𩘺","𩙭":"𩘝","𩙮":"䬘","𩙯":"䬝","𩙰":"𩙈","𩟿":"𩚛","𩠀":"𩚥","𩠁":"𩚵","𩠂":"𩛆","𩠃":"𩛩","𩠅":"𩟐","𩠆":"𩜦","𩠇":"䭀","𩠈":"䭃","𩠉":"𩜇","𩠊":"𩜵","𩠋":"𩝔","𩠌":"餸","𩠎":"𩞄","𩠏":"𩞦","𩠠":"𩠴","𩡖":"𩡣","𩧦":"𩡺","𩧨":"駎","𩧩":"𩤊","𩧪":"䮾","𩧫":"駚","𩧬":"𩢡","𩧭":"䭿","𩧮":"𩢾","𩧯":"驋","𩧰":"䮝","𩧱":"𩥉","𩧲":"駧","𩧳":"𩢸","𩧴":"駩","𩧵":"𩢴","𩧶":"𩣏","𩧸":"𩣫","𩧺":"駶","𩧻":"𩣵","𩧼":"𩣺","𩧿":"䮠","𩨀":"騔","𩨁":"䮞","𩨂":"驄","𩨃":"騝","𩨄":"騪","𩨅":"𩤸","𩨆":"𩤙","𩨇":"䮫","𩨈":"騟","𩨉":"𩤲","𩨊":"騚","𩨋":"𩥄","𩨌":"𩥑","𩨍":"𩥇","𩨎":"龭","𩨏":"䮳","𩨐":"𩧆","𩩈":"䯤","𩬣":"𩭙","𩬤":"𩰀","𩭹":"鬖","𩯒":"𩯳","𩰰":"𩰹","𩲒":"𩳤","𩴌":"𩴵","𩽹":"魥","𩽺":"𩵩","𩽻":"𩵹","𩽼":"鯶","𩽽":"𩶱","𩽾":"鮟","𩽿":"𩶰","𩾁":"鯄","𩾂":"䲖","𩾃":"鮸","𩾄":"𩷰","𩾅":"𩸃","𩾆":"𩸦","𩾇":"鯱","𩾈":"䱙","𩾊":"䱬","𩾋":"䱰","𩾌":"鱇","𩾎":"𩽇","𪉂":"䲰","𪉃":"鳼","𪉄":"𩿪","𪉅":"𪀦","𪉆":"鴲","𪉈":"鴜","𪉉":"𪁈","𪉊":"鷨","𪉋":"𪀾","𪉌":"𪁖","𪉍":"鵚","𪉎":"𪂆","𪉏":"𪃏","𪉐":"𪃍","𪉑":"鷔","𪉒":"𪄕","𪉔":"𪄆","𪉕":"𪇳","𪎈":"䴬","𪎉":"麲","𪎊":"麨","𪎋":"䴴","𪎌":"麳","𪑅":"䵳","𪔭":"𪔵","𪚏":"𪘀","𪚐":"𪘯","𪜎":"𠿕","𪞝":"凙","𪟎":"㔋","𪟝":"勣","𪠀":"𧷎","𪠟":"㓄","𪠡":"𠬙","𪠳":"唓","𪠵":"㖮","𪠸":"嚛","𪠺":"𠽃","𪠽":"噹","𪡀":"嘺","𪡃":"嘪","𪡋":"噞","𪡏":"嗹","𪡛":"㗿","𪡞":"嘳","𪡺":"𡃄","𪢌":"㘓","𪢐":"𡃤","𪢒":"𡂡","𪢕":"嚽","𪢖":"𡅯","𪢠":"囒","𪢮":"圞","𪢸":"墲","𪣆":"埬","𪣒":"堚","𪣻":"塿","𪤄":"𡓁","𪤚":"壣","𪥠":"𧹈","𪥫":"孇","𪥰":"嬣","𪥿":"嬻","𪧀":"孾","𪧘":"寠","𪨊":"㞞","𪨗":"屩","𪨧":"崙","𪨩":"𡸗","𪨶":"輋","𪨷":"巗","𪨹":"𡹬","𪩇":"㟺","𪩎":"巊","𪩘":"巘","𪩛":"𡿖","𪩷":"幝","𪩸":"幩","𪪏":"廬","𪪑":"㢗","𪪞":"廧","𪪴":"𢍰","𪪼":"彃","𪫌":"徿","𪫡":"𢤩","𪫷":"㦞","𪫺":"憸","𪬚":"𢣐","𪬯":"𢤿","𪭝":"𢯷","𪭢":"摐","𪭧":"擟","𪭯":"𢶒","𪭵":"掚","𪭾":"撊","𪮃":"㨻","𪮋":"㩋","𪮖":"撧","𪮳":"𢺳","𪮶":"攋","𪯋":"㪎","𪰶":"曊","𪱥":"膹","𪱷":"梖","𪲎":"櫅","𪲔":"欐","𪲛":"檵","𪲮":"櫠","𪳍":"欇","𪳗":"𣜬","𪴙":"欑","𪵑":"毊","𪵣":"霼","𪵱":"濿","𪶄":"溡","𪶒":"𤄷","𪶮":"𣽏","𪷍":"㵾","𪷽":"灒","𪸕":"熂","𪸩":"煇","𪹀":"𤑹","𪹠":"𤓌","𪹳":"爥","𪹹":"𤒻","𪺣":"𤘀","𪺪":"𤜆","𪺭":"犞","𪺷":"獊","𪺸":"𤠮","𪺻":"㺜","𪺽":"猌","𪻐":"瑽","𪻨":"瓄","𪻲":"瑻","𪻺":"璝","𪼋":"㻶","𪼴":"𤬅","𪽈":"畼","𪽝":"𤳷","𪽪":"痮","𪽭":"𤷃","𪽮":"㿖","𪽴":"𤺔","𪽷":"瘱","𪾔":"盨","𪾢":"睍","𪾣":"眝","𪾦":"矑","𪾸":"矉","𪿊":"𥏝","𪿞":"𥖲","𪿫":"礮","𪿵":"𥗇","𫀌":"𥜰","𫀓":"𥜐","𫀨":"䅐","𫀬":"䅳","𫀮":"𥢷","𫁂":"䆉","𫁟":"竱","𫁡":"鴗","𫁱":"𥶽","𫁲":"䉑","𫁳":"𥯤","𫁷":"䉶","𫁺":"𥴼","𫂃":"簢","𫂆":"簂","𫂈":"䉬","𫂖":"𥴨","𫂿":"𥻦","𫃗":"𩏷","𫄙":"糺","𫄚":"䊺","𫄛":"紟","𫄜":"䋃","𫄝":"𥾯","𫄞":"䋔","𫄟":"絁","𫄠":"絙","𫄡":"絧","𫄢":"絥","𫄣":"繷","𫄤":"繨","𫄥":"纚","𫄦":"𦀖","𫄧":"綖","𫄨":"絺","𫄩":"䋦","𫄪":"𦅇","𫄫":"綟","𫄬":"緤","𫄭":"緮","𫄮":"䋼","𫄯":"𦃩","𫄰":"縍","𫄱":"繬","𫄲":"縸","𫄳":"縰","𫄴":"繂","𫄵":"𦅈","𫄶":"繈","𫄷":"繶","𫄸":"纁","𫄹":"纗","𫅅":"䍤","𫅗":"羵","𫅥":"𦒀","𫅭":"䎙","𫅼":"𦔖","𫆏":"聻","𫆝":"𦟼","𫆫":"𦡝","𫇘":"𦧺","𫇛":"艣","𫇪":"𦱌","𫇭":"蔿","𫇴":"蒭","𫇽":"蕽","𫈉":"蕳","𫈎":"葝","𫈟":"蔯","𫈵":"蕝","𫉁":"薆","𫉄":"藷","𫊪":"䗅","𫊮":"蠦","𫊸":"蟜","𫊹":"𧒯","𫊻":"蟳","𫋇":"蟂","𫋌":"蟘","𫋲":"䙔","𫋷":"襗","𫋹":"襓","𫋻":"襘","𫌀":"襀","𫌇":"襵","𫌋":"𧞫","𫌨":"覼","𫌪":"覛","𫌫":"𧡴","𫌬":"𧢄","𫌭":"覹","𫌯":"䚩","𫍐":"𧭹","𫍙":"訑","𫍚":"訞","𫍛":"訜","𫍜":"詓","𫍝":"諫","𫍞":"𧦝","𫍟":"𧦧","𫍠":"䛄","𫍡":"詑","𫍢":"譊","𫍣":"詷","𫍤":"譑","𫍥":"誂","𫍦":"譨","𫍧":"誺","𫍨":"誫","𫍩":"諣","𫍪":"誋","𫍫":"䛳","𫍬":"誷","𫍭":"𧩕","𫍮":"誳","𫍯":"諴","𫍰":"諰","𫍱":"諯","𫍲":"謏","𫍳":"諥","𫍴":"謱","𫍵":"謸","𫍶":"𧩼","𫍷":"謉","𫍸":"謆","𫍹":"謯","𫍺":"𧫝","𫍻":"譆","𫍼":"𧬤","𫍽":"譞","𫍾":"𧭈","𫍿":"譾","𫎆":"豵","𫎌":"貗","𫎦":"贚","𫎧":"䝭","𫎨":"𧸘","𫎩":"賝","𫎪":"䞋","𫎫":"贉","𫎬":"贑","𫎭":"䞓","𫎱":"䟐","𫎳":"䟆","𫎸":"𧽯","𫎺":"䟃","𫏃":"䠆","𫏆":"蹳","𫏋":"蹻","𫏌":"𨂐","𫏐":"蹔","𫏑":"𨇽","𫏕":"𨆪","𫏞":"𨇰","𫏨":"𨇤","𫐄":"軏","𫐅":"軕","𫐆":"轣","𫐇":"軜","𫐈":"軷","𫐉":"軨","𫐊":"軬","𫐋":"𨎌","𫐌":"軿","𫐍":"𨌈","𫐎":"輢","𫐏":"輖","𫐐":"輗","𫐑":"輨","𫐒":"輷","𫐓":"輮","𫐔":"𨍰","𫐕":"轊","𫐖":"轇","𫐗":"轐","𫐘":"轗","𫐙":"轠","𫐷":"遱","𫑘":"鄟","𫑡":"鄳","𫑷":"醶","𫓥":"釟","𫓦":"釨","𫓧":"鈇","𫓨":"鈛","𫓩":"鏦","𫓪":"鈆","𫓫":"𨥟","𫓬":"鉔","𫓭":"鉠","𫓮":"𨪕","𫓯":"銈","𫓰":"銊","𫓱":"鐈","𫓲":"銁","𫓳":"𨰋","𫓴":"鉾","𫓵":"鋠","𫓶":"鋗","𫓷":"𫒡","𫓸":"錽","𫓹":"錤","𫓺":"鐪","𫓻":"錜","𫓼":"𨨛","𫓽":"錝","𫓾":"錥","𫓿":"𨨢","𫔀":"鍊","𫔁":"鐼","𫔂":"鍉","𫔃":"𨰲","𫔄":"鍒","𫔅":"鎍","𫔆":"䥯","𫔇":"鎞","𫔈":"鎙","𫔉":"𨰃","𫔊":"鏥","𫔋":"䥗","𫔌":"鏾","𫔍":"鐇","𫔎":"鐍","𫔏":"𨬖","𫔐":"𨭸","𫔑":"𨭖","𫔒":"𨮳","𫔓":"𨯟","𫔔":"鑴","𫔕":"𨰥","𫔖":"𨲳","𫔭":"開","𫔮":"閒","𫔯":"閗","𫔰":"閞","𫔲":"𨴹","𫔴":"閵","𫔵":"䦯","𫔶":"闑","𫔽":"𨼳","𫕚":"𩀨","𫕥":"霣","𫕨":"𩅙","𫖃":"靧","𫖅":"䪊","𫖇":"鞾","𫖑":"𩎖","𫖒":"韠","𫖓":"𩏂","𫖔":"韛","𫖕":"韝","𫖖":"𩏠","𫖪":"𩑔","𫖫":"䪴","𫖬":"䪾","𫖭":"𩒎","𫖮":"顗","𫖯":"頫","𫖰":"䫂","𫖱":"䫀","𫖲":"䫟","𫖳":"頵","𫖴":"𩔳","𫖵":"𩓥","𫖶":"顅","𫖷":"𩔑","𫖸":"願","𫖹":"顣","𫖺":"䫶","𫗇":"䫻","𫗈":"𩗓","𫗉":"𩗴","𫗊":"䬓","𫗋":"飋","𫗚":"𩟗","𫗞":"飦","𫗟":"䬧","𫗠":"餦","𫗡":"𩚩","𫗢":"飵","𫗣":"飶","𫗤":"𩛌","𫗥":"餫","𫗦":"餔","𫗧":"餗","𫗨":"𩛡","𫗩":"饠","𫗪":"餧","𫗫":"餬","𫗬":"餪","𫗭":"餵","𫗮":"餭","𫗯":"餱","𫗰":"䭔","𫗱":"䭑","𫗳":"𩝽","𫗴":"饘","𫗵":"饟","𫘛":"馯","𫘜":"馼","𫘝":"駃","𫘞":"駞","𫘟":"駊","𫘠":"駤","𫘡":"駫","𫘣":"駻","𫘤":"騃","𫘥":"騉","𫘦":"騊","𫘧":"騄","𫘨":"騠","𫘩":"騜","𫘪":"騵","𫘫":"騴","𫘬":"騱","𫘭":"騻","𫘮":"䮰","𫘯":"驓","𫘰":"驙","𫘱":"驨","𫘽":"鬠","𫙂":"𩯁","𫚈":"鱮","𫚉":"魟","𫚊":"鰑","𫚋":"鱄","𫚌":"魦","𫚍":"魵","𫚎":"𩶁","𫚏":"䱁","𫚐":"䱀","𫚑":"鮅","𫚒":"鮄","𫚓":"鮤","𫚔":"鮰","𫚕":"鰤","𫚖":"鮆","𫚗":"鮯","𫚘":"𩻮","𫚙":"鯆","𫚚":"鮿","𫚛":"鮵","𫚜":"䲅","𫚝":"𩸄","𫚞":"鯬","𫚟":"𩸡","𫚠":"䱧","𫚡":"鯞","𫚢":"鰋","𫚣":"鯾","𫚤":"鰦","𫚥":"鰕","𫚦":"鰫","𫚧":"鰽","𫚨":"𩻗","𫚩":"𩻬","𫚪":"鱊","𫚫":"鱢","𫚬":"𩼶","𫚭":"鱲","𫛚":"鳽","𫛛":"鳷","𫛜":"鴀","𫛝":"鴅","𫛞":"鴃","𫛟":"鸗","𫛠":"𩿤","𫛡":"鴔","𫛢":"鸋","𫛣":"鴥","𫛤":"鴐","𫛥":"鵊","𫛦":"鴮","𫛧":"𪀖","𫛨":"鵧","𫛩":"鴳","𫛪":"鴽","𫛫":"鶰","𫛬":"䳜","𫛭":"鵟","𫛮":"䳤","𫛯":"鶭","𫛰":"䳢","𫛱":"鵫","𫛲":"鵰","𫛳":"鵩","𫛴":"鷤","𫛵":"鶌","𫛶":"鶒","𫛷":"鶦","𫛸":"鶗","𫛹":"𪃧","𫛺":"䳧","𫛻":"𪃒","𫛼":"䳫","𫛽":"鷅","𫛾":"𪆷","𫜀":"鷐","𫜁":"鷩","𫜂":"𪅂","𫜃":"鷣","𫜄":"鷷","𫜅":"䴋","𫜊":"𪉸","𫜑":"麷","𫜒":"䴱","𫜓":"𪌭","𫜔":"䴽","𫜕":"𪍠","𫜙":"䵴","𫜟":"𪓰","𫜨":"𪶕","𫜩":"齧","𫜪":"齩","𫜫":"𫜦","𫜬":"齰","𫜭":"齭","𫜮":"齴","𫜯":"𪙏","𫜰":"齾","𫜲":"龓","𫜳":"䶲","𫝈":"㑮","𫝋":"𠐊","𫝦":"㛝","𫝧":"㜐","𫝨":"媈","𫝩":"嬦","𫝪":"𡟫","𫝫":"婡","𫝬":"嬇","𫝭":"孆","𫝮":"孄","𫝵":"嶹","𫞅":"𦠅","𫞗":"潣","𫞚":"澬","𫞛":"㶆","𫞝":"灍","𫞠":"爧","𫞡":"爃","𫞢":"𤛱","𫞣":"㹽","𫞥":"珼","𫞦":"璾","𫞧":"𤩂","𫞨":"璼","𫞩":"璊","𫞷":"𥢶","𫟃":"絍","𫟄":"綋","𫟅":"綡","𫟆":"緟","𫟇":"𦆲","𫟑":"䖅","𫟕":"䕤","𫟞":"訨","𫟟":"詊","𫟠":"譂","𫟡":"誴","𫟢":"䜖","𫟤":"䡐","𫟥":"䡩","𫟦":"䡵","𫟫":"𨞺","𫟬":"𨟊","𫟲":"釚","𫟳":"釲","𫟴":"鈖","𫟵":"鈗","𫟶":"銏","𫟷":"鉝","𫟸":"鉽","𫟹":"鉷","𫟺":"䤤","𫟻":"銂","𫟼":"鐽","𫟽":"𨧰","𫟾":"𨩰","𫟿":"鎈","𫠀":"䥄","𫠁":"鑉","𫠂":"閝","𫠅":"韚","𫠆":"頍","𫠇":"𩖰","𫠈":"䫾","𫠊":"䮄","𫠋":"騼","𫠌":"𩦠","𫠏":"𩵦","𫠐":"魽","𫠑":"䱸","𫠒":"鱆","𫠖":"𩿅","𫠜":"齯","𫢸":"僤","𫧃":"𣍐","𫧮":"𪋿","𫫇":"噁","𫬐":"㘔","𫭟":"塸","𫭢":"埨","𫭼":"𡑍","𫮃":"墠","𫰛":"娙","𫵷":"㠣","𫶇":"嵽","𫷷":"廞","𫸩":"彄","𬀩":"暐","𬀪":"晛","𬂩":"梜","𬃊":"櫍","𬇕":"澫","𬇙":"浿","𬇹":"漍","𬉼":"熰","𬊈":"燖","𬊤":"燀","𬍛":"瓅","𬍡":"璗","𬍤":"璕","𬒈":"礐","𬒗":"𥗽","𬕂":"篢","𬘓":"紃","𬘘":"紞","𬘡":"絪","𬘩":"綎","𬘫":"綄","𬘬":"綪","𬘭":"綝","𬘯":"綧","𬙂":"縯","𬙊":"纆","𬙋":"纕","𬜬":"蔄","𬜯":"䓣","𬞟":"蘋","𬟁":"虉","𬟽":"蝀","𬣙":"訏","𬣞":"詝","𬣡":"諓","𬣳":"詪","𬤇":"諲","𬤊":"諟","𬤝":"譓","𬨂":"軝","𬨎":"輶","𬩽":"鄩","𬪩":"醲","𬬩":"釴","𬬭":"錀","𬬮":"鋹","𬬱":"釿","𬬸":"鉥","𬬹":"鉮","𬬻":"鑪","𬬿":"鉊","𬭁":"鉧","𬭊":"𨧀","𬭎":"鋐","𬭚":"錞","𬭛":"𨨏","𬭤":"鍭","𬭩":"鎓","𬭬":"鏏","𬭭":"鏚","𬭯":"䥕","𬭳":"𨭎","𬭶":"𨭆","𬭸":"鏻","𬭼":"鐩","𬮱":"闉","𬮿":"隑","𬯀":"隮","𬯎":"隤","𬱖":"頔","𬱟":"頠","𬳵":"駓","𬳶":"駉","𬳽":"駪","𬳿":"駼","𬴂":"騑","𬴃":"騞","𬴊":"驎","𬶋":"鮈","𬶍":"鮀","𬶏":"鮠","𬶐":"鮡","𬶟":"鯻","𬶠":"鰊","𬶨":"鱀","𬶭":"鰶","𬶮":"鱚","𬷕":"鵏","𬸘":"鶠","𬸚":"鸑","𬸣":"鶱","𬸦":"鷟","𬸪":"鷭","𬸯":"鷿","𬹼":"齘","𬺈":"齮","𬺓":"齼","𰬸":"繐","𰰨":"菕","𰶎":"譅","𰾄":"鋂","𰾭":"鑀","𱊜":"𪈼"},Me={"㑮":"𫝈","㑯":"㑔","㑳":"㑇","㑶":"㐹","㒓":"𠉂","㓄":"𪠟","㓨":"刾","㔋":"𪟎","㖮":"𪠵","㗲":"𠵾","㗿":"𪡛","㘉":"𠰱","㘓":"𪢌","㘔":"𫬐","㘚":"㘎","㛝":"𫝦","㜄":"㚯","㜏":"㛣","㜐":"𫝧","㜗":"𡞋","㜢":"𡞱","㜷":"𡝠","㞞":"𪨊","㟺":"𪩇","㠏":"㟆","㠣":"𫵷","㢗":"𪪑","㢝":"𢋈","㥮":"㤘","㦎":"𢛯","㦛":"𢗓","㦞":"𪫷","㨻":"𪮃","㩋":"𪮋","㩜":"㨫","㩳":"㧐","㩵":"擜","㪎":"𪯋","㯤":"𣘐","㰙":"𣗙","㵗":"𣳆","㵾":"𪷍","㶆":"𫞛","㷍":"𤆢","㷿":"𤈷","㸇":"𤎺","㹽":"𫞣","㺏":"𤠋","㺜":"𪺻","㻶":"𪼋","㿖":"𪽮","㿗":"𤻊","㿧":"𤽯","䀉":"𥁢","䀹":"𥅴","䁪":"𥇢","䁻":"䀥","䂎":"𥎝","䃮":"鿎","䅐":"𫀨","䅳":"𫀬","䆉":"𫁂","䉑":"𫁲","䉙":"𥬀","䉬":"𫂈","䉲":"𥮜","䉶":"𫁷","䊭":"𥺅","䊷":"䌶","䊺":"𫄚","䋃":"𫄜","䋔":"𫄞","䋙":"䌺","䋚":"䌻","䋦":"𫄩","䋹":"䌿","䋻":"䌾","䋼":"𫄮","䋿":"𦈓","䌈":"𦈖","䌋":"𦈘","䌖":"𦈜","䌝":"𦈟","䌟":"𦈞","䌥":"𦈠","䌰":"𦈙","䍤":"𫅅","䍦":"䍠","䍽":"𦍠","䎙":"𫅭","䎱":"䎬","䓣":"𬜯","䕤":"𫟕","䕳":"𦰴","䖅":"𫟑","䗅":"𫊪","䗿":"𧉞","䙔":"𫋲","䙡":"䙌","䙱":"𧜭","䚩":"𫌯","䛄":"𫍠","䛳":"𫍫","䜀":"䜧","䜖":"𫟢","䝭":"𫎧","䝻":"𧹕","䝼":"䞍","䞈":"𧹑","䞋":"𫎪","䞓":"𫎭","䟃":"𫎺","䟆":"𫎳","䟐":"𫎱","䠆":"𫏃","䠱":"𨅛","䡐":"𫟤","䡩":"𫟥","䡵":"𫟦","䢨":"𨑹","䤤":"𫟺","䥄":"𫠀","䥇":"䦂","䥑":"鿏","䥕":"𬭯","䥗":"𫔋","䥩":"𨱖","䥯":"𫔆","䥱":"䥾","䦘":"𨸄","䦛":"䦶","䦟":"䦷","䦯":"𫔵","䦳":"𨷿","䧢":"𨸟","䪊":"𫖅","䪏":"𩏼","䪗":"𩐀","䪘":"𩏿","䪴":"𫖫","䪾":"𫖬","䫀":"𫖱","䫂":"𫖰","䫟":"𫖲","䫴":"𩖗","䫶":"𫖺","䫻":"𫗇","䫾":"𫠈","䬓":"𫗊","䬘":"𩙮","䬝":"𩙯","䬞":"𩙧","䬧":"𫗟","䭀":"𩠇","䭃":"𩠈","䭑":"𫗱","䭔":"𫗰","䭿":"𩧭","䮄":"𫠊","䮝":"𩧰","䮞":"𩨁","䮠":"𩧿","䮫":"𩨇","䮰":"𫘮","䮳":"𩨏","䮾":"𩧪","䯀":"䯅","䯤":"𩩈","䰾":"鲃","䱀":"𫚐","䱁":"𫚏","䱙":"𩾈","䱧":"𫚠","䱬":"𩾊","䱰":"𩾋","䱷":"䲣","䱸":"𫠑","䱽":"䲝","䲁":"鳚","䲅":"𫚜","䲖":"𩾂","䲘":"鳤","䲰":"𪉂","䳜":"𫛬","䳢":"𫛰","䳤":"𫛮","䳧":"𫛺","䳫":"𫛼","䴉":"鹮","䴋":"𫜅","䴬":"𪎈","䴱":"𫜒","䴴":"𪎋","䴽":"𫜔","䵳":"𪑅","䵴":"𫜙","䶕":"𫜨","䶲":"𫜳","丟":"丢","並":"并","乾":"干","亂":"乱","亙":"亘","亞":"亚","佇":"伫","佈":"布","佔":"占","併":"并","來":"来","侖":"仑","侶":"侣","侷":"局","俁":"俣","係":"系","俓":"𠇹","俔":"伣","俠":"侠","俥":"伡","俬":"私","倀":"伥","倆":"俩","倈":"俫","倉":"仓","個":"个","們":"们","倖":"幸","倫":"伦","倲":"㑈","偉":"伟","偑":"㐽","側":"侧","偵":"侦","偽":"伪","傌":"㐷","傑":"杰","傖":"伧","傘":"伞","備":"备","傢":"家","傭":"佣","傯":"偬","傳":"传","傴":"伛","債":"债","傷":"伤","傾":"倾","僂":"偻","僅":"仅","僉":"佥","僑":"侨","僕":"仆","僞":"伪","僤":"𫢸","僥":"侥","僨":"偾","僱":"雇","價":"价","儀":"仪","儁":"俊","儂":"侬","億":"亿","儈":"侩","儉":"俭","儎":"","儐":"","儔":"俦","儕":"侪","儘":"尽","償":"偿","儣":"𠆲","優":"优","儭":"𠋆","儲":"储","儷":"俪","儸":"㑩","儺":"傩","儻":"傥","儼":"俨","兇":"凶","兌":"兑","兒":"儿","兗":"兖","內":"内","兩":"两","冊":"册","冑":"胄","冪":"幂","凈":"净","凍":"冻","凙":"𪞝","凜":"凛","凱":"凯","別":"别","刪":"删","剄":"刭","則":"则","剋":"克","剎":"刹","剗":"刬","剛":"刚","剝":"剥","剮":"剐","剴":"剀","創":"创","剷":"铲","剾":"𠛅","劃":"划","劇":"剧","劉":"刘","劊":"刽","劌":"刿","劍":"剑","劏":"㓥","劑":"剂","劚":"㔉","勁":"劲","勑":"𠡠","動":"动","務":"务","勛":"勋","勝":"胜","勞":"劳","勢":"势","勣":"𪟝","勩":"勚","勱":"劢","勳":"勋","勵":"励","勸":"劝","勻":"匀","匭":"匦","匯":"汇","匱":"匮","區":"区","協":"协","卹":"恤","卻":"却","卽":"即","厙":"厍","厠":"厕","厤":"历","厭":"厌","厲":"厉","厴":"厣","參":"参","叄":"叁","叢":"丛","吒":"咤","吳":"吴","吶":"呐","呂":"吕","咼":"呙","員":"员","哯":"𠯟","唄":"呗","唓":"𪠳","唸":"念","問":"问","啓":"启","啞":"哑","啟":"启","啢":"唡","喎":"㖞","喚":"唤","喪":"丧","喫":"吃","喬":"乔","單":"单","喲":"哟","嗆":"呛","嗇":"啬","嗊":"唝","嗎":"吗","嗚":"呜","嗩":"唢","嗰":"𠮶","嗶":"哔","嗹":"𪡏","嘆":"叹","嘍":"喽","嘓":"啯","嘔":"呕","嘖":"啧","嘗":"尝","嘜":"唛","嘩":"哗","嘪":"𪡃","嘮":"唠","嘯":"啸","嘰":"叽","嘳":"𪡞","嘵":"哓","嘸":"呒","嘺":"𪡀","嘽":"啴","噁":"恶","噅":"𠯠","噓":"嘘","噚":"㖊","噝":"咝","噞":"𪡋","噠":"哒","噥":"哝","噦":"哕","噯":"嗳","噲":"哙","噴":"喷","噸":"吨","噹":"当","嚀":"咛","嚇":"吓","嚌":"哜","嚐":"尝","嚕":"噜","嚙":"啮","嚛":"𪠸","嚥":"咽","嚦":"呖","嚧":"𠰷","嚨":"咙","嚮":"向","嚲":"亸","嚳":"喾","嚴":"严","嚶":"嘤","嚽":"𪢕","囀":"啭","囁":"嗫","囂":"嚣","囃":"𠱞","囅":"冁","囈":"呓","囉":"啰","囌":"苏","囑":"嘱","囒":"𪢠","囪":"囱","圇":"囵","國":"国","圍":"围","園":"园","圓":"圆","圖":"图","團":"团","圞":"𪢮","垻":"坝","埡":"垭","埨":"𫭢","埬":"𪣆","埰":"采","執":"执","堅":"坚","堊":"垩","堖":"垴","堚":"𪣒","堝":"埚","堯":"尧","報":"报","場":"场","塊":"块","塋":"茔","塏":"垲","塒":"埘","塗":"涂","塚":"冢","塢":"坞","塤":"埙","塵":"尘","塸":"𫭟","塹":"堑","塿":"𪣻","墊":"垫","墜":"坠","墠":"𫮃","墮":"堕","墰":"坛","墲":"𪢸","墳":"坟","墶":"垯","墻":"墙","墾":"垦","壇":"坛","壈":"𡒄","壋":"垱","壎":"埙","壓":"压","壗":"𡋤","壘":"垒","壙":"圹","壚":"垆","壜":"坛","壞":"坏","壟":"垄","壠":"垅","壢":"坜","壣":"𪤚","壩":"坝","壪":"塆","壯":"壮","壺":"壶","壼":"壸","壽":"寿","夠":"够","夢":"梦","夥":"伙","夾":"夹","奐":"奂","奧":"奥","奩":"奁","奪":"夺","奬":"奖","奮":"奋","奼":"姹","妝":"妆","姍":"姗","姦":"奸","娙":"𫰛","娛":"娱","婁":"娄","婡":"𫝫","婦":"妇","婭":"娅","媈":"𫝨","媧":"娲","媯":"妫","媰":"㛀","媼":"媪","媽":"妈","嫋":"袅","嫗":"妪","嫵":"妩","嫺":"娴","嫻":"娴","嫿":"婳","嬀":"妫","嬃":"媭","嬇":"𫝬","嬈":"娆","嬋":"婵","嬌":"娇","嬙":"嫱","嬡":"嫒","嬣":"𪥰","嬤":"嬷","嬦":"𫝩","嬪":"嫔","嬰":"婴","嬸":"婶","嬻":"𪥿","孃":"娘","孄":"𫝮","孆":"𫝭","孇":"𪥫","孋":"㛤","孌":"娈","孎":"𡠟","孫":"孙","學":"学","孻":"𡥧","孾":"𪧀","孿":"孪","宮":"宫","寀":"采","寠":"𪧘","寢":"寝","實":"实","寧":"宁","審":"审","寫":"写","寬":"宽","寵":"宠","寶":"宝","將":"将","專":"专","尋":"寻","對":"对","導":"导","尷":"尴","屆":"届","屍":"尸","屓":"屃","屜":"屉","屢":"屡","層":"层","屨":"屦","屩":"𪨗","屬":"属","岡":"冈","峯":"峰","峴":"岘","島":"岛","峽":"峡","崍":"崃","崑":"昆","崗":"岗","崙":"仑","崢":"峥","崬":"岽","嵐":"岚","嵗":"岁","嵼":"𡶴","嵽":"𫶇","嵾":"㟥","嶁":"嵝","嶄":"崭","嶇":"岖","嶈":"𡺃","嶔":"嵚","嶗":"崂","嶘":"𡺄","嶠":"峤","嶢":"峣","嶧":"峄","嶨":"峃","嶮":"崄","嶸":"嵘","嶹":"𫝵","嶺":"岭","嶼":"屿","嶽":"岳","巊":"𪩎","巋":"岿","巒":"峦","巔":"巅","巖":"岩","巗":"𪨷","巘":"𪩘","巰":"巯","巹":"卺","帥":"帅","師":"师","帳":"帐","帶":"带","幀":"帧","幃":"帏","幓":"㡎","幗":"帼","幘":"帻","幝":"𪩷","幟":"帜","幣":"币","幩":"𪩸","幫":"帮","幬":"帱","幹":"干","幾":"几","庫":"库","廁":"厕","廂":"厢","廄":"厩","廈":"厦","廎":"庼","廕":"荫","廚":"厨","廝":"厮","廞":"𫷷","廟":"庙","廠":"厂","廡":"庑","廢":"废","廣":"广","廧":"𪪞","廩":"廪","廬":"庐","廳":"厅","弒":"弑","弔":"吊","弳":"弪","張":"张","強":"强","彃":"𪪼","彄":"𫸩","彆":"别","彈":"弹","彌":"弥","彎":"弯","彔":"录","彙":"汇","彠":"彟","彥":"彦","彫":"雕","彲":"彨","彷":"彷","彿":"佛","後":"后","徑":"径","從":"从","徠":"徕","復":"复","徵":"征","徹":"彻","徿":"𪫌","恆":"恒","恥":"耻","悅":"悦","悞":"悮","悵":"怅","悶":"闷","悽":"凄","惡":"恶","惱":"恼","惲":"恽","惻":"恻","愛":"爱","愜":"惬","愨":"悫","愴":"怆","愷":"恺","愻":"𢙏","愾":"忾","慄":"栗","態":"态","慍":"愠","慘":"惨","慚":"惭","慟":"恸","慣":"惯","慤":"悫","慪":"怄","慫":"怂","慮":"虑","慳":"悭","慶":"庆","慺":"㥪","慼":"戚","慾":"欲","憂":"忧","憊":"惫","憐":"怜","憑":"凭","憒":"愦","憖":"慭","憚":"惮","憢":"𢙒","憤":"愤","憫":"悯","憮":"怃","憲":"宪","憶":"忆","憸":"𪫺","憹":"𢙐","懀":"𢙓","懇":"恳","應":"应","懌":"怿","懍":"懔","懎":"𢠁","懞":"蒙","懟":"怼","懣":"懑","懤":"㤽","懨":"恹","懲":"惩","懶":"懒","懷":"怀","懸":"悬","懺":"忏","懼":"惧","懾":"慑","戀":"恋","戇":"戆","戔":"戋","戧":"戗","戩":"戬","戰":"战","戱":"戯","戲":"戏","戶":"户","拋":"抛","挩":"捝","挱":"挲","挾":"挟","捨":"舍","捫":"扪","捱":"挨","捲":"卷","掃":"扫","掄":"抡","掆":"㧏","掗":"挜","掙":"挣","掚":"𪭵","掛":"挂","採":"采","揀":"拣","揚":"扬","換":"换","揮":"挥","揯":"搄","損":"损","搖":"摇","搗":"捣","搵":"揾","搶":"抢","摋":"𢫬","摐":"𪭢","摑":"掴","摜":"掼","摟":"搂","摯":"挚","摳":"抠","摶":"抟","摺":"折","摻":"掺","撈":"捞","撊":"𪭾","撏":"挦","撐":"撑","撓":"挠","撝":"㧑","撟":"挢","撣":"掸","撥":"拨","撧":"𪮖","撫":"抚","撲":"扑","撳":"揿","撻":"挞","撾":"挝","撿":"捡","擁":"拥","擄":"掳","擇":"择","擊":"击","擋":"挡","擓":"㧟","擔":"担","據":"据","擟":"𪭧","擠":"挤","擣":"捣","擫":"𢬍","擬":"拟","擯":"摈","擰":"拧","擱":"搁","擲":"掷","擴":"扩","擷":"撷","擺":"摆","擻":"擞","擼":"撸","擽":"㧰","擾":"扰","攄":"摅","攆":"撵","攋":"𪮶","攏":"拢","攔":"拦","攖":"撄","攙":"搀","攛":"撺","攜":"携","攝":"摄","攢":"攒","攣":"挛","攤":"摊","攪":"搅","攬":"揽","敎":"教","敓":"敚","敗":"败","敘":"叙","敵":"敌","數":"数","斂":"敛","斃":"毙","斅":"𢽾","斆":"敩","斕":"斓","斬":"斩","斷":"断","斸":"𣃁","於":"于","旂":"旗","旣":"既","昇":"升","時":"时","晉":"晋","晛":"𬀪","晝":"昼","暈":"晕","暉":"晖","暐":"𬀩","暘":"旸","暢":"畅","暫":"暂","曄":"晔","曆":"历","曇":"昙","曉":"晓","曊":"𪰶","曏":"向","曖":"暧","曠":"旷","曥":"𣆐","曨":"昽","曬":"晒","書":"书","會":"会","朥":"𦛨","朧":"胧","朮":"术","東":"东","枴":"拐","柵":"栅","柺":"拐","査":"查","桱":"𣐕","桿":"杆","梔":"栀","梖":"𪱷","梘":"枧","梜":"𬂩","條":"条","梟":"枭","梲":"棁","棄":"弃","棊":"棋","棖":"枨","棗":"枣","棟":"栋","棡":"㭎","棧":"栈","棲":"栖","棶":"梾","椏":"桠","椲":"㭏","楇":"𣒌","楊":"杨","楓":"枫","楨":"桢","業":"业","極":"极","榘":"矩","榦":"干","榪":"杩","榮":"荣","榲":"榅","榿":"桤","構":"构","槍":"枪","槓":"杠","槤":"梿","槧":"椠","槨":"椁","槫":"𣏢","槮":"椮","槳":"桨","槶":"椢","槼":"椝","樁":"桩","樂":"乐","樅":"枞","樑":"梁","樓":"楼","標":"标","樞":"枢","樠":"𣗊","樢":"㭤","樣":"样","樤":"𣔌","樧":"榝","樫":"㭴","樳":"桪","樸":"朴","樹":"树","樺":"桦","樿":"椫","橈":"桡","橋":"桥","機":"机","橢":"椭","橫":"横","橯":"𣓿","檁":"檩","檉":"柽","檔":"档","檜":"桧","檟":"槚","檢":"检","檣":"樯","檭":"𣘴","檮":"梼","檯":"台","檳":"槟","檵":"𪲛","檸":"柠","檻":"槛","櫃":"柜","櫅":"𪲎","櫍":"𬃊","櫓":"橹","櫚":"榈","櫛":"栉","櫝":"椟","櫞":"橼","櫟":"栎","櫠":"𪲮","櫥":"橱","櫧":"槠","櫨":"栌","櫪":"枥","櫫":"橥","櫬":"榇","櫱":"蘖","櫳":"栊","櫸":"榉","櫻":"樱","欄":"栏","欅":"榉","欇":"𪳍","權":"权","欍":"𣐤","欏":"椤","欐":"𪲔","欑":"𪴙","欒":"栾","欓":"𣗋","欖":"榄","欘":"𣚚","欞":"棂","欽":"钦","歎":"叹","歐":"欧","歟":"欤","歡":"欢","歲":"岁","歷":"历","歸":"归","歿":"殁","殘":"残","殞":"殒","殢":"𣨼","殤":"殇","殨":"㱮","殫":"殚","殭":"僵","殮":"殓","殯":"殡","殰":"㱩","殲":"歼","殺":"杀","殻":"壳","殼":"壳","毀":"毁","毆":"殴","毊":"𪵑","毿":"毵","氂":"牦","氈":"毡","氌":"氇","氣":"气","氫":"氢","氬":"氩","氭":"𣱝","氳":"氲","氾":"泛","汎":"泛","汙":"污","決":"决","沒":"没","沖":"冲","況":"况","泝":"溯","洩":"泄","洶":"汹","浹":"浃","浿":"𬇙","涇":"泾","涗":"涚","涼":"凉","淒":"凄","淚":"泪","淥":"渌","淨":"净","淩":"凌","淪":"沦","淵":"渊","淶":"涞","淺":"浅","渙":"涣","減":"减","渢":"沨","渦":"涡","測":"测","渾":"浑","湊":"凑","湋":"𣲗","湞":"浈","湧":"涌","湯":"汤","溈":"沩","準":"准","溝":"沟","溡":"𪶄","溫":"温","溮":"浉","溳":"涢","溼":"湿","滄":"沧","滅":"灭","滌":"涤","滎":"荥","滙":"汇","滬":"沪","滯":"滞","滲":"渗","滷":"卤","滸":"浒","滻":"浐","滾":"滚","滿":"满","漁":"渔","漊":"溇","漍":"𬇹","漚":"沤","漢":"汉","漣":"涟","漬":"渍","漲":"涨","漵":"溆","漸":"渐","漿":"浆","潁":"颍","潑":"泼","潔":"洁","潕":"𣲘","潙":"沩","潚":"㴋","潛":"潜","潣":"𫞗","潤":"润","潯":"浔","潰":"溃","潷":"滗","潿":"涠","澀":"涩","澅":"𣶩","澆":"浇","澇":"涝","澐":"沄","澗":"涧","澠":"渑","澤":"泽","澦":"滪","澩":"泶","澫":"𬇕","澬":"𫞚","澮":"浍","澱":"淀","澾":"㳠","濁":"浊","濃":"浓","濄":"㳡","濆":"𣸣","濕":"湿","濘":"泞","濚":"溁","濛":"蒙","濜":"浕","濟":"济","濤":"涛","濧":"㳔","濫":"滥","濰":"潍","濱":"滨","濺":"溅","濼":"泺","濾":"滤","濿":"𪵱","瀂":"澛","瀃":"𣽷","瀅":"滢","瀆":"渎","瀇":"㲿","瀉":"泻","瀋":"沈","瀏":"浏","瀕":"濒","瀘":"泸","瀝":"沥","瀟":"潇","瀠":"潆","瀦":"潴","瀧":"泷","瀨":"濑","瀰":"弥","瀲":"潋","瀾":"澜","灃":"沣","灄":"滠","灍":"𫞝","灑":"洒","灒":"𪷽","灕":"漓","灘":"滩","灙":"𣺼","灝":"灏","灡":"㳕","灣":"湾","灤":"滦","灧":"滟","灩":"滟","災":"灾","為":"为","烏":"乌","烴":"烃","無":"无","煇":"𪸩","煉":"炼","煒":"炜","煙":"烟","煢":"茕","煥":"焕","煩":"烦","煬":"炀","煱":"㶽","熂":"𪸕","熅":"煴","熉":"𤈶","熌":"𤇄","熒":"荧","熓":"𤆡","熗":"炝","熚":"𤇹","熡":"𤋏","熰":"𬉼","熱":"热","熲":"颎","熾":"炽","燀":"𬊤","燁":"烨","燈":"灯","燉":"炖","燒":"烧","燖":"𬊈","燙":"烫","燜":"焖","營":"营","燦":"灿","燬":"毁","燭":"烛","燴":"烩","燶":"㶶","燻":"熏","燼":"烬","燾":"焘","爃":"𫞡","爄":"𤇃","爇":"𦶟","爍":"烁","爐":"炉","爖":"𤇭","爛":"烂","爥":"𪹳","爧":"𫞠","爭":"争","爲":"为","爺":"爷","爾":"尔","牀":"床","牆":"墙","牘":"牍","牴":"牴","牽":"牵","犖":"荦","犛":"牦","犞":"𪺭","犢":"犊","犧":"牺","狀":"状","狹":"狭","狽":"狈","猌":"𪺽","猙":"狰","猶":"犹","猻":"狲","獁":"犸","獃":"呆","獄":"狱","獅":"狮","獊":"𪺷","獎":"奖","獨":"独","獩":"𤞃","獪":"狯","獫":"猃","獮":"狝","獰":"狞","獱":"㺍","獲":"获","獵":"猎","獷":"犷","獸":"兽","獺":"獭","獻":"献","獼":"猕","玀":"猡","玁":"𤞤","珼":"𫞥","現":"现","琱":"雕","琺":"珐","琿":"珲","瑋":"玮","瑒":"玚","瑣":"琐","瑤":"瑶","瑩":"莹","瑪":"玛","瑲":"玱","瑻":"𪻲","瑽":"𪻐","璉":"琏","璊":"𫞩","璕":"𬍤","璗":"𬍡","璝":"𪻺","璡":"琎","璣":"玑","璦":"瑷","璫":"珰","璯":"㻅","環":"环","璵":"玙","璸":"瑸","璼":"𫞨","璽":"玺","璾":"𫞦","璿":"璇","瓄":"𪻨","瓅":"𬍛","瓊":"琼","瓏":"珑","瓔":"璎","瓕":"𤦀","瓚":"瓒","瓛":"𤩽","甌":"瓯","甕":"瓮","產":"产","産":"产","甦":"苏","甯":"宁","畝":"亩","畢":"毕","畫":"画","異":"异","畵":"画","當":"当","畼":"𪽈","疇":"畴","疊":"叠","痙":"痉","痠":"酸","痮":"𪽪","痾":"疴","瘂":"痖","瘋":"疯","瘍":"疡","瘓":"痪","瘞":"瘗","瘡":"疮","瘧":"疟","瘮":"瘆","瘱":"𪽷","瘲":"疭","瘺":"瘘","瘻":"瘘","療":"疗","癆":"痨","癇":"痫","癉":"瘅","癐":"𤶊","癒":"愈","癘":"疠","癟":"瘪","癡":"痴","癢":"痒","癤":"疖","癥":"症","癧":"疬","癩":"癞","癬":"癣","癭":"瘿","癮":"瘾","癰":"痈","癱":"瘫","癲":"癫","發":"发","皁":"皂","皚":"皑","皟":"𤾀","皰":"疱","皸":"皲","皺":"皱","盃":"杯","盜":"盗","盞":"盏","盡":"尽","監":"监","盤":"盘","盧":"卢","盨":"𪾔","盪":"荡","眝":"𪾣","眞":"真","眥":"眦","眾":"众","睍":"𪾢","睏":"困","睜":"睁","睞":"睐","瞘":"眍","瞜":"䁖","瞞":"瞒","瞤":"𥆧","瞭":"瞭","瞶":"瞆","瞼":"睑","矇":"蒙","矉":"𪾸","矑":"𪾦","矓":"眬","矚":"瞩","矯":"矫","硃":"朱","硜":"硁","硤":"硖","硨":"砗","硯":"砚","碕":"埼","碙":"𥐻","碩":"硕","碭":"砀","碸":"砜","確":"确","碼":"码","碽":"䂵","磑":"硙","磚":"砖","磠":"硵","磣":"碜","磧":"碛","磯":"矶","磽":"硗","磾":"䃅","礄":"硚","礆":"硷","礎":"础","礐":"𬒈","礒":"𥐟","礙":"碍","礦":"矿","礪":"砺","礫":"砾","礬":"矾","礮":"𪿫","礱":"砻","祇":"祇","祕":"秘","祿":"禄","禍":"祸","禎":"祯","禕":"祎","禡":"祃","禦":"御","禪":"禅","禮":"礼","禰":"祢","禱":"祷","禿":"秃","秈":"籼","稅":"税","稈":"秆","稏":"䅉","稜":"棱","稟":"禀","種":"种","稱":"称","穀":"谷","穇":"䅟","穌":"稣","積":"积","穎":"颖","穠":"秾","穡":"穑","穢":"秽","穩":"稳","穫":"获","穭":"穞","窩":"窝","窪":"洼","窮":"穷","窯":"窑","窵":"窎","窶":"窭","窺":"窥","竄":"窜","竅":"窍","竇":"窦","竈":"灶","竊":"窃","竚":"𥩟","竪":"竖","竱":"𫁟","競":"竞","筆":"笔","筍":"笋","筧":"笕","筴":"䇲","箇":"个","箋":"笺","箏":"筝","節":"节","範":"范","築":"筑","篋":"箧","篔":"筼","篘":"𥬠","篠":"筿","篢":"𬕂","篤":"笃","篩":"筛","篳":"筚","篸":"𥮾","簀":"箦","簂":"𫂆","簍":"篓","簑":"蓑","簞":"箪","簡":"简","簢":"𫂃","簣":"篑","簫":"箫","簹":"筜","簽":"签","簾":"帘","籃":"篮","籅":"𥫣","籋":"𥬞","籌":"筹","籔":"䉤","籙":"箓","籛":"篯","籜":"箨","籟":"籁","籠":"笼","籤":"签","籩":"笾","籪":"簖","籬":"篱","籮":"箩","籲":"吁","粵":"粤","糉":"粽","糝":"糁","糞":"粪","糧":"粮","糰":"团","糲":"粝","糴":"籴","糶":"粜","糹":"纟","糺":"𫄙","糾":"纠","紀":"纪","紂":"纣","紃":"𬘓","約":"约","紅":"红","紆":"纡","紇":"纥","紈":"纨","紉":"纫","紋":"纹","納":"纳","紐":"纽","紓":"纾","純":"纯","紕":"纰","紖":"纼","紗":"纱","紘":"纮","紙":"纸","級":"级","紛":"纷","紜":"纭","紝":"纴","紞":"𬘘","紟":"𫄛","紡":"纺","紬":"䌷","紮":"扎","細":"细","紱":"绂","紲":"绁","紳":"绅","紵":"纻","紹":"绍","紺":"绀","紼":"绋","紿":"绐","絀":"绌","絁":"𫄟","終":"终","絃":"弦","組":"组","絅":"䌹","絆":"绊","絍":"𫟃","絎":"绗","結":"结","絕":"绝","絙":"𫄠","絛":"绦","絝":"绔","絞":"绞","絡":"络","絢":"绚","絥":"𫄢","給":"给","絧":"𫄡","絨":"绒","絪":"𬘡","絰":"绖","統":"统","絲":"丝","絳":"绛","絶":"绝","絹":"绢","絺":"𫄨","綀":"𦈌","綁":"绑","綃":"绡","綄":"𬘫","綆":"绠","綇":"𦈋","綈":"绨","綉":"绣","綋":"𫟄","綌":"绤","綎":"𬘩","綏":"绥","綐":"䌼","綑":"捆","經":"经","綖":"𫄧","綜":"综","綝":"𬘭","綞":"缍","綟":"𫄫","綠":"绿","綡":"𫟅","綢":"绸","綣":"绻","綧":"𬘯","綪":"𬘬","綫":"线","綬":"绶","維":"维","綯":"绹","綰":"绾","綱":"纲","網":"网","綳":"绷","綴":"缀","綵":"彩","綸":"纶","綹":"绺","綺":"绮","綻":"绽","綽":"绰","綾":"绫","綿":"绵","緄":"绲","緇":"缁","緊":"紧","緋":"绯","緍":"𦈏","緑":"绿","緒":"绪","緓":"绬","緔":"绱","緗":"缃","緘":"缄","緙":"缂","線":"线","緝":"缉","緞":"缎","緟":"𫟆","締":"缔","緡":"缗","緣":"缘","緤":"𫄬","緦":"缌","編":"编","緩":"缓","緬":"缅","緮":"𫄭","緯":"纬","緰":"𦈕","緱":"缑","緲":"缈","練":"练","緶":"缏","緷":"𦈉","緸":"𦈑","緹":"缇","緻":"致","緼":"缊","縈":"萦","縉":"缙","縊":"缢","縋":"缒","縍":"𫄰","縎":"𦈔","縐":"绉","縑":"缣","縕":"缊","縗":"缞","縛":"缚","縝":"缜","縞":"缟","縟":"缛","縣":"县","縧":"绦","縫":"缝","縬":"𦈚","縭":"缡","縮":"缩","縯":"𬙂","縰":"𫄳","縱":"纵","縲":"缧","縳":"䌸","縴":"纤","縵":"缦","縶":"絷","縷":"缕","縸":"𫄲","縹":"缥","縺":"𦈐","總":"总","績":"绩","繂":"𫄴","繃":"绷","繅":"缫","繆":"缪","繈":"𫄶","繏":"𦈝","繐":"𰬸","繒":"缯","繓":"𦈛","織":"织","繕":"缮","繚":"缭","繞":"绕","繟":"𦈎","繡":"绣","繢":"缋","繨":"𫄤","繩":"绳","繪":"绘","繫":"系","繬":"𫄱","繭":"茧","繮":"缰","繯":"缳","繰":"缲","繳":"缴","繶":"𫄷","繷":"𫄣","繸":"䍁","繹":"绎","繻":"𦈡","繼":"继","繽":"缤","繾":"缱","繿":"䍀","纁":"𫄸","纆":"𬙊","纇":"颣","纈":"缬","纊":"纩","續":"续","纍":"累","纏":"缠","纓":"缨","纔":"才","纕":"𬙋","纖":"纤","纗":"𫄹","纘":"缵","纚":"𫄥","纜":"缆","缽":"钵","罃":"䓨","罈":"坛","罌":"罂","罎":"坛","罰":"罚","罵":"骂","罷":"罢","羅":"罗","羆":"罴","羈":"羁","羋":"芈","羣":"群","羥":"羟","羨":"羡","義":"义","羵":"𫅗","羶":"膻","習":"习","翫":"玩","翬":"翚","翹":"翘","翽":"翙","耬":"耧","耮":"耢","聖":"圣","聞":"闻","聯":"联","聰":"聪","聲":"声","聳":"耸","聵":"聩","聶":"聂","職":"职","聹":"聍","聻":"𫆏","聽":"听","聾":"聋","肅":"肃","脅":"胁","脈":"脉","脛":"胫","脣":"唇","脥":"𣍰","脩":"修","脫":"脱","脹":"胀","腎":"肾","腖":"胨","腡":"脶","腦":"脑","腪":"𣍯","腫":"肿","腳":"脚","腸":"肠","膃":"腽","膕":"腘","膚":"肤","膞":"䏝","膠":"胶","膢":"𦝼","膩":"腻","膹":"𪱥","膽":"胆","膾":"脍","膿":"脓","臉":"脸","臍":"脐","臏":"膑","臗":"𣎑","臘":"腊","臚":"胪","臟":"脏","臠":"脔","臢":"臜","臥":"卧","臨":"临","臺":"台","與":"与","興":"兴","舉":"举","舊":"旧","舘":"馆","艙":"舱","艣":"𫇛","艤":"舣","艦":"舰","艫":"舻","艱":"艰","艷":"艳","芻":"刍","苧":"苎","茲":"兹","荊":"荆","莊":"庄","莖":"茎","莢":"荚","莧":"苋","菕":"𰰨","華":"华","菴":"庵","菸":"烟","萇":"苌","萊":"莱","萬":"万","萴":"荝","萵":"莴","葉":"叶","葒":"荭","葝":"𫈎","葤":"荮","葦":"苇","葯":"药","葷":"荤","蒍":"𫇭","蒐":"搜","蒓":"莼","蒔":"莳","蒕":"蒀","蒞":"莅","蒭":"𫇴","蒼":"苍","蓀":"荪","蓆":"席","蓋":"盖","蓧":"𦰏","蓮":"莲","蓯":"苁","蓴":"莼","蓽":"荜","蔄":"𬜬","蔔":"卜","蔘":"参","蔞":"蒌","蔣":"蒋","蔥":"葱","蔦":"茑","蔭":"荫","蔯":"𫈟","蔿":"𫇭","蕁":"荨","蕆":"蒇","蕎":"荞","蕒":"荬","蕓":"芸","蕕":"莸","蕘":"荛","蕝":"𫈵","蕢":"蒉","蕩":"荡","蕪":"芜","蕭":"萧","蕳":"𫈉","蕷":"蓣","蕽":"𫇽","薀":"蕰","薆":"𫉁","薈":"荟","薊":"蓟","薌":"芗","薑":"姜","薔":"蔷","薘":"荙","薟":"莶","薦":"荐","薩":"萨","薳":"䓕","薴":"苧","薵":"䓓","薹":"苔","薺":"荠","藉":"藉","藍":"蓝","藎":"荩","藝":"艺","藥":"药","藪":"薮","藭":"䓖","藴":"蕴","藶":"苈","藷":"𫉄","藹":"蔼","藺":"蔺","蘀":"萚","蘄":"蕲","蘆":"芦","蘇":"苏","蘊":"蕴","蘋":"苹","蘚":"藓","蘞":"蔹","蘟":"𦻕","蘢":"茏","蘭":"兰","蘺":"蓠","蘿":"萝","虆":"蔂","虉":"𬟁","處":"处","虛":"虚","虜":"虏","號":"号","虧":"亏","虯":"虬","蛺":"蛱","蛻":"蜕","蜆":"蚬","蝀":"𬟽","蝕":"蚀","蝟":"猬","蝦":"虾","蝨":"虱","蝸":"蜗","螄":"蛳","螞":"蚂","螢":"萤","螮":"䗖","螻":"蝼","螿":"螀","蟂":"𫋇","蟄":"蛰","蟈":"蝈","蟎":"螨","蟘":"𫋌","蟜":"𫊸","蟣":"虮","蟬":"蝉","蟯":"蛲","蟲":"虫","蟳":"𫊻","蟶":"蛏","蟻":"蚁","蠀":"𧏗","蠁":"蚃","蠅":"蝇","蠆":"虿","蠍":"蝎","蠐":"蛴","蠑":"蝾","蠔":"蚝","蠙":"𧏖","蠟":"蜡","蠣":"蛎","蠦":"𫊮","蠨":"蟏","蠱":"蛊","蠶":"蚕","蠻":"蛮","蠾":"𧑏","衆":"众","衊":"蔑","術":"术","衕":"同","衚":"胡","衛":"卫","衝":"冲","衹":"衹","袞":"衮","裊":"袅","裏":"里","補":"补","裝":"装","裡":"里","製":"制","複":"复","褌":"裈","褘":"袆","褲":"裤","褳":"裢","褸":"褛","褻":"亵","襀":"𫌀","襇":"裥","襉":"裥","襏":"袯","襓":"𫋹","襖":"袄","襗":"𫋷","襘":"𫋻","襝":"裣","襠":"裆","襤":"褴","襪":"袜","襬":"摆","襯":"衬","襰":"𧝝","襲":"袭","襴":"襕","襵":"𫌇","覆":"覆","覈":"核","見":"见","覎":"觃","規":"规","覓":"觅","視":"视","覘":"觇","覛":"𫌪","覡":"觋","覥":"觍","覦":"觎","親":"亲","覬":"觊","覯":"觏","覲":"觐","覷":"觑","覹":"𫌭","覺":"觉","覼":"𫌨","覽":"览","覿":"觌","觀":"观","觴":"觞","觶":"觯","觸":"触","訁":"讠","訂":"订","訃":"讣","計":"计","訊":"讯","訌":"讧","討":"讨","訏":"𬣙","訐":"讦","訑":"𫍙","訒":"讱","訓":"训","訕":"讪","訖":"讫","託":"托","記":"记","訛":"讹","訜":"𫍛","訝":"讶","訞":"𫍚","訟":"讼","訢":"䜣","訣":"诀","訥":"讷","訨":"𫟞","訩":"讻","訪":"访","設":"设","許":"许","訴":"诉","訶":"诃","診":"诊","註":"注","証":"证","詀":"𧮪","詁":"诂","詆":"诋","詊":"𫟟","詎":"讵","詐":"诈","詑":"𫍡","詒":"诒","詓":"𫍜","詔":"诏","評":"评","詖":"诐","詗":"诇","詘":"诎","詛":"诅","詝":"𬣞","詞":"词","詠":"咏","詡":"诩","詢":"询","詣":"诣","試":"试","詩":"诗","詪":"𬣳","詫":"诧","詬":"诟","詭":"诡","詮":"诠","詰":"诘","話":"话","該":"该","詳":"详","詵":"诜","詷":"𫍣","詼":"诙","詿":"诖","誂":"𫍥","誄":"诔","誅":"诛","誆":"诓","誇":"夸","誋":"𫍪","誌":"志","認":"认","誑":"诳","誒":"诶","誕":"诞","誘":"诱","誚":"诮","語":"语","誠":"诚","誡":"诫","誣":"诬","誤":"误","誥":"诰","誦":"诵","誨":"诲","說":"说","誫":"𫍨","説":"说","誰":"谁","課":"课","誳":"𫍮","誴":"𫟡","誶":"谇","誷":"𫍬","誹":"诽","誺":"𫍧","誼":"谊","誾":"訚","調":"调","諂":"谄","諄":"谆","談":"谈","諉":"诿","請":"请","諍":"诤","諏":"诹","諑":"诼","諒":"谅","諓":"𬣡","論":"论","諗":"谂","諛":"谀","諜":"谍","諝":"谞","諞":"谝","諟":"𬤊","諡":"谥","諢":"诨","諣":"𫍩","諤":"谔","諥":"𫍳","諦":"谛","諧":"谐","諫":"谏","諭":"谕","諮":"咨","諯":"𫍱","諰":"𫍰","諱":"讳","諲":"𬤇","諳":"谙","諴":"𫍯","諶":"谌","諷":"讽","諸":"诸","諺":"谚","諼":"谖","諾":"诺","謀":"谋","謁":"谒","謂":"谓","謄":"誊","謅":"诌","謆":"𫍸","謉":"𫍷","謊":"谎","謎":"谜","謏":"𫍲","謐":"谧","謔":"谑","謖":"谡","謗":"谤","謙":"谦","謚":"谥","講":"讲","謝":"谢","謠":"谣","謡":"谣","謨":"谟","謫":"谪","謬":"谬","謭":"谫","謯":"𫍹","謱":"𫍴","謳":"讴","謸":"𫍵","謹":"谨","謾":"谩","譁":"哗","譂":"𫟠","譅":"𰶎","譆":"𫍻","證":"证","譊":"𫍢","譎":"谲","譏":"讥","譑":"𫍤","譓":"𬤝","譖":"谮","識":"识","譙":"谯","譚":"谭","譜":"谱","譞":"𫍽","譟":"噪","譨":"𫍦","譫":"谵","譭":"毁","譯":"译","議":"议","譴":"谴","護":"护","譸":"诪","譽":"誉","譾":"谫","讀":"读","讅":"谉","變":"变","讋":"詟","讌":"䜩","讎":"雠","讒":"谗","讓":"让","讕":"谰","讖":"谶","讚":"赞","讜":"谠","讞":"谳","豈":"岂","豎":"竖","豐":"丰","豔":"艳","豬":"猪","豵":"𫎆","豶":"豮","貓":"猫","貗":"𫎌","貙":"䝙","貝":"贝","貞":"贞","貟":"贠","負":"负","財":"财","貢":"贡","貧":"贫","貨":"货","販":"贩","貪":"贪","貫":"贯","責":"责","貯":"贮","貰":"贳","貲":"赀","貳":"贰","貴":"贵","貶":"贬","買":"买","貸":"贷","貺":"贶","費":"费","貼":"贴","貽":"贻","貿":"贸","賀":"贺","賁":"贲","賂":"赂","賃":"赁","賄":"贿","賅":"赅","資":"资","賈":"贾","賊":"贼","賑":"赈","賒":"赊","賓":"宾","賕":"赇","賙":"赒","賚":"赉","賜":"赐","賝":"𫎩","賞":"赏","賟":"𧹖","賠":"赔","賡":"赓","賢":"贤","賣":"卖","賤":"贱","賦":"赋","賧":"赕","質":"质","賫":"赍","賬":"账","賭":"赌","賰":"䞐","賴":"赖","賵":"赗","賺":"赚","賻":"赙","購":"购","賽":"赛","賾":"赜","贃":"𧹗","贄":"贽","贅":"赘","贇":"赟","贈":"赠","贉":"𫎫","贊":"赞","贋":"赝","贍":"赡","贏":"赢","贐":"赆","贑":"𫎬","贓":"赃","贔":"赑","贖":"赎","贗":"赝","贚":"𫎦","贛":"赣","贜":"赃","赬":"赪","趕":"赶","趙":"赵","趨":"趋","趲":"趱","跡":"迹","踐":"践","踰":"逾","踴":"踊","蹌":"跄","蹔":"𫏐","蹕":"跸","蹟":"迹","蹠":"跖","蹣":"蹒","蹤":"踪","蹳":"𫏆","蹺":"跷","蹻":"𫏋","躂":"跶","躉":"趸","躊":"踌","躋":"跻","躍":"跃","躎":"䟢","躑":"踯","躒":"跞","躓":"踬","躕":"蹰","躘":"𨀁","躚":"跹","躝":"𨅬","躡":"蹑","躥":"蹿","躦":"躜","躪":"躏","軀":"躯","軉":"𨉗","車":"车","軋":"轧","軌":"轨","軍":"军","軏":"𫐄","軑":"轪","軒":"轩","軔":"轫","軕":"𫐅","軗":"𨐅","軛":"轭","軜":"𫐇","軝":"𬨂","軟":"软","軤":"轷","軨":"𫐉","軫":"轸","軬":"𫐊","軲":"轱","軷":"𫐈","軸":"轴","軹":"轵","軺":"轺","軻":"轲","軼":"轶","軾":"轼","軿":"𫐌","較":"较","輄":"𨐈","輅":"辂","輇":"辁","輈":"辀","載":"载","輊":"轾","輋":"𪨶","輒":"辄","輓":"挽","輔":"辅","輕":"轻","輖":"𫐏","輗":"𫐐","輛":"辆","輜":"辎","輝":"辉","輞":"辋","輟":"辍","輢":"𫐎","輥":"辊","輦":"辇","輨":"𫐑","輩":"辈","輪":"轮","輬":"辌","輮":"𫐓","輯":"辑","輳":"辏","輶":"𬨎","輷":"𫐒","輸":"输","輻":"辐","輼":"辒","輾":"辗","輿":"舆","轀":"辒","轂":"毂","轄":"辖","轅":"辕","轆":"辘","轇":"𫐖","轉":"转","轊":"𫐕","轍":"辙","轎":"轿","轐":"𫐗","轔":"辚","轗":"𫐘","轟":"轰","轠":"𫐙","轡":"辔","轢":"轹","轣":"𫐆","轤":"轳","辦":"办","辭":"辞","辮":"辫","辯":"辩","農":"农","迴":"回","逕":"迳","這":"这","連":"连","週":"周","進":"进","遊":"游","運":"运","過":"过","達":"达","違":"违","遙":"遥","遜":"逊","遞":"递","遠":"远","遡":"溯","適":"适","遱":"𫐷","遲":"迟","遷":"迁","選":"选","遺":"遗","遼":"辽","邁":"迈","還":"还","邇":"迩","邊":"边","邏":"逻","邐":"逦","郟":"郏","郵":"邮","鄆":"郓","鄉":"乡","鄒":"邹","鄔":"邬","鄖":"郧","鄟":"𫑘","鄧":"邓","鄩":"𬩽","鄭":"郑","鄰":"邻","鄲":"郸","鄳":"𫑡","鄴":"邺","鄶":"郐","鄺":"邝","酇":"酂","酈":"郦","醃":"腌","醖":"酝","醜":"丑","醞":"酝","醟":"蒏","醣":"糖","醫":"医","醬":"酱","醱":"酦","醲":"𬪩","醶":"𫑷","釀":"酿","釁":"衅","釃":"酾","釅":"酽","釋":"释","釐":"厘","釒":"钅","釓":"钆","釔":"钇","釕":"钌","釗":"钊","釘":"钉","釙":"钋","釚":"𫟲","針":"针","釟":"𫓥","釣":"钓","釤":"钐","釦":"扣","釧":"钏","釨":"𫓦","釩":"钒","釲":"𫟳","釳":"𨰿","釴":"𬬩","釵":"钗","釷":"钍","釹":"钕","釺":"钎","釾":"䥺","釿":"𬬱","鈀":"钯","鈁":"钫","鈃":"钘","鈄":"钭","鈅":"钥","鈆":"𫓪","鈇":"𫓧","鈈":"钚","鈉":"钠","鈋":"𨱂","鈍":"钝","鈎":"钩","鈐":"钤","鈑":"钣","鈒":"钑","鈔":"钞","鈕":"钮","鈖":"𫟴","鈗":"𫟵","鈛":"𫓨","鈞":"钧","鈠":"𨱁","鈡":"钟","鈣":"钙","鈥":"钬","鈦":"钛","鈧":"钪","鈮":"铌","鈯":"𨱄","鈰":"铈","鈲":"𨱃","鈳":"钶","鈴":"铃","鈷":"钴","鈸":"钹","鈹":"铍","鈺":"钰","鈽":"钸","鈾":"铀","鈿":"钿","鉀":"钾","鉁":"𨱅","鉅":"巨","鉆":"钻","鉈":"铊","鉉":"铉","鉊":"𬬿","鉋":"铇","鉍":"铋","鉑":"铂","鉔":"𫓬","鉕":"钷","鉗":"钳","鉚":"铆","鉛":"铅","鉝":"𫟷","鉞":"钺","鉠":"𫓭","鉢":"钵","鉤":"钩","鉥":"𬬸","鉦":"钲","鉧":"𬭁","鉬":"钼","鉭":"钽","鉮":"𬬹","鉳":"锫","鉶":"铏","鉷":"𫟹","鉸":"铰","鉺":"铒","鉻":"铬","鉽":"𫟸","鉾":"𫓴","鉿":"铪","銀":"银","銁":"𫓲","銂":"𫟻","銃":"铳","銅":"铜","銈":"𫓯","銊":"𫓰","銍":"铚","銏":"𫟶","銑":"铣","銓":"铨","銖":"铢","銘":"铭","銚":"铫","銛":"铦","銜":"衔","銠":"铑","銣":"铷","銥":"铱","銦":"铟","銨":"铵","銩":"铥","銪":"铕","銫":"铯","銬":"铐","銱":"铞","銳":"锐","銶":"𨱇","銷":"销","銹":"锈","銻":"锑","銼":"锉","鋁":"铝","鋂":"𰾄","鋃":"锒","鋅":"锌","鋇":"钡","鋉":"𨱈","鋌":"铤","鋏":"铗","鋐":"𬭎","鋒":"锋","鋗":"𫓶","鋙":"铻","鋝":"锊","鋟":"锓","鋠":"𫓵","鋣":"铘","鋤":"锄","鋥":"锃","鋦":"锔","鋨":"锇","鋩":"铓","鋪":"铺","鋭":"锐","鋮":"铖","鋯":"锆","鋰":"锂","鋱":"铽","鋶":"锍","鋸":"锯","鋹":"𬬮","鋼":"钢","錀":"𬬭","錁":"锞","錂":"𨱋","錄":"录","錆":"锖","錇":"锫","錈":"锩","錏":"铔","錐":"锥","錒":"锕","錕":"锟","錘":"锤","錙":"锱","錚":"铮","錛":"锛","錜":"𫓻","錝":"𫓽","錞":"𬭚","錟":"锬","錠":"锭","錡":"锜","錢":"钱","錤":"𫓹","錥":"𫓾","錦":"锦","錨":"锚","錩":"锠","錫":"锡","錮":"锢","錯":"错","録":"录","錳":"锰","錶":"表","錸":"铼","錼":"镎","錽":"𫓸","鍀":"锝","鍁":"锨","鍃":"锪","鍄":"𨱉","鍅":"钫","鍆":"钔","鍇":"锴","鍈":"锳","鍉":"𫔂","鍊":"炼","鍋":"锅","鍍":"镀","鍒":"𫔄","鍔":"锷","鍘":"铡","鍚":"钖","鍛":"锻","鍠":"锽","鍤":"锸","鍥":"锲","鍩":"锘","鍬":"锹","鍭":"𬭤","鍮":"𨱎","鍰":"锾","鍵":"键","鍶":"锶","鍺":"锗","鍼":"针","鍾":"钟","鎂":"镁","鎄":"锿","鎇":"镅","鎈":"𫟿","鎊":"镑","鎌":"镰","鎍":"𫔅","鎓":"𬭩","鎔":"镕","鎖":"锁","鎘":"镉","鎙":"𫔈","鎚":"锤","鎛":"镈","鎝":"𨱏","鎞":"𫔇","鎡":"镃","鎢":"钨","鎣":"蓥","鎦":"镏","鎧":"铠","鎩":"铩","鎪":"锼","鎬":"镐","鎭":"镇","鎮":"镇","鎯":"𨱍","鎰":"镒","鎲":"镋","鎳":"镍","鎵":"镓","鎶":"鿔","鎷":"𨰾","鎸":"镌","鎿":"镎","鏃":"镞","鏆":"𨱌","鏇":"旋","鏈":"链","鏉":"𨱒","鏌":"镆","鏍":"镙","鏏":"𬭬","鏐":"镠","鏑":"镝","鏗":"铿","鏘":"锵","鏚":"𬭭","鏜":"镗","鏝":"镘","鏞":"镛","鏟":"铲","鏡":"镜","鏢":"镖","鏤":"镂","鏥":"𫔊","鏦":"𫓩","鏨":"錾","鏰":"镚","鏵":"铧","鏷":"镤","鏹":"镪","鏺":"䥽","鏻":"𬭸","鏽":"锈","鏾":"𫔌","鐃":"铙","鐄":"𨱑","鐇":"𫔍","鐈":"𫓱","鐋":"铴","鐍":"𫔎","鐎":"𨱓","鐏":"𨱔","鐐":"镣","鐒":"铹","鐓":"镦","鐔":"镡","鐘":"钟","鐙":"镫","鐝":"镢","鐠":"镨","鐥":"䦅","鐦":"锎","鐧":"锏","鐨":"镄","鐩":"𬭼","鐪":"𫓺","鐫":"镌","鐮":"镰","鐯":"䦃","鐲":"镯","鐳":"镭","鐵":"铁","鐶":"镮","鐸":"铎","鐺":"铛","鐼":"𫔁","鐽":"𫟼","鐿":"镱","鑀":"𰾭","鑄":"铸","鑉":"𫠁","鑊":"镬","鑌":"镔","鑑":"鉴","鑒":"鉴","鑔":"镲","鑕":"锧","鑞":"镴","鑠":"铄","鑣":"镳","鑥":"镥","鑪":"𬬻","鑭":"镧","鑰":"钥","鑱":"镵","鑲":"镶","鑴":"𫔔","鑷":"镊","鑹":"镩","鑼":"锣","鑽":"钻","鑾":"銮","鑿":"凿","钁":"镢","钂":"镋","長":"长","門":"门","閂":"闩","閃":"闪","閆":"闫","閈":"闬","閉":"闭","開":"开","閌":"闶","閍":"𨸂","閎":"闳","閏":"闰","閐":"𨸃","閑":"闲","閒":"闲","間":"间","閔":"闵","閗":"𫔯","閘":"闸","閝":"𫠂","閞":"𫔰","閡":"阂","閣":"阁","閤":"合","閥":"阀","閨":"闺","閩":"闽","閫":"阃","閬":"阆","閭":"闾","閱":"阅","閲":"阅","閵":"𫔴","閶":"阊","閹":"阉","閻":"阎","閼":"阏","閽":"阍","閾":"阈","閿":"阌","闃":"阒","闆":"板","闇":"暗","闈":"闱","闉":"𬮱","闊":"阔","闋":"阕","闌":"阑","闍":"阇","闐":"阗","闑":"𫔶","闒":"阘","闓":"闿","闔":"阖","闕":"阙","闖":"闯","關":"关","闞":"阚","闠":"阓","闡":"阐","闢":"辟","闤":"阛","闥":"闼","阪":"阪","陘":"陉","陝":"陕","陞":"升","陣":"阵","陰":"阴","陳":"陈","陸":"陆","陽":"阳","隉":"陧","隊":"队","階":"阶","隑":"𬮿","隕":"陨","際":"际","隤":"𬯎","隨":"随","險":"险","隮":"𬯀","隯":"陦","隱":"隐","隴":"陇","隸":"隶","隻":"只","雋":"隽","雖":"虽","雙":"双","雛":"雏","雜":"杂","雞":"鸡","離":"离","難":"难","雲":"云","電":"电","霑":"沾","霢":"霡","霣":"𫕥","霧":"雾","霼":"𪵣","霽":"霁","靂":"雳","靄":"霭","靆":"叇","靈":"灵","靉":"叆","靚":"靓","靜":"静","靝":"靔","靦":"腼","靧":"𫖃","靨":"靥","鞏":"巩","鞝":"绱","鞦":"秋","鞽":"鞒","鞾":"𫖇","韁":"缰","韃":"鞑","韆":"千","韉":"鞯","韋":"韦","韌":"韧","韍":"韨","韓":"韩","韙":"韪","韚":"𫠅","韛":"𫖔","韜":"韬","韝":"鞲","韞":"韫","韠":"𫖒","韻":"韵","響":"响","頁":"页","頂":"顶","頃":"顷","項":"项","順":"顺","頇":"顸","須":"须","頊":"顼","頌":"颂","頍":"𫠆","頎":"颀","頏":"颃","預":"预","頑":"顽","頒":"颁","頓":"顿","頔":"𬱖","頗":"颇","領":"领","頜":"颌","頠":"𬱟","頡":"颉","頤":"颐","頦":"颏","頫":"𫖯","頭":"头","頮":"颒","頰":"颊","頲":"颋","頴":"颕","頵":"𫖳","頷":"颔","頸":"颈","頹":"颓","頻":"频","頽":"颓","顂":"𩓋","顃":"𩖖","顅":"𫖶","顆":"颗","題":"题","額":"额","顎":"颚","顏":"颜","顒":"颙","顓":"颛","顔":"颜","顗":"𫖮","願":"愿","顙":"颡","顛":"颠","類":"类","顢":"颟","顣":"𫖹","顥":"颢","顧":"顾","顫":"颤","顬":"颥","顯":"显","顰":"颦","顱":"颅","顳":"颞","顴":"颧","風":"风","颭":"飐","颮":"飑","颯":"飒","颰":"𩙥","颱":"台","颳":"刮","颶":"飓","颷":"𩙪","颸":"飔","颺":"飏","颻":"飖","颼":"飕","颾":"𩙫","飀":"飗","飄":"飘","飆":"飙","飈":"飚","飋":"𫗋","飛":"飞","飠":"饣","飢":"饥","飣":"饤","飥":"饦","飦":"𫗞","飩":"饨","飪":"饪","飫":"饫","飭":"饬","飯":"饭","飱":"飧","飲":"饮","飴":"饴","飵":"𫗢","飶":"𫗣","飼":"饲","飽":"饱","飾":"饰","飿":"饳","餃":"饺","餄":"饸","餅":"饼","餈":"糍","餉":"饷","養":"养","餌":"饵","餎":"饹","餏":"饻","餑":"饽","餒":"馁","餓":"饿","餔":"𫗦","餕":"馂","餖":"饾","餗":"𫗧","餘":"余","餚":"肴","餛":"馄","餜":"馃","餞":"饯","餡":"馅","餦":"𫗠","餧":"𫗪","館":"馆","餪":"𫗬","餫":"𫗥","餬":"糊","餭":"𫗮","餱":"糇","餳":"饧","餵":"喂","餶":"馉","餷":"馇","餸":"𩠌","餺":"馎","餼":"饩","餾":"馏","餿":"馊","饁":"馌","饃":"馍","饅":"馒","饈":"馐","饉":"馑","饊":"馓","饋":"馈","饌":"馔","饑":"饥","饒":"饶","饗":"飨","饘":"𫗴","饜":"餍","饞":"馋","饟":"𫗵","饠":"𫗩","饢":"馕","馬":"马","馭":"驭","馮":"冯","馯":"𫘛","馱":"驮","馳":"驰","馴":"驯","馹":"驲","馼":"𫘜","駁":"驳","駃":"𫘝","駉":"𬳶","駊":"𫘟","駎":"𩧨","駐":"驻","駑":"驽","駒":"驹","駓":"𬳵","駔":"驵","駕":"驾","駘":"骀","駙":"驸","駚":"𩧫","駛":"驶","駝":"驼","駞":"𫘞","駟":"驷","駡":"骂","駢":"骈","駤":"𫘠","駧":"𩧲","駩":"𩧴","駪":"𬳽","駫":"𫘡","駭":"骇","駰":"骃","駱":"骆","駶":"𩧺","駸":"骎","駻":"𫘣","駼":"𬳿","駿":"骏","騁":"骋","騂":"骍","騃":"𫘤","騄":"𫘧","騅":"骓","騉":"𫘥","騊":"𫘦","騌":"骔","騍":"骒","騎":"骑","騏":"骐","騑":"𬴂","騔":"𩨀","騖":"骛","騙":"骗","騚":"𩨊","騜":"𫘩","騝":"𩨃","騞":"𬴃","騟":"𩨈","騠":"𫘨","騤":"骙","騧":"䯄","騪":"𩨄","騫":"骞","騭":"骘","騮":"骝","騰":"腾","騱":"𫘬","騴":"𫘫","騵":"𫘪","騶":"驺","騷":"骚","騸":"骟","騻":"𫘭","騼":"𫠋","騾":"骡","驀":"蓦","驁":"骜","驂":"骖","驃":"骠","驄":"骢","驅":"驱","驊":"骅","驋":"𩧯","驌":"骕","驍":"骁","驎":"𬴊","驏":"骣","驓":"𫘯","驕":"骄","驗":"验","驙":"𫘰","驚":"惊","驛":"驿","驟":"骤","驢":"驴","驤":"骧","驥":"骥","驦":"骦","驨":"𫘱","驪":"骊","驫":"骉","骯":"肮","髏":"髅","髒":"脏","體":"体","髕":"髌","髖":"髋","髮":"发","鬆":"松","鬍":"胡","鬖":"𩭹","鬚":"须","鬠":"𫘽","鬢":"鬓","鬥":"斗","鬧":"闹","鬨":"哄","鬩":"阋","鬮":"阄","鬱":"郁","鬹":"鬶","魎":"魉","魘":"魇","魚":"鱼","魛":"鱽","魟":"𫚉","魢":"鱾","魥":"𩽹","魦":"𫚌","魨":"鲀","魯":"鲁","魴":"鲂","魵":"𫚍","魷":"鱿","魺":"鲄","魽":"𫠐","鮀":"𬶍","鮁":"鲅","鮃":"鲆","鮄":"𫚒","鮅":"𫚑","鮆":"𫚖","鮈":"𬶋","鮊":"鲌","鮋":"鲉","鮍":"鲏","鮎":"鲇","鮐":"鲐","鮑":"鲍","鮒":"鲋","鮓":"鲊","鮚":"鲒","鮜":"鲘","鮝":"鲞","鮞":"鲕","鮟":"𩽾","鮠":"𬶏","鮡":"𬶐","鮣":"䲟","鮤":"𫚓","鮦":"鲖","鮪":"鲔","鮫":"鲛","鮭":"鲑","鮮":"鲜","鮯":"𫚗","鮰":"𫚔","鮳":"鲓","鮵":"𫚛","鮶":"鲪","鮸":"3","鮺":"鲝","鮿":"𫚚","鯀":"鲧","鯁":"鲠","鯄":"𩾁","鯆":"𫚙","鯇":"鲩","鯉":"鲤","鯊":"鲨","鯒":"鲬","鯔":"鲻","鯕":"鲯","鯖":"鲭","鯗":"鲞","鯛":"鲷","鯝":"鲴","鯞":"𫚡","鯡":"鲱","鯢":"鲵","鯤":"鲲","鯧":"鲳","鯨":"鲸","鯪":"鲮","鯫":"鲰","鯬":"𫚞","鯰":"鲶","鯱":"𩾇","鯴":"鲺","鯶":"𩽼","鯷":"鳀","鯻":"𬶟","鯽":"鲫","鯾":"𫚣","鯿":"鳊","鰁":"鳈","鰂":"鲗","鰃":"鳂","鰆":"䲠","鰈":"鲽","鰉":"鳇","鰊":"𬶠","鰋":"𫚢","鰌":"䲡","鰍":"鳅","鰏":"鲾","鰐":"鳄","鰑":"𫚊","鰒":"鳆","鰓":"鳃","鰕":"𫚥","鰛":"鳁","鰜":"鳒","鰟":"鳑","鰠":"鳋","鰣":"鲥","鰤":"𫚕","鰥":"鳏","鰦":"𫚤","鰧":"䲢","鰨":"鳎","鰩":"鳐","鰫":"𫚦","鰭":"鳍","鰮":"鳁","鰱":"鲢","鰲":"鳌","鰳":"鳓","鰵":"鳘","鰶":"𬶭","鰷":"鲦","鰹":"鲣","鰺":"鲹","鰻":"鳗","鰼":"鳛","鰽":"𫚧","鰾":"鳔","鱀":"𬶨","鱂":"鳉","鱄":"𫚋","鱅":"鳙","鱆":"𫠒","鱇":"𩾌","鱈":"鳕","鱉":"鳖","鱊":"𫚪","鱒":"鳟","鱔":"鳝","鱖":"鳜","鱗":"鳞","鱘":"鲟","鱚":"𬶮","鱝":"鲼","鱟":"鲎","鱠":"鲙","鱢":"𫚫","鱣":"鳣","鱤":"鳡","鱧":"鳢","鱨":"鲿","鱭":"鲚","鱮":"𫚈","鱯":"鳠","鱲":"𫚭","鱷":"鳄","鱸":"鲈","鱺":"鲡","鳥":"鸟","鳧":"凫","鳩":"鸠","鳬":"凫","鳲":"鸤","鳳":"凤","鳴":"鸣","鳶":"鸢","鳷":"𫛛","鳼":"𪉃","鳽":"𫛚","鳾":"䴓","鴀":"𫛜","鴃":"𫛞","鴅":"𫛝","鴆":"鸩","鴇":"鸨","鴉":"鸦","鴐":"𫛤","鴒":"鸰","鴔":"𫛡","鴕":"鸵","鴗":"𫁡","鴛":"鸳","鴜":"𪉈","鴝":"鸲","鴞":"鸮","鴟":"鸱","鴣":"鸪","鴥":"𫛣","鴦":"鸯","鴨":"鸭","鴮":"𫛦","鴯":"鸸","鴰":"鸹","鴲":"𪉆","鴳":"𫛩","鴴":"鸻","鴷":"䴕","鴻":"鸿","鴽":"𫛪","鴿":"鸽","鵁":"䴔","鵂":"鸺","鵃":"鸼","鵊":"𫛥","鵏":"𬷕","鵐":"鹀","鵑":"鹃","鵒":"鹆","鵓":"鹁","鵚":"𪉍","鵜":"鹈","鵝":"鹅","鵟":"𫛭","鵠":"鹄","鵡":"鹉","鵧":"𫛨","鵩":"𫛳","鵪":"鹌","鵫":"𫛱","鵬":"鹏","鵮":"鹐","鵯":"鹎","鵰":"雕","鵲":"鹊","鵷":"鹓","鵾":"鹍","鶄":"䴖","鶇":"鸫","鶉":"鹑","鶊":"鹒","鶌":"𫛵","鶒":"𫛶","鶓":"鹋","鶖":"鹙","鶗":"𫛸","鶘":"鹕","鶚":"鹗","鶠":"𬸘","鶡":"鹖","鶥":"鹛","鶦":"𫛷","鶩":"鹜","鶪":"䴗","鶬":"鸧","鶭":"𫛯","鶯":"莺","鶰":"𫛫","鶱":"𬸣","鶲":"鹟","鶴":"鹤","鶹":"鹠","鶺":"鹡","鶻":"鹘","鶼":"鹣","鶿":"鹚","鷀":"鹚","鷁":"鹢","鷂":"鹞","鷄":"鸡","鷅":"𫛽","鷉":"䴘","鷊":"鹝","鷐":"𫜀","鷓":"鹧","鷔":"𪉑","鷖":"鹥","鷗":"鸥","鷙":"鸷","鷚":"鹨","鷟":"𬸦","鷣":"𫜃","鷤":"𫛴","鷥":"鸶","鷦":"鹪","鷨":"𪉊","鷩":"𫜁","鷫":"鹔","鷭":"𬸪","鷯":"鹩","鷲":"鹫","鷳":"鹇","鷴":"鹇","鷷":"𫜄","鷸":"鹬","鷹":"鹰","鷺":"鹭","鷽":"鸴","鷿":"𬸯","鸂":"㶉","鸇":"鹯","鸊":"䴙","鸋":"𫛢","鸌":"鹱","鸏":"鹲","鸑":"𬸚","鸕":"鸬","鸗":"𫛟","鸘":"鹴","鸚":"鹦","鸛":"鹳","鸝":"鹂","鸞":"鸾","鹵":"卤","鹹":"咸","鹺":"鹾","鹼":"碱","鹽":"盐","麗":"丽","麥":"麦","麨":"𪎊","麩":"麸","麪":"面","麫":"面","麬":"𤿲","麯":"曲","麲":"𪎉","麳":"𪎌","麴":"曲","麵":"面","麷":"𫜑","麼":"么","麽":"么","黃":"黄","黌":"黉","點":"点","黨":"党","黲":"黪","黴":"霉","黶":"黡","黷":"黩","黽":"黾","黿":"鼋","鼂":"鼌","鼉":"鼍","鼕":"冬","鼴":"鼹","齊":"齐","齋":"斋","齎":"赍","齏":"齑","齒":"齿","齔":"龀","齕":"龁","齗":"龂","齘":"𬹼","齙":"龅","齜":"龇","齟":"龃","齠":"龆","齡":"龄","齣":"出","齦":"龈","齧":"啮","齩":"𫜪","齪":"龊","齬":"龉","齭":"𫜭","齮":"𬺈","齯":"𫠜","齰":"𫜬","齲":"龋","齴":"𫜮","齶":"腭","齷":"龌","齼":"𬺓","齾":"𫜰","龍":"龙","龎":"厐","龐":"庞","龑":"䶮","龓":"𫜲","龔":"龚","龕":"龛","龜":"龟","龭":"𩨎","龯":"𨱆","鿁":"䜤","鿓":"鿒","𠁞":"𠀾","𠌥":"𠆿","𠏢":"𠉗","𠐊":"𫝋","𠗣":"㓆","𠞆":"𠛆","𠠎":"𠚳","𠬙":"𪠡","𠽃":"𪠺","𠿕":"𪜎","𡂡":"𪢒","𡃄":"𪡺","𡃕":"𠴛","𡃤":"𪢐","𡄔":"𠴢","𡄣":"𠵸","𡅏":"𠲥","𡅯":"𪢖","𡑍":"𫭼","𡑭":"𡋗","𡓁":"𪤄","𡓾":"𡋀","𡔖":"𡍣","𡞵":"㛟","𡟫":"𫝪","𡠹":"㛿","𡢃":"㛠","𡮉":"𡭜","𡮣":"𡭬","𡳳":"𡳃","𡸗":"𪨩","𡹬":"𪨹","𡻕":"岁","𡽗":"𡸃","𡾱":"㟜","𡿖":"𪩛","𢍰":"𪪴","𢠼":"𢙑","𢣐":"𪬚","𢣚":"𢘝","𢣭":"𢘞","𢤩":"𪫡","𢤱":"𢘙","𢤿":"𪬯","𢯷":"𪭝","𢶒":"𪭯","𢶫":"𢫞","𢷮":"𢫊","𢹿":"𢬦","𢺳":"𪮳","𣈶":"暅","𣋋":"𣈣","𣍐":"𫧃","𣙎":"㭣","𣜬":"𪳗","𣝕":"𣘷","𣞻":"𣘓","𣠩":"𣞎","𣠲":"𣑶","𣯩":"𣯣","𣯴":"𣭤","𣯶":"毶","𣽏":"𪶮","𣾷":"㳢","𣿉":"𣶫","𤁣":"𣺽","𤄷":"𪶒","𤅶":"𣷷","𤑳":"𤎻","𤑹":"𪹀","𤒎":"𤊀","𤒻":"𪹹","𤓌":"𪹠","𤓎":"𤎺","𤓩":"𤊰","𤘀":"𪺣","𤛮":"𤙯","𤛱":"𫞢","𤜆":"𪺪","𤠮":"𪺸","𤢟":"𤝢","𤢻":"𢢐","𤩂":"𫞧","𤪺":"㻘","𤫩":"㻏","𤬅":"𪼴","𤳷":"𪽝","𤳸":"𤳄","𤷃":"𪽭","𤸫":"𤶧","𤺔":"𪽴","𥊝":"𥅿","𥌃":"𥅘","𥏝":"𪿊","𥕥":"𥐰","𥖅":"𥐯","𥖲":"𪿞","𥗇":"𪿵","𥗽":"𬒗","𥜐":"𫀓","𥜰":"𫀌","𥞵":"𥞦","𥢢":"䅪","𥢶":"𫞷","𥢷":"𫀮","𥨐":"𥧂","𥪂":"𥩺","𥯤":"𫁳","𥴨":"𫂖","𥴼":"𫁺","𥵃":"𥱔","𥵊":"𥭉","𥶽":"𫁱","𥸠":"𥮋","𥻦":"𫂿","𥼽":"𥹥","𥽖":"𥺇","𥾯":"𫄝","𥿊":"𦈈","𦀖":"𫄦","𦂅":"𦈒","𦃄":"𦈗","𦃩":"𫄯","𦅇":"𫄪","𦅈":"𫄵","𦆲":"𫟇","𦒀":"𫅥","𦔖":"𫅼","𦘧":"𡳒","𦟼":"𫆝","𦠅":"𫞅","𦡝":"𫆫","𦢈":"𣍨","𦣎":"𦟗","𦧺":"𫇘","𦪙":"䑽","𦪽":"𦨩","𦱌":"𫇪","𦾟":"𦶻","𧎈":"𧌥","𧒯":"𫊹","𧔥":"𧒭","𧕟":"𧉐","𧜗":"䘞","𧜵":"䙊","𧝞":"䘛","𧞫":"𫌋","𧟀":"𧝧","𧡴":"𫌫","𧢄":"𫌬","𧦝":"𫍞","𧦧":"𫍟","𧩕":"𫍭","𧩙":"𬣥","𧩼":"𫍶","𧫝":"𫍺","𧬤":"𫍼","𧭈":"𫍾","𧭹":"𫍐","𧳟":"𧳕","𧵳":"䞌","𧶔":"𧹓","𧶧":"䞎","𧷎":"𪠀","𧸘":"𫎨","𧹈":"𪥠","𧽯":"𫎸","𨂐":"𫏌","𨄣":"𨀱","𨅍":"𨁴","𨆪":"𫏕","𨇁":"𧿈","𨇞":"𨅫","𨇤":"𫏨","𨇰":"𫏞","𨇽":"𫏑","𨈊":"𨂺","𨈌":"𨄄","𨊰":"䢀","𨊸":"䢁","𨊻":"𨐆","𨋢":"䢂","𨌈":"𫐍","𨍰":"𫐔","𨎌":"𫐋","𨎮":"𨐉","𨏠":"𨐇","𨏥":"𨐊","𨞺":"𫟫","𨟊":"𫟬","𨢿":"𨡙","𨣈":"𨡺","𨣞":"𨟳","𨣧":"𨠨","𨤻":"𨤰","𨥛":"𨱀","𨥟":"𫓫","𨦫":"䦀","𨧀":"𬭊","𨧜":"䦁","𨧰":"𫟽","𨧱":"𨱊","𨨏":"𬭛","𨨛":"𫓼","𨨢":"𫓽","𨩰":"𫟾","𨪕":"𫓮","𨫒":"𨱐","𨬖":"𫔏","𨭆":"𬭶","𨭎":"𬭳","𨭖":"𫔑","𨭸":"𫔐","𨮂":"𨱕","𨮳":"𫔒","𨯅":"䥿","𨯟":"𫔓","𨰃":"𫔉","𨰋":"𫓳","𨰥":"𫔕","𨰲":"𫔃","𨲳":"𫔖","𨳑":"𨸁","𨳕":"𨸀","𨴗":"𨸅","𨴹":"𫔲","𨵩":"𨸆","𨵸":"𨸇","𨶀":"𨸉","𨶏":"𨸊","𨶮":"𨸌","𨶲":"𨸋","𨷲":"𨸎","𨼳":"𫔽","𨽏":"𨸘","𩀨":"𫕚","𩅙":"𫕨","𩎖":"𫖑","𩎢":"𩏾","𩏂":"𫖓","𩏠":"𫖖","𩏪":"𩏽","𩏷":"𫃗","𩑔":"𫖪","𩒎":"𫖭","𩓣":"𩖕","𩓥":"𫖵","𩔑":"𫖷","𩔳":"𫖴","𩖰":"𫠇","𩗀":"𩙦","𩗓":"𫗈","𩗴":"𫗉","𩘀":"𩙩","𩘝":"𩙭","𩘹":"𩙨","𩘺":"𩙬","𩙈":"𩙰","𩚛":"𩟿","𩚥":"𩠀","𩚩":"𫗡","𩚵":"𩠁","𩛆":"𩠂","𩛌":"𫗤","𩛡":"𫗨","𩛩":"𩠃","𩜇":"𩠉","𩜦":"𩠆","𩜵":"𩠊","𩝔":"𩠋","𩝽":"𫗳","𩞄":"𩠎","𩞦":"𩠏","𩞯":"䭪","𩟐":"𩠅","𩟗":"𫗚","𩠴":"𩠠","𩡣":"𩡖","𩡺":"𩧦","𩢡":"𩧬","𩢴":"𩧵","𩢸":"𩧳","𩢾":"𩧮","𩣏":"𩧶","𩣑":"䯃","𩣫":"𩧸","𩣵":"𩧻","𩣺":"𩧼","𩤊":"𩧩","𩤙":"𩨆","𩤲":"𩨉","𩤸":"𩨅","𩥄":"𩨋","𩥇":"𩨍","𩥉":"𩧱","𩥑":"𩨌","𩦠":"𫠌","𩧆":"𩨐","𩭙":"𩬣","𩯁":"𫙂","𩯳":"𩯒","𩰀":"𩬤","𩰹":"𩰰","𩳤":"𩲒","𩴵":"𩴌","𩵦":"𫠏","𩵩":"𩽺","𩵹":"𩽻","𩶁":"𫚎","𩶘":"䲞","𩶰":"𩽿","𩶱":"𩽽","𩷰":"𩾄","𩸃":"𩾅","𩸄":"𫚝","𩸡":"𫚟","𩸦":"𩾆","𩻗":"𫚨","𩻬":"𫚩","𩻮":"𫚘","𩼶":"𫚬","𩽇":"𩾎","𩿅":"𫠖","𩿤":"𫛠","𩿪":"𪉄","𪀖":"𫛧","𪀦":"𪉅","𪀾":"𪉋","𪁈":"𪉉","𪁖":"𪉌","𪂆":"𪉎","𪃍":"𪉐","𪃏":"𪉏","𪃒":"𫛻","𪃧":"𫛹","𪄆":"𪉔","𪄕":"𪉒","𪅂":"𫜂","𪆷":"𫛾","𪇳":"𪉕","𪈼":"𱊜","𪉸":"𫜊","𪋿":"𫧮","𪌭":"𫜓","𪍠":"𫜕","𪓰":"𫜟","𪔵":"𪔭","𪘀":"𪚏","𪘯":"𪚐","𪙏":"𫜯","𪟖":"𠛾","𪷓":"𣶭","𫒡":"𫓷","𫜦":"𫜫"};function De(e,t){var i,r,n,o,s="";if(o=t?Se:Me,"string"!=typeof e)return e;for(i=0;i13312&&n<40899||n>63744&&n<64106)){s+=r;continue}let t=o[r];s+=t||r}return s}var ke=function(e){return De(e,!0)},Ae=function(e){return De(e,!1)};let Ee=["章","节","回","節","卷","部","輯","辑","話","集","话","篇"," "," "],Ie=[],Ne=["CHAPTER","Chapter","序章","前言","声明","写在前面的话","后记","楔子","后序","章节目录","尾声","聲明","寫在前面的話","後記","後序","章節目錄","尾聲"],Re=[" "," ","、","·",".",":",":"];const Oe=e=>e.trim().replace(/(\r\n|\n|\r|\t)/gm,"").substring(0,100).split("").filter((e=>"="!==e&&"-"!==e&&"_"!==e&&"+"!==e)).join(""),Pe=(e,t="")=>t?new RegExp(t).test(e):e&&e.length<40&&!Be(e)&&(Fe(e)||e.startsWith("第")&&je(e)||e.startsWith("卷")&&We(e)||e.indexOf("第")>-1&&e.lastIndexOf("第")<7&&je(e.substr(e.indexOf("第")))||He(e)),Be=e=>Ie.filter((t=>e.indexOf(t)>-1)).length>0,Fe=e=>Ne.filter((t=>e.startsWith(t))).length>0,He=e=>Re.filter((t=>e.indexOf(t)>-1&&(/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341\u767e\u5343\u4e07\u842c\u96f6]+$/.test(e.substring(0,e.indexOf(t)))||/^\d+$/.test(e.substring(0,e.indexOf(t)))))).length>0,je=e=>{let t=!1;for(let i=0;i!(!/^[\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 $e=!1;const Ue=e=>Array.from(e.querySelectorAll("h1,h2,h3,h4,h5,h6,p,div,ul,dl,ol,li,dt,dd,pre,blockquote,address,kookitmarker")),ze=(e,t,i,r,n,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 c=e.clientWidth;if("mimical"===t&&"yes"!==s){let e=document.getElementById("book");e&&(e.style.display="block",i>0?o():i<0&&n(),setTimeout((()=>{if(!e)return{};e.style.display="none"}),1e3))}const h=r.body.scrollLeft,d=c+l;if(i>0){const e=Math.round(h/d),i=Math.max(0,e-1)*d;r.body.scrollTo({top:0,left:i,behavior:"sliding"===t&&"yes"!==s?"smooth":"auto"})}else if(i<0){const e=(Math.round(h/d)+1)*d;r.body.scrollTo({top:0,left:e,behavior:"sliding"===t&&"yes"!==s?"smooth":"auto"})}})),qe=(t,i,r,n)=>{let o=e.findLastIndex(r,(e=>e.href===i||e.href&&e.href.includes("#")&&e.href.includes(i)));return i&&e.findLastIndex(r,(e=>e.href===i||e.href&&e.href.includes("#")&&e.href.includes(i)))>-1||(o=t),"prev"===n?Object.assign(Object.assign({},r[o-1]),{index:o-1}):Object.assign(Object.assign({},r[o+1]),{index:o+1})},Ve=(e,t,i,r,n,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 c=qe(t,l,i,"prev");c&&(o.text="prevChapter",o.page="",yield Xe(c.index,c.label,c.href,i,e,r,n,o,s,a))})),Xe=(t,i,r,n,o,s,a,l,h,u)=>c(void 0,void 0,void 0,(function*(){if(h.body.innerHTML="",u.height="0px",h.body.scrollTo(0,0),i&&!t||n[t]&&n[t].label&&i&&i!==n[t].label&&-1===r.indexOf("#")){let r=e.findLastIndex(n,{label:i});-1!==r&&(t=r)}if(-1===t&&r.indexOf("#")>-1){let i=r.split("#")[0],o=e.findLastIndex(n,(e=>e.href===i||e.href&&e.href.includes("#")&&e.href.includes(i)));-1!==o&&(t=o)}(-1===t||t>n.length-1)&&(t=0);let f=yield d(n[t].text,!1),p=function(e){const t=e.match(/]*)>/i);if(!t)return{};const i=t[1],r={},n=/([\w-]+)\s*=\s*(?:"([^"]*)"|'([^']*)'|([^>\s]+))/g;let o;for(;null!==(o=n.exec(i));){const e=o[2]||o[3]||o[4]||"";r[o[1]]=e}return r}(f);h.body.innerHTML=f,p.style?h.body.setAttribute("style",h.body.getAttribute("style")||""):p.class?h.body.setAttribute("class",p.class):p.id?h.body.setAttribute("id",p.id):p.class?p.id||h.body.removeAttribute("id"):h.body.removeAttribute("class"),yield Je(h),l.chapterTitle=i,l.chapterHref=r,l.chapterDocIndex=t+"",l.percentage=n.slice(0,t).map((e=>e.text&&e.text.size||1)).reduce(((e,t)=>e+t),0)/n.map((e=>e.text&&e.text.size||1)).reduce(((e,t)=>e+t),0)+"",l.text="",yield((e,t,i,r,n)=>c(void 0,void 0,void 0,(function*(){if(yield Promise.race([Promise.all(Array.from([...n.images,...n.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")}),3e3)}))]),yield v(e,t,i,n),y(n),"scroll"!==t){if(r.height=e.clientHeight+"px","double"===t){let t=Math.floor(e.clientWidth/12),i=t%2==0?t:t-1,r=(e.clientWidth+i)/2;if((n.body.scrollWidth-n.body.clientWidth)/r%2==1){let e=document.createElement("div");e.setAttribute("style","height: "+n.body.clientHeight+"px; display: inline-block; width: "+(r-i)+"px"),n.body.appendChild(e)}}}else r.height=n.body.scrollHeight+"px",r.height=n.body.scrollHeight+300+"px"})))(o,s,a,u,h),yield Ge(o,s,"","","","",h)}));const Je=e=>c(void 0,void 0,void 0,(function*(){let t=Array.from(e.getElementsByTagName("link"));if(0===t.length)return;let i=[];for(let e=0;e{r.addEventListener("load",e)})))}try{yield Promise.race([Promise.all(i),new Promise(((e,t)=>{setTimeout((()=>{e("css load timeout")}),10)}))])}catch(e){console.error(e)}})),Ge=(e,t,i,r,n,o,s)=>c(void 0,void 0,void 0,(function*(){let a=0,l=s.body;if(o&&"scroll"!==t){let t=Math.floor(e.clientWidth/12),i=t%2==0?t:t-1;a=((c=getComputedStyle(e).width,parseFloat(c.substring(0,c.length-2)))+i)*(parseInt(o)-1)}else if(i){let n=Ue(s.body).filter(((e,t)=>Oe(e.textContent)&&(Oe(e.textContent)===Oe(i)||Oe(e.textContent)===Ae(Oe(i))||Oe(e.textContent)===ke(Oe(i)))&&(Math.abs(t-parseInt(r))<2||"search"===r||"ignore"===r||"next"===r)));if(0===n.length)return;l=_e(n[0],e,t),a=l?h(l.offsetLeft)-h(l.marginLeft||parseFloat(getComputedStyle(l).marginLeft)):"prevChapter"===i?s.body.scrollWidth:0}else if(n&&n.indexOf("#")>-1){let i=CSS.escape(n.split("#").reverse()[0]);if(!s.body.querySelector("#"+i))return;l=_e(s.body.querySelector("#"+i)||s.body,e,t),a=l?h(l.offsetLeft)-h(l.marginLeft||parseFloat(getComputedStyle(l).marginLeft)):0}var c;"scroll"!==t?s.body.scrollTo(a,0):l.scrollIntoView()})),_e=(e,t,i)=>{let r=Math.floor(t.clientWidth/12),n=r%2==0?r:r-1,o=h(e.offsetLeft)-h(e.marginLeft||parseFloat(getComputedStyle(e).marginLeft));return"scroll"===i||"scroll"!==i&&Ye(parseInt(o+""),(t.clientWidth+n)/2)?e:e.parentElement?_e(e.parentElement,t,i):e},Ye=(e,t)=>{for(let i=e-10;i<=e+10;i++)if(i%t==0)return!0;return!1},Ze=(e,t,i,r,n,o,s)=>c(void 0,void 0,void 0,(function*(){var a,l;if($e)return;let c=Ue(o.body),h=c.filter((i=>nt(e,i,t)&&(i.textContent||"").trim())),d=h[0];s&&(d=s);let u=0;for(let i=0;ie.text&&e.text.size||1)).reduce(((e,t)=>e+t),0);n.percentage=r.slice(0,parseInt(n.chapterDocIndex)).map((e=>e.text&&e.text.size||1)).reduce(((e,t)=>e+t),0)/e+((null===(a=r.find(((e,t)=>t===parseInt(n.chapterDocIndex))))||void 0===a?void 0:a.text.size)||0)/e*(u/c.length)+""}else n.page=(null===(l=yield m(t,o,e))||void 0===l?void 0:l.currentPage)+"";$e=!0,setTimeout((()=>{$e=!1}),100)})),Ke=(e,t,i)=>{let r=Math.floor(t.clientWidth/12),n=r%2==0?r:r-1;return Math.abs(e.offsetLeft-_e(e,t,i).offsetLeft)>(t.clientWidth+n)/2},Qe=(t,i,r)=>{let n=r.chapterHref||"",o=n.lastIndexOf("#"),s="";s=-1===o?n:n.substring(0,o);for(let n=0;n-1&&(r.chapterHref=t,r.chapterTitle=i[n].label)}}},et=(e,t,i,r,n,o,s,a)=>c(void 0,void 0,void 0,(function*(){let t=parseInt(o.chapterDocIndex||"0"),l=o.chapterHref||"";if(t>=i.length-1)return void(o.percentage="1");let c=qe(t,l,i,"next");c&&(o.page="",yield Xe(c.index,c.label,c.href,i,e,r,n,o,s,a))})),tt=(e,t,i)=>{let r=Ue(i.body).filter((e=>!rt(e))),n=r.filter((i=>nt(e,i,t)&&(i.textContent||"").trim()));return n=n.filter((e=>{if(!(e.textContent||"").trim())return!1;let t=e.parentElement;for(;t&&t!==i.body;){if(r.includes(t))return!1;t=t.parentElement}return!0})),n.filter((e=>{var t;return"img"!==e.textContent&&!(null===(t=e.textContent)||void 0===t?void 0:t.startsWith("img"))})).map((e=>e.textContent))},it=(e,t,i)=>{if(i.querySelectorAll('span[data-highlight="true"]').forEach((e=>{const t=e.parentNode;t&&t.replaceChild(i.createTextNode(e.textContent||""),e)})),!e.trim())return;let r=Array.from(i.body.querySelectorAll("span, p, div, h1, h2, h3, h4, h5, h6 ")).filter((t=>{const i=t.textContent||"";return i.trim()&&i.indexOf(e)>-1}));if(r.length>0){const n=r=>{var n;if(r.nodeType===Node.TEXT_NODE){const o=r.textContent||"",s=o.indexOf(e);if(s>-1){const a=o.substring(0,s),l=o.substring(s+e.length),c=i.createElement("span");c.setAttribute("style",t),c.setAttribute("data-highlight","true"),c.textContent=e;const h=i.createDocumentFragment();return a&&h.appendChild(i.createTextNode(a)),h.appendChild(c),l&&h.appendChild(i.createTextNode(l)),null===(n=r.parentNode)||void 0===n||n.replaceChild(h,r),!0}}return!1},o=e=>{if(n(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 i=!1;var r=/^(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=>r.test(e.nodeName))).length<3)return!1;for(var n=0;n{var r=!1,n=t.getBoundingClientRect();if("scroll"!==i&&t.textContent&&t.textContent.trim()){let t=n.left;r=t>-10&&t<=e.clientWidth}else if("scroll"===i&&t.textContent&&t.textContent.trim()){let t=n.top;r=t>=e.scrollTop&&t<=e.scrollTop+e.clientHeight}else if("scroll"!==i){let t=n.left;r=t>=0&&t<=e.clientWidth}return r};class ot{constructor(){this.callbacks={},this.callbacks.base={}}on(e,t){const i=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 r=i.resolveName(e);i.callbacks[r.namespace]instanceof Object||(i.callbacks[r.namespace]={}),i.callbacks[r.namespace][r.value]instanceof Array||(i.callbacks[r.namespace][r.value]=[]),i.callbacks[r.namespace][r.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 i=t.resolveName(e);if("base"!==i.namespace&&""===i.value)delete t.callbacks[i.namespace];else if("base"===i.namespace)for(const e in t.callbacks)t.callbacks[e]instanceof Object&&t.callbacks[e][i.value]instanceof Array&&(delete t.callbacks[e][i.value],0===Object.keys(t.callbacks[e]).length&&delete t.callbacks[e]);else t.callbacks[i.namespace]instanceof Object&&t.callbacks[i.namespace][i.value]instanceof Array&&(delete t.callbacks[i.namespace][i.value],0===Object.keys(t.callbacks[i.namespace]).length&&delete t.callbacks[i.namespace])})),this}trigger(e,t=[]){if(void 0===e||""===e)return console.warn("wrong name"),!1;const i=this;const r=t instanceof Array?t:[];let n=this.resolveNames(e);n=this.resolveName(n[0]),setTimeout((()=>{if("base"===n.namespace)for(const e in i.callbacks){if(i.callbacks[e]instanceof Object&&i.callbacks[e][n.value]instanceof Array&&i.callbacks[e][n.value])i.callbacks[e][n.value].forEach((function(e){e.apply(i,r)}));else if(this.callbacks[n.namespace]instanceof Object&&i.callbacks[n.namespace][n.value]){if(""===n.value)return console.warn("wrong name"),this;i.callbacks[n.namespace][n.value].forEach((function(e){e.apply(i,r)}))}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={},i=e.split(".");return t.original=e,t.value=i[0],t.namespace="base",i.length>1&&""!==i[1]&&(t.namespace=i[1]),t}}const st=Node.ELEMENT_NODE,at=Node.TEXT_NODE,lt=Node.CDATA_SECTION_NODE;function ct(e,t,i){let r,n,o,s=0,a=0,l=!0;for(n=0;nthis.compare(e,t)))}static compare(e,t){let i=e.get(),r=t.get();if(e.isRange||t.isRange){if(e.isRange&&t.isRange){const e=this.comparePath(i.from,r.from);return e||this.comparePath(i.to,r.to)}return e.isRange&&(i=i.from),t.isRange&&(r=r.from),this.comparePath(i,r)}return this.comparePath(i,r)}static compareParts(e,t){const i=Math.max(e.length,t.length);let r,n,o,s;for(r=0;r=i)return"img"===a.tagName.toLowerCase()&&r?{node:a,offset:r}:{node:a,offset:0}}else{if(l+=1,l===i)return"img"===a.tagName.toLowerCase()&&r?{node:a,offset:r}:{node:a,offset:0};if(l>i)return o?{node:o,offset:this.trueLength(e,o.textContent)}:{node:t,offset:0}}o=a;break;case at:case lt:if(0!==l&&l%2!=0||(l+=1),l===i){const t=this.trueLength(e,a.textContent);if(!(r>=t))return{node:a,offset:r};r-=t}o=a;break;default:continue}if(i>l){const i={relativeToNode:"after",offset:0};return i.node=o||t,this.isTextNode(i.node)&&(i.offset=this.trueLength(e,i.node.textContent.length)),i}}isTextNode(e){return!!e&&(e.nodeType===at||e.nodeType===lt)}correctOffset(e,t,i,r){let n,o=t;if("string"==typeof r?n=this.decodeEntities(e,r):(r.pre=this.decodeEntities(e,r.pre),r.post=this.decodeEntities(e,r.post),n=r.pre+"."+r.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 c="",h=0;for(;this.isTextNode(o)&&(a=this.decodeEntities(e,o.textContent),l[h]=a.length,c+=a,o.nextSibling);)o=o.nextSibling,h++;const d=r.pre?r.pre.length:0,u=function(e,t,i){i=i||0;const r=[];let n,o=0;do{if(n=e.match(t),!n)break;r.push(n.index+i),o+=n.index+n.length,e=e.slice(n.index+n.length)}while(o=l[h];){if(f-=l[h],f<0)return{node:t,offset:i};const e=[];if(!o.nextSibling||h+1>=e.length)return{node:t,offset:i};h++,o=o.nextSibling}return{node:o,offset:f}}resolveNode(e,t,i,r){if(r=Object.assign({},r||{}),!i)throw new Error("Missing DOM argument");let n;if(0===e&&(n=i.querySelector("package")),!n)for(const e of i.childNodes)if(e.nodeType===st){n=e;break}if(n=i,!n)throw new Error("Document incompatible with CFIs");let o,s,a=n,l=0;for(o=t.length-1;o>=0;o--)if(s=t[o],!r.ignoreIDs&&s.nodeID&&(a=i.getElementById(s.nodeID))){l=o+1;break}a||(a=n);let c={node:a,offset:0};for(o=l;othis.parts.length-2)throw new Error("index is out of bounds");const r=this.parts[e];if(!r)throw new Error("Missing CFI part for index: "+e);let n=this.resolveNode(e,r,t,i).node;const o=n.tagName.toLowerCase();if("itemref"===o&&"spine"===n.parentNode.tagName.toLowerCase()){const e=n.getAttribute("idref");if(!e)throw new Error("Referenced node had not 'idref' attribute");if(n=t.getElementById(e),!n)throw new Error("Specified node is missing from manifest");const i=n.getAttribute("href");if(!i)throw new Error("Manifest item is missing href attribute");return i}if("iframe"===o||"embed"===o){const e=n.getAttribute("src");if(!e)throw new Error(o+" element is missing 'src' attribute");return e}if("object"===o){const e=n.getAttribute("data");if(!e)throw new Error(o+" element is missing 'data' attribute");return e}if("image"===o||"use"===o){const e=n.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 i=t.length-1,r=t[i];if(!r)throw new Error("Missing CFI part for index: "+i);const n=this.resolveNode(i,r,e),o=this.deepClone(r[r.length-1]);return delete o.nodeIndex,o.offset||delete n.offset,Object.assign(Object.assign({},o),n)}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(),i=this.getFrom();"before"===i.relativeToNode?t.setStartBefore(i.node,i.offset):"after"===i.relativeToNode?t.setStartAfter(i.node,i.offset):t.setStart(i.node,i.offset);const r=this.getTo();return"before"===r.relativeToNode?t.setEndBefore(r.node,r.offset):"after"===r.relativeToNode?t.setEndAfter(r.node,r.offset):t.setEnd(r.node,r.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"],gt=["#FF0000","#000080","#0000FF","#2EFF2E"],mt=["#fac106","#ebe702","#0be603","#0493e6"],yt=(e,i,r,n,o,s)=>{var a,l;let c=ft[i],h=s.contentWindow||(null===(a=s.contentDocument)||void 0===a?void 0:a.defaultView),d=e;d=[d];let u=t.getSelection(s);u.restoreCharacterRanges(o,d);let f=u.getRangeAt(0);wt(f,c,r,n,o),h&&h.getSelection()&&(null===(l=h.getSelection())||void 0===l||l.empty())},bt=(e,t,i,r,n,o,s)=>{let a=ft[t],l=s.querySelector(".noteLayer"),c=s.querySelector("#koodoPDFLayer");var h=n.getViewport({scale:o});for(let t=0;t-1?"background-color: ":"border-bottom: ")+(a.indexOf("color")>-1?mt[a.split("-")[1]]:`2px solid ${gt[a.split("-")[1]]}`)+"; left:"+(Math.min(d[0],d[2])+parseFloat(getComputedStyle(c).marginLeft))+"px; top:"+Math.min(d[1],d[3])+"px;width:"+Math.abs(d[0]-d[2])+"px; height:"+Math.abs(d[1]-d[3])+"px; z-index: 1; cursor: pointer; opacity: "+(a.indexOf("color")>-1?.3:1)+";"),null==u||u.setAttribute("data-key",i),null==u||u.setAttribute("class","kookit-note"),null==u||u.addEventListener("click",(e=>{e&&e.target&&e.target.dataset&&e.target.dataset.key&&r(e)})),u.ontouchend=e=>{window.isSwiping||(e&&e.target&&e.target.dataset&&e.target.dataset.key&&r(e),e.preventDefault(),e.stopPropagation())},l.appendChild(u))}}},vt=e=>{const t=e.querySelectorAll(".kookit-note");for(let e=0;e{const o=e.nativeRange.getClientRects();for(let e=0;e-1?"background-color: ":"border-bottom: ")+(t.indexOf("color")>-1?pt[t.split("-")[1]]+";opacity: 1":`2px solid ${gt[t.split("-")[1]]}`)+";left:"+(Math.min(l.left,l.x)+n.body.scrollLeft)+"px; top:"+(Math.min(l.top,l.y)+n.body.scrollTop)+"px;width:"+l.width+"px; height:"+l.height+"px; z-index:-1;opacity: "+(t.indexOf("color")>-1?.8:1)+"; cursor: pointer;"),s.setAttribute("class"," kookit-note"),s.setAttribute("data-key",i),n.body.appendChild(s);var a=document.createElement("span");null==a||a.setAttribute("style","position: absolute;left:"+(Math.min(l.left,l.x)+n.body.scrollLeft)+"px; top:"+(Math.min(l.top,l.y)+n.body.scrollTop)+"px;width:"+l.width+"px; height:"+l.height+"px; z-index:1;"),a.setAttribute("class"," kookit-note"),a.setAttribute("data-key",i),a.addEventListener("click",(e=>{e&&e.target&&e.target.dataset&&e.target.dataset.key&&r(e)})),a.ontouchend=e=>{window.isSwiping||(e&&e.target&&e.target.dataset&&e.target.dataset.key&&r(e),e.preventDefault(),e.stopPropagation())},n.body.appendChild(a)}};const xt=(e,t,i)=>{!function(e){let t=document.getElementById("book");t&&t.remove();const i=document.createElement("div");i.id="book";const r=document.createElement("canvas");r.id="pageflip-canvas";const n=document.createElement("div");n.id="pages";for(let t=0;t{u+1{u-1>=0&&(m[u-1].target=1,u=Math.max(u-1,0))},mouseDownHandler:C,mouseUpHandler:T,mouseMoveHandler:x}}}function x(e){if(!y)return;const t=e.touches[0],i=t.screenX,r=t.screenY;g.x=i-y.offsetLeft-o/2,g.y=r-y.offsetTop}function C(e){const t=e.touches[0];c=t.screenX,t.screenX=0?m[u-1].dragging=!0:t.screenX>window.screen.width/2&&u+1a/4*1&&h-c>0?(m[i].target=1,u=Math.max(u-1,0)):i===u?m[i].target=1:i===u-1&&(m[i].target=-1)),m[i].dragging=!1}function L(e){var r=1-Math.abs(e.progress),n=.5*a*(1-e.progress),s=a*e.progress+n,c=20*r,h=.5*a*Math.max(Math.min(1-e.progress,.5),0),u=.5*a*Math.max(Math.min(r,.5),0),f=.5*a*Math.max(Math.min(r,.5),0);e.page.style.width=Math.max(s,0)+"px",p.save(),p.translate(0+o/2,d+0),p.strokeStyle=("no"===t?"rgba(0,0,0,":"rgba(255,255,255,")+.05*r+")",p.lineWidth=30*r,p.beginPath(),p.moveTo(s-n,.5*-c),p.lineTo(s-n,l+.5*c),p.stroke();var g=p.createLinearGradient(s,0,s+u,0);g.addColorStop(0,("no"===t?"rgba(0,0,0,":"rgba(255,255,255,")+.2*r+")"),g.addColorStop(.8,("no"===t?"rgba(0,0,0,":"rgba(255,255,255,")+"0.0)"),p.fillStyle=g,p.beginPath(),p.moveTo(s,0),p.lineTo(s+u,0),p.lineTo(s+u,l),p.lineTo(s,l),p.fill();var m=p.createLinearGradient(s-n-f,0,s-n,0);m.addColorStop(0,("no"===t?"rgba(0,0,0,":"rgba(255,255,255,")+"0.0)"),m.addColorStop(1,("no"===t?"rgba(0,0,0,":"rgba(255,255,255,")+.15*+r+")"),p.fillStyle=m,p.beginPath(),p.moveTo(s-n-f,0),p.lineTo(s-n,0),p.lineTo(s-n,l),p.lineTo(s-n-f,l),p.fill();var y=p.createLinearGradient(s-h,0,s,0);i?(y.addColorStop(.35,i),y.addColorStop(.73,i),y.addColorStop(.9,i),y.addColorStop(1,i)):"no"===t?(y.addColorStop(.35,"#fafafa"),y.addColorStop(.73,"#eeeeee"),y.addColorStop(.9,"#fafafa"),y.addColorStop(1,"#e2e2e2")):(y.addColorStop(.35,"#333"),y.addColorStop(.73,"#444"),y.addColorStop(.9,"#333"),y.addColorStop(1,"#444")),p.fillStyle=y,p.strokeStyle=("no"===t?"rgba(0,0,0,":"rgba(255,255,255,")+"0.06)",p.lineWidth=.5,p.beginPath(),p.moveTo(s,0),p.lineTo(s,l),p.quadraticCurveTo(s,l+2*c,s-n,l+c),p.lineTo(s-n,-c),p.quadraticCurveTo(s,2*-c,s,0),p.fill(),p.stroke(),p.restore()}},Ct=(e,t,i,r,n)=>c(void 0,void 0,void 0,(function*(){let{width:o,height:s}=yield i[r].text.getDimension(),a=n.body.clientWidth,l=e.clientHeight,c=Math.min(a/o,l/s);return"scroll"===t&&(c=a/o),c})),Tt=(e,t)=>{var i;const r=t.getElementById("pdf-container-"+e);if(!r)return;let n=document.createElement("iframe");n.style.position="absolute",n.style.top="0",n.style.left="0",n.style.width="100%",n.style.height="100%",n.style.border="0",n.style.margin="0",n.style.padding="0",n.style.fontSize="100%",n.style.font="inherit",n.scrolling="no",n.tabIndex=0,n.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}",r.appendChild(n),null===(i=n.contentDocument)||void 0===i||i.head.appendChild(o),n},Lt=(e,t,i)=>c(void 0,void 0,void 0,(function*(){let r=i.getElementById("pdf-container-"+e);if(r){if("scroll"!==t){let e=r?h(r.offsetLeft)-h(r.marginLeft||parseFloat(getComputedStyle(r).marginLeft)):0;i.body.scrollTo(e,0)}else r.scrollIntoView();r.scrollIntoView()}})),St=(e,t,i,r)=>{var n=!1,o=t.getBoundingClientRect();if("scroll"!==i){let e=o.left;n=e>-10&&e<=r.body.clientWidth}else{let t=o.top,i=o.bottom;n=t-10>=e.scrollTop&&t+10<=e.scrollTop+e.clientHeight||i-10>=e.scrollTop&&i+10<=e.scrollTop+e.clientHeight||t+10<=e.scrollTop&&i-10>=e.scrollTop+e.clientHeight}return n},Mt=(e,t,i)=>{if(i.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 r=i.querySelectorAll("p,span"),n=Array.from(r).filter(((t,i)=>(t.textContent||"").trim()&&t.textContent===e));n.length>0&&(n[0].setAttribute("style",(n[0].getAttribute("style")||"")+t),n[0].setAttribute("data-highlight","true"))},Dt=(e,t,i,r,n,o,s,a,l)=>c(void 0,void 0,void 0,(function*(){let e=Math.floor(r.body.clientWidth/12),c=e%2==0?e:e-1;const h=r.body.clientWidth;if("mimical"===t&&"yes"!==s){let e=document.getElementById("book");e&&(e.style.display="block",i>0?o():i<0&&n(),setTimeout((()=>{if(!e)return{};e.style.display="none"}),1e3))}if(i>0)if("single"===l){let e=r.querySelector("#pdf-container-"+(a-1));e&&e.scrollIntoView()}else r.body.scrollBy(-(h+c)/2,0);else if(i<0)if("single"===l){let e=r.querySelector("#pdf-container-"+(a+1));e&&e.scrollIntoView()}else r.body.scrollBy((h+c)/2,0)})),kt=e=>c(void 0,void 0,void 0,(function*(){const t=e.getViewport({scale:1}),i=document.createElement("canvas"),r=i.getContext("2d");i.width=800,i.height=800/t.width*t.height;const n={canvasContext:r,viewport:e.getViewport({scale:800/t.width})};yield e.render(n).promise;const o=i.toDataURL("image/jpeg",.8),s=function(e){const t=e.length-23;return Math.ceil(.75*t)}(o);return{imageURL:o,size:s}}));function At(e){return c(this,void 0,void 0,(function*(){try{const t=yield fetch(e),i=yield t.blob();return yield new Promise(((e,t)=>{const r=new FileReader;r.onloadend=()=>e(r.result),r.onerror=t,r.readAsDataURL(i)}))}catch(e){throw console.error("转换失败:",e),e}}))}function Et(){return window.visualViewport?window.visualViewport.offsetLeft:window.pageXOffset||document.documentElement.scrollLeft||0}function It(){return window.visualViewport?window.visualViewport.offsetTop:window.pageYOffset||document.documentElement.scrollTop||0}const Nt=(e,t,i)=>c(void 0,void 0,void 0,(function*(){const r=e.target;if(!r)return;const n=Rt(r);if(n){e.preventDefault(),e.stopPropagation();let r=n.getAttribute("href");if(r&&r.startsWith("kindle:")){let e=i.resolveChapter(r);if(e)return yield i.goToChapter(e.index,e.href,e.label),!0;r="#"+(yield i.resolveHref(r)).id}let o="";if(r&&r.indexOf("#")>-1){let n=r.split("#").reverse()[0],s=t.body.querySelector("#"+n);if(!s){if(r.indexOf("filepos")>-1){let e=i.resolveChapter(r);return yield i.goToChapter(e.index,e.href,e.label),!0}if(0!==r.indexOf("#")){for(;r.startsWith(".");)r=r.substring(1);let e=i.resolveChapter(r);e&&(yield i.goToChapter(e.index,e.href,e.label))}if(s=t.body.querySelector("#"+CSS.escape(n)),!s)return!1;yield i.goToNode(t.body.querySelector("#"+CSS.escape(n)))}if((s.textContent.trim()===e.target.textContent.trim()||!s.textContent.trim())&&s.parentElement){if("BODY"===s.parentElement.tagName)return!1;s=s.parentElement}o=s.textContent}else if(r){let e=i.resolveChapter(r);e&&(yield i.goToChapter(e.index,e.href,e.label))}return window.ReactNativeWebView.postMessage(JSON.stringify({event:"link-clicked",href:r,footnote:o})),!1}}));function Rt(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 Ot(e,t,i){const r=3*t+e+1;return i.layout.A.area.includes(r)?i.touchControlA:i.layout.B.area.includes(r)?i.touchControlB:i.layout.C.area.includes(r)?i.touchControlC:"right"}const Pt=(e,i,r,n,o,s,a,l)=>{var h;let d=i.contentWindow||(null===(h=i.contentDocument)||void 0===h?void 0:h.defaultView),u=l.getDocument(),f=0,p=0,g=0,m=0;const y=30;let b=Math.floor(r.clientWidth/12),v=b%2==0?b:b-1,w=r.clientWidth+v,x=null,C=!1,T=0;e.addEventListener("touchend",(function(t){window.isSwiping=!1,window.isTouchNavigation=!0,x&&clearTimeout(x),x=setTimeout((()=>{window.isTouchNavigation=!1,x=null}),4e3);let i=(new Date).getTime();if(i-m<=300)return void t.preventDefault();m=i;const c=t.changedTouches[0],h=Date.now();let b=c.screenX,T=c.screenY;const S=h-f,M=b-p,D=T-g;if(C&&"mimical"===o&&"scroll"!==n)return C=!1,l.mouseUpHandler(t),c.screenXwindow.screen.width/4*1&&b-p>0&&l.prev(),void setTimeout((()=>{let e=document.getElementById("book");e&&(e.style.display="none")}),400);if(C&&"sliding"===o&&"scroll"!==n){let R="PDF"===s?u:e;if(window.scrollAnimationId&&cancelAnimationFrame(window.scrollAnimationId),Math.abs(R.body.scrollWidth-R.body.scrollLeft-r.clientWidth)<10)return L&&clearTimeout(L),void(L=setTimeout((()=>{l.next()}),300));if(0===R.body.scrollLeft)return L&&clearTimeout(L),void(L=setTimeout((()=>{l.prev()}),300));R.body.style.transform="";let O,P=R.body.scrollLeft;const B=Math.round(P/w),F=Math.abs(M)/window.screen.width,H=.1;O=M>0&&F>H?(B-1)*w:M<0&&F>H?(B+1)*w:B*w,O=Math.max(0,Math.min(O,R.body.scrollWidth-w)),R.body.scrollWidth-O1-Math.pow(1-e,3);function q(e){const t=e-j;if(t>=U)return R.body.scrollLeft=O,R.body.style.willChange="auto",l.record(),void(C=!1);const i=z(t/U),r=W+$*i;R.body.scrollLeft=r,window.scrollAnimationId=requestAnimationFrame(q)}window.scrollAnimationId=requestAnimationFrame(q)}else{var k=d.getSelection().toString(),A=Math.abs(M)>=y||Math.abs(D)>=y;if(!k||"PDF"===s&&("PDF"!==s||A)){if(S>500){const V=t.target;if(!V)return;if("IMG"===V.tagName||"image"===V.tagName){const X=V.src||V.getAttribute("xlink:href");return void(X.startsWith("blob:")&&At(X).then((e=>{window.ReactNativeWebView.postMessage(JSON.stringify({event:"view-image",imgSrc:e}))})))}}if(S<500&&Math.abs(M)=y||Math.abs(D)>=y)&&(window.ReactNativeWebView.postMessage(JSON.stringify({event:"swipe"})),"scroll"===n&&Math.abs(r.scrollHeight-r.scrollTop-r.clientHeight)<10&&window.ReactNativeWebView.postMessage(JSON.stringify({event:"scroll-bottom"})),"scroll"===n&&0===r.scrollTop&&window.ReactNativeWebView.postMessage(JSON.stringify({event:"scroll-top"})))}else window.ReactNativeWebView.postMessage(JSON.stringify({event:"select-text-after-touch",selectedText:k}))}}),!1),e.addEventListener("touchstart",(function(e){f=Date.now();const t=e.target;if(!t)return;if(Rt(t))return;e.touches.length>1&&e.preventDefault();const i=e.touches[0];p=i.screenX,g=i.screenY}),!1),e.addEventListener("touchmove",(function(t){if(!C&&Math.abs(t.touches[0].screenX-p)<=10)return;if(t.preventDefault(),window.visualViewport.scale>1&&"PDF"===s)return void t.preventDefault();const i=t.touches[0],r=i.screenX,a=i.screenY,c=r-p,h=a-g;if((Math.abs(c)>10||Math.abs(h)>10)&&(window.isSwiping=!0),!C&&Math.abs(c)>Math.abs(h)&&Math.abs(c)>10){if(C=!0,T=r,e.body.style.transform="translateZ(0)","mimical"===o&&"scroll"!==n){let e=document.getElementById("book");e&&(e.style.display="block",l.mouseDownHandler(t))}}else if(C&&"mimical"===o&&"scroll"!==n&&l.mouseMoveHandler(t),C&&"sliding"===o&&"scroll"!==n){let t="PDF"===s?u:e;const i=r-T,n=t.body.scrollLeft;t.body.scrollLeft=n-i,T=r,requestAnimationFrame((()=>{}))}}),!1),e.addEventListener("click",(t=>{Nt(t,e,l)}),!0);let L=null,S=0,M=0,D=e=>c(void 0,void 0,void 0,(function*(){var i,n;const o=d.getSelection().toString().trim();if(o){var a=d.getSelection().getRangeAt(0);let u=l.getPageSize();var c=a.getBoundingClientRect();if("PDF"===s){let e=a.getClientRects();if(e.length>0){e=Array.from(e).filter((e=>Math.abs(e.height-u.sectionHeight)>10&&Math.abs(e.width-u.sectionWidth)>10&&e.height>0&&e.width>0));let t=1/0,i=1/0,r=-1/0,n=-1/0;for(let o=0;o{1===M&&D(e)}),600):D(e),e.preventDefault(),e.stopPropagation(),!1;{const e=t.src||t.getAttribute("xlink:href");e.startsWith("blob:")&&At(e).then((e=>{window.ReactNativeWebView.postMessage(JSON.stringify({event:"view-image",imgSrc:e}))}))}}};let k=0,A=0,E=0;e.addEventListener("selectstart",(t=>{M=0,S=Date.now(),A=Et(),E=It(),"scroll"!==n&&(k=e.body.scrollLeft)}),!1);let I=0;e.addEventListener("selectionchange",(t=>{if(!d.getSelection().toString().trim())return;k>0&&(e.body.scrollLeft=k),M++;const i=Date.now();i-I>=3e3&&(I=i,window.ReactNativeWebView.postMessage(JSON.stringify({event:"selection-change"})))}),!1)},Bt=(e,i,r,n,o,s,a,l)=>{var h;let d=i.contentWindow||(null===(h=i.contentDocument)||void 0===h?void 0:h.defaultView),u=l.getDocument(),f=0,p=0,g=0,m=0;let y=Math.floor(r.clientWidth/12),b=y%2==0?y:y-1,v=null,w=!1,x=0;e.addEventListener("touchend",(function(i){var h,y;return c(this,void 0,void 0,(function*(){window.isSwiping=!1,window.isTouchNavigation=!0,v&&clearTimeout(v),v=setTimeout((()=>{window.isTouchNavigation=!1,v=null}),4e3);let c=(new Date).getTime();if(c-m<=300)return void i.preventDefault();m=c;const x=i.changedTouches[0],T=Date.now(),L=x.screenX,S=x.screenY,M=T-f,D=L-p,k=S-g;if(w&&"mimical"===o&&"scroll"!==n)return w=!1,l.mouseUpHandler(i),Lwindow.screen.width/4*1&&L-p>0&&l.prev(),void setTimeout((()=>{let e=document.getElementById("book");e&&(e.style.display="none")}),400);if(w&&"sliding"===o&&"scroll"!==n){let R="PDF"===s?u:e;if(window.scrollAnimationId&&cancelAnimationFrame(window.scrollAnimationId),Math.abs(R.body.scrollWidth-R.body.scrollLeft-r.clientWidth)<10)return C&&clearTimeout(C),void(C=setTimeout((()=>{l.next()}),300));if(0===R.body.scrollLeft)return C&&clearTimeout(C),void(C=setTimeout((()=>{l.prev()}),300));R.body.style.transform="";let O,P=r.clientWidth+b,B=R.body.scrollLeft;const F=Math.round(B/P),H=Math.abs(D)/window.screen.width,j=.1;O=D>0&&H>j?(F-1)*P:D<0&&H>j?(F+1)*P:F*P,O=Math.max(0,Math.min(O,R.body.scrollWidth-P)),R.body.scrollWidth-O1-Math.pow(1-e,3);function V(e){const t=e-W;if(t>=z)return R.body.scrollLeft=O,R.body.style.willChange="auto",l.record(),void(w=!1);const i=q(t/z),r=$+U*i;R.body.scrollLeft=r,window.scrollAnimationId=requestAnimationFrame(V)}return void(window.scrollAnimationId=requestAnimationFrame(V))}const A=d.getSelection().toString().trim();if(A){var E=d.getSelection().getRangeAt(0).getBoundingClientRect(),I=l.getPageSize(),N={top:E.top-r.scrollTop,left:E.left,width:E.width,height:E.height,screenWidth:window.innerWidth,screenHeight:window.innerHeight,sectionHeight:I.sectionHeight,sectionWidth:I.sectionWidth,gap:I.gap,scale:window.visualViewport.scale,offsetLeft:Et(),offsetTop:It()};t.init();let X=null;if("PDF"===s){let J=i.target.ownerDocument,G=null===(h=null==J?void 0:J.defaultView)||void 0===h?void 0:h.frameElement,_=(null==G?void 0:G.getAttribute("id"))||"",Y=_?parseInt(_.split("-").reverse()[0]):0;N.chapterDocIndex=Y,X=yield l.getHightlightCoords(Y);let Z=G.parentElement;Z&&(N.top=N.top+parseFloat(getComputedStyle(Z).top))}else X=yield l.getHightlightCoords();window.ReactNativeWebView.postMessage(JSON.stringify({event:"select-text",selectedText:A,position:N,range:X}))}else{if(M>500){const K=i.target;if(!K)return;if("IMG"===K.tagName||"image"===K.tagName){const Q=K.src||K.getAttribute("xlink:href");return void(Q.startsWith("blob:")&&At(Q).then((e=>{window.ReactNativeWebView.postMessage(JSON.stringify({event:"view-image",imgSrc:e}))})))}}if(M<500&&Math.abs(D)<30&&Math.abs(k)<30){const ee=document.documentElement.clientWidth,te=document.documentElement.clientHeight;let ie=Math.min(Math.max(L,0),ee),re=Math.min(Math.max(S,0),te);if("PDF"===s&&"double"===n){let ae=i.target.ownerDocument,le=null===(y=null==ae?void 0:ae.defaultView)||void 0===y?void 0:y.frameElement,ce=(null==le?void 0:le.getAttribute("id"))||"";(ce?parseInt(ce.split("-").reverse()[0]):0)%2==1&&(ie+=ee/2)}const ne=ee/3,oe=te/3;let se=Ot(Math.min(Math.floor(ie/ne),2),Math.min(Math.floor(re/oe),2),a);window.ReactNativeWebView.postMessage(JSON.stringify({event:se}))}else(Math.abs(D)>=30||Math.abs(k)>=30)&&(window.ReactNativeWebView.postMessage(JSON.stringify({event:"swipe"})),"scroll"===n&&Math.abs(r.scrollHeight-r.scrollTop-r.clientHeight)<10&&window.ReactNativeWebView.postMessage(JSON.stringify({event:"scroll-bottom"})),"scroll"===n&&0===r.scrollTop&&window.ReactNativeWebView.postMessage(JSON.stringify({event:"scroll-top"})))}}))}),{passive:!1}),e.addEventListener("touchstart",(function(e){const t=e.target;if(!t)return;if(Rt(t))return;const i=e.touches[0];f=Date.now(),p=i.screenX,g=i.screenY}),{passive:!1}),e.addEventListener("touchmove",(function(t){const i=d.getSelection().toString().trim();if(!w&&Math.abs(t.touches[0].screenX-p)<=10||i)return;if(window.visualViewport.scale>1&&"PDF"===s)return;const r=t.touches[0],a=r.screenX,c=r.screenY,h=a-p,f=c-g;if(!w&&Math.abs(h)>Math.abs(f)&&Math.abs(h)>10){if(w=!0,x=a,"mimical"===o&&"scroll"!==n){window.isSwiping=!0;let e=document.getElementById("book");e&&(e.style.display="block",l.mouseDownHandler(t))}}else if(w&&"mimical"===o&&"scroll"!==n&&l.mouseMoveHandler(t),w&&"sliding"===o&&"scroll"!==n){window.isSwiping=!0;let t="PDF"===s?u:e;const i=a-x,r=t.body.scrollLeft;t.body.scrollLeft=r-i,x=a,requestAnimationFrame((()=>{}))}}),{passive:!1}),e.addEventListener("click",(t=>{Nt(t,e,l)}),!0);let C=null;e.body.oncontextmenu=function(e){return e.preventDefault(),e.stopPropagation(),!1};let T=0;e.addEventListener("selectionchange",(e=>{if(!d.getSelection().toString().trim())return;const t=Date.now();t-T>=3e3&&(T=t,window.ReactNativeWebView.postMessage(JSON.stringify({event:"selection-change"})))}),{passive:!1})};class Ft extends ot{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=>ke(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=>Ae(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=>{let t=(e.textContent||"").replace(/^\s+|\s+$/g,"");e.textContent=t})))},this.addPageAnimation=e=>{if("mimical"===this.animation){let t=this.getProgress();if(!t)return;const i=xt(t.totalPage,this.isDarkMode,e);i&&(this.flipToNextPage=i.flipToNextPage,this.flipToPrevPage=i.flipToPrevPage,this.mouseDownHandler=i.mouseDownHandler,this.mouseUpHandler=i.mouseUpHandler,this.mouseMoveHandler=i.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),i=t%2==0?t:t-1,r=this.getIframe();if(!r)return;let n=null==r?void 0:r.getBoundingClientRect().height;return{width:this.element.clientWidth,height:this.element.clientHeight,left:this.element.offsetLeft,top:this.element.offsetTop,scrollTop:this.element.scrollTop,sectionWidth:(this.element.clientWidth-i)/e,sectionHeight:n,gap:i}}scrollToText(e){let t=this.getDocument();if(!t)return;let i=Ue(t.body).filter((e=>!rt(e))).filter((t=>(t.textContent||"").indexOf(e)>-1));if(i.length>0){let e=i[0],r=e?h(e.offsetLeft)-h(e.marginLeft||parseFloat(getComputedStyle(e).marginLeft)):0,n=e?h(e.offsetTop)-h(e.marginTop||parseFloat(getComputedStyle(e).marginTop)):0;"scroll"!==this.readerMode?t.body.scrollTo(r,0):this.element.scrollTo(0,n)}}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 i=Math.floor(this.element.clientWidth/12),r=i%2==0?i:i-1;const n=this.element.clientWidth+r;"double"===this.readerMode?e=(e%2==0?e-2:e-1)/2:e-=1,e<0&&(e=0);const o=e*n;t.body.scrollTo({top:0,left:o,behavior:"sliding"===this.animation&&"yes"!==this.isMobile?"smooth":"auto"})}yield this.record()}))}resolveChapter(e){let t=e,i=-1;for(let e=0;e-1)return this.flattenChapters[i];{let r=e.split("#")[0];for(let e=0;e-1)return this.flattenChapters[i];for(let e=0;e-1?{label:"",href:"",index:i}:null}}flatChapter(e){let t=[];for(let i=0;i0?(t.push(e[i]),t=t.concat(this.flatChapter(e[i].subitems))):t.push(e[i]);return this.flattenChapters=t,t}getChapter(){return this.chapterList}getChapterDoc(){return this.chapterDocList}goToPercentage(e){return c(this,void 0,void 0,(function*(){if(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*(){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,i){return c(this,void 0,void 0,(function*(){let r=this.getDocument(),n=this.getIframe();r&&n&&(yield Xe(parseInt(e),i,t,this.chapterDocList,this.element,this.readerMode,this.format,this.tempLocation,r,n),t&&t.indexOf("#")>-1&&(yield Ge(this.element,this.readerMode,"","",t,"",r)),yield this.record(),this.trigger("rendered"))}))}goToPosition(e){return c(this,void 0,void 0,(function*(){let i=this.getDocument(),r=this.getIframe();if(!i||!r)return;let n=JSON.parse(e);this.tempLocation={text:n.text,chapterTitle:n.chapterTitle,chapterDocIndex:n.chapterDocIndex,chapterHref:n.chapterHref,count:n.count,page:n.page,percentage:n.percentage};let{text:o,chapterTitle:s,chapterDocIndex:a,chapterHref:l,count:c,page:h,cfi:d}=n;if(yield Xe(parseInt(a),s,l,this.chapterDocList,this.element,this.readerMode,this.format,this.tempLocation,i,r),d){const e=new ut(d,{});let t=this.getDocument();if(!t)return;const{node:i,offset:r}=e.resolve(t,{});if(i){let e=null,t=i;for(;t;){const i=t;if(i.tagName&&"h1,h2,h3,h4,h5,h6,p,div,ul,dl,ol,pre,li,dt,dd,blockquote,address,kookitmarker".indexOf(i.tagName.toLowerCase())>-1){e=i;break}t=t.parentNode}e&&(c="ignore",o=e.textContent)}}yield Ge(this.element,this.readerMode,o,c,"",h,i),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 i=t.contentDocument;return i||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;let i=_e(e,this.element,this.readerMode),r=i?h(i.offsetLeft)-h(i.marginLeft||parseFloat(getComputedStyle(i).marginLeft)):0,n=i?h(i.offsetTop)-h(i.marginTop||parseFloat(getComputedStyle(i).marginTop)):0;"scroll"!==this.readerMode?t.body.scrollTo(r,0):this.element.scrollTo(0,n),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===h(this.element.scrollTop)||"scroll"!==this.readerMode&&0===h(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 Ve(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 ze(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();e&&t&&(Math.abs(e.body.scrollWidth-h(e.body.scrollLeft)-e.body.clientWidth)<50&&"scroll"!==this.readerMode||Math.abs(this.element.scrollHeight-h(this.element.scrollTop)-this.element.clientHeight)<20&&"scroll"===this.readerMode?("mimical"===this.animation&&"scroll"!==this.readerMode&&"yes"===this.isMobile&&(yield new Promise((e=>setTimeout(e,500)))),yield et(this.element,this.flatChapter(this.chapterList),this.chapterDocList,this.readerMode,this.format,this.tempLocation,e,t),this.trigger("rendered")):"scroll"===this.readerMode?this.element.scrollBy({left:0,top:this.element.clientHeight-50,behavior:"smooth"}):yield ze(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 Ve(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 et(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?tt(this.element,this.readerMode,e):""}))}audioText(){return c(this,void 0,void 0,(function*(){let e=this.getDocument();return e?((e,t,i)=>{let r=Ue(i.body).filter((e=>!rt(e))),n=r.filter((e=>{if(!(e.textContent||"").trim())return!1;let t=e.parentElement;for(;t&&t!==i.body;){if(r.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=tt(e,t,i);if(s&&s.length>0){let e=s[0];o=n.indexOf(e)}return n.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 i=0,r=0;const n=()=>{if(i+=e,r++,Math.abs(e)<1){if((Math.abs(i)>=.5||r%Math.max(1,Math.floor(30/Math.abs(e)))==0)&&Math.abs(i)>=.1){const e=Math.round(10*i)/10;this.element.scrollBy({left:0,top:e,behavior:"auto"}),i=0,r=0}}else if(Math.abs(i)>=1){const e=Math.floor(i);this.element.scrollBy({left:0,top:e,behavior:"auto"}),i-=e}this.scrollTimer=requestAnimationFrame(n)};this.scrollTimer=requestAnimationFrame(n),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 i=this.getDocument();if(!i)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 r=0,n=this.element.scrollTop;this.scrollTimer=setInterval((()=>{r+=e,i&&(i.body.style.transform=`translateY(-${r}px)`,Math.abs(r)>=50&&(i.body.style.transform="translateY(0px)",n+=r,this.element.scrollTo({left:0,top:n,behavior:"auto"}),r=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 i=this.getDocument();i&&it(e,t,i)}highlightAudioNode(e,t){let i=this.getDocument();i&&((e,t,i,r,n)=>{if(i.querySelectorAll('span[data-highlight="true"]').forEach((e=>{const t=e.parentNode;t&&t.replaceChild(i.createTextNode(e.textContent||""),e)})),!e.trim())return;let o=Ue(i.body).filter((e=>nt(r,e,n)&&(e.textContent||"").trim())).filter((t=>{const i=t.textContent||"";return i.trim()&&i.indexOf(e)>-1}));if(o.length>0){const r=r=>{var n;if(r.nodeType===Node.TEXT_NODE){const o=r.textContent||"",s=o.indexOf(e);if(s>-1){const a=o.substring(0,s),l=o.substring(s+e.length),c=i.createElement("span");c.setAttribute("style",t),c.setAttribute("data-highlight","true"),c.textContent=e;const h=i.createDocumentFragment();return a&&h.appendChild(i.createTextNode(a)),h.appendChild(c),l&&h.appendChild(i.createTextNode(l)),null===(n=r.parentNode)||void 0===n||n.replaceChild(h,r),!0}}return!1},n=e=>{if(r(e))return!0;const t=Array.from(e.childNodes);for(const e of t)if(n(e))return!0;return!1};n(o[0])}})(e,t,i,this.element,this.readerMode)}doSearch(t){return c(this,void 0,void 0,(function*(){return"PDF"===this.format?yield((t,i)=>c(void 0,void 0,void 0,(function*(){let r=[];for(let e=0;e{n.str.indexOf(t)>-1&&r.push({excerpt:n.str,cfi:JSON.stringify({text:n.str+"#"+e+"#"+o,chapterTitle:i[e].label,chapterDocIndex:e,chapterHref:i[e].href,count:"search",percentage:e/i.length,keyword:t})})}));return e.uniq(r,"excerpt")})))(t,this.chapterDocList):yield((t,i)=>c(void 0,void 0,void 0,(function*(){var r;let n=[];for(let e=0;e!rt(e)));for(let o=0;o-1&&n.push({excerpt:(null===(r=s[o].textContent)||void 0===r?void 0:r.substring(a-100,a+100))||"",cfi:JSON.stringify({text:s[o].textContent,chapterTitle:i[e].label,chapterDocIndex:e,chapterHref:i[e].href,count:"search",percentage:e/i.length,keyword:t})})}}return e.uniq(n,"excerpt")})))(t,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 Ze(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=x(e);return t?(yield Ze(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 i=document.createElement("style");i.innerHTML=e,t.head.appendChild(i)}}getHightlightCoords(){return c(this,void 0,void 0,(function*(){let e=this.getDocument(),i=this.getIframe();if(e&&i)return t.getSelection(i).saveCharacterRanges(e.body)[0]}))}renderHighlighters(e,t){return c(this,void 0,void 0,(function*(){console.log("renderHighlighters",e);let i=this.getDocument(),r=this.getIframe();if(i&&r){vt(i);for(let n=0;nsetTimeout(e,5))),yt(JSON.parse(o.range),o.color,o.key,t,i,r)}catch(e){return void console.error(e,"Exception has been caught when restore character ranges.")}}}}))}removeOneNote(e,t){let i=this.getDocument();if(!i)return;const r=i.querySelectorAll(".kookit-note");for(let t=0;t{let t=e.contentDocument;t&&i.push(t)})),[e,...i]}getAllIframes(){let e=this.getIframe();if(!e)return[];if("PDF"!==this.format)return[e];let t=this.getDocument();if(!t)return[];let i=t.querySelectorAll("iframe"),r=[];return i.forEach((e=>{let t=e;r.push(t)})),[e,...r]}addTouchEvent(e,t){let i=this.getAllDocuments(),r=this.getAllIframes();for(let n=0;n{var t;null===(t=e.parentNode)||void 0===t||t.removeChild(e)}));let i=this.getIframe();if(!i)return;let r=window.charRange;r&&t.getSelection(i).restoreCharacterRanges(e,[r])}}const Ht={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"},jt={"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"},Wt=t=>c(void 0,void 0,void 0,(function*(){let r=yield i.loadAsync(t);var n=r.file("toc.json");let o=[];n&&(o=JSON.parse(yield n.async("string")));var s=r.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=r.file("chapters/"+e+".html");let i="";return t&&(i=yield t.async("string")),URL.createObjectURL(new Blob([i],{type:"text/html"}))})))(t),unload:()=>{},loadAsset:e=>(e=>c(void 0,void 0,void 0,(function*(){var t=r.file(e);let i;return t&&(i=yield t.async("arraybuffer")),URL.createObjectURL(new Blob([i],{type:Ht[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})),$t=e=>new Promise(((t,r)=>c(void 0,void 0,void 0,(function*(){let r=new T(e),n=yield r.getChapter(e.toc),o=yield r.getChapterDoc(),s=n,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 i=yield fetch(yield e.text.load()).then((e=>e.blob()));t=yield i.text()}return t}))))),h=new i;h.file("toc.json",JSON.stringify(s)),h.file("sections.json",JSON.stringify(a));let d=[];for(let e=0;ee.blob()));r.file(t+"."+jt[o.type],o);let s="imgs/"+e+"/"+t+"."+jt[o.type];i[t].src=s,i[t].getAttribute("xlink:href")&&i[t].setAttribute("xlink:href",s)}catch(e){console.error(e)}}let r=Array.from(t.getElementsByTagName("link"));for(let t=0;te.blob()));n.file(t+"."+jt[r.type],r),i.href="css/"+e+"/"+t+"."+jt[r.type]}catch(e){console.error(e)}}d.push(t.documentElement.innerHTML)}let f=h.folder("chapters");if(f){for(let e=0;ec(void 0,void 0,void 0,(function*(){t(yield new Response(e).arrayBuffer())})))).catch((e=>{t("err")}))}}))));class Ut extends Ft{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"EPUB"})),this.epubBuffer=e}renderTo(e){return new Promise(((t,i)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let i=new T(this.book);this.chapterList=yield i.getChapter(this.book.toc),this.chapterDocList=yield i.getChapterDoc(),g(e);let r=this.getDocument();r&&(w(e,this.readerMode,r),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 Le(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 $t(this.book)}catch(e){return""}}))}makeZipLoader(e){return c(this,void 0,void 0,(function*(){let t=yield i.loadAsync(e);const r=t.files;return{entries:Object.values(r).map((e=>({filename:e.name}))),loadText:e=>c(this,void 0,void 0,(function*(){let i=t.file(e);return i?i.async("string"):""})),loadBlob:e=>c(this,void 0,void 0,(function*(){let i=t.file(e);if(i){let e=yield i.async("arraybuffer");return new Blob([e])}return new Blob([new ArrayBuffer(0)])})),getSize:e=>{let i=t.file(e);if(i)return i._data.uncompressedSize||0}}}))}getMetadata(){return c(this,void 0,void 0,(function*(){try{this.book||(yield this.parse());let e=new T(this.book);return yield e.getMetadata()}catch(e){throw console.error(e,"error"),e}}))}}const zt=e=>{if(!e)return"";const t=document.createElement("textarea");return t.innerHTML=e,t.value},qt={XML:"application/xml",XHTML:"application/xhtml+xml",HTML:"text/html",CSS:"text/css",SVG:"image/svg+xml"},Vt={name:[0,32,"string"],type:[60,4,"string"],creator:[64,4,"string"],numRecords:[76,2,"uint"]},Xt={compression:[0,2,"uint"],numTextRecords:[8,2,"uint"],recordSize:[10,2,"uint"],encryption:[12,2,"uint"]},Jt={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"]},Gt={resourceStart:[108,4,"uint"],fdst:[192,4,"uint"],numFdst:[196,4,"uint"],frag:[248,4,"uint"],skel:[252,4,"uint"],guide:[260,4,"uint"]},_t={magic:[0,4,"string"],length:[4,4,"uint"],count:[8,4,"uint"]},Yt={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"]},Zt={magic:[0,4,"string"],length:[4,4,"uint"],numControlBytes:[8,4,"uint"]},Kt={magic:[0,4,"string"],offset1:[8,4,"uint"],offset2:[12,4,"uint"]},Qt={magic:[0,4,"string"],length:[4,4,"uint"],numEntries:[8,4,"uint"],codeLength:[12,4,"uint"]},ei={magic:[0,4,"string"],numEntries:[8,4,"uint"]},ti={flags:[8,4,"uint"],dataStart:[12,4,"uint"],keyLength:[16,4,"uint"],keyStart:[20,4,"uint"]},ii={1252:"windows-1252",65001:"utf-8"},ri={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"]},ni={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"]},oi=(e,t)=>{const i=new e.constructor(e.length+t.length);return i.set(e),i.set(t,e.length),i},si=(e,t,i)=>{const r=new e.constructor(e.length+t.length+i.length);return r.set(e),r.set(t,e.length),r.set(i,e.length+t.length),r},ai=new TextDecoder,li=e=>ai.decode(e),ci=e=>{if(!e)return;const t=e.byteLength,i=4===t?"getUint32":2===t?"getUint16":"getUint8";return new DataView(e)[i](0)},hi=(e,t)=>Object.fromEntries(Array.from(Object.entries(e)).map((([e,[i,r,n]])=>[e,("string"===n?li:ci)(t.slice(i,i+r))]))),di=e=>new TextDecoder(ii[e]),ui=(e,t=0)=>{let i=0,r=0;for(const n of e.subarray(t,t+4))if(i=i<<7|(127&n)>>>0,r++,128&n)break;return{value:i,length:r}},fi=e=>{let t=0;for(const i of e.subarray(-4))128&i&&(t=0),t=t<<7|127&i;return t},pi=e=>{let t=0;for(;e>0;e>>=1)1&~e||t++;return t},gi=e=>{let t=0;for(;!(1&e);)e>>=1,t++;return t},mi=e=>{let t=[];for(let i=0;i>>3,s=3+(7&n);for(let e=0;e{const i=t+32,r=i>>3;let n=0n;for(let i=t>>3;i<=r;i++)n=n<<8n|BigInt(e[i]??0);return n>>8n-BigInt(7&i)&0xffffffffn},bi=async(e,t)=>{const i=await t(e),r=hi(Yt,i);if("INDX"!==r.magic)throw new Error("Invalid INDX record");const n=di(r.encoding),o=i.slice(r.length),s=hi(Zt,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)))),c={};let h=0;for(let i=0;i1){const{value:i,length:r}=ui(n,p);h.push([e,null,i,t]),p+=r}else h.push([e,1,null,t]);else h.push([e,a>>gi(i),null,t])}const g={};for(const[e,t,i,r]of h){const o=[];if(null!=t)for(let e=0;eci(i.slice(8*t,8*t+4)))).map(((e,t,i)=>[e,i[t+1]]))}loadRecord(e){const t=this.#h[e];if(!t)throw new RangeError("Record index out of bounds");return this.#c.slice(...t).arrayBuffer()}async loadMagic(e){const t=this.#h[e][0];return li(await this.#c.slice(t,t+4).arrayBuffer())}}class wi extends vi{#d=0;#u;#f;#p;#g;#m;constructor({unzlib:e}){super(),this.unzlib=e}async open(e){await super.open(e),this.headers=this.#y(await super.loadRecord(0)),this.#u=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.#y(await super.loadRecord(e)),this.#d=e,t=!0}catch(e){console.warn(e),console.warn("Failed to open KF8; falling back to MOBI")}}return await this.#b(),t?new Ei(this).init():new Ti(this).init()}#y(e){const t=hi(Xt,e),i=hi(Jt,e);if("MOBI"!==i.magic)throw new Error("Missing MOBI header");const{titleOffset:r,titleLength:n,localeLanguage:o,localeRegion:s}=i;i.title=e.slice(r,r+n);const a=ni[o];i.language=a?.[s>>2]??a?.[0];const l=64&i.exthFlag?((e,t)=>{const{magic:i,count:r}=hi(_t,e);if("EXTH"!==i)throw new Error("Invalid EXTH header");const n=di(t),o={};let s=12;for(let t=0;t=8?hi(Gt,e):null}}async#b(){const{palmdoc:e,mobi:t}=this.headers;this.#f=di(t.encoding),this.#p=new TextEncoder;const{compression:i}=e;if(this.#g=1===i?e=>e:2===i?mi:17480===i?await(async(e,t)=>{const i=await t(e.huffcdic),{magic:r,offset1:n,offset2:o}=hi(Kt,i);if("HUFF"!==r)throw new Error("Invalid HUFF record");const s=Array.from({length:256},((e,t)=>n+4*t)).map((e=>ci(i.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=>[ci(i.slice(e,e+4)),ci(i.slice(e+4,e+8))]))),l=[];for(let i=1;i{let t=new Uint8Array;const i=8*e.byteLength;for(let r=0;r>>24];if(!o){for(;n>>>32-hi)break;const u=d-(n>>>32-h);let[f,p]=l[u];p||(f=c(f),l[u]=[f,!0]),t=oi(t,f)}return t};return c})(t,this.loadRecord.bind(this)):null,!this.#g)throw new Error("Unknown compression type");const{trailingFlags:r}=t,n=1&r,o=pi(r>>>1);this.#m=e=>{for(let t=0;tnew Uint8Array(e))).then(this.#m).then(this.#g)}async loadResource(e){const t=await super.loadRecord(this.#u+e),i=li(t.slice(0,4));return"FONT"===i?(async(e,t)=>{const{flags:i,dataStart:r,keyLength:n,keyStart:o}=hi(ti,e),s=new Uint8Array(e.slice(r));if(2&i){const t=16===n?1024:1040,i=new Uint8Array(e.slice(o,o+n)),r=Math.min(t,s.length);for(var a=0;a{const{table:i,cncx:r}=await bi(e,t),n=i.map((({tagMap:e},t)=>({index:t,offset:e[1]?.[0],size:e[2]?.[0],label:r[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=n.filter((t=>t.parent===e.index)).map(o)),e);return n.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:zt(t?.title||this.decode(e.title)),author:t?.creator?.map(zt),publisher:zt(t?.publisher),language:t?.language??e.language,published:t?.date,description:zt(t?.description),subject:t?.subject?.map(zt),rights:zt(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 xi=/<\s*(?:mbp:)?pagebreak[^>]*>/gi,Ci=/<[^<>]+filepos=['"]{0,1}(\d+)[^<>]*>/gi;class Ti{parser=new DOMParser;serializer=new XMLSerializer;#v=new Map;#w=new Map;#r=new Map;#x;#C=[];#T=qt.HTML;constructor(e){this.mobi=e}async init(){let e=new Uint8Array;for(let t=0;tString.fromCharCode(e))).join("");this.#x=[0].concat(Array.from(t.matchAll(xi),(e=>e.index))).map(((e,i,r)=>t.slice(e,r[i+1]))).map((e=>Uint8Array.from(e,(e=>e.charCodeAt(0))))).map((e=>({book:this,raw:e}))).reduce(((e,t)=>{const i=e[e.length-1];return t.start=i?.end??0,t.end=t.start+t.raw.byteLength,e.concat(t)}),[]),this.sections=this.#x.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),i=await this.sections[t].createDocument();let r,n=0,o=0;const s=new Map,a=new Map;this.toc=Array.from(i.querySelectorAll("a[filepos]")).reduce(((e,t)=>{const i=(e=>{let t=0;for(;e;){const i=e.parentElement;if(i){const e=i.tagName.toLowerCase();"p"===e?t+=1.5:"blockquote"===e&&(t+=2)}e=i}return t})(t),l={label:t.innerText?.trim(),href:`#filepos${t.getAttribute("filepos")}`},c=i>o?n+1:i===o?n:s.get(i)??Math.max(0,n-1);if(c>n)r?(r.subitems??=[],r.subitems.push(l),a.set(c,r)):e.push(l);else{const t=a.get(c);t?t.subitems.push(l):e.push(l)}return r=l,n=c,o=i,s.set(i,c),e}),[])}}catch(e){console.warn(e)}return this.#C=[...new Set(Array.from(t.matchAll(Ci),(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.#x[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.#v.has(e))return this.#v.get(e);const t=await this.mobi.loadResource(e),i=URL.createObjectURL(new Blob([t]));return this.#v.set(e,i),i}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"),i=t.getAttribute("recindex");try{t.src=await this.loadRecindex(e),i&&(t.poster=await this.loadRecindex(i))}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.#w.has(e))return this.#w.get(e);const{raw:t}=e,i=this.#C.filter((({number:t})=>t>=e.start&&t({...t,offset:t.number-e.start})));let r=t;i.length&&(r=t.subarray(0,i[0].offset),i.forEach((({filepos:e,offset:n},o)=>{const s=i[o+1],a=this.mobi.encode(``);r=si(r,a,t.subarray(n,s?.offset))})));const n=this.mobi.decode(r).replaceAll(xi,"");return this.#w.set(e,n),n}async createDocument(e){const t=await this.loadText(e);return this.parser.parseFromString(t,this.#T)}async loadSection(e){if(this.#r.has(e))return this.#r.get(e);const t=await this.createDocument(e),i=t.createElement("style");t.head.append(i),i.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 r=this.serializer.serializeToString(t),n=URL.createObjectURL(new Blob([r],{type:this.#T}));return this.#r.set(e,n),n}resolveHref(e){const t=e.match(/#filepos(.*)/)[1],i=Number(t);return{index:this.#x.findIndex((e=>e.end>i)),anchor:e=>e.getElementById(`filepos${t}`)}}splitTOCHref(e){const t=e.match(/#filepos(.*)/)[1],i=Number(t);return[this.#x.findIndex((e=>e.end>i)),`filepos${t}`]}getTOCFragment(e,t){return e.getElementById(t)}isExternal(e){return/^(?!blob|filepos)\w+:/i.test(e)}destroy(){for(const e of this.#v.values())URL.revokeObjectURL(e);for(const e of this.#r.values())URL.revokeObjectURL(e)}}const Li=/kindle:(flow|embed):(\w+)(?:\?mime=(\w+\/[-+.\w]+))?/,Si=/kindle:pos:fid:(\w+):off:(\w+)/,Mi=e=>{const[t,i]=e.match(Si).slice(1);return{fid:parseInt(t,32),off:parseInt(i,32)}},Di=(e=0,t=0)=>`kindle:pos:fid:${e.toString(32).toUpperCase().padStart(4,"0")}:off:${t.toString(32).toUpperCase().padStart(10,"0")}`,ki=e=>{const t=e.match(/\s(id|name|aid)\s*=\s*['"]([^'"]*)['"]/i);if(!t)return;const[,i,r]=t;return`[${i}="${CSS.escape(r)}"]`},Ai=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 Ei{parser=new DOMParser;serializer=new XMLSerializer;#r=new Map;#L=new Map;#S=new Map;#M={};#x;#D;#k=new Uint8Array;#A=new Uint8Array;#E=-1;#I=-1;#T=qt.XHTML;#N=new Map;constructor(e){this.mobi=e}async init(){const e=this.mobi.loadRecord.bind(this.mobi),{kf8:t}=this.mobi.headers;try{const i=await e(t.fdst),r=hi(ei,i);if("FDST"!==r.magic)throw new Error("Missing FDST record");const n=Array.from({length:r.numEntries},((e,t)=>12+8*t)).map((e=>[ci(i.slice(e,e+4)),ci(i.slice(e+4,e+8))]));this.#M.fdstTable=n,this.#D=n[n.length-1][1]}catch{}const i=(await bi(t.skel,e)).table.map((({name:e,tagMap:t},i)=>({index:i,name:e,numFrag:t[1][0],offset:t[6][0],length:t[6][1]}))),r=await bi(t.frag,e),n=r.table.map((({name:e,tagMap:t})=>({insertOffset:parseInt(e),selector:r.cncx[t[2][0]],index:t[4][0],offset:t[6][0],length:t[6][1]})));this.#M.skelTable=i,this.#M.fragTable=n,this.#x=i.reduce(((e,t)=>{const i=e[e.length-1],r=i?.fragEnd??0,o=r+t.numFrag,s=n.slice(r,o),a=t.length+s.map((e=>e.length)).reduce(((e,t)=>e+t)),l=(i?.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,""),i=t.search(/\?>/),r=`${t.slice(i)}`,n=this.parser.parseFromString(r,qt.XML);for(const e of n.querySelectorAll("spine > itemref")){const t=parseInt(e.getAttribute("skelid"));s.set(t,Ai(e.getAttribute("properties")?.split(" ")??[]))}}this.sections=this.#x.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:i,children:r})=>{const[n,o]=i,s=Di(n,o),a=this.#L.get(n);return a?a.push(o):this.#L.set(n,[o]),{label:zt(e),href:s,subitems:r?.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={},i=this.mobi.headers.kf8.resourceStart,r=this.mobi.pdb.numRecords;for(let n=i;ne===i));r&&(t[r]=n)}catch{}return t}async getGuide(){const e=this.mobi.headers.kf8.guide;if(e<4294967295){const t=this.mobi.loadRecord.bind(this.mobi),{table:i,cncx:r}=await bi(e,t);return i.map((({name:e,tagMap:t})=>({label:r[t[1][0]]??"",type:e?.split(/\s/),href:Di(t[6]?.[0]??t[3]?.[0])})))}}async loadResourceBlob(e){let{resourceType:t,id:i,type:r}=(e=>{const[t,i,r]=e.match(Li).slice(1);return{resourceType:t,id:parseInt(i,32),type:r}})(e);"image/jpg"===r&&(r="image/jpeg");const n="flow"===t?await this.loadFlow(i):await this.mobi.loadResource(i-1),o=[qt.XHTML,qt.HTML,qt.CSS,qt.SVG].includes(r)?await this.replaceResources(this.mobi.decode(n)):n,s=r===qt.SVG?this.parser.parseFromString(o,r):null;return[new Blob([o],{type:r}),s?.getElementsByTagNameNS("http://www.w3.org/2000/svg","image")?.length?s.documentElement:null]}async loadResource(e){if(this.#r.has(e))return this.#r.get(e);const[t,i]=await this.loadResourceBlob(e),r=i?e:URL.createObjectURL(t);return i&&this.#N.set(r,i),this.#r.set(e,r),r}replaceResources(e){return(async(e,t,i)=>{const r=[];e.replace(t,((...e)=>(r.push(e),null)));const n=[];for(const e of r)n.push(await i(...e));return e.replace(t,(()=>n.shift()))})(e,new RegExp(Li,"g"),this.loadResource.bind(this))}async loadRaw(e,t){const i=t-this.#k.length,r=null==this.#D?1/0:this.#D-this.#A.length-e;if(i<0||ie;){const e=this.mobi.headers.palmdoc.numTextRecords-1-++this.#I,t=await this.mobi.loadText(e);this.#A=oi(t,this.#A)}const n=this.#D-this.#A.length;return this.#A.slice(e-n,t-n)}loadFlow(e){if(e<4294967295)return this.loadRaw(...this.#M.fdstTable[e])}async loadText(e){const{skel:t,frags:i,length:r}=e,n=await this.loadRaw(t.offset,t.offset+r);let o=n.slice(0,t.length);for(const e of i){const i=e.insertOffset-t.offset,r=t.length+e.offset,s=n.slice(r,r+e.length);o=si(o.slice(0,i),s,o.slice(i));const a=this.#L.get(e.index);if(a)for(const t of a){const i=this.mobi.decode(s).slice(t),r=ki(i);this.#R(e.index,t,r)}}return this.mobi.decode(o)}async createDocument(e){const t=await this.loadText(e);return this.parser.parseFromString(t,this.#T)}async loadSection(e){if(this.#r.has(e))return this.#r.get(e);const t=await this.loadText(e),i=await this.replaceResources(t);let r=this.parser.parseFromString(i,this.#T);r.querySelector("parsererror")&&(this.#T=qt.HTML,r=this.parser.parseFromString(i,this.#T));for(const[e,t]of this.#N)for(const i of r.querySelectorAll(`img[src="${e}"]`))i.replaceWith(t);const n=URL.createObjectURL(new Blob([this.serializer.serializeToString(r)],{type:this.#T}));return this.#r.set(e,n),n}getIndexByFID(e){return this.#x.findIndex((t=>t.frags.some((t=>t.index===e))))}#R(e,t,i){const r=this.#S.get(e);if(r)r.set(t,i);else{const r=new Map;this.#S.set(e,r),r.set(t,i)}}async resolveHref(e){const{fid:t,off:i}=Mi(e),r=this.getIndexByFID(t);if(r<0)return;const n=this.#S.get(t)?.get(i);if(n)return{index:r,anchor:e=>e.querySelector(n)};const{skel:o,frags:s}=this.#x[r],a=s.find((e=>e.index===t)),l=o.offset+o.length+a.offset,c=await this.loadRaw(l,l+a.length),h=this.mobi.decode(c.slice(i)),d=ki(h);this.#R(t,i,d);return{index:r,anchor:e=>e.querySelector(d)}}splitTOCHref(e){const t=Mi(e);return[this.getIndexByFID(t.fid),t]}getTOCFragment(e,{fid:t,off:i}){const r=this.#S.get(t)?.get(i);return e.querySelector(r)}isExternal(e){return/^(?!blob|kindle)\w+:/i.test(e)}destroy(){for(const e of this.#r.values())URL.revokeObjectURL(e)}}class Ii extends Ft{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"MOBI"})),this.mobiBuffer=e}renderTo(e){return new Promise(((t,i)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let i=new T(this.book);this.chapterList=yield i.getChapter(this.book.toc),this.chapterDocList=yield i.getChapterDoc(),g(e);let r=this.getDocument();r&&(w(e,this.readerMode,r),t())}))))}resolveHref(e){return c(this,void 0,void 0,(function*(){let t=this.tempLocation.chapterDocIndex,i=this.chapterDocList[t];if(i){let r=yield i.text.resolveHref(e);if(!r)return{};if(r.index===parseInt(t)){let e=this.getDocument();if(!e)return r;let t=r.anchor(e);if(!t)return r;let i=t.getAttribute("id")||"";return Object.assign(Object.assign({},r),{id:i})}return r}return{}}))}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});(yield(async e=>"BOOKMOBI"===li(await e.slice(60,68).arrayBuffer()))(t))&&(this.book=yield new wi({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 $t(this.book)}))}getMetadata(){return c(this,void 0,void 0,(function*(){try{this.book||(yield this.parse());let e=new T(this.book);return yield e.getMetadata()}catch(e){throw console.error(e),e}}))}}const Ni=e=>`${Pi()?".":""}/lib/pdfjs/${e}`,Ri=window.pdfjsLib,Oi=async e=>await(await fetch(e)).text(),Pi=()=>"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 Bi(e,t="",i=""){return new Promise((r=>{vex.dialog.prompt({message:e,placeholder:t,value:i,callback:function(e){r(e)}})}))}const Fi=async()=>await Oi(Ni("text_layer_builder.css")),Hi=async()=>await Oi(Ni("annotation_layer_builder.css")),ji=async(e,t)=>{const i=e.getViewport({scale:1});if(t){const t=document.createElement("canvas");t.height=i.height,t.width=i.width;const r=t.getContext("2d");return await e.render({canvasContext:r,viewport:i}).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"}))},Wi=e=>({label:e.title,href:e.dest?JSON.stringify(e.dest):null,subitems:e.items.length?e.items.map(Wi):null});function $i(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 Ui=async(e,t)=>{let i;for(;;){const r=new Ri.PDFDataRangeTransport(e.size,[]);r.requestDataRange=(t,i)=>{e.slice(t,i).arrayBuffer().then((e=>{r.onDataRange(t,e)}))};try{i=await Ri.getDocument({range:r,cMapUrl:Ni("cmaps/"),standardFontDataUrl:Ni("standard_fonts/"),isEvalSupported:!1,password:t}).promise;break}catch(e){if("PasswordException"!==e.name)throw e;if(e.code===Ri.PasswordResponses.NEED_PASSWORD?Pi()?(t=await Bi($i("need"),"",""),vex.closeAll()):t=prompt($i("need")):e.code===Ri.PasswordResponses.INCORRECT_PASSWORD&&(Pi()?(t=await Bi($i("incorrect"),"",""),vex.closeAll()):t=prompt($i("incorrect"))),!t)throw new Error("PDF loading failed: no password provided")}}let r=!1,n=i.numPages>0?await i.getPage(Math.floor(i.numPages/2)+1):null;if(n){const e=await n.getTextContent();if(r=0===e.items.length,e.items.length>0){r=e.items.reduce(((e,t)=>e+t.str.trim().length),0)<40}n.cleanup()}const o={rendition:{layout:"pre-paginated"}},{metadata:s,info:a}=await i.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:"")+(r?"\nscanned PDF":"")+(t?"\nprotected PDF: #"+t+"#":"");const l=await i.getOutline();o.toc=l?.map(Wi);const c=new Map;return o.sections=Array.from({length:i.numPages}).map(((e,t)=>({id:t,load:async()=>{const e=c.get(t);if(e)return e;const r=await ji(await i.getPage(t+1));return c.set(t,r),r},unload:async()=>{(await i.getPage(t+1)).cleanup()},render:async(e,r,n,o)=>{await(async(e,t,i,r)=>{let n=window.devicePixelRatio*("yes"===r?1/i*1.5:1);const o=i*n;let s=t.querySelector("#koodoPDFLayer");s.style.visibility="hidden",s.style.transform=`scale(${1/n})`,s.style.transformOrigin="top left",s.style.setProperty("--scale-factor",o);const a=e.getViewport({scale:o}),l=document.createElement("canvas");s.style.width=`${a.width}px`,s.style.height=`${a.height}px`,l.height=a.height,l.width=a.width;const c=l.getContext("2d");await e.render({canvasContext:c,viewport:a,background:"rgba(0,0,0,0)"}).promise,t.querySelector("#canvas").replaceChildren(t.adoptNode(l)),s.style.overflow="hidden";const h=t.querySelector("#textLayer"),d=new Ri.TextLayer({textContentSource:await e.streamTextContent(),container:h,viewport:a});await d.render();for(const e of document.querySelectorAll(".hiddenCanvasElement"))Object.assign(e.style,{position:"absolute",top:"0",left:"0",width:"0",height:"0",display:"none"});const u=document.createElement("div");u.className="endOfContent",h.append(u);let f=!1,p=null;h.onpointerdown=()=>{let e=t?.defaultView;if(e.getSelection().toString().trim().length>0)return h.classList.remove("selecting"),f=!1,u.remove(),void h.append(u);h.classList.add("selecting"),f=!0},"yes"!==r?(h.onpointerup=()=>{h.classList.remove("selecting"),f=!1,u.remove(),h.append(u)},h.onpointermove=e=>{if(!f)return;let t=e.target.closest(".textLayer > span");const i=null!==t;h.style.cursor=i?"text":"default",i&&(p=t),u.remove(),h.insertBefore(u,p)}):t.addEventListener("selectionchange",(e=>{if(!f)return;let i=t?.defaultView;var r=i.getSelection().getRangeAt(0).endContainer;let n=r.nodeType===Node.TEXT_NODE?r.parentNode:r;n=n.closest(".textLayer > span");const o=null!==n;h.style.cursor=o?"text":"default",o&&(p=n),u.remove(),h.insertBefore(u,p.nextSibling?p.nextSibling:p)}));const g=t.querySelector("#annotationLayer");await new Ri.AnnotationLayer({page:e,viewport:a,div:g}).render({annotations:await e.getAnnotations(),linkService:{goToDestination:()=>{},getDestinationHash:e=>JSON.stringify(e),addLinkAttributes:(e,t)=>e.href=t}})})(await i.getPage(t+1),e,r,n)},getTextContent:async()=>{const e=await i.getPage(t+1);return await e.getTextContent()},size:1e3,getDimension:async()=>{let e=(await i.getPage(t+1)).getViewport({scale:1});return{width:e.width,height:e.height}},getPage:async()=>await i.getPage(t+1)}))),o.isExternal=e=>/^\w+:/i.test(e),o.resolveHref=async e=>{const t=JSON.parse(e),r="string"==typeof t?await i.getDestination(t):t;return{index:await i.getPageIndex(r[0])}},o.splitTOCHref=async e=>{const t=JSON.parse(e),r="string"==typeof t?await i.getDestination(t):t;return[await i.getPageIndex(r[0]),null]},o.getTOCFragment=e=>e.documentElement,o.getCover=async()=>ji(await i.getPage(1),!0),o.destroy=()=>i.destroy(),o},zi=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]};class qi extends Ft{constructor(e,t){super(Object.assign(Object.assign({},t),{convertChinese:"Default",format:"PDF"})),this.isStartFromEven="no",this.password="",this.scale=1,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,i)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let i=new T(this.book);this.chapterList=yield i.getChapter(this.book.toc),this.chapterDocList=yield i.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]),document.body.clientWidth*Math.abs(this.scale)-.4*document.body.clientWidth>document.body.clientWidth&&"double"!==this.readerMode?g(e,this.scale):g(e);const r=yield this.chapterDocList[Math.floor(this.chapterDocList.length/2)].text.getDimension();let n=this.getDocument();if(!n)return;((e,t,i,r)=>{for(let n=0;n{o&&clearTimeout(o),o=setTimeout((()=>c(this,void 0,void 0,(function*(){yield this.handlePDFScrollEvent(n),yield this.record()}))),100)})):n.addEventListener("scroll",(e=>{o&&clearTimeout(o),o=setTimeout((()=>c(this,void 0,void 0,(function*(){yield this.handlePDFScrollEvent(n),yield this.record()}))),200)})),((e,t,i)=>{if("scroll"===t)return;let r="double"===t?2:1,n=Math.floor(i.body.clientWidth/12),o=n%2==0?n:n-1;i.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: ${(i.body.clientWidth-o)/r}px;`)})(e,this.readerMode,n),t()}))))}handlePDFScrollEvent(e){return c(this,void 0,void 0,(function*(){let t=e.querySelectorAll(".pdf-container");for(let i=0;i0&&(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,i=Math.floor(e.body.clientWidth/12),r=i%2==0?i:i-1,n=e.querySelectorAll("iframe")[0],o=null==n?void 0:n.getBoundingClientRect().height;return{width:e.body.clientWidth,height:this.element.clientHeight,left:this.element.offsetLeft,top:this.element.offsetTop,scrollTop:this.element.scrollTop,sectionWidth:(e.body.clientWidth-r)/t,sectionHeight:o,gap:r}}goToChapter(e,t,i){return c(this,void 0,void 0,(function*(){"double"===this.readerMode&&e%2==1&&e--;let t=this.getDocument(),i=this.getIframe();t&&i&&(yield this.renderPdfPage(e,t),yield Lt(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 i;return c(this,void 0,void 0,(function*(){let r=this.getDocument(),n=this.getIframe();if(!r||!n)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),r),"scroll"===this.readerMode){let e=this.getSubIframe(void 0!==a?a:parseInt(this.tempLocation.chapterDocIndex));if(!e)return;let t=(null===(i=e.parentElement)||void 0===i?void 0:i.getBoundingClientRect().height)||0;n.style.height=t*this.chapterDocList.length+"px"}yield Lt(parseInt(a),this.readerMode,r),t.init(),yield this.recordByChapter(parseInt(a))}))}prev(e){return c(this,void 0,void 0,(function*(){let t=this.getDocument(),i=this.getIframe();t&&i&&("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 ze(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(),i=this.getIframe();t&&i&&("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 ze(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,i=this.readerMode,c(void 0,void 0,void 0,(function*(){let r=(yield t[e].text.getTextContent()).items.map((e=>e.str));if("double"===i){let i=(yield t[e+1].text.getTextContent()).items.map((e=>e.str));r=r.concat(i)}return r}))):"";var e,t,i}))}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*(){""!==this.animation&&(yield new Promise((e=>setTimeout(e,1e3)))),e>=this.chapterDocList.length||e<0||(this.tempLocation.chapterDocIndex=e+"",this.tempLocation.percentage=e/(this.chapterDocList.length-1)+"",this.tempLocation.chapterHref=this.chapterDocList[e].href,this.tempLocation.chapterTitle=this.chapterDocList[e].label,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&&St(this.element,t[t.length-1],this.readerMode,e))this.handleRecord(t[t.length-1]);else for(let i=0;ir[e].left&&(c[c.length-1].left=r[e].left),c[c.length-1].right=this.chapterDocList.length||e<0)return;let i=t.getElementById("pdf-iframe-"+e);i||(i=Tt(e,t));let r=null==i?void 0:i.contentDocument;if(!r)return;if(r.body.innerHTML)return;r.body.innerHTML="";let n=yield fetch(yield this.chapterDocList[e].text.load()).then((e=>e.blob())),o=yield n.text();r.body.innerHTML=o;let s=yield Ct(this.element,this.readerMode,this.chapterDocList,e,r);yield this.chapterDocList[e].text.render(r,s,this.isMobile);let a=r.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",i.style.height=a.getBoundingClientRect().height+e+"px";let t=r.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 Vi extends Ft{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,i)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let i=new T(this.book);this.chapterList=yield i.getChapter(this.book.toc),this.chapterDocList=yield i.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 i="";return"yes"===this.isScannedPDF?(i=yield this.processCurrentChapter(e),this.preProcessNextChapters(e)):(i=yield this.getTextFromDoc(t),this.cache[e]=i),i}))}g(e);let r=this.getDocument();r&&(w(e,this.readerMode,r),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],i=yield this.getTextByOCR(t);return this.cache[e]=i,i}))}preProcessNextChapters(e){const t=Math.min(e+3,this.chapterDocList.length-1);for(let i=e+1;i<=t;i++)if(!this.cache[i]&&!this.processingPromises.has(i)){const e=this.processChapterOCR(i);this.processingPromises.set(i,e),e.finally((()=>{this.processingPromises.delete(i)}))}}processChapterOCR(e){return c(this,void 0,void 0,(function*(){try{const t=this.chapterDocList[e],i=yield this.getTextByOCR(t);this.cache[e]=i}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:i}=yield kt(t);let r=(yield this.performOCR(i)).split("\n").filter((e=>""!==e.trim()));return URL.createObjectURL(new Blob([`\n \n \n \n \n
${r.map((e=>`

${e}

`)).join("")}
\n `],{type:"text/html"}))}))}getTextFromDoc(e){return c(this,void 0,void 0,(function*(){let t=yield e.text.getTextContent(),i=[];if(t&&t.items&&Array.isArray(t.items)){const e=t.items.filter((e=>e.str&&e.transform)).map((e=>e.transform[3]));let r=10;if(e.length>0){const t=e.reduce(((e,t)=>(e[t]=(e[t]||0)+1,e)),{});r=Object.keys(t).map(Number).reduce(((e,i)=>t[e]>t[i]?e:i))}let n={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(r)*this.titleSizeValue;t>e.height*this.paraSpacingValue&&n.text.trim()?(i.push(n),n={text:"",styles:new Set,y:e.transform[5],tag:s,isBold:a}):n.hasOwnProperty("isBold")||(n.isBold=a);const l=e.str;e.hasEOL?l.endsWith("-")?n.text+=l.slice(0,-1):n.text+=l+" ":n.text+=l,o=e.transform[5]}})),n.text.trim()&&i.push(n)}return URL.createObjectURL(new Blob([`\n \n \n \n \n
${i.length>0?i.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]),i=new File([t],"book",{lastModified:(new Date).getTime(),type:t.type});if((yield zi(i))&&(this.book=yield Ui(i,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()}))),i=URL.createObjectURL(new Blob([t],{type:"application/javascript"}));const r=yield window.Tesseract.createWorker([this.ocrLang],1,{workerPath:i,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 r.load(),this.worker=r}}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 $t(this.book)}))}getMetadata(){return c(this,void 0,void 0,(function*(){try{this.book||(yield this.parse());let e=new T(this.book);return yield e.getMetadata()}catch(e){throw console.error(e),e}}))}}const Xi=(e,t=!1,i="",r)=>{const n=(new DOMParser).parseFromString(t?((e,t,i)=>{let r=e.split("\n");1===r.length&&(r=e.split("\r"));const n=[];let o=!1;if(i&&i.refresh&&(o=!0),r.length>1e4&&!o){i&&i.text||(i={text:r[0],chapterTitle:"",chapterDocIndex:0});let e=r.findIndex((e=>Oe(e)===Oe(i.text)));-1===e&&(e=0);const o=Math.max(e-1e3,0),s=Math.min(e+1e3,r.length),a=r.slice(o,s),l=a.filter((e=>{const i=Oe(e);return i&&Pe(i,t)})),c=new Set(l.map((e=>Oe(e))));let h=l.findIndex((e=>Oe(e)===Oe(i.chapterTitle)));if(-1===h&&(h=0),h0)for(let t=0;tChapter ${t}`),n.push(`

Chapter ${t}

`)}for(const e of a){const t=Oe(e);t&&c.has(t)?n.push(`

${t}

`):n.push(`

${e}

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

${i}

`):n.push(`

${e}

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

Title

${e}

`})(e,i,r):e,"text/html");let o=Ji(n);0===o.length&&(o=Zi(n));for(let e=0;e""};return h.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}))),h.toc=l.map((e=>({label:e.label,href:"title"+e.index}))).filter((e=>""!==e.label)),h.rendition={layout:"pre-paginated"},h.resolveHref=e=>({index:parseInt(e.substring(5,e.length))}),h.splitTOCHref=e=>[e,null],h.getTOCFragment=e=>e.documentElement,h},Ji=e=>Array.from(e.querySelectorAll("h1,h2,h3,h4,h5,h6,title")),Gi=e=>{let t=[],i=e.split(" ").filter((e=>""!==e.trim())),r=i.map((e=>_i(e)||Yi(e)));return t=i.map(((e,t)=>({index:t,label:r[t],text:e,href:"title"+t}))),t},_i=e=>{var t;const i=(new DOMParser).parseFromString(e,"text/html").querySelector("h1, h2, h3, h4, h5, h6");return i&&(null===(t=i.textContent)||void 0===t?void 0:t.trim())||""},Yi=e=>{var t;const i=(new DOMParser).parseFromString(e,"text/html").querySelector("title");return i&&(null===(t=i.textContent)||void 0===t?void 0:t.trim())||""},Zi=e=>{let t=e.getElementsByTagName("*"),i=Array.from(t).filter((e=>1===e.childNodes.length&&e.childNodes[0].nodeType===Node.TEXT_NODE&&Pe(Oe(e.textContent)))),r=[];for(let e=0;ec(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse(t));let r=new T(this.book);this.chapterList=yield r.getChapter(this.book.toc),this.chapterDocList=yield r.getChapterDoc(),g(e);let n=this.getDocument();n&&(w(e,this.readerMode,n),i())}))))}parse(e){return c(this,void 0,void 0,(function*(){try{const t=new TextDecoder(this.charset),i=new Uint8Array(this.txtBuffer);let r=t.decode(i);this.book=Xi(r,!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 T(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 $t(this.book)}))}getMetadata(e){return c(this,void 0,void 0,(function*(){try{const t=4096,i=e.byteLength,r=Math.min(i,t),o=new Uint8Array(e,0,r);const s=n.detect(o)||"utf8";return this.charset=s,{charset:s}}catch(e){return console.error("Error detecting charset:",e),this.charset="utf8",{charset:"utf8"}}}))}}const Qi=({entries:e,loadBlob:t,getSize:i},r,n)=>{const o=new Map,s=new Map,a=async(e,i)=>{if(o.has(e))return o.get(e);if(i){const r=URL.createObjectURL(await t(e)),n=URL.createObjectURL(await t(i)),a=URL.createObjectURL(new Blob([`
`],{type:"text/html"}));return s.set(e,[r,a]),o.set(e,a),a}{const i=URL.createObjectURL(await t(e)),r=URL.createObjectURL(new Blob([`
`],{type:"text/html"}));return s.set(e,[i,r]),o.set(e,r),r}},l=[".jpg",".jpeg",".png",".gif",".bmp",".webp",".svg"],c=e.map((e=>e.filename)).filter((e=>l.some((t=>e.endsWith(t))))).sort(((e,t)=>{const i=parseInt(e.replace(/\D/g,"")),r=parseInt(t.replace(/\D/g,""));return isNaN(i)||isNaN(r)?isNaN(i)?isNaN(r)?e.localeCompare(t):1:-1:i-r})),h={getCover:()=>t(c[0])};return h.metadata={title:r.name},h.sections=c.map(((e,t)=>({id:e,load:()=>{if("double"===n){const i=c[t+1];return a(e,i)}return a(e)},unload:()=>(e=>{s.get(e)?.forEach?.((e=>URL.revokeObjectURL(e))),s.delete(e),o.delete(e)})(e),size:i(e)}))).filter(((e,t)=>"double"!==n||t%2==0)),h.toc=c.map((e=>({label:e,href:e}))).filter(((e,t)=>"double"!==n||t%2==0)),h.rendition={layout:"pre-paginated"},h.resolveHref=e=>({index:h.sections.findIndex((t=>t.id===e))}),h.splitTOCHref=e=>[e,null],h.getTOCFragment=e=>e.documentElement,h};class er extends Ft{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,i)=>c(this,void 0,void 0,(function*(){if(this.element=e,g(e),!this.book)try{yield this.parse()}catch(e){console.error(e),i(e)}let r=new T(this.book);this.chapterList=yield r.getChapter(this.book.toc),this.chapterDocList=yield r.getChapterDoc();let n=this.getDocument();n&&(w(e,this.readerMode,n),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=Qi(e,t,this.readerMode)}else if("CBT"===this.format){const e=yield this.makeTarLoader();this.book=Qi(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,i){console.info(i)}}),yield new Promise((e=>setTimeout(e,200)));const e=yield this.makeRarLoader();this.book=Qi(e,t,this.readerMode)}else if("CB7"===this.format){const e=yield this.make7zLoader();this.book=Qi(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 $t(this.book)}))}makeZipLoader(e){return c(this,void 0,void 0,(function*(){let t=yield i.loadAsync(e);const r=t.files;return{entries:Object.values(r).map((e=>({filename:e.name}))),loadText:e=>c(this,void 0,void 0,(function*(){let i=t.file(e);return i?i.async("string"):""})),loadBlob:e=>c(this,void 0,void 0,(function*(){let i=t.file(e);if(i){let e=yield i.async("arraybuffer");return new Blob([e])}return new Blob([new ArrayBuffer(0)])})),getSize:e=>{let i=t.file(e);if(i)return i._data.uncompressedSize||1}}}))}makeTarLoader(){return c(this,void 0,void 0,(function*(){const e=yield o(this.comicBuffer),t=new Map(e.map((e=>[e.name,e]))),i=e=>(i,...r)=>t.has(i)?e(t.get(i),...r):null,r=i((e=>e.readAsString())),n=i(((e,t)=>e.blob));return{entries:e.map((e=>({filename:e.name}))),loadText:r,loadBlob:n,getSize:e=>{var i,r;return null!==(r=null===(i=t.get(e))||void 0===i?void 0:i.size)&&void 0!==r?r:1}}}))}makeRarLoader(){return c(this,void 0,void 0,(function*(){return new Promise(((e,t)=>{var i=[this.comicBuffer],r=[{name:"book.rar",content:this.comicBuffer}];this.rpc.transferables=i,this.rpc.unrar(r,null,0).then((t=>{let i=this.getRarEntries(t.ls);const r=new Map(Object.values(i).map((e=>[e.fullFileName,e]))),n=e=>(t,...i)=>r.has(t)?e(r.get(t),...i):null,o=n((e=>e.fullFileName)),s=n(((e,t)=>new Blob([e.fileContent])));e({entries:Object.values(i).map((e=>({filename:e.fullFileName}))),loadText:o,loadBlob:s,getSize:e=>{var t,i;return null!==(i=null===(t=r.get(e))||void 0===t?void 0:t.fileSize)&&void 0!==i?i: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}),i=new Uint8Array(this.comicBuffer),r="archive.cb7",n=t.FS.open(r,"w+");t.FS.write(n,i,0,i.length),t.FS.close(n),t.callMain(["x",r]);const o=t.FS,s=this.get7zEntries(o.lookupPath("/").node),a=new Map(s.map((e=>[e.name,e]))),l=e=>(t,...i)=>a.has(t)?e(a.get(t),...i):null,c=l((e=>e.name)),h=l(((e,t)=>new Blob([e.buffer])));return{entries:s.map((e=>({filename:e.name}))),loadText:c,loadBlob:h,getSize:e=>{var t,i;return null!==(i=null===(t=a.get(e))||void 0===t?void 0:t.size)&&void 0!==i?i:1}}}))}getRarEntries(e){const t=Object.keys(e);let i=[];for(let r=0;r"archive.cb7"!=e&&"dev"!=e&&"home"!=e&&"proc"!=e&&"tmp"!=e));let r=[];for(let e=0;ec(this,void 0,void 0,(function*(){try{this.book||(yield this.parse());const t=yield this.book.getCover();var i=new FileReader;i.readAsDataURL(t),i.onloadend=()=>{e({cover:i.result})}}catch(e){console.error(e),t(e)}}))))}))}}const tr=e=>e?.trim()?.replace(/\s{2,}/g," "),ir=e=>tr(e?.textContent),rr={XLINK:"http://www.w3.org/1999/xlink",EPUB:"http://www.idpf.org/2007/ops"},nr="application/xml",or="application/xhtml+xml",sr={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"},ar={epigraph:["blockquote"],subtitle:["h2",sr],"text-author":["p",sr],date:["p",sr],stanza:"stanza"},lr={title:["header",{p:["h1",sr],"empty-line":["br"]}],epigraph:["blockquote","self"],image:"image",annotation:["aside"],section:["section","self"],p:["p",sr],poem:["blockquote",ar],subtitle:["h2",sr],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",sr]};ar.epigraph.push(lr);const cr={image:"image",title:["section",{p:["h1",sr],"empty-line":["br"]}],epigraph:["section",lr],section:["section",lr]},hr=e=>{const t=e.getAttributeNS(rr.XLINK,"href"),[,i]=t.split("#"),r=e.getRootNode().getElementById(i);return r?`data:${r.getAttribute("content-type")};base64,${r.textContent}`:t};class dr{constructor(e){this.fb2=e,this.doc=document.implementation.createDocument(rr.XHTML,"html")}image(e){const t=this.doc.createElement("img");return t.alt=e.getAttribute("alt"),t.title=e.getAttribute("title"),t.setAttribute("src",hr(e)),t}anchor(e){const t=this.convert(e,{a:["a",sr]});return t.setAttribute("href",e.getAttributeNS(rr.XLINK,"href")),"note"===e.getAttribute("type")&&t.setAttributeNS(rr.EPUB,"epub:type","noteref"),t}stanza(e){const t=this.convert(e,{stanza:["p",{title:["header",{p:["strong",sr],"empty-line":["br"]}],subtitle:["p",sr]}]});for(const i of e.children)"v"===i.nodeName&&(t.append(this.doc.createTextNode(i.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 i=t?.[e.nodeName];if(!i)return null;if("string"==typeof i)return this[i](e);const[r,n]=i,o=this.doc.createElement(r);if(e.id&&(o.id=e.id),o.classList.add(e.nodeName),Array.isArray(n))for(const t of n)o.setAttribute(t,e.getAttribute(t));const s="self"===n?t:Array.isArray(n)?null:n;let a=e.firstChild;for(;a;){const e=this.convert(a,s);e&&o.append(e),a=a.nextSibling}return o}}const ur=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"})),fr="data-foliate-id",pr=async e=>{const t={},i=await(async e=>{const t=await e.arrayBuffer(),i=new TextDecoder("utf-8").decode(t),r=new DOMParser,n=r.parseFromString(i,nr),o=n.xmlEncoding||i.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 r.parseFromString(e,nr)}return n})(e),r=new dr(i),n=e=>i.querySelector(e),o=e=>[...i.querySelectorAll(e)],s=e=>{const t=ir(e.querySelector("nickname"));if(t)return t;const i=ir(e.querySelector("first-name")),r=ir(e.querySelector("middle-name")),n=ir(e.querySelector("last-name"));return{name:[i,r,n].filter((e=>e)).join(" "),sortAs:n?[n,[i,r].filter((e=>e)).join(" ")].join(", "):null}},a=e=>e?.getAttribute("value")??ir(e),l=n("title-info annotation");t.metadata={title:ir(n("title-info book-title")),identifier:ir(n("document-info id")),language:ir(n("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(ir)),publisher:ir(n("publish-info publisher")),published:a(n("title-info date")),modified:a(n("document-info date")),description:l?r.convert(l,{annotation:["div",lr]}).innerHTML:null,subject:o("title-info genre").map(ir)},t.getCover=()=>fetch(hr(n("coverpage image"))).then((e=>e.blob()));const c=Array.from(i.querySelectorAll("body"),(e=>{const t=r.convert(e,{body:["body",cr]});return[Array.from(t.children,(e=>{const t=[e,...e.querySelectorAll("[id]")].map((e=>e.id));return{el:e,ids:t}})),t]})),h=c[0][0].map((({el:e,ids:t})=>({ids:t,titles:Array.from(e.querySelectorAll(":scope > section > .title"),((e,t)=>(e.setAttribute(fr,t),{title:ir(e),index:t}))),el:e}))).concat(c.slice(1).map((([e,t])=>{const i=e.map((e=>e.ids)).flat();return t.classList.add("notesBodyType"),{ids:i,el:t,linear:"no"}}))).map((({ids:e,titles:t,el:i,linear:r})=>{const n=(o=i.outerHTML,`\n\n \n ${o}\n`);var o;const s=new Blob([n],{type:or}),a=URL.createObjectURL(s);return{ids:e,title:tr(i.querySelector(".title, .subtitle, p")?.textContent??(i.classList.contains("title")?i.textContent:"")),titles:t,load:()=>a,createDocument:()=>(new DOMParser).parseFromString(n,or),size:s.size-Array.from(i.querySelectorAll("[src]"),(e=>e.getAttribute("src")?.length??0)).reduce(((e,t)=>e+t),0),linear:r}})),d=new Map;return t.sections=h.map(((e,t)=>{const{ids:i,load:r,createDocument:n,size:o,linear:s}=e;for(const e of i)e&&d.set(e,t);return{id:t,load:r,createDocument:n,size:o,linear:s}})),t.toc=h.map((({title:e,titles:t},i)=>{const r=i.toString();return{label:e,href:r,subitems:t?.length?t.map((({title:e,index:t})=>({label:e,href:`${r}#${t}`}))):null}})).filter((e=>e)),t.resolveHref=e=>{const[t,i]=e.split("#");return t?{index:Number(t),anchor:e=>e.querySelector(`[${fr}="${i}"]`)}:{index:d.get(i),anchor:e=>e.getElementById(i)}},t.splitTOCHref=e=>e?.split("#")?.map((e=>Number(e)))??[],t.getTOCFragment=(e,t)=>e.querySelector(`[${fr}="${t}"]`),t};class gr extends Ft{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"FB2"})),this.fb2Buffer=e}renderTo(e){return new Promise(((t,i)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let i=new T(this.book);this.chapterList=yield i.getChapter(this.book.toc),this.chapterDocList=yield i.getChapterDoc(),g(e);let r=this.getDocument();r&&(w(e,this.readerMode,r),t())}))))}parse(){return c(this,void 0,void 0,(function*(){try{let e=new Blob([this.fb2Buffer]);this.book=yield pr(e)}catch(e){throw console.error(e),e}}))}preCache(){return c(this,void 0,void 0,(function*(){return this.book||(yield this.parse()),yield $t(this.book)}))}getMetadata(){return c(this,void 0,void 0,(function*(){try{this.book||(yield this.parse());let e=new T(this.book);return yield e.getMetadata()}catch(e){throw console.error(e),e}}))}}class mr extends Ft{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"CACHE"})),this.cacheBuffer=e}renderTo(e){return new Promise(((t,i)=>c(this,void 0,void 0,(function*(){this.element=e,this.book=yield Wt(this.cacheBuffer);let i=new T(this.book);this.chapterList=yield i.getChapter(this.book.toc),this.chapterDocList=yield i.getChapterDoc(),g(e);let r=this.getDocument();r&&(w(e,this.readerMode,r),t())}))))}}class yr extends Ft{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"DOCX"})),this.docxBuffer=e}renderTo(e){return new Promise(((t,i)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let i=new T(this.book);this.chapterList=yield i.getChapter(this.book.toc),this.chapterDocList=yield i.getChapterDoc(),g(e);let r=this.getDocument();r&&(w(e,this.readerMode,r),t())}))))}parse(){return c(this,void 0,void 0,(function*(){return new Promise(((e,t)=>{try{s.convertToHtml({arrayBuffer:this.docxBuffer}).then((t=>c(this,void 0,void 0,(function*(){this.book=Xi(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 $t(this.book)}))}}class br extends Ft{constructor(e,t){super(Object.assign(Object.assign({},t),{format:"MD"})),this.mdBuffer=e}renderTo(e){return new Promise(((t,i)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let i=new T(this.book);this.chapterList=yield i.getChapter(this.book.toc),this.chapterDocList=yield i.getChapterDoc(),g(e);let r=this.getDocument();r&&(w(e,this.readerMode,r),t())}))))}parse(){return c(this,void 0,void 0,(function*(){return new Promise(((e,t)=>{try{var i=new Blob([this.mdBuffer],{type:"text/plain"}),r=new FileReader;r.onload=t=>c(this,void 0,void 0,(function*(){var i;let r=yield a(null===(i=t.target)||void 0===i?void 0:i.result);this.book=Xi(r,!1),e()})),r.readAsText(i,"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 $t(this.book)}))}}class vr extends Ft{constructor(e,t){super(t),this.htmlBuffer=e}renderTo(e){return new Promise(((t,i)=>c(this,void 0,void 0,(function*(){this.element=e,this.book||(yield this.parse());let i=new T(this.book);this.chapterList=yield i.getChapter(this.book.toc),this.chapterDocList=yield i.getChapterDoc(),g(e);let r=this.getDocument();r&&(w(e,this.readerMode,r),t())}))))}parse(){return c(this,void 0,void 0,(function*(){return new Promise(((e,t)=>{try{var i=new Blob([this.htmlBuffer],{type:Ht[this.format.toLocaleLowerCase()]}),r=new FileReader;r.onload=t=>c(this,void 0,void 0,(function*(){var i;let r=null===(i=t.target)||void 0===i?void 0:i.result;"MHTML"===this.format&&(r=l.convert(r).window.document.documentElement.innerHTML),this.book=Xi(r,!1),e()})),r.readAsText(i,"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 $t(this.book)}))}}export{mr as CacheRender,er as ComicRender,yr as DocxRender,Ut as EpubRender,gr as Fb2Render,vr as HtmlRender,br as MdRender,Ii as MobiRender,qi as PdfRender,Vi as PdfTextRender,Ki as TxtRender}; diff --git a/src/assets/locales/zh-CN/translation.json b/src/assets/locales/zh-CN/translation.json index 5a5ac06c..0e72f4e0 100644 --- a/src/assets/locales/zh-CN/translation.json +++ b/src/assets/locales/zh-CN/translation.json @@ -412,6 +412,9 @@ "Reset sync records": "重置同步记录", "Your Pro trial has expired, please renew it to continue using the Pro features": "您的专业版试用已过期,请续费以继续使用专业版功能", "Support": "联系我们", + "Continue": "继续", + "This data source cannot be accessed from browser due to CORS policy. Please switch to another data source or CORS-enabled service provider.": "由于 CORS 策略,浏览器无法使用此数据源。请切换到其他数据源或使用启用了 CORS 的服务提供商。", + "This data source cannot be accessed due to browser's security policy. Please switch to another data source or HTTPS-based service provider.": "由于浏览器的安全策略,无法使用此数据源。请切换到其他数据源或使用基于 HTTPS 的服务提供商。", "Hide page scale button": "不显示页面缩放按钮", "Hide pdf to text button": "不显示 PDF 转文本按钮", "With the integration of your cloud drive, WebDAV, and object storage, all your data remains securely in your control": "借助您绑定的网盘,WebDAV 和对象存储实现,您所有的数据都由您掌握", diff --git a/src/components/imageViewer/component.tsx b/src/components/imageViewer/component.tsx index 633d70b1..52061e05 100644 --- a/src/components/imageViewer/component.tsx +++ b/src/components/imageViewer/component.tsx @@ -4,6 +4,7 @@ import { ImageViewerProps, ImageViewerStates } from "./interface"; import { saveAs } from "file-saver"; import { getIframeDoc } from "../../utils/reader/docUtil"; import { getTargetHref } from "../../utils/common"; +declare var window: any; class ImageViewer extends React.Component { constructor(props: ImageViewerProps) { super(props); @@ -49,6 +50,17 @@ class ImageViewer extends React.Component { ) { return; } + if ( + event.target.tagName === "IMG" && + event.target.getAttribute("alt") && + ((event.target.getAttribute("class") && + event.target.getAttribute("class").indexOf("footnote") > -1) || + (event.target.getAttribute("id") && + event.target.getAttribute("id").indexOf("footnote") > -1)) + ) { + window.vex.dialog.alert(event.target.getAttribute("alt")); + return; + } if (event.target.tagName === "IMG" && event.target.src) { href = event.target.src; } diff --git a/src/components/popups/popupAssist/component.tsx b/src/components/popups/popupAssist/component.tsx index a19d8d2a..ac101691 100644 --- a/src/components/popups/popupAssist/component.tsx +++ b/src/components/popups/popupAssist/component.tsx @@ -402,8 +402,8 @@ class PopupAssist extends React.Component { style={{ marginTop: "60px", width: "calc(100% + 20px)", - height: "225px", - paddingBottom: "60px", + height: "210px", + paddingBottom: "0px", paddingLeft: "0px", paddingRight: "20px", }} @@ -459,7 +459,7 @@ class PopupAssist extends React.Component { style={{ marginLeft: "-25px", marginRight: "-25px", - marginBottom: "-25px", + marginBottom: "-20px", padding: "0px 25px", }} > @@ -474,7 +474,7 @@ class PopupAssist extends React.Component { this.handleNewQuestion(item.question); }} > - {this.props.t(item.question)} + {item.emoji + " " + this.props.t(item.question)} ); })} diff --git a/src/components/popups/popupAssist/popupAssist.css b/src/components/popups/popupAssist/popupAssist.css index ef979ea4..3bf34807 100644 --- a/src/components/popups/popupAssist/popupAssist.css +++ b/src/components/popups/popupAssist/popupAssist.css @@ -10,16 +10,20 @@ } .popup-assist-shortcut { margin-right: 20px; - color: #f16464; + line-height: 1.25; opacity: 0.8; cursor: pointer; margin-top: 10px; } +.popup-assist-shortcut:hover { + color: #f16464; + opacity: 1; +} .trans-add-content-box::placeholder { opacity: 0.8; } .popup-message-user { - background-color: #f0f0f0; + background-color: rgba(75, 75, 75, 0.05); border-radius: 8px; padding: 10px; margin-bottom: 10px; diff --git a/src/components/popups/popupRefer/component.tsx b/src/components/popups/popupRefer/component.tsx index 65a5d9e8..968b8630 100644 --- a/src/components/popups/popupRefer/component.tsx +++ b/src/components/popups/popupRefer/component.tsx @@ -53,7 +53,11 @@ class PopupRefer extends React.Component { handleShowMenu = async (node, targetElement, rect) => { if ( (node.textContent.trim() === targetElement.textContent.trim() || - !node.textContent.trim()) && + !node.textContent.trim() || + "[" + node.textContent.trim() + "]" === + targetElement.textContent.trim() || + node.textContent.trim() === + "[" + targetElement.textContent.trim() + "]") && node.parentElement ) { if (node.parentElement.tagName !== "BODY") { diff --git a/src/components/popups/popupTrans/popupTrans.css b/src/components/popups/popupTrans/popupTrans.css index c99ee1d2..870e9b7a 100644 --- a/src/components/popups/popupTrans/popupTrans.css +++ b/src/components/popups/popupTrans/popupTrans.css @@ -83,7 +83,7 @@ float: left; padding-left: 10px; padding-right: 10px; - border-radius: 5px; + border-radius: 8px; margin-right: 10px; text-align: center; line-height: 34px; @@ -107,7 +107,7 @@ height: 34px; padding-left: 10px; padding-right: 10px; - border-radius: 5px; + border-radius: 8px; margin-right: 10px; text-align: center; line-height: 34px; diff --git a/src/constants/settingList.tsx b/src/constants/settingList.tsx index ee6ce605..86e00c36 100644 --- a/src/constants/settingList.tsx +++ b/src/constants/settingList.tsx @@ -382,18 +382,22 @@ export const officialDictList = [ export const sampleQuestion = [ { mode: "ask", + emoji: "📖", question: "Summarize this chapter for me", }, { mode: "ask", + emoji: "📃", question: "What are the key points of this chapter", }, { mode: "chat", + emoji: "📰", question: "Recommend me some books from Colleen Hoover", }, { mode: "chat", + emoji: "🗞️", question: "Explain Stoicism and its principles to me", }, ]; diff --git a/src/containers/settings/syncSetting/component.tsx b/src/containers/settings/syncSetting/component.tsx index d83a1e37..860d8442 100644 --- a/src/containers/settings/syncSetting/component.tsx +++ b/src/containers/settings/syncSetting/component.tsx @@ -14,6 +14,7 @@ import { openExternalUrl, openInBrowser, testConnection, + testCORS, WEBSITE_URL, } from "../../../utils/common"; import { getStorageLocation } from "../../../utils/common"; @@ -388,16 +389,29 @@ class SyncSetting extends React.Component {
{ + if ( + this.props.settingDrive === "webdav" || + this.props.settingDrive === "s3compatible" + ) { + let corsonResult = await testCORS( + this.props.settingDrive === "webdav" + ? this.state.driveConfig.url + : this.state.driveConfig.endpoint + ); + if (!corsonResult) { + return; + } + } if ( this.props.settingDrive === "docker" || this.props.settingDrive === "webdav" || this.props.settingDrive === "s3compatible" ) { - let result = await testConnection( + let connectionResult = await testConnection( this.props.settingDrive, this.state.driveConfig ); - if (!result) { + if (!connectionResult) { return; } } @@ -452,6 +466,19 @@ class SyncSetting extends React.Component { className="voice-add-confirm" style={{ marginRight: "10px" }} onClick={async () => { + if ( + this.props.settingDrive === "webdav" || + this.props.settingDrive === "s3compatible" + ) { + let corsonResult = await testCORS( + this.props.settingDrive === "webdav" + ? this.state.driveConfig.url + : this.state.driveConfig.endpoint + ); + if (!corsonResult) { + return; + } + } testConnection( this.props.settingDrive, this.state.driveConfig diff --git a/src/containers/viewer/component.tsx b/src/containers/viewer/component.tsx index 8830007a..ecc59e74 100644 --- a/src/containers/viewer/component.tsx +++ b/src/containers/viewer/component.tsx @@ -200,6 +200,7 @@ class Viewer extends React.Component { : "no", backgroundColor: ConfigService.getReaderConfig("backgroundColor"), isMobile: "no", + isIndent: ConfigService.getReaderConfig("isIndent"), isStartFromEven: ConfigService.getReaderConfig("isStartFromEven"), password: getPdfPassword(this.props.currentBook), scale: parseFloat(this.state.scale), diff --git a/src/pages/login/component.tsx b/src/pages/login/component.tsx index bf36d507..3dcb3c2a 100644 --- a/src/pages/login/component.tsx +++ b/src/pages/login/component.tsx @@ -771,7 +771,7 @@ class Login extends React.Component { marginTop: "10px", }} > - {this.props.t("Log in")} + {this.props.t("Continue")}
{this.props.t( diff --git a/src/utils/common.ts b/src/utils/common.ts index 7f2de55d..4c74d9b3 100644 --- a/src/utils/common.ts +++ b/src/utils/common.ts @@ -692,6 +692,46 @@ export const testConnection = async (driveName: string, driveConfig: any) => { return await syncUtil.deleteFile("test.txt", "config"); } }; +export const testCORS = async (url: string) => { + if (isElectron) return true; + if (window.location.href.startsWith("https://")) { + if (url.startsWith("http://")) { + toast.error( + i18n.t( + "This data source cannot be accessed due to browser's security policy. Please switch to another data source or HTTPS-based service provider." + ) + ); + return false; + } + } + try { + const response = await fetch(url, { + method: "GET", // 或 'POST' 等 + mode: "cors", // 明确指定跨域模式 + headers: { + "Content-Type": "application/json", // 如果是POST,可添加 + }, + // body: JSON.stringify({ test: 'data' }) // 如果是POST + }); + if (response.ok) { + const data = await response.text(); + console.log("CORS supported:", data); + return true; + } else { + console.log("Request failed but CORS may be supported"); + return true; + } + } catch (error) { + toast.error( + i18n.t( + "This data source cannot be accessed from browser due to CORS policy. Please switch to another data source or CORS-enabled service provider." + ) + ); + console.error("CORS not supported:", error); + return false; + } +}; + export const getTargetHref = (event: any) => { let href = ""; if (!event || !event.target) return href;