class Logger{logCount=0;hasLoggedMaxLogsReached=!1;constructor(e,t,r,o,s=1,a=50){this.websiteID=e,this.orgID=t,this.backendError=r,this.traceID=o,this.shouldLog=this.getTrueByProbability(s),this.maxLogs=a}async log(e,t={},r={}){if(this.shouldLog)return this.logCount>this.maxLogs?this.logMaxLogsReached():(this.logCount++,fetch(`https://api.btloader.com/log?tid=${this.traceID}&upapi=true`,{method:"POST",body:this.encode({event:e,severity:r.severity||1,orgID:this.orgID,websiteID:this.websiteID,meta:{backendError:this.backendError,...t}})}))}getTrueByProbability(e){return Math.floor(Math.random()*Math.floor(100)){let{origin:t,data:r}=e;if(t===window.location.origin||"object"!=typeof r||null===r||"string"!=typeof r.method)return;if(logger.log("trustedIframe.received_message.valid",{origin:t,data:r}),backendError){let o={request:r,error:backendError};window.parent.postMessage(o,t),logger.log("trustedIframe.posted_message.err.backend",{message:o,origin:t});return}let s="function"==typeof window.sendExtCommand;if(!s){logger.log("trustedIframe.is_command_available_loop.start",{isSendCommandAvailable:s});let a=()=>new Promise(e=>{let t=0,r=setInterval(()=>{("function"==typeof window.sendExtCommand||t++>=20)&&(clearInterval(r),logger.log("trustedIframe.is_command_available_loop.end",{isSendCommandAvailable:"function"==typeof window.sendExtCommand,attempts:t}),e("function"==typeof window.sendExtCommand))},50)});s=await a()}if(!s){let n={request:r,error:"sendExtCommand is not defined"};window.parent.postMessage(n,t),logger.log("trustedIframe.posted_message.err.command_not_defined",{message:n,origin:t});return}try{let g=await window.sendExtCommand(r),d={request:r,response:g};window.parent.postMessage(d,t),logger.log("trustedIframe.posted_message.success",{message:d,origin:t})}catch(i){let l={request:r,error:i?.message||"Unknown error"};window.parent.postMessage(l,t),logger.log("trustedIframe.posted_message.err.unknown",{message:l,origin:t})}});