diff --git a/README.md b/README.md index 68912aa9..6597e5b5 100644 --- a/README.md +++ b/README.md @@ -108,6 +108,8 @@ Then, select **Docker** as the data source in Koodo Reader. Data source functionality use port 8080, and web version use port 80 by default. If you want to switch to port 8090, just change **`-p 8080:8080`** to **`-p 8090:8080`**. +If you want to use Docker Secrets to set **`SERVER_PASSWORD`**, please refer to [docker-compose-secret.yml](https://github.com/koodo-reader/koodo-reader/blob/master/docker-compose-secret.yml) + ## Screenshot
diff --git a/README_cn.md b/README_cn.md index 449477eb..6e956ff8 100644 --- a/README_cn.md +++ b/README_cn.md @@ -107,6 +107,8 @@ docker run -d \ 数据源功能默认使用 8080 端口,网页版默认使用 80 端口,您也可以使用其他端口。如果您需要使用 8090 端口,则将 **`-p 8080:8080`** 改为 **`-p 8090:8080`** +如果您希望使用 Docker Secrets 来配置服务器密码,请参考[docker-compose-secret.yml](https://github.com/koodo-reader/koodo-reader/blob/master/docker-compose-secret.yml) + ## 截图
diff --git a/docker-compose-secret.yml b/docker-compose-secret.yml index b9565288..672bbdb9 100644 --- a/docker-compose-secret.yml +++ b/docker-compose-secret.yml @@ -10,7 +10,6 @@ services: - "8080:8080" environment: - SERVER_USERNAME=${SERVER_USERNAME:-admin} - - SERVER_PASSWORD=${SERVER_PASSWORD:-securePass123} - SERVER_PASSWORD_FILE=${SERVER_PASSWORD_FILE:-my_secret} - ENABLE_HTTP_SERVER=false volumes: diff --git a/src/assets/lib/kookit-extra-browser.min.js b/src/assets/lib/kookit-extra-browser.min.js index 8c08670b..e1aa42ca 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{isElectron as o}from"react-device-detect";function s(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 a=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,c=["books","notes","bookmarks","plugins","words"],u=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}class h{constructor(e){this.queue=[],this.runningTasks=0,this.totalTasks=0,this.completedTasks=0,this.hasFailedTasks=!1,this.maxConcurrency=e}addTask(e){return s(this,void 0,void 0,(function*(){return this.totalTasks++,new Promise(((t,r)=>{const n=()=>s(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:c,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:u,arrayBufferToBase64:d,generateSHA256Hash:function(e){return s(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):l(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"]};const p={publicUrl:"https://api.960960.xyz",cloudUrl:"https://cloud.960960.xyz",cloudCNUrl:"https://cloud.koodoreader.cn",devUrl:"http://192.168.28.159:8000"},g={callbackUrl:"https://web.koodoreader.com/",dropboxClientId:"vnc67byrssocvy1",pcloudClientId:"pg8ten0B3vH",boxClientId:"ltimecqanmpxoaicn9qw3es6l3sdl1ya",microsoftClientId:"506df58a-29ab-4020-afc5-6f423dc80f35",googleClientId:"1051055003225-ph1f5fvh328dhv7bco5jitlnfhg6ks2t.apps.googleusercontent.com",facebookClientId:"2845583825559500",githubClientId:"Ov23liJVzfvJMMEEZ8v2",adriveClientId:"a128ae7b9c094545af623de61dc0a1ef"},m={google:{clientId:g.googleClientId,scopes:["openid email profile"],usePKCE:!1,responseType:"code",redirectUri:g.callbackUrl,extraParams:{prompt:"consent",scope:"openid email profile"}},microsoft:{clientId:g.microsoftClientId,scopes:["openid","profile","User.Read","offline_access"],usePKCE:!1,responseType:"code",redirectUri:g.callbackUrl,extraParams:{scope:"openid profile User.Read offline_access"}},facebook:{clientId:g.facebookClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:g.callbackUrl,extraParams:{scope:""}},github:{clientId:g.githubClientId,scopes:["user:email"],usePKCE:!1,responseType:"code",redirectUri:g.callbackUrl,extraParams:{scope:"user:email"}},email:{clientId:"",scopes:[],usePKCE:!1,responseType:"code",redirectUri:g.callbackUrl,extraParams:{scope:""}}};var y={CloudConfig:p,ThirdpartyConfig:g,LoginAuthRequest:m,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"},email:{authorizationEndpoint:"",tokenEndpoint:""}},DriveAuthRequest:{dropbox:{clientId:g.dropboxClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:g.callbackUrl,extraParams:{token_access_type:"offline"}},boxnet:{clientId:g.boxClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:g.callbackUrl,extraParams:{grant_type:"authorization_code",box_subject_type:"enterprise",scope:"root_readwrite"}},pcloud:{clientId:g.pcloudClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:g.callbackUrl,extraParams:{grant_type:"authorization_code"}},adrive:{clientId:g.adriveClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:g.callbackUrl,extraParams:{grant_type:"authorization_code",scope:"user:base,file:all:write,file:all:read"}},microsoft:{clientId:g.microsoftClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:g.callbackUrl,extraParams:{scope:"files.readwrite.appfolder offline_access"}},google:{clientId:g.googleClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:g.callbackUrl,extraParams:{prompt:"consent",scope:"https://www.googleapis.com/auth/drive.appdata",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"}}};class v{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.driveId="",this.refreshTokenPromise=null,this.taskQueue=new h(1),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=5){return s(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 s(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 s(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(t){return s(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=>e.name)))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return s(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 s(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 s(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=(()=>s(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 s(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"adrive",redirect_uri:g.callbackUrl,code:e})).data.refresh_token}))}getAuthUrl(){return`https://openapi.alipan.com/oauth/authorize?${new URLSearchParams({response_type:"code",client_id:g.adriveClientId,redirect_uri:g.callbackUrl,grant_type:"authorization_code",scope:"user:base,file:all:write,file:all:read"}).toString()}`}}class b extends v{constructor(e,t){super(e,t)}uploadFile(t,r){return s(this,void 0,void 0,(function*(){return new Promise(((n,i)=>s(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)=>s(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: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"});r(a.data)}catch(e){console.error("Error downloading file:",e),r(!1)}}))))}}class w{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new h(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return s(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 s(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(t){return s(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=>e.name)))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return s(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 s(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=(()=>s(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 s(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"boxnet",redirect_uri:g.callbackUrl,code:e})).data.refresh_token}))}getAuthUrl(){return`https://account.box.com/api/oauth2/authorize?${new URLSearchParams({response_type:"code",client_id:g.boxClientId,redirect_uri:g.callbackUrl,grant_type:"authorization_code",box_subject_type:"enterprise",scope:"root_readwrite"}).toString()}`}}class k extends w{constructor(e,t){super(e,t)}uploadFile(t,r){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(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 s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(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 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"});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 S{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new h(3)}retryOperation(e,t=3){return s(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(t){return s(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=>e.name)))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return s(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 s(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=(()=>s(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 s(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dropbox",redirect_uri:g.callbackUrl,code:e})).data.refresh_token}))}getAuthUrl(){return`https://www.dropbox.com/oauth2/authorize?response_type=code&token_access_type=offline&client_id=${g.dropboxClientId}&redirect_uri=${g.callbackUrl}`}}class E extends S{constructor(e,t){super(e,t)}uploadFile(t,r){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(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 s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){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"});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 x{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new h(3)}retryOperation(e,t=3){return s(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 s(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&spaces=appDataFolder&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 s(this,void 0,void 0,(function*(){const r=yield this.refreshToken(),n=yield this.getFolderId(t);if(n)return n;const i={name:t,mimeType:"application/vnd.google-apps.folder",parents:["appDataFolder"]};try{return(yield e.post("https://www.googleapis.com/drive/v3/files",i,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}catch(e){throw console.error("Error occurred during folder creation:",e),e}}))}getFolderId(t){return s(this,void 0,void 0,(function*(){const r=yield this.refreshToken(),n=`https://www.googleapis.com/drive/v3/files?q=name='${t}'+and+mimeType='application/vnd.google-apps.folder'+and+'appDataFolder'+in+parents&spaces=appDataFolder&fields=files(id,name)`;try{const t=(yield e.get(n,{headers:{Authorization:`Bearer ${r}`}})).data.files;return t.length>0?t[0].id:null}catch(e){throw console.error("Error occurred during fetching folder ID:",e),e}}))}listFiles(t){return s(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&spaces=appDataFolder&fields=nextPageToken,files(id,name)&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=>e.name)))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQue(e)}))))))}))}deleteFileWithoutQue(t){return s(this,void 0,void 0,(function*(){const r=t.split("/")[1],n=t.split("/")[0],i=yield this.getFolderId(n),o=yield this.refreshToken(),s=yield this.getFileId(r,i);if(""===s)return console.error("File not found:",r),!0;try{const t=yield e.delete(`https://www.googleapis.com/drive/v3/files/${s}`,{headers:{Authorization:`Bearer ${o}`}});return console.error("File deleted:",t),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return s(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=(()=>s(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 s(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"google",redirect_uri:g.callbackUrl,code:e})).data.refresh_token}))}getAuthUrl(){return`https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${g.callbackUrl}&prompt=consent&response_type=code&client_id=${g.googleClientId}&scope=https://www.googleapis.com/auth/drive.appdata&access_type=offline`}}class A extends x{constructor(e,t){super(e,t)}uploadFile(t,r){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(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(),c=a(s||""),u=r.split("/")[0],d=yield this.checkFolder(u),l=yield this.getFileId(i||"",d);const h={mimeType:c,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 s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){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"});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 s(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 T{constructor(e){this.folderCreationLocks=new Map,this.config=e,this.taskQueue=new h(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return s(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 s(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 s(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 s(this,void 0,void 0,(function*(){const r=`${e.nodeId}_${t}`;if(this.folderCreationLocks.has(r))return yield this.folderCreationLocks.get(r);const n=(()=>s(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 s(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=>e.name));return r}catch(e){return console.error("Error listing MEGA files:",e),[]}}))}deleteFile(e){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(e){return s(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 C extends T{constructor(e){super(e)}uploadFile(e,t){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(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 s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(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));if(!i)return!0;return(yield i.downloadBuffer()).buffer}catch(e){return console.error("Error occurred during MEGA file download:",e),!1}}))))))}))}}class R{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new h(3)}retryOperation(e,t=3){return s(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(t){return s(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=[],i=`https://graph.microsoft.com/v1.0/me/drive/special/approot:/${t}:/children`;for(;i;){const t=yield e.get(i,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(t.status>=300)break;const o=t.data.value||[];n=n.concat(o),i=t.data["@odata.nextLink"]||""}return[...new Set(n.map((e=>e.name)))]}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return s(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield e.delete(`https://graph.microsoft.com/v1.0/me/drive/special/approot:/${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 s(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=(()=>s(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 s(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"microsoft",redirect_uri:g.callbackUrl,code:e})).data.refresh_token}))}getAuthUrl(){return`https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=${g.microsoftClientId}&scope=files.readwrite.appfolder offline_access&response_type=code&redirect_uri=${g.callbackUrl}`}}class O extends R{constructor(e,t){super(e,t)}uploadFile(t,r){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(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="https://graph.microsoft.com/v1.0/me/drive/special/approot:/"+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 s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=`https://graph.microsoft.com/v1.0/me/drive/special/approot:/${t}:/content`,i=yield e.get(n,{responseType:"arraybuffer",headers:{Authorization:"Bearer "+r},maxContentLength:1/0,maxBodyLength:1/0});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 P{downloadFile(e,t){return s(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}uploadFile(e,t){return s(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}listFiles(e){return s(this,void 0,void 0,(function*(){return new Promise((e=>{e([])}))}))}authToken(e){return s(this,void 0,void 0,(function*(){return new Promise((e=>{e("")}))}))}getAuthUrl(){return""}}class _{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.taskQueue=new h(3)}retryOperation(e,t=5){return s(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 s(this,void 0,void 0,(function*(){try{return 0===(yield e.get("https://api.pcloud.com/listfolder",{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error checking folder:",e),!1}}))}createFolder(t,r){return s(this,void 0,void 0,(function*(){try{return 0===(yield e.get("https://api.pcloud.com/createfolderifnotexists",{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error creating folder:",e),!1}}))}listFiles(t){return s(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield e.get("https://api.pcloud.com/listfolder",{params:{access_token:r,path:"/"+t,recursive:0}});return 0!==n.data.result?[]:n.data.metadata.contents.map((e=>e.name))}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return s(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield e.get("https://api.pcloud.com/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 s(this,void 0,void 0,(function*(){return this.config.refresh_token}))}authToken(e){return s(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"pcloud",redirect_uri:g.callbackUrl,code:e})).data.access_token}))}getAuthUrl(){return`https://my.pcloud.com/oauth2/authorize?client_id=${g.pcloudClientId}&response_type=code&redirect_uri=${g.callbackUrl}`}}class M extends _{constructor(e,t){super(e,t)}uploadFile(t,r){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(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("https://api.pcloud.com/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 s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield e.get("https://api.pcloud.com/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});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 I=e=>{let t=e.httpHandler;return{setHttpHandler(e){t=e},httpHandler:()=>t,updateHttpClientConfig(e,r){t.updateHttpClientConfig(e,r)},httpHandlerConfigs:()=>t.httpHandlerConfigs()}};var N,F,$,U,L;!function(e){e.HEADER="header",e.QUERY="query"}(N||(N={})),function(e){e.HEADER="header",e.QUERY="query"}(F||(F={})),function(e){e.HTTP="http",e.HTTPS="https"}($||($={})),function(e){e.MD5="md5",e.CRC32="crc32",e.CRC32C="crc32c",e.SHA1="sha1",e.SHA256="sha256"}(U||(U={})),function(e){e[e.HEADER=0]="HEADER",e[e.TRAILER=1]="TRAILER"}(L||(L={}));const B="__smithy_context";var D,j;!function(e){e.PROFILE="profile",e.SSO_SESSION="sso-session",e.SERVICES="services"}(D||(D={})),function(e){e.HTTP_0_9="http/0.9",e.HTTP_1_0="http/1.0",e.TDS_8_0="tds/8.0"}(j||(j={}));class z{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 z({...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 z.clone(this)}}class q{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 H={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0},W=e=>({applyToStack:t=>{t.add(function(e){return t=>async r=>{const{request:n}=r;return z.isInstance(n)&&n.body&&"node"===e.runtime&&"FetchHttpHandler"!==e.requestHandler?.constructor?.name&&(n.headers={...n.headers,Expect:"100-continue"}),t({...r,request:n})}}(e),H)}}),K="WHEN_SUPPORTED",V=K,Q=K;var G,J;!function(e){e.MD5="MD5",e.CRC32="CRC32",e.CRC32C="CRC32C",e.SHA1="SHA1",e.SHA256="SHA256"}(G||(G={})),function(e){e.HEADER="header",e.TRAILER="trailer"}(J||(J={}));const X=G.MD5,Z=G.CRC32;var Y;function ee(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"}(Y||(Y={}));const te=e=>q.isInstance(e)?e.headers?.date??e.headers?.Date:void 0,re=e=>new Date(Date.now()+e),ne=(e,t)=>{const r=Date.parse(e);return((e,t)=>Math.abs(re(t).getTime()-e)>=3e5)(r,t)?r-Date.now():t},ie=(e,t)=>{if(!t)throw new Error(`Property \`${e}\` is not resolved for AWS SDK SigV4Auth`);return t},oe=async e=>{const t=ie("context",e.context),r=ie("config",e.config),n=t.endpointV2?.properties?.authSchemes?.[0],i=ie("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 se{async sign(e,t,r){if(!z.isInstance(e))throw new Error("The request is not an instance of `HttpRequest` and cannot be signed");const n=await oe(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:re(i.systemClockOffset),signingRegion:s,signingService:a})}errorHandler(e){return t=>{const r=t.ServerTime??te(t.$response);if(r){const n=ie("config",e.config),i=n.systemClockOffset;n.systemClockOffset=ne(r,n.systemClockOffset);n.systemClockOffset!==i&&t.$metadata&&(t.$metadata.clockSkewCorrected=!0)}throw t}}successHandler(e,t){const r=te(e);if(r){const e=ie("config",t.config);e.systemClockOffset=ne(r,e.systemClockOffset)}}}class ae extends se{async sign(e,t,r){if(!z.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 oe(r),c=(await(n.sigv4aSigningRegionSet?.())??s??[o]).join(",");return await i.sign(e,{signingDate:re(n.systemClockOffset),signingRegion:c,signingService:a})}}const ce=e=>e[B]||(e[B]={}),ue=e=>{if("function"==typeof e)return e;const t=Promise.resolve(e);return()=>t};const de=(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=ce(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)},le={step:"serialize",tags:["HTTP_AUTH_SCHEME"],name:"httpAuthSchemeMiddleware",override:!0,relation:"before",toMiddleware:"endpointV2Middleware"},he={name:"deserializerMiddleware",step:"deserialize",tags:["DESERIALIZER"],override:!0},fe={name:"serializerMiddleware",step:"serialize",tags:["SERIALIZER"],override:!0};function pe(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),he),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),fe)}}}const ge=e=>e=>{throw e},me=(e,t)=>{},ye={step:"finalizeRequest",tags:["HTTP_SIGNING"],name:"httpSigningMiddleware",aliases:["apiKeyMiddleware","tokenMiddleware","awsAuthMiddleware"],override:!0,relation:"after",toMiddleware:"retryMiddleware"},ve=e=>({applyToStack:e=>{e.addRelativeTo(((e,t)=>async r=>{if(!z.isInstance(r.request))return e(r);const n=ce(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||ge)(i));return(s.successHandler||me)(a.response,i),a}),ye)}}),be=e=>{if("function"==typeof e)return e;const t=Promise.resolve(e);return()=>t},we={},ke=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);we[r]=e,ke[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;we[r]=n,ke[n]=r}for(let e=0;e<10;e++){we[e.toString(10)]=e+52;const t=e.toString(10),r=e+52;we[t]=r,ke[r]=t}we["+"]=62,ke[62]="+",we["/"]=63,ke[63]="/";const Se=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)},Ee=e=>(new TextEncoder).encode(e),xe=e=>"string"==typeof e?Ee(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e),Ae=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 Te(e){let t;t="string"==typeof e?Ee(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 Ce extends Uint8Array{static fromString(e,t="utf-8"){if("string"==typeof e)return function(e,t){return"base64"===t?Ce.mutate(Se(e)):Ce.mutate(Ee(e))}(e,t);throw new Error(`Unsupported conversion from ${typeof e} to Uint8ArrayBlobAdapter.`)}static mutate(e){return Object.setPrototypeOf(e,Ce.prototype),e}transformToString(e="utf-8"){return function(e,t="utf-8"){return"base64"===t?Te(e):Ae(e)}(this,e)}}const Re=(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`)}})},Oe=e=>encodeURIComponent(e).replace(/[!'()*]/g,Pe),Pe=e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`;function _e(e,t){return new Request(e,t)}function Me(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 Ie={supported:void 0};class Ne{static create(e){return"function"==typeof e?.handle?e:new Ne(e)}constructor(e){"function"==typeof e?this.configProvider=e().then((e=>e||{})):(this.config=e??{},this.configProvider=Promise.resolve(this.config)),void 0===Ie.supported&&(Ie.supported=Boolean("undefined"!=typeof Request&&"keepalive"in _e("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=Oe(r),Array.isArray(n))for(let e=0,i=n.length;e{};const p=_e(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 q({headers:r,reason:e.statusText,statusCode:e.status,body:e.body})}:e.blob().then((t=>({response:new q({headers:r,reason:e.statusText,statusCode:e.status,body:t})})))})),Me(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 Fe=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 $e={},Ue={};for(let e=0;e<256;e++){let t=e.toString(16).toLowerCase();1===t.length&&(t=`0${t}`),$e[e]=t,Ue[t]=e}function Le(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),je="The stream has already been transformed.",ze=e=>{if(!qe(e)&&!De(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(je);return t=!0,await Fe(e)};return Object.assign(e,{transformToByteArray:r,transformToString:async e=>{const t=await r();if("base64"===e)return Te(t);if("hex"===e)return Be(t);if(void 0===e||"utf8"===e||"utf-8"===e)return Ae(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(je);if(t=!0,qe(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(De(e))return e;throw new Error(`Cannot transform payload to web stream, got ${e}`)}})},qe=e=>"function"==typeof Blob&&e instanceof Blob;const He="function"==typeof ReadableStream?ReadableStream:function(){};class We extends He{}const Ke=({expectedChecksum:e,checksum:t,source:r,checksumSourceLocation:n,base64Encoder:i})=>{if(!De(r))throw new Error(`@smithy/util-stream: unsupported source type ${r?.constructor?.name??r} in ChecksumStream.`);const o=i??Te;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,We.prototype),a},Ve=async(e=new Uint8Array,t)=>{if(e instanceof Uint8Array)return Ce.mutate(e);if(!e)return Ce.mutate(new Uint8Array);const r=t.streamCollector(e);return Ce.mutate(await r)};function Qe(e){return encodeURIComponent(e).replace(/[!'()*]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function Ge(e,t){return new Je(e,t)}class Je{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 z({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=>Qe(e))).join("/"):Qe(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 Xe{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 Ze=(Ye=3e5,e=>et(e)&&e.expiration.getTime()-Date.now()void 0!==e.expiration,tt="X-Amz-Date",rt="X-Amz-Signature",nt="X-Amz-Security-Token",it="authorization",ot=tt.toLowerCase(),st=[it,ot,"date"],at=rt.toLowerCase(),ct="x-amz-content-sha256",ut=nt.toLowerCase(),dt={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},lt=/^proxy-/,ht=/^sec-/,ft="AWS4-HMAC-SHA256",pt="AWS4-HMAC-SHA256-PAYLOAD",gt="aws4_request",mt={},yt=[],vt=(e,t,r)=>`${e}/${t}/${r}/${gt}`,bt=(e,t,r)=>{const n=new e(t);return n.update(xe(r)),n.digest()},wt=({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 dt||t?.has(o)||lt.test(o)||ht.test(o))&&(!r||r&&!r.has(o))||(n[o]=e[i].trim().replace(/\s+/g," "))}return n},kt=e=>"function"==typeof ArrayBuffer&&e instanceof ArrayBuffer||"[object ArrayBuffer]"===Object.prototype.toString.call(e),St=async({headers:e,body:t},r)=>{for(const t of Object.keys(e))if(t.toLowerCase()===ct)return e[t];if(null==t)return"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";if("string"==typeof t||ArrayBuffer.isView(t)||kt(t)){const e=new r;return e.update(xe(t)),Be(await e.digest())}return"UNSIGNED-PAYLOAD"};class Et{format(e){const t=[];for(const r of Object.keys(e)){const n=Ee(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=Ee(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(Tt.fromNumber(e.value.valueOf()).bytes,1),u;case"uuid":if(!At.test(e.value))throw new Error(`Invalid UUID received: ${e.value}`);const d=new Uint8Array(17);return d[0]=9,d.set(Le(e.value.replace(/\-/g,"")),1),d}}}var xt;!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"}(xt||(xt={}));const At=/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;class Tt{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&&Ct(t),new Tt(t)}valueOf(){const e=this.bytes.slice(0),t=128&e[0];return t&&Ct(e),parseInt(Be(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}}function Ct(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,0===e[t]);t--);}const Rt=e=>{e=z.clone(e);for(const t of Object.keys(e.headers))st.indexOf(t.toLowerCase())>-1&&delete e.headers[t];return e},Ot=e=>"number"==typeof e?new Date(1e3*e):"string"==typeof e?Number(e)?new Date(1e3*Number(e)):new Date(e):e;class Pt{constructor({applyChecksum:e,credentials:t,region:r,service:n,sha256:i,uriEscapePath:o=!0}){this.headerFormatter=new Et,this.service=n,this.sha256=i,this.uriEscapePath=o,this.applyChecksum="boolean"!=typeof e||e,this.regionProvider=ue(r),this.credentialProvider=ue(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}=_t(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=vt(f,l,u??this.service),g=((e,t={})=>{const{headers:r,query:n={}}=z.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}})(Rt(e),{unhoistableHeaders:o,hoistableHeaders:a});d.sessionToken&&(g.query[nt]=d.sessionToken),g.query["X-Amz-Algorithm"]=ft,g.query["X-Amz-Credential"]=`${d.accessKeyId}/${p}`,g.query[tt]=h,g.query["X-Amz-Expires"]=n.toString(10);const m=wt(g,i,s);return g.query["X-Amz-SignedHeaders"]=Mt(m),g.query[rt]=await this.getSignature(h,p,this.getSigningKey(d,l,f,u),this.createCanonicalRequest(g,m,await St(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}=_t(r),u=vt(a,s,o??this.service),d=await St({headers:{},body:t},this.sha256),l=new this.sha256;l.update(e);const h=Be(await l.digest()),f=[pt,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}=_t(t),a=new this.sha256(await this.getSigningKey(i,o,s,n));return a.update(xe(e)),Be(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=Rt(e),{longDate:u,shortDate:d}=_t(t),l=vt(d,a,o??this.service);c.headers[ot]=u,s.sessionToken&&(c.headers[ut]=s.sessionToken);const h=await St(c,this.sha256);!((e,t)=>{e=e.toLowerCase();for(const r of Object.keys(t))if(e===r.toLowerCase())return!0;return!1})(ct,c.headers)&&this.applyChecksum&&(c.headers[ct]=h);const f=wt(c,n,r),p=await this.getSignature(u,l,this.getSigningKey(s,a,d,o),this.createCanonicalRequest(c,f,h));return c.headers[it]=`${ft} Credential=${s.accessKeyId}/${l}, SignedHeaders=${Mt(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()===at)continue;const i=Oe(n);t.push(i);const o=e[n];"string"==typeof o?r[i]=`${i}=${Oe(o)}`:Array.isArray(o)&&(r[i]=o.slice(0).reduce(((e,t)=>e.concat([`${i}=${Oe(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(xe(r));const i=await n.digest();return`${ft}\n${e}\n${t}\n${Be(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 Oe(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(xe(i)),Be(await o.digest())}getSigningKey(e,t,r,n){return(async(e,t,r,n,i)=>{const o=`${r}:${n}:${i}:${Be(await bt(e,t.secretAccessKey,t.accessKeyId))}:${t.sessionToken}`;if(o in mt)return mt[o];for(yt.push(o);yt.length>50;)delete mt[yt.shift()];let s=`AWS4${t.secretAccessKey}`;for(const t of[r,n,i,gt])s=await bt(e,s,t);return mt[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 _t=e=>{const t=(r=e,Ot(r).toISOString().replace(/\.\d{3}Z$/,"Z")).replace(/[\-:]/g,"");var r;return{longDate:t,shortDate:t.slice(0,8)}},Mt=e=>Object.keys(e).sort().join(";"),It=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,Ze,et)),t||(t=e.credentialDefaultProvider?be(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?be(e.signer):e.regionInfoProvider?()=>be(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||Pt)(c)})):async r=>{const i=(r=Object.assign({},{name:"sigv4",signingName:e.signingName||e.defaultSigningName,signingRegion:await be(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||Pt)(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}},Nt=(e,t)=>{const r=[];if(e&&r.push(e),t)for(const e of t)r.push(e);return r},Ft=(e,t)=>`${e||"anonymous"}${t&&t.length>0?` (a.k.a. ${t.join(",")})`:""}`,$t=()=>{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 Nt(t.name,t.aliases))s[e]=t;n.push(t)})),t.forEach((e=>{const t={...e,before:[],after:[]};for(const e of Nt(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 ${Ft(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)=>Ut[t.step]-Ut[e.step]||Lt[t.priority||"normal"]-Lt[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=Nt(i,s);if(c.length>0){if(c.some((e=>n.has(e)))){if(!o)throw new Error(`Duplicate middleware name '${Ft(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(`"${Ft(n.name,n.aliases)}" middleware with ${n.priority} priority in ${n.step} step cannot be overridden by "${Ft(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=Nt(i,s);if(c.length>0){if(c.some((e=>n.has(e)))){if(!o)throw new Error(`Duplicate middleware name '${Ft(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(`"${Ft(n.name,n.aliases)}" middleware ${n.relation} "${n.toMiddleware}" middleware cannot be overridden by "${Ft(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($t()),use:e=>{e.applyToStack(a)},remove:r=>"string"==typeof r?(r=>{let i=!1;const o=e=>{const t=Nt(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 Nt(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=Nt(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($t());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 Ft(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},Ut={initialize:5,serialize:4,build:3,finalizeRequest:2,deserialize:1},Lt={high:3,normal:2,low:1};class Bt{constructor(e){this.config=e,this.middlewareStack=$t()}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 Dt{constructor(){this.middlewareStack=$t()}static classBuilder(){return new jt}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,[B]:{commandInstance:this,...c},...u},{requestHandler:p}=t;return l.resolve((e=>p.handle(e.request,r||{})),f)}}class jt{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 Dt{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 zt="***SensitiveInformation***",qt=e=>{switch(e){case"true":return!0;case"false":return!1;default:throw new Error(`Unable to parse boolean value "${e}"`)}},Ht=Math.ceil(2**127*(2-2**-23)),Wt=e=>{const t=(e=>{if(null!=e){if("string"==typeof e){const t=parseFloat(e);if(!Number.isNaN(t))return String(t)!==String(e)&&ar.warn(sr(`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)>Ht)throw new TypeError(`Expected 32-bit float, got ${e}`);return t},Kt=e=>{if(null!=e){if(Number.isInteger(e)&&!Number.isNaN(e))return e;throw new TypeError(`Expected integer, got ${typeof e}: ${e}`)}},Vt=e=>Jt(e,32),Qt=e=>Jt(e,16),Gt=e=>Jt(e,8),Jt=(e,t)=>{const r=Kt(e);if(void 0!==r&&Xt(r,t)!==r)throw new TypeError(`Expected ${t}-bit integer, got ${e}`);return r},Xt=(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]}},Zt=(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},Yt=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}`)},er=e=>{if(null!=e){if("string"==typeof e)return e;if(["boolean","number","bigint"].includes(typeof e))return ar.warn(sr(`Expected string, got ${typeof e}: ${e}`)),String(e);throw new TypeError(`Expected string, got ${typeof e}: ${e}`)}},tr=/(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g,rr=e=>{const t=e.match(tr);if(null===t||t[0].length!==e.length)throw new TypeError("Expected real number, got implicit NaN");return parseFloat(e)},nr=e=>Kt("string"==typeof e?rr(e):e),ir=e=>Vt("string"==typeof e?rr(e):e),or=e=>Qt("string"==typeof e?rr(e):e),sr=e=>String(new TypeError(e).stack||e).split("\n").slice(0,5).filter((e=>!e.includes("stackTraceWarning"))).join("\n"),ar={warn:console.warn},cr=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],ur=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function dr(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`${cr[n]}, ${i<10?`0${i}`:`${i}`} ${ur[r]} ${t} ${c}:${u}:${d} GMT`}const lr=new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(([-+]\d{2}\:\d{2})|[zZ])$/),hr=e=>{if(null==e)return;if("string"!=typeof e)throw new TypeError("RFC-3339 date-times must be expressed as strings");const t=lr.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=or(Cr(n)),h=xr(i,"month",1,12),f=xr(o,"day",1,31),p=yr(l,h,f,{hours:s,minutes:a,seconds:c,fractionalMilliseconds:u});return"Z"!=d.toUpperCase()&&p.setTime(p.getTime()-Tr(d)),p},fr=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$/),pr=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$/),gr=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})$/),mr=e=>{if(null==e)return;if("string"!=typeof e)throw new TypeError("RFC-7231 date-times must be expressed as strings");let t=fr.exec(e);if(t){const[e,r,n,i,o,s,a,c]=t;return yr(or(Cr(i)),wr(n),xr(r,"day",1,31),{hours:o,minutes:s,seconds:a,fractionalMilliseconds:c})}if(t=pr.exec(e),t){const[e,r,n,i,o,s,a,c]=t;return br(yr(vr(i),wr(n),xr(r,"day",1,31),{hours:o,minutes:s,seconds:a,fractionalMilliseconds:c}))}if(t=gr.exec(e),t){const[e,r,n,i,o,s,a,c]=t;return yr(or(Cr(c)),wr(r),xr(n.trimLeft(),"day",1,31),{hours:i,minutes:o,seconds:s,fractionalMilliseconds:a})}throw new TypeError("Invalid RFC-7231 date-time value")},yr=(e,t,r,n)=>{const i=t-1;return Sr(e,i,r),new Date(Date.UTC(e,i,r,xr(n.hours,"hour",0,23),xr(n.minutes,"minute",0,59),xr(n.seconds,"seconds",0,60),Ar(n.fractionalMilliseconds)))},vr=e=>{const t=(new Date).getUTCFullYear(),r=100*Math.floor(t/100)+or(Cr(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,wr=e=>{const t=ur.indexOf(e);if(t<0)throw new TypeError(`Invalid month: ${e}`);return t+1},kr=[31,28,31,30,31,30,31,31,30,31,30,31],Sr=(e,t,r)=>{let n=kr[t];if(1===t&&Er(e)&&(n=29),r>n)throw new TypeError(`Invalid day for ${ur[t]} in ${e}: ${r}`)},Er=e=>e%4==0&&(e%100!=0||e%400==0),xr=(e,t,r,n)=>{const i=(e=>Gt("string"==typeof e?rr(e):e))(Cr(e));if(in)throw new TypeError(`${t} must be between ${r} and ${n}, inclusive`);return i},Ar=e=>null==e?0:1e3*(e=>Wt("string"==typeof e?rr(e):e))("0."+e),Tr=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},Cr=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},Pr=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"]}),_r=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{}}},Mr=e=>{const t=[];for(const r in U){const n=U[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}}},Ir=e=>{const t={};return e.checksumAlgorithms().forEach((e=>{t[e.algorithmId()]=e.checksumConstructor()})),t},Nr=e=>{let t=e.retryStrategy;return{setRetryStrategy(e){t=e},retryStrategy:()=>t}},Fr=e=>{const t={};return t.retryStrategy=e.retryStrategy(),t},$r=e=>({...Mr(e),...Nr(e)}),Ur=e=>({...Ir(e),...Fr(e)}),Lr=e=>Array.isArray(e)?e:[e],Br=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]=Br(e[r]));return e},Dr=e=>null!=e,jr=function(){const e=Object.getPrototypeOf(this).constructor,t=new(Function.bind.apply(String,[null,...arguments]));return Object.setPrototypeOf(t,e.prototype),t};jr.prototype=Object.create(String.prototype,{constructor:{value:jr,enumerable:!1,writable:!0,configurable:!0}}),Object.setPrototypeOf(jr,String);class zr{trace(){}debug(){}info(){}warn(){}error(){}}function qr(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,Hr(n,i,o);o=t}for(const e of Object.keys(o))Array.isArray(o[e])?Wr(n,null,o,e):n[e]=o[e];return n}const Hr=(e,t,r)=>qr(e,Object.entries(r).reduce(((e,[r,n])=>(Array.isArray(n)?e[r]=n:e[r]="function"==typeof n?[t,n()]:[t,n],e)),{})),Wr=(e,t,r,n)=>{if(null!==t){let i=r[n];"function"==typeof i&&(i=[,i]);const[o=Kr,s=Vr,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)}},Kr=e=>null!=e,Vr=e=>e;function Qr(e){return(e.includes(",")||e.includes('"'))&&(e=`"${e.replace(/"/g,'\\"')}"`),e}function Gr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Jr={},Xr={};!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 dn("InvalidXml","XML declaration allowed only at the start of the document.",hn(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function rn(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}Jr.validate=function(e,t){t=Object.assign({},Yr,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,!Zr.isName(o)){let t;return t=0===u.trim().length?"Invalid space after '<'.":"Tag '"+u+"' is an invalid name.",dn("InvalidTag",t,hn(e,s))}const d=sn(e,s);if(!1===d)return dn("InvalidAttr","Attributes for '"+u+"' have open quote.",hn(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=cn(l,t);if(!0!==i)return dn(i.err.code,i.err.msg,hn(e,r+i.err.line));n=!0}else if(c){if(!d.tagClosed)return dn("InvalidTag","Closing tag '"+u+"' doesn't have proper closing.",hn(e,s));if(l.trim().length>0)return dn("InvalidTag","Closing tag '"+u+"' can't have attributes or invalid starting.",hn(e,a));if(0===r.length)return dn("InvalidTag","Closing tag '"+u+"' has not been opened.",hn(e,a));{const t=r.pop();if(u!==t.tagName){let r=hn(e,t.tagStartPos);return dn("InvalidTag","Expected closing tag '"+t.tagName+"' (opened in line "+r.line+", col "+r.col+") instead of closing tag '"+u+"'.",hn(e,a))}0==r.length&&(i=!0)}}else{const o=cn(l,t);if(!0!==o)return dn(o.err.code,o.err.msg,hn(e,s-l.length+o.err.line));if(!0===i)return dn("InvalidXml","Multiple possible root nodes found.",hn(e,s));-1!==t.unpairedTags.indexOf(u)||r.push({tagName:u,tagStartPos:a}),n=!0}for(s++;s0)||dn("InvalidXml","Invalid '"+JSON.stringify(r.map((e=>e.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):dn("InvalidXml","Start tag expected.",1)};const nn='"',on="'";function sn(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 an=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function cn(e,t){const r=Zr.getAllMatches(e,an),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}};pn.buildOptions=function(e){return Object.assign({},gn,e)},pn.defaultOptions=gn;var mn=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){"__proto__"===e&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){"__proto__"===e.tagname&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}};const yn=Xr;function vn(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&&wn(e,t))t+=7,[entityName,val,t]=vn(e,t+1),-1===val.indexOf("&")&&(r[xn(entityName)]={regx:RegExp(`&${entityName};`,"g"),val:val});else if(i&&kn(e,t))t+=8;else if(i&&Sn(e,t))t+=8;else if(i&&En(e,t))t+=9;else{if(!bn)throw new Error("Invalid DOCTYPE");o=!0}n++,s=""}if(0!==n)throw new Error("Unclosed DOCTYPE")}return{entities:r,i:t}};const Tn=/^[-+]?0x[a-fA-F0-9]+$/,Cn=/^([\-\+])?(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 Rn={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};const On=Xr,Pn=mn,_n=An,Mn=function(e,t={}){if(t=Object.assign({},Rn,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&&Tn.test(r))return Number.parseInt(r,16);{const n=Cn.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 In(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 Kn(e,this.options.parseTagValue,this.options.numberParseOptions);return e.trim()===e?Kn(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function Fn(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 $n=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function Un(e,t,r){if(!this.options.ignoreAttributes&&"string"==typeof e){const r=On.getAllMatches(e,$n),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=Hn(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 Pn(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=qn(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=_n(e,o);this.docTypeEntities=t.entities,o=t.i}else if("!["===e.substr(o+1,2)){const t=qn(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=Hn(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 Pn(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 Pn(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 Pn(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 Bn(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 Dn=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 jn(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 zn(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 qn(e,t,r,n){const i=e.indexOf(t,r);if(-1===i)throw new Error(n);return i+t.length-1}function Hn(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=qn(e,"?>",r+1,"StopNode is not closed.")}else if("!--"===e.substr(r+1,3)){r=qn(e,"--\x3e",r+3,"StopNode is not closed.")}else if("!["===e.substr(r+1,2)){r=qn(e,"]]>",r,"StopNode is not closed.")-2}else{const n=Hn(e,r,">");if(n){(n&&n.tagName)===t&&"/"!==n.tagExp[n.tagExp.length-1]&&i++,r=n.closeIndex}}}function Kn(e,t,r){if(t&&"string"==typeof e){const t=e.trim();return"true"===t||"false"!==t&&Mn(e,r)}return On.isExist(e)?e:""}var Vn=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=In,this.parseXml=Ln,this.parseTextData=Nn,this.resolveNameSpace=Fn,this.buildAttributesMap=Un,this.isItStopNode=zn,this.replaceEntitiesValue=Dn,this.readStopNodeData=Wn,this.saveTextToParentTag=jn,this.addChild=Bn}},Qn={};function Gn(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 Jn(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=si(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}${si(a[":@"],t)}`,h=ii(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 oi(e){const t=Object.keys(e);for(let r=0;r0&&t.processEntities)for(let r=0;r0&&(r="\n"),ii(e,t,"",r)},di={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 li(e){this.options=Object.assign({},di,e),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=pi),this.processTextOrObjNode=hi,this.options.format?(this.indentate=fi,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function hi(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 fi(e){return this.options.indentBy.repeat(e)}function pi(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}li.prototype.build=function(e){return this.options.preserveOrder?ui(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0).val)},li.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}},li.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)=>Ve(e,t).then((e=>t.utf8Encoder(e))))(e,t).then((e=>{if(e.length){const t=new gi.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]),Br(o)}return{}})),yi=async(e,t)=>{const r=await mi(e,t);return r.Error&&(r.Error.message=r.Error.message??r.Error.Message),r},vi=[G.CRC32,G.CRC32C,G.SHA1,G.SHA256],bi=[G.SHA256,G.SHA1,G.CRC32,G.CRC32C],wi=e=>e===G.MD5?"content-md5":`x-amz-checksum-${e.toLowerCase()}`,ki=e=>void 0!==e&&"string"!=typeof e&&!ArrayBuffer.isView(e)&&!kt(e);function Si(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 Ei(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 Ai(e){return e instanceof Uint8Array?e:"string"==typeof e?xi(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e)}function Ti(e){return"string"==typeof e?0===e.length:0===e.byteLength}function Ci(e){return new Uint8Array([(4278190080&e)>>24,(16711680&e)>>16,(65280&e)>>8,255&e])}function Ri(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^_i[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}(),_i=Ri([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 Mi(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 Ii(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^$i[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}(),$i=Ri([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 Ui=(e,t)=>({[G.MD5]:t.md5,[G.CRC32]:Ni,[G.CRC32C]:Oi,[G.SHA1]:t.sha1,[G.SHA256]:t.sha256}[e]),Li=(e,t)=>{const r=new e;return r.update(xe(t||"")),r.digest()},Bi={name:"flexibleChecksumsMiddleware",step:"build",tags:["BODY_CHECKSUM"],override:!0},Di=(e,t)=>(r,n)=>async i=>{if(!z.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?Z:X;if(!r||!e[r])return t?i:void 0;const o=e[r];if(!vi.includes(o))throw new Error(`The checksum algorithm "${o}" is not supported by the client. Select one of ${vi}.`);return o})(s,{requestChecksumRequired:l,requestAlgorithmMember:h},!!n.isS3ExpressBucket);let p=a,g=c;if(f){switch(f){case G.CRC32:ee(n,"FLEXIBLE_CHECKSUMS_REQ_CRC32","U");break;case G.CRC32C:ee(n,"FLEXIBLE_CHECKSUMS_REQ_CRC32C","V");break;case G.SHA1:ee(n,"FLEXIBLE_CHECKSUMS_REQ_SHA1","X");break;case G.SHA256:ee(n,"FLEXIBLE_CHECKSUMS_REQ_SHA256","Y")}const t=wi(f),r=Ui(f,e);if(ki(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 Li(r,a);g={...c,[t]:u(e)}}}return await r({...i,request:{...o,headers:g,body:p}})},ji=(e=[])=>{const t=[];for(const r of bi)e.includes(r)&&vi.includes(r)&&t.push(r);return t};function zi(e){return new Blob([e]).stream()}const qi=async(e,{checksumAlgorithmFn:t,base64Encoder:r})=>r(await Li(t,e)),Hi={name:"flexibleChecksumsResponseMiddleware",toMiddleware:"deserializerMiddleware",relation:"after",tags:["BODY_CHECKSUM"],override:!0},Wi=(e,t)=>(r,n)=>async i=>{if(!z.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&&ji(d).every((e=>{const t=wi(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=ki(a.body);i&&(c=await e.streamCollector(a.body),a.body=zi(c)),await(async(e,{config:t,responseAlgorithms:r})=>{const n=ji(r),{body:i,headers:o}=e;for(const r of n){const n=wi(r),s=o[n];if(s){const o=Ui(r,t),{base64Encoder:a}=t;if(ki(i))return void(e.body=Ke({expectedChecksum:s,checksumSourceLocation:n,checksum:new o,source:i,base64Encoder:a}));const c=await qi(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=zi(c))}return s},Ki=(e,t)=>({applyToStack:r=>{r.add(Di(e,t),Bi),r.addRelativeTo(Wi(e,t),Hi)}});const Vi={name:"hostHeaderMiddleware",step:"build",priority:"low",tags:["HOST"],override:!0},Qi=e=>({applyToStack:t=>{t.add((e=>t=>async r=>{if(!z.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),Vi)}}),Gi={name:"loggerMiddleware",tags:["LOGGER"],step:"initialize",override:!0},Ji="X-Amzn-Trace-Id",Xi={step:"build",tags:["RECURSION_DETECTION"],name:"recursionDetectionMiddleware",override:!0,priority:"low"},Zi=e=>({applyToStack:t=>{t.add((e=>t=>async r=>{const{request:n}=r;if(!z.isInstance(n)||"node"!==e.runtime||n.headers.hasOwnProperty(Ji))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[Ji]=o),t({...r,request:n})})(e),Xi)}});const Yi={step:"finalizeRequest",tags:["CHECK_CONTENT_LENGTH_HEADER"],name:"getCheckContentLengthHeaderPlugin",override:!0},eo=e=>({applyToStack:e=>{e.add(((e,t)=>async r=>{const{request:n}=r;if(z.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 zr?console.warn(e):t.logger.warn(e)}return e({...r})}),Yi)}}),to={tags:["REGION_REDIRECT","S3"],name:"regionRedirectEndpointMiddleware",override:!0,relation:"before",toMiddleware:"endpointV2Middleware"};const ro={step:"initialize",tags:["REGION_REDIRECT","S3"],name:"regionRedirectMiddleware",override:!0},no=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),ro),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),to)}}),io={tags:["S3"],name:"s3ExpiresMiddleware",override:!0,relation:"after",toMiddleware:"deserializerMiddleware"},oo=e=>({applyToStack:e=>{e.addRelativeTo(((e,t)=>async r=>{const n=await e(r),{response:i}=n;if(q.isInstance(i)&&i.headers.expires){i.headers.expiresstring=i.headers.expires;try{mr(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}),io)}});class so{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+so.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 ao(Promise.resolve(e)))}))),e})):n.set(r,new ao(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 uo;co.REFRESH_WINDOW_MS=6e4,function(e){e.ENV="env",e.CONFIG="shared config entry"}(uo||(uo={}));const lo="X-Amz-S3session-Token",ho=lo.toLowerCase();class fo extends Pt{async signWithCredentials(e,t,r){const n=po(t);e.headers[ho]=t.sessionToken;return go(this,n),this.signRequest(e,r??{})}async presignWithCredentials(e,t,r){const n=po(t);delete e.headers[ho],e.headers[lo]=t.sessionToken,e.query=e.query??{},e.query[lo]=t.sessionToken;return go(this,n),this.presign(e,r)}}function po(e){return{accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey,expiration:e.expiration}}function go(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 mo={name:"s3ExpressMiddleware",step:"build",tags:["S3","S3_EXPRESS"],override:!0},yo=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)&&(ee(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,z.isInstance(n.request)&&i.sessionToken&&(n.request.headers[ho]=i.sessionToken)}}}return t(n)})(e),mo)}}),vo=e=>e=>{throw e},bo=(e,t)=>{},wo=e=>(t,r)=>async n=>{if(!z.isInstance(n.request))return t(n);const i=ce(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||vo)(o));return(a.successHandler||bo)(u.response,o),u},ko={CopyObjectCommand:!0,UploadPartCopyCommand:!0,CompleteMultipartUploadCommand:!0},So=e=>(t,r)=>async n=>{const i=await t(n),{response:o}=i;if(!q.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 Eo(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&&ko[r.commandName]){const e=new Error("S3 aborted request");throw e.name="InternalError",e}return l&&l.endsWith("")&&(o.statusCode=400),i},Eo=(e=new Uint8Array,t)=>e instanceof Uint8Array?Promise.resolve(e):t.streamCollector(e)||Promise.resolve(new Uint8Array),xo={relation:"after",toMiddleware:"deserializerMiddleware",tags:["THROW_200_EXCEPTIONS","S3"],name:"throw200ExceptionsMiddleware",override:!0},Ao=e=>({applyToStack:t=>{t.addRelativeTo(So(e),xo)}});const To={name:"bucketEndpointMiddleware",override:!0,relation:"after",toMiddleware:"endpointV2Middleware"};const Co={step:"initialize",tags:["VALIDATE_BUCKET_NAME"],name:"validateBucketNameMiddleware",override:!0},Ro=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),Co),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),To)}});const Oo=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}$"),Po=e=>Oo.test(e)||e.startsWith("[")&&e.endsWith("]"),_o=new RegExp("^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$"),Mo=(e,t=!1)=>{if(!t)return _o.test(e);const r=e.split(".");for(const e of r)if(!Mo(e))return!1;return!0},Io={},No="endpoints";function Fo(e){return"object"!=typeof e||null==e?e:"ref"in e?`$${Fo(e.ref)}`:"fn"in e?`${e.fn}(${(e.argv||[]).map(Fo).join(", ")})`:JSON.stringify(e,null,2)}class $o extends Error{constructor(e){super(e),this.name="EndpointError"}}const Uo=(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 $o(`Path: '${e}' does not end with ']'`);const i=n.slice(t+1,-1);if(Number.isNaN(parseInt(i)))throw new $o(`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 $o(`Index '${n}' in '${t}' not found in '${JSON.stringify(e)}'`);return Array.isArray(r)?r[parseInt(n)]:r[n]}),e),Lo={[$.HTTP]:80,[$.HTTPS]:443},Bo={booleanEquals:(e,t)=>e===t,getAttr:Uo,isSet:e=>null!=e,isValidHostLabel:Mo,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($).includes(c))return null;const u=Po(i);return{scheme:c,authority:`${n}${r.includes(`${n}:${Lo[c]}`)||"string"==typeof e&&e.includes(`${n}:${Lo[c]}`)?`:${Lo[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()}`))},Do=(e,t)=>{const r=[],n={...t.endpointParams,...t.referenceRecord};let i=0;for(;i{if("string"==typeof e)return Do(e,r);if(e.fn)return zo(e,r);if(e.ref)return(({ref:e},t)=>({...t.endpointParams,...t.referenceRecord}[e]))(e,r);throw new $o(`'${t}': ${String(e)} is not a string, function or reference.`)},zo=({fn:e,argv:t},r)=>{const n=t.map((e=>["boolean","number"].includes(typeof e)?e:jo(e,"arg",r))),i=e.split(".");return i[0]in Io&&null!=i[1]?Io[i[0]][i[1]](...n):Bo[e](...n)},qo=({assign:e,...t},r)=>{if(e&&e in r.referenceRecord)throw new $o(`'${e}' is already defined in Reference Record.`);const n=zo(t,r);return r.logger?.debug?.(`${No} evaluateCondition: ${Fo(t)} = ${Fo(n)}`),{result:""===n||!!n,...null!=e&&{toAssign:{name:e,value:n}}}},Ho=(e=[],t)=>{const r={};for(const n of e){const{result:e,toAssign:i}=qo(n,{...t,referenceRecord:{...t.referenceRecord,...r}});if(!e)return{result:e};i&&(r[i.name]=i.value,t.logger?.debug?.(`${No} assign: ${i.name} := ${Fo(i.value)}`))}return{result:!0,referenceRecord:r}},Wo=(e,t)=>Object.entries(e).reduce(((e,[r,n])=>({...e,[r]:n.map((e=>{const n=jo(e,"Header value entry",t);if("string"!=typeof n)throw new $o(`Header '${r}' value '${n}' is not a string`);return n}))})),{}),Ko=(e,t)=>{if(Array.isArray(e))return e.map((e=>Ko(e,t)));switch(typeof e){case"string":return Do(e,t);case"object":if(null===e)throw new $o(`Unexpected endpoint property: ${e}`);return Vo(e,t);case"boolean":return e;default:throw new $o("Unexpected endpoint property type: "+typeof e)}},Vo=(e,t)=>Object.entries(e).reduce(((e,[r,n])=>({...e,[r]:Ko(n,t)})),{}),Qo=(e,t)=>{const r=jo(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 $o("Endpoint URL must be a string, got "+typeof r)},Go=(e,t)=>{const{conditions:r,endpoint:n}=e,{result:i,referenceRecord:o}=Ho(r,t);if(!i)return;const s={...t,referenceRecord:{...t.referenceRecord,...o}},{url:a,properties:c,headers:u}=n;return t.logger?.debug?.(`${No} Resolving endpoint from template: ${Fo(n)}`),{...null!=u&&{headers:Wo(u,s)},...null!=c&&{properties:Vo(c,s)},url:Qo(a,s)}},Jo=(e,t)=>{const{conditions:r,error:n}=e,{result:i,referenceRecord:o}=Ho(r,t);if(i)throw new $o(jo(n,"Error",{...t,referenceRecord:{...t.referenceRecord,...o}}))},Xo=(e,t)=>{const{conditions:r,rules:n}=e,{result:i,referenceRecord:o}=Ho(r,t);if(i)return Zo(n,{...t,referenceRecord:{...t.referenceRecord,...o}})},Zo=(e,t)=>{for(const r of e)if("endpoint"===r.type){const e=Go(r,t);if(e)return e}else if("error"===r.type)Jo(r,t);else{if("tree"!==r.type)throw new $o(`Unknown endpoint rule: ${r}`);{const e=Xo(r,t);if(e)return e}}throw new $o("Rules evaluation failed")},Yo=(e,t=!1)=>{if(t){for(const t of e.split("."))if(!Yo(t))return!1;return!0}return!!Mo(e)&&(!(e.length<3||e.length>63)&&(e===e.toLowerCase()&&!Po(e)))};let es={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 ts={isVirtualHostableS3Bucket:Yo,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}=es;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}}};Io.aws=ts;const rs=/\d{12}\.ddb/;const ns="user-agent",is="x-amz-user-agent",os=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w]/g,ss=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w\#]/g;const as=e=>(t,r)=>async n=>{const{request:i}=n;if(!z.isInstance(i))return t(n);const{headers:o}=i,s=r?.userAgent?.map(cs)||[],a=(await e.defaultUserAgentProvider()).map(cs);await async function(e,t,r){const n=r.request;if("rpc-v2-cbor"===n?.headers?.["smithy-protocol"]&&ee(e,"PROTOCOL_RPC_V2_CBOR","M"),"function"==typeof t.retryStrategy){const r=await t.retryStrategy();"function"==typeof r.acquireInitialRetryToken?r.constructor?.name?.includes("Adaptive")?ee(e,"RETRY_MODE_ADAPTIVE","F"):ee(e,"RETRY_MODE_STANDARD","E"):ee(e,"RETRY_MODE_LEGACY","D")}if("function"==typeof t.accountIdEndpointMode){const r=e.endpointV2;switch(String(r?.url?.hostname).match(rs)&&ee(e,"ACCOUNT_ID_ENDPOINT","O"),await(t.accountIdEndpointMode?.())){case"disabled":ee(e,"ACCOUNT_ID_MODE_DISABLED","Q");break;case"preferred":ee(e,"ACCOUNT_ID_MODE_PREFERRED","P");break;case"required":ee(e,"ACCOUNT_ID_MODE_REQUIRED","R")}}const i=e.__smithy_context?.selectedHttpAuthScheme?.identity;if(i?.$source){const t=i;t.accountId&&ee(e,"RESOLVED_ACCOUNT_ID","T");for(const[r,n]of Object.entries(t.$source??{}))ee(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(cs)||[],d=await e.userAgentAppId();d&&a.push(cs([`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[is]=o[is]?`${o[ns]} ${h}`:h),o[ns]=l):o[is]=l,t({...n,request:i})},cs=e=>{const t=e[0].split("/").map((e=>e.replace(os,"-"))).join("/"),r=e[1]?.replace(ss,"-"),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}`}}),"")},us={name:"getUserAgentMiddleware",step:"build",priority:"low",tags:["SET_USER_AGENT","USER_AGENT"],override:!0},ds=e=>"string"==typeof e&&(e.startsWith("fips-")||e.endsWith("-fips")),ls=e=>ds(e)?["fips-aws-global","aws-fips"].includes(e)?"us-east-1":e.replace(/fips-(dkr-|prod-)?|-fips/,""):e,hs="content-length";const fs={step:"build",tags:["SET_CONTENT_LENGTH","CONTENT_LENGTH"],name:"contentLengthMiddleware",override:!0},ps=e=>({applyToStack:t=>{var r;t.add((r=e.bodyLengthChecker,e=>async t=>{const n=t.request;if(z.isInstance(n)){const{body:e,headers:t}=n;if(e&&-1===Object.keys(t).map((e=>e.toLowerCase())).indexOf(hs))try{const t=r(e);n.headers={...n.headers,[hs]:String(t)}}catch(e){}}return e({...t,request:n})}),fs)}}),gs=/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/,ms=/(\d+\.){3}\d+/,ys=/\.\./,vs=e=>gs.test(e)&&!ms.test(e)&&!ys.test(e),bs=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},ws=(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},ks=async e=>{};const Ss=e=>{if("string"==typeof e)return Ss(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}},Es=e=>"object"==typeof e?"url"in e?Ss(e.url):e:Ss(e),xs=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 ws(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("?"))),bs(t)){if(!0===e.ForcePathStyle)throw new Error("Path-style addressing cannot be used with ARN buckets")}else(!vs(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},As=({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 ks(r.serviceId),e&&(r.endpoint=()=>Promise.resolve(Es(e)))}const i=await xs(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=ce(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})},Ts={step:"serialize",tags:["ENDPOINT_PARAMETERS","ENDPOINT_V2","ENDPOINT"],name:"endpointV2Middleware",override:!0,relation:"before",toMiddleware:fe.name},Cs=(e,t)=>({applyToStack:r=>{r.addRelativeTo(As({config:e,instructions:t}),Ts)}});var Rs;!function(e){e.STANDARD="standard",e.ADAPTIVE="adaptive"}(Rs||(Rs={}));const Os=Rs.STANDARD,Ps=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],_s=["TimeoutError","RequestTimeout","RequestTimeoutException"],Ms=[500,502,503,504],Is=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],Ns=e=>429===e.$metadata?.httpStatusCode||Ps.includes(e.name)||1==e.$retryable?.throttling,Fs=e=>(e=>e.$metadata?.clockSkewCorrected)(e)||_s.includes(e.name)||Is.includes(e?.code||"")||Ms.includes(e.$metadata?.httpStatusCode||0);class $s{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=>$s.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(),Ns(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))}}$s.setTimeoutFn=setTimeout;const Us=({retryDelay:e,retryCount:t,retryCost:r})=>({getRetryCount:()=>t,getRetryDelay:()=>Math.min(2e4,e),getRetryCost:()=>r});class Ls{constructor(e){this.maxAttempts=e,this.mode=Rs.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 Us({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,Us({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 Bs{constructor(e,t){this.maxAttemptsProvider=e,this.mode=Rs.ADAPTIVE;const{rateLimiter:r}=t??{};this.rateLimiter=r??new $s,this.standardRetryStrategy=new Ls(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 Ds;const js=new Uint8Array(16);function zs(){if(!Ds&&(Ds="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Ds))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Ds(js)}const qs=[];for(let e=0;e<256;++e)qs.push((e+256).toString(16).slice(1));var Hs={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Ws(e,t,r){if(Hs.randomUUID&&!t&&!e)return Hs.randomUUID();const n=(e=e||{}).random||(e.rng||zs)();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 qs[e[t+0]]+qs[e[t+1]]+qs[e[t+2]]+qs[e[t+3]]+"-"+qs[e[t+4]]+qs[e[t+5]]+"-"+qs[e[t+6]]+qs[e[t+7]]+"-"+qs[e[t+8]]+qs[e[t+9]]+"-"+qs[e[t+10]]+qs[e[t+11]]+qs[e[t+12]]+qs[e[t+13]]+qs[e[t+14]]+qs[e[t+15]]}(n)}const Ks=e=>e?.body instanceof ReadableStream,Vs=e=>void 0!==e.acquireInitialRetryToken&&void 0!==e.refreshRetryTokenForRetry&&void 0!==e.recordSuccess,Qs=e=>{const t={error:e,errorType:Gs(e)},r=Zs(e.$response);return r&&(t.retryAfterHint=r),t},Gs=e=>Ns(e)?"THROTTLING":Fs(e)?"TRANSIENT":(e=>{if(void 0!==e.$metadata?.httpStatusCode){const t=e.$metadata.httpStatusCode;return 500<=t&&t<=599&&!Fs(e)}return!1})(e)?"SERVER_ERROR":"CLIENT_ERROR",Js={name:"retryMiddleware",tags:["RETRY"],step:"finalizeRequest",priority:"high",override:!0},Xs=e=>({applyToStack:t=>{t.add((e=>(t,r)=>async n=>{let i=await e.retryStrategy();const o=await e.maxAttempts();if(!Vs(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=z.isInstance(d);for(l&&(d.headers["amz-sdk-invocation-id"]=Ws());;)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=Qs(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&&Ks(d))throw(r.logger instanceof zr?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),Js)}}),Zs=e=>{if(!q.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)},Ys=null;class ea{constructor(e){this.sigv4Signer=new fo(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=Ys,"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 ta="required",ra="type",na="conditions",ia="fn",oa="argv",sa="ref",aa="assign",ca="url",ua="properties",da="backend",la="authSchemes",ha="disableDoubleEncoding",fa="signingName",pa="signingRegion",ga="headers",ma="signingRegionSet",ya=!0,va="isSet",ba="booleanEquals",wa="error",ka="aws.partition",Sa="stringEquals",Ea="getAttr",xa="name",Aa="substring",Ta="bucketSuffix",Ca="parseURL",Ra="{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}",Oa="endpoint",Pa="tree",_a="aws.isVirtualHostableS3Bucket",Ma="{url#scheme}://{Bucket}.{url#authority}{url#path}",Ia="not",Na="{url#scheme}://{url#authority}{url#path}",Fa="hardwareType",$a="regionPrefix",Ua="bucketAliasSuffix",La="outpostId",Ba="isValidHostLabel",Da="sigv4a",ja="s3-outposts",za="s3",qa="{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}",Ha="https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}",Wa="https://{Bucket}.s3.{partitionResult#dnsSuffix}",Ka="aws.parseArn",Va="bucketArn",Qa="arnType",Ga="s3-object-lambda",Ja="accesspoint",Xa="accessPointName",Za="{url#scheme}://{accessPointName}-{bucketArn#accountId}.{url#authority}{url#path}",Ya="mrapPartition",ec="outpostType",tc="arnPrefix",rc="{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}",nc="https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",ic="https://s3.{partitionResult#dnsSuffix}",oc={[ta]:!1,[ra]:"String"},sc={[ta]:!0,default:!1,[ra]:"Boolean"},ac={[ta]:!1,[ra]:"Boolean"},cc={[ia]:ba,[oa]:[{[sa]:"Accelerate"},!0]},uc={[ia]:ba,[oa]:[{[sa]:"UseFIPS"},!0]},dc={[ia]:ba,[oa]:[{[sa]:"UseDualStack"},!0]},lc={[ia]:va,[oa]:[{[sa]:"Endpoint"}]},hc={[ia]:ka,[oa]:[{[sa]:"Region"}],[aa]:"partitionResult"},fc={[ia]:Sa,[oa]:[{[ia]:Ea,[oa]:[{[sa]:"partitionResult"},xa]},"aws-cn"]},pc={[ia]:va,[oa]:[{[sa]:"Bucket"}]},gc={[sa]:"Bucket"},mc={[ia]:Ca,[oa]:[{[sa]:"Endpoint"}],[aa]:"url"},yc={[ia]:ba,[oa]:[{[ia]:Ea,[oa]:[{[sa]:"url"},"isIp"]},!0]},vc={[sa]:"url"},bc={[ia]:"uriEncode",[oa]:[gc],[aa]:"uri_encoded_bucket"},wc={[da]:"S3Express",[la]:[{[ha]:!0,[xa]:"sigv4",[fa]:"s3express",[pa]:"{Region}"}]},kc={},Sc={[ia]:_a,[oa]:[gc,!1]},Ec={[wa]:"S3Express bucket name is not a valid virtual hostable name.",[ra]:wa},xc={[da]:"S3Express",[la]:[{[ha]:!0,[xa]:"sigv4-s3express",[fa]:"s3express",[pa]:"{Region}"}]},Ac={[ia]:va,[oa]:[{[sa]:"UseS3ExpressControlEndpoint"}]},Tc={[ia]:ba,[oa]:[{[sa]:"UseS3ExpressControlEndpoint"},!0]},Cc={[ia]:Ia,[oa]:[lc]},Rc={[wa]:"Unrecognized S3Express bucket name format.",[ra]:wa},Oc={[ia]:Ia,[oa]:[pc]},Pc={[sa]:Fa},_c={[na]:[Cc],[wa]:"Expected a endpoint to be specified but no endpoint was found",[ra]:wa},Mc={[la]:[{[ha]:!0,[xa]:Da,[fa]:ja,[ma]:["*"]},{[ha]:!0,[xa]:"sigv4",[fa]:ja,[pa]:"{Region}"}]},Ic={[ia]:ba,[oa]:[{[sa]:"ForcePathStyle"},!1]},Nc={[sa]:"ForcePathStyle"},Fc={[ia]:ba,[oa]:[{[sa]:"Accelerate"},!1]},$c={[ia]:Sa,[oa]:[{[sa]:"Region"},"aws-global"]},Uc={[la]:[{[ha]:!0,[xa]:"sigv4",[fa]:za,[pa]:"us-east-1"}]},Lc={[ia]:Ia,[oa]:[$c]},Bc={[ia]:ba,[oa]:[{[sa]:"UseGlobalEndpoint"},!0]},Dc={[ca]:"https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",[ua]:{[la]:[{[ha]:!0,[xa]:"sigv4",[fa]:za,[pa]:"{Region}"}]},[ga]:{}},jc={[la]:[{[ha]:!0,[xa]:"sigv4",[fa]:za,[pa]:"{Region}"}]},zc={[ia]:ba,[oa]:[{[sa]:"UseGlobalEndpoint"},!1]},qc={[ia]:ba,[oa]:[{[sa]:"UseDualStack"},!1]},Hc={[ca]:"https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}",[ua]:jc,[ga]:{}},Wc={[ia]:ba,[oa]:[{[sa]:"UseFIPS"},!1]},Kc={[ca]:"https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}",[ua]:jc,[ga]:{}},Vc={[ca]:"https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}",[ua]:jc,[ga]:{}},Qc={[ia]:ba,[oa]:[{[ia]:Ea,[oa]:[vc,"isIp"]},!1]},Gc={[ca]:qa,[ua]:jc,[ga]:{}},Jc={[ca]:Ma,[ua]:jc,[ga]:{}},Xc={[Oa]:Jc,[ra]:Oa},Zc={[ca]:Ha,[ua]:jc,[ga]:{}},Yc={[ca]:"https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}",[ua]:jc,[ga]:{}},eu={[wa]:"Invalid region: region was not a valid DNS name.",[ra]:wa},tu={[sa]:Va},ru={[sa]:Qa},nu={[ia]:Ea,[oa]:[tu,"service"]},iu={[sa]:Xa},ou={[na]:[dc],[wa]:"S3 Object Lambda does not support Dual-stack",[ra]:wa},su={[na]:[cc],[wa]:"S3 Object Lambda does not support S3 Accelerate",[ra]:wa},au={[na]:[{[ia]:va,[oa]:[{[sa]:"DisableAccessPoints"}]},{[ia]:ba,[oa]:[{[sa]:"DisableAccessPoints"},!0]}],[wa]:"Access points are not supported for this operation",[ra]:wa},cu={[na]:[{[ia]:va,[oa]:[{[sa]:"UseArnRegion"}]},{[ia]:ba,[oa]:[{[sa]:"UseArnRegion"},!1]},{[ia]:Ia,[oa]:[{[ia]:Sa,[oa]:[{[ia]:Ea,[oa]:[tu,"region"]},"{Region}"]}]}],[wa]:"Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`",[ra]:wa},uu={[ia]:Ea,[oa]:[{[sa]:"bucketPartition"},xa]},du={[ia]:Ea,[oa]:[tu,"accountId"]},lu={[la]:[{[ha]:!0,[xa]:"sigv4",[fa]:Ga,[pa]:"{bucketArn#region}"}]},hu={[wa]:"Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName}`",[ra]:wa},fu={[wa]:"Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`",[ra]:wa},pu={[wa]:"Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)",[ra]:wa},gu={[wa]:"Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`",[ra]:wa},mu={[wa]:"Invalid ARN: The ARN may only contain a single resource component after `accesspoint`.",[ra]:wa},yu={[wa]:"Invalid ARN: Expected a resource of the format `accesspoint:` but no name was provided",[ra]:wa},vu={[la]:[{[ha]:!0,[xa]:"sigv4",[fa]:za,[pa]:"{bucketArn#region}"}]},bu={[la]:[{[ha]:!0,[xa]:Da,[fa]:ja,[ma]:["*"]},{[ha]:!0,[xa]:"sigv4",[fa]:ja,[pa]:"{bucketArn#region}"}]},wu={[ia]:Ka,[oa]:[gc]},ku={[ca]:"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ua]:jc,[ga]:{}},Su={[ca]:"https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ua]:jc,[ga]:{}},Eu={[ca]:"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ua]:jc,[ga]:{}},xu={[ca]:rc,[ua]:jc,[ga]:{}},Au={[ca]:"https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ua]:jc,[ga]:{}},Tu={[sa]:"UseObjectLambdaEndpoint"},Cu={[la]:[{[ha]:!0,[xa]:"sigv4",[fa]:Ga,[pa]:"{Region}"}]},Ru={[ca]:"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",[ua]:jc,[ga]:{}},Ou={[ca]:"https://s3-fips.{Region}.{partitionResult#dnsSuffix}",[ua]:jc,[ga]:{}},Pu={[ca]:"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}",[ua]:jc,[ga]:{}},_u={[ca]:Na,[ua]:jc,[ga]:{}},Mu={[ca]:"https://s3.{Region}.{partitionResult#dnsSuffix}",[ua]:jc,[ga]:{}},Iu=[{[sa]:"Region"}],Nu=[{[sa]:"Endpoint"}],Fu=[gc],$u=[dc],Uu=[cc],Lu=[lc,mc],Bu=[{[ia]:va,[oa]:[{[sa]:"DisableS3ExpressSessionAuth"}]},{[ia]:ba,[oa]:[{[sa]:"DisableS3ExpressSessionAuth"},!0]}],Du=[yc],ju=[bc],zu=[Sc],qu=[uc],Hu=[{[ia]:Aa,[oa]:[gc,6,14,!0],[aa]:"s3expressAvailabilityZoneId"},{[ia]:Aa,[oa]:[gc,14,16,!0],[aa]:"s3expressAvailabilityZoneDelim"},{[ia]:Sa,[oa]:[{[sa]:"s3expressAvailabilityZoneDelim"},"--"]}],Wu=[{[na]:[uc],[Oa]:{[ca]:"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[ua]:wc,[ga]:{}},[ra]:Oa},{[Oa]:{[ca]:"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[ua]:wc,[ga]:{}},[ra]:Oa}],Ku=[{[ia]:Aa,[oa]:[gc,6,15,!0],[aa]:"s3expressAvailabilityZoneId"},{[ia]:Aa,[oa]:[gc,15,17,!0],[aa]:"s3expressAvailabilityZoneDelim"},{[ia]:Sa,[oa]:[{[sa]:"s3expressAvailabilityZoneDelim"},"--"]}],Vu=[{[na]:[uc],[Oa]:{[ca]:"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[ua]:xc,[ga]:{}},[ra]:Oa},{[Oa]:{[ca]:"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[ua]:xc,[ga]:{}},[ra]:Oa}],Qu=[pc],Gu=[{[ia]:Ba,[oa]:[{[sa]:La},!1]}],Ju=[{[ia]:Sa,[oa]:[{[sa]:$a},"beta"]}],Xu=[hc],Zu=[{[ia]:Ba,[oa]:[{[sa]:"Region"},!1]}],Yu=[{[ia]:Sa,[oa]:[{[sa]:"Region"},"us-east-1"]}],ed=[{[ia]:Sa,[oa]:[ru,Ja]}],td=[{[ia]:Ea,[oa]:[tu,"resourceId[1]"],[aa]:Xa},{[ia]:Ia,[oa]:[{[ia]:Sa,[oa]:[iu,""]}]}],rd=[tu,"resourceId[1]"],nd=[{[ia]:Ia,[oa]:[{[ia]:Sa,[oa]:[{[ia]:Ea,[oa]:[tu,"region"]},""]}]}],id=[{[ia]:Ia,[oa]:[{[ia]:va,[oa]:[{[ia]:Ea,[oa]:[tu,"resourceId[2]"]}]}]}],od=[tu,"resourceId[2]"],sd=[{[ia]:ka,[oa]:[{[ia]:Ea,[oa]:[tu,"region"]}],[aa]:"bucketPartition"}],ad=[{[ia]:Sa,[oa]:[uu,{[ia]:Ea,[oa]:[{[sa]:"partitionResult"},xa]}]}],cd=[{[ia]:Ba,[oa]:[{[ia]:Ea,[oa]:[tu,"region"]},!0]}],ud=[{[ia]:Ba,[oa]:[du,!1]}],dd=[{[ia]:Ba,[oa]:[iu,!1]}],ld=[{[ia]:Ba,[oa]:[{[sa]:"Region"},!0]}],hd={version:"1.0",parameters:{Bucket:oc,Region:oc,UseFIPS:sc,UseDualStack:sc,Endpoint:oc,ForcePathStyle:sc,Accelerate:sc,UseGlobalEndpoint:sc,UseObjectLambdaEndpoint:ac,Key:oc,Prefix:oc,CopySource:oc,DisableAccessPoints:ac,DisableMultiRegionAccessPoints:sc,UseArnRegion:ac,UseS3ExpressControlEndpoint:ac,DisableS3ExpressSessionAuth:ac},rules:[{[na]:[{[ia]:va,[oa]:Iu}],rules:[{[na]:[cc,uc],error:"Accelerate cannot be used with FIPS",[ra]:wa},{[na]:[dc,lc],error:"Cannot set dual-stack in combination with a custom endpoint.",[ra]:wa},{[na]:[lc,uc],error:"A custom endpoint cannot be combined with FIPS",[ra]:wa},{[na]:[lc,cc],error:"A custom endpoint cannot be combined with S3 Accelerate",[ra]:wa},{[na]:[uc,hc,fc],error:"Partition does not support FIPS",[ra]:wa},{[na]:[pc,{[ia]:Aa,[oa]:[gc,0,6,ya],[aa]:Ta},{[ia]:Sa,[oa]:[{[sa]:Ta},"--x-s3"]}],rules:[{[na]:$u,error:"S3Express does not support Dual-stack.",[ra]:wa},{[na]:Uu,error:"S3Express does not support S3 Accelerate.",[ra]:wa},{[na]:Lu,rules:[{[na]:Bu,rules:[{[na]:Du,rules:[{[na]:ju,rules:[{endpoint:{[ca]:Ra,[ua]:wc,[ga]:kc},[ra]:Oa}],[ra]:Pa}],[ra]:Pa},{[na]:zu,rules:[{endpoint:{[ca]:Ma,[ua]:wc,[ga]:kc},[ra]:Oa}],[ra]:Pa},Ec],[ra]:Pa},{[na]:Du,rules:[{[na]:ju,rules:[{endpoint:{[ca]:Ra,[ua]:xc,[ga]:kc},[ra]:Oa}],[ra]:Pa}],[ra]:Pa},{[na]:zu,rules:[{endpoint:{[ca]:Ma,[ua]:xc,[ga]:kc},[ra]:Oa}],[ra]:Pa},Ec],[ra]:Pa},{[na]:[Ac,Tc],rules:[{[na]:[bc,Cc],rules:[{[na]:qu,endpoint:{[ca]:"https://s3express-control-fips.{Region}.amazonaws.com/{uri_encoded_bucket}",[ua]:wc,[ga]:kc},[ra]:Oa},{endpoint:{[ca]:"https://s3express-control.{Region}.amazonaws.com/{uri_encoded_bucket}",[ua]:wc,[ga]:kc},[ra]:Oa}],[ra]:Pa}],[ra]:Pa},{[na]:zu,rules:[{[na]:Bu,rules:[{[na]:Hu,rules:Wu,[ra]:Pa},{[na]:Ku,rules:Wu,[ra]:Pa},Rc],[ra]:Pa},{[na]:Hu,rules:Vu,[ra]:Pa},{[na]:Ku,rules:Vu,[ra]:Pa},Rc],[ra]:Pa},Ec],[ra]:Pa},{[na]:[Oc,Ac,Tc],rules:[{[na]:Lu,endpoint:{[ca]:Na,[ua]:wc,[ga]:kc},[ra]:Oa},{[na]:qu,endpoint:{[ca]:"https://s3express-control-fips.{Region}.amazonaws.com",[ua]:wc,[ga]:kc},[ra]:Oa},{endpoint:{[ca]:"https://s3express-control.{Region}.amazonaws.com",[ua]:wc,[ga]:kc},[ra]:Oa}],[ra]:Pa},{[na]:[pc,{[ia]:Aa,[oa]:[gc,49,50,ya],[aa]:Fa},{[ia]:Aa,[oa]:[gc,8,12,ya],[aa]:$a},{[ia]:Aa,[oa]:[gc,0,7,ya],[aa]:Ua},{[ia]:Aa,[oa]:[gc,32,49,ya],[aa]:La},{[ia]:ka,[oa]:Iu,[aa]:"regionPartition"},{[ia]:Sa,[oa]:[{[sa]:Ua},"--op-s3"]}],rules:[{[na]:Gu,rules:[{[na]:[{[ia]:Sa,[oa]:[Pc,"e"]}],rules:[{[na]:Ju,rules:[_c,{[na]:Lu,endpoint:{[ca]:"https://{Bucket}.ec2.{url#authority}",[ua]:Mc,[ga]:kc},[ra]:Oa}],[ra]:Pa},{endpoint:{[ca]:"https://{Bucket}.ec2.s3-outposts.{Region}.{regionPartition#dnsSuffix}",[ua]:Mc,[ga]:kc},[ra]:Oa}],[ra]:Pa},{[na]:[{[ia]:Sa,[oa]:[Pc,"o"]}],rules:[{[na]:Ju,rules:[_c,{[na]:Lu,endpoint:{[ca]:"https://{Bucket}.op-{outpostId}.{url#authority}",[ua]:Mc,[ga]:kc},[ra]:Oa}],[ra]:Pa},{endpoint:{[ca]:"https://{Bucket}.op-{outpostId}.s3-outposts.{Region}.{regionPartition#dnsSuffix}",[ua]:Mc,[ga]:kc},[ra]:Oa}],[ra]:Pa},{error:'Unrecognized hardware type: "Expected hardware type o or e but got {hardwareType}"',[ra]:wa}],[ra]:Pa},{error:"Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`.",[ra]:wa}],[ra]:Pa},{[na]:Qu,rules:[{[na]:[lc,{[ia]:Ia,[oa]:[{[ia]:va,[oa]:[{[ia]:Ca,[oa]:Nu}]}]}],error:"Custom endpoint `{Endpoint}` was not a valid URI",[ra]:wa},{[na]:[Ic,Sc],rules:[{[na]:Xu,rules:[{[na]:Zu,rules:[{[na]:[cc,fc],error:"S3 Accelerate cannot be used in this region",[ra]:wa},{[na]:[dc,uc,Fc,Cc,$c],endpoint:{[ca]:"https://{Bucket}.s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[dc,uc,Fc,Cc,Lc,Bc],rules:[{endpoint:Dc,[ra]:Oa}],[ra]:Pa},{[na]:[dc,uc,Fc,Cc,Lc,zc],endpoint:Dc,[ra]:Oa},{[na]:[qc,uc,Fc,Cc,$c],endpoint:{[ca]:"https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}",[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[qc,uc,Fc,Cc,Lc,Bc],rules:[{endpoint:Hc,[ra]:Oa}],[ra]:Pa},{[na]:[qc,uc,Fc,Cc,Lc,zc],endpoint:Hc,[ra]:Oa},{[na]:[dc,Wc,cc,Cc,$c],endpoint:{[ca]:"https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[dc,Wc,cc,Cc,Lc,Bc],rules:[{endpoint:Kc,[ra]:Oa}],[ra]:Pa},{[na]:[dc,Wc,cc,Cc,Lc,zc],endpoint:Kc,[ra]:Oa},{[na]:[dc,Wc,Fc,Cc,$c],endpoint:{[ca]:"https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[dc,Wc,Fc,Cc,Lc,Bc],rules:[{endpoint:Vc,[ra]:Oa}],[ra]:Pa},{[na]:[dc,Wc,Fc,Cc,Lc,zc],endpoint:Vc,[ra]:Oa},{[na]:[qc,Wc,Fc,lc,mc,yc,$c],endpoint:{[ca]:qa,[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[qc,Wc,Fc,lc,mc,Qc,$c],endpoint:{[ca]:Ma,[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[qc,Wc,Fc,lc,mc,yc,Lc,Bc],rules:[{[na]:Yu,endpoint:Gc,[ra]:Oa},{endpoint:Gc,[ra]:Oa}],[ra]:Pa},{[na]:[qc,Wc,Fc,lc,mc,Qc,Lc,Bc],rules:[{[na]:Yu,endpoint:Jc,[ra]:Oa},Xc],[ra]:Pa},{[na]:[qc,Wc,Fc,lc,mc,yc,Lc,zc],endpoint:Gc,[ra]:Oa},{[na]:[qc,Wc,Fc,lc,mc,Qc,Lc,zc],endpoint:Jc,[ra]:Oa},{[na]:[qc,Wc,cc,Cc,$c],endpoint:{[ca]:Ha,[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[qc,Wc,cc,Cc,Lc,Bc],rules:[{[na]:Yu,endpoint:Zc,[ra]:Oa},{endpoint:Zc,[ra]:Oa}],[ra]:Pa},{[na]:[qc,Wc,cc,Cc,Lc,zc],endpoint:Zc,[ra]:Oa},{[na]:[qc,Wc,Fc,Cc,$c],endpoint:{[ca]:Wa,[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[qc,Wc,Fc,Cc,Lc,Bc],rules:[{[na]:Yu,endpoint:{[ca]:Wa,[ua]:jc,[ga]:kc},[ra]:Oa},{endpoint:Yc,[ra]:Oa}],[ra]:Pa},{[na]:[qc,Wc,Fc,Cc,Lc,zc],endpoint:Yc,[ra]:Oa}],[ra]:Pa},eu],[ra]:Pa}],[ra]:Pa},{[na]:[lc,mc,{[ia]:Sa,[oa]:[{[ia]:Ea,[oa]:[vc,"scheme"]},"http"]},{[ia]:_a,[oa]:[gc,ya]},Ic,Wc,qc,Fc],rules:[{[na]:Xu,rules:[{[na]:Zu,rules:[Xc],[ra]:Pa},eu],[ra]:Pa}],[ra]:Pa},{[na]:[Ic,{[ia]:Ka,[oa]:Fu,[aa]:Va}],rules:[{[na]:[{[ia]:Ea,[oa]:[tu,"resourceId[0]"],[aa]:Qa},{[ia]:Ia,[oa]:[{[ia]:Sa,[oa]:[ru,""]}]}],rules:[{[na]:[{[ia]:Sa,[oa]:[nu,Ga]}],rules:[{[na]:ed,rules:[{[na]:td,rules:[ou,su,{[na]:nd,rules:[au,{[na]:id,rules:[cu,{[na]:sd,rules:[{[na]:Xu,rules:[{[na]:ad,rules:[{[na]:cd,rules:[{[na]:[{[ia]:Sa,[oa]:[du,""]}],error:"Invalid ARN: Missing account id",[ra]:wa},{[na]:ud,rules:[{[na]:dd,rules:[{[na]:Lu,endpoint:{[ca]:Za,[ua]:lu,[ga]:kc},[ra]:Oa},{[na]:qu,endpoint:{[ca]:"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ua]:lu,[ga]:kc},[ra]:Oa},{endpoint:{[ca]:"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ua]:lu,[ga]:kc},[ra]:Oa}],[ra]:Pa},hu],[ra]:Pa},fu],[ra]:Pa},pu],[ra]:Pa},gu],[ra]:Pa}],[ra]:Pa}],[ra]:Pa},mu],[ra]:Pa},{error:"Invalid ARN: bucket ARN is missing a region",[ra]:wa}],[ra]:Pa},yu],[ra]:Pa},{error:"Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `{arnType}`",[ra]:wa}],[ra]:Pa},{[na]:ed,rules:[{[na]:td,rules:[{[na]:nd,rules:[{[na]:ed,rules:[{[na]:nd,rules:[au,{[na]:id,rules:[cu,{[na]:sd,rules:[{[na]:Xu,rules:[{[na]:[{[ia]:Sa,[oa]:[uu,"{partitionResult#name}"]}],rules:[{[na]:cd,rules:[{[na]:[{[ia]:Sa,[oa]:[nu,za]}],rules:[{[na]:ud,rules:[{[na]:dd,rules:[{[na]:Uu,error:"Access Points do not support S3 Accelerate",[ra]:wa},{[na]:[uc,dc],endpoint:{[ca]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ua]:vu,[ga]:kc},[ra]:Oa},{[na]:[uc,qc],endpoint:{[ca]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ua]:vu,[ga]:kc},[ra]:Oa},{[na]:[Wc,dc],endpoint:{[ca]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ua]:vu,[ga]:kc},[ra]:Oa},{[na]:[Wc,qc,lc,mc],endpoint:{[ca]:Za,[ua]:vu,[ga]:kc},[ra]:Oa},{[na]:[Wc,qc],endpoint:{[ca]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ua]:vu,[ga]:kc},[ra]:Oa}],[ra]:Pa},hu],[ra]:Pa},fu],[ra]:Pa},{error:"Invalid ARN: The ARN was not for the S3 service, found: {bucketArn#service}",[ra]:wa}],[ra]:Pa},pu],[ra]:Pa},gu],[ra]:Pa}],[ra]:Pa}],[ra]:Pa},mu],[ra]:Pa}],[ra]:Pa}],[ra]:Pa},{[na]:[{[ia]:Ba,[oa]:[iu,ya]}],rules:[{[na]:$u,error:"S3 MRAP does not support dual-stack",[ra]:wa},{[na]:qu,error:"S3 MRAP does not support FIPS",[ra]:wa},{[na]:Uu,error:"S3 MRAP does not support S3 Accelerate",[ra]:wa},{[na]:[{[ia]:ba,[oa]:[{[sa]:"DisableMultiRegionAccessPoints"},ya]}],error:"Invalid configuration: Multi-Region Access Point ARNs are disabled.",[ra]:wa},{[na]:[{[ia]:ka,[oa]:Iu,[aa]:Ya}],rules:[{[na]:[{[ia]:Sa,[oa]:[{[ia]:Ea,[oa]:[{[sa]:Ya},xa]},{[ia]:Ea,[oa]:[tu,"partition"]}]}],rules:[{endpoint:{[ca]:"https://{accessPointName}.accesspoint.s3-global.{mrapPartition#dnsSuffix}",[ua]:{[la]:[{[ha]:ya,name:Da,[fa]:za,[ma]:["*"]}]},[ga]:kc},[ra]:Oa}],[ra]:Pa},{error:"Client was configured for partition `{mrapPartition#name}` but bucket referred to partition `{bucketArn#partition}`",[ra]:wa}],[ra]:Pa}],[ra]:Pa},{error:"Invalid Access Point Name",[ra]:wa}],[ra]:Pa},yu],[ra]:Pa},{[na]:[{[ia]:Sa,[oa]:[nu,ja]}],rules:[{[na]:$u,error:"S3 Outposts does not support Dual-stack",[ra]:wa},{[na]:qu,error:"S3 Outposts does not support FIPS",[ra]:wa},{[na]:Uu,error:"S3 Outposts does not support S3 Accelerate",[ra]:wa},{[na]:[{[ia]:va,[oa]:[{[ia]:Ea,[oa]:[tu,"resourceId[4]"]}]}],error:"Invalid Arn: Outpost Access Point ARN contains sub resources",[ra]:wa},{[na]:[{[ia]:Ea,[oa]:rd,[aa]:La}],rules:[{[na]:Gu,rules:[cu,{[na]:sd,rules:[{[na]:Xu,rules:[{[na]:ad,rules:[{[na]:cd,rules:[{[na]:ud,rules:[{[na]:[{[ia]:Ea,[oa]:od,[aa]:ec}],rules:[{[na]:[{[ia]:Ea,[oa]:[tu,"resourceId[3]"],[aa]:Xa}],rules:[{[na]:[{[ia]:Sa,[oa]:[{[sa]:ec},Ja]}],rules:[{[na]:Lu,endpoint:{[ca]:"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.{url#authority}",[ua]:bu,[ga]:kc},[ra]:Oa},{endpoint:{[ca]:"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.s3-outposts.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ua]:bu,[ga]:kc},[ra]:Oa}],[ra]:Pa},{error:"Expected an outpost type `accesspoint`, found {outpostType}",[ra]:wa}],[ra]:Pa},{error:"Invalid ARN: expected an access point name",[ra]:wa}],[ra]:Pa},{error:"Invalid ARN: Expected a 4-component resource",[ra]:wa}],[ra]:Pa},fu],[ra]:Pa},pu],[ra]:Pa},gu],[ra]:Pa}],[ra]:Pa}],[ra]:Pa},{error:"Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `{outpostId}`",[ra]:wa}],[ra]:Pa},{error:"Invalid ARN: The Outpost Id was not set",[ra]:wa}],[ra]:Pa},{error:"Invalid ARN: Unrecognized format: {Bucket} (type: {arnType})",[ra]:wa}],[ra]:Pa},{error:"Invalid ARN: No ARN type specified",[ra]:wa}],[ra]:Pa},{[na]:[{[ia]:Aa,[oa]:[gc,0,4,!1],[aa]:tc},{[ia]:Sa,[oa]:[{[sa]:tc},"arn:"]},{[ia]:Ia,[oa]:[{[ia]:va,[oa]:[wu]}]}],error:"Invalid ARN: `{Bucket}` was not a valid ARN",[ra]:wa},{[na]:[{[ia]:ba,[oa]:[Nc,ya]},wu],error:"Path-style addressing cannot be used with ARN buckets",[ra]:wa},{[na]:ju,rules:[{[na]:Xu,rules:[{[na]:[Fc],rules:[{[na]:[dc,Cc,uc,$c],endpoint:{[ca]:"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[dc,Cc,uc,Lc,Bc],rules:[{endpoint:ku,[ra]:Oa}],[ra]:Pa},{[na]:[dc,Cc,uc,Lc,zc],endpoint:ku,[ra]:Oa},{[na]:[qc,Cc,uc,$c],endpoint:{[ca]:"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[qc,Cc,uc,Lc,Bc],rules:[{endpoint:Su,[ra]:Oa}],[ra]:Pa},{[na]:[qc,Cc,uc,Lc,zc],endpoint:Su,[ra]:Oa},{[na]:[dc,Cc,Wc,$c],endpoint:{[ca]:"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[dc,Cc,Wc,Lc,Bc],rules:[{endpoint:Eu,[ra]:Oa}],[ra]:Pa},{[na]:[dc,Cc,Wc,Lc,zc],endpoint:Eu,[ra]:Oa},{[na]:[qc,lc,mc,Wc,$c],endpoint:{[ca]:rc,[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[qc,lc,mc,Wc,Lc,Bc],rules:[{[na]:Yu,endpoint:xu,[ra]:Oa},{endpoint:xu,[ra]:Oa}],[ra]:Pa},{[na]:[qc,lc,mc,Wc,Lc,zc],endpoint:xu,[ra]:Oa},{[na]:[qc,Cc,Wc,$c],endpoint:{[ca]:nc,[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[qc,Cc,Wc,Lc,Bc],rules:[{[na]:Yu,endpoint:{[ca]:nc,[ua]:jc,[ga]:kc},[ra]:Oa},{endpoint:Au,[ra]:Oa}],[ra]:Pa},{[na]:[qc,Cc,Wc,Lc,zc],endpoint:Au,[ra]:Oa}],[ra]:Pa},{error:"Path-style addressing cannot be used with S3 Accelerate",[ra]:wa}],[ra]:Pa}],[ra]:Pa}],[ra]:Pa},{[na]:[{[ia]:va,[oa]:[Tu]},{[ia]:ba,[oa]:[Tu,ya]}],rules:[{[na]:Xu,rules:[{[na]:ld,rules:[ou,su,{[na]:Lu,endpoint:{[ca]:Na,[ua]:Cu,[ga]:kc},[ra]:Oa},{[na]:qu,endpoint:{[ca]:"https://s3-object-lambda-fips.{Region}.{partitionResult#dnsSuffix}",[ua]:Cu,[ga]:kc},[ra]:Oa},{endpoint:{[ca]:"https://s3-object-lambda.{Region}.{partitionResult#dnsSuffix}",[ua]:Cu,[ga]:kc},[ra]:Oa}],[ra]:Pa},eu],[ra]:Pa}],[ra]:Pa},{[na]:[Oc],rules:[{[na]:Xu,rules:[{[na]:ld,rules:[{[na]:[uc,dc,Cc,$c],endpoint:{[ca]:"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[uc,dc,Cc,Lc,Bc],rules:[{endpoint:Ru,[ra]:Oa}],[ra]:Pa},{[na]:[uc,dc,Cc,Lc,zc],endpoint:Ru,[ra]:Oa},{[na]:[uc,qc,Cc,$c],endpoint:{[ca]:"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}",[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[uc,qc,Cc,Lc,Bc],rules:[{endpoint:Ou,[ra]:Oa}],[ra]:Pa},{[na]:[uc,qc,Cc,Lc,zc],endpoint:Ou,[ra]:Oa},{[na]:[Wc,dc,Cc,$c],endpoint:{[ca]:"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[Wc,dc,Cc,Lc,Bc],rules:[{endpoint:Pu,[ra]:Oa}],[ra]:Pa},{[na]:[Wc,dc,Cc,Lc,zc],endpoint:Pu,[ra]:Oa},{[na]:[Wc,qc,lc,mc,$c],endpoint:{[ca]:Na,[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[Wc,qc,lc,mc,Lc,Bc],rules:[{[na]:Yu,endpoint:_u,[ra]:Oa},{endpoint:_u,[ra]:Oa}],[ra]:Pa},{[na]:[Wc,qc,lc,mc,Lc,zc],endpoint:_u,[ra]:Oa},{[na]:[Wc,qc,Cc,$c],endpoint:{[ca]:ic,[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[Wc,qc,Cc,Lc,Bc],rules:[{[na]:Yu,endpoint:{[ca]:ic,[ua]:jc,[ga]:kc},[ra]:Oa},{endpoint:Mu,[ra]:Oa}],[ra]:Pa},{[na]:[Wc,qc,Cc,Lc,zc],endpoint:Mu,[ra]:Oa}],[ra]:Pa},eu],[ra]:Pa}],[ra]:Pa}],[ra]:Pa},{error:"A region must be set when sending requests to S3.",[ra]:wa}]},fd=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"]}),pd=(e,t={})=>fd.get(e,(()=>((e,t)=>{const{endpointParams:r,logger:n}=t,{parameters:i,rules:o}=e;t.logger?.debug?.(`${No} Initial EndpointParams: ${Fo(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 $o(`Missing required parameter: '${e}'`);const c=Zo(o,{endpointParams:r,logger:n,referenceRecord:{}});return t.logger?.debug?.(`${No} Resolved endpoint: ${Fo(c)}`),c})(hd,{endpointParams:e,logger:t.logger})));Io.aws=ts;const gd=(md=async(e,t,r)=>({operation:ce(t).operation,region:await ue(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 md(e,t,r),i=ce(t)?.commandInstance?.constructor?.getEndpointParameterInstructions;if(!i)throw new Error(`getEndpointParameterInstructions() is not defined on \`${t.commandName}\``);const o=await xs(r,{getEndpointParameterInstructions:i},e);return Object.assign(n,o)});var md;function yd(e){return{schemeId:"aws.auth#sigv4",signingProperties:{name:"s3",region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}function vd(e){return{schemeId:"aws.auth#sigv4a",signingProperties:{name:"s3",region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}const bd=((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})(pd,(e=>{const t=[];return e.operation,t.push(yd(e)),t.push(vd(e)),t}),{"aws.auth#sigv4":yd,"aws.auth#sigv4a":vd}),wd=e=>{const t=(e=>(e.sigv4aSigningRegionSet=be(e.sigv4aSigningRegionSet),e))(It(e));return{...t}},kd={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 Sd extends Rr{constructor(e){super(e),Object.setPrototypeOf(this,Sd.prototype)}}class Ed extends Sd{constructor(e){super({name:"NoSuchUpload",$fault:"client",...e}),this.name="NoSuchUpload",this.$fault="client",Object.setPrototypeOf(this,Ed.prototype)}}class xd extends Sd{constructor(e){super({name:"ObjectNotInActiveTierError",$fault:"client",...e}),this.name="ObjectNotInActiveTierError",this.$fault="client",Object.setPrototypeOf(this,xd.prototype)}}class Ad extends Sd{constructor(e){super({name:"BucketAlreadyExists",$fault:"client",...e}),this.name="BucketAlreadyExists",this.$fault="client",Object.setPrototypeOf(this,Ad.prototype)}}class Td extends Sd{constructor(e){super({name:"BucketAlreadyOwnedByYou",$fault:"client",...e}),this.name="BucketAlreadyOwnedByYou",this.$fault="client",Object.setPrototypeOf(this,Td.prototype)}}class Cd extends Sd{constructor(e){super({name:"NoSuchBucket",$fault:"client",...e}),this.name="NoSuchBucket",this.$fault="client",Object.setPrototypeOf(this,Cd.prototype)}}var Rd,Od;!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])}(Rd||(Rd={})),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])}(Od||(Od={}));class Pd extends Sd{constructor(e){super({name:"InvalidObjectState",$fault:"client",...e}),this.name="InvalidObjectState",this.$fault="client",Object.setPrototypeOf(this,Pd.prototype),this.StorageClass=e.StorageClass,this.AccessTier=e.AccessTier}}class _d extends Sd{constructor(e){super({name:"NoSuchKey",$fault:"client",...e}),this.name="NoSuchKey",this.$fault="client",Object.setPrototypeOf(this,_d.prototype)}}class Md extends Sd{constructor(e){super({name:"NotFound",$fault:"client",...e}),this.name="NotFound",this.$fault="client",Object.setPrototypeOf(this,Md.prototype)}}const Id=e=>({...e,...e.SecretAccessKey&&{SecretAccessKey:zt},...e.SessionToken&&{SessionToken:zt}}),Nd=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:zt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:zt},...e.Credentials&&{Credentials:Id(e.Credentials)}}),Fd=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:zt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:zt}}),$d=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:zt}}),Ud=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:zt}});class Ld extends Sd{constructor(e){super({name:"EncryptionTypeMismatch",$fault:"client",...e}),this.name="EncryptionTypeMismatch",this.$fault="client",Object.setPrototypeOf(this,Ld.prototype)}}class Bd extends Sd{constructor(e){super({name:"InvalidRequest",$fault:"client",...e}),this.name="InvalidRequest",this.$fault="client",Object.setPrototypeOf(this,Bd.prototype)}}class Dd extends Sd{constructor(e){super({name:"InvalidWriteOffset",$fault:"client",...e}),this.name="InvalidWriteOffset",this.$fault="client",Object.setPrototypeOf(this,Dd.prototype)}}class jd extends Sd{constructor(e){super({name:"TooManyParts",$fault:"client",...e}),this.name="TooManyParts",this.$fault="client",Object.setPrototypeOf(this,jd.prototype)}}class zd extends Sd{constructor(e){super({name:"ObjectAlreadyInActiveTierError",$fault:"client",...e}),this.name="ObjectAlreadyInActiveTierError",this.$fault="client",Object.setPrototypeOf(this,zd.prototype)}}var qd;!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])}(qd||(qd={}));const Hd=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:zt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:zt}}),Wd=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:zt},...e.SSEKMSKeyId&&{SSEKMSKeyId:zt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:zt}}),Kd=async(e,t)=>{const r=Ge(e,t),n=qr({},Dr,{[Yf]:e[Jh],[Ep]:e[Xh],[xp]:e[rf],[Tp]:e[tf],[Ap]:[()=>Dr(e[Pl]),()=>e[Pl].toString()]});r.bp("/"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1);const i=qr({[qf]:[,""]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Vd=async(e,t)=>{const r=Ge(e,t),n=qr({},Dr,{[up]:e[kh],[bp]:e[qh],[Vf]:[()=>Dr(e[Ol]),()=>e[Ol].toString()],[rp]:e[Yl],[Cf]:e[dh],[ap]:[()=>Dr(e[lh]),()=>dr(e[lh]).toString()],[cp]:[()=>Dr(e[hh]),()=>e[hh].toString()]});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=qr({[Fp]:[,"DeleteObject"],[Wf]:[,e[cf]]});return r.m("DELETE").h(n).q(i).b(undefined),r.build()},Qd=async(e,t)=>{const r=Ge(e,t),n=qr({},Dr,{[Cf]:e[dh],[Rf]:[()=>Dr(e[fh]),()=>dr(e[fh]).toString()],[Of]:e[ph],[Pf]:[()=>Dr(e[yh]),()=>dr(e[yh]).toString()],[$f]:e[Nh],[Cp]:e[Zh],[Rp]:e[Yh],[Op]:e[ef],[bp]:e[qh],[rp]:e[Yl],[Jf]:e[Dl]});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=qr({[Fp]:[,"GetObject"],[Uf]:[,e[$h]],[Lf]:[,e[Uh]],[Bf]:[,e[Lh]],[Df]:[,e[Bh]],[jf]:[,e[Dh]],[zf]:[()=>void 0!==e.ResponseExpires,()=>dr(e[jh]).toString()],[Wf]:[,e[cf]],[Nf]:[()=>void 0!==e.PartNumber,()=>e[Ih].toString()]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Gd=async(e,t)=>{const r=Ge(e,t),n=qr({},Dr,{[bp]:e[qh],[rp]:e[Yl],[gp]:[()=>Dr(e[Ph]),()=>(e[Ph]||[]).map(Qr).join(", ")]});r.bp("/"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1);const i=qr({[Mf]:[,"2"],[kf]:[,e[Gl]],[Ef]:[,e[th]],[If]:[()=>void 0!==e.MaxKeys,()=>e[Sh].toString()],[Ff]:[,e[_h]],[wf]:[,e[Vl]],[Tf]:[()=>void 0!==e.FetchOwner,()=>e[ih].toString()],[Hf]:[,e[Vh]]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Jd=async(e,t)=>{const r=Ge(e,t),n=qr({},Dr,{[bf]:e[Kl]||"application/octet-stream",[Kf]:e[Al],[hf]:e[Il],[ff]:e[$l],[pf]:e[Ul],[gf]:e[Ll],[mf]:[()=>Dr(e[Bl]),()=>e[Bl].toString()],[yf]:e[jl],[Sp]:e[Ml],[Qf]:e[Nl],[Gf]:e[Fl],[Xf]:e[Hl],[Zf]:e[Wl],[Sf]:[()=>Dr(e[Zl]),()=>dr(e[Zl]).toString()],[Cf]:e[dh],[Of]:e[ph],[np]:e[oh],[ip]:e[sh],[op]:e[ah],[sp]:e[ch],[Ip]:[()=>Dr(e[uf]),()=>e[uf].toString()],[Ep]:e[Xh],[kp]:e[Gh],[Np]:e[df],[Cp]:e[Zh],[Rp]:e[Yh],[Op]:e[ef],[xp]:e[rf],[Tp]:e[tf],[Ap]:[()=>Dr(e[Pl]),()=>e[Pl].toString()],[bp]:e[qh],[Pp]:e[sf],[fp]:e[Rh],[pp]:[()=>Dr(e[Oh]),()=>{return(t=e[Oh],t.toISOString().replace(".000Z","Z")).toString();var t}],[hp]:e[Ch],[rp]:e[Yl],...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=qr({[Fp]:[,"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()},Xd=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return rl(e,t);const r=qr({$metadata:xl(e),[Xh]:[,e.headers[Ep]],[rf]:[,e.headers[xp]],[tf]:[,e.headers[Tp]],[Pl]:[()=>void 0!==e.headers[Ap],()=>qt(e.headers[Ap])]}),n=Zt(Yt(await mi(e.body,t)),"body");return null!=n[_l]&&(r[_l]=El(n[_l])),r},Zd=async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return rl(e,t);const r=qr({$metadata:xl(e),[Jl]:[()=>void 0!==e.headers[ep],()=>qt(e.headers[ep])],[cf]:[,e.headers[Mp]],[Fh]:[,e.headers[vp]]});return await Ve(e.body,t),r},Yd=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return rl(e,t);const r=qr({$metadata:xl(e),[Jl]:[()=>void 0!==e.headers[ep],()=>qt(e.headers[ep])],[Cl]:[,e.headers[lf]],[nh]:[,e.headers[tp]],[Kh]:[,e.headers[yp]],[wh]:[()=>void 0!==e.headers[_f],()=>Zt(mr(e.headers[_f]))],[Bl]:[()=>void 0!==e.headers[mf],()=>nr(e.headers[mf])],[rh]:[,e.headers[xf]],[Nl]:[,e.headers[Qf]],[Fl]:[,e.headers[Gf]],[Hl]:[,e.headers[Xf]],[Wl]:[,e.headers[Zf]],[Eh]:[()=>void 0!==e.headers[dp],()=>ir(e.headers[dp])],[cf]:[,e.headers[Mp]],[Il]:[,e.headers[hf]],[$l]:[,e.headers[ff]],[Ul]:[,e.headers[pf]],[Ll]:[,e.headers[gf]],[ql]:[,e.headers[vf]],[Kl]:[,e.headers[bf]],[Zl]:[()=>void 0!==e.headers[Sf],()=>Zt(mr(e.headers[Sf]))],[eh]:[,e.headers[Af]],[df]:[,e.headers[Np]],[Xh]:[,e.headers[Ep]],[Zh]:[,e.headers[Cp]],[ef]:[,e.headers[Op]],[rf]:[,e.headers[xp]],[Pl]:[()=>void 0!==e.headers[Ap],()=>qt(e.headers[Ap])],[Gh]:[,e.headers[kp]],[Fh]:[,e.headers[vp]],[Hh]:[,e.headers[wp]],[Mh]:[()=>void 0!==e.headers[lp],()=>ir(e.headers[lp])],[af]:[()=>void 0!==e.headers[_p],()=>ir(e.headers[_p])],[Rh]:[,e.headers[fp]],[Oh]:[()=>void 0!==e.headers[pp],()=>Zt(hr(e.headers[pp]))],[Ch]:[,e.headers[hp]],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},el=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return rl(e,t);const r=qr({$metadata:xl(e),[Fh]:[,e.headers[vp]]}),n=Zt(Yt(await mi(e.body,t)),"body");return""===n.CommonPrefixes?r[zl]=[]:null!=n[zl]&&(r[zl]=vl(Lr(n[zl]))),""===n.Contents?r[Ql]=[]:null!=n[Ql]&&(r[Ql]=wl(Lr(n[Ql]))),null!=n[Vl]&&(r[Vl]=er(n[Vl])),null!=n[Gl]&&(r[Gl]=er(n[Gl])),null!=n[th]&&(r[th]=er(n[th])),null!=n[mh]&&(r[mh]=qt(n[mh])),null!=n[bh]&&(r[bh]=ir(n[bh])),null!=n[Sh]&&(r[Sh]=ir(n[Sh])),null!=n[xh]&&(r[xh]=er(n[xh])),null!=n[Ah]&&(r[Ah]=er(n[Ah])),null!=n[_h]&&(r[_h]=er(n[_h])),null!=n[Vh]&&(r[Vh]=er(n[Vh])),r},tl=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return rl(e,t);const r=qr({$metadata:xl(e),[nh]:[,e.headers[tp]],[rh]:[,e.headers[xf]],[Nl]:[,e.headers[Qf]],[Fl]:[,e.headers[Gf]],[Hl]:[,e.headers[Xf]],[Wl]:[,e.headers[Zf]],[Xh]:[,e.headers[Ep]],[cf]:[,e.headers[Mp]],[Zh]:[,e.headers[Cp]],[ef]:[,e.headers[Op]],[rf]:[,e.headers[xp]],[tf]:[,e.headers[Tp]],[Pl]:[()=>void 0!==e.headers[Ap],()=>qt(e.headers[Ap])],[of]:[()=>void 0!==e.headers[mp],()=>nr(e.headers[mp])],[Fh]:[,e.headers[vp]]});return await Ve(e.body,t),r},rl=async(e,t)=>{const r={...e,body:await yi(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 fl(r,t);case"ObjectNotInActiveTierError":case"com.amazonaws.s3#ObjectNotInActiveTierError":throw await ml(r,t);case"BucketAlreadyExists":case"com.amazonaws.s3#BucketAlreadyExists":throw await ol(r,t);case"BucketAlreadyOwnedByYou":case"com.amazonaws.s3#BucketAlreadyOwnedByYou":throw await sl(r,t);case"NoSuchBucket":case"com.amazonaws.s3#NoSuchBucket":throw await ll(r,t);case"InvalidObjectState":case"com.amazonaws.s3#InvalidObjectState":throw await cl(r,t);case"NoSuchKey":case"com.amazonaws.s3#NoSuchKey":throw await hl(r,t);case"NotFound":case"com.amazonaws.s3#NotFound":throw await pl(r,t);case"EncryptionTypeMismatch":case"com.amazonaws.s3#EncryptionTypeMismatch":throw await al(r,t);case"InvalidRequest":case"com.amazonaws.s3#InvalidRequest":throw await ul(r,t);case"InvalidWriteOffset":case"com.amazonaws.s3#InvalidWriteOffset":throw await dl(r,t);case"TooManyParts":case"com.amazonaws.s3#TooManyParts":throw await yl(r,t);case"ObjectAlreadyInActiveTierError":case"com.amazonaws.s3#ObjectAlreadyInActiveTierError":throw await gl(r,t);default:const i=r.body;return nl({output:e,parsedBody:i,errorCode:n})}},nl=(il=Sd,({output:e,parsedBody:t,errorCode:r})=>{(({output:e,parsedBody:t,exceptionCtor:r,errorCode:n})=>{const i=Pr(e),o=i.httpStatusCode?i.httpStatusCode+"":void 0,s=new r({name:t?.code||t?.Code||n||o||"UnknownError",$fault:"client",$metadata:i});throw Or(s,t)})({output:e,parsedBody:t,exceptionCtor:il,errorCode:r})});var il;const ol=async(e,t)=>{const r=qr({});e.body;const n=new Ad({$metadata:xl(e),...r});return Or(n,e.body)},sl=async(e,t)=>{const r=qr({});e.body;const n=new Td({$metadata:xl(e),...r});return Or(n,e.body)},al=async(e,t)=>{const r=qr({});e.body;const n=new Ld({$metadata:xl(e),...r});return Or(n,e.body)},cl=async(e,t)=>{const r=qr({}),n=e.body;null!=n[Rl]&&(r[Rl]=er(n[Rl])),null!=n[Gh]&&(r[Gh]=er(n[Gh]));const i=new Pd({$metadata:xl(e),...r});return Or(i,e.body)},ul=async(e,t)=>{const r=qr({});e.body;const n=new Bd({$metadata:xl(e),...r});return Or(n,e.body)},dl=async(e,t)=>{const r=qr({});e.body;const n=new Dd({$metadata:xl(e),...r});return Or(n,e.body)},ll=async(e,t)=>{const r=qr({});e.body;const n=new Cd({$metadata:xl(e),...r});return Or(n,e.body)},hl=async(e,t)=>{const r=qr({});e.body;const n=new _d({$metadata:xl(e),...r});return Or(n,e.body)},fl=async(e,t)=>{const r=qr({});e.body;const n=new Ed({$metadata:xl(e),...r});return Or(n,e.body)},pl=async(e,t)=>{const r=qr({});e.body;const n=new Md({$metadata:xl(e),...r});return Or(n,e.body)},gl=async(e,t)=>{const r=qr({});e.body;const n=new zd({$metadata:xl(e),...r});return Or(n,e.body)},ml=async(e,t)=>{const r=qr({});e.body;const n=new xd({$metadata:xl(e),...r});return Or(n,e.body)},yl=async(e,t)=>{const r=qr({});e.body;const n=new jd({$metadata:xl(e),...r});return Or(n,e.body)},vl=(e,t)=>(e||[]).filter((e=>null!=e)).map((e=>(e=>{const t={};return null!=e[_h]&&(t[_h]=er(e[_h])),t})(e))),bl=(e,t)=>{const r={};return null!=e[vh]&&(r[vh]=er(e[vh])),null!=e[wh]&&(r[wh]=Zt(hr(e[wh]))),null!=e[rh]&&(r[rh]=er(e[rh])),""===e.ChecksumAlgorithm?r[Ml]=[]:null!=e[Ml]&&(r[Ml]=(e=>(e||[]).filter((e=>null!=e)).map((e=>er(e))))(Lr(e[Ml]))),null!=e[of]&&(r[of]=nr(e[of])),null!=e[Gh]&&(r[Gh]=er(e[Gh])),null!=e[Th]&&(r[Th]=kl(e[Th])),null!=e[Wh]&&(r[Wh]=Sl(e[Wh])),r},wl=(e,t)=>(e||[]).filter((e=>null!=e)).map((e=>bl(e))),kl=(e,t)=>{const r={};return null!=e[Xl]&&(r[Xl]=er(e[Xl])),null!=e[uh]&&(r[uh]=er(e[uh])),r},Sl=(e,t)=>{const r={};return null!=e[gh]&&(r[gh]=qt(e[gh])),null!=e[zh]&&(r[zh]=Zt(hr(e[zh]))),r},El=(e,t)=>{const r={};return null!=e[Tl]&&(r[Tl]=er(e[Tl])),null!=e[Qh]&&(r[Qh]=er(e[Qh])),null!=e[nf]&&(r[nf]=er(e[nf])),null!=e[nh]&&(r[nh]=Zt(hr(e[nh]))),r},xl=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"]}),Al="ACL",Tl="AccessKeyId",Cl="AcceptRanges",Rl="AccessTier",Ol="BypassGovernanceRetention",Pl="BucketKeyEnabled",_l="Credentials",Ml="ChecksumAlgorithm",Il="CacheControl",Nl="ChecksumCRC32",Fl="ChecksumCRC32C",$l="ContentDisposition",Ul="ContentEncoding",Ll="ContentLanguage",Bl="ContentLength",Dl="ChecksumMode",jl="ContentMD5",zl="CommonPrefixes",ql="ContentRange",Hl="ChecksumSHA1",Wl="ChecksumSHA256",Kl="ContentType",Vl="ContinuationToken",Ql="Contents",Gl="Delimiter",Jl="DeleteMarker",Xl="DisplayName",Zl="Expires",Yl="ExpectedBucketOwner",eh="ExpiresString",th="EncodingType",rh="ETag",nh="Expiration",ih="FetchOwner",oh="GrantFullControl",sh="GrantRead",ah="GrantReadACP",ch="GrantWriteACP",uh="ID",dh="IfMatch",lh="IfMatchLastModifiedTime",hh="IfMatchSize",fh="IfModifiedSince",ph="IfNoneMatch",gh="IsRestoreInProgress",mh="IsTruncated",yh="IfUnmodifiedSince",vh="Key",bh="KeyCount",wh="LastModified",kh="MFA",Sh="MaxKeys",Eh="MissingMeta",xh="Name",Ah="NextContinuationToken",Th="Owner",Ch="ObjectLockLegalHoldStatus",Rh="ObjectLockMode",Oh="ObjectLockRetainUntilDate",Ph="OptionalObjectAttributes",_h="Prefix",Mh="PartsCount",Ih="PartNumber",Nh="Range",Fh="RequestCharged",$h="ResponseCacheControl",Uh="ResponseContentDisposition",Lh="ResponseContentEncoding",Bh="ResponseContentLanguage",Dh="ResponseContentType",jh="ResponseExpires",zh="RestoreExpiryDate",qh="RequestPayer",Hh="ReplicationStatus",Wh="RestoreStatus",Kh="Restore",Vh="StartAfter",Qh="SecretAccessKey",Gh="StorageClass",Jh="SessionMode",Xh="ServerSideEncryption",Zh="SSECustomerAlgorithm",Yh="SSECustomerKey",ef="SSECustomerKeyMD5",tf="SSEKMSEncryptionContext",rf="SSEKMSKeyId",nf="SessionToken",of="Size",sf="Tagging",af="TagCount",cf="VersionId",uf="WriteOffsetBytes",df="WebsiteRedirectLocation",lf="accept-ranges",hf="cache-control",ff="content-disposition",pf="content-encoding",gf="content-language",mf="content-length",yf="content-md5",vf="content-range",bf="content-type",wf="continuation-token",kf="delimiter",Sf="expires",Ef="encoding-type",xf="etag",Af="expiresstring",Tf="fetch-owner",Cf="if-match",Rf="if-modified-since",Of="if-none-match",Pf="if-unmodified-since",_f="last-modified",Mf="list-type",If="max-keys",Nf="partNumber",Ff="prefix",$f="range",Uf="response-cache-control",Lf="response-content-disposition",Bf="response-content-encoding",Df="response-content-language",jf="response-content-type",zf="response-expires",qf="session",Hf="start-after",Wf="versionId",Kf="x-amz-acl",Vf="x-amz-bypass-governance-retention",Qf="x-amz-checksum-crc32",Gf="x-amz-checksum-crc32c",Jf="x-amz-checksum-mode",Xf="x-amz-checksum-sha1",Zf="x-amz-checksum-sha256",Yf="x-amz-create-session-mode",ep="x-amz-delete-marker",tp="x-amz-expiration",rp="x-amz-expected-bucket-owner",np="x-amz-grant-full-control",ip="x-amz-grant-read",op="x-amz-grant-read-acp",sp="x-amz-grant-write-acp",ap="x-amz-if-match-last-modified-time",cp="x-amz-if-match-size",up="x-amz-mfa",dp="x-amz-missing-meta",lp="x-amz-mp-parts-count",hp="x-amz-object-lock-legal-hold",fp="x-amz-object-lock-mode",pp="x-amz-object-lock-retain-until-date",gp="x-amz-optional-object-attributes",mp="x-amz-object-size",yp="x-amz-restore",vp="x-amz-request-charged",bp="x-amz-request-payer",wp="x-amz-replication-status",kp="x-amz-storage-class",Sp="x-amz-sdk-checksum-algorithm",Ep="x-amz-server-side-encryption",xp="x-amz-server-side-encryption-aws-kms-key-id",Ap="x-amz-server-side-encryption-bucket-key-enabled",Tp="x-amz-server-side-encryption-context",Cp="x-amz-server-side-encryption-customer-algorithm",Rp="x-amz-server-side-encryption-customer-key",Op="x-amz-server-side-encryption-customer-key-md5",Pp="x-amz-tagging",_p="x-amz-tagging-count",Mp="x-amz-version-id",Ip="x-amz-write-offset-bytes",Np="x-amz-website-redirect-location",Fp="x-id";class $p extends(Dt.classBuilder().ep({...kd,DisableS3ExpressSessionAuth:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(e,t,r,n){return[pe(r,this.serialize,this.deserialize),Cs(r,e.getEndpointParameterInstructions()),Ao(r)]})).s("AmazonS3","CreateSession",{}).n("S3Client","CreateSessionCommand").f(Fd,Nd).ser(Kd).de(Xd).build()){}var Up="3.701.0";function Lp(e){return"string"==typeof e?0===e.length:0===e.byteLength}var Bp={name:"SHA-1"},Dp={name:"HMAC",hash:Bp},jp=new Uint8Array([218,57,163,238,94,107,75,13,50,85,191,239,149,96,24,144,175,216,7,9]);const zp={};function qp(){return"undefined"!=typeof window?window:"undefined"!=typeof self?self:zp}var Hp=function(){function e(e){this.toHash=new Uint8Array(0),void 0!==e&&(this.key=new Promise((function(t,r){qp().crypto.subtle.importKey("raw",Wp(e),Dp,!1,["sign"]).then(t,r)})),this.key.catch((function(){})))}return e.prototype.update=function(e){if(!Lp(e)){var t=Wp(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 qp().crypto.subtle.sign(Dp,t,e.toHash).then((function(e){return new Uint8Array(e)}))})):Lp(this.toHash)?Promise.resolve(jp):Promise.resolve().then((function(){return qp().crypto.subtle.digest(Bp,e.toHash)})).then((function(e){return Promise.resolve(new Uint8Array(e))}))},e.prototype.reset=function(){this.toHash=new Uint8Array(0)},e}();function Wp(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 Kp=["decrypt","digest","encrypt","exportKey","generateKey","importKey","sign","verify"];function Vp(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&&Kp.every((function(t){return"function"==typeof e[t]}))}(e.crypto.subtle)}var Qp=function(){function e(e){if(!Vp(qp()))throw new Error("SHA1 not supported");this.hash=new Hp(e)}return e.prototype.update=function(e,t){this.hash.update(Ai(e))},e.prototype.digest=function(){return this.hash.digest()},e.prototype.reset=function(){this.hash.reset()},e}(),Gp={name:"SHA-256"},Jp={name:"HMAC",hash:Gp},Xp=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]),Zp=function(){function e(e){this.toHash=new Uint8Array(0),this.secret=e,this.reset()}return e.prototype.update=function(e){if(!Ti(e)){var t=Ai(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 qp().crypto.subtle.sign(Jp,t,e.toHash).then((function(e){return new Uint8Array(e)}))})):Ti(this.toHash)?Promise.resolve(Xp):Promise.resolve().then((function(){return qp().crypto.subtle.digest(Gp,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){qp().crypto.subtle.importKey("raw",Ai(e.secret),Jp,!1,["sign"]).then(t,r)})),this.key.catch((function(){})))},e}();function Yp(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 eg(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]ig)throw new Error("Cannot hash more than 2^53 - 1 bits");for(;r>0;)this.buffer[this.bufferLength++]=e[t++],r--,this.bufferLength===tg&&(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%tg>=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+(rg[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}(),sg=function(){function e(e){this.secret=e,this.hash=new og,this.reset()}return e.prototype.update=function(e){if(!Ti(e)&&!this.error)try{this.hash.update(Ai(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 Yp(this,void 0,void 0,(function(){return eg(this,(function(e){return[2,this.digestSync()]}))}))},e.prototype.reset=function(){if(this.hash=new og,this.secret){this.outer=new og;var e=function(e){var t=Ai(e);if(t.byteLength>tg){var r=new og;r.update(t),t=r.digest()}var n=new Uint8Array(tg);return n.set(t),n}(this.secret),t=new Uint8Array(tg);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 ug=Gr(cg.exports);const dg=({serviceId:e,clientVersion:t})=>async r=>{const n="undefined"!=typeof window&&window?.navigator?.userAgent?ug.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 lg{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&&hg(t),new lg(t)}valueOf(){const e=this.bytes.slice(0),t=128&e[0];return t&&hg(e),parseInt(Be(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}}function hg(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,0===e[t]);t--);}class fg{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(lg.fromNumber(e.value.valueOf()).bytes,1),u;case"uuid":if(!xg.test(e.value))throw new Error(`Invalid UUID received: ${e.value}`);const d=new Uint8Array(17);return d[0]=9,d.set(Le(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 Fi;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 Fi).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 Tg{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 Cg{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 Rg{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 Og{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 Pg(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 _g{constructor({utf8Encoder:e,utf8Decoder:t}){this.eventStreamCodec=new Ag(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 Ig=e=>"function"==typeof ReadableStream&&e instanceof ReadableStream,Ng=e=>new Mg(e);const Fg=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()},$g=64,Ug=[1732584193,4023233417,2562383102,271733878];class Lg{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 Ee(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===$g&&(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%$g>=56){for(let t=this.bufferLength;t<$g;t++)e.setUint8(t,0);this.hashBuffer(),this.bufferLength=0}for(let t=this.bufferLength;t<56;t++)e.setUint8(t,0);e.setUint32(56,n>>>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=Dg(r,n,i,o,e.getUint32(0,!0),7,3614090360),o=Dg(o,r,n,i,e.getUint32(4,!0),12,3905402710),i=Dg(i,o,r,n,e.getUint32(8,!0),17,606105819),n=Dg(n,i,o,r,e.getUint32(12,!0),22,3250441966),r=Dg(r,n,i,o,e.getUint32(16,!0),7,4118548399),o=Dg(o,r,n,i,e.getUint32(20,!0),12,1200080426),i=Dg(i,o,r,n,e.getUint32(24,!0),17,2821735955),n=Dg(n,i,o,r,e.getUint32(28,!0),22,4249261313),r=Dg(r,n,i,o,e.getUint32(32,!0),7,1770035416),o=Dg(o,r,n,i,e.getUint32(36,!0),12,2336552879),i=Dg(i,o,r,n,e.getUint32(40,!0),17,4294925233),n=Dg(n,i,o,r,e.getUint32(44,!0),22,2304563134),r=Dg(r,n,i,o,e.getUint32(48,!0),7,1804603682),o=Dg(o,r,n,i,e.getUint32(52,!0),12,4254626195),i=Dg(i,o,r,n,e.getUint32(56,!0),17,2792965006),n=Dg(n,i,o,r,e.getUint32(60,!0),22,1236535329),r=jg(r,n,i,o,e.getUint32(4,!0),5,4129170786),o=jg(o,r,n,i,e.getUint32(24,!0),9,3225465664),i=jg(i,o,r,n,e.getUint32(44,!0),14,643717713),n=jg(n,i,o,r,e.getUint32(0,!0),20,3921069994),r=jg(r,n,i,o,e.getUint32(20,!0),5,3593408605),o=jg(o,r,n,i,e.getUint32(40,!0),9,38016083),i=jg(i,o,r,n,e.getUint32(60,!0),14,3634488961),n=jg(n,i,o,r,e.getUint32(16,!0),20,3889429448),r=jg(r,n,i,o,e.getUint32(36,!0),5,568446438),o=jg(o,r,n,i,e.getUint32(56,!0),9,3275163606),i=jg(i,o,r,n,e.getUint32(12,!0),14,4107603335),n=jg(n,i,o,r,e.getUint32(32,!0),20,1163531501),r=jg(r,n,i,o,e.getUint32(52,!0),5,2850285829),o=jg(o,r,n,i,e.getUint32(8,!0),9,4243563512),i=jg(i,o,r,n,e.getUint32(28,!0),14,1735328473),n=jg(n,i,o,r,e.getUint32(48,!0),20,2368359562),r=zg(r,n,i,o,e.getUint32(20,!0),4,4294588738),o=zg(o,r,n,i,e.getUint32(32,!0),11,2272392833),i=zg(i,o,r,n,e.getUint32(44,!0),16,1839030562),n=zg(n,i,o,r,e.getUint32(56,!0),23,4259657740),r=zg(r,n,i,o,e.getUint32(4,!0),4,2763975236),o=zg(o,r,n,i,e.getUint32(16,!0),11,1272893353),i=zg(i,o,r,n,e.getUint32(28,!0),16,4139469664),n=zg(n,i,o,r,e.getUint32(40,!0),23,3200236656),r=zg(r,n,i,o,e.getUint32(52,!0),4,681279174),o=zg(o,r,n,i,e.getUint32(0,!0),11,3936430074),i=zg(i,o,r,n,e.getUint32(12,!0),16,3572445317),n=zg(n,i,o,r,e.getUint32(24,!0),23,76029189),r=zg(r,n,i,o,e.getUint32(36,!0),4,3654602809),o=zg(o,r,n,i,e.getUint32(48,!0),11,3873151461),i=zg(i,o,r,n,e.getUint32(60,!0),16,530742520),n=zg(n,i,o,r,e.getUint32(8,!0),23,3299628645),r=qg(r,n,i,o,e.getUint32(0,!0),6,4096336452),o=qg(o,r,n,i,e.getUint32(28,!0),10,1126891415),i=qg(i,o,r,n,e.getUint32(56,!0),15,2878612391),n=qg(n,i,o,r,e.getUint32(20,!0),21,4237533241),r=qg(r,n,i,o,e.getUint32(48,!0),6,1700485571),o=qg(o,r,n,i,e.getUint32(12,!0),10,2399980690),i=qg(i,o,r,n,e.getUint32(40,!0),15,4293915773),n=qg(n,i,o,r,e.getUint32(4,!0),21,2240044497),r=qg(r,n,i,o,e.getUint32(32,!0),6,1873313359),o=qg(o,r,n,i,e.getUint32(60,!0),10,4264355552),i=qg(i,o,r,n,e.getUint32(24,!0),15,2734768916),n=qg(n,i,o,r,e.getUint32(52,!0),21,1309151649),r=qg(r,n,i,o,e.getUint32(16,!0),6,4149444226),o=qg(o,r,n,i,e.getUint32(44,!0),10,3174756917),i=qg(i,o,r,n,e.getUint32(8,!0),15,718787259),n=qg(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(Ug),this.buffer=new DataView(new ArrayBuffer($g)),this.bufferLength=0,this.bytesHashed=0,this.finished=!1}}function Bg(e,t,r,n,i,o){return((t=(t+e&4294967295)+(n+o&4294967295)&4294967295)<>>32-i)+r&4294967295}function Dg(e,t,r,n,i,o,s){return Bg(t&r|~t&n,e,t,i,o,s)}function jg(e,t,r,n,i,o,s){return Bg(t&n|r&~n,e,t,i,o,s)}function zg(e,t,r,n,i,o,s){return Bg(t^r^n,e,t,i,o,s)}function qg(e,t,r,n,i,o,s){return Bg(r^(t|~n),e,t,i,o,s)}const Hg="function"==typeof TextEncoder?new TextEncoder:null,Wg=e=>{if("string"==typeof e){if(Hg)return Hg.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}`)},Kg=["in-region","cross-region","mobile","standard","legacy"],Vg=()=>{const e="undefined"!=typeof window&&window?.navigator?.userAgent?ug.parse(window.navigator.userAgent):void 0,t=e?.platform?.type;return"tablet"===t||"mobile"===t},Qg=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(Vg()?"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 ${Kg.join(", ")}, got ${t}`)}})))(e),r=()=>t().then(_r),n=(e=>({apiVersion:"2006-03-01",base64Decoder:e?.base64Decoder??Se,base64Encoder:e?.base64Encoder??Te,disableHostPrefix:e?.disableHostPrefix??!1,endpointProvider:e?.endpointProvider??pd,extensions:e?.extensions??[],getAwsChunkedEncodingStream:e?.getAwsChunkedEncodingStream??Re,httpAuthSchemeProvider:e?.httpAuthSchemeProvider??bd,httpAuthSchemes:e?.httpAuthSchemes??[{schemeId:"aws.auth#sigv4",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4"),signer:new se},{schemeId:"aws.auth#sigv4a",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4a"),signer:new ae}],logger:e?.logger??new zr,sdkStreamMixin:e?.sdkStreamMixin??ze,serviceId:e?.serviceId??"S3",signerConstructor:e?.signerConstructor??ea,signingEscapePath:e?.signingEscapePath??!1,urlParser:e?.urlParser??Ss,useArnRegion:e?.useArnRegion??!1,utf8Decoder:e?.utf8Decoder??Ee,utf8Encoder:e?.utf8Encoder??Ae}))(e);return{...n,...e,runtime:"browser",defaultsMode:t,bodyLengthChecker:e?.bodyLengthChecker??Wg,credentialDefaultProvider:e?.credentialDefaultProvider??(e=>()=>Promise.reject(new Error("Credential is missing"))),defaultUserAgentProvider:e?.defaultUserAgentProvider??dg({serviceId:n.serviceId,clientVersion:Up}),eventStreamSerdeProvider:e?.eventStreamSerdeProvider??Ng,maxAttempts:e?.maxAttempts??3,md5:e?.md5??Lg,region:e?.region??(i="Region is missing",()=>Promise.reject(i)),requestHandler:Ne.create(e?.requestHandler??r),retryMode:e?.retryMode??(async()=>(await r()).retryMode||Os),sha1:e?.sha1??Qp,sha256:e?.sha256??ag,streamCollector:e?.streamCollector??Fe,streamHasher:e?.streamHasher??Fg,useDualstackEndpoint:e?.useDualstackEndpoint??(()=>Promise.resolve(false)),useFipsEndpoint:e?.useFipsEndpoint??(()=>Promise.resolve(false))};var i},Gg=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}},Jg=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}},Xg=e=>({httpAuthSchemes:e.httpAuthSchemes(),httpAuthSchemeProvider:e.httpAuthSchemeProvider(),credentials:e.credentials()});class Zg extends Bt{constructor(...[e]){const t=Qg(e||{});var r;const n=function(e){const t=be(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()=>Es(await ue(r)()):void 0,i=!!r,o={...e,endpoint:n,tls:t,isCustomEndpoint:i,useDualstackEndpoint:ue(e.useDualstackEndpoint??!1),useFipsEndpoint:ue(e.useFipsEndpoint??!1)};let s;return o.serviceConfiguredEndpoint=async()=>(e.serviceId&&!s&&(s=ks(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 ls(t);const e=await t();return ls(e)},useFipsEndpoint:async()=>{const e="string"==typeof t?t:await t();return!!ds(e)||("function"!=typeof r?Promise.resolve(!!r):r())}}})((e=>{const{retryStrategy:t}=e,r=ue(e.maxAttempts??3);return{...e,maxAttempts:r,retryStrategy:async()=>t||(await ue(e.retryMode)()===Rs.ADAPTIVE?new Bs(r):new Ls(r))}})((i=n,{...i,requestChecksumCalculation:ue(i.requestChecksumCalculation??V),responseChecksumValidation:ue(i.responseChecksumValidation??Q)}))))),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 co((async e=>r().send(new n({Bucket:e,SessionMode:"ReadWrite"})))),bucketEndpoint:e.bucketEndpoint??!1}})(wd(o),{session:[()=>this,$p]}),a=((e,t)=>{const r={...Gg(e),...$r(e),...I(e),...Jg(e)};return t.forEach((e=>e.configure(r))),{...e,...(i=r,{region:i.region()}),...Ur(r),...(n=r,{httpHandler:n.httpHandler()}),...Xg(r)};var n,i})(s,e?.extensions||[]);super(a),this.config=a,this.middlewareStack.use((e=>({applyToStack:t=>{t.add(as(e),us)}}))(this.config)),this.middlewareStack.use(Xs(this.config)),this.middlewareStack.use(ps(this.config)),this.middlewareStack.use(Qi(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}}),Gi)}})),this.middlewareStack.use(Zi(this.config)),this.middlewareStack.use(((e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:r})=>({applyToStack:n=>{n.addRelativeTo(de(e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:r}),le)}}))(this.config,{httpAuthSchemeParametersProvider:gd,identityProviderConfigProvider:async e=>new Xe({"aws.auth#sigv4":e.credentials,"aws.auth#sigv4a":e.credentials})})),this.middlewareStack.use(ve(this.config)),this.middlewareStack.use(Ro(this.config)),this.middlewareStack.use(W(this.config)),this.middlewareStack.use(no(this.config)),this.middlewareStack.use(yo(this.config)),this.middlewareStack.use((e=>({applyToStack:t=>{t.addRelativeTo(wo(e),ye)}}))(this.config))}destroy(){super.destroy()}}const Yg={name:"ssecMiddleware",step:"initialize",tags:["SSE"],override:!0},em=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?tm(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})}),Yg)}});function tm(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 rm extends(Dt.classBuilder().ep({...kd,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[pe(r,this.serialize,this.deserialize),Cs(r,e.getEndpointParameterInstructions()),Ao(r)]})).s("AmazonS3","DeleteObject",{}).n("S3Client","DeleteObjectCommand").f(void 0,void 0).ser(Vd).de(Zd).build()){}class nm extends(Dt.classBuilder().ep({...kd,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[pe(r,this.serialize,this.deserialize),Cs(r,e.getEndpointParameterInstructions()),Ki(r,{requestChecksumRequired:!1,requestValidationModeMember:"ChecksumMode",responseAlgorithms:["CRC32","CRC32C","SHA256","SHA1"]}),em(r),oo()]})).s("AmazonS3","GetObject",{}).n("S3Client","GetObjectCommand").f(Ud,$d).ser(Qd).de(Yd).build()){}class im extends(Dt.classBuilder().ep({...kd,Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}}).m((function(e,t,r,n){return[pe(r,this.serialize,this.deserialize),Cs(r,e.getEndpointParameterInstructions()),Ao(r)]})).s("AmazonS3","ListObjectsV2",{}).n("S3Client","ListObjectsV2Command").f(void 0,void 0).ser(Gd).de(el).build()){}class om extends(Dt.classBuilder().ep({...kd,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[pe(r,this.serialize,this.deserialize),Cs(r,e.getEndpointParameterInstructions()),Ki(r,{requestAlgorithmMember:"ChecksumAlgorithm",requestAlgorithmMemberHttpHeader:"x-amz-sdk-checksum-algorithm",requestChecksumRequired:!1}),eo(),Ao(r),em(r)]})).s("AmazonS3","PutObject",{}).n("S3Client","PutObjectCommand").f(Wd,Hd).ser(Jd).de(tl).build()){}class sm{constructor(e){this.config=e,this.taskQueue=new h(5),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return s(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 s(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);const c=new Zg({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o}});try{let e,t=[],r=!0;for(;r;){const i=yield c.send(new im({Bucket:n,Prefix:a,ContinuationToken:e}));i.Contents&&(t=t.concat(i.Contents)),e=i.NextContinuationToken,r=!!e}if(0===t.length)return[];const i=new Set;""===a||a.endsWith("/")||(a+="/");let o=t.map((e=>e.Key));for(const e of o){const t=e.substring(a.length).split("/")[0];i.add(t)}return Array.from(i)}catch(e){return console.error(e),[]}}))}deleteFile(e){return s(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 Zg({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 rm({Bucket:n,Key:c})),!0}catch(e){return console.error(e),!1}}))}}class am extends sm{constructor(e){super(e)}uploadFile(e,t){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){let{endpoint:r,region:n,bucketName:i,accessKeyId:o,secretAccessKey:s,dir:a}=this.config;const c=new Zg({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 om({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 s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(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 Zg({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 nm({Bucket:n,Key:c}));if(!e.Body)return console.error("No response body"),!1;return(yield e.Body.transformToByteArray()).buffer}catch(t){return console.error("Error downloading file:",t,e),!1}}))))))}))}}class cm{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 h(5)}retryOperation(e,t=0){return s(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 s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){try{yield this.listFiles(r.substring(0,r.lastIndexOf("/")));let n=r.split("/").pop()||"",i=new File([t],n,{lastModified:(new Date).getTime(),type:t.type}),o=this.client.getFileUploadLink(this.dir+"/"+r);const s=new URL(o);s.search="",o=s.toString();const a=btoa(this.username+":"+this.password),c=yield e.put(o,i,{headers:{Authorization:"Basic "+a},maxContentLength:1/0,maxBodyLength:1/0});return!(c.status>=300)||(console.error("Error occurred during file upload:",c),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){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});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 s(this,void 0,void 0,(function*(){try{return(yield this.client.getDirectoryContents(this.dir+"/"+e)).map((e=>e.basename))}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 s(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}}))}}class um{constructor(e){this.username=e.username,this.password=e.password,this.url=e.url,this.refreshTokenPromise=null,this.taskQueue=new h(3)}retryOperation(e,t=3){return s(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(t){return s(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=>e.name))||[]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return s(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 dm extends um{constructor(e){super(e)}getAuthHeader(){return`Basic ${btoa(`${this.username}:${this.password}`)}`}uploadFile(t,r){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(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 s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){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"});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 lm=["book","config","cover","font"];class hm{constructor(e,t,r){this.type=e,this.remote="dropbox"===e?new E(t,r):"microsoft"===e?new O(t,r):"google"===e?new A(t,r):"s3compatible"===e?new am(t):"webdav"===e?new cm(t):"docker"===e?new dm(t):"boxnet"===e?new k(t,r):"mega"===e?new C(t):"adrive"===e?new b(t,r):"pcloud"===e?new M(t,r):new P}downloadFile(e,t){return s(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 s(this,void 0,void 0,(function*(){return yield this.remote.uploadFile(r,t+"/"+e)}))}deleteFile(e,t){return s(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 s(this,void 0,void 0,(function*(){return yield this.remote.listFiles(e)}))}isExist(e,t){return s(this,void 0,void 0,(function*(){return(yield this.listFiles(t)).find((t=>-1!==t.indexOf(e)))}))}downloadAllFiles(){return s(this,void 0,void 0,(function*(){for(let e of lm){let t=yield this.listFiles(e);for(let r of t)yield this.downloadFile(r,e)}}))}authToken(e){return s(this,void 0,void 0,(function*(){return yield this.remote.authToken(e)}))}getAuthUrl(){return this.remote.getAuthUrl?this.remote.getAuthUrl():""}getStats(){return this.remote.taskQueue.getStats()}resetCounters(){this.remote.taskQueue.resetCounters()}}const fm={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 = ?"},pm={notes:"SELECT * FROM notes WHERE bookKey = ?",bookmarks:"SELECT * FROM bookmarks WHERE bookKey = ?",words:"SELECT * FROM words WHERE bookKey = ?",books:"SELECT * FROM books WHERE key = ?"},gm={notes:"DELETE FROM notes WHERE bookKey = ?",bookmarks:"DELETE FROM bookmarks WHERE bookKey = ?",words:"DELETE FROM words WHERE bookKey = ?"};function mm(e){for(const t in e)e.hasOwnProperty(t)&&(e[`temp-${t}`]=e[t]);return e}const ym={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 vm,bm={sqlStatement:{createTableStatement:mm({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:mm({notes:"SELECT * FROM notes",bookmarks:"SELECT * FROM bookmarks",books:"SELECT * FROM books",plugins:"SELECT * FROM plugins",words:"SELECT * FROM words"}),saveStatement:mm({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:mm({notes:"DELETE FROM notes",bookmarks:"DELETE FROM bookmarks",books:"DELETE FROM books",plugins:"DELETE FROM plugins",words:"DELETE FROM words"}),updateStatement:mm({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:mm({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:mm({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:mm(fm),getByBookKeyStatement:mm(pm),getByBookKeysStatement:mm({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:mm(gm)},jsonToSqlite:mm({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:mm(ym)};class wm{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 km{static generateBook(e,t,r,n,i,o,a){return new Promise(((c,u)=>s(this,void 0,void 0,(function*(){try{let s,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 a.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 a.getMetadata(),m=g.cover;break;case"txt":g=yield a.getMetadata(o),f=g.charset}let y=t.toUpperCase();s=(new Date).getTime()+"",c(new wm(s,u,d,h,r,m,y,l,n,p,i,f))}catch(e){console.error(e),u(e)}}))))}}vm=km,km.getRendtion=(e,t,r,n,i,o,s,a,c,u)=>{let d;var l,h;return"CACHE"===t?d=new u.CacheRender(e,{readerMode:r,animation:i,convertChinese:o,isDarkMode:a,isMobile:c}):"MOBI"===t||"AZW3"===t||"AZW"===t?d=new u.MobiRender(e,{readerMode:r,animation:i,convertChinese:o,isDarkMode:a,isMobile:c}):"EPUB"===t?d=new u.EpubRender(e,{readerMode:r,animation:i,convertChinese:o,isDarkMode:a,isMobile:c}):"TXT"===t?d=new u.TxtRender(e,{readerMode:r,animation:i,charset:n,convertChinese:o,parserRegex:s,isDarkMode:a,isMobile:c}):"MD"===t?d=new u.MdRender(e,{readerMode:r,animation:i,convertChinese:o,isDarkMode:a,isMobile:c}):"PDF"===t?d=new u.PdfRender(e,{readerMode:r,animation:i,convertChinese:o,isDarkMode:a,isMobile:c}):"FB2"===t?d=new u.Fb2Render(e,{readerMode:r,animation:i,convertChinese:o,isDarkMode:a,isMobile:c}):"DOCX"===t?d=new u.DocxRender(e,{readerMode:r,animation:i,convertChinese:o,isDarkMode:a,isMobile:c}):"HTML"===t||"XHTML"===t||"MHTML"===t||"HTM"===t||"XML"===t?d=new u.HtmlRender(e,{readerMode:r,format:t,animation:i,convertChinese:o,isDarkMode:a,isMobile:c}):"CBR"!==t&&"CBT"!==t&&"CBZ"!==t&&"CB7"!==t||(d=new u.ComicRender((l=e,h=new ArrayBuffer(l.byteLength),new Uint8Array(h).set(new Uint8Array(l)),h),{readerMode:r,format:t,animation:i,convertChinese:o,isDarkMode:a,isMobile:c})),d},km.initMobileBook=(e,t,r,n,i,o,a,c,u)=>s(void 0,void 0,void 0,(function*(){try{const s=yield fetch(e);if(!s.ok)throw new Error(`Failed to download book: ${s.status} ${s.statusText}`);const d=yield s.arrayBuffer();window.ReactNativeWebView.postMessage(JSON.stringify({event:"finish-download"})),window.file_content=d;let l=vm.getRendtion(d,t,r,n,i,o,a,u,"yes",window.Kookit);window.rendition=l;let h=document.getElementById("page-area");t&&"TXT"===t.toUpperCase()?yield window.rendition.renderTo(h,c):yield window.rendition.renderTo(h),window.rendition.on("rendered",(()=>{let e=window.rendition.getPosition();window.ReactNativeWebView.postMessage(JSON.stringify({event:"content-loaded",bookLocation:e})),window.rendition.tsTransform()})),window.rendition.on("page-changed",(()=>{let e=window.rendition.getPosition();window.ReactNativeWebView.postMessage(JSON.stringify({event:"page-changed",bookLocation:e}))})),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"}))}})),km.addMobileBook=(e,t,r,n,i,o,a="")=>s(void 0,void 0,void 0,(function*(){var s;try{if("PDF"===r.toUpperCase()&&i>314572800){t=t.replace(/\.[^/.]+$/,"");let e=r.toUpperCase(),s=(new Date).getTime()+"",a=new wm(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===(s=window.ReactNativeWebView)||void 0===s||s.postMessage(JSON.stringify({event:"finish-download"})),window.file_content=u;let d=vm.getRendtion(u,r.toUpperCase(),"","","","no",a,"no","yes",window.Kookit);window.rendition=d,t=t.replace(/\.[^/.]+$/,"");let l=yield km.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"}))}})),km.precacheMobileBook=(e,t)=>s(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 Sm=p.cloudUrl,Em=p.cloudCNUrl;class xm{constructor(e,t){this.TokenService=e,this.ConfigService=t,this.baseUrl="china"===t.getItem("serverRegion")?Em:Sm,this.refreshToken="",this.accessToken="",this.streamPromise=null}refreshUserToken(){return s(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 s(this,void 0,void 0,(function*(){return xm.requestQueue||(xm.requestQueue=[]),new Promise(((t,r)=>{xm.requestQueue.push({config:e,resolve:t,reject:r}),xm.processingQueue||this.processQueue()}))}))}processQueue(){return s(this,void 0,void 0,(function*(){if(!xm.processingQueue){xm.processingQueue=!0;try{for(;xm.requestQueue.length>0;){const e=xm.requestQueue.shift();try{let t=yield this.executeRequest(e.config);e.resolve(t)}catch(t){e.reject(t)}}}finally{xm.processingQueue=!1}}}))}executeRequest(t){return s(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 s(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>s(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,a)=>{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=>s(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 s(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>s(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,o)=>s(this,void 0,void 0,(function*(){let o=this.ConfigService.getItem("appVersion"),s=this.ConfigService.getItem("appPlatform");const a=yield fetch(this.baseUrl+e.url,{method:"POST",headers:{"Content-Type":"text/event-stream",Authorization:"Bearer "+r,"X-Request-ID":n,"X-App-Version":o||"1.0.0","X-App-Platform":s||"web"},body:JSON.stringify(e.data)});if(!a.body)throw new Error("Response body is null");const c=a.body.pipeThrough(new TextDecoderStream).getReader();for(;;){const{value:e,done:r}=yield c.read();if(r){t({done:!0});break}if(e)if(e.includes('"code":400')||e.includes('"code":401')||e.includes('"code":402')){let t=JSON.parse(e);402===t.code&&(yield this.refreshUserToken()),i(t)}else e.split("\n").forEach((e=>{if(e.startsWith("data:")){const r=JSON.parse(e.substring(5));t(r.data)}}))}i({code:200,data:{done:!0}})}))))}finally{this.streamPromise=null}})))()),this.streamPromise}))}}xm.processingQueue=!1,xm.requestQueue=[];class Am extends xm{constructor(e,t){super(e,t)}getTransStream(e,t,r){return s(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 s(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 s(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 s(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 s(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 s(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 s(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 s(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 s(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 Tm extends xm{constructor(e,t){super(e,t)}encryptToken(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/encrypt_token",data:e};return yield this.requestWithRetry(t)}))}decryptToken(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/decrypt_token",data:e};return yield this.requestWithRetry(t)}))}authThirdToken(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/auth_token",data:e};return yield this.requestWithRetry(t)}))}refreshThirdToken(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/refresh_token",data:e};return yield this.requestWithRetry(t)}))}s3Upload(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/s3_upload",data:e};return yield this.executeRequest(t)}))}s3Download(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/s3_download",data:e};return yield this.executeRequest(t)}))}s3List(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/s3_list",data:e};return yield this.executeRequest(t)}))}s3Delete(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/s3_delete",data:e};return yield this.executeRequest(t)}))}getSyncData(){return s(this,void 0,void 0,(function*(){return yield this.requestWithRetry({method:"get",url:"/api/v1/pro/thirdparty/get_sync_data"})}))}updateSyncData(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/update_sync_data",data:e};return yield this.requestWithRetry(t)}))}}class Cm extends xm{constructor(e,t){super(e,t)}loginRegister(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/public/user/login_register",data:e};return yield this.requestWithRetry(t)}))}logout(){return s(this,void 0,void 0,(function*(){return yield this.requestWithRetry({method:"post",url:"/api/v1/member/user/logout"})}))}getLogins(){return s(this,void 0,void 0,(function*(){return yield this.requestWithRetry({method:"post",url:"/api/v1/member/user/get_logins"})}))}getLoginsV2(){return s(this,void 0,void 0,(function*(){return yield this.requestWithRetry({method:"post",url:"/api/v1/member/user/get_logins_v2"})}))}addLogin(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/member/user/add_login",data:e};return yield this.requestWithRetry(t)}))}removeLogin(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/member/user/remove_login",data:e};return yield this.requestWithRetry(t)}))}getUserInfo(){return s(this,void 0,void 0,(function*(){return yield this.requestWithRetry({method:"post",url:"/api/v1/member/user/get_info"})}))}updateUserConfig(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/member/user/update_config",data:e};return yield this.requestWithRetry(t)}))}getTempToken(){return s(this,void 0,void 0,(function*(){return yield this.requestWithRetry({method:"get",url:"/api/v1/member/user/get_temp_token"})}))}sendEmailCode(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/public/user/send_email_code",data:e};return yield this.requestWithRetry(t)}))}checkEmailRegistration(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/public/user/check_email_registration",data:e};return yield this.requestWithRetry(t)}))}redeemCode(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/member/user/redeem_code",data:e};return yield this.requestWithRetry(t)}))}deleteAccount(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/member/user/delete_account",data:e};return yield this.requestWithRetry(t)}))}}var Rm={getAuthUrl:(e,t)=>{let r="";if("github"===e?r=`https://github.com/login/oauth/authorize?client_id=${g.githubClientId}&redirect_uri=${g.callbackUrl}&scope=${m.github.scopes.join(" ")}&response_type=code`:"google"===e?r=`https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${g.callbackUrl}&prompt=consent&response_type=code&client_id=${g.googleClientId}&scope=${m.google.scopes.join(" ")}&access_type=offline`:"facebook"===e?r=`https://www.facebook.com/v12.0/dialog/oauth?client_id=${g.facebookClientId}&redirect_uri=${g.callbackUrl}&scope=&response_type=code`:"microsoft"===e&&(r=`https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=${g.microsoftClientId}&scope=${m.microsoft.scopes.join(" ")}&response_type=code&redirect_uri=${g.callbackUrl}`),"manual"===t)return r;let n=JSON.stringify({deeplink:"desktop"===t?"koodo-reader://callback":"browser"===t?"https://web.koodoreader.com/#/login":"",service:e});return`${r}&state=${"state|"+encodeURIComponent(n)}`}};class Om{static CompareDatabase(e,t,r){return s(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 s(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 s(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 s(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 s(this,void 0,void 0,(function*(){let o=[];for(let t of c){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 c)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 s(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 s(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 s(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 Pm=(_m=class{static getItem(e){return localStorage.getItem(e)}static setItem(e,t){localStorage.setItem(e,t)}static removeItem(e){localStorage.removeItem(e)}},Mm="browser",class extends _m{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:Mm,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 _m,Mm;class Im{static saveAllToken(e){return s(this,void 0,void 0,(function*(){if(e)if(o){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 s(this,void 0,void 0,(function*(){if(o){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 s(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 s(this,void 0,void 0,(function*(){return JSON.parse((yield this.getAllToken())||"{}")[e]||null}))}static deleteToken(e){return s(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 s(this,void 0,void 0,(function*(){try{let t=yield this.getFingerprint();const r=yield $m(t),n="undefined"!=typeof crypto&&crypto.subtle?yield function(e,t,r={alg:"HS256",typ:"JWT"}){return s(this,void 0,void 0,(function*(){const n=Nm((new TextEncoder).encode(JSON.stringify(r))),i=Nm((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}.${Nm(yield crypto.subtle.sign("HMAC",s,o))}`}))}(e,r):function(e,t){if(!e||!t)return"";const r=l((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<=ry}}function Py(e){return function(t){return null==t?void 0:t[e]}}var _y=Py("byteLength"),My=Oy(_y),Iy=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var Ny=Km?function(e){return Xm?Xm(e)&&!Sy(e):My(e)&&Iy.test(Hm.call(e))}:Ry(!1),Fy=Py("length");function $y(e,t){t=function(e){for(var t={},r=e.length,n=0;n":">",'"':""","'":"'","`":"`"},Tv=xv(Av),Cv=xv(nv(Av)),Rv=By.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},Ov=/(.)^/,Pv={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},_v=/\\|'|\r|\n|\u2028|\u2029/g;function Mv(e){return"\\"+Pv[e]}var Iv=/^\s*(\w|\$)+\s*$/;var Nv=0;function Fv(e,t,r,n,i){if(!(n instanceof t))return e.apply(r,i);var o=uv(e.prototype),s=e.apply(o,i);return iy(s)?s:o}var $v=ny((function(e,t){var r=$v.placeholder,n=function(){for(var i=0,o=t.length,s=Array(o),a=0;a1)Bv(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 Wv=$v(Hv,2);function Kv(e,t,r){t=wv(t,r);for(var n,i=Uy(e),o=0,s=i.length;o0?0:i-1;o>=0&&o0?s=o>=0?o:Math.max(o+a,s):a=o>=0?Math.min(o+1,a):o+a+1;else if(r&&o&&a)return n[o=r(n,i)]===i?o:-1;if(i!=i)return(o=t(qm.call(n,s,a),Cy))>=0?o+s:-1;for(o=e>0?s:a-1;o>=0&&o=3;return function(t,r,n,i){var o=!Lv(t)&&Uy(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 db=ny((function(e,t,r){var n,i;return yy(t)?i=t:(t=lv(t),n=t.slice(0,-1),t=t[t.length-1]),rb(e,(function(e){var o=i;if(!o){if(n&&n.length&&(e=hv(e,n)),null==e)return;o=e[t]}return null==o?o:o.apply(e,r)}))}));function lb(e,t){return rb(e,mv(t))}function hb(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=Lv(e)?e:rv(e)).length;ao&&(o=n);else t=wv(t,r),tb(e,(function(e,r,n){((i=t(e,r,n))>s||i===-1/0&&o===-1/0)&&(o=e,s=i)}));return o}var fb=/[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;function pb(e){return e?Ey(e)?qm.call(e):cy(e)?e.match(fb):Lv(e)?rb(e,pv):rv(e):[]}function gb(e,t,r){if(null==t||r)return Lv(e)||(e=rv(e)),e[Sv(e.length-1)];var n=pb(e),i=Fy(n);t=Math.max(Math.min(t,i),0);for(var o=i-1,s=0;s1&&(n=yv(n,t[1])),t=Hy(e)):(n=kb,t=Bv(t,!1,!1),e=Object(e));for(var i=0,o=t.length;i1&&(r=t[1])):(t=rb(Bv(t,!1,!1),String),n=function(e,r){return!ub(t,r)}),Sb(e,n,r)}));function xb(e,t,r){return qm.call(e,0,Math.max(0,e.length-(null==t||r?1:t)))}function Ab(e,t,r){return null==e||e.length<1?null==t||r?void 0:[]:null==t||r?e[0]:xb(e,e.length-t)}function Tb(e,t,r){return qm.call(e,null==t||r?1:t)}var Cb=ny((function(e,t){return t=Bv(t,!0,!0),sb(e,(function(e){return!ub(t,e)}))})),Rb=ny((function(e,t){return Cb(e,t)}));function Ob(e,t,r,n){sy(t)||(n=r,r=t,t=!1),null!=r&&(r=wv(r,n));for(var i=[],o=[],s=0,a=Fy(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=Ev()-i;t>u?n=setTimeout(c,t-u):(n=null,r||(s=e.apply(a,o)),n||(o=a=null))},u=ny((function(u){return a=this,o=u,i=Ev(),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 $v(t,e)},negate:qv,compose:function(){var e=arguments,t=e.length-1;return function(){for(var r=t,n=e[t].apply(this,arguments);r--;)n=e[r].call(this,n);return n}},after:function(e,t){return function(){if(--e<1)return t.apply(this,arguments)}},before:Hv,once:Wv,findKey:Kv,findIndex:Qv,findLastIndex:Gv,sortedIndex:Jv,indexOf:Zv,lastIndexOf:Yv,find:eb,detect:eb,findWhere:function(e,t){return eb(e,gv(t))},each:tb,forEach:tb,map:rb,collect:rb,reduce:ib,foldl:ib,inject:ib,reduceRight:ob,foldr:ob,filter:sb,select:sb,reject:function(e,t,r){return sb(e,qv(wv(t)),r)},every:ab,all:ab,some:cb,any:cb,contains:ub,includes:ub,include:ub,invoke:db,pluck:lb,where:function(e,t){return sb(e,gv(t))},max:hb,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=Lv(e)?e:rv(e)).length;an||void 0===r)return 1;if(re.map((e=>e.name)),Lb=e=>e.map((e=>e.key)),Bb=(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 Db{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?Bb(i,n).reverse():Bb(i,n);if(2===t.sort){let r=Ub(e),n=Ub(e).sort();return 1===t.order?Bb(n,r).reverse():Bb(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=Lb(e);return 1===t.order?Bb($b.union(n,i),i).reverse():Bb($b.union(n,i),i)}if(5===t.sort){let r=Lb(e),n=(e=>$b.sortBy(e.map((e=>({key:e.key,author:e.author}))),"author").map((e=>e.key)))(e);return 1===t.order?Bb(n,r).reverse():Bb(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=Lb(e);return 1===t.order?Bb(n,i).reverse():Bb(n,i)}}static sortNotes(e,t,r=[]){if(3===t.sort){let r=$b.clone(e).reverse(),n=$b.uniq(e.map((e=>({chapter:e.chapter,chapterIndex:e.chapterIndex}))));n=1===t.order?$b.sortBy(n,"chapterIndex"):$b.sortBy(n,"chapterIndex").reverse();let i=$b.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=$b.clone(e).reverse(),n=$b.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=$b.clone(e).reverse(),i=$b.uniq(e.map((e=>{let t=$b.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=$b.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=$b.clone(e).reverse(),n=$b.uniq(e.map((e=>({chapter:e.chapter,chapterIndex:parseInt(JSON.parse(e.cfi).chapterDocIndex)}))));n=1===t.order?$b.sortBy(n,"chapterIndex"):$b.sortBy(n,"chapterIndex").reverse();let i=$b.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 jb{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;}${"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;}`:""}`}static getCustomCss(e,t=!1){return`font-size: ${t?"":e.getReaderConfig("fontSize")?e.getReaderConfig("fontSize"):""}px !important;line-height: ${e.getReaderConfig("lineHeight")||""} !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":""} !important;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;${t?"":"padding:0px !important;"}word-wrap: break-word !important; writing-mode: horizontal-tb !important; `}}class zb{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{km as BookHelper,f as CommonTool,Pm as ConfigService,y as KookitConfig,Rm as LoginHelper,Am as ReaderRequest,zb as SearchUtil,Db as SortUtil,bm as SqlStatement,jb as StyleHelper,Om as SyncHelper,hm as SyncUtil,Tm as ThirdpartyRequest,Im as TokenService,Cm 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{isElectron as o}from"react-device-detect";function s(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 a=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,c=["books","notes","bookmarks","plugins","words"],u=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}class h{constructor(e){this.queue=[],this.runningTasks=0,this.totalTasks=0,this.completedTasks=0,this.hasFailedTasks=!1,this.maxConcurrency=e}addTask(e){return s(this,void 0,void 0,(function*(){return this.totalTasks++,new Promise(((t,r)=>{const n=()=>s(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:c,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:u,arrayBufferToBase64:d,generateSHA256Hash:function(e){return s(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):l(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"]};const p={publicUrl:"https://api.960960.xyz",cloudUrl:"https://cloud.960960.xyz",cloudCNUrl:"https://cloud.koodoreader.cn",devUrl:"http://192.168.28.159:8000"},g={callbackUrl:"https://web.koodoreader.com/",dropboxClientId:"vnc67byrssocvy1",pcloudClientId:"pg8ten0B3vH",boxClientId:"ltimecqanmpxoaicn9qw3es6l3sdl1ya",microsoftClientId:"506df58a-29ab-4020-afc5-6f423dc80f35",googleClientId:"1051055003225-ph1f5fvh328dhv7bco5jitlnfhg6ks2t.apps.googleusercontent.com",facebookClientId:"2845583825559500",githubClientId:"Ov23liJVzfvJMMEEZ8v2",adriveClientId:"a128ae7b9c094545af623de61dc0a1ef"},m={google:{clientId:g.googleClientId,scopes:["openid email profile"],usePKCE:!1,responseType:"code",redirectUri:g.callbackUrl,extraParams:{prompt:"consent",scope:"openid email profile"}},microsoft:{clientId:g.microsoftClientId,scopes:["openid","profile","User.Read","offline_access"],usePKCE:!1,responseType:"code",redirectUri:g.callbackUrl,extraParams:{scope:"openid profile User.Read offline_access"}},facebook:{clientId:g.facebookClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:g.callbackUrl,extraParams:{scope:""}},github:{clientId:g.githubClientId,scopes:["user:email"],usePKCE:!1,responseType:"code",redirectUri:g.callbackUrl,extraParams:{scope:"user:email"}},email:{clientId:"",scopes:[],usePKCE:!1,responseType:"code",redirectUri:g.callbackUrl,extraParams:{scope:""}}};var y={CloudConfig:p,ThirdpartyConfig:g,LoginAuthRequest:m,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"},email:{authorizationEndpoint:"",tokenEndpoint:""}},DriveAuthRequest:{dropbox:{clientId:g.dropboxClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:g.callbackUrl,extraParams:{token_access_type:"offline"}},boxnet:{clientId:g.boxClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:g.callbackUrl,extraParams:{grant_type:"authorization_code",box_subject_type:"enterprise",scope:"root_readwrite"}},pcloud:{clientId:g.pcloudClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:g.callbackUrl,extraParams:{grant_type:"authorization_code"}},adrive:{clientId:g.adriveClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:g.callbackUrl,extraParams:{grant_type:"authorization_code",scope:"user:base,file:all:write,file:all:read"}},microsoft:{clientId:g.microsoftClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:g.callbackUrl,extraParams:{scope:"files.readwrite.appfolder offline_access"}},google:{clientId:g.googleClientId,scopes:[],usePKCE:!1,responseType:"code",redirectUri:g.callbackUrl,extraParams:{prompt:"consent",scope:"https://www.googleapis.com/auth/drive.appdata",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"}}};class v{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.driveId="",this.refreshTokenPromise=null,this.taskQueue=new h(1),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=5){return s(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 s(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 s(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(t){return s(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=>e.name)))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return s(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 s(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 s(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=(()=>s(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 s(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"adrive",redirect_uri:g.callbackUrl,code:e})).data.refresh_token}))}getAuthUrl(){return`https://openapi.alipan.com/oauth/authorize?${new URLSearchParams({response_type:"code",client_id:g.adriveClientId,redirect_uri:g.callbackUrl,grant_type:"authorization_code",scope:"user:base,file:all:write,file:all:read"}).toString()}`}}class b extends v{constructor(e,t){super(e,t)}uploadFile(t,r){return s(this,void 0,void 0,(function*(){return new Promise(((n,i)=>s(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)=>s(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: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"});r(a.data)}catch(e){console.error("Error downloading file:",e),r(!1)}}))))}}class w{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new h(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return s(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 s(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(t){return s(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=>e.name)))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return s(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 s(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=(()=>s(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 s(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"boxnet",redirect_uri:g.callbackUrl,code:e})).data.refresh_token}))}getAuthUrl(){return`https://account.box.com/api/oauth2/authorize?${new URLSearchParams({response_type:"code",client_id:g.boxClientId,redirect_uri:g.callbackUrl,grant_type:"authorization_code",box_subject_type:"enterprise",scope:"root_readwrite"}).toString()}`}}class k extends w{constructor(e,t){super(e,t)}uploadFile(t,r){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(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 s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(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 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"});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 S{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new h(3)}retryOperation(e,t=3){return s(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(t){return s(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=>e.name)))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return s(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 s(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=(()=>s(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 s(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dropbox",redirect_uri:g.callbackUrl,code:e})).data.refresh_token}))}getAuthUrl(){return`https://www.dropbox.com/oauth2/authorize?response_type=code&token_access_type=offline&client_id=${g.dropboxClientId}&redirect_uri=${g.callbackUrl}`}}class E extends S{constructor(e,t){super(e,t)}uploadFile(t,r){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(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 s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){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"});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 x{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new h(3)}retryOperation(e,t=3){return s(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 s(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&spaces=appDataFolder&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 s(this,void 0,void 0,(function*(){const r=yield this.refreshToken(),n=yield this.getFolderId(t);if(n)return n;const i={name:t,mimeType:"application/vnd.google-apps.folder",parents:["appDataFolder"]};try{return(yield e.post("https://www.googleapis.com/drive/v3/files",i,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}catch(e){throw console.error("Error occurred during folder creation:",e),e}}))}getFolderId(t){return s(this,void 0,void 0,(function*(){const r=yield this.refreshToken(),n=`https://www.googleapis.com/drive/v3/files?q=name='${t}'+and+mimeType='application/vnd.google-apps.folder'+and+'appDataFolder'+in+parents&spaces=appDataFolder&fields=files(id,name)`;try{const t=(yield e.get(n,{headers:{Authorization:`Bearer ${r}`}})).data.files;return t.length>0?t[0].id:null}catch(e){throw console.error("Error occurred during fetching folder ID:",e),e}}))}listFiles(t){return s(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&spaces=appDataFolder&fields=nextPageToken,files(id,name)&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=>e.name)))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQue(e)}))))))}))}deleteFileWithoutQue(t){return s(this,void 0,void 0,(function*(){const r=t.split("/")[1],n=t.split("/")[0],i=yield this.getFolderId(n),o=yield this.refreshToken(),s=yield this.getFileId(r,i);if(""===s)return console.error("File not found:",r),!0;try{const t=yield e.delete(`https://www.googleapis.com/drive/v3/files/${s}`,{headers:{Authorization:`Bearer ${o}`}});return console.error("File deleted:",t),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return s(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=(()=>s(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 s(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"google",redirect_uri:g.callbackUrl,code:e})).data.refresh_token}))}getAuthUrl(){return`https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${g.callbackUrl}&prompt=consent&response_type=code&client_id=${g.googleClientId}&scope=https://www.googleapis.com/auth/drive.appdata&access_type=offline`}}class A extends x{constructor(e,t){super(e,t)}uploadFile(t,r){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(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(),c=a(s||""),u=r.split("/")[0],d=yield this.checkFolder(u),l=yield this.getFileId(i||"",d);const h={mimeType:c,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 s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){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"});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 s(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 T{constructor(e){this.folderCreationLocks=new Map,this.config=e,this.taskQueue=new h(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return s(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 s(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 s(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 s(this,void 0,void 0,(function*(){const r=`${e.nodeId}_${t}`;if(this.folderCreationLocks.has(r))return yield this.folderCreationLocks.get(r);const n=(()=>s(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 s(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=>e.name));return r}catch(e){return console.error("Error listing MEGA files:",e),[]}}))}deleteFile(e){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(e){return s(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 C extends T{constructor(e){super(e)}uploadFile(e,t){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(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 s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(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));if(!i)return!0;return(yield i.downloadBuffer()).buffer}catch(e){return console.error("Error occurred during MEGA file download:",e),!1}}))))))}))}}class R{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new h(3)}retryOperation(e,t=3){return s(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(t){return s(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let n=[],i=`https://graph.microsoft.com/v1.0/me/drive/special/approot:/${t}:/children`;for(;i;){const t=yield e.get(i,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(t.status>=300)break;const o=t.data.value||[];n=n.concat(o),i=t.data["@odata.nextLink"]||""}return[...new Set(n.map((e=>e.name)))]}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return s(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield e.delete(`https://graph.microsoft.com/v1.0/me/drive/special/approot:/${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 s(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=(()=>s(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 s(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"microsoft",redirect_uri:g.callbackUrl,code:e})).data.refresh_token}))}getAuthUrl(){return`https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=${g.microsoftClientId}&scope=files.readwrite.appfolder offline_access&response_type=code&redirect_uri=${g.callbackUrl}`}}class O extends R{constructor(e,t){super(e,t)}uploadFile(t,r){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(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="https://graph.microsoft.com/v1.0/me/drive/special/approot:/"+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 s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=`https://graph.microsoft.com/v1.0/me/drive/special/approot:/${t}:/content`,i=yield e.get(n,{responseType:"arraybuffer",headers:{Authorization:"Bearer "+r},maxContentLength:1/0,maxBodyLength:1/0});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 P{downloadFile(e,t){return s(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}uploadFile(e,t){return s(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}listFiles(e){return s(this,void 0,void 0,(function*(){return new Promise((e=>{e([])}))}))}authToken(e){return s(this,void 0,void 0,(function*(){return new Promise((e=>{e("")}))}))}getAuthUrl(){return""}}class _{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.taskQueue=new h(3)}retryOperation(e,t=5){return s(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 s(this,void 0,void 0,(function*(){try{return 0===(yield e.get("https://api.pcloud.com/listfolder",{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error checking folder:",e),!1}}))}createFolder(t,r){return s(this,void 0,void 0,(function*(){try{return 0===(yield e.get("https://api.pcloud.com/createfolderifnotexists",{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error creating folder:",e),!1}}))}listFiles(t){return s(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield e.get("https://api.pcloud.com/listfolder",{params:{access_token:r,path:"/"+t,recursive:0}});return 0!==n.data.result?[]:n.data.metadata.contents.map((e=>e.name))}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return s(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield e.get("https://api.pcloud.com/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 s(this,void 0,void 0,(function*(){return this.config.refresh_token}))}authToken(e){return s(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"pcloud",redirect_uri:g.callbackUrl,code:e})).data.access_token}))}getAuthUrl(){return`https://my.pcloud.com/oauth2/authorize?client_id=${g.pcloudClientId}&response_type=code&redirect_uri=${g.callbackUrl}`}}class M extends _{constructor(e,t){super(e,t)}uploadFile(t,r){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(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("https://api.pcloud.com/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 s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),n=yield e.get("https://api.pcloud.com/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});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 I=e=>{let t=e.httpHandler;return{setHttpHandler(e){t=e},httpHandler:()=>t,updateHttpClientConfig(e,r){t.updateHttpClientConfig(e,r)},httpHandlerConfigs:()=>t.httpHandlerConfigs()}};var N,F,$,U,L;!function(e){e.HEADER="header",e.QUERY="query"}(N||(N={})),function(e){e.HEADER="header",e.QUERY="query"}(F||(F={})),function(e){e.HTTP="http",e.HTTPS="https"}($||($={})),function(e){e.MD5="md5",e.CRC32="crc32",e.CRC32C="crc32c",e.SHA1="sha1",e.SHA256="sha256"}(U||(U={})),function(e){e[e.HEADER=0]="HEADER",e[e.TRAILER=1]="TRAILER"}(L||(L={}));const B="__smithy_context";var D,j;!function(e){e.PROFILE="profile",e.SSO_SESSION="sso-session",e.SERVICES="services"}(D||(D={})),function(e){e.HTTP_0_9="http/0.9",e.HTTP_1_0="http/1.0",e.TDS_8_0="tds/8.0"}(j||(j={}));class z{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 z({...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 z.clone(this)}}class q{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 H={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0},W=e=>({applyToStack:t=>{t.add(function(e){return t=>async r=>{const{request:n}=r;return z.isInstance(n)&&n.body&&"node"===e.runtime&&"FetchHttpHandler"!==e.requestHandler?.constructor?.name&&(n.headers={...n.headers,Expect:"100-continue"}),t({...r,request:n})}}(e),H)}}),K="WHEN_SUPPORTED",V=K,Q=K;var G,J;!function(e){e.MD5="MD5",e.CRC32="CRC32",e.CRC32C="CRC32C",e.SHA1="SHA1",e.SHA256="SHA256"}(G||(G={})),function(e){e.HEADER="header",e.TRAILER="trailer"}(J||(J={}));const X=G.MD5,Z=G.CRC32;var Y;function ee(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"}(Y||(Y={}));const te=e=>q.isInstance(e)?e.headers?.date??e.headers?.Date:void 0,re=e=>new Date(Date.now()+e),ne=(e,t)=>{const r=Date.parse(e);return((e,t)=>Math.abs(re(t).getTime()-e)>=3e5)(r,t)?r-Date.now():t},ie=(e,t)=>{if(!t)throw new Error(`Property \`${e}\` is not resolved for AWS SDK SigV4Auth`);return t},oe=async e=>{const t=ie("context",e.context),r=ie("config",e.config),n=t.endpointV2?.properties?.authSchemes?.[0],i=ie("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 se{async sign(e,t,r){if(!z.isInstance(e))throw new Error("The request is not an instance of `HttpRequest` and cannot be signed");const n=await oe(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:re(i.systemClockOffset),signingRegion:s,signingService:a})}errorHandler(e){return t=>{const r=t.ServerTime??te(t.$response);if(r){const n=ie("config",e.config),i=n.systemClockOffset;n.systemClockOffset=ne(r,n.systemClockOffset);n.systemClockOffset!==i&&t.$metadata&&(t.$metadata.clockSkewCorrected=!0)}throw t}}successHandler(e,t){const r=te(e);if(r){const e=ie("config",t.config);e.systemClockOffset=ne(r,e.systemClockOffset)}}}class ae extends se{async sign(e,t,r){if(!z.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 oe(r),c=(await(n.sigv4aSigningRegionSet?.())??s??[o]).join(",");return await i.sign(e,{signingDate:re(n.systemClockOffset),signingRegion:c,signingService:a})}}const ce=e=>e[B]||(e[B]={}),ue=e=>{if("function"==typeof e)return e;const t=Promise.resolve(e);return()=>t};const de=(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=ce(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)},le={step:"serialize",tags:["HTTP_AUTH_SCHEME"],name:"httpAuthSchemeMiddleware",override:!0,relation:"before",toMiddleware:"endpointV2Middleware"},he={name:"deserializerMiddleware",step:"deserialize",tags:["DESERIALIZER"],override:!0},fe={name:"serializerMiddleware",step:"serialize",tags:["SERIALIZER"],override:!0};function pe(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),he),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),fe)}}}const ge=e=>e=>{throw e},me=(e,t)=>{},ye={step:"finalizeRequest",tags:["HTTP_SIGNING"],name:"httpSigningMiddleware",aliases:["apiKeyMiddleware","tokenMiddleware","awsAuthMiddleware"],override:!0,relation:"after",toMiddleware:"retryMiddleware"},ve=e=>({applyToStack:e=>{e.addRelativeTo(((e,t)=>async r=>{if(!z.isInstance(r.request))return e(r);const n=ce(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||ge)(i));return(s.successHandler||me)(a.response,i),a}),ye)}}),be=e=>{if("function"==typeof e)return e;const t=Promise.resolve(e);return()=>t},we={},ke=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);we[r]=e,ke[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;we[r]=n,ke[n]=r}for(let e=0;e<10;e++){we[e.toString(10)]=e+52;const t=e.toString(10),r=e+52;we[t]=r,ke[r]=t}we["+"]=62,ke[62]="+",we["/"]=63,ke[63]="/";const Se=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)},Ee=e=>(new TextEncoder).encode(e),xe=e=>"string"==typeof e?Ee(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e),Ae=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 Te(e){let t;t="string"==typeof e?Ee(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 Ce extends Uint8Array{static fromString(e,t="utf-8"){if("string"==typeof e)return function(e,t){return"base64"===t?Ce.mutate(Se(e)):Ce.mutate(Ee(e))}(e,t);throw new Error(`Unsupported conversion from ${typeof e} to Uint8ArrayBlobAdapter.`)}static mutate(e){return Object.setPrototypeOf(e,Ce.prototype),e}transformToString(e="utf-8"){return function(e,t="utf-8"){return"base64"===t?Te(e):Ae(e)}(this,e)}}const Re=(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`)}})},Oe=e=>encodeURIComponent(e).replace(/[!'()*]/g,Pe),Pe=e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`;function _e(e,t){return new Request(e,t)}function Me(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 Ie={supported:void 0};class Ne{static create(e){return"function"==typeof e?.handle?e:new Ne(e)}constructor(e){"function"==typeof e?this.configProvider=e().then((e=>e||{})):(this.config=e??{},this.configProvider=Promise.resolve(this.config)),void 0===Ie.supported&&(Ie.supported=Boolean("undefined"!=typeof Request&&"keepalive"in _e("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=Oe(r),Array.isArray(n))for(let e=0,i=n.length;e{};const p=_e(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 q({headers:r,reason:e.statusText,statusCode:e.status,body:e.body})}:e.blob().then((t=>({response:new q({headers:r,reason:e.statusText,statusCode:e.status,body:t})})))})),Me(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 Fe=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 $e={},Ue={};for(let e=0;e<256;e++){let t=e.toString(16).toLowerCase();1===t.length&&(t=`0${t}`),$e[e]=t,Ue[t]=e}function Le(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),je="The stream has already been transformed.",ze=e=>{if(!qe(e)&&!De(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(je);return t=!0,await Fe(e)};return Object.assign(e,{transformToByteArray:r,transformToString:async e=>{const t=await r();if("base64"===e)return Te(t);if("hex"===e)return Be(t);if(void 0===e||"utf8"===e||"utf-8"===e)return Ae(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(je);if(t=!0,qe(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(De(e))return e;throw new Error(`Cannot transform payload to web stream, got ${e}`)}})},qe=e=>"function"==typeof Blob&&e instanceof Blob;const He="function"==typeof ReadableStream?ReadableStream:function(){};class We extends He{}const Ke=({expectedChecksum:e,checksum:t,source:r,checksumSourceLocation:n,base64Encoder:i})=>{if(!De(r))throw new Error(`@smithy/util-stream: unsupported source type ${r?.constructor?.name??r} in ChecksumStream.`);const o=i??Te;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,We.prototype),a},Ve=async(e=new Uint8Array,t)=>{if(e instanceof Uint8Array)return Ce.mutate(e);if(!e)return Ce.mutate(new Uint8Array);const r=t.streamCollector(e);return Ce.mutate(await r)};function Qe(e){return encodeURIComponent(e).replace(/[!'()*]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function Ge(e,t){return new Je(e,t)}class Je{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 z({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=>Qe(e))).join("/"):Qe(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 Xe{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 Ze=(Ye=3e5,e=>et(e)&&e.expiration.getTime()-Date.now()void 0!==e.expiration,tt="X-Amz-Date",rt="X-Amz-Signature",nt="X-Amz-Security-Token",it="authorization",ot=tt.toLowerCase(),st=[it,ot,"date"],at=rt.toLowerCase(),ct="x-amz-content-sha256",ut=nt.toLowerCase(),dt={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},lt=/^proxy-/,ht=/^sec-/,ft="AWS4-HMAC-SHA256",pt="AWS4-HMAC-SHA256-PAYLOAD",gt="aws4_request",mt={},yt=[],vt=(e,t,r)=>`${e}/${t}/${r}/${gt}`,bt=(e,t,r)=>{const n=new e(t);return n.update(xe(r)),n.digest()},wt=({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 dt||t?.has(o)||lt.test(o)||ht.test(o))&&(!r||r&&!r.has(o))||(n[o]=e[i].trim().replace(/\s+/g," "))}return n},kt=e=>"function"==typeof ArrayBuffer&&e instanceof ArrayBuffer||"[object ArrayBuffer]"===Object.prototype.toString.call(e),St=async({headers:e,body:t},r)=>{for(const t of Object.keys(e))if(t.toLowerCase()===ct)return e[t];if(null==t)return"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";if("string"==typeof t||ArrayBuffer.isView(t)||kt(t)){const e=new r;return e.update(xe(t)),Be(await e.digest())}return"UNSIGNED-PAYLOAD"};class Et{format(e){const t=[];for(const r of Object.keys(e)){const n=Ee(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=Ee(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(Tt.fromNumber(e.value.valueOf()).bytes,1),u;case"uuid":if(!At.test(e.value))throw new Error(`Invalid UUID received: ${e.value}`);const d=new Uint8Array(17);return d[0]=9,d.set(Le(e.value.replace(/\-/g,"")),1),d}}}var xt;!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"}(xt||(xt={}));const At=/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;class Tt{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&&Ct(t),new Tt(t)}valueOf(){const e=this.bytes.slice(0),t=128&e[0];return t&&Ct(e),parseInt(Be(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}}function Ct(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,0===e[t]);t--);}const Rt=e=>{e=z.clone(e);for(const t of Object.keys(e.headers))st.indexOf(t.toLowerCase())>-1&&delete e.headers[t];return e},Ot=e=>"number"==typeof e?new Date(1e3*e):"string"==typeof e?Number(e)?new Date(1e3*Number(e)):new Date(e):e;class Pt{constructor({applyChecksum:e,credentials:t,region:r,service:n,sha256:i,uriEscapePath:o=!0}){this.headerFormatter=new Et,this.service=n,this.sha256=i,this.uriEscapePath=o,this.applyChecksum="boolean"!=typeof e||e,this.regionProvider=ue(r),this.credentialProvider=ue(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}=_t(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=vt(f,l,u??this.service),g=((e,t={})=>{const{headers:r,query:n={}}=z.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}})(Rt(e),{unhoistableHeaders:o,hoistableHeaders:a});d.sessionToken&&(g.query[nt]=d.sessionToken),g.query["X-Amz-Algorithm"]=ft,g.query["X-Amz-Credential"]=`${d.accessKeyId}/${p}`,g.query[tt]=h,g.query["X-Amz-Expires"]=n.toString(10);const m=wt(g,i,s);return g.query["X-Amz-SignedHeaders"]=Mt(m),g.query[rt]=await this.getSignature(h,p,this.getSigningKey(d,l,f,u),this.createCanonicalRequest(g,m,await St(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}=_t(r),u=vt(a,s,o??this.service),d=await St({headers:{},body:t},this.sha256),l=new this.sha256;l.update(e);const h=Be(await l.digest()),f=[pt,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}=_t(t),a=new this.sha256(await this.getSigningKey(i,o,s,n));return a.update(xe(e)),Be(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=Rt(e),{longDate:u,shortDate:d}=_t(t),l=vt(d,a,o??this.service);c.headers[ot]=u,s.sessionToken&&(c.headers[ut]=s.sessionToken);const h=await St(c,this.sha256);!((e,t)=>{e=e.toLowerCase();for(const r of Object.keys(t))if(e===r.toLowerCase())return!0;return!1})(ct,c.headers)&&this.applyChecksum&&(c.headers[ct]=h);const f=wt(c,n,r),p=await this.getSignature(u,l,this.getSigningKey(s,a,d,o),this.createCanonicalRequest(c,f,h));return c.headers[it]=`${ft} Credential=${s.accessKeyId}/${l}, SignedHeaders=${Mt(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()===at)continue;const i=Oe(n);t.push(i);const o=e[n];"string"==typeof o?r[i]=`${i}=${Oe(o)}`:Array.isArray(o)&&(r[i]=o.slice(0).reduce(((e,t)=>e.concat([`${i}=${Oe(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(xe(r));const i=await n.digest();return`${ft}\n${e}\n${t}\n${Be(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 Oe(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(xe(i)),Be(await o.digest())}getSigningKey(e,t,r,n){return(async(e,t,r,n,i)=>{const o=`${r}:${n}:${i}:${Be(await bt(e,t.secretAccessKey,t.accessKeyId))}:${t.sessionToken}`;if(o in mt)return mt[o];for(yt.push(o);yt.length>50;)delete mt[yt.shift()];let s=`AWS4${t.secretAccessKey}`;for(const t of[r,n,i,gt])s=await bt(e,s,t);return mt[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 _t=e=>{const t=(r=e,Ot(r).toISOString().replace(/\.\d{3}Z$/,"Z")).replace(/[\-:]/g,"");var r;return{longDate:t,shortDate:t.slice(0,8)}},Mt=e=>Object.keys(e).sort().join(";"),It=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,Ze,et)),t||(t=e.credentialDefaultProvider?be(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?be(e.signer):e.regionInfoProvider?()=>be(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||Pt)(c)})):async r=>{const i=(r=Object.assign({},{name:"sigv4",signingName:e.signingName||e.defaultSigningName,signingRegion:await be(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||Pt)(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}},Nt=(e,t)=>{const r=[];if(e&&r.push(e),t)for(const e of t)r.push(e);return r},Ft=(e,t)=>`${e||"anonymous"}${t&&t.length>0?` (a.k.a. ${t.join(",")})`:""}`,$t=()=>{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 Nt(t.name,t.aliases))s[e]=t;n.push(t)})),t.forEach((e=>{const t={...e,before:[],after:[]};for(const e of Nt(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 ${Ft(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)=>Ut[t.step]-Ut[e.step]||Lt[t.priority||"normal"]-Lt[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=Nt(i,s);if(c.length>0){if(c.some((e=>n.has(e)))){if(!o)throw new Error(`Duplicate middleware name '${Ft(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(`"${Ft(n.name,n.aliases)}" middleware with ${n.priority} priority in ${n.step} step cannot be overridden by "${Ft(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=Nt(i,s);if(c.length>0){if(c.some((e=>n.has(e)))){if(!o)throw new Error(`Duplicate middleware name '${Ft(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(`"${Ft(n.name,n.aliases)}" middleware ${n.relation} "${n.toMiddleware}" middleware cannot be overridden by "${Ft(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($t()),use:e=>{e.applyToStack(a)},remove:r=>"string"==typeof r?(r=>{let i=!1;const o=e=>{const t=Nt(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 Nt(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=Nt(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($t());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 Ft(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},Ut={initialize:5,serialize:4,build:3,finalizeRequest:2,deserialize:1},Lt={high:3,normal:2,low:1};class Bt{constructor(e){this.config=e,this.middlewareStack=$t()}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 Dt{constructor(){this.middlewareStack=$t()}static classBuilder(){return new jt}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,[B]:{commandInstance:this,...c},...u},{requestHandler:p}=t;return l.resolve((e=>p.handle(e.request,r||{})),f)}}class jt{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 Dt{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 zt="***SensitiveInformation***",qt=e=>{switch(e){case"true":return!0;case"false":return!1;default:throw new Error(`Unable to parse boolean value "${e}"`)}},Ht=Math.ceil(2**127*(2-2**-23)),Wt=e=>{const t=(e=>{if(null!=e){if("string"==typeof e){const t=parseFloat(e);if(!Number.isNaN(t))return String(t)!==String(e)&&ar.warn(sr(`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)>Ht)throw new TypeError(`Expected 32-bit float, got ${e}`);return t},Kt=e=>{if(null!=e){if(Number.isInteger(e)&&!Number.isNaN(e))return e;throw new TypeError(`Expected integer, got ${typeof e}: ${e}`)}},Vt=e=>Jt(e,32),Qt=e=>Jt(e,16),Gt=e=>Jt(e,8),Jt=(e,t)=>{const r=Kt(e);if(void 0!==r&&Xt(r,t)!==r)throw new TypeError(`Expected ${t}-bit integer, got ${e}`);return r},Xt=(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]}},Zt=(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},Yt=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}`)},er=e=>{if(null!=e){if("string"==typeof e)return e;if(["boolean","number","bigint"].includes(typeof e))return ar.warn(sr(`Expected string, got ${typeof e}: ${e}`)),String(e);throw new TypeError(`Expected string, got ${typeof e}: ${e}`)}},tr=/(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g,rr=e=>{const t=e.match(tr);if(null===t||t[0].length!==e.length)throw new TypeError("Expected real number, got implicit NaN");return parseFloat(e)},nr=e=>Kt("string"==typeof e?rr(e):e),ir=e=>Vt("string"==typeof e?rr(e):e),or=e=>Qt("string"==typeof e?rr(e):e),sr=e=>String(new TypeError(e).stack||e).split("\n").slice(0,5).filter((e=>!e.includes("stackTraceWarning"))).join("\n"),ar={warn:console.warn},cr=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],ur=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function dr(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`${cr[n]}, ${i<10?`0${i}`:`${i}`} ${ur[r]} ${t} ${c}:${u}:${d} GMT`}const lr=new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(([-+]\d{2}\:\d{2})|[zZ])$/),hr=e=>{if(null==e)return;if("string"!=typeof e)throw new TypeError("RFC-3339 date-times must be expressed as strings");const t=lr.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=or(Cr(n)),h=xr(i,"month",1,12),f=xr(o,"day",1,31),p=yr(l,h,f,{hours:s,minutes:a,seconds:c,fractionalMilliseconds:u});return"Z"!=d.toUpperCase()&&p.setTime(p.getTime()-Tr(d)),p},fr=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$/),pr=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$/),gr=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})$/),mr=e=>{if(null==e)return;if("string"!=typeof e)throw new TypeError("RFC-7231 date-times must be expressed as strings");let t=fr.exec(e);if(t){const[e,r,n,i,o,s,a,c]=t;return yr(or(Cr(i)),wr(n),xr(r,"day",1,31),{hours:o,minutes:s,seconds:a,fractionalMilliseconds:c})}if(t=pr.exec(e),t){const[e,r,n,i,o,s,a,c]=t;return br(yr(vr(i),wr(n),xr(r,"day",1,31),{hours:o,minutes:s,seconds:a,fractionalMilliseconds:c}))}if(t=gr.exec(e),t){const[e,r,n,i,o,s,a,c]=t;return yr(or(Cr(c)),wr(r),xr(n.trimLeft(),"day",1,31),{hours:i,minutes:o,seconds:s,fractionalMilliseconds:a})}throw new TypeError("Invalid RFC-7231 date-time value")},yr=(e,t,r,n)=>{const i=t-1;return Sr(e,i,r),new Date(Date.UTC(e,i,r,xr(n.hours,"hour",0,23),xr(n.minutes,"minute",0,59),xr(n.seconds,"seconds",0,60),Ar(n.fractionalMilliseconds)))},vr=e=>{const t=(new Date).getUTCFullYear(),r=100*Math.floor(t/100)+or(Cr(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,wr=e=>{const t=ur.indexOf(e);if(t<0)throw new TypeError(`Invalid month: ${e}`);return t+1},kr=[31,28,31,30,31,30,31,31,30,31,30,31],Sr=(e,t,r)=>{let n=kr[t];if(1===t&&Er(e)&&(n=29),r>n)throw new TypeError(`Invalid day for ${ur[t]} in ${e}: ${r}`)},Er=e=>e%4==0&&(e%100!=0||e%400==0),xr=(e,t,r,n)=>{const i=(e=>Gt("string"==typeof e?rr(e):e))(Cr(e));if(in)throw new TypeError(`${t} must be between ${r} and ${n}, inclusive`);return i},Ar=e=>null==e?0:1e3*(e=>Wt("string"==typeof e?rr(e):e))("0."+e),Tr=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},Cr=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},Pr=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"]}),_r=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{}}},Mr=e=>{const t=[];for(const r in U){const n=U[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}}},Ir=e=>{const t={};return e.checksumAlgorithms().forEach((e=>{t[e.algorithmId()]=e.checksumConstructor()})),t},Nr=e=>{let t=e.retryStrategy;return{setRetryStrategy(e){t=e},retryStrategy:()=>t}},Fr=e=>{const t={};return t.retryStrategy=e.retryStrategy(),t},$r=e=>({...Mr(e),...Nr(e)}),Ur=e=>({...Ir(e),...Fr(e)}),Lr=e=>Array.isArray(e)?e:[e],Br=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]=Br(e[r]));return e},Dr=e=>null!=e,jr=function(){const e=Object.getPrototypeOf(this).constructor,t=new(Function.bind.apply(String,[null,...arguments]));return Object.setPrototypeOf(t,e.prototype),t};jr.prototype=Object.create(String.prototype,{constructor:{value:jr,enumerable:!1,writable:!0,configurable:!0}}),Object.setPrototypeOf(jr,String);class zr{trace(){}debug(){}info(){}warn(){}error(){}}function qr(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,Hr(n,i,o);o=t}for(const e of Object.keys(o))Array.isArray(o[e])?Wr(n,null,o,e):n[e]=o[e];return n}const Hr=(e,t,r)=>qr(e,Object.entries(r).reduce(((e,[r,n])=>(Array.isArray(n)?e[r]=n:e[r]="function"==typeof n?[t,n()]:[t,n],e)),{})),Wr=(e,t,r,n)=>{if(null!==t){let i=r[n];"function"==typeof i&&(i=[,i]);const[o=Kr,s=Vr,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)}},Kr=e=>null!=e,Vr=e=>e;function Qr(e){return(e.includes(",")||e.includes('"'))&&(e=`"${e.replace(/"/g,'\\"')}"`),e}function Gr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Jr={},Xr={};!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 dn("InvalidXml","XML declaration allowed only at the start of the document.",hn(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function rn(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}Jr.validate=function(e,t){t=Object.assign({},Yr,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,!Zr.isName(o)){let t;return t=0===u.trim().length?"Invalid space after '<'.":"Tag '"+u+"' is an invalid name.",dn("InvalidTag",t,hn(e,s))}const d=sn(e,s);if(!1===d)return dn("InvalidAttr","Attributes for '"+u+"' have open quote.",hn(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=cn(l,t);if(!0!==i)return dn(i.err.code,i.err.msg,hn(e,r+i.err.line));n=!0}else if(c){if(!d.tagClosed)return dn("InvalidTag","Closing tag '"+u+"' doesn't have proper closing.",hn(e,s));if(l.trim().length>0)return dn("InvalidTag","Closing tag '"+u+"' can't have attributes or invalid starting.",hn(e,a));if(0===r.length)return dn("InvalidTag","Closing tag '"+u+"' has not been opened.",hn(e,a));{const t=r.pop();if(u!==t.tagName){let r=hn(e,t.tagStartPos);return dn("InvalidTag","Expected closing tag '"+t.tagName+"' (opened in line "+r.line+", col "+r.col+") instead of closing tag '"+u+"'.",hn(e,a))}0==r.length&&(i=!0)}}else{const o=cn(l,t);if(!0!==o)return dn(o.err.code,o.err.msg,hn(e,s-l.length+o.err.line));if(!0===i)return dn("InvalidXml","Multiple possible root nodes found.",hn(e,s));-1!==t.unpairedTags.indexOf(u)||r.push({tagName:u,tagStartPos:a}),n=!0}for(s++;s0)||dn("InvalidXml","Invalid '"+JSON.stringify(r.map((e=>e.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):dn("InvalidXml","Start tag expected.",1)};const nn='"',on="'";function sn(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 an=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function cn(e,t){const r=Zr.getAllMatches(e,an),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}};pn.buildOptions=function(e){return Object.assign({},gn,e)},pn.defaultOptions=gn;var mn=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){"__proto__"===e&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){"__proto__"===e.tagname&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}};const yn=Xr;function vn(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&&wn(e,t))t+=7,[entityName,val,t]=vn(e,t+1),-1===val.indexOf("&")&&(r[xn(entityName)]={regx:RegExp(`&${entityName};`,"g"),val:val});else if(i&&kn(e,t))t+=8;else if(i&&Sn(e,t))t+=8;else if(i&&En(e,t))t+=9;else{if(!bn)throw new Error("Invalid DOCTYPE");o=!0}n++,s=""}if(0!==n)throw new Error("Unclosed DOCTYPE")}return{entities:r,i:t}};const Tn=/^[-+]?0x[a-fA-F0-9]+$/,Cn=/^([\-\+])?(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 Rn={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};const On=Xr,Pn=mn,_n=An,Mn=function(e,t={}){if(t=Object.assign({},Rn,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&&Tn.test(r))return Number.parseInt(r,16);{const n=Cn.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 In(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 Kn(e,this.options.parseTagValue,this.options.numberParseOptions);return e.trim()===e?Kn(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function Fn(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 $n=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function Un(e,t,r){if(!this.options.ignoreAttributes&&"string"==typeof e){const r=On.getAllMatches(e,$n),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=Hn(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 Pn(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=qn(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=_n(e,o);this.docTypeEntities=t.entities,o=t.i}else if("!["===e.substr(o+1,2)){const t=qn(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=Hn(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 Pn(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 Pn(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 Pn(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 Bn(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 Dn=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 jn(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 zn(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 qn(e,t,r,n){const i=e.indexOf(t,r);if(-1===i)throw new Error(n);return i+t.length-1}function Hn(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=qn(e,"?>",r+1,"StopNode is not closed.")}else if("!--"===e.substr(r+1,3)){r=qn(e,"--\x3e",r+3,"StopNode is not closed.")}else if("!["===e.substr(r+1,2)){r=qn(e,"]]>",r,"StopNode is not closed.")-2}else{const n=Hn(e,r,">");if(n){(n&&n.tagName)===t&&"/"!==n.tagExp[n.tagExp.length-1]&&i++,r=n.closeIndex}}}function Kn(e,t,r){if(t&&"string"==typeof e){const t=e.trim();return"true"===t||"false"!==t&&Mn(e,r)}return On.isExist(e)?e:""}var Vn=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=In,this.parseXml=Ln,this.parseTextData=Nn,this.resolveNameSpace=Fn,this.buildAttributesMap=Un,this.isItStopNode=zn,this.replaceEntitiesValue=Dn,this.readStopNodeData=Wn,this.saveTextToParentTag=jn,this.addChild=Bn}},Qn={};function Gn(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 Jn(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=si(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}${si(a[":@"],t)}`,h=ii(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 oi(e){const t=Object.keys(e);for(let r=0;r0&&t.processEntities)for(let r=0;r0&&(r="\n"),ii(e,t,"",r)},di={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 li(e){this.options=Object.assign({},di,e),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=pi),this.processTextOrObjNode=hi,this.options.format?(this.indentate=fi,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function hi(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 fi(e){return this.options.indentBy.repeat(e)}function pi(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}li.prototype.build=function(e){return this.options.preserveOrder?ui(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0).val)},li.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}},li.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)=>Ve(e,t).then((e=>t.utf8Encoder(e))))(e,t).then((e=>{if(e.length){const t=new gi.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]),Br(o)}return{}})),yi=async(e,t)=>{const r=await mi(e,t);return r.Error&&(r.Error.message=r.Error.message??r.Error.Message),r},vi=[G.CRC32,G.CRC32C,G.SHA1,G.SHA256],bi=[G.SHA256,G.SHA1,G.CRC32,G.CRC32C],wi=e=>e===G.MD5?"content-md5":`x-amz-checksum-${e.toLowerCase()}`,ki=e=>void 0!==e&&"string"!=typeof e&&!ArrayBuffer.isView(e)&&!kt(e);function Si(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 Ei(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 Ai(e){return e instanceof Uint8Array?e:"string"==typeof e?xi(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e)}function Ti(e){return"string"==typeof e?0===e.length:0===e.byteLength}function Ci(e){return new Uint8Array([(4278190080&e)>>24,(16711680&e)>>16,(65280&e)>>8,255&e])}function Ri(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^_i[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}(),_i=Ri([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 Mi(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 Ii(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^$i[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}(),$i=Ri([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 Ui=(e,t)=>({[G.MD5]:t.md5,[G.CRC32]:Ni,[G.CRC32C]:Oi,[G.SHA1]:t.sha1,[G.SHA256]:t.sha256}[e]),Li=(e,t)=>{const r=new e;return r.update(xe(t||"")),r.digest()},Bi={name:"flexibleChecksumsMiddleware",step:"build",tags:["BODY_CHECKSUM"],override:!0},Di=(e,t)=>(r,n)=>async i=>{if(!z.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?Z:X;if(!r||!e[r])return t?i:void 0;const o=e[r];if(!vi.includes(o))throw new Error(`The checksum algorithm "${o}" is not supported by the client. Select one of ${vi}.`);return o})(s,{requestChecksumRequired:l,requestAlgorithmMember:h},!!n.isS3ExpressBucket);let p=a,g=c;if(f){switch(f){case G.CRC32:ee(n,"FLEXIBLE_CHECKSUMS_REQ_CRC32","U");break;case G.CRC32C:ee(n,"FLEXIBLE_CHECKSUMS_REQ_CRC32C","V");break;case G.SHA1:ee(n,"FLEXIBLE_CHECKSUMS_REQ_SHA1","X");break;case G.SHA256:ee(n,"FLEXIBLE_CHECKSUMS_REQ_SHA256","Y")}const t=wi(f),r=Ui(f,e);if(ki(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 Li(r,a);g={...c,[t]:u(e)}}}return await r({...i,request:{...o,headers:g,body:p}})},ji=(e=[])=>{const t=[];for(const r of bi)e.includes(r)&&vi.includes(r)&&t.push(r);return t};function zi(e){return new Blob([e]).stream()}const qi=async(e,{checksumAlgorithmFn:t,base64Encoder:r})=>r(await Li(t,e)),Hi={name:"flexibleChecksumsResponseMiddleware",toMiddleware:"deserializerMiddleware",relation:"after",tags:["BODY_CHECKSUM"],override:!0},Wi=(e,t)=>(r,n)=>async i=>{if(!z.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&&ji(d).every((e=>{const t=wi(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=ki(a.body);i&&(c=await e.streamCollector(a.body),a.body=zi(c)),await(async(e,{config:t,responseAlgorithms:r})=>{const n=ji(r),{body:i,headers:o}=e;for(const r of n){const n=wi(r),s=o[n];if(s){const o=Ui(r,t),{base64Encoder:a}=t;if(ki(i))return void(e.body=Ke({expectedChecksum:s,checksumSourceLocation:n,checksum:new o,source:i,base64Encoder:a}));const c=await qi(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=zi(c))}return s},Ki=(e,t)=>({applyToStack:r=>{r.add(Di(e,t),Bi),r.addRelativeTo(Wi(e,t),Hi)}});const Vi={name:"hostHeaderMiddleware",step:"build",priority:"low",tags:["HOST"],override:!0},Qi=e=>({applyToStack:t=>{t.add((e=>t=>async r=>{if(!z.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),Vi)}}),Gi={name:"loggerMiddleware",tags:["LOGGER"],step:"initialize",override:!0},Ji="X-Amzn-Trace-Id",Xi={step:"build",tags:["RECURSION_DETECTION"],name:"recursionDetectionMiddleware",override:!0,priority:"low"},Zi=e=>({applyToStack:t=>{t.add((e=>t=>async r=>{const{request:n}=r;if(!z.isInstance(n)||"node"!==e.runtime||n.headers.hasOwnProperty(Ji))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[Ji]=o),t({...r,request:n})})(e),Xi)}});const Yi={step:"finalizeRequest",tags:["CHECK_CONTENT_LENGTH_HEADER"],name:"getCheckContentLengthHeaderPlugin",override:!0},eo=e=>({applyToStack:e=>{e.add(((e,t)=>async r=>{const{request:n}=r;if(z.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 zr?console.warn(e):t.logger.warn(e)}return e({...r})}),Yi)}}),to={tags:["REGION_REDIRECT","S3"],name:"regionRedirectEndpointMiddleware",override:!0,relation:"before",toMiddleware:"endpointV2Middleware"};const ro={step:"initialize",tags:["REGION_REDIRECT","S3"],name:"regionRedirectMiddleware",override:!0},no=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),ro),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),to)}}),io={tags:["S3"],name:"s3ExpiresMiddleware",override:!0,relation:"after",toMiddleware:"deserializerMiddleware"},oo=e=>({applyToStack:e=>{e.addRelativeTo(((e,t)=>async r=>{const n=await e(r),{response:i}=n;if(q.isInstance(i)&&i.headers.expires){i.headers.expiresstring=i.headers.expires;try{mr(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}),io)}});class so{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+so.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 ao(Promise.resolve(e)))}))),e})):n.set(r,new ao(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 uo;co.REFRESH_WINDOW_MS=6e4,function(e){e.ENV="env",e.CONFIG="shared config entry"}(uo||(uo={}));const lo="X-Amz-S3session-Token",ho=lo.toLowerCase();class fo extends Pt{async signWithCredentials(e,t,r){const n=po(t);e.headers[ho]=t.sessionToken;return go(this,n),this.signRequest(e,r??{})}async presignWithCredentials(e,t,r){const n=po(t);delete e.headers[ho],e.headers[lo]=t.sessionToken,e.query=e.query??{},e.query[lo]=t.sessionToken;return go(this,n),this.presign(e,r)}}function po(e){return{accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey,expiration:e.expiration}}function go(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 mo={name:"s3ExpressMiddleware",step:"build",tags:["S3","S3_EXPRESS"],override:!0},yo=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)&&(ee(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,z.isInstance(n.request)&&i.sessionToken&&(n.request.headers[ho]=i.sessionToken)}}}return t(n)})(e),mo)}}),vo=e=>e=>{throw e},bo=(e,t)=>{},wo=e=>(t,r)=>async n=>{if(!z.isInstance(n.request))return t(n);const i=ce(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||vo)(o));return(a.successHandler||bo)(u.response,o),u},ko={CopyObjectCommand:!0,UploadPartCopyCommand:!0,CompleteMultipartUploadCommand:!0},So=e=>(t,r)=>async n=>{const i=await t(n),{response:o}=i;if(!q.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 Eo(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&&ko[r.commandName]){const e=new Error("S3 aborted request");throw e.name="InternalError",e}return l&&l.endsWith("")&&(o.statusCode=400),i},Eo=(e=new Uint8Array,t)=>e instanceof Uint8Array?Promise.resolve(e):t.streamCollector(e)||Promise.resolve(new Uint8Array),xo={relation:"after",toMiddleware:"deserializerMiddleware",tags:["THROW_200_EXCEPTIONS","S3"],name:"throw200ExceptionsMiddleware",override:!0},Ao=e=>({applyToStack:t=>{t.addRelativeTo(So(e),xo)}});const To={name:"bucketEndpointMiddleware",override:!0,relation:"after",toMiddleware:"endpointV2Middleware"};const Co={step:"initialize",tags:["VALIDATE_BUCKET_NAME"],name:"validateBucketNameMiddleware",override:!0},Ro=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),Co),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),To)}});const Oo=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}$"),Po=e=>Oo.test(e)||e.startsWith("[")&&e.endsWith("]"),_o=new RegExp("^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$"),Mo=(e,t=!1)=>{if(!t)return _o.test(e);const r=e.split(".");for(const e of r)if(!Mo(e))return!1;return!0},Io={},No="endpoints";function Fo(e){return"object"!=typeof e||null==e?e:"ref"in e?`$${Fo(e.ref)}`:"fn"in e?`${e.fn}(${(e.argv||[]).map(Fo).join(", ")})`:JSON.stringify(e,null,2)}class $o extends Error{constructor(e){super(e),this.name="EndpointError"}}const Uo=(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 $o(`Path: '${e}' does not end with ']'`);const i=n.slice(t+1,-1);if(Number.isNaN(parseInt(i)))throw new $o(`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 $o(`Index '${n}' in '${t}' not found in '${JSON.stringify(e)}'`);return Array.isArray(r)?r[parseInt(n)]:r[n]}),e),Lo={[$.HTTP]:80,[$.HTTPS]:443},Bo={booleanEquals:(e,t)=>e===t,getAttr:Uo,isSet:e=>null!=e,isValidHostLabel:Mo,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($).includes(c))return null;const u=Po(i);return{scheme:c,authority:`${n}${r.includes(`${n}:${Lo[c]}`)||"string"==typeof e&&e.includes(`${n}:${Lo[c]}`)?`:${Lo[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()}`))},Do=(e,t)=>{const r=[],n={...t.endpointParams,...t.referenceRecord};let i=0;for(;i{if("string"==typeof e)return Do(e,r);if(e.fn)return zo(e,r);if(e.ref)return(({ref:e},t)=>({...t.endpointParams,...t.referenceRecord}[e]))(e,r);throw new $o(`'${t}': ${String(e)} is not a string, function or reference.`)},zo=({fn:e,argv:t},r)=>{const n=t.map((e=>["boolean","number"].includes(typeof e)?e:jo(e,"arg",r))),i=e.split(".");return i[0]in Io&&null!=i[1]?Io[i[0]][i[1]](...n):Bo[e](...n)},qo=({assign:e,...t},r)=>{if(e&&e in r.referenceRecord)throw new $o(`'${e}' is already defined in Reference Record.`);const n=zo(t,r);return r.logger?.debug?.(`${No} evaluateCondition: ${Fo(t)} = ${Fo(n)}`),{result:""===n||!!n,...null!=e&&{toAssign:{name:e,value:n}}}},Ho=(e=[],t)=>{const r={};for(const n of e){const{result:e,toAssign:i}=qo(n,{...t,referenceRecord:{...t.referenceRecord,...r}});if(!e)return{result:e};i&&(r[i.name]=i.value,t.logger?.debug?.(`${No} assign: ${i.name} := ${Fo(i.value)}`))}return{result:!0,referenceRecord:r}},Wo=(e,t)=>Object.entries(e).reduce(((e,[r,n])=>({...e,[r]:n.map((e=>{const n=jo(e,"Header value entry",t);if("string"!=typeof n)throw new $o(`Header '${r}' value '${n}' is not a string`);return n}))})),{}),Ko=(e,t)=>{if(Array.isArray(e))return e.map((e=>Ko(e,t)));switch(typeof e){case"string":return Do(e,t);case"object":if(null===e)throw new $o(`Unexpected endpoint property: ${e}`);return Vo(e,t);case"boolean":return e;default:throw new $o("Unexpected endpoint property type: "+typeof e)}},Vo=(e,t)=>Object.entries(e).reduce(((e,[r,n])=>({...e,[r]:Ko(n,t)})),{}),Qo=(e,t)=>{const r=jo(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 $o("Endpoint URL must be a string, got "+typeof r)},Go=(e,t)=>{const{conditions:r,endpoint:n}=e,{result:i,referenceRecord:o}=Ho(r,t);if(!i)return;const s={...t,referenceRecord:{...t.referenceRecord,...o}},{url:a,properties:c,headers:u}=n;return t.logger?.debug?.(`${No} Resolving endpoint from template: ${Fo(n)}`),{...null!=u&&{headers:Wo(u,s)},...null!=c&&{properties:Vo(c,s)},url:Qo(a,s)}},Jo=(e,t)=>{const{conditions:r,error:n}=e,{result:i,referenceRecord:o}=Ho(r,t);if(i)throw new $o(jo(n,"Error",{...t,referenceRecord:{...t.referenceRecord,...o}}))},Xo=(e,t)=>{const{conditions:r,rules:n}=e,{result:i,referenceRecord:o}=Ho(r,t);if(i)return Zo(n,{...t,referenceRecord:{...t.referenceRecord,...o}})},Zo=(e,t)=>{for(const r of e)if("endpoint"===r.type){const e=Go(r,t);if(e)return e}else if("error"===r.type)Jo(r,t);else{if("tree"!==r.type)throw new $o(`Unknown endpoint rule: ${r}`);{const e=Xo(r,t);if(e)return e}}throw new $o("Rules evaluation failed")},Yo=(e,t=!1)=>{if(t){for(const t of e.split("."))if(!Yo(t))return!1;return!0}return!!Mo(e)&&(!(e.length<3||e.length>63)&&(e===e.toLowerCase()&&!Po(e)))};let es={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 ts={isVirtualHostableS3Bucket:Yo,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}=es;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}}};Io.aws=ts;const rs=/\d{12}\.ddb/;const ns="user-agent",is="x-amz-user-agent",os=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w]/g,ss=/[^\!\$\%\&\'\*\+\-\.\^\_\`\|\~\d\w\#]/g;const as=e=>(t,r)=>async n=>{const{request:i}=n;if(!z.isInstance(i))return t(n);const{headers:o}=i,s=r?.userAgent?.map(cs)||[],a=(await e.defaultUserAgentProvider()).map(cs);await async function(e,t,r){const n=r.request;if("rpc-v2-cbor"===n?.headers?.["smithy-protocol"]&&ee(e,"PROTOCOL_RPC_V2_CBOR","M"),"function"==typeof t.retryStrategy){const r=await t.retryStrategy();"function"==typeof r.acquireInitialRetryToken?r.constructor?.name?.includes("Adaptive")?ee(e,"RETRY_MODE_ADAPTIVE","F"):ee(e,"RETRY_MODE_STANDARD","E"):ee(e,"RETRY_MODE_LEGACY","D")}if("function"==typeof t.accountIdEndpointMode){const r=e.endpointV2;switch(String(r?.url?.hostname).match(rs)&&ee(e,"ACCOUNT_ID_ENDPOINT","O"),await(t.accountIdEndpointMode?.())){case"disabled":ee(e,"ACCOUNT_ID_MODE_DISABLED","Q");break;case"preferred":ee(e,"ACCOUNT_ID_MODE_PREFERRED","P");break;case"required":ee(e,"ACCOUNT_ID_MODE_REQUIRED","R")}}const i=e.__smithy_context?.selectedHttpAuthScheme?.identity;if(i?.$source){const t=i;t.accountId&&ee(e,"RESOLVED_ACCOUNT_ID","T");for(const[r,n]of Object.entries(t.$source??{}))ee(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(cs)||[],d=await e.userAgentAppId();d&&a.push(cs([`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[is]=o[is]?`${o[ns]} ${h}`:h),o[ns]=l):o[is]=l,t({...n,request:i})},cs=e=>{const t=e[0].split("/").map((e=>e.replace(os,"-"))).join("/"),r=e[1]?.replace(ss,"-"),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}`}}),"")},us={name:"getUserAgentMiddleware",step:"build",priority:"low",tags:["SET_USER_AGENT","USER_AGENT"],override:!0},ds=e=>"string"==typeof e&&(e.startsWith("fips-")||e.endsWith("-fips")),ls=e=>ds(e)?["fips-aws-global","aws-fips"].includes(e)?"us-east-1":e.replace(/fips-(dkr-|prod-)?|-fips/,""):e,hs="content-length";const fs={step:"build",tags:["SET_CONTENT_LENGTH","CONTENT_LENGTH"],name:"contentLengthMiddleware",override:!0},ps=e=>({applyToStack:t=>{var r;t.add((r=e.bodyLengthChecker,e=>async t=>{const n=t.request;if(z.isInstance(n)){const{body:e,headers:t}=n;if(e&&-1===Object.keys(t).map((e=>e.toLowerCase())).indexOf(hs))try{const t=r(e);n.headers={...n.headers,[hs]:String(t)}}catch(e){}}return e({...t,request:n})}),fs)}}),gs=/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/,ms=/(\d+\.){3}\d+/,ys=/\.\./,vs=e=>gs.test(e)&&!ms.test(e)&&!ys.test(e),bs=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},ws=(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},ks=async e=>{};const Ss=e=>{if("string"==typeof e)return Ss(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}},Es=e=>"object"==typeof e?"url"in e?Ss(e.url):e:Ss(e),xs=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 ws(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("?"))),bs(t)){if(!0===e.ForcePathStyle)throw new Error("Path-style addressing cannot be used with ARN buckets")}else(!vs(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},As=({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 ks(r.serviceId),e&&(r.endpoint=()=>Promise.resolve(Es(e)))}const i=await xs(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=ce(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})},Ts={step:"serialize",tags:["ENDPOINT_PARAMETERS","ENDPOINT_V2","ENDPOINT"],name:"endpointV2Middleware",override:!0,relation:"before",toMiddleware:fe.name},Cs=(e,t)=>({applyToStack:r=>{r.addRelativeTo(As({config:e,instructions:t}),Ts)}});var Rs;!function(e){e.STANDARD="standard",e.ADAPTIVE="adaptive"}(Rs||(Rs={}));const Os=Rs.STANDARD,Ps=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],_s=["TimeoutError","RequestTimeout","RequestTimeoutException"],Ms=[500,502,503,504],Is=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],Ns=e=>429===e.$metadata?.httpStatusCode||Ps.includes(e.name)||1==e.$retryable?.throttling,Fs=e=>(e=>e.$metadata?.clockSkewCorrected)(e)||_s.includes(e.name)||Is.includes(e?.code||"")||Ms.includes(e.$metadata?.httpStatusCode||0);class $s{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=>$s.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(),Ns(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))}}$s.setTimeoutFn=setTimeout;const Us=({retryDelay:e,retryCount:t,retryCost:r})=>({getRetryCount:()=>t,getRetryDelay:()=>Math.min(2e4,e),getRetryCost:()=>r});class Ls{constructor(e){this.maxAttempts=e,this.mode=Rs.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 Us({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,Us({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 Bs{constructor(e,t){this.maxAttemptsProvider=e,this.mode=Rs.ADAPTIVE;const{rateLimiter:r}=t??{};this.rateLimiter=r??new $s,this.standardRetryStrategy=new Ls(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 Ds;const js=new Uint8Array(16);function zs(){if(!Ds&&(Ds="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Ds))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Ds(js)}const qs=[];for(let e=0;e<256;++e)qs.push((e+256).toString(16).slice(1));var Hs={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Ws(e,t,r){if(Hs.randomUUID&&!t&&!e)return Hs.randomUUID();const n=(e=e||{}).random||(e.rng||zs)();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 qs[e[t+0]]+qs[e[t+1]]+qs[e[t+2]]+qs[e[t+3]]+"-"+qs[e[t+4]]+qs[e[t+5]]+"-"+qs[e[t+6]]+qs[e[t+7]]+"-"+qs[e[t+8]]+qs[e[t+9]]+"-"+qs[e[t+10]]+qs[e[t+11]]+qs[e[t+12]]+qs[e[t+13]]+qs[e[t+14]]+qs[e[t+15]]}(n)}const Ks=e=>e?.body instanceof ReadableStream,Vs=e=>void 0!==e.acquireInitialRetryToken&&void 0!==e.refreshRetryTokenForRetry&&void 0!==e.recordSuccess,Qs=e=>{const t={error:e,errorType:Gs(e)},r=Zs(e.$response);return r&&(t.retryAfterHint=r),t},Gs=e=>Ns(e)?"THROTTLING":Fs(e)?"TRANSIENT":(e=>{if(void 0!==e.$metadata?.httpStatusCode){const t=e.$metadata.httpStatusCode;return 500<=t&&t<=599&&!Fs(e)}return!1})(e)?"SERVER_ERROR":"CLIENT_ERROR",Js={name:"retryMiddleware",tags:["RETRY"],step:"finalizeRequest",priority:"high",override:!0},Xs=e=>({applyToStack:t=>{t.add((e=>(t,r)=>async n=>{let i=await e.retryStrategy();const o=await e.maxAttempts();if(!Vs(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=z.isInstance(d);for(l&&(d.headers["amz-sdk-invocation-id"]=Ws());;)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=Qs(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&&Ks(d))throw(r.logger instanceof zr?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),Js)}}),Zs=e=>{if(!q.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)},Ys=null;class ea{constructor(e){this.sigv4Signer=new fo(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=Ys,"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 ta="required",ra="type",na="conditions",ia="fn",oa="argv",sa="ref",aa="assign",ca="url",ua="properties",da="backend",la="authSchemes",ha="disableDoubleEncoding",fa="signingName",pa="signingRegion",ga="headers",ma="signingRegionSet",ya=!0,va="isSet",ba="booleanEquals",wa="error",ka="aws.partition",Sa="stringEquals",Ea="getAttr",xa="name",Aa="substring",Ta="bucketSuffix",Ca="parseURL",Ra="{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}",Oa="endpoint",Pa="tree",_a="aws.isVirtualHostableS3Bucket",Ma="{url#scheme}://{Bucket}.{url#authority}{url#path}",Ia="not",Na="{url#scheme}://{url#authority}{url#path}",Fa="hardwareType",$a="regionPrefix",Ua="bucketAliasSuffix",La="outpostId",Ba="isValidHostLabel",Da="sigv4a",ja="s3-outposts",za="s3",qa="{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}",Ha="https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}",Wa="https://{Bucket}.s3.{partitionResult#dnsSuffix}",Ka="aws.parseArn",Va="bucketArn",Qa="arnType",Ga="s3-object-lambda",Ja="accesspoint",Xa="accessPointName",Za="{url#scheme}://{accessPointName}-{bucketArn#accountId}.{url#authority}{url#path}",Ya="mrapPartition",ec="outpostType",tc="arnPrefix",rc="{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}",nc="https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",ic="https://s3.{partitionResult#dnsSuffix}",oc={[ta]:!1,[ra]:"String"},sc={[ta]:!0,default:!1,[ra]:"Boolean"},ac={[ta]:!1,[ra]:"Boolean"},cc={[ia]:ba,[oa]:[{[sa]:"Accelerate"},!0]},uc={[ia]:ba,[oa]:[{[sa]:"UseFIPS"},!0]},dc={[ia]:ba,[oa]:[{[sa]:"UseDualStack"},!0]},lc={[ia]:va,[oa]:[{[sa]:"Endpoint"}]},hc={[ia]:ka,[oa]:[{[sa]:"Region"}],[aa]:"partitionResult"},fc={[ia]:Sa,[oa]:[{[ia]:Ea,[oa]:[{[sa]:"partitionResult"},xa]},"aws-cn"]},pc={[ia]:va,[oa]:[{[sa]:"Bucket"}]},gc={[sa]:"Bucket"},mc={[ia]:Ca,[oa]:[{[sa]:"Endpoint"}],[aa]:"url"},yc={[ia]:ba,[oa]:[{[ia]:Ea,[oa]:[{[sa]:"url"},"isIp"]},!0]},vc={[sa]:"url"},bc={[ia]:"uriEncode",[oa]:[gc],[aa]:"uri_encoded_bucket"},wc={[da]:"S3Express",[la]:[{[ha]:!0,[xa]:"sigv4",[fa]:"s3express",[pa]:"{Region}"}]},kc={},Sc={[ia]:_a,[oa]:[gc,!1]},Ec={[wa]:"S3Express bucket name is not a valid virtual hostable name.",[ra]:wa},xc={[da]:"S3Express",[la]:[{[ha]:!0,[xa]:"sigv4-s3express",[fa]:"s3express",[pa]:"{Region}"}]},Ac={[ia]:va,[oa]:[{[sa]:"UseS3ExpressControlEndpoint"}]},Tc={[ia]:ba,[oa]:[{[sa]:"UseS3ExpressControlEndpoint"},!0]},Cc={[ia]:Ia,[oa]:[lc]},Rc={[wa]:"Unrecognized S3Express bucket name format.",[ra]:wa},Oc={[ia]:Ia,[oa]:[pc]},Pc={[sa]:Fa},_c={[na]:[Cc],[wa]:"Expected a endpoint to be specified but no endpoint was found",[ra]:wa},Mc={[la]:[{[ha]:!0,[xa]:Da,[fa]:ja,[ma]:["*"]},{[ha]:!0,[xa]:"sigv4",[fa]:ja,[pa]:"{Region}"}]},Ic={[ia]:ba,[oa]:[{[sa]:"ForcePathStyle"},!1]},Nc={[sa]:"ForcePathStyle"},Fc={[ia]:ba,[oa]:[{[sa]:"Accelerate"},!1]},$c={[ia]:Sa,[oa]:[{[sa]:"Region"},"aws-global"]},Uc={[la]:[{[ha]:!0,[xa]:"sigv4",[fa]:za,[pa]:"us-east-1"}]},Lc={[ia]:Ia,[oa]:[$c]},Bc={[ia]:ba,[oa]:[{[sa]:"UseGlobalEndpoint"},!0]},Dc={[ca]:"https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",[ua]:{[la]:[{[ha]:!0,[xa]:"sigv4",[fa]:za,[pa]:"{Region}"}]},[ga]:{}},jc={[la]:[{[ha]:!0,[xa]:"sigv4",[fa]:za,[pa]:"{Region}"}]},zc={[ia]:ba,[oa]:[{[sa]:"UseGlobalEndpoint"},!1]},qc={[ia]:ba,[oa]:[{[sa]:"UseDualStack"},!1]},Hc={[ca]:"https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}",[ua]:jc,[ga]:{}},Wc={[ia]:ba,[oa]:[{[sa]:"UseFIPS"},!1]},Kc={[ca]:"https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}",[ua]:jc,[ga]:{}},Vc={[ca]:"https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}",[ua]:jc,[ga]:{}},Qc={[ia]:ba,[oa]:[{[ia]:Ea,[oa]:[vc,"isIp"]},!1]},Gc={[ca]:qa,[ua]:jc,[ga]:{}},Jc={[ca]:Ma,[ua]:jc,[ga]:{}},Xc={[Oa]:Jc,[ra]:Oa},Zc={[ca]:Ha,[ua]:jc,[ga]:{}},Yc={[ca]:"https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}",[ua]:jc,[ga]:{}},eu={[wa]:"Invalid region: region was not a valid DNS name.",[ra]:wa},tu={[sa]:Va},ru={[sa]:Qa},nu={[ia]:Ea,[oa]:[tu,"service"]},iu={[sa]:Xa},ou={[na]:[dc],[wa]:"S3 Object Lambda does not support Dual-stack",[ra]:wa},su={[na]:[cc],[wa]:"S3 Object Lambda does not support S3 Accelerate",[ra]:wa},au={[na]:[{[ia]:va,[oa]:[{[sa]:"DisableAccessPoints"}]},{[ia]:ba,[oa]:[{[sa]:"DisableAccessPoints"},!0]}],[wa]:"Access points are not supported for this operation",[ra]:wa},cu={[na]:[{[ia]:va,[oa]:[{[sa]:"UseArnRegion"}]},{[ia]:ba,[oa]:[{[sa]:"UseArnRegion"},!1]},{[ia]:Ia,[oa]:[{[ia]:Sa,[oa]:[{[ia]:Ea,[oa]:[tu,"region"]},"{Region}"]}]}],[wa]:"Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`",[ra]:wa},uu={[ia]:Ea,[oa]:[{[sa]:"bucketPartition"},xa]},du={[ia]:Ea,[oa]:[tu,"accountId"]},lu={[la]:[{[ha]:!0,[xa]:"sigv4",[fa]:Ga,[pa]:"{bucketArn#region}"}]},hu={[wa]:"Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName}`",[ra]:wa},fu={[wa]:"Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`",[ra]:wa},pu={[wa]:"Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)",[ra]:wa},gu={[wa]:"Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`",[ra]:wa},mu={[wa]:"Invalid ARN: The ARN may only contain a single resource component after `accesspoint`.",[ra]:wa},yu={[wa]:"Invalid ARN: Expected a resource of the format `accesspoint:` but no name was provided",[ra]:wa},vu={[la]:[{[ha]:!0,[xa]:"sigv4",[fa]:za,[pa]:"{bucketArn#region}"}]},bu={[la]:[{[ha]:!0,[xa]:Da,[fa]:ja,[ma]:["*"]},{[ha]:!0,[xa]:"sigv4",[fa]:ja,[pa]:"{bucketArn#region}"}]},wu={[ia]:Ka,[oa]:[gc]},ku={[ca]:"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ua]:jc,[ga]:{}},Su={[ca]:"https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ua]:jc,[ga]:{}},Eu={[ca]:"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ua]:jc,[ga]:{}},xu={[ca]:rc,[ua]:jc,[ga]:{}},Au={[ca]:"https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ua]:jc,[ga]:{}},Tu={[sa]:"UseObjectLambdaEndpoint"},Cu={[la]:[{[ha]:!0,[xa]:"sigv4",[fa]:Ga,[pa]:"{Region}"}]},Ru={[ca]:"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}",[ua]:jc,[ga]:{}},Ou={[ca]:"https://s3-fips.{Region}.{partitionResult#dnsSuffix}",[ua]:jc,[ga]:{}},Pu={[ca]:"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}",[ua]:jc,[ga]:{}},_u={[ca]:Na,[ua]:jc,[ga]:{}},Mu={[ca]:"https://s3.{Region}.{partitionResult#dnsSuffix}",[ua]:jc,[ga]:{}},Iu=[{[sa]:"Region"}],Nu=[{[sa]:"Endpoint"}],Fu=[gc],$u=[dc],Uu=[cc],Lu=[lc,mc],Bu=[{[ia]:va,[oa]:[{[sa]:"DisableS3ExpressSessionAuth"}]},{[ia]:ba,[oa]:[{[sa]:"DisableS3ExpressSessionAuth"},!0]}],Du=[yc],ju=[bc],zu=[Sc],qu=[uc],Hu=[{[ia]:Aa,[oa]:[gc,6,14,!0],[aa]:"s3expressAvailabilityZoneId"},{[ia]:Aa,[oa]:[gc,14,16,!0],[aa]:"s3expressAvailabilityZoneDelim"},{[ia]:Sa,[oa]:[{[sa]:"s3expressAvailabilityZoneDelim"},"--"]}],Wu=[{[na]:[uc],[Oa]:{[ca]:"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[ua]:wc,[ga]:{}},[ra]:Oa},{[Oa]:{[ca]:"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[ua]:wc,[ga]:{}},[ra]:Oa}],Ku=[{[ia]:Aa,[oa]:[gc,6,15,!0],[aa]:"s3expressAvailabilityZoneId"},{[ia]:Aa,[oa]:[gc,15,17,!0],[aa]:"s3expressAvailabilityZoneDelim"},{[ia]:Sa,[oa]:[{[sa]:"s3expressAvailabilityZoneDelim"},"--"]}],Vu=[{[na]:[uc],[Oa]:{[ca]:"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[ua]:xc,[ga]:{}},[ra]:Oa},{[Oa]:{[ca]:"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.amazonaws.com",[ua]:xc,[ga]:{}},[ra]:Oa}],Qu=[pc],Gu=[{[ia]:Ba,[oa]:[{[sa]:La},!1]}],Ju=[{[ia]:Sa,[oa]:[{[sa]:$a},"beta"]}],Xu=[hc],Zu=[{[ia]:Ba,[oa]:[{[sa]:"Region"},!1]}],Yu=[{[ia]:Sa,[oa]:[{[sa]:"Region"},"us-east-1"]}],ed=[{[ia]:Sa,[oa]:[ru,Ja]}],td=[{[ia]:Ea,[oa]:[tu,"resourceId[1]"],[aa]:Xa},{[ia]:Ia,[oa]:[{[ia]:Sa,[oa]:[iu,""]}]}],rd=[tu,"resourceId[1]"],nd=[{[ia]:Ia,[oa]:[{[ia]:Sa,[oa]:[{[ia]:Ea,[oa]:[tu,"region"]},""]}]}],id=[{[ia]:Ia,[oa]:[{[ia]:va,[oa]:[{[ia]:Ea,[oa]:[tu,"resourceId[2]"]}]}]}],od=[tu,"resourceId[2]"],sd=[{[ia]:ka,[oa]:[{[ia]:Ea,[oa]:[tu,"region"]}],[aa]:"bucketPartition"}],ad=[{[ia]:Sa,[oa]:[uu,{[ia]:Ea,[oa]:[{[sa]:"partitionResult"},xa]}]}],cd=[{[ia]:Ba,[oa]:[{[ia]:Ea,[oa]:[tu,"region"]},!0]}],ud=[{[ia]:Ba,[oa]:[du,!1]}],dd=[{[ia]:Ba,[oa]:[iu,!1]}],ld=[{[ia]:Ba,[oa]:[{[sa]:"Region"},!0]}],hd={version:"1.0",parameters:{Bucket:oc,Region:oc,UseFIPS:sc,UseDualStack:sc,Endpoint:oc,ForcePathStyle:sc,Accelerate:sc,UseGlobalEndpoint:sc,UseObjectLambdaEndpoint:ac,Key:oc,Prefix:oc,CopySource:oc,DisableAccessPoints:ac,DisableMultiRegionAccessPoints:sc,UseArnRegion:ac,UseS3ExpressControlEndpoint:ac,DisableS3ExpressSessionAuth:ac},rules:[{[na]:[{[ia]:va,[oa]:Iu}],rules:[{[na]:[cc,uc],error:"Accelerate cannot be used with FIPS",[ra]:wa},{[na]:[dc,lc],error:"Cannot set dual-stack in combination with a custom endpoint.",[ra]:wa},{[na]:[lc,uc],error:"A custom endpoint cannot be combined with FIPS",[ra]:wa},{[na]:[lc,cc],error:"A custom endpoint cannot be combined with S3 Accelerate",[ra]:wa},{[na]:[uc,hc,fc],error:"Partition does not support FIPS",[ra]:wa},{[na]:[pc,{[ia]:Aa,[oa]:[gc,0,6,ya],[aa]:Ta},{[ia]:Sa,[oa]:[{[sa]:Ta},"--x-s3"]}],rules:[{[na]:$u,error:"S3Express does not support Dual-stack.",[ra]:wa},{[na]:Uu,error:"S3Express does not support S3 Accelerate.",[ra]:wa},{[na]:Lu,rules:[{[na]:Bu,rules:[{[na]:Du,rules:[{[na]:ju,rules:[{endpoint:{[ca]:Ra,[ua]:wc,[ga]:kc},[ra]:Oa}],[ra]:Pa}],[ra]:Pa},{[na]:zu,rules:[{endpoint:{[ca]:Ma,[ua]:wc,[ga]:kc},[ra]:Oa}],[ra]:Pa},Ec],[ra]:Pa},{[na]:Du,rules:[{[na]:ju,rules:[{endpoint:{[ca]:Ra,[ua]:xc,[ga]:kc},[ra]:Oa}],[ra]:Pa}],[ra]:Pa},{[na]:zu,rules:[{endpoint:{[ca]:Ma,[ua]:xc,[ga]:kc},[ra]:Oa}],[ra]:Pa},Ec],[ra]:Pa},{[na]:[Ac,Tc],rules:[{[na]:[bc,Cc],rules:[{[na]:qu,endpoint:{[ca]:"https://s3express-control-fips.{Region}.amazonaws.com/{uri_encoded_bucket}",[ua]:wc,[ga]:kc},[ra]:Oa},{endpoint:{[ca]:"https://s3express-control.{Region}.amazonaws.com/{uri_encoded_bucket}",[ua]:wc,[ga]:kc},[ra]:Oa}],[ra]:Pa}],[ra]:Pa},{[na]:zu,rules:[{[na]:Bu,rules:[{[na]:Hu,rules:Wu,[ra]:Pa},{[na]:Ku,rules:Wu,[ra]:Pa},Rc],[ra]:Pa},{[na]:Hu,rules:Vu,[ra]:Pa},{[na]:Ku,rules:Vu,[ra]:Pa},Rc],[ra]:Pa},Ec],[ra]:Pa},{[na]:[Oc,Ac,Tc],rules:[{[na]:Lu,endpoint:{[ca]:Na,[ua]:wc,[ga]:kc},[ra]:Oa},{[na]:qu,endpoint:{[ca]:"https://s3express-control-fips.{Region}.amazonaws.com",[ua]:wc,[ga]:kc},[ra]:Oa},{endpoint:{[ca]:"https://s3express-control.{Region}.amazonaws.com",[ua]:wc,[ga]:kc},[ra]:Oa}],[ra]:Pa},{[na]:[pc,{[ia]:Aa,[oa]:[gc,49,50,ya],[aa]:Fa},{[ia]:Aa,[oa]:[gc,8,12,ya],[aa]:$a},{[ia]:Aa,[oa]:[gc,0,7,ya],[aa]:Ua},{[ia]:Aa,[oa]:[gc,32,49,ya],[aa]:La},{[ia]:ka,[oa]:Iu,[aa]:"regionPartition"},{[ia]:Sa,[oa]:[{[sa]:Ua},"--op-s3"]}],rules:[{[na]:Gu,rules:[{[na]:[{[ia]:Sa,[oa]:[Pc,"e"]}],rules:[{[na]:Ju,rules:[_c,{[na]:Lu,endpoint:{[ca]:"https://{Bucket}.ec2.{url#authority}",[ua]:Mc,[ga]:kc},[ra]:Oa}],[ra]:Pa},{endpoint:{[ca]:"https://{Bucket}.ec2.s3-outposts.{Region}.{regionPartition#dnsSuffix}",[ua]:Mc,[ga]:kc},[ra]:Oa}],[ra]:Pa},{[na]:[{[ia]:Sa,[oa]:[Pc,"o"]}],rules:[{[na]:Ju,rules:[_c,{[na]:Lu,endpoint:{[ca]:"https://{Bucket}.op-{outpostId}.{url#authority}",[ua]:Mc,[ga]:kc},[ra]:Oa}],[ra]:Pa},{endpoint:{[ca]:"https://{Bucket}.op-{outpostId}.s3-outposts.{Region}.{regionPartition#dnsSuffix}",[ua]:Mc,[ga]:kc},[ra]:Oa}],[ra]:Pa},{error:'Unrecognized hardware type: "Expected hardware type o or e but got {hardwareType}"',[ra]:wa}],[ra]:Pa},{error:"Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`.",[ra]:wa}],[ra]:Pa},{[na]:Qu,rules:[{[na]:[lc,{[ia]:Ia,[oa]:[{[ia]:va,[oa]:[{[ia]:Ca,[oa]:Nu}]}]}],error:"Custom endpoint `{Endpoint}` was not a valid URI",[ra]:wa},{[na]:[Ic,Sc],rules:[{[na]:Xu,rules:[{[na]:Zu,rules:[{[na]:[cc,fc],error:"S3 Accelerate cannot be used in this region",[ra]:wa},{[na]:[dc,uc,Fc,Cc,$c],endpoint:{[ca]:"https://{Bucket}.s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[dc,uc,Fc,Cc,Lc,Bc],rules:[{endpoint:Dc,[ra]:Oa}],[ra]:Pa},{[na]:[dc,uc,Fc,Cc,Lc,zc],endpoint:Dc,[ra]:Oa},{[na]:[qc,uc,Fc,Cc,$c],endpoint:{[ca]:"https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}",[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[qc,uc,Fc,Cc,Lc,Bc],rules:[{endpoint:Hc,[ra]:Oa}],[ra]:Pa},{[na]:[qc,uc,Fc,Cc,Lc,zc],endpoint:Hc,[ra]:Oa},{[na]:[dc,Wc,cc,Cc,$c],endpoint:{[ca]:"https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[dc,Wc,cc,Cc,Lc,Bc],rules:[{endpoint:Kc,[ra]:Oa}],[ra]:Pa},{[na]:[dc,Wc,cc,Cc,Lc,zc],endpoint:Kc,[ra]:Oa},{[na]:[dc,Wc,Fc,Cc,$c],endpoint:{[ca]:"https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[dc,Wc,Fc,Cc,Lc,Bc],rules:[{endpoint:Vc,[ra]:Oa}],[ra]:Pa},{[na]:[dc,Wc,Fc,Cc,Lc,zc],endpoint:Vc,[ra]:Oa},{[na]:[qc,Wc,Fc,lc,mc,yc,$c],endpoint:{[ca]:qa,[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[qc,Wc,Fc,lc,mc,Qc,$c],endpoint:{[ca]:Ma,[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[qc,Wc,Fc,lc,mc,yc,Lc,Bc],rules:[{[na]:Yu,endpoint:Gc,[ra]:Oa},{endpoint:Gc,[ra]:Oa}],[ra]:Pa},{[na]:[qc,Wc,Fc,lc,mc,Qc,Lc,Bc],rules:[{[na]:Yu,endpoint:Jc,[ra]:Oa},Xc],[ra]:Pa},{[na]:[qc,Wc,Fc,lc,mc,yc,Lc,zc],endpoint:Gc,[ra]:Oa},{[na]:[qc,Wc,Fc,lc,mc,Qc,Lc,zc],endpoint:Jc,[ra]:Oa},{[na]:[qc,Wc,cc,Cc,$c],endpoint:{[ca]:Ha,[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[qc,Wc,cc,Cc,Lc,Bc],rules:[{[na]:Yu,endpoint:Zc,[ra]:Oa},{endpoint:Zc,[ra]:Oa}],[ra]:Pa},{[na]:[qc,Wc,cc,Cc,Lc,zc],endpoint:Zc,[ra]:Oa},{[na]:[qc,Wc,Fc,Cc,$c],endpoint:{[ca]:Wa,[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[qc,Wc,Fc,Cc,Lc,Bc],rules:[{[na]:Yu,endpoint:{[ca]:Wa,[ua]:jc,[ga]:kc},[ra]:Oa},{endpoint:Yc,[ra]:Oa}],[ra]:Pa},{[na]:[qc,Wc,Fc,Cc,Lc,zc],endpoint:Yc,[ra]:Oa}],[ra]:Pa},eu],[ra]:Pa}],[ra]:Pa},{[na]:[lc,mc,{[ia]:Sa,[oa]:[{[ia]:Ea,[oa]:[vc,"scheme"]},"http"]},{[ia]:_a,[oa]:[gc,ya]},Ic,Wc,qc,Fc],rules:[{[na]:Xu,rules:[{[na]:Zu,rules:[Xc],[ra]:Pa},eu],[ra]:Pa}],[ra]:Pa},{[na]:[Ic,{[ia]:Ka,[oa]:Fu,[aa]:Va}],rules:[{[na]:[{[ia]:Ea,[oa]:[tu,"resourceId[0]"],[aa]:Qa},{[ia]:Ia,[oa]:[{[ia]:Sa,[oa]:[ru,""]}]}],rules:[{[na]:[{[ia]:Sa,[oa]:[nu,Ga]}],rules:[{[na]:ed,rules:[{[na]:td,rules:[ou,su,{[na]:nd,rules:[au,{[na]:id,rules:[cu,{[na]:sd,rules:[{[na]:Xu,rules:[{[na]:ad,rules:[{[na]:cd,rules:[{[na]:[{[ia]:Sa,[oa]:[du,""]}],error:"Invalid ARN: Missing account id",[ra]:wa},{[na]:ud,rules:[{[na]:dd,rules:[{[na]:Lu,endpoint:{[ca]:Za,[ua]:lu,[ga]:kc},[ra]:Oa},{[na]:qu,endpoint:{[ca]:"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ua]:lu,[ga]:kc},[ra]:Oa},{endpoint:{[ca]:"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ua]:lu,[ga]:kc},[ra]:Oa}],[ra]:Pa},hu],[ra]:Pa},fu],[ra]:Pa},pu],[ra]:Pa},gu],[ra]:Pa}],[ra]:Pa}],[ra]:Pa},mu],[ra]:Pa},{error:"Invalid ARN: bucket ARN is missing a region",[ra]:wa}],[ra]:Pa},yu],[ra]:Pa},{error:"Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `{arnType}`",[ra]:wa}],[ra]:Pa},{[na]:ed,rules:[{[na]:td,rules:[{[na]:nd,rules:[{[na]:ed,rules:[{[na]:nd,rules:[au,{[na]:id,rules:[cu,{[na]:sd,rules:[{[na]:Xu,rules:[{[na]:[{[ia]:Sa,[oa]:[uu,"{partitionResult#name}"]}],rules:[{[na]:cd,rules:[{[na]:[{[ia]:Sa,[oa]:[nu,za]}],rules:[{[na]:ud,rules:[{[na]:dd,rules:[{[na]:Uu,error:"Access Points do not support S3 Accelerate",[ra]:wa},{[na]:[uc,dc],endpoint:{[ca]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ua]:vu,[ga]:kc},[ra]:Oa},{[na]:[uc,qc],endpoint:{[ca]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ua]:vu,[ga]:kc},[ra]:Oa},{[na]:[Wc,dc],endpoint:{[ca]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ua]:vu,[ga]:kc},[ra]:Oa},{[na]:[Wc,qc,lc,mc],endpoint:{[ca]:Za,[ua]:vu,[ga]:kc},[ra]:Oa},{[na]:[Wc,qc],endpoint:{[ca]:"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ua]:vu,[ga]:kc},[ra]:Oa}],[ra]:Pa},hu],[ra]:Pa},fu],[ra]:Pa},{error:"Invalid ARN: The ARN was not for the S3 service, found: {bucketArn#service}",[ra]:wa}],[ra]:Pa},pu],[ra]:Pa},gu],[ra]:Pa}],[ra]:Pa}],[ra]:Pa},mu],[ra]:Pa}],[ra]:Pa}],[ra]:Pa},{[na]:[{[ia]:Ba,[oa]:[iu,ya]}],rules:[{[na]:$u,error:"S3 MRAP does not support dual-stack",[ra]:wa},{[na]:qu,error:"S3 MRAP does not support FIPS",[ra]:wa},{[na]:Uu,error:"S3 MRAP does not support S3 Accelerate",[ra]:wa},{[na]:[{[ia]:ba,[oa]:[{[sa]:"DisableMultiRegionAccessPoints"},ya]}],error:"Invalid configuration: Multi-Region Access Point ARNs are disabled.",[ra]:wa},{[na]:[{[ia]:ka,[oa]:Iu,[aa]:Ya}],rules:[{[na]:[{[ia]:Sa,[oa]:[{[ia]:Ea,[oa]:[{[sa]:Ya},xa]},{[ia]:Ea,[oa]:[tu,"partition"]}]}],rules:[{endpoint:{[ca]:"https://{accessPointName}.accesspoint.s3-global.{mrapPartition#dnsSuffix}",[ua]:{[la]:[{[ha]:ya,name:Da,[fa]:za,[ma]:["*"]}]},[ga]:kc},[ra]:Oa}],[ra]:Pa},{error:"Client was configured for partition `{mrapPartition#name}` but bucket referred to partition `{bucketArn#partition}`",[ra]:wa}],[ra]:Pa}],[ra]:Pa},{error:"Invalid Access Point Name",[ra]:wa}],[ra]:Pa},yu],[ra]:Pa},{[na]:[{[ia]:Sa,[oa]:[nu,ja]}],rules:[{[na]:$u,error:"S3 Outposts does not support Dual-stack",[ra]:wa},{[na]:qu,error:"S3 Outposts does not support FIPS",[ra]:wa},{[na]:Uu,error:"S3 Outposts does not support S3 Accelerate",[ra]:wa},{[na]:[{[ia]:va,[oa]:[{[ia]:Ea,[oa]:[tu,"resourceId[4]"]}]}],error:"Invalid Arn: Outpost Access Point ARN contains sub resources",[ra]:wa},{[na]:[{[ia]:Ea,[oa]:rd,[aa]:La}],rules:[{[na]:Gu,rules:[cu,{[na]:sd,rules:[{[na]:Xu,rules:[{[na]:ad,rules:[{[na]:cd,rules:[{[na]:ud,rules:[{[na]:[{[ia]:Ea,[oa]:od,[aa]:ec}],rules:[{[na]:[{[ia]:Ea,[oa]:[tu,"resourceId[3]"],[aa]:Xa}],rules:[{[na]:[{[ia]:Sa,[oa]:[{[sa]:ec},Ja]}],rules:[{[na]:Lu,endpoint:{[ca]:"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.{url#authority}",[ua]:bu,[ga]:kc},[ra]:Oa},{endpoint:{[ca]:"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.s3-outposts.{bucketArn#region}.{bucketPartition#dnsSuffix}",[ua]:bu,[ga]:kc},[ra]:Oa}],[ra]:Pa},{error:"Expected an outpost type `accesspoint`, found {outpostType}",[ra]:wa}],[ra]:Pa},{error:"Invalid ARN: expected an access point name",[ra]:wa}],[ra]:Pa},{error:"Invalid ARN: Expected a 4-component resource",[ra]:wa}],[ra]:Pa},fu],[ra]:Pa},pu],[ra]:Pa},gu],[ra]:Pa}],[ra]:Pa}],[ra]:Pa},{error:"Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `{outpostId}`",[ra]:wa}],[ra]:Pa},{error:"Invalid ARN: The Outpost Id was not set",[ra]:wa}],[ra]:Pa},{error:"Invalid ARN: Unrecognized format: {Bucket} (type: {arnType})",[ra]:wa}],[ra]:Pa},{error:"Invalid ARN: No ARN type specified",[ra]:wa}],[ra]:Pa},{[na]:[{[ia]:Aa,[oa]:[gc,0,4,!1],[aa]:tc},{[ia]:Sa,[oa]:[{[sa]:tc},"arn:"]},{[ia]:Ia,[oa]:[{[ia]:va,[oa]:[wu]}]}],error:"Invalid ARN: `{Bucket}` was not a valid ARN",[ra]:wa},{[na]:[{[ia]:ba,[oa]:[Nc,ya]},wu],error:"Path-style addressing cannot be used with ARN buckets",[ra]:wa},{[na]:ju,rules:[{[na]:Xu,rules:[{[na]:[Fc],rules:[{[na]:[dc,Cc,uc,$c],endpoint:{[ca]:"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[dc,Cc,uc,Lc,Bc],rules:[{endpoint:ku,[ra]:Oa}],[ra]:Pa},{[na]:[dc,Cc,uc,Lc,zc],endpoint:ku,[ra]:Oa},{[na]:[qc,Cc,uc,$c],endpoint:{[ca]:"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[qc,Cc,uc,Lc,Bc],rules:[{endpoint:Su,[ra]:Oa}],[ra]:Pa},{[na]:[qc,Cc,uc,Lc,zc],endpoint:Su,[ra]:Oa},{[na]:[dc,Cc,Wc,$c],endpoint:{[ca]:"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}",[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[dc,Cc,Wc,Lc,Bc],rules:[{endpoint:Eu,[ra]:Oa}],[ra]:Pa},{[na]:[dc,Cc,Wc,Lc,zc],endpoint:Eu,[ra]:Oa},{[na]:[qc,lc,mc,Wc,$c],endpoint:{[ca]:rc,[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[qc,lc,mc,Wc,Lc,Bc],rules:[{[na]:Yu,endpoint:xu,[ra]:Oa},{endpoint:xu,[ra]:Oa}],[ra]:Pa},{[na]:[qc,lc,mc,Wc,Lc,zc],endpoint:xu,[ra]:Oa},{[na]:[qc,Cc,Wc,$c],endpoint:{[ca]:nc,[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[qc,Cc,Wc,Lc,Bc],rules:[{[na]:Yu,endpoint:{[ca]:nc,[ua]:jc,[ga]:kc},[ra]:Oa},{endpoint:Au,[ra]:Oa}],[ra]:Pa},{[na]:[qc,Cc,Wc,Lc,zc],endpoint:Au,[ra]:Oa}],[ra]:Pa},{error:"Path-style addressing cannot be used with S3 Accelerate",[ra]:wa}],[ra]:Pa}],[ra]:Pa}],[ra]:Pa},{[na]:[{[ia]:va,[oa]:[Tu]},{[ia]:ba,[oa]:[Tu,ya]}],rules:[{[na]:Xu,rules:[{[na]:ld,rules:[ou,su,{[na]:Lu,endpoint:{[ca]:Na,[ua]:Cu,[ga]:kc},[ra]:Oa},{[na]:qu,endpoint:{[ca]:"https://s3-object-lambda-fips.{Region}.{partitionResult#dnsSuffix}",[ua]:Cu,[ga]:kc},[ra]:Oa},{endpoint:{[ca]:"https://s3-object-lambda.{Region}.{partitionResult#dnsSuffix}",[ua]:Cu,[ga]:kc},[ra]:Oa}],[ra]:Pa},eu],[ra]:Pa}],[ra]:Pa},{[na]:[Oc],rules:[{[na]:Xu,rules:[{[na]:ld,rules:[{[na]:[uc,dc,Cc,$c],endpoint:{[ca]:"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[uc,dc,Cc,Lc,Bc],rules:[{endpoint:Ru,[ra]:Oa}],[ra]:Pa},{[na]:[uc,dc,Cc,Lc,zc],endpoint:Ru,[ra]:Oa},{[na]:[uc,qc,Cc,$c],endpoint:{[ca]:"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}",[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[uc,qc,Cc,Lc,Bc],rules:[{endpoint:Ou,[ra]:Oa}],[ra]:Pa},{[na]:[uc,qc,Cc,Lc,zc],endpoint:Ou,[ra]:Oa},{[na]:[Wc,dc,Cc,$c],endpoint:{[ca]:"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}",[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[Wc,dc,Cc,Lc,Bc],rules:[{endpoint:Pu,[ra]:Oa}],[ra]:Pa},{[na]:[Wc,dc,Cc,Lc,zc],endpoint:Pu,[ra]:Oa},{[na]:[Wc,qc,lc,mc,$c],endpoint:{[ca]:Na,[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[Wc,qc,lc,mc,Lc,Bc],rules:[{[na]:Yu,endpoint:_u,[ra]:Oa},{endpoint:_u,[ra]:Oa}],[ra]:Pa},{[na]:[Wc,qc,lc,mc,Lc,zc],endpoint:_u,[ra]:Oa},{[na]:[Wc,qc,Cc,$c],endpoint:{[ca]:ic,[ua]:Uc,[ga]:kc},[ra]:Oa},{[na]:[Wc,qc,Cc,Lc,Bc],rules:[{[na]:Yu,endpoint:{[ca]:ic,[ua]:jc,[ga]:kc},[ra]:Oa},{endpoint:Mu,[ra]:Oa}],[ra]:Pa},{[na]:[Wc,qc,Cc,Lc,zc],endpoint:Mu,[ra]:Oa}],[ra]:Pa},eu],[ra]:Pa}],[ra]:Pa}],[ra]:Pa},{error:"A region must be set when sending requests to S3.",[ra]:wa}]},fd=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"]}),pd=(e,t={})=>fd.get(e,(()=>((e,t)=>{const{endpointParams:r,logger:n}=t,{parameters:i,rules:o}=e;t.logger?.debug?.(`${No} Initial EndpointParams: ${Fo(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 $o(`Missing required parameter: '${e}'`);const c=Zo(o,{endpointParams:r,logger:n,referenceRecord:{}});return t.logger?.debug?.(`${No} Resolved endpoint: ${Fo(c)}`),c})(hd,{endpointParams:e,logger:t.logger})));Io.aws=ts;const gd=(md=async(e,t,r)=>({operation:ce(t).operation,region:await ue(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 md(e,t,r),i=ce(t)?.commandInstance?.constructor?.getEndpointParameterInstructions;if(!i)throw new Error(`getEndpointParameterInstructions() is not defined on \`${t.commandName}\``);const o=await xs(r,{getEndpointParameterInstructions:i},e);return Object.assign(n,o)});var md;function yd(e){return{schemeId:"aws.auth#sigv4",signingProperties:{name:"s3",region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}function vd(e){return{schemeId:"aws.auth#sigv4a",signingProperties:{name:"s3",region:e.region},propertiesExtractor:(e,t)=>({signingProperties:{config:e,context:t}})}}const bd=((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})(pd,(e=>{const t=[];return e.operation,t.push(yd(e)),t.push(vd(e)),t}),{"aws.auth#sigv4":yd,"aws.auth#sigv4a":vd}),wd=e=>{const t=(e=>(e.sigv4aSigningRegionSet=be(e.sigv4aSigningRegionSet),e))(It(e));return{...t}},kd={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 Sd extends Rr{constructor(e){super(e),Object.setPrototypeOf(this,Sd.prototype)}}class Ed extends Sd{constructor(e){super({name:"NoSuchUpload",$fault:"client",...e}),this.name="NoSuchUpload",this.$fault="client",Object.setPrototypeOf(this,Ed.prototype)}}class xd extends Sd{constructor(e){super({name:"ObjectNotInActiveTierError",$fault:"client",...e}),this.name="ObjectNotInActiveTierError",this.$fault="client",Object.setPrototypeOf(this,xd.prototype)}}class Ad extends Sd{constructor(e){super({name:"BucketAlreadyExists",$fault:"client",...e}),this.name="BucketAlreadyExists",this.$fault="client",Object.setPrototypeOf(this,Ad.prototype)}}class Td extends Sd{constructor(e){super({name:"BucketAlreadyOwnedByYou",$fault:"client",...e}),this.name="BucketAlreadyOwnedByYou",this.$fault="client",Object.setPrototypeOf(this,Td.prototype)}}class Cd extends Sd{constructor(e){super({name:"NoSuchBucket",$fault:"client",...e}),this.name="NoSuchBucket",this.$fault="client",Object.setPrototypeOf(this,Cd.prototype)}}var Rd,Od;!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])}(Rd||(Rd={})),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])}(Od||(Od={}));class Pd extends Sd{constructor(e){super({name:"InvalidObjectState",$fault:"client",...e}),this.name="InvalidObjectState",this.$fault="client",Object.setPrototypeOf(this,Pd.prototype),this.StorageClass=e.StorageClass,this.AccessTier=e.AccessTier}}class _d extends Sd{constructor(e){super({name:"NoSuchKey",$fault:"client",...e}),this.name="NoSuchKey",this.$fault="client",Object.setPrototypeOf(this,_d.prototype)}}class Md extends Sd{constructor(e){super({name:"NotFound",$fault:"client",...e}),this.name="NotFound",this.$fault="client",Object.setPrototypeOf(this,Md.prototype)}}const Id=e=>({...e,...e.SecretAccessKey&&{SecretAccessKey:zt},...e.SessionToken&&{SessionToken:zt}}),Nd=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:zt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:zt},...e.Credentials&&{Credentials:Id(e.Credentials)}}),Fd=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:zt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:zt}}),$d=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:zt}}),Ud=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:zt}});class Ld extends Sd{constructor(e){super({name:"EncryptionTypeMismatch",$fault:"client",...e}),this.name="EncryptionTypeMismatch",this.$fault="client",Object.setPrototypeOf(this,Ld.prototype)}}class Bd extends Sd{constructor(e){super({name:"InvalidRequest",$fault:"client",...e}),this.name="InvalidRequest",this.$fault="client",Object.setPrototypeOf(this,Bd.prototype)}}class Dd extends Sd{constructor(e){super({name:"InvalidWriteOffset",$fault:"client",...e}),this.name="InvalidWriteOffset",this.$fault="client",Object.setPrototypeOf(this,Dd.prototype)}}class jd extends Sd{constructor(e){super({name:"TooManyParts",$fault:"client",...e}),this.name="TooManyParts",this.$fault="client",Object.setPrototypeOf(this,jd.prototype)}}class zd extends Sd{constructor(e){super({name:"ObjectAlreadyInActiveTierError",$fault:"client",...e}),this.name="ObjectAlreadyInActiveTierError",this.$fault="client",Object.setPrototypeOf(this,zd.prototype)}}var qd;!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])}(qd||(qd={}));const Hd=e=>({...e,...e.SSEKMSKeyId&&{SSEKMSKeyId:zt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:zt}}),Wd=e=>({...e,...e.SSECustomerKey&&{SSECustomerKey:zt},...e.SSEKMSKeyId&&{SSEKMSKeyId:zt},...e.SSEKMSEncryptionContext&&{SSEKMSEncryptionContext:zt}}),Kd=async(e,t)=>{const r=Ge(e,t),n=qr({},Dr,{[Yf]:e[Jh],[Ep]:e[Xh],[xp]:e[rf],[Tp]:e[tf],[Ap]:[()=>Dr(e[Pl]),()=>e[Pl].toString()]});r.bp("/"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1);const i=qr({[qf]:[,""]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Vd=async(e,t)=>{const r=Ge(e,t),n=qr({},Dr,{[up]:e[kh],[bp]:e[qh],[Vf]:[()=>Dr(e[Ol]),()=>e[Ol].toString()],[rp]:e[Yl],[Cf]:e[dh],[ap]:[()=>Dr(e[lh]),()=>dr(e[lh]).toString()],[cp]:[()=>Dr(e[hh]),()=>e[hh].toString()]});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=qr({[Fp]:[,"DeleteObject"],[Wf]:[,e[cf]]});return r.m("DELETE").h(n).q(i).b(undefined),r.build()},Qd=async(e,t)=>{const r=Ge(e,t),n=qr({},Dr,{[Cf]:e[dh],[Rf]:[()=>Dr(e[fh]),()=>dr(e[fh]).toString()],[Of]:e[ph],[Pf]:[()=>Dr(e[yh]),()=>dr(e[yh]).toString()],[$f]:e[Nh],[Cp]:e[Zh],[Rp]:e[Yh],[Op]:e[ef],[bp]:e[qh],[rp]:e[Yl],[Jf]:e[Dl]});r.bp("/{Key+}"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1),r.p("Key",(()=>e.Key),"{Key+}",!0);const i=qr({[Fp]:[,"GetObject"],[Uf]:[,e[$h]],[Lf]:[,e[Uh]],[Bf]:[,e[Lh]],[Df]:[,e[Bh]],[jf]:[,e[Dh]],[zf]:[()=>void 0!==e.ResponseExpires,()=>dr(e[jh]).toString()],[Wf]:[,e[cf]],[Nf]:[()=>void 0!==e.PartNumber,()=>e[Ih].toString()]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Gd=async(e,t)=>{const r=Ge(e,t),n=qr({},Dr,{[bp]:e[qh],[rp]:e[Yl],[gp]:[()=>Dr(e[Ph]),()=>(e[Ph]||[]).map(Qr).join(", ")]});r.bp("/"),r.p("Bucket",(()=>e.Bucket),"{Bucket}",!1);const i=qr({[Mf]:[,"2"],[kf]:[,e[Gl]],[Ef]:[,e[th]],[If]:[()=>void 0!==e.MaxKeys,()=>e[Sh].toString()],[Ff]:[,e[_h]],[wf]:[,e[Vl]],[Tf]:[()=>void 0!==e.FetchOwner,()=>e[ih].toString()],[Hf]:[,e[Vh]]});return r.m("GET").h(n).q(i).b(undefined),r.build()},Jd=async(e,t)=>{const r=Ge(e,t),n=qr({},Dr,{[bf]:e[Kl]||"application/octet-stream",[Kf]:e[Al],[hf]:e[Il],[ff]:e[$l],[pf]:e[Ul],[gf]:e[Ll],[mf]:[()=>Dr(e[Bl]),()=>e[Bl].toString()],[yf]:e[jl],[Sp]:e[Ml],[Qf]:e[Nl],[Gf]:e[Fl],[Xf]:e[Hl],[Zf]:e[Wl],[Sf]:[()=>Dr(e[Zl]),()=>dr(e[Zl]).toString()],[Cf]:e[dh],[Of]:e[ph],[np]:e[oh],[ip]:e[sh],[op]:e[ah],[sp]:e[ch],[Ip]:[()=>Dr(e[uf]),()=>e[uf].toString()],[Ep]:e[Xh],[kp]:e[Gh],[Np]:e[df],[Cp]:e[Zh],[Rp]:e[Yh],[Op]:e[ef],[xp]:e[rf],[Tp]:e[tf],[Ap]:[()=>Dr(e[Pl]),()=>e[Pl].toString()],[bp]:e[qh],[Pp]:e[sf],[fp]:e[Rh],[pp]:[()=>Dr(e[Oh]),()=>{return(t=e[Oh],t.toISOString().replace(".000Z","Z")).toString();var t}],[hp]:e[Ch],[rp]:e[Yl],...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=qr({[Fp]:[,"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()},Xd=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return rl(e,t);const r=qr({$metadata:xl(e),[Xh]:[,e.headers[Ep]],[rf]:[,e.headers[xp]],[tf]:[,e.headers[Tp]],[Pl]:[()=>void 0!==e.headers[Ap],()=>qt(e.headers[Ap])]}),n=Zt(Yt(await mi(e.body,t)),"body");return null!=n[_l]&&(r[_l]=El(n[_l])),r},Zd=async(e,t)=>{if(204!==e.statusCode&&e.statusCode>=300)return rl(e,t);const r=qr({$metadata:xl(e),[Jl]:[()=>void 0!==e.headers[ep],()=>qt(e.headers[ep])],[cf]:[,e.headers[Mp]],[Fh]:[,e.headers[vp]]});return await Ve(e.body,t),r},Yd=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return rl(e,t);const r=qr({$metadata:xl(e),[Jl]:[()=>void 0!==e.headers[ep],()=>qt(e.headers[ep])],[Cl]:[,e.headers[lf]],[nh]:[,e.headers[tp]],[Kh]:[,e.headers[yp]],[wh]:[()=>void 0!==e.headers[_f],()=>Zt(mr(e.headers[_f]))],[Bl]:[()=>void 0!==e.headers[mf],()=>nr(e.headers[mf])],[rh]:[,e.headers[xf]],[Nl]:[,e.headers[Qf]],[Fl]:[,e.headers[Gf]],[Hl]:[,e.headers[Xf]],[Wl]:[,e.headers[Zf]],[Eh]:[()=>void 0!==e.headers[dp],()=>ir(e.headers[dp])],[cf]:[,e.headers[Mp]],[Il]:[,e.headers[hf]],[$l]:[,e.headers[ff]],[Ul]:[,e.headers[pf]],[Ll]:[,e.headers[gf]],[ql]:[,e.headers[vf]],[Kl]:[,e.headers[bf]],[Zl]:[()=>void 0!==e.headers[Sf],()=>Zt(mr(e.headers[Sf]))],[eh]:[,e.headers[Af]],[df]:[,e.headers[Np]],[Xh]:[,e.headers[Ep]],[Zh]:[,e.headers[Cp]],[ef]:[,e.headers[Op]],[rf]:[,e.headers[xp]],[Pl]:[()=>void 0!==e.headers[Ap],()=>qt(e.headers[Ap])],[Gh]:[,e.headers[kp]],[Fh]:[,e.headers[vp]],[Hh]:[,e.headers[wp]],[Mh]:[()=>void 0!==e.headers[lp],()=>ir(e.headers[lp])],[af]:[()=>void 0!==e.headers[_p],()=>ir(e.headers[_p])],[Rh]:[,e.headers[fp]],[Oh]:[()=>void 0!==e.headers[pp],()=>Zt(hr(e.headers[pp]))],[Ch]:[,e.headers[hp]],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},el=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return rl(e,t);const r=qr({$metadata:xl(e),[Fh]:[,e.headers[vp]]}),n=Zt(Yt(await mi(e.body,t)),"body");return""===n.CommonPrefixes?r[zl]=[]:null!=n[zl]&&(r[zl]=vl(Lr(n[zl]))),""===n.Contents?r[Ql]=[]:null!=n[Ql]&&(r[Ql]=wl(Lr(n[Ql]))),null!=n[Vl]&&(r[Vl]=er(n[Vl])),null!=n[Gl]&&(r[Gl]=er(n[Gl])),null!=n[th]&&(r[th]=er(n[th])),null!=n[mh]&&(r[mh]=qt(n[mh])),null!=n[bh]&&(r[bh]=ir(n[bh])),null!=n[Sh]&&(r[Sh]=ir(n[Sh])),null!=n[xh]&&(r[xh]=er(n[xh])),null!=n[Ah]&&(r[Ah]=er(n[Ah])),null!=n[_h]&&(r[_h]=er(n[_h])),null!=n[Vh]&&(r[Vh]=er(n[Vh])),r},tl=async(e,t)=>{if(200!==e.statusCode&&e.statusCode>=300)return rl(e,t);const r=qr({$metadata:xl(e),[nh]:[,e.headers[tp]],[rh]:[,e.headers[xf]],[Nl]:[,e.headers[Qf]],[Fl]:[,e.headers[Gf]],[Hl]:[,e.headers[Xf]],[Wl]:[,e.headers[Zf]],[Xh]:[,e.headers[Ep]],[cf]:[,e.headers[Mp]],[Zh]:[,e.headers[Cp]],[ef]:[,e.headers[Op]],[rf]:[,e.headers[xp]],[tf]:[,e.headers[Tp]],[Pl]:[()=>void 0!==e.headers[Ap],()=>qt(e.headers[Ap])],[of]:[()=>void 0!==e.headers[mp],()=>nr(e.headers[mp])],[Fh]:[,e.headers[vp]]});return await Ve(e.body,t),r},rl=async(e,t)=>{const r={...e,body:await yi(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 fl(r,t);case"ObjectNotInActiveTierError":case"com.amazonaws.s3#ObjectNotInActiveTierError":throw await ml(r,t);case"BucketAlreadyExists":case"com.amazonaws.s3#BucketAlreadyExists":throw await ol(r,t);case"BucketAlreadyOwnedByYou":case"com.amazonaws.s3#BucketAlreadyOwnedByYou":throw await sl(r,t);case"NoSuchBucket":case"com.amazonaws.s3#NoSuchBucket":throw await ll(r,t);case"InvalidObjectState":case"com.amazonaws.s3#InvalidObjectState":throw await cl(r,t);case"NoSuchKey":case"com.amazonaws.s3#NoSuchKey":throw await hl(r,t);case"NotFound":case"com.amazonaws.s3#NotFound":throw await pl(r,t);case"EncryptionTypeMismatch":case"com.amazonaws.s3#EncryptionTypeMismatch":throw await al(r,t);case"InvalidRequest":case"com.amazonaws.s3#InvalidRequest":throw await ul(r,t);case"InvalidWriteOffset":case"com.amazonaws.s3#InvalidWriteOffset":throw await dl(r,t);case"TooManyParts":case"com.amazonaws.s3#TooManyParts":throw await yl(r,t);case"ObjectAlreadyInActiveTierError":case"com.amazonaws.s3#ObjectAlreadyInActiveTierError":throw await gl(r,t);default:const i=r.body;return nl({output:e,parsedBody:i,errorCode:n})}},nl=(il=Sd,({output:e,parsedBody:t,errorCode:r})=>{(({output:e,parsedBody:t,exceptionCtor:r,errorCode:n})=>{const i=Pr(e),o=i.httpStatusCode?i.httpStatusCode+"":void 0,s=new r({name:t?.code||t?.Code||n||o||"UnknownError",$fault:"client",$metadata:i});throw Or(s,t)})({output:e,parsedBody:t,exceptionCtor:il,errorCode:r})});var il;const ol=async(e,t)=>{const r=qr({});e.body;const n=new Ad({$metadata:xl(e),...r});return Or(n,e.body)},sl=async(e,t)=>{const r=qr({});e.body;const n=new Td({$metadata:xl(e),...r});return Or(n,e.body)},al=async(e,t)=>{const r=qr({});e.body;const n=new Ld({$metadata:xl(e),...r});return Or(n,e.body)},cl=async(e,t)=>{const r=qr({}),n=e.body;null!=n[Rl]&&(r[Rl]=er(n[Rl])),null!=n[Gh]&&(r[Gh]=er(n[Gh]));const i=new Pd({$metadata:xl(e),...r});return Or(i,e.body)},ul=async(e,t)=>{const r=qr({});e.body;const n=new Bd({$metadata:xl(e),...r});return Or(n,e.body)},dl=async(e,t)=>{const r=qr({});e.body;const n=new Dd({$metadata:xl(e),...r});return Or(n,e.body)},ll=async(e,t)=>{const r=qr({});e.body;const n=new Cd({$metadata:xl(e),...r});return Or(n,e.body)},hl=async(e,t)=>{const r=qr({});e.body;const n=new _d({$metadata:xl(e),...r});return Or(n,e.body)},fl=async(e,t)=>{const r=qr({});e.body;const n=new Ed({$metadata:xl(e),...r});return Or(n,e.body)},pl=async(e,t)=>{const r=qr({});e.body;const n=new Md({$metadata:xl(e),...r});return Or(n,e.body)},gl=async(e,t)=>{const r=qr({});e.body;const n=new zd({$metadata:xl(e),...r});return Or(n,e.body)},ml=async(e,t)=>{const r=qr({});e.body;const n=new xd({$metadata:xl(e),...r});return Or(n,e.body)},yl=async(e,t)=>{const r=qr({});e.body;const n=new jd({$metadata:xl(e),...r});return Or(n,e.body)},vl=(e,t)=>(e||[]).filter((e=>null!=e)).map((e=>(e=>{const t={};return null!=e[_h]&&(t[_h]=er(e[_h])),t})(e))),bl=(e,t)=>{const r={};return null!=e[vh]&&(r[vh]=er(e[vh])),null!=e[wh]&&(r[wh]=Zt(hr(e[wh]))),null!=e[rh]&&(r[rh]=er(e[rh])),""===e.ChecksumAlgorithm?r[Ml]=[]:null!=e[Ml]&&(r[Ml]=(e=>(e||[]).filter((e=>null!=e)).map((e=>er(e))))(Lr(e[Ml]))),null!=e[of]&&(r[of]=nr(e[of])),null!=e[Gh]&&(r[Gh]=er(e[Gh])),null!=e[Th]&&(r[Th]=kl(e[Th])),null!=e[Wh]&&(r[Wh]=Sl(e[Wh])),r},wl=(e,t)=>(e||[]).filter((e=>null!=e)).map((e=>bl(e))),kl=(e,t)=>{const r={};return null!=e[Xl]&&(r[Xl]=er(e[Xl])),null!=e[uh]&&(r[uh]=er(e[uh])),r},Sl=(e,t)=>{const r={};return null!=e[gh]&&(r[gh]=qt(e[gh])),null!=e[zh]&&(r[zh]=Zt(hr(e[zh]))),r},El=(e,t)=>{const r={};return null!=e[Tl]&&(r[Tl]=er(e[Tl])),null!=e[Qh]&&(r[Qh]=er(e[Qh])),null!=e[nf]&&(r[nf]=er(e[nf])),null!=e[nh]&&(r[nh]=Zt(hr(e[nh]))),r},xl=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"]}),Al="ACL",Tl="AccessKeyId",Cl="AcceptRanges",Rl="AccessTier",Ol="BypassGovernanceRetention",Pl="BucketKeyEnabled",_l="Credentials",Ml="ChecksumAlgorithm",Il="CacheControl",Nl="ChecksumCRC32",Fl="ChecksumCRC32C",$l="ContentDisposition",Ul="ContentEncoding",Ll="ContentLanguage",Bl="ContentLength",Dl="ChecksumMode",jl="ContentMD5",zl="CommonPrefixes",ql="ContentRange",Hl="ChecksumSHA1",Wl="ChecksumSHA256",Kl="ContentType",Vl="ContinuationToken",Ql="Contents",Gl="Delimiter",Jl="DeleteMarker",Xl="DisplayName",Zl="Expires",Yl="ExpectedBucketOwner",eh="ExpiresString",th="EncodingType",rh="ETag",nh="Expiration",ih="FetchOwner",oh="GrantFullControl",sh="GrantRead",ah="GrantReadACP",ch="GrantWriteACP",uh="ID",dh="IfMatch",lh="IfMatchLastModifiedTime",hh="IfMatchSize",fh="IfModifiedSince",ph="IfNoneMatch",gh="IsRestoreInProgress",mh="IsTruncated",yh="IfUnmodifiedSince",vh="Key",bh="KeyCount",wh="LastModified",kh="MFA",Sh="MaxKeys",Eh="MissingMeta",xh="Name",Ah="NextContinuationToken",Th="Owner",Ch="ObjectLockLegalHoldStatus",Rh="ObjectLockMode",Oh="ObjectLockRetainUntilDate",Ph="OptionalObjectAttributes",_h="Prefix",Mh="PartsCount",Ih="PartNumber",Nh="Range",Fh="RequestCharged",$h="ResponseCacheControl",Uh="ResponseContentDisposition",Lh="ResponseContentEncoding",Bh="ResponseContentLanguage",Dh="ResponseContentType",jh="ResponseExpires",zh="RestoreExpiryDate",qh="RequestPayer",Hh="ReplicationStatus",Wh="RestoreStatus",Kh="Restore",Vh="StartAfter",Qh="SecretAccessKey",Gh="StorageClass",Jh="SessionMode",Xh="ServerSideEncryption",Zh="SSECustomerAlgorithm",Yh="SSECustomerKey",ef="SSECustomerKeyMD5",tf="SSEKMSEncryptionContext",rf="SSEKMSKeyId",nf="SessionToken",of="Size",sf="Tagging",af="TagCount",cf="VersionId",uf="WriteOffsetBytes",df="WebsiteRedirectLocation",lf="accept-ranges",hf="cache-control",ff="content-disposition",pf="content-encoding",gf="content-language",mf="content-length",yf="content-md5",vf="content-range",bf="content-type",wf="continuation-token",kf="delimiter",Sf="expires",Ef="encoding-type",xf="etag",Af="expiresstring",Tf="fetch-owner",Cf="if-match",Rf="if-modified-since",Of="if-none-match",Pf="if-unmodified-since",_f="last-modified",Mf="list-type",If="max-keys",Nf="partNumber",Ff="prefix",$f="range",Uf="response-cache-control",Lf="response-content-disposition",Bf="response-content-encoding",Df="response-content-language",jf="response-content-type",zf="response-expires",qf="session",Hf="start-after",Wf="versionId",Kf="x-amz-acl",Vf="x-amz-bypass-governance-retention",Qf="x-amz-checksum-crc32",Gf="x-amz-checksum-crc32c",Jf="x-amz-checksum-mode",Xf="x-amz-checksum-sha1",Zf="x-amz-checksum-sha256",Yf="x-amz-create-session-mode",ep="x-amz-delete-marker",tp="x-amz-expiration",rp="x-amz-expected-bucket-owner",np="x-amz-grant-full-control",ip="x-amz-grant-read",op="x-amz-grant-read-acp",sp="x-amz-grant-write-acp",ap="x-amz-if-match-last-modified-time",cp="x-amz-if-match-size",up="x-amz-mfa",dp="x-amz-missing-meta",lp="x-amz-mp-parts-count",hp="x-amz-object-lock-legal-hold",fp="x-amz-object-lock-mode",pp="x-amz-object-lock-retain-until-date",gp="x-amz-optional-object-attributes",mp="x-amz-object-size",yp="x-amz-restore",vp="x-amz-request-charged",bp="x-amz-request-payer",wp="x-amz-replication-status",kp="x-amz-storage-class",Sp="x-amz-sdk-checksum-algorithm",Ep="x-amz-server-side-encryption",xp="x-amz-server-side-encryption-aws-kms-key-id",Ap="x-amz-server-side-encryption-bucket-key-enabled",Tp="x-amz-server-side-encryption-context",Cp="x-amz-server-side-encryption-customer-algorithm",Rp="x-amz-server-side-encryption-customer-key",Op="x-amz-server-side-encryption-customer-key-md5",Pp="x-amz-tagging",_p="x-amz-tagging-count",Mp="x-amz-version-id",Ip="x-amz-write-offset-bytes",Np="x-amz-website-redirect-location",Fp="x-id";class $p extends(Dt.classBuilder().ep({...kd,DisableS3ExpressSessionAuth:{type:"staticContextParams",value:!0},Bucket:{type:"contextParams",name:"Bucket"}}).m((function(e,t,r,n){return[pe(r,this.serialize,this.deserialize),Cs(r,e.getEndpointParameterInstructions()),Ao(r)]})).s("AmazonS3","CreateSession",{}).n("S3Client","CreateSessionCommand").f(Fd,Nd).ser(Kd).de(Xd).build()){}var Up="3.701.0";function Lp(e){return"string"==typeof e?0===e.length:0===e.byteLength}var Bp={name:"SHA-1"},Dp={name:"HMAC",hash:Bp},jp=new Uint8Array([218,57,163,238,94,107,75,13,50,85,191,239,149,96,24,144,175,216,7,9]);const zp={};function qp(){return"undefined"!=typeof window?window:"undefined"!=typeof self?self:zp}var Hp=function(){function e(e){this.toHash=new Uint8Array(0),void 0!==e&&(this.key=new Promise((function(t,r){qp().crypto.subtle.importKey("raw",Wp(e),Dp,!1,["sign"]).then(t,r)})),this.key.catch((function(){})))}return e.prototype.update=function(e){if(!Lp(e)){var t=Wp(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 qp().crypto.subtle.sign(Dp,t,e.toHash).then((function(e){return new Uint8Array(e)}))})):Lp(this.toHash)?Promise.resolve(jp):Promise.resolve().then((function(){return qp().crypto.subtle.digest(Bp,e.toHash)})).then((function(e){return Promise.resolve(new Uint8Array(e))}))},e.prototype.reset=function(){this.toHash=new Uint8Array(0)},e}();function Wp(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 Kp=["decrypt","digest","encrypt","exportKey","generateKey","importKey","sign","verify"];function Vp(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&&Kp.every((function(t){return"function"==typeof e[t]}))}(e.crypto.subtle)}var Qp=function(){function e(e){if(!Vp(qp()))throw new Error("SHA1 not supported");this.hash=new Hp(e)}return e.prototype.update=function(e,t){this.hash.update(Ai(e))},e.prototype.digest=function(){return this.hash.digest()},e.prototype.reset=function(){this.hash.reset()},e}(),Gp={name:"SHA-256"},Jp={name:"HMAC",hash:Gp},Xp=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]),Zp=function(){function e(e){this.toHash=new Uint8Array(0),this.secret=e,this.reset()}return e.prototype.update=function(e){if(!Ti(e)){var t=Ai(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 qp().crypto.subtle.sign(Jp,t,e.toHash).then((function(e){return new Uint8Array(e)}))})):Ti(this.toHash)?Promise.resolve(Xp):Promise.resolve().then((function(){return qp().crypto.subtle.digest(Gp,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){qp().crypto.subtle.importKey("raw",Ai(e.secret),Jp,!1,["sign"]).then(t,r)})),this.key.catch((function(){})))},e}();function Yp(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 eg(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]ig)throw new Error("Cannot hash more than 2^53 - 1 bits");for(;r>0;)this.buffer[this.bufferLength++]=e[t++],r--,this.bufferLength===tg&&(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%tg>=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+(rg[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}(),sg=function(){function e(e){this.secret=e,this.hash=new og,this.reset()}return e.prototype.update=function(e){if(!Ti(e)&&!this.error)try{this.hash.update(Ai(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 Yp(this,void 0,void 0,(function(){return eg(this,(function(e){return[2,this.digestSync()]}))}))},e.prototype.reset=function(){if(this.hash=new og,this.secret){this.outer=new og;var e=function(e){var t=Ai(e);if(t.byteLength>tg){var r=new og;r.update(t),t=r.digest()}var n=new Uint8Array(tg);return n.set(t),n}(this.secret),t=new Uint8Array(tg);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 ug=Gr(cg.exports);const dg=({serviceId:e,clientVersion:t})=>async r=>{const n="undefined"!=typeof window&&window?.navigator?.userAgent?ug.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 lg{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&&hg(t),new lg(t)}valueOf(){const e=this.bytes.slice(0),t=128&e[0];return t&&hg(e),parseInt(Be(e),16)*(t?-1:1)}toString(){return String(this.valueOf())}}function hg(e){for(let t=0;t<8;t++)e[t]^=255;for(let t=7;t>-1&&(e[t]++,0===e[t]);t--);}class fg{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(lg.fromNumber(e.value.valueOf()).bytes,1),u;case"uuid":if(!xg.test(e.value))throw new Error(`Invalid UUID received: ${e.value}`);const d=new Uint8Array(17);return d[0]=9,d.set(Le(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 Fi;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 Fi).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 Tg{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 Cg{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 Rg{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 Og{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 Pg(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 _g{constructor({utf8Encoder:e,utf8Decoder:t}){this.eventStreamCodec=new Ag(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 Ig=e=>"function"==typeof ReadableStream&&e instanceof ReadableStream,Ng=e=>new Mg(e);const Fg=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()},$g=64,Ug=[1732584193,4023233417,2562383102,271733878];class Lg{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 Ee(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===$g&&(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%$g>=56){for(let t=this.bufferLength;t<$g;t++)e.setUint8(t,0);this.hashBuffer(),this.bufferLength=0}for(let t=this.bufferLength;t<56;t++)e.setUint8(t,0);e.setUint32(56,n>>>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=Dg(r,n,i,o,e.getUint32(0,!0),7,3614090360),o=Dg(o,r,n,i,e.getUint32(4,!0),12,3905402710),i=Dg(i,o,r,n,e.getUint32(8,!0),17,606105819),n=Dg(n,i,o,r,e.getUint32(12,!0),22,3250441966),r=Dg(r,n,i,o,e.getUint32(16,!0),7,4118548399),o=Dg(o,r,n,i,e.getUint32(20,!0),12,1200080426),i=Dg(i,o,r,n,e.getUint32(24,!0),17,2821735955),n=Dg(n,i,o,r,e.getUint32(28,!0),22,4249261313),r=Dg(r,n,i,o,e.getUint32(32,!0),7,1770035416),o=Dg(o,r,n,i,e.getUint32(36,!0),12,2336552879),i=Dg(i,o,r,n,e.getUint32(40,!0),17,4294925233),n=Dg(n,i,o,r,e.getUint32(44,!0),22,2304563134),r=Dg(r,n,i,o,e.getUint32(48,!0),7,1804603682),o=Dg(o,r,n,i,e.getUint32(52,!0),12,4254626195),i=Dg(i,o,r,n,e.getUint32(56,!0),17,2792965006),n=Dg(n,i,o,r,e.getUint32(60,!0),22,1236535329),r=jg(r,n,i,o,e.getUint32(4,!0),5,4129170786),o=jg(o,r,n,i,e.getUint32(24,!0),9,3225465664),i=jg(i,o,r,n,e.getUint32(44,!0),14,643717713),n=jg(n,i,o,r,e.getUint32(0,!0),20,3921069994),r=jg(r,n,i,o,e.getUint32(20,!0),5,3593408605),o=jg(o,r,n,i,e.getUint32(40,!0),9,38016083),i=jg(i,o,r,n,e.getUint32(60,!0),14,3634488961),n=jg(n,i,o,r,e.getUint32(16,!0),20,3889429448),r=jg(r,n,i,o,e.getUint32(36,!0),5,568446438),o=jg(o,r,n,i,e.getUint32(56,!0),9,3275163606),i=jg(i,o,r,n,e.getUint32(12,!0),14,4107603335),n=jg(n,i,o,r,e.getUint32(32,!0),20,1163531501),r=jg(r,n,i,o,e.getUint32(52,!0),5,2850285829),o=jg(o,r,n,i,e.getUint32(8,!0),9,4243563512),i=jg(i,o,r,n,e.getUint32(28,!0),14,1735328473),n=jg(n,i,o,r,e.getUint32(48,!0),20,2368359562),r=zg(r,n,i,o,e.getUint32(20,!0),4,4294588738),o=zg(o,r,n,i,e.getUint32(32,!0),11,2272392833),i=zg(i,o,r,n,e.getUint32(44,!0),16,1839030562),n=zg(n,i,o,r,e.getUint32(56,!0),23,4259657740),r=zg(r,n,i,o,e.getUint32(4,!0),4,2763975236),o=zg(o,r,n,i,e.getUint32(16,!0),11,1272893353),i=zg(i,o,r,n,e.getUint32(28,!0),16,4139469664),n=zg(n,i,o,r,e.getUint32(40,!0),23,3200236656),r=zg(r,n,i,o,e.getUint32(52,!0),4,681279174),o=zg(o,r,n,i,e.getUint32(0,!0),11,3936430074),i=zg(i,o,r,n,e.getUint32(12,!0),16,3572445317),n=zg(n,i,o,r,e.getUint32(24,!0),23,76029189),r=zg(r,n,i,o,e.getUint32(36,!0),4,3654602809),o=zg(o,r,n,i,e.getUint32(48,!0),11,3873151461),i=zg(i,o,r,n,e.getUint32(60,!0),16,530742520),n=zg(n,i,o,r,e.getUint32(8,!0),23,3299628645),r=qg(r,n,i,o,e.getUint32(0,!0),6,4096336452),o=qg(o,r,n,i,e.getUint32(28,!0),10,1126891415),i=qg(i,o,r,n,e.getUint32(56,!0),15,2878612391),n=qg(n,i,o,r,e.getUint32(20,!0),21,4237533241),r=qg(r,n,i,o,e.getUint32(48,!0),6,1700485571),o=qg(o,r,n,i,e.getUint32(12,!0),10,2399980690),i=qg(i,o,r,n,e.getUint32(40,!0),15,4293915773),n=qg(n,i,o,r,e.getUint32(4,!0),21,2240044497),r=qg(r,n,i,o,e.getUint32(32,!0),6,1873313359),o=qg(o,r,n,i,e.getUint32(60,!0),10,4264355552),i=qg(i,o,r,n,e.getUint32(24,!0),15,2734768916),n=qg(n,i,o,r,e.getUint32(52,!0),21,1309151649),r=qg(r,n,i,o,e.getUint32(16,!0),6,4149444226),o=qg(o,r,n,i,e.getUint32(44,!0),10,3174756917),i=qg(i,o,r,n,e.getUint32(8,!0),15,718787259),n=qg(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(Ug),this.buffer=new DataView(new ArrayBuffer($g)),this.bufferLength=0,this.bytesHashed=0,this.finished=!1}}function Bg(e,t,r,n,i,o){return((t=(t+e&4294967295)+(n+o&4294967295)&4294967295)<>>32-i)+r&4294967295}function Dg(e,t,r,n,i,o,s){return Bg(t&r|~t&n,e,t,i,o,s)}function jg(e,t,r,n,i,o,s){return Bg(t&n|r&~n,e,t,i,o,s)}function zg(e,t,r,n,i,o,s){return Bg(t^r^n,e,t,i,o,s)}function qg(e,t,r,n,i,o,s){return Bg(r^(t|~n),e,t,i,o,s)}const Hg="function"==typeof TextEncoder?new TextEncoder:null,Wg=e=>{if("string"==typeof e){if(Hg)return Hg.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}`)},Kg=["in-region","cross-region","mobile","standard","legacy"],Vg=()=>{const e="undefined"!=typeof window&&window?.navigator?.userAgent?ug.parse(window.navigator.userAgent):void 0,t=e?.platform?.type;return"tablet"===t||"mobile"===t},Qg=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(Vg()?"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 ${Kg.join(", ")}, got ${t}`)}})))(e),r=()=>t().then(_r),n=(e=>({apiVersion:"2006-03-01",base64Decoder:e?.base64Decoder??Se,base64Encoder:e?.base64Encoder??Te,disableHostPrefix:e?.disableHostPrefix??!1,endpointProvider:e?.endpointProvider??pd,extensions:e?.extensions??[],getAwsChunkedEncodingStream:e?.getAwsChunkedEncodingStream??Re,httpAuthSchemeProvider:e?.httpAuthSchemeProvider??bd,httpAuthSchemes:e?.httpAuthSchemes??[{schemeId:"aws.auth#sigv4",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4"),signer:new se},{schemeId:"aws.auth#sigv4a",identityProvider:e=>e.getIdentityProvider("aws.auth#sigv4a"),signer:new ae}],logger:e?.logger??new zr,sdkStreamMixin:e?.sdkStreamMixin??ze,serviceId:e?.serviceId??"S3",signerConstructor:e?.signerConstructor??ea,signingEscapePath:e?.signingEscapePath??!1,urlParser:e?.urlParser??Ss,useArnRegion:e?.useArnRegion??!1,utf8Decoder:e?.utf8Decoder??Ee,utf8Encoder:e?.utf8Encoder??Ae}))(e);return{...n,...e,runtime:"browser",defaultsMode:t,bodyLengthChecker:e?.bodyLengthChecker??Wg,credentialDefaultProvider:e?.credentialDefaultProvider??(e=>()=>Promise.reject(new Error("Credential is missing"))),defaultUserAgentProvider:e?.defaultUserAgentProvider??dg({serviceId:n.serviceId,clientVersion:Up}),eventStreamSerdeProvider:e?.eventStreamSerdeProvider??Ng,maxAttempts:e?.maxAttempts??3,md5:e?.md5??Lg,region:e?.region??(i="Region is missing",()=>Promise.reject(i)),requestHandler:Ne.create(e?.requestHandler??r),retryMode:e?.retryMode??(async()=>(await r()).retryMode||Os),sha1:e?.sha1??Qp,sha256:e?.sha256??ag,streamCollector:e?.streamCollector??Fe,streamHasher:e?.streamHasher??Fg,useDualstackEndpoint:e?.useDualstackEndpoint??(()=>Promise.resolve(false)),useFipsEndpoint:e?.useFipsEndpoint??(()=>Promise.resolve(false))};var i},Gg=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}},Jg=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}},Xg=e=>({httpAuthSchemes:e.httpAuthSchemes(),httpAuthSchemeProvider:e.httpAuthSchemeProvider(),credentials:e.credentials()});class Zg extends Bt{constructor(...[e]){const t=Qg(e||{});var r;const n=function(e){const t=be(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()=>Es(await ue(r)()):void 0,i=!!r,o={...e,endpoint:n,tls:t,isCustomEndpoint:i,useDualstackEndpoint:ue(e.useDualstackEndpoint??!1),useFipsEndpoint:ue(e.useFipsEndpoint??!1)};let s;return o.serviceConfiguredEndpoint=async()=>(e.serviceId&&!s&&(s=ks(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 ls(t);const e=await t();return ls(e)},useFipsEndpoint:async()=>{const e="string"==typeof t?t:await t();return!!ds(e)||("function"!=typeof r?Promise.resolve(!!r):r())}}})((e=>{const{retryStrategy:t}=e,r=ue(e.maxAttempts??3);return{...e,maxAttempts:r,retryStrategy:async()=>t||(await ue(e.retryMode)()===Rs.ADAPTIVE?new Bs(r):new Ls(r))}})((i=n,{...i,requestChecksumCalculation:ue(i.requestChecksumCalculation??V),responseChecksumValidation:ue(i.responseChecksumValidation??Q)}))))),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 co((async e=>r().send(new n({Bucket:e,SessionMode:"ReadWrite"})))),bucketEndpoint:e.bucketEndpoint??!1}})(wd(o),{session:[()=>this,$p]}),a=((e,t)=>{const r={...Gg(e),...$r(e),...I(e),...Jg(e)};return t.forEach((e=>e.configure(r))),{...e,...(i=r,{region:i.region()}),...Ur(r),...(n=r,{httpHandler:n.httpHandler()}),...Xg(r)};var n,i})(s,e?.extensions||[]);super(a),this.config=a,this.middlewareStack.use((e=>({applyToStack:t=>{t.add(as(e),us)}}))(this.config)),this.middlewareStack.use(Xs(this.config)),this.middlewareStack.use(ps(this.config)),this.middlewareStack.use(Qi(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}}),Gi)}})),this.middlewareStack.use(Zi(this.config)),this.middlewareStack.use(((e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:r})=>({applyToStack:n=>{n.addRelativeTo(de(e,{httpAuthSchemeParametersProvider:t,identityProviderConfigProvider:r}),le)}}))(this.config,{httpAuthSchemeParametersProvider:gd,identityProviderConfigProvider:async e=>new Xe({"aws.auth#sigv4":e.credentials,"aws.auth#sigv4a":e.credentials})})),this.middlewareStack.use(ve(this.config)),this.middlewareStack.use(Ro(this.config)),this.middlewareStack.use(W(this.config)),this.middlewareStack.use(no(this.config)),this.middlewareStack.use(yo(this.config)),this.middlewareStack.use((e=>({applyToStack:t=>{t.addRelativeTo(wo(e),ye)}}))(this.config))}destroy(){super.destroy()}}const Yg={name:"ssecMiddleware",step:"initialize",tags:["SSE"],override:!0},em=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?tm(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})}),Yg)}});function tm(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 rm extends(Dt.classBuilder().ep({...kd,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[pe(r,this.serialize,this.deserialize),Cs(r,e.getEndpointParameterInstructions()),Ao(r)]})).s("AmazonS3","DeleteObject",{}).n("S3Client","DeleteObjectCommand").f(void 0,void 0).ser(Vd).de(Zd).build()){}class nm extends(Dt.classBuilder().ep({...kd,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[pe(r,this.serialize,this.deserialize),Cs(r,e.getEndpointParameterInstructions()),Ki(r,{requestChecksumRequired:!1,requestValidationModeMember:"ChecksumMode",responseAlgorithms:["CRC32","CRC32C","SHA256","SHA1"]}),em(r),oo()]})).s("AmazonS3","GetObject",{}).n("S3Client","GetObjectCommand").f(Ud,$d).ser(Qd).de(Yd).build()){}class im extends(Dt.classBuilder().ep({...kd,Bucket:{type:"contextParams",name:"Bucket"},Prefix:{type:"contextParams",name:"Prefix"}}).m((function(e,t,r,n){return[pe(r,this.serialize,this.deserialize),Cs(r,e.getEndpointParameterInstructions()),Ao(r)]})).s("AmazonS3","ListObjectsV2",{}).n("S3Client","ListObjectsV2Command").f(void 0,void 0).ser(Gd).de(el).build()){}class om extends(Dt.classBuilder().ep({...kd,Bucket:{type:"contextParams",name:"Bucket"},Key:{type:"contextParams",name:"Key"}}).m((function(e,t,r,n){return[pe(r,this.serialize,this.deserialize),Cs(r,e.getEndpointParameterInstructions()),Ki(r,{requestAlgorithmMember:"ChecksumAlgorithm",requestAlgorithmMemberHttpHeader:"x-amz-sdk-checksum-algorithm",requestChecksumRequired:!1}),eo(),Ao(r),em(r)]})).s("AmazonS3","PutObject",{}).n("S3Client","PutObjectCommand").f(Wd,Hd).ser(Jd).de(tl).build()){}class sm{constructor(e){this.config=e,this.taskQueue=new h(5),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return s(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 s(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);const c=new Zg({endpoint:t,region:r,credentials:{accessKeyId:i,secretAccessKey:o}});try{let e,t=[],r=!0;for(;r;){const i=yield c.send(new im({Bucket:n,Prefix:a,ContinuationToken:e}));i.Contents&&(t=t.concat(i.Contents)),e=i.NextContinuationToken,r=!!e}if(0===t.length)return[];const i=new Set;""===a||a.endsWith("/")||(a+="/");let o=t.map((e=>e.Key));for(const e of o){const t=e.substring(a.length).split("/")[0];i.add(t)}return Array.from(i)}catch(e){return console.error(e),[]}}))}deleteFile(e){return s(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 Zg({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 rm({Bucket:n,Key:c})),!0}catch(e){return console.error(e),!1}}))}}class am extends sm{constructor(e){super(e)}uploadFile(e,t){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){let{endpoint:r,region:n,bucketName:i,accessKeyId:o,secretAccessKey:s,dir:a}=this.config;const c=new Zg({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 om({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 s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(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 Zg({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 nm({Bucket:n,Key:c}));if(!e.Body)return console.error("No response body"),!1;return(yield e.Body.transformToByteArray()).buffer}catch(t){return console.error("Error downloading file:",t,e),!1}}))))))}))}}class cm{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 h(5)}retryOperation(e,t=0){return s(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 s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){try{yield this.listFiles(r.substring(0,r.lastIndexOf("/")));let n=r.split("/").pop()||"",i=new File([t],n,{lastModified:(new Date).getTime(),type:t.type}),o=this.client.getFileUploadLink(this.dir+"/"+r);const s=new URL(o);s.search="",o=s.toString();const a=btoa(this.username+":"+this.password),c=yield e.put(o,i,{headers:{Authorization:"Basic "+a},maxContentLength:1/0,maxBodyLength:1/0});return!(c.status>=300)||(console.error("Error occurred during file upload:",c),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(t){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){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});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 s(this,void 0,void 0,(function*(){try{return(yield this.client.getDirectoryContents(this.dir+"/"+e)).map((e=>e.basename))}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 s(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}}))}}class um{constructor(e){this.username=e.username,this.password=e.password,this.url=e.url,this.refreshTokenPromise=null,this.taskQueue=new h(3)}retryOperation(e,t=3){return s(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(t){return s(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=>e.name))||[]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return s(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 dm extends um{constructor(e){super(e)}getAuthHeader(){return`Basic ${btoa(`${this.username}:${this.password}`)}`}uploadFile(t,r){return s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(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 s(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>s(this,void 0,void 0,(function*(){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"});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 lm=["book","config","cover","font"];class hm{constructor(e,t,r){this.type=e,this.remote="dropbox"===e?new E(t,r):"microsoft"===e?new O(t,r):"google"===e?new A(t,r):"s3compatible"===e?new am(t):"webdav"===e?new cm(t):"docker"===e?new dm(t):"boxnet"===e?new k(t,r):"mega"===e?new C(t):"adrive"===e?new b(t,r):"pcloud"===e?new M(t,r):new P}downloadFile(e,t){return s(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 s(this,void 0,void 0,(function*(){return yield this.remote.uploadFile(r,t+"/"+e)}))}deleteFile(e,t){return s(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 s(this,void 0,void 0,(function*(){return yield this.remote.listFiles(e)}))}isExist(e,t){return s(this,void 0,void 0,(function*(){return(yield this.listFiles(t)).find((t=>-1!==t.indexOf(e)))}))}downloadAllFiles(){return s(this,void 0,void 0,(function*(){for(let e of lm){let t=yield this.listFiles(e);for(let r of t)yield this.downloadFile(r,e)}}))}authToken(e){return s(this,void 0,void 0,(function*(){return yield this.remote.authToken(e)}))}getAuthUrl(){return this.remote.getAuthUrl?this.remote.getAuthUrl():""}getStats(){return this.remote.taskQueue.getStats()}resetCounters(){this.remote.taskQueue.resetCounters()}}const fm={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 = ?"},pm={notes:"SELECT * FROM notes WHERE bookKey = ?",bookmarks:"SELECT * FROM bookmarks WHERE bookKey = ?",words:"SELECT * FROM words WHERE bookKey = ?",books:"SELECT * FROM books WHERE key = ?"},gm={notes:"DELETE FROM notes WHERE bookKey = ?",bookmarks:"DELETE FROM bookmarks WHERE bookKey = ?",words:"DELETE FROM words WHERE bookKey = ?"};function mm(e){for(const t in e)e.hasOwnProperty(t)&&(e[`temp-${t}`]=e[t]);return e}const ym={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 vm,bm={sqlStatement:{createTableStatement:mm({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:mm({notes:"SELECT * FROM notes",bookmarks:"SELECT * FROM bookmarks",books:"SELECT * FROM books",plugins:"SELECT * FROM plugins",words:"SELECT * FROM words"}),saveStatement:mm({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:mm({notes:"DELETE FROM notes",bookmarks:"DELETE FROM bookmarks",books:"DELETE FROM books",plugins:"DELETE FROM plugins",words:"DELETE FROM words"}),updateStatement:mm({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:mm({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:mm({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:mm(fm),getByBookKeyStatement:mm(pm),getByBookKeysStatement:mm({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:mm(gm)},jsonToSqlite:mm({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:mm(ym)};class wm{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 km{static generateBook(e,t,r,n,i,o,a){return new Promise(((c,u)=>s(this,void 0,void 0,(function*(){try{let s,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 a.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 a.getMetadata(),m=g.cover;break;case"txt":g=yield a.getMetadata(o),f=g.charset}let y=t.toUpperCase();s=(new Date).getTime()+"",c(new wm(s,u,d,h,r,m,y,l,n,p,i,f))}catch(e){console.error(e),u(e)}}))))}}vm=km,km.getRendtion=(e,t,r,n,i,o,s,a,c,u)=>{let d;var l,h;return"CACHE"===t?d=new u.CacheRender(e,{readerMode:r,animation:i,convertChinese:o,isDarkMode:a,isMobile:c}):"MOBI"===t||"AZW3"===t||"AZW"===t?d=new u.MobiRender(e,{readerMode:r,animation:i,convertChinese:o,isDarkMode:a,isMobile:c}):"EPUB"===t?d=new u.EpubRender(e,{readerMode:r,animation:i,convertChinese:o,isDarkMode:a,isMobile:c}):"TXT"===t?d=new u.TxtRender(e,{readerMode:r,animation:i,charset:n,convertChinese:o,parserRegex:s,isDarkMode:a,isMobile:c}):"MD"===t?d=new u.MdRender(e,{readerMode:r,animation:i,convertChinese:o,isDarkMode:a,isMobile:c}):"PDF"===t?d=new u.PdfRender(e,{readerMode:r,animation:i,convertChinese:o,isDarkMode:a,isMobile:c}):"FB2"===t?d=new u.Fb2Render(e,{readerMode:r,animation:i,convertChinese:o,isDarkMode:a,isMobile:c}):"DOCX"===t?d=new u.DocxRender(e,{readerMode:r,animation:i,convertChinese:o,isDarkMode:a,isMobile:c}):"HTML"===t||"XHTML"===t||"MHTML"===t||"HTM"===t||"XML"===t?d=new u.HtmlRender(e,{readerMode:r,format:t,animation:i,convertChinese:o,isDarkMode:a,isMobile:c}):"CBR"!==t&&"CBT"!==t&&"CBZ"!==t&&"CB7"!==t||(d=new u.ComicRender((l=e,h=new ArrayBuffer(l.byteLength),new Uint8Array(h).set(new Uint8Array(l)),h),{readerMode:r,format:t,animation:i,convertChinese:o,isDarkMode:a,isMobile:c})),d},km.initMobileBook=(e,t,r,n,i,o,a,c,u)=>s(void 0,void 0,void 0,(function*(){try{const s=yield fetch(e);if(!s.ok)throw new Error(`Failed to download book: ${s.status} ${s.statusText}`);const d=yield s.arrayBuffer();window.ReactNativeWebView.postMessage(JSON.stringify({event:"finish-download"})),window.file_content=d;let l=vm.getRendtion(d,t,r,n,i,o,a,u,"yes",window.Kookit);window.rendition=l;let h=document.getElementById("page-area");t&&"TXT"===t.toUpperCase()?yield window.rendition.renderTo(h,c):yield window.rendition.renderTo(h),window.rendition.on("rendered",(()=>{let e=window.rendition.getPosition();window.ReactNativeWebView.postMessage(JSON.stringify({event:"content-loaded",bookLocation:e})),window.rendition.tsTransform()})),window.rendition.on("page-changed",(()=>{let e=window.rendition.getPosition();window.ReactNativeWebView.postMessage(JSON.stringify({event:"page-changed",bookLocation:e}))})),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"}))}})),km.addMobileBook=(e,t,r,n,i,o,a="")=>s(void 0,void 0,void 0,(function*(){var s;try{if("PDF"===r.toUpperCase()&&i>314572800){t=t.replace(/\.[^/.]+$/,"");let e=r.toUpperCase(),s=(new Date).getTime()+"",a=new wm(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===(s=window.ReactNativeWebView)||void 0===s||s.postMessage(JSON.stringify({event:"finish-download"})),window.file_content=u;let d=vm.getRendtion(u,r.toUpperCase(),"","","","no",a,"no","yes",window.Kookit);window.rendition=d,t=t.replace(/\.[^/.]+$/,"");let l=yield km.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"}))}})),km.precacheMobileBook=(e,t)=>s(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 Sm=p.cloudUrl,Em=p.cloudCNUrl;class xm{constructor(e,t){this.TokenService=e,this.ConfigService=t,this.baseUrl="china"===t.getItem("serverRegion")?Em:Sm,this.refreshToken="",this.accessToken="",this.streamPromise=null}refreshUserToken(){return s(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 s(this,void 0,void 0,(function*(){return xm.requestQueue||(xm.requestQueue=[]),new Promise(((t,r)=>{xm.requestQueue.push({config:e,resolve:t,reject:r}),xm.processingQueue||this.processQueue()}))}))}processQueue(){return s(this,void 0,void 0,(function*(){if(!xm.processingQueue){xm.processingQueue=!0;try{for(;xm.requestQueue.length>0;){const e=xm.requestQueue.shift();try{let t=yield this.executeRequest(e.config);e.resolve(t)}catch(t){e.reject(t)}}}finally{xm.processingQueue=!1}}}))}executeRequest(t){return s(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 s(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>s(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,a)=>{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=>s(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 s(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>s(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,o)=>s(this,void 0,void 0,(function*(){let o=this.ConfigService.getItem("appVersion"),s=this.ConfigService.getItem("appPlatform");const a=yield fetch(this.baseUrl+e.url,{method:"POST",headers:{"Content-Type":"text/event-stream",Authorization:"Bearer "+r,"X-Request-ID":n,"X-App-Version":o||"1.0.0","X-App-Platform":s||"web"},body:JSON.stringify(e.data)});if(!a.body)throw new Error("Response body is null");const c=a.body.pipeThrough(new TextDecoderStream).getReader();for(;;){const{value:e,done:r}=yield c.read();if(r){t({done:!0});break}if(e)if(e.includes('"code":400')||e.includes('"code":401')||e.includes('"code":402')){let t=JSON.parse(e);402===t.code&&(yield this.refreshUserToken()),i(t)}else e.split("\n").forEach((e=>{if(e.startsWith("data:")){const r=JSON.parse(e.substring(5));t(r.data)}}))}i({code:200,data:{done:!0}})}))))}finally{this.streamPromise=null}})))()),this.streamPromise}))}}xm.processingQueue=!1,xm.requestQueue=[];class Am extends xm{constructor(e,t){super(e,t)}getTransStream(e,t,r){return s(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 s(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 s(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 s(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 s(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 s(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 s(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 s(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 s(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 Tm extends xm{constructor(e,t){super(e,t)}encryptToken(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/encrypt_token",data:e};return yield this.requestWithRetry(t)}))}decryptToken(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/decrypt_token",data:e};return yield this.requestWithRetry(t)}))}authThirdToken(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/auth_token",data:e};return yield this.requestWithRetry(t)}))}refreshThirdToken(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/refresh_token",data:e};return yield this.requestWithRetry(t)}))}getSyncData(){return s(this,void 0,void 0,(function*(){return yield this.requestWithRetry({method:"get",url:"/api/v1/pro/thirdparty/get_sync_data"})}))}updateSyncData(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/update_sync_data",data:e};return yield this.requestWithRetry(t)}))}}class Cm extends xm{constructor(e,t){super(e,t)}loginRegister(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/public/user/login_register",data:e};return yield this.requestWithRetry(t)}))}logout(){return s(this,void 0,void 0,(function*(){return yield this.requestWithRetry({method:"post",url:"/api/v1/member/user/logout"})}))}getLogins(){return s(this,void 0,void 0,(function*(){return yield this.requestWithRetry({method:"post",url:"/api/v1/member/user/get_logins"})}))}getLoginsV2(){return s(this,void 0,void 0,(function*(){return yield this.requestWithRetry({method:"post",url:"/api/v1/member/user/get_logins_v2"})}))}addLogin(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/member/user/add_login",data:e};return yield this.requestWithRetry(t)}))}removeLogin(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/member/user/remove_login",data:e};return yield this.requestWithRetry(t)}))}getUserInfo(){return s(this,void 0,void 0,(function*(){return yield this.requestWithRetry({method:"post",url:"/api/v1/member/user/get_info"})}))}updateUserConfig(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/member/user/update_config",data:e};return yield this.requestWithRetry(t)}))}getTempToken(){return s(this,void 0,void 0,(function*(){return yield this.requestWithRetry({method:"get",url:"/api/v1/member/user/get_temp_token"})}))}sendEmailCode(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/public/user/send_email_code",data:e};return yield this.requestWithRetry(t)}))}checkEmailRegistration(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/public/user/check_email_registration",data:e};return yield this.requestWithRetry(t)}))}redeemCode(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/member/user/redeem_code",data:e};return yield this.requestWithRetry(t)}))}deleteAccount(e){return s(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/member/user/delete_account",data:e};return yield this.requestWithRetry(t)}))}}var Rm={getAuthUrl:(e,t)=>{let r="";if("github"===e?r=`https://github.com/login/oauth/authorize?client_id=${g.githubClientId}&redirect_uri=${g.callbackUrl}&scope=${m.github.scopes.join(" ")}&response_type=code`:"google"===e?r=`https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${g.callbackUrl}&prompt=consent&response_type=code&client_id=${g.googleClientId}&scope=${m.google.scopes.join(" ")}&access_type=offline`:"facebook"===e?r=`https://www.facebook.com/v12.0/dialog/oauth?client_id=${g.facebookClientId}&redirect_uri=${g.callbackUrl}&scope=&response_type=code`:"microsoft"===e&&(r=`https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=${g.microsoftClientId}&scope=${m.microsoft.scopes.join(" ")}&response_type=code&redirect_uri=${g.callbackUrl}`),"manual"===t)return r;let n=JSON.stringify({deeplink:"desktop"===t?"koodo-reader://callback":"browser"===t?"https://web.koodoreader.com/#/login":"",service:e});return`${r}&state=${"state|"+encodeURIComponent(n)}`}};class Om{static CompareDatabase(e,t,r){return s(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 s(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 s(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 s(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 s(this,void 0,void 0,(function*(){let o=[];for(let t of c){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 c)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 s(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 s(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 s(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 Pm=(_m=class{static getItem(e){return localStorage.getItem(e)}static setItem(e,t){localStorage.setItem(e,t)}static removeItem(e){localStorage.removeItem(e)}},Mm="browser",class extends _m{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:Mm,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 _m,Mm;class Im{static saveAllToken(e){return s(this,void 0,void 0,(function*(){if(e)if(o){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 s(this,void 0,void 0,(function*(){if(o){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 s(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 s(this,void 0,void 0,(function*(){return JSON.parse((yield this.getAllToken())||"{}")[e]||null}))}static deleteToken(e){return s(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 s(this,void 0,void 0,(function*(){try{let t=yield this.getFingerprint();const r=yield $m(t),n="undefined"!=typeof crypto&&crypto.subtle?yield function(e,t,r={alg:"HS256",typ:"JWT"}){return s(this,void 0,void 0,(function*(){const n=Nm((new TextEncoder).encode(JSON.stringify(r))),i=Nm((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}.${Nm(yield crypto.subtle.sign("HMAC",s,o))}`}))}(e,r):function(e,t){if(!e||!t)return"";const r=l((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<=ry}}function Py(e){return function(t){return null==t?void 0:t[e]}}var _y=Py("byteLength"),My=Oy(_y),Iy=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var Ny=Km?function(e){return Xm?Xm(e)&&!Sy(e):My(e)&&Iy.test(Hm.call(e))}:Ry(!1),Fy=Py("length");function $y(e,t){t=function(e){for(var t={},r=e.length,n=0;n":">",'"':""","'":"'","`":"`"},Tv=xv(Av),Cv=xv(nv(Av)),Rv=By.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},Ov=/(.)^/,Pv={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},_v=/\\|'|\r|\n|\u2028|\u2029/g;function Mv(e){return"\\"+Pv[e]}var Iv=/^\s*(\w|\$)+\s*$/;var Nv=0;function Fv(e,t,r,n,i){if(!(n instanceof t))return e.apply(r,i);var o=uv(e.prototype),s=e.apply(o,i);return iy(s)?s:o}var $v=ny((function(e,t){var r=$v.placeholder,n=function(){for(var i=0,o=t.length,s=Array(o),a=0;a1)Bv(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 Wv=$v(Hv,2);function Kv(e,t,r){t=wv(t,r);for(var n,i=Uy(e),o=0,s=i.length;o0?0:i-1;o>=0&&o0?s=o>=0?o:Math.max(o+a,s):a=o>=0?Math.min(o+1,a):o+a+1;else if(r&&o&&a)return n[o=r(n,i)]===i?o:-1;if(i!=i)return(o=t(qm.call(n,s,a),Cy))>=0?o+s:-1;for(o=e>0?s:a-1;o>=0&&o=3;return function(t,r,n,i){var o=!Lv(t)&&Uy(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 db=ny((function(e,t,r){var n,i;return yy(t)?i=t:(t=lv(t),n=t.slice(0,-1),t=t[t.length-1]),rb(e,(function(e){var o=i;if(!o){if(n&&n.length&&(e=hv(e,n)),null==e)return;o=e[t]}return null==o?o:o.apply(e,r)}))}));function lb(e,t){return rb(e,mv(t))}function hb(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=Lv(e)?e:rv(e)).length;ao&&(o=n);else t=wv(t,r),tb(e,(function(e,r,n){((i=t(e,r,n))>s||i===-1/0&&o===-1/0)&&(o=e,s=i)}));return o}var fb=/[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;function pb(e){return e?Ey(e)?qm.call(e):cy(e)?e.match(fb):Lv(e)?rb(e,pv):rv(e):[]}function gb(e,t,r){if(null==t||r)return Lv(e)||(e=rv(e)),e[Sv(e.length-1)];var n=pb(e),i=Fy(n);t=Math.max(Math.min(t,i),0);for(var o=i-1,s=0;s1&&(n=yv(n,t[1])),t=Hy(e)):(n=kb,t=Bv(t,!1,!1),e=Object(e));for(var i=0,o=t.length;i1&&(r=t[1])):(t=rb(Bv(t,!1,!1),String),n=function(e,r){return!ub(t,r)}),Sb(e,n,r)}));function xb(e,t,r){return qm.call(e,0,Math.max(0,e.length-(null==t||r?1:t)))}function Ab(e,t,r){return null==e||e.length<1?null==t||r?void 0:[]:null==t||r?e[0]:xb(e,e.length-t)}function Tb(e,t,r){return qm.call(e,null==t||r?1:t)}var Cb=ny((function(e,t){return t=Bv(t,!0,!0),sb(e,(function(e){return!ub(t,e)}))})),Rb=ny((function(e,t){return Cb(e,t)}));function Ob(e,t,r,n){sy(t)||(n=r,r=t,t=!1),null!=r&&(r=wv(r,n));for(var i=[],o=[],s=0,a=Fy(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=Ev()-i;t>u?n=setTimeout(c,t-u):(n=null,r||(s=e.apply(a,o)),n||(o=a=null))},u=ny((function(u){return a=this,o=u,i=Ev(),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 $v(t,e)},negate:qv,compose:function(){var e=arguments,t=e.length-1;return function(){for(var r=t,n=e[t].apply(this,arguments);r--;)n=e[r].call(this,n);return n}},after:function(e,t){return function(){if(--e<1)return t.apply(this,arguments)}},before:Hv,once:Wv,findKey:Kv,findIndex:Qv,findLastIndex:Gv,sortedIndex:Jv,indexOf:Zv,lastIndexOf:Yv,find:eb,detect:eb,findWhere:function(e,t){return eb(e,gv(t))},each:tb,forEach:tb,map:rb,collect:rb,reduce:ib,foldl:ib,inject:ib,reduceRight:ob,foldr:ob,filter:sb,select:sb,reject:function(e,t,r){return sb(e,qv(wv(t)),r)},every:ab,all:ab,some:cb,any:cb,contains:ub,includes:ub,include:ub,invoke:db,pluck:lb,where:function(e,t){return sb(e,gv(t))},max:hb,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=Lv(e)?e:rv(e)).length;an||void 0===r)return 1;if(re.map((e=>e.name)),Lb=e=>e.map((e=>e.key)),Bb=(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 Db{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?Bb(i,n).reverse():Bb(i,n);if(2===t.sort){let r=Ub(e),n=Ub(e).sort();return 1===t.order?Bb(n,r).reverse():Bb(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=Lb(e);return 1===t.order?Bb($b.union(n,i),i).reverse():Bb($b.union(n,i),i)}if(5===t.sort){let r=Lb(e),n=(e=>$b.sortBy(e.map((e=>({key:e.key,author:e.author}))),"author").map((e=>e.key)))(e);return 1===t.order?Bb(n,r).reverse():Bb(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=Lb(e);return 1===t.order?Bb(n,i).reverse():Bb(n,i)}}static sortNotes(e,t,r=[]){if(3===t.sort){let r=$b.clone(e).reverse(),n=$b.uniq(e.map((e=>({chapter:e.chapter,chapterIndex:e.chapterIndex}))));n=1===t.order?$b.sortBy(n,"chapterIndex"):$b.sortBy(n,"chapterIndex").reverse();let i=$b.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=$b.clone(e).reverse(),n=$b.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=$b.clone(e).reverse(),i=$b.uniq(e.map((e=>{let t=$b.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=$b.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=$b.clone(e).reverse(),n=$b.uniq(e.map((e=>({chapter:e.chapter,chapterIndex:parseInt(JSON.parse(e.cfi).chapterDocIndex)}))));n=1===t.order?$b.sortBy(n,"chapterIndex"):$b.sortBy(n,"chapterIndex").reverse();let i=$b.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 jb{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;}${"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;}`:""}`}static getCustomCss(e,t=!1){return`font-size: ${t?"":e.getReaderConfig("fontSize")?e.getReaderConfig("fontSize"):""}px !important;line-height: ${e.getReaderConfig("lineHeight")||""} !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":""} !important;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;${t?"":"padding:0px !important;"}word-wrap: break-word !important; writing-mode: horizontal-tb !important; `}}class zb{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{km as BookHelper,f as CommonTool,Pm as ConfigService,y as KookitConfig,Rm as LoginHelper,Am as ReaderRequest,zb as SearchUtil,Db as SortUtil,bm as SqlStatement,jb as StyleHelper,Om as SyncHelper,hm as SyncUtil,Tm as ThirdpartyRequest,Im as TokenService,Cm as UserRequest}; diff --git a/src/assets/lib/kookit-extra.min.mjs b/src/assets/lib/kookit-extra.min.mjs index b605ebc4..12ed6823 100644 --- a/src/assets/lib/kookit-extra.min.mjs +++ b/src/assets/lib/kookit-extra.min.mjs @@ -1 +1 @@ -import e from"axios";import t from"fs";import r from"path";import{promisify as i}from"util";import o from"stream";import{Client as s}from"basic-ftp";import{S3Client as n,ListObjectsV2Command as a,DeleteObjectCommand as d,PutObjectCommand as l,GetObjectCommand as c}from"@aws-sdk/client-s3";import{createClient as h,AuthType as u}from"webdav";import p from"ssh2-sftp-client";import f from"form-data";import{Storage as y}from"megajs";import g from"electron-store";import m from"node-machine-id";function v(e,t,r,i){return new(r||(r=Promise))((function(o,s){function n(e){try{d(i.next(e))}catch(e){s(e)}}function a(e){try{d(i.throw(e))}catch(e){s(e)}}function d(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(n,a)}d((i=i.apply(e,t||[])).next())}))}const k=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;class T{constructor(e){this.queue=[],this.runningTasks=0,this.totalTasks=0,this.completedTasks=0,this.hasFailedTasks=!1,this.maxConcurrency=e}addTask(e){return v(this,void 0,void 0,(function*(){return this.totalTasks++,new Promise(((t,r)=>{const i=()=>v(this,void 0,void 0,(function*(){try{this.runningTasks++;const r=yield e();return this.completedTasks++,t(r),r}catch(e){throw this.completedTasks++,r(e),e}finally{this.runningTasks--,this.runNext()}}));this.runningTasks0&&this.runningTasks=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(t){return v(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=[],o=!0,s=null;for(;o;){let n;n=s?yield e.post("https://api.dropboxapi.com/2/files/list_folder/continue",{cursor:s},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}):yield e.post("https://api.dropboxapi.com/2/files/list_folder",{path:"/"+t,limit:2e3},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});const a=n.data.entries||[];i=i.concat(a),o=n.data.has_more,s=n.data.cursor}return[...new Set(i.map((e=>e.name)))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return v(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 v(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=(()=>v(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 v(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dropbox",redirect_uri:w,code:e})).data.refresh_token}))}getAuthUrl(){return`https://www.dropbox.com/oauth2/authorize?response_type=code&token_access_type=offline&client_id=${E}&redirect_uri=${w}`}}const A=i(o.pipeline);class P extends C{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=t.createReadStream(r.join(this.storagePath,i));return yield e.post("https://content.dropboxapi.com/2/files/upload",n,{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/octet-stream","Dropbox-API-Arg":JSON.stringify({path:"/"+o,mode:"overwrite",autorename:!0,mute:!1})},maxContentLength:1/0,maxBodyLength:1/0}),!0}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=t.createWriteStream(r.join(this.storagePath,o)),a=yield e({url:"https://content.dropboxapi.com/2/files/download",method:"GET",responseType:"stream",headers:{Authorization:`Bearer ${s}`,"Dropbox-API-Arg":JSON.stringify({path:"/"+i})},maxContentLength:1/0,maxBodyLength:1/0});return yield A(a.data,n),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class I{constructor(e,t){this.config=e,this.storagePath=t,this.taskQueue=new T(1),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return v(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getClient(){return v(this,void 0,void 0,(function*(){if(this.client)return this.client;let{url:e,username:t,password:r,dir:i,ssl:o,port:n}=this.config;const a=new s;return a.ftp.verbose=!0,yield a.access({host:e,port:parseInt(n),user:t,password:r,secure:"1"===o}),this.client=a,a}))}uploadFile(e,t){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){let{dir:i}=this.config;i=i&&"KoodoReader"===this.baseFolder?i:this.baseFolder;const o=yield this.getClient(),s=()=>v(this,void 0,void 0,(function*(){yield o.ensureDir(r.dirname(i+"/"+t)),yield o.cd("/"),yield o.uploadFrom(r.join(this.storagePath,e),i+"/"+t)}));try{return yield s(),!0}catch(e){return console.error(e),!1}}))))))}))}downloadFile(e,t){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){let{dir:i}=this.config;i=i&&"KoodoReader"===this.baseFolder?i:this.baseFolder;const o=yield this.getClient(),s=()=>v(this,void 0,void 0,(function*(){yield o.downloadTo(r.join(this.storagePath,t),i+"/"+e)}));try{return yield s(),!0}catch(e){return console.error(e),!1}}))))))}))}listFiles(e){return v(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;const r=yield this.getClient(),i=()=>v(this,void 0,void 0,(function*(){return yield r.list(t+"/"+e)}));try{return(yield i()).map((e=>e.name))}catch(e){return console.error(e),[]}}))}deleteFile(e){return v(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;const r=yield this.getClient(),i=()=>v(this,void 0,void 0,(function*(){yield r.remove(t+"/"+e)}));try{return yield i(),!0}catch(e){return console.error(e),!1}}))}}class L{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new T(3)}retryOperation(e,t=3){return v(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(t){return v(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=[],o=`https://graph.microsoft.com/v1.0/me/drive/special/approot:/${t}:/children`;for(;o;){const t=yield e.get(o,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(t.status>=300)break;const s=t.data.value||[];i=i.concat(s),o=t.data["@odata.nextLink"]||""}return[...new Set(i.map((e=>e.name)))]}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return v(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield e.delete(`https://graph.microsoft.com/v1.0/me/drive/special/approot:/${t}`,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!(i.status>=300)||(console.error("Error deleting file:",i),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return v(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=(()=>v(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 v(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"microsoft",redirect_uri:w,code:e})).data.refresh_token}))}getAuthUrl(){return`https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=${x}&scope=files.readwrite.appfolder offline_access&response_type=code&redirect_uri=${w}`}}const Q=209715200;class $ extends L{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){var s;let n=null;try{const s=yield this.refreshToken(),a=r.join(this.storagePath,i),d=yield this.getFileSize(a),l=o.split(".").pop(),c=(k(l||""),`https://graph.microsoft.com/v1.0/me/drive/special/approot:/${o}:/createUploadSession`),h=(yield e.post(c,{item:{"@microsoft.graph.conflictBehavior":"replace"}},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}})).data.uploadUrl;n=yield t.promises.open(a,"r");let u=0,p=Buffer.alloc(Q);for(;uthis.retryOperation((()=>v(this,void 0,void 0,(function*(){try{const o=yield this.refreshToken(),s=`https://graph.microsoft.com/v1.0/me/drive/special/approot:/${e}:/content`;let n=(yield fetch(s,{headers:{Authorization:"Bearer "+o},redirect:"manual"})).headers.get("location");if(n){const e=yield fetch(n,{headers:{}}),o=yield e.arrayBuffer();return t.writeFileSync(r.join(this.storagePath,i),Buffer.from(o)),!0}return!1}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getFileSize(e){return v(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}class j{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new T(3)}retryOperation(e,t=3){return v(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getFileId(t,r){return v(this,void 0,void 0,(function*(){const i=yield this.refreshToken(),o=`https://www.googleapis.com/drive/v3/files?q=name='${t}'+and+'${r}'+in+parents&spaces=appDataFolder&fields=files(id,name)`;try{const t=yield e.get(o,{headers:{Authorization:"Bearer "+i}});if(0===t.data.files.length)return"";const r=t.data.files;return r.length>0?r[0].id:null}catch(e){return console.error("Error occurred during file list retrieval:",e),""}}))}checkFolder(t){return v(this,void 0,void 0,(function*(){const r=yield this.refreshToken(),i=yield this.getFolderId(t);if(i)return i;const o={name:t,mimeType:"application/vnd.google-apps.folder",parents:["appDataFolder"]};try{return(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:",e),e}}))}getFolderId(t){return v(this,void 0,void 0,(function*(){const r=yield this.refreshToken(),i=`https://www.googleapis.com/drive/v3/files?q=name='${t}'+and+mimeType='application/vnd.google-apps.folder'+and+'appDataFolder'+in+parents&spaces=appDataFolder&fields=files(id,name)`;try{const t=(yield e.get(i,{headers:{Authorization:`Bearer ${r}`}})).data.files;return t.length>0?t[0].id:null}catch(e){throw console.error("Error occurred during fetching folder ID:",e),e}}))}listFiles(t){return v(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=yield this.checkFolder(t),o=[],s="",n=!0;for(;n;){let t=`https://www.googleapis.com/drive/v3/files?q='${i}'+in+parents&spaces=appDataFolder&fields=nextPageToken,files(id,name)&pageSize=1000`;s&&(t+=`&pageToken=${s}`);const a=yield e.get(t,{headers:{Authorization:`Bearer ${r}`}}),d=a.data.files||[];o=o.concat(d),s=a.data.nextPageToken,n=!!s}return[...new Set(o.map((e=>e.name)))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQue(e)}))))))}))}deleteFileWithoutQue(t){return v(this,void 0,void 0,(function*(){const r=t.split("/")[1],i=t.split("/")[0],o=yield this.getFolderId(i),s=yield this.refreshToken(),n=yield this.getFileId(r,o);if(""===n)return console.error("File not found:",r),!0;try{const t=yield e.delete(`https://www.googleapis.com/drive/v3/files/${n}`,{headers:{Authorization:`Bearer ${s}`}});return console.error("File deleted:",t),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return v(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=(()=>v(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 v(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"google",redirect_uri:w,code:e})).data.refresh_token}))}getAuthUrl(){return`https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${w}&prompt=consent&response_type=code&client_id=${_}&scope=https://www.googleapis.com/auth/drive.appdata&access_type=offline`}}class B extends j{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken();let n=i.split("/").pop(),a=o.split(".").pop(),d=k(a||""),l=o.split("/")[0],c=yield this.checkFolder(l),h=yield this.getFileId(n||"",c);const u={mimeType:d,name:n,parents:[c]},p=h?`https://www.googleapis.com/upload/drive/v3/files/${h}?uploadType=resumable`:"https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable",f=(yield e({method:h?"PATCH":"POST",url:p,data:h?null:JSON.stringify(u),headers:{Authorization:"Bearer "+s,"Content-Type":"application/json; charset=UTF-8"},maxContentLength:1/0,maxBodyLength:1/0})).headers.location;let y=yield this.getFileSize(r.join(this.storagePath,i));const g=t.createReadStream(r.join(this.storagePath,i));yield e.put(f,g,{headers:{Authorization:"Bearer "+s,"Content-Type":"application/zip","Content-Range":`bytes 0-${y-1}/${y}`},maxContentLength:1/0,maxBodyLength:1/0});return!0}catch(e){return console.error("Error occurred during upload:",e),!1}}))))))}))}downloadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken();let n=i.split("/").pop(),a=i.split("/")[0],d=yield this.checkFolder(a),l=yield this.getFileId(n||"",d);if(!l)return console.error("File not found"),!0;const c=`https://www.googleapis.com/drive/v3/files/${l}?alt=media`;return new Promise((i=>{const n=t.createWriteStream(r.join(this.storagePath,o));e({url:c,method:"GET",responseType:"stream",headers:{Authorization:"Bearer "+s},maxContentLength:1/0,maxBodyLength:1/0}).then((e=>{e.data.pipe(n),n.on("finish",(()=>{i(!0)})),n.on("error",(()=>{i(!1)}))})).catch((()=>{i(!1)}))}))}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getFileSize(e){return v(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}class M{constructor(e){this.config=e,this.taskQueue=new T(5),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return v(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return v(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:i,accessKeyId:o,secretAccessKey:s,dir:d}=this.config;d=d&&"KoodoReader"===this.baseFolder?d:this.baseFolder;let l=d+"/"+e;for(;l.startsWith("/");)l=l.substring(1);const c=new n({endpoint:t,region:r,credentials:{accessKeyId:o,secretAccessKey:s}});try{let e,t=[],r=!0;for(;r;){const o=yield c.send(new a({Bucket:i,Prefix:l,ContinuationToken:e}));o.Contents&&(t=t.concat(o.Contents)),e=o.NextContinuationToken,r=!!e}if(0===t.length)return[];const o=new Set;""===l||l.endsWith("/")||(l+="/");let s=t.map((e=>e.Key));for(const e of s){const t=e.substring(l.length).split("/")[0];o.add(t)}return Array.from(o)}catch(e){return console.error(e),[]}}))}deleteFile(e){return v(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:i,accessKeyId:o,secretAccessKey:s,dir:a}=this.config;a=a&&"KoodoReader"===this.baseFolder?a:this.baseFolder;const l=new n({endpoint:t,region:r,credentials:{accessKeyId:o,secretAccessKey:s}});let c=a+"/"+e;for(;c.startsWith("/");)c=c.substring(1);try{return yield l.send(new d({Bucket:i,Key:c})),!0}catch(e){return console.error(e),!1}}))}}class z extends M{constructor(e,t){super(e),this.storagePath=t}uploadFile(e,i){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){let{endpoint:o,region:s,bucketName:a,accessKeyId:d,secretAccessKey:c,dir:h}=this.config;const u=new n({endpoint:o,region:s,credentials:{accessKeyId:d,secretAccessKey:c}});h=h&&"KoodoReader"===this.baseFolder?h:this.baseFolder;let p=h+"/"+i;for(;p.startsWith("/");)p=p.substring(1);try{let i=yield u.send(new l({Bucket:a,Key:p,Body:t.createReadStream(r.join(this.storagePath,e))}));return 200===i.$metadata.httpStatusCode||(console.error("Error uploading file:",i),!1)}catch(e){return console.error("Error: ",e),!1}}))))))}))}downloadFile(e,i){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){let{endpoint:o,region:s,bucketName:a,accessKeyId:d,secretAccessKey:l,dir:h}=this.config;h=h&&"KoodoReader"===this.baseFolder?h:this.baseFolder;const u=()=>new Promise(((u,p)=>{const f=new n({region:s,endpoint:o,credentials:{accessKeyId:d,secretAccessKey:l}});let y=t.createWriteStream(r.join(this.storagePath,i)),g=h+"/"+e;for(;g.startsWith("/");)g=g.substring(1);(function(e,t,r,i){return new Promise(((o,s)=>v(this,void 0,void 0,(function*(){const s=yield e.send(new c({Bucket:t,Key:r}));s.Body?(s.Body.pipe(i),i.on("finish",(e=>{e&&o(!1),o(!0)}))):o(!1)}))))})(f,a,g,y).then((e=>{u(!0)})).catch((e=>{console.error(e),u(!1)}))}));try{return yield u()}catch(e){return console.error(e),!1}}))))))}))}}class D{constructor(e,t){this.storagePath=t;let{username:r,password:i,url:o,dir:s}=e;void 0===e.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=e.baseFolder,s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder,this.client=h(o,{authType:u.Password,username:r,password:i}),this.username=r,this.password=i,this.dir=s,this.taskQueue=new T(5)}retryOperation(e,t=0){return v(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}uploadFile(e,i){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{!1===(yield this.client.exists(r.dirname(this.dir+"/"+i)))&&(yield this.client.createDirectory(r.dirname(this.dir+"/"+i)));let o=this.client.createWriteStream(this.dir+"/"+i);return t.createReadStream(r.join(this.storagePath,e)).pipe(o),new Promise(((e,t)=>{o.on("finish",(()=>{e(!0)})),o.on("error",(t=>{console.error(t),e(!1)}))}))}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(e,i){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{if(!1===(yield this.client.exists(this.dir+"/"+e)))return!0;let o=t.createWriteStream(r.join(this.storagePath,i));return this.client.createReadStream(this.dir+"/"+e).pipe(o),new Promise(((e,t)=>{o.on("finish",(()=>{e(!0)})),o.on("error",(t=>{e(!1)}))}))}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}listFiles(e){return v(this,void 0,void 0,(function*(){try{return(yield this.client.getDirectoryContents(this.dir+"/"+e)).map((e=>e.basename))}catch(t){return console.error("Error listing files:",t),t.response&&404===t.response.status&&(yield this.client.createDirectory(this.dir+"/"+e)),[]}}))}deleteFile(e){return v(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}}))}}class N{constructor(e,t){this.config=e,this.storagePath=t,this.taskQueue=new T(5),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return v(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getClient(){return v(this,void 0,void 0,(function*(){if(this.client)return this.client;let{url:e,username:t,password:r,dir:i,port:o}=this.config;const s=new p;return yield s.connect({host:e,port:o,username:t,password:r}),this.client=s,s}))}uploadFile(e,i){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){let{dir:o}=this.config;o=o&&"KoodoReader"===this.baseFolder?o:this.baseFolder;let s=yield this.getClient();const n=()=>new Promise(((n,a)=>v(this,void 0,void 0,(function*(){let a=t.createReadStream(r.join(this.storagePath,e)),d="/"+o+"/"+i,l="/"+o+"/"+r.dirname(i);(yield s.exists(l))||(yield s.mkdir(l,!0)),s.put(a,d).then((()=>{n(!0)})).catch((e=>{console.error(e.message),n(!1)}))}))));try{return yield n()}catch(e){return console.error(e),!1}}))))))}))}downloadFile(e,i){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){let{dir:o}=this.config;o=o&&"KoodoReader"===this.baseFolder?o:this.baseFolder;let s=yield this.getClient();const n=()=>new Promise(((n,a)=>{let d="/"+o+"/"+e,l=t.createWriteStream(r.join(this.storagePath,i));s.get(d,l).then((()=>{n(!0)})).catch((e=>{console.error(e.message),n(!1)}))}));try{return yield n()}catch(e){return console.error(e),!1}}))))))}))}listFiles(e){return v(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;let r=yield this.getClient();const i=()=>new Promise(((i,o)=>v(this,void 0,void 0,(function*(){let o="/"+t+"/"+e;(yield r.exists(o))||(yield r.mkdir(o,!0),i([])),r.list(o).then((e=>{i(e.map((e=>e.name)))})).catch((e=>v(this,void 0,void 0,(function*(){console.error(e.message,"list file error"),i([])}))))}))));try{return yield i()}catch(e){return console.error(e),[]}}))}deleteFile(e){return v(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;let r=yield this.getClient();try{return yield new Promise(((i,o)=>{let s="/"+t+"/"+e;r.delete(s).then((()=>{i(!0)})).catch((e=>{console.error(e.message),i(!1)}))}))}catch(e){return console.error(e),!1}}))}}class W{downloadFile(e,t){return v(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}uploadFile(e,t){return v(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}listFiles(e){return v(this,void 0,void 0,(function*(){return new Promise((e=>{e([])}))}))}authToken(e){return v(this,void 0,void 0,(function*(){return new Promise((e=>{e("")}))}))}getAuthUrl(){return""}}class K{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new T(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return v(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getFolderIdByPath(t){return v(this,void 0,void 0,(function*(){if(""==t)return"0";const r=yield this.refreshToken(),i=t.split("/");let o="0";for(const t of i){const i=`https://api.box.com/2.0/folders/${o}/items?fields=id,name&type=folder&limit=1000`;try{const s=(yield e.get(i,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===t&&"folder"===e.type));if(s)o=s.id;else{const i={name:t,parent:{id:o},type:"folder"};o=(yield e.post("https://api.box.com/2.0/folders",i,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}}catch(e){return console.error("Error occurred during folder creation:",e),""}}return o}))}listFiles(t){return v(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=this.baseFolder+"/"+t;for(;i.startsWith("/");)i=i.substring(1);let o=yield this.getFolderIdByPath(i),s=[],n=0,a=!0;const d=1e3;for(;a;){const t=yield e.get(`https://api.box.com/2.0/folders/${o}/items`,{params:{limit:d,offset:n},headers:{Authorization:`Bearer ${r}`}}),i=t.data.entries||[];s=s.concat(i),n+=i.length,a=i.length===d&&t.data.total_count>n}return[...new Set(s.map((e=>e.name)))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return v(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=t.substring(0,t.lastIndexOf("/")),o=t.substring(t.lastIndexOf("/")+1);let s=this.baseFolder+"/"+i;for(;s.startsWith("/");)s=s.substring(1);const n=yield this.getFolderIdByPath(s);if(!n)return!0;const a=`https://api.box.com/2.0/folders/${n}/items?fields=id,name&type=file&limit=1000`,d=(yield e.get(a,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===o&&"file"===e.type));return!d||(yield e.delete(`https://api.box.com/2.0/files/${d.id}`,{headers:{Authorization:`Bearer ${r}`}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return v(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=(()=>v(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 v(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"boxnet",redirect_uri:w,code:e})).data.refresh_token}))}getAuthUrl(){return`https://account.box.com/api/oauth2/authorize?${new URLSearchParams({response_type:"code",client_id:R,redirect_uri:w,grant_type:"authorization_code",box_subject_type:"enterprise",scope:"root_readwrite"}).toString()}`}}class q extends K{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=o.substring(0,o.lastIndexOf("/")),a=o.substring(o.lastIndexOf("/")+1);let d=this.baseFolder+"/"+n;for(;d.startsWith("/");)d=d.substring(1);const l=yield this.getFolderIdByPath(d);if(!l)throw new Error("Folder not found");const c=yield this.listFiles(n);c.find((e=>e===a))&&(yield this.deleteFileWithoutQueue(n+"/"+a));const h=new f,u=JSON.stringify({name:a,parent:{id:l}});h.append("attributes",u),h.append("file",t.createReadStream(r.join(this.storagePath,i)));const p=yield e.post("https://upload.box.com/api/2.0/files/content",h,{headers:Object.assign({Authorization:`Bearer ${s}`},h.getHeaders()),maxContentLength:1/0,maxBodyLength:1/0});return!(p.status>=300)||(console.error("Error occurred during file upload:",p),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=i.substring(0,i.lastIndexOf("/")),a=i.substring(i.lastIndexOf("/")+1);let d=this.baseFolder+"/"+n;for(;d.startsWith("/");)d=d.substring(1);const l=yield this.getFolderIdByPath(d);if(!l)return console.error("Folder not found"),!0;const c=`https://api.box.com/2.0/folders/${l}/items?fields=id,name&type=file&limit=1000`,h=(yield e.get(c,{headers:{Authorization:`Bearer ${s}`}})).data.entries.find((e=>e.name===a&&"file"===e.type));if(!h)return console.error("File not found:",a),!0;const u=yield e({url:`https://api.box.com/2.0/files/${h.id}/content`,method:"get",responseType:"stream",headers:{Authorization:`Bearer ${s}`}});return yield new Promise(((e,i)=>{const s=t.createWriteStream(r.join(this.storagePath,o));u.data.pipe(s),s.on("finish",e),s.on("error",i)})),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class J{constructor(e){this.folderCreationLocks=new Map,this.config=e,this.taskQueue=new T(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return v(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getStorage(){return v(this,void 0,void 0,(function*(){if(this.storage)return this.storage;let{email:e,password:t}=this.config;return this.storage=yield new y({email:e,password:t}).ready,this.storage}))}getRoot(){return v(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 v(this,void 0,void 0,(function*(){const r=`${e.nodeId}_${t}`;if(this.folderCreationLocks.has(r))return yield this.folderCreationLocks.get(r);const i=(()=>v(this,void 0,void 0,(function*(){try{let r=e.children.find((e=>e.name===t&&e.directory));return r||(r=yield e.mkdir(t),r)}finally{this.folderCreationLocks.delete(r)}})))();return this.folderCreationLocks.set(r,i),yield i}))}listFiles(e){return v(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();if(e){const r=e.split("/").filter((e=>e));for(const e of r){const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return[];t=r}}return t.children.map((e=>e.name))}catch(e){return console.error("Error listing MEGA files:",e),[]}}))}deleteFile(e){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(e){return v(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();const r=e.split("/"),i=r.pop();for(const e of r){if(!e)continue;const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return!0;t=r}const o=t.children.find((e=>e.name===i&&!e.directory));return!o||(yield o.delete(),!0)}catch(e){return console.error("Error deleting MEGA file:",e),!1}}))}}class U extends J{constructor(e,t){super(e),this.storagePath=t}uploadFile(e,i){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{let o=yield this.getRoot();const s=i.split("/"),n=s.pop()||"";for(const e of s){if(!e)continue;let t=o.children.find((t=>t.name===e&&t.directory));t||(t=yield this.createFolder(o,e)),o=t}const a=o.children.find((e=>e.name===n&&!e.directory));a&&(yield a.delete());const d=t.createReadStream(r.join(this.storagePath,e)),l=t.statSync(r.join(this.storagePath,e)).size;return yield o.upload({name:n,size:l},d).complete,!0}catch(e){return console.error("Error occurred during MEGA file upload:",e),!1}}))))))}))}downloadFile(e,i){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{let o=yield this.getRoot();const s=e.split("/"),n=s.pop()||"";for(const e of s){if(!e)continue;const t=o.children.find((t=>t.name===e&&t.directory));if(!t)return!0;o=t}const a=o.children.find((e=>e.name===n&&!e.directory));if(!a)return!0;const d=t.createWriteStream(r.join(this.storagePath,i));return new Promise((e=>{a.download().pipe(d),d.on("finish",(()=>e(!0))),d.on("error",(t=>{console.error("Error writing file:",t),e(!1)}))}))}catch(e){return console.error("Error occurred during MEGA file download:",e),!1}}))))))}))}}class H{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.driveId="",this.refreshTokenPromise=null,this.taskQueue=new T(1),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=5){return v(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getDriveId(){return v(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 v(this,void 0,void 0,(function*(){const r=yield this.refreshToken(),i=yield this.getDriveId();try{try{const o=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(o.data)return o.data.file_id}catch(o){const s=t.split("/").filter((e=>e));let n="",a="root";for(const t of s){n+="/"+t;try{a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:n},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}catch(o){a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:i,parent_file_id:a,name:t,type:"folder",check_name_mode:"refuse"},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}}return a}}catch(e){return console.error("Error getting/creating folder by path:",e),""}}))}listFiles(t){return v(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield this.getDriveId(),o=yield this.getFolderIdByPath(this.baseFolder+"/"+t);let s=[],n="",a=!0;for(;a;){const t=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/list",{drive_id:i,parent_file_id:o,marker:n||void 0},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),d=t.data.items||[];s=s.concat(d),n=t.data.next_marker,a=!!n&&100===d.length}return[...new Set(s.map((e=>e.name)))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return v(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield this.getDriveId(),o=yield this.getFolderIdByPath(this.baseFolder+"/"+t);return!o||(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/delete",{drive_id:i,file_id:o},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}checkExists(t){var r;return v(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken(),o=yield this.getDriveId(),s=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:o,file_path:t},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}});(null===(r=s.data)||void 0===r?void 0:r.file_id)&&(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/recyclebin/trash",{drive_id:o,file_id:s.data.file_id},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}}))}catch(e){}}))}refreshToken(){return v(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=(()=>v(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 v(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"adrive",redirect_uri:w,code:e})).data.refresh_token}))}getAuthUrl(){return`https://openapi.alipan.com/oauth/authorize?${new URLSearchParams({response_type:"code",client_id:O,redirect_uri:w,grant_type:"authorization_code",scope:"user:base,file:all:write,file:all:read"}).toString()}`}}class V extends H{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=yield this.getDriveId(),a=o.substring(0,o.lastIndexOf("/")),d=o.substring(o.lastIndexOf("/")+1);yield this.deleteFileWithoutQueue(o);const l=yield this.getFolderIdByPath(this.baseFolder+"/"+a),c=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:n,parent_file_id:l,name:d,type:"file",check_name_mode:"ignore"},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}),{file_id:h,upload_id:u,part_info_list:p}=c.data,f=yield t.promises.readFile(r.join(this.storagePath,i));return yield fetch(p[0].upload_url,{method:"PUT",body:f,headers:{"Content-Length":t.statSync(r.join(this.storagePath,i)).size.toString()}}),yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/complete",{drive_id:n,file_id:h,upload_id:u},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}),!0}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=yield this.getDriveId(),a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:n,file_path:this.baseFolder+"/"+i},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}})).data.file_id,d=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/getDownloadUrl",{drive_id:n,file_id:a},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}),l=yield e({url:d.data.url,method:"get",responseType:"stream"}),c=t.createWriteStream(r.join(this.storagePath,o));return l.data.pipe(c),new Promise((e=>{c.on("finish",(()=>{e(!0)})),c.on("error",(t=>{console.error("Error occurred during file download:",t),e(!1)}))}))}catch(e){return console.error("Error downloading file:",e),!1}}))))))}))}}class X{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.taskQueue=new T(3)}retryOperation(e,t=5){return v(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}checkFolderExists(t,r){return v(this,void 0,void 0,(function*(){try{return 0===(yield e.get("https://api.pcloud.com/listfolder",{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error checking folder:",e),!1}}))}createFolder(t,r){return v(this,void 0,void 0,(function*(){try{return 0===(yield e.get("https://api.pcloud.com/createfolderifnotexists",{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error creating folder:",e),!1}}))}listFiles(t){return v(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield e.get("https://api.pcloud.com/listfolder",{params:{access_token:r,path:"/"+t,recursive:0}});return 0!==i.data.result?[]:i.data.metadata.contents.map((e=>e.name))}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return v(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield e.get("https://api.pcloud.com/deletefile",{params:{access_token:r,path:"/"+t}});return 0===i.data.result||(console.error("Error deleting file:",i.data),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return v(this,void 0,void 0,(function*(){return this.config.refresh_token}))}authToken(e){return v(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"pcloud",redirect_uri:w,code:e})).data.access_token}))}getAuthUrl(){return`https://my.pcloud.com/oauth2/authorize?client_id=${S}&response_type=code&redirect_uri=${w}`}}class Y extends X{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=o.split("/").slice(0,-1).join("/");if(!(yield this.checkFolderExists(n,s))){if(!(yield this.createFolder(n,s)))return!1}const a=r.join(this.storagePath,i),d=t.createReadStream(a),l=t.statSync(a),c=r.basename(i),h=yield e({method:"put",url:"https://api.pcloud.com/uploadfile",params:{access_token:s,path:`/${n}`,renew:1,filename:c},data:d,headers:{"Content-Length":l.size,"Content-Type":"application/octet-stream"},maxContentLength:1/0,maxBodyLength:1/0});return 0===h.data.result||(console.error("Error uploading file:",h.data),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=yield e.get("https://api.pcloud.com/getfilelink",{params:{access_token:s,path:`/${i}`}});if(0!==n.data.result)return console.error("Error getting file link:",n.data),!1;const a=r.join(this.storagePath,o),d=t.createWriteStream(a),l=`https://${n.data.hosts[0]}${n.data.path}`,c=yield e({method:"get",url:l,responseType:"stream",maxContentLength:1/0,maxBodyLength:1/0});return new Promise((e=>{c.data.pipe(d),d.on("finish",(()=>{e(!0)})),d.on("error",(t=>{console.error("Error writing file:",t),e(!1)}))}))}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class G{constructor(e){this.username=e.username,this.password=e.password,this.url=e.url,this.refreshTokenPromise=null,this.taskQueue=new T(3)}retryOperation(e,t=3){return v(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(t){return v(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=>e.name))||[]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return v(this,void 0,void 0,(function*(){try{return(yield e.delete(`${this.url}/delete`,{params:{dir:t.split("/").slice(0,-1).join("/")||"",filename:t.split("/").pop()},auth:{username:this.username,password:this.password}})).data.success}catch(e){return console.error("Error deleting file:",e),!1}}))}}const Z=i(o.pipeline);class ee extends G{constructor(e,t){super(e),this.storagePath=t}getAuthHeader(){return`Basic ${btoa(`${this.username}:${this.password}`)}`}uploadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{o.split("/").pop();const s=o.substring(0,o.lastIndexOf("/"))||"",n=t.createReadStream(r.join(this.storagePath,i)),a=new f;a.append("file",n);const d=yield e.post(`${this.url}/upload?dir=${encodeURIComponent(s)}`,a,{headers:Object.assign(Object.assign({},a.getHeaders()),{Authorization:this.getAuthHeader()}),maxContentLength:1/0,maxBodyLength:1/0});return!(d.status>=300)||(console.error("Error occurred during file upload:",d),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{const s=i.split("/").pop()||"",n=i.substring(0,i.lastIndexOf("/"))||"",a=t.createWriteStream(r.join(this.storagePath,o)),d=yield e({url:`${this.url}/download`,method:"GET",params:{dir:n,filename:s},headers:{Authorization:this.getAuthHeader()},maxContentLength:1/0,maxBodyLength:1/0,responseType:"stream"});return d.status>=300?(console.error("Error occurred during file download:",d),a.destroy(),t.existsSync(r.join(this.storagePath,o))&&t.unlinkSync(r.join(this.storagePath,o)),!1):(yield Z(d.data,a),!0)}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}const te=["book","config","cover","font"];class re{constructor(e,t,r,i){this.type=e,this.storagePath=r,this.remote="dropbox"===e?new P(t,r,i):"microsoft"===e?new $(t,r,i):"google"===e?new B(t,r,i):"s3compatible"===e?new z(t,r):"webdav"===e?new D(t,r):"docker"===e?new ee(t,r):"ftp"===e?new I(t,r):"sftp"===e?new N(t,r):"boxnet"===e?new q(t,r,i):"mega"===e?new U(t,r):"adrive"===e?new V(t,r,i):"pcloud"===e?new Y(t,r,i):new W}downloadFile(e,i,o){return v(this,void 0,void 0,(function*(){if(t.existsSync(r.join(this.storagePath+"/"+o))||t.mkdirSync(r.join(this.storagePath+"/"+o)),"cover"!==o){if(!(yield this.listFiles(o)).find((t=>e.indexOf(t)>-1)))return!1}return yield this.remote.downloadFile(o+"/"+e,o+"/"+i)}))}uploadFile(e,t,r){return v(this,void 0,void 0,(function*(){return yield this.remote.uploadFile(r+"/"+e,r+"/"+t)}))}deleteFile(e,t){return v(this,void 0,void 0,(function*(){return!!(yield this.listFiles(t)).find((t=>e.indexOf(t)>-1))&&(yield this.remote.deleteFile(t+"/"+e))}))}isExist(e,t){return v(this,void 0,void 0,(function*(){return(yield this.listFiles(t)).find((t=>-1!==t.indexOf(e)))}))}listFiles(e){return v(this,void 0,void 0,(function*(){return yield this.remote.listFiles(e)}))}downloadAllFiles(){return v(this,void 0,void 0,(function*(){for(let e of te){let t=yield this.listFiles(e);for(let r of t)yield this.downloadFile(r,r,e)}}))}authToken(e){return v(this,void 0,void 0,(function*(){return yield this.remote.authToken(e)}))}getAuthUrl(){return this.remote.getAuthUrl()}getStats(){return this.remote.taskQueue.getStats()}resetCounters(){this.remote.taskQueue.resetCounters()}}const ie={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 = ?"},oe={notes:"SELECT * FROM notes WHERE bookKey = ?",bookmarks:"SELECT * FROM bookmarks WHERE bookKey = ?",words:"SELECT * FROM words WHERE bookKey = ?",books:"SELECT * FROM books WHERE key = ?"},se={notes:"DELETE FROM notes WHERE bookKey = ?",bookmarks:"DELETE FROM bookmarks WHERE bookKey = ?",words:"DELETE FROM words WHERE bookKey = ?"};function ne(e){for(const t in e)e.hasOwnProperty(t)&&(e[`temp-${t}`]=e[t]);return e}const ae={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 de={sqlStatement:{createTableStatement:ne({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:ne({notes:"SELECT * FROM notes",bookmarks:"SELECT * FROM bookmarks",books:"SELECT * FROM books",plugins:"SELECT * FROM plugins",words:"SELECT * FROM words"}),saveStatement:ne({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:ne({notes:"DELETE FROM notes",bookmarks:"DELETE FROM bookmarks",books:"DELETE FROM books",plugins:"DELETE FROM plugins",words:"DELETE FROM words"}),updateStatement:ne({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:ne({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:ne({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:ne(ie),getByBookKeyStatement:ne(oe),getByBookKeysStatement:ne({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:ne(se)},jsonToSqlite:ne({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:ne(ae)};const le=b,ce=F;class he{constructor(e,t){this.TokenService=e,this.ConfigService=t,this.baseUrl="china"===t.getItem("serverRegion")?ce:le,this.refreshToken="",this.accessToken="",this.streamPromise=null}refreshUserToken(){return v(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 v(this,void 0,void 0,(function*(){return he.requestQueue||(he.requestQueue=[]),new Promise(((t,r)=>{he.requestQueue.push({config:e,resolve:t,reject:r}),he.processingQueue||this.processQueue()}))}))}processQueue(){return v(this,void 0,void 0,(function*(){if(!he.processingQueue){he.processingQueue=!0;try{for(;he.requestQueue.length>0;){const e=he.requestQueue.shift();try{let t=yield this.executeRequest(e.config);e.resolve(t)}catch(t){e.reject(t)}}}finally{he.processingQueue=!1}}}))}executeRequest(t){return v(this,void 0,void 0,(function*(){try{try{this.accessToken=(yield this.TokenService.getToken("access_token"))||""}catch(e){console.error("Error get Token:",e)}let r="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);if(t.baseURL=this.baseUrl,t.headers)t.headers.Authorization="Bearer "+this.accessToken,t.headers["X-Request-ID"]=r;else{let e=this.ConfigService.getItem("appVersion"),i=this.ConfigService.getItem("appPlatform");t.headers={Authorization:"Bearer "+this.accessToken,"X-Request-ID":r,"X-App-Version":e||"1.0.0","X-App-Platform":i||"web"}}let i=(yield e(t)).data;if(402===i.code){let r=yield this.refreshUserToken();if(200===r.code){return t.headers=t.headers||{},t.headers.Authorization="Bearer "+this.accessToken,(yield e(t)).data}return r}return 200!==i.code&&this.ConfigService.setItem("errorLog",JSON.stringify({request:t.data,url:t.url,result:i,requestID:r})),i}catch(e){return console.error("Request execution error:",e),{code:503,message:"network error",data:null}}}))}requestWithStream(e,t,r){return v(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>v(this,void 0,void 0,(function*(){try{let i="";try{i=(yield this.TokenService.getToken("access_token"))||""}catch(e){console.error("Error get Token:",e)}let o="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((s,n)=>{let a=this.ConfigService.getItem("appVersion"),d=this.ConfigService.getItem("appPlatform");const l=new r(this.baseUrl+e.url,{headers:{"Content-Type":"application/json",Authorization:"Bearer "+i,"X-Request-ID":o,"X-App-Version":a||"1.0.0","X-App-Platform":d||"web"},method:e.method,body:JSON.stringify(e.data),pollingInterval:0});l.addEventListener("open",(()=>{console.info("Connection to OpenAI established.")})),l.addEventListener("message",(e=>v(this,void 0,void 0,(function*(){if(!e.data)return;const r=JSON.parse(e.data);r.done?(l.close(),s(r)):(402===r.code&&(yield this.refreshUserToken()),t(r.data))})))),l.addEventListener("error",(e=>{if(console.info("Error:",e),!e.data)return;const t=JSON.parse(e.data);s(t),l.close()}))}))}finally{this.streamPromise=null}})))()),this.streamPromise}))}requestWithFetch(e,t){return v(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>v(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 i="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((o,s)=>v(this,void 0,void 0,(function*(){let s=this.ConfigService.getItem("appVersion"),n=this.ConfigService.getItem("appPlatform");const a=yield fetch(this.baseUrl+e.url,{method:"POST",headers:{"Content-Type":"text/event-stream",Authorization:"Bearer "+r,"X-Request-ID":i,"X-App-Version":s||"1.0.0","X-App-Platform":n||"web"},body:JSON.stringify(e.data)});if(!a.body)throw new Error("Response body is null");const d=a.body.pipeThrough(new TextDecoderStream).getReader();for(;;){const{value:e,done:r}=yield d.read();if(r){t({done:!0});break}if(e)if(e.includes('"code":400')||e.includes('"code":401')||e.includes('"code":402')){let t=JSON.parse(e);402===t.code&&(yield this.refreshUserToken()),o(t)}else e.split("\n").forEach((e=>{if(e.startsWith("data:")){const r=JSON.parse(e.substring(5));t(r.data)}}))}o({code:200,data:{done:!0}})}))))}finally{this.streamPromise=null}})))()),this.streamPromise}))}}he.processingQueue=!1,he.requestQueue=[];class ue extends he{constructor(e,t){super(e,t)}encryptToken(e){return v(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/encrypt_token",data:e};return yield this.requestWithRetry(t)}))}decryptToken(e){return v(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/decrypt_token",data:e};return yield this.requestWithRetry(t)}))}authThirdToken(e){return v(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/auth_token",data:e};return yield this.requestWithRetry(t)}))}refreshThirdToken(e){return v(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/refresh_token",data:e};return yield this.requestWithRetry(t)}))}s3Upload(e){return v(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/s3_upload",data:e};return yield this.executeRequest(t)}))}s3Download(e){return v(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/s3_download",data:e};return yield this.executeRequest(t)}))}s3List(e){return v(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/s3_list",data:e};return yield this.executeRequest(t)}))}s3Delete(e){return v(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/s3_delete",data:e};return yield this.executeRequest(t)}))}getSyncData(){return v(this,void 0,void 0,(function*(){return yield this.requestWithRetry({method:"get",url:"/api/v1/pro/thirdparty/get_sync_data"})}))}updateSyncData(e){return v(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/update_sync_data",data:e};return yield this.requestWithRetry(t)}))}}const pe=new g;class fe{static encrypt(e,t){let r="";for(let i=0;i-1&&r.splice(i,1),this.setAllListConfig(r,t)}static setListConfig(e,t){let r=this.getAllListConfig(t);const i=r.indexOf(e);i>-1?(r.splice(i,1),r.unshift(e)):r.unshift(e),this.setAllListConfig(r,t)}static setAllListConfig(e,t,r=!0){this.setItem(t,JSON.stringify(e)),r&&this.setSyncRecord({type:"config",catergory:"listConfig",name:"general",key:t},{operation:"update",time:Date.now()})}static setObjectConfig(e,t,r,i=!0){let o=this.getAllObjectConfig(r);o[e]=t,i&&this.setSyncRecord({type:"config",catergory:"objectConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllObjectConfig(o,r)}static getObjectConfig(e,t,r){return this.getAllObjectConfig(t)[e]||r}static getAllObjectConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static setAllObjectConfig(e,t){this.setItem(t,JSON.stringify(e))}static deleteObjectConfig(e,t){let r=this.getAllObjectConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"objectConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllObjectConfig(r,t)}static getAllMapConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static getMapConfig(e,t){return this.getAllMapConfig(t)[e]||[]}static setAllMapConfig(e,t){this.setItem(t,JSON.stringify(e))}static setMapConfig(e,t,r){let i=this.getAllMapConfig(r);void 0===i[e]&&(i[e]=[]),t&&-1===i[e].indexOf(t)&&i[e].unshift(t),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(i,r)}static setOneMapConfig(e,t,r,i=!0){let o=this.getAllMapConfig(r);o[e]=t,i&&this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(o,r)}static deleteFromMapConfig(e,t,r){let i=this.getAllMapConfig(r),o=i[e].indexOf(t);i[e].splice(o,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(i,r)}static deleteFromAllMapConfig(e,t){let r=this.getAllMapConfig(t);Object.keys(r).forEach((i=>{let o=r[i].indexOf(e);o>-1&&(r[i].splice(o,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:i},{operation:"update",time:Date.now()}))})),this.setAllMapConfig(r,t)}static deleteMapConfig(e,t){let r=this.getAllMapConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllMapConfig(r,t)}static getFromAllMapConfig(e,t){let r=this.getAllMapConfig(t),i=[];for(let t in r)r[t]&&r[t].indexOf(e)>-1&&i.push(t);return i}static getSyncRecord(e){return JSON.parse(this.getItem("syncRecord")||"{}")[e.type+"."+e.catergory+"."+e.name+"."+e.key]||{operation:"",time:0}}static getAllSyncRecord(){return JSON.parse(this.getItem("syncRecord")||"{}")}static 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 me,ve;export{ge as ConfigService,de as SqlStatement,re as SyncUtil,ue as ThirdpartyRequest,fe as TokenService}; +import e from"axios";import t from"fs";import r from"path";import{promisify as i}from"util";import o from"stream";import{Client as s}from"basic-ftp";import{S3Client as n,ListObjectsV2Command as a,DeleteObjectCommand as d,PutObjectCommand as l,GetObjectCommand as c}from"@aws-sdk/client-s3";import{createClient as h,AuthType as u}from"webdav";import p from"ssh2-sftp-client";import f from"form-data";import{Storage as y}from"megajs";import g from"electron-store";import m from"node-machine-id";function v(e,t,r,i){return new(r||(r=Promise))((function(o,s){function n(e){try{d(i.next(e))}catch(e){s(e)}}function a(e){try{d(i.throw(e))}catch(e){s(e)}}function d(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(n,a)}d((i=i.apply(e,t||[])).next())}))}const k=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;class T{constructor(e){this.queue=[],this.runningTasks=0,this.totalTasks=0,this.completedTasks=0,this.hasFailedTasks=!1,this.maxConcurrency=e}addTask(e){return v(this,void 0,void 0,(function*(){return this.totalTasks++,new Promise(((t,r)=>{const i=()=>v(this,void 0,void 0,(function*(){try{this.runningTasks++;const r=yield e();return this.completedTasks++,t(r),r}catch(e){throw this.completedTasks++,r(e),e}finally{this.runningTasks--,this.runNext()}}));this.runningTasks0&&this.runningTasks=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(t){return v(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=[],o=!0,s=null;for(;o;){let n;n=s?yield e.post("https://api.dropboxapi.com/2/files/list_folder/continue",{cursor:s},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}):yield e.post("https://api.dropboxapi.com/2/files/list_folder",{path:"/"+t,limit:2e3},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});const a=n.data.entries||[];i=i.concat(a),o=n.data.has_more,s=n.data.cursor}return[...new Set(i.map((e=>e.name)))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return v(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 v(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=(()=>v(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 v(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"dropbox",redirect_uri:w,code:e})).data.refresh_token}))}getAuthUrl(){return`https://www.dropbox.com/oauth2/authorize?response_type=code&token_access_type=offline&client_id=${E}&redirect_uri=${w}`}}const A=i(o.pipeline);class P extends C{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=t.createReadStream(r.join(this.storagePath,i));return yield e.post("https://content.dropboxapi.com/2/files/upload",n,{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/octet-stream","Dropbox-API-Arg":JSON.stringify({path:"/"+o,mode:"overwrite",autorename:!0,mute:!1})},maxContentLength:1/0,maxBodyLength:1/0}),!0}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=t.createWriteStream(r.join(this.storagePath,o)),a=yield e({url:"https://content.dropboxapi.com/2/files/download",method:"GET",responseType:"stream",headers:{Authorization:`Bearer ${s}`,"Dropbox-API-Arg":JSON.stringify({path:"/"+i})},maxContentLength:1/0,maxBodyLength:1/0});return yield A(a.data,n),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class I{constructor(e,t){this.config=e,this.storagePath=t,this.taskQueue=new T(1),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return v(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getClient(){return v(this,void 0,void 0,(function*(){if(this.client)return this.client;let{url:e,username:t,password:r,dir:i,ssl:o,port:n}=this.config;const a=new s;return a.ftp.verbose=!0,yield a.access({host:e,port:parseInt(n),user:t,password:r,secure:"1"===o}),this.client=a,a}))}uploadFile(e,t){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){let{dir:i}=this.config;i=i&&"KoodoReader"===this.baseFolder?i:this.baseFolder;const o=yield this.getClient(),s=()=>v(this,void 0,void 0,(function*(){yield o.ensureDir(r.dirname(i+"/"+t)),yield o.cd("/"),yield o.uploadFrom(r.join(this.storagePath,e),i+"/"+t)}));try{return yield s(),!0}catch(e){return console.error(e),!1}}))))))}))}downloadFile(e,t){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){let{dir:i}=this.config;i=i&&"KoodoReader"===this.baseFolder?i:this.baseFolder;const o=yield this.getClient(),s=()=>v(this,void 0,void 0,(function*(){yield o.downloadTo(r.join(this.storagePath,t),i+"/"+e)}));try{return yield s(),!0}catch(e){return console.error(e),!1}}))))))}))}listFiles(e){return v(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;const r=yield this.getClient(),i=()=>v(this,void 0,void 0,(function*(){return yield r.list(t+"/"+e)}));try{return(yield i()).map((e=>e.name))}catch(e){return console.error(e),[]}}))}deleteFile(e){return v(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;const r=yield this.getClient(),i=()=>v(this,void 0,void 0,(function*(){yield r.remove(t+"/"+e)}));try{return yield i(),!0}catch(e){return console.error(e),!1}}))}}class L{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new T(3)}retryOperation(e,t=3){return v(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(t){return v(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=[],o=`https://graph.microsoft.com/v1.0/me/drive/special/approot:/${t}:/children`;for(;o;){const t=yield e.get(o,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(t.status>=300)break;const s=t.data.value||[];i=i.concat(s),o=t.data["@odata.nextLink"]||""}return[...new Set(i.map((e=>e.name)))]}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return v(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield e.delete(`https://graph.microsoft.com/v1.0/me/drive/special/approot:/${t}`,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});return!(i.status>=300)||(console.error("Error deleting file:",i),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return v(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=(()=>v(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 v(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"microsoft",redirect_uri:w,code:e})).data.refresh_token}))}getAuthUrl(){return`https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=${x}&scope=files.readwrite.appfolder offline_access&response_type=code&redirect_uri=${w}`}}const Q=209715200;class $ extends L{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){var s;let n=null;try{const s=yield this.refreshToken(),a=r.join(this.storagePath,i),d=yield this.getFileSize(a),l=o.split(".").pop(),c=(k(l||""),`https://graph.microsoft.com/v1.0/me/drive/special/approot:/${o}:/createUploadSession`),h=(yield e.post(c,{item:{"@microsoft.graph.conflictBehavior":"replace"}},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}})).data.uploadUrl;n=yield t.promises.open(a,"r");let u=0,p=Buffer.alloc(Q);for(;uthis.retryOperation((()=>v(this,void 0,void 0,(function*(){try{const o=yield this.refreshToken(),s=`https://graph.microsoft.com/v1.0/me/drive/special/approot:/${e}:/content`;let n=(yield fetch(s,{headers:{Authorization:"Bearer "+o},redirect:"manual"})).headers.get("location");if(n){const e=yield fetch(n,{headers:{}}),o=yield e.arrayBuffer();return t.writeFileSync(r.join(this.storagePath,i),Buffer.from(o)),!0}return!1}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getFileSize(e){return v(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}class j{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new T(3)}retryOperation(e,t=3){return v(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getFileId(t,r){return v(this,void 0,void 0,(function*(){const i=yield this.refreshToken(),o=`https://www.googleapis.com/drive/v3/files?q=name='${t}'+and+'${r}'+in+parents&spaces=appDataFolder&fields=files(id,name)`;try{const t=yield e.get(o,{headers:{Authorization:"Bearer "+i}});if(0===t.data.files.length)return"";const r=t.data.files;return r.length>0?r[0].id:null}catch(e){return console.error("Error occurred during file list retrieval:",e),""}}))}checkFolder(t){return v(this,void 0,void 0,(function*(){const r=yield this.refreshToken(),i=yield this.getFolderId(t);if(i)return i;const o={name:t,mimeType:"application/vnd.google-apps.folder",parents:["appDataFolder"]};try{return(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:",e),e}}))}getFolderId(t){return v(this,void 0,void 0,(function*(){const r=yield this.refreshToken(),i=`https://www.googleapis.com/drive/v3/files?q=name='${t}'+and+mimeType='application/vnd.google-apps.folder'+and+'appDataFolder'+in+parents&spaces=appDataFolder&fields=files(id,name)`;try{const t=(yield e.get(i,{headers:{Authorization:`Bearer ${r}`}})).data.files;return t.length>0?t[0].id:null}catch(e){throw console.error("Error occurred during fetching folder ID:",e),e}}))}listFiles(t){return v(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=yield this.checkFolder(t),o=[],s="",n=!0;for(;n;){let t=`https://www.googleapis.com/drive/v3/files?q='${i}'+in+parents&spaces=appDataFolder&fields=nextPageToken,files(id,name)&pageSize=1000`;s&&(t+=`&pageToken=${s}`);const a=yield e.get(t,{headers:{Authorization:`Bearer ${r}`}}),d=a.data.files||[];o=o.concat(d),s=a.data.nextPageToken,n=!!s}return[...new Set(o.map((e=>e.name)))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQue(e)}))))))}))}deleteFileWithoutQue(t){return v(this,void 0,void 0,(function*(){const r=t.split("/")[1],i=t.split("/")[0],o=yield this.getFolderId(i),s=yield this.refreshToken(),n=yield this.getFileId(r,o);if(""===n)return console.error("File not found:",r),!0;try{const t=yield e.delete(`https://www.googleapis.com/drive/v3/files/${n}`,{headers:{Authorization:`Bearer ${s}`}});return console.error("File deleted:",t),!0}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return v(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=(()=>v(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 v(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"google",redirect_uri:w,code:e})).data.refresh_token}))}getAuthUrl(){return`https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${w}&prompt=consent&response_type=code&client_id=${_}&scope=https://www.googleapis.com/auth/drive.appdata&access_type=offline`}}class B extends j{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken();let n=i.split("/").pop(),a=o.split(".").pop(),d=k(a||""),l=o.split("/")[0],c=yield this.checkFolder(l),h=yield this.getFileId(n||"",c);const u={mimeType:d,name:n,parents:[c]},p=h?`https://www.googleapis.com/upload/drive/v3/files/${h}?uploadType=resumable`:"https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable",f=(yield e({method:h?"PATCH":"POST",url:p,data:h?null:JSON.stringify(u),headers:{Authorization:"Bearer "+s,"Content-Type":"application/json; charset=UTF-8"},maxContentLength:1/0,maxBodyLength:1/0})).headers.location;let y=yield this.getFileSize(r.join(this.storagePath,i));const g=t.createReadStream(r.join(this.storagePath,i));yield e.put(f,g,{headers:{Authorization:"Bearer "+s,"Content-Type":"application/zip","Content-Range":`bytes 0-${y-1}/${y}`},maxContentLength:1/0,maxBodyLength:1/0});return!0}catch(e){return console.error("Error occurred during upload:",e),!1}}))))))}))}downloadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken();let n=i.split("/").pop(),a=i.split("/")[0],d=yield this.checkFolder(a),l=yield this.getFileId(n||"",d);if(!l)return console.error("File not found"),!0;const c=`https://www.googleapis.com/drive/v3/files/${l}?alt=media`;return new Promise((i=>{const n=t.createWriteStream(r.join(this.storagePath,o));e({url:c,method:"GET",responseType:"stream",headers:{Authorization:"Bearer "+s},maxContentLength:1/0,maxBodyLength:1/0}).then((e=>{e.data.pipe(n),n.on("finish",(()=>{i(!0)})),n.on("error",(()=>{i(!1)}))})).catch((()=>{i(!1)}))}))}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}getFileSize(e){return v(this,void 0,void 0,(function*(){try{return(yield t.promises.stat(e)).size}catch(e){throw e}}))}}class M{constructor(e){this.config=e,this.taskQueue=new T(5),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return v(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(e){return v(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:i,accessKeyId:o,secretAccessKey:s,dir:d}=this.config;d=d&&"KoodoReader"===this.baseFolder?d:this.baseFolder;let l=d+"/"+e;for(;l.startsWith("/");)l=l.substring(1);const c=new n({endpoint:t,region:r,credentials:{accessKeyId:o,secretAccessKey:s}});try{let e,t=[],r=!0;for(;r;){const o=yield c.send(new a({Bucket:i,Prefix:l,ContinuationToken:e}));o.Contents&&(t=t.concat(o.Contents)),e=o.NextContinuationToken,r=!!e}if(0===t.length)return[];const o=new Set;""===l||l.endsWith("/")||(l+="/");let s=t.map((e=>e.Key));for(const e of s){const t=e.substring(l.length).split("/")[0];o.add(t)}return Array.from(o)}catch(e){return console.error(e),[]}}))}deleteFile(e){return v(this,void 0,void 0,(function*(){let{endpoint:t,region:r,bucketName:i,accessKeyId:o,secretAccessKey:s,dir:a}=this.config;a=a&&"KoodoReader"===this.baseFolder?a:this.baseFolder;const l=new n({endpoint:t,region:r,credentials:{accessKeyId:o,secretAccessKey:s}});let c=a+"/"+e;for(;c.startsWith("/");)c=c.substring(1);try{return yield l.send(new d({Bucket:i,Key:c})),!0}catch(e){return console.error(e),!1}}))}}class z extends M{constructor(e,t){super(e),this.storagePath=t}uploadFile(e,i){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){let{endpoint:o,region:s,bucketName:a,accessKeyId:d,secretAccessKey:c,dir:h}=this.config;const u=new n({endpoint:o,region:s,credentials:{accessKeyId:d,secretAccessKey:c}});h=h&&"KoodoReader"===this.baseFolder?h:this.baseFolder;let p=h+"/"+i;for(;p.startsWith("/");)p=p.substring(1);try{let i=yield u.send(new l({Bucket:a,Key:p,Body:t.createReadStream(r.join(this.storagePath,e))}));return 200===i.$metadata.httpStatusCode||(console.error("Error uploading file:",i),!1)}catch(e){return console.error("Error: ",e),!1}}))))))}))}downloadFile(e,i){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){let{endpoint:o,region:s,bucketName:a,accessKeyId:d,secretAccessKey:l,dir:h}=this.config;h=h&&"KoodoReader"===this.baseFolder?h:this.baseFolder;const u=()=>new Promise(((u,p)=>{const f=new n({region:s,endpoint:o,credentials:{accessKeyId:d,secretAccessKey:l}});let y=t.createWriteStream(r.join(this.storagePath,i)),g=h+"/"+e;for(;g.startsWith("/");)g=g.substring(1);(function(e,t,r,i){return new Promise(((o,s)=>v(this,void 0,void 0,(function*(){const s=yield e.send(new c({Bucket:t,Key:r}));s.Body?(s.Body.pipe(i),i.on("finish",(e=>{e&&o(!1),o(!0)}))):o(!1)}))))})(f,a,g,y).then((e=>{u(!0)})).catch((e=>{console.error(e),u(!1)}))}));try{return yield u()}catch(e){return console.error(e),!1}}))))))}))}}class N{constructor(e,t){this.storagePath=t;let{username:r,password:i,url:o,dir:s}=e;void 0===e.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=e.baseFolder,s=s&&"KoodoReader"===this.baseFolder?s:this.baseFolder,this.client=h(o,{authType:u.Password,username:r,password:i}),this.username=r,this.password=i,this.dir=s,this.taskQueue=new T(5)}retryOperation(e,t=0){return v(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}uploadFile(e,i){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{!1===(yield this.client.exists(r.dirname(this.dir+"/"+i)))&&(yield this.client.createDirectory(r.dirname(this.dir+"/"+i)));let o=this.client.createWriteStream(this.dir+"/"+i);return t.createReadStream(r.join(this.storagePath,e)).pipe(o),new Promise(((e,t)=>{o.on("finish",(()=>{e(!0)})),o.on("error",(t=>{console.error(t),e(!1)}))}))}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(e,i){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{if(!1===(yield this.client.exists(this.dir+"/"+e)))return!0;let o=t.createWriteStream(r.join(this.storagePath,i));return this.client.createReadStream(this.dir+"/"+e).pipe(o),new Promise(((e,t)=>{o.on("finish",(()=>{e(!0)})),o.on("error",(t=>{e(!1)}))}))}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}listFiles(e){return v(this,void 0,void 0,(function*(){try{return(yield this.client.getDirectoryContents(this.dir+"/"+e)).map((e=>e.basename))}catch(t){return console.error("Error listing files:",t),t.response&&404===t.response.status&&(yield this.client.createDirectory(this.dir+"/"+e)),[]}}))}deleteFile(e){return v(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}}))}}class W{constructor(e,t){this.config=e,this.storagePath=t,this.taskQueue=new T(5),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=0){return v(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getClient(){return v(this,void 0,void 0,(function*(){if(this.client)return this.client;let{url:e,username:t,password:r,dir:i,port:o}=this.config;const s=new p;return yield s.connect({host:e,port:o,username:t,password:r}),this.client=s,s}))}uploadFile(e,i){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){let{dir:o}=this.config;o=o&&"KoodoReader"===this.baseFolder?o:this.baseFolder;let s=yield this.getClient();const n=()=>new Promise(((n,a)=>v(this,void 0,void 0,(function*(){let a=t.createReadStream(r.join(this.storagePath,e)),d="/"+o+"/"+i,l="/"+o+"/"+r.dirname(i);(yield s.exists(l))||(yield s.mkdir(l,!0)),s.put(a,d).then((()=>{n(!0)})).catch((e=>{console.error(e.message),n(!1)}))}))));try{return yield n()}catch(e){return console.error(e),!1}}))))))}))}downloadFile(e,i){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){let{dir:o}=this.config;o=o&&"KoodoReader"===this.baseFolder?o:this.baseFolder;let s=yield this.getClient();const n=()=>new Promise(((n,a)=>{let d="/"+o+"/"+e,l=t.createWriteStream(r.join(this.storagePath,i));s.get(d,l).then((()=>{n(!0)})).catch((e=>{console.error(e.message),n(!1)}))}));try{return yield n()}catch(e){return console.error(e),!1}}))))))}))}listFiles(e){return v(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;let r=yield this.getClient();const i=()=>new Promise(((i,o)=>v(this,void 0,void 0,(function*(){let o="/"+t+"/"+e;(yield r.exists(o))||(yield r.mkdir(o,!0),i([])),r.list(o).then((e=>{i(e.map((e=>e.name)))})).catch((e=>v(this,void 0,void 0,(function*(){console.error(e.message,"list file error"),i([])}))))}))));try{return yield i()}catch(e){return console.error(e),[]}}))}deleteFile(e){return v(this,void 0,void 0,(function*(){let{dir:t}=this.config;t=t&&"KoodoReader"===this.baseFolder?t:this.baseFolder;let r=yield this.getClient();try{return yield new Promise(((i,o)=>{let s="/"+t+"/"+e;r.delete(s).then((()=>{i(!0)})).catch((e=>{console.error(e.message),i(!1)}))}))}catch(e){return console.error(e),!1}}))}}class D{downloadFile(e,t){return v(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}uploadFile(e,t){return v(this,void 0,void 0,(function*(){return new Promise((e=>{e(!0)}))}))}listFiles(e){return v(this,void 0,void 0,(function*(){return new Promise((e=>{e([])}))}))}authToken(e){return v(this,void 0,void 0,(function*(){return new Promise((e=>{e("")}))}))}getAuthUrl(){return""}}class K{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.refreshTokenPromise=null,this.taskQueue=new T(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return v(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getFolderIdByPath(t){return v(this,void 0,void 0,(function*(){if(""==t)return"0";const r=yield this.refreshToken(),i=t.split("/");let o="0";for(const t of i){const i=`https://api.box.com/2.0/folders/${o}/items?fields=id,name&type=folder&limit=1000`;try{const s=(yield e.get(i,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===t&&"folder"===e.type));if(s)o=s.id;else{const i={name:t,parent:{id:o},type:"folder"};o=(yield e.post("https://api.box.com/2.0/folders",i,{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.id}}catch(e){return console.error("Error occurred during folder creation:",e),""}}return o}))}listFiles(t){return v(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken();let i=this.baseFolder+"/"+t;for(;i.startsWith("/");)i=i.substring(1);let o=yield this.getFolderIdByPath(i),s=[],n=0,a=!0;const d=1e3;for(;a;){const t=yield e.get(`https://api.box.com/2.0/folders/${o}/items`,{params:{limit:d,offset:n},headers:{Authorization:`Bearer ${r}`}}),i=t.data.entries||[];s=s.concat(i),n+=i.length,a=i.length===d&&t.data.total_count>n}return[...new Set(s.map((e=>e.name)))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return v(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=t.substring(0,t.lastIndexOf("/")),o=t.substring(t.lastIndexOf("/")+1);let s=this.baseFolder+"/"+i;for(;s.startsWith("/");)s=s.substring(1);const n=yield this.getFolderIdByPath(s);if(!n)return!0;const a=`https://api.box.com/2.0/folders/${n}/items?fields=id,name&type=file&limit=1000`,d=(yield e.get(a,{headers:{Authorization:`Bearer ${r}`}})).data.entries.find((e=>e.name===o&&"file"===e.type));return!d||(yield e.delete(`https://api.box.com/2.0/files/${d.id}`,{headers:{Authorization:`Bearer ${r}`}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}refreshToken(){return v(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=(()=>v(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 v(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"boxnet",redirect_uri:w,code:e})).data.refresh_token}))}getAuthUrl(){return`https://account.box.com/api/oauth2/authorize?${new URLSearchParams({response_type:"code",client_id:R,redirect_uri:w,grant_type:"authorization_code",box_subject_type:"enterprise",scope:"root_readwrite"}).toString()}`}}class q extends K{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=o.substring(0,o.lastIndexOf("/")),a=o.substring(o.lastIndexOf("/")+1);let d=this.baseFolder+"/"+n;for(;d.startsWith("/");)d=d.substring(1);const l=yield this.getFolderIdByPath(d);if(!l)throw new Error("Folder not found");const c=yield this.listFiles(n);c.find((e=>e===a))&&(yield this.deleteFileWithoutQueue(n+"/"+a));const h=new f,u=JSON.stringify({name:a,parent:{id:l}});h.append("attributes",u),h.append("file",t.createReadStream(r.join(this.storagePath,i)));const p=yield e.post("https://upload.box.com/api/2.0/files/content",h,{headers:Object.assign({Authorization:`Bearer ${s}`},h.getHeaders()),maxContentLength:1/0,maxBodyLength:1/0});return!(p.status>=300)||(console.error("Error occurred during file upload:",p),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=i.substring(0,i.lastIndexOf("/")),a=i.substring(i.lastIndexOf("/")+1);let d=this.baseFolder+"/"+n;for(;d.startsWith("/");)d=d.substring(1);const l=yield this.getFolderIdByPath(d);if(!l)return console.error("Folder not found"),!0;const c=`https://api.box.com/2.0/folders/${l}/items?fields=id,name&type=file&limit=1000`,h=(yield e.get(c,{headers:{Authorization:`Bearer ${s}`}})).data.entries.find((e=>e.name===a&&"file"===e.type));if(!h)return console.error("File not found:",a),!0;const u=yield e({url:`https://api.box.com/2.0/files/${h.id}/content`,method:"get",responseType:"stream",headers:{Authorization:`Bearer ${s}`}});return yield new Promise(((e,i)=>{const s=t.createWriteStream(r.join(this.storagePath,o));u.data.pipe(s),s.on("finish",e),s.on("error",i)})),!0}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class J{constructor(e){this.folderCreationLocks=new Map,this.config=e,this.taskQueue=new T(3),void 0===this.config.baseFolder?this.baseFolder="KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=3){return v(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getStorage(){return v(this,void 0,void 0,(function*(){if(this.storage)return this.storage;let{email:e,password:t}=this.config;return this.storage=yield new y({email:e,password:t}).ready,this.storage}))}getRoot(){return v(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 v(this,void 0,void 0,(function*(){const r=`${e.nodeId}_${t}`;if(this.folderCreationLocks.has(r))return yield this.folderCreationLocks.get(r);const i=(()=>v(this,void 0,void 0,(function*(){try{let r=e.children.find((e=>e.name===t&&e.directory));return r||(r=yield e.mkdir(t),r)}finally{this.folderCreationLocks.delete(r)}})))();return this.folderCreationLocks.set(r,i),yield i}))}listFiles(e){return v(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();if(e){const r=e.split("/").filter((e=>e));for(const e of r){const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return[];t=r}}return t.children.map((e=>e.name))}catch(e){return console.error("Error listing MEGA files:",e),[]}}))}deleteFile(e){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(e){return v(this,void 0,void 0,(function*(){try{let t=yield this.getRoot();const r=e.split("/"),i=r.pop();for(const e of r){if(!e)continue;const r=t.children.find((t=>t.name===e&&t.directory));if(!r)return!0;t=r}const o=t.children.find((e=>e.name===i&&!e.directory));return!o||(yield o.delete(),!0)}catch(e){return console.error("Error deleting MEGA file:",e),!1}}))}}class U extends J{constructor(e,t){super(e),this.storagePath=t}uploadFile(e,i){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{let o=yield this.getRoot();const s=i.split("/"),n=s.pop()||"";for(const e of s){if(!e)continue;let t=o.children.find((t=>t.name===e&&t.directory));t||(t=yield this.createFolder(o,e)),o=t}const a=o.children.find((e=>e.name===n&&!e.directory));a&&(yield a.delete());const d=t.createReadStream(r.join(this.storagePath,e)),l=t.statSync(r.join(this.storagePath,e)).size;return yield o.upload({name:n,size:l},d).complete,!0}catch(e){return console.error("Error occurred during MEGA file upload:",e),!1}}))))))}))}downloadFile(e,i){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{let o=yield this.getRoot();const s=e.split("/"),n=s.pop()||"";for(const e of s){if(!e)continue;const t=o.children.find((t=>t.name===e&&t.directory));if(!t)return!0;o=t}const a=o.children.find((e=>e.name===n&&!e.directory));if(!a)return!0;const d=t.createWriteStream(r.join(this.storagePath,i));return new Promise((e=>{a.download().pipe(d),d.on("finish",(()=>e(!0))),d.on("error",(t=>{console.error("Error writing file:",t),e(!1)}))}))}catch(e){return console.error("Error occurred during MEGA file download:",e),!1}}))))))}))}}class H{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.driveId="",this.refreshTokenPromise=null,this.taskQueue=new T(1),void 0===this.config.baseFolder?this.baseFolder="/KoodoReader":this.baseFolder=this.config.baseFolder}retryOperation(e,t=5){return v(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}getDriveId(){return v(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 v(this,void 0,void 0,(function*(){const r=yield this.refreshToken(),i=yield this.getDriveId();try{try{const o=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:t},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}});if(o.data)return o.data.file_id}catch(o){const s=t.split("/").filter((e=>e));let n="",a="root";for(const t of s){n+="/"+t;try{a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:i,file_path:n},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}catch(o){a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:i,parent_file_id:a,name:t,type:"folder",check_name_mode:"refuse"},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}})).data.file_id}}return a}}catch(e){return console.error("Error getting/creating folder by path:",e),""}}))}listFiles(t){return v(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield this.getDriveId(),o=yield this.getFolderIdByPath(this.baseFolder+"/"+t);let s=[],n="",a=!0;for(;a;){const t=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/list",{drive_id:i,parent_file_id:o,marker:n||void 0},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),d=t.data.items||[];s=s.concat(d),n=t.data.next_marker,a=!!n&&100===d.length}return[...new Set(s.map((e=>e.name)))]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return v(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield this.getDriveId(),o=yield this.getFolderIdByPath(this.baseFolder+"/"+t);return!o||(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/delete",{drive_id:i,file_id:o},{headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"}}),!0)}catch(e){return console.error("Error deleting file:",e),!1}}))}checkExists(t){var r;return v(this,void 0,void 0,(function*(){try{const i=yield this.refreshToken(),o=yield this.getDriveId(),s=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:o,file_path:t},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}});(null===(r=s.data)||void 0===r?void 0:r.file_id)&&(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/recyclebin/trash",{drive_id:o,file_id:s.data.file_id},{headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"}}))}catch(e){}}))}refreshToken(){return v(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=(()=>v(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 v(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"adrive",redirect_uri:w,code:e})).data.refresh_token}))}getAuthUrl(){return`https://openapi.alipan.com/oauth/authorize?${new URLSearchParams({response_type:"code",client_id:O,redirect_uri:w,grant_type:"authorization_code",scope:"user:base,file:all:write,file:all:read"}).toString()}`}}class V extends H{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=yield this.getDriveId(),a=o.substring(0,o.lastIndexOf("/")),d=o.substring(o.lastIndexOf("/")+1);yield this.deleteFileWithoutQueue(o);const l=yield this.getFolderIdByPath(this.baseFolder+"/"+a),c=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/create",{drive_id:n,parent_file_id:l,name:d,type:"file",check_name_mode:"ignore"},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}),{file_id:h,upload_id:u,part_info_list:p}=c.data,f=yield t.promises.readFile(r.join(this.storagePath,i));return yield fetch(p[0].upload_url,{method:"PUT",body:f,headers:{"Content-Length":t.statSync(r.join(this.storagePath,i)).size.toString()}}),yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/complete",{drive_id:n,file_id:h,upload_id:u},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}),!0}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=yield this.getDriveId(),a=(yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/get_by_path",{drive_id:n,file_path:this.baseFolder+"/"+i},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}})).data.file_id,d=yield e.post("https://openapi.alipan.com/adrive/v1.0/openFile/getDownloadUrl",{drive_id:n,file_id:a},{headers:{Authorization:`Bearer ${s}`,"Content-Type":"application/json"}}),l=yield e({url:d.data.url,method:"get",responseType:"stream"}),c=t.createWriteStream(r.join(this.storagePath,o));return l.data.pipe(c),new Promise((e=>{c.on("finish",(()=>{e(!0)})),c.on("error",(t=>{console.error("Error occurred during file download:",t),e(!1)}))}))}catch(e){return console.error("Error downloading file:",e),!1}}))))))}))}}class X{constructor(e,t){this.config=e,this.thirdpartyRequest=t,this.taskQueue=new T(3)}retryOperation(e,t=5){return v(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}checkFolderExists(t,r){return v(this,void 0,void 0,(function*(){try{return 0===(yield e.get("https://api.pcloud.com/listfolder",{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error checking folder:",e),!1}}))}createFolder(t,r){return v(this,void 0,void 0,(function*(){try{return 0===(yield e.get("https://api.pcloud.com/createfolderifnotexists",{params:{access_token:r,path:`/${t}`}})).data.result}catch(e){return console.error("Error creating folder:",e),!1}}))}listFiles(t){return v(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield e.get("https://api.pcloud.com/listfolder",{params:{access_token:r,path:"/"+t,recursive:0}});return 0!==i.data.result?[]:i.data.metadata.contents.map((e=>e.name))}catch(e){return console.error("Error occurred during file list:",e),[]}}))}deleteFile(e){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return v(this,void 0,void 0,(function*(){try{const r=yield this.refreshToken(),i=yield e.get("https://api.pcloud.com/deletefile",{params:{access_token:r,path:"/"+t}});return 0===i.data.result||(console.error("Error deleting file:",i.data),!0)}catch(e){return console.error("Error occurred during file delete:",e),!1}}))}refreshToken(){return v(this,void 0,void 0,(function*(){return this.config.refresh_token}))}authToken(e){return v(this,void 0,void 0,(function*(){return(yield this.thirdpartyRequest.authThirdToken({provider:"pcloud",redirect_uri:w,code:e})).data.access_token}))}getAuthUrl(){return`https://my.pcloud.com/oauth2/authorize?client_id=${S}&response_type=code&redirect_uri=${w}`}}class Y extends X{constructor(e,t,r){super(e,r),this.storagePath=t}uploadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=o.split("/").slice(0,-1).join("/");if(!(yield this.checkFolderExists(n,s))){if(!(yield this.createFolder(n,s)))return!1}const a=r.join(this.storagePath,i),d=t.createReadStream(a),l=t.statSync(a),c=r.basename(i),h=yield e({method:"put",url:"https://api.pcloud.com/uploadfile",params:{access_token:s,path:`/${n}`,renew:1,filename:c},data:d,headers:{"Content-Length":l.size,"Content-Type":"application/octet-stream"},maxContentLength:1/0,maxBodyLength:1/0});return 0===h.data.result||(console.error("Error uploading file:",h.data),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{const s=yield this.refreshToken(),n=yield e.get("https://api.pcloud.com/getfilelink",{params:{access_token:s,path:`/${i}`}});if(0!==n.data.result)return console.error("Error getting file link:",n.data),!1;const a=r.join(this.storagePath,o),d=t.createWriteStream(a),l=`https://${n.data.hosts[0]}${n.data.path}`,c=yield e({method:"get",url:l,responseType:"stream",maxContentLength:1/0,maxBodyLength:1/0});return new Promise((e=>{c.data.pipe(d),d.on("finish",(()=>{e(!0)})),d.on("error",(t=>{console.error("Error writing file:",t),e(!1)}))}))}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}class G{constructor(e){this.username=e.username,this.password=e.password,this.url=e.url,this.refreshTokenPromise=null,this.taskQueue=new T(3)}retryOperation(e,t=3){return v(this,void 0,void 0,(function*(){let r=0;for(;;){const i=yield e();if(i)return i;if(r>=t)return this.taskQueue.hasFailedTasks=!0,this.taskQueue.clearQueue(),i;r++;const o=1e3*Math.pow(2,r);console.info(`Retry attempt ${r} after ${o}ms`),yield new Promise((e=>setTimeout(e,o)))}}))}listFiles(t){return v(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=>e.name))||[]}catch(e){return console.error("Error listing files:",e),[]}}))}deleteFile(e){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){return yield this.deleteFileWithoutQueue(e)}))))))}))}deleteFileWithoutQueue(t){return v(this,void 0,void 0,(function*(){try{return(yield e.delete(`${this.url}/delete`,{params:{dir:t.split("/").slice(0,-1).join("/")||"",filename:t.split("/").pop()},auth:{username:this.username,password:this.password}})).data.success}catch(e){return console.error("Error deleting file:",e),!1}}))}}const Z=i(o.pipeline);class ee extends G{constructor(e,t){super(e),this.storagePath=t}getAuthHeader(){return`Basic ${btoa(`${this.username}:${this.password}`)}`}uploadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{o.split("/").pop();const s=o.substring(0,o.lastIndexOf("/"))||"",n=t.createReadStream(r.join(this.storagePath,i)),a=new f;a.append("file",n);const d=yield e.post(`${this.url}/upload?dir=${encodeURIComponent(s)}`,a,{headers:Object.assign(Object.assign({},a.getHeaders()),{Authorization:this.getAuthHeader()}),maxContentLength:1/0,maxBodyLength:1/0});return!(d.status>=300)||(console.error("Error occurred during file upload:",d),!1)}catch(e){return console.error("Error uploading file:",e),!1}}))))))}))}downloadFile(i,o){return v(this,void 0,void 0,(function*(){return this.taskQueue.addTask((()=>this.retryOperation((()=>v(this,void 0,void 0,(function*(){try{const s=i.split("/").pop()||"",n=i.substring(0,i.lastIndexOf("/"))||"",a=t.createWriteStream(r.join(this.storagePath,o)),d=yield e({url:`${this.url}/download`,method:"GET",params:{dir:n,filename:s},headers:{Authorization:this.getAuthHeader()},maxContentLength:1/0,maxBodyLength:1/0,responseType:"stream"});return d.status>=300?(console.error("Error occurred during file download:",d),a.destroy(),t.existsSync(r.join(this.storagePath,o))&&t.unlinkSync(r.join(this.storagePath,o)),!1):(yield Z(d.data,a),!0)}catch(e){return console.error("Error occurred during file download:",e),!1}}))))))}))}}const te=["book","config","cover","font"];class re{constructor(e,t,r,i){this.type=e,this.storagePath=r,this.remote="dropbox"===e?new P(t,r,i):"microsoft"===e?new $(t,r,i):"google"===e?new B(t,r,i):"s3compatible"===e?new z(t,r):"webdav"===e?new N(t,r):"docker"===e?new ee(t,r):"ftp"===e?new I(t,r):"sftp"===e?new W(t,r):"boxnet"===e?new q(t,r,i):"mega"===e?new U(t,r):"adrive"===e?new V(t,r,i):"pcloud"===e?new Y(t,r,i):new D}downloadFile(e,i,o){return v(this,void 0,void 0,(function*(){if(t.existsSync(r.join(this.storagePath+"/"+o))||t.mkdirSync(r.join(this.storagePath+"/"+o)),"cover"!==o){if(!(yield this.listFiles(o)).find((t=>e.indexOf(t)>-1)))return!1}return yield this.remote.downloadFile(o+"/"+e,o+"/"+i)}))}uploadFile(e,t,r){return v(this,void 0,void 0,(function*(){return yield this.remote.uploadFile(r+"/"+e,r+"/"+t)}))}deleteFile(e,t){return v(this,void 0,void 0,(function*(){return!!(yield this.listFiles(t)).find((t=>e.indexOf(t)>-1))&&(yield this.remote.deleteFile(t+"/"+e))}))}isExist(e,t){return v(this,void 0,void 0,(function*(){return(yield this.listFiles(t)).find((t=>-1!==t.indexOf(e)))}))}listFiles(e){return v(this,void 0,void 0,(function*(){return yield this.remote.listFiles(e)}))}downloadAllFiles(){return v(this,void 0,void 0,(function*(){for(let e of te){let t=yield this.listFiles(e);for(let r of t)yield this.downloadFile(r,r,e)}}))}authToken(e){return v(this,void 0,void 0,(function*(){return yield this.remote.authToken(e)}))}getAuthUrl(){return this.remote.getAuthUrl()}getStats(){return this.remote.taskQueue.getStats()}resetCounters(){this.remote.taskQueue.resetCounters()}}const ie={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 = ?"},oe={notes:"SELECT * FROM notes WHERE bookKey = ?",bookmarks:"SELECT * FROM bookmarks WHERE bookKey = ?",words:"SELECT * FROM words WHERE bookKey = ?",books:"SELECT * FROM books WHERE key = ?"},se={notes:"DELETE FROM notes WHERE bookKey = ?",bookmarks:"DELETE FROM bookmarks WHERE bookKey = ?",words:"DELETE FROM words WHERE bookKey = ?"};function ne(e){for(const t in e)e.hasOwnProperty(t)&&(e[`temp-${t}`]=e[t]);return e}const ae={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 de={sqlStatement:{createTableStatement:ne({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:ne({notes:"SELECT * FROM notes",bookmarks:"SELECT * FROM bookmarks",books:"SELECT * FROM books",plugins:"SELECT * FROM plugins",words:"SELECT * FROM words"}),saveStatement:ne({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:ne({notes:"DELETE FROM notes",bookmarks:"DELETE FROM bookmarks",books:"DELETE FROM books",plugins:"DELETE FROM plugins",words:"DELETE FROM words"}),updateStatement:ne({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:ne({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:ne({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:ne(ie),getByBookKeyStatement:ne(oe),getByBookKeysStatement:ne({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:ne(se)},jsonToSqlite:ne({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:ne(ae)};const le=b,ce=F;class he{constructor(e,t){this.TokenService=e,this.ConfigService=t,this.baseUrl="china"===t.getItem("serverRegion")?ce:le,this.refreshToken="",this.accessToken="",this.streamPromise=null}refreshUserToken(){return v(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 v(this,void 0,void 0,(function*(){return he.requestQueue||(he.requestQueue=[]),new Promise(((t,r)=>{he.requestQueue.push({config:e,resolve:t,reject:r}),he.processingQueue||this.processQueue()}))}))}processQueue(){return v(this,void 0,void 0,(function*(){if(!he.processingQueue){he.processingQueue=!0;try{for(;he.requestQueue.length>0;){const e=he.requestQueue.shift();try{let t=yield this.executeRequest(e.config);e.resolve(t)}catch(t){e.reject(t)}}}finally{he.processingQueue=!1}}}))}executeRequest(t){return v(this,void 0,void 0,(function*(){try{try{this.accessToken=(yield this.TokenService.getToken("access_token"))||""}catch(e){console.error("Error get Token:",e)}let r="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);if(t.baseURL=this.baseUrl,t.headers)t.headers.Authorization="Bearer "+this.accessToken,t.headers["X-Request-ID"]=r;else{let e=this.ConfigService.getItem("appVersion"),i=this.ConfigService.getItem("appPlatform");t.headers={Authorization:"Bearer "+this.accessToken,"X-Request-ID":r,"X-App-Version":e||"1.0.0","X-App-Platform":i||"web"}}let i=(yield e(t)).data;if(402===i.code){let r=yield this.refreshUserToken();if(200===r.code){return t.headers=t.headers||{},t.headers.Authorization="Bearer "+this.accessToken,(yield e(t)).data}return r}return 200!==i.code&&this.ConfigService.setItem("errorLog",JSON.stringify({request:t.data,url:t.url,result:i,requestID:r})),i}catch(e){return console.error("Request execution error:",e),{code:503,message:"network error",data:null}}}))}requestWithStream(e,t,r){return v(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>v(this,void 0,void 0,(function*(){try{let i="";try{i=(yield this.TokenService.getToken("access_token"))||""}catch(e){console.error("Error get Token:",e)}let o="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((s,n)=>{let a=this.ConfigService.getItem("appVersion"),d=this.ConfigService.getItem("appPlatform");const l=new r(this.baseUrl+e.url,{headers:{"Content-Type":"application/json",Authorization:"Bearer "+i,"X-Request-ID":o,"X-App-Version":a||"1.0.0","X-App-Platform":d||"web"},method:e.method,body:JSON.stringify(e.data),pollingInterval:0});l.addEventListener("open",(()=>{console.info("Connection to OpenAI established.")})),l.addEventListener("message",(e=>v(this,void 0,void 0,(function*(){if(!e.data)return;const r=JSON.parse(e.data);r.done?(l.close(),s(r)):(402===r.code&&(yield this.refreshUserToken()),t(r.data))})))),l.addEventListener("error",(e=>{if(console.info("Error:",e),!e.data)return;const t=JSON.parse(e.data);s(t),l.close()}))}))}finally{this.streamPromise=null}})))()),this.streamPromise}))}requestWithFetch(e,t){return v(this,void 0,void 0,(function*(){return this.streamPromise||(this.streamPromise=(()=>v(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 i="req-"+Date.now().toString(36)+"-"+Math.random().toString(36).substring(2,11);return new Promise(((o,s)=>v(this,void 0,void 0,(function*(){let s=this.ConfigService.getItem("appVersion"),n=this.ConfigService.getItem("appPlatform");const a=yield fetch(this.baseUrl+e.url,{method:"POST",headers:{"Content-Type":"text/event-stream",Authorization:"Bearer "+r,"X-Request-ID":i,"X-App-Version":s||"1.0.0","X-App-Platform":n||"web"},body:JSON.stringify(e.data)});if(!a.body)throw new Error("Response body is null");const d=a.body.pipeThrough(new TextDecoderStream).getReader();for(;;){const{value:e,done:r}=yield d.read();if(r){t({done:!0});break}if(e)if(e.includes('"code":400')||e.includes('"code":401')||e.includes('"code":402')){let t=JSON.parse(e);402===t.code&&(yield this.refreshUserToken()),o(t)}else e.split("\n").forEach((e=>{if(e.startsWith("data:")){const r=JSON.parse(e.substring(5));t(r.data)}}))}o({code:200,data:{done:!0}})}))))}finally{this.streamPromise=null}})))()),this.streamPromise}))}}he.processingQueue=!1,he.requestQueue=[];class ue extends he{constructor(e,t){super(e,t)}encryptToken(e){return v(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/encrypt_token",data:e};return yield this.requestWithRetry(t)}))}decryptToken(e){return v(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/decrypt_token",data:e};return yield this.requestWithRetry(t)}))}authThirdToken(e){return v(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/auth_token",data:e};return yield this.requestWithRetry(t)}))}refreshThirdToken(e){return v(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/refresh_token",data:e};return yield this.requestWithRetry(t)}))}getSyncData(){return v(this,void 0,void 0,(function*(){return yield this.requestWithRetry({method:"get",url:"/api/v1/pro/thirdparty/get_sync_data"})}))}updateSyncData(e){return v(this,void 0,void 0,(function*(){const t={method:"post",url:"/api/v1/pro/thirdparty/update_sync_data",data:e};return yield this.requestWithRetry(t)}))}}const pe=new g;class fe{static encrypt(e,t){let r="";for(let i=0;i-1&&r.splice(i,1),this.setAllListConfig(r,t)}static setListConfig(e,t){let r=this.getAllListConfig(t);const i=r.indexOf(e);i>-1?(r.splice(i,1),r.unshift(e)):r.unshift(e),this.setAllListConfig(r,t)}static setAllListConfig(e,t,r=!0){this.setItem(t,JSON.stringify(e)),r&&this.setSyncRecord({type:"config",catergory:"listConfig",name:"general",key:t},{operation:"update",time:Date.now()})}static setObjectConfig(e,t,r,i=!0){let o=this.getAllObjectConfig(r);o[e]=t,i&&this.setSyncRecord({type:"config",catergory:"objectConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllObjectConfig(o,r)}static getObjectConfig(e,t,r){return this.getAllObjectConfig(t)[e]||r}static getAllObjectConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static setAllObjectConfig(e,t){this.setItem(t,JSON.stringify(e))}static deleteObjectConfig(e,t){let r=this.getAllObjectConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"objectConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllObjectConfig(r,t)}static getAllMapConfig(e){let t=this.getItem(e);return JSON.parse(t)||{}}static getMapConfig(e,t){return this.getAllMapConfig(t)[e]||[]}static setAllMapConfig(e,t){this.setItem(t,JSON.stringify(e))}static setMapConfig(e,t,r){let i=this.getAllMapConfig(r);void 0===i[e]&&(i[e]=[]),t&&-1===i[e].indexOf(t)&&i[e].unshift(t),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(i,r)}static setOneMapConfig(e,t,r,i=!0){let o=this.getAllMapConfig(r);o[e]=t,i&&this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(o,r)}static deleteFromMapConfig(e,t,r){let i=this.getAllMapConfig(r),o=i[e].indexOf(t);i[e].splice(o,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:r,key:e},{operation:"update",time:Date.now()}),this.setAllMapConfig(i,r)}static deleteFromAllMapConfig(e,t){let r=this.getAllMapConfig(t);Object.keys(r).forEach((i=>{let o=r[i].indexOf(e);o>-1&&(r[i].splice(o,1),this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:i},{operation:"update",time:Date.now()}))})),this.setAllMapConfig(r,t)}static deleteMapConfig(e,t){let r=this.getAllMapConfig(t);delete r[e],this.setSyncRecord({type:"config",catergory:"mapConfig",name:t,key:e},{operation:"delete",time:Date.now()}),this.setAllMapConfig(r,t)}static getFromAllMapConfig(e,t){let r=this.getAllMapConfig(t),i=[];for(let t in r)r[t]&&r[t].indexOf(e)>-1&&i.push(t);return i}static getSyncRecord(e){return JSON.parse(this.getItem("syncRecord")||"{}")[e.type+"."+e.catergory+"."+e.name+"."+e.key]||{operation:"",time:0}}static getAllSyncRecord(){return JSON.parse(this.getItem("syncRecord")||"{}")}static 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 me,ve;export{ge as ConfigService,de as SqlStatement,re as SyncUtil,ue as ThirdpartyRequest,fe as TokenService};