1import{f as e,l as t,m as n,n as r,t as i}from"./D98Vi-Lq.js";import{c as a,f as o,u as s}from"./D_6tle0W.js";t(),o();var c=r,l=[`pbx`,`operator`],u=Object.freeze({pbx:`phone_system`,operator:`operator`});function d(e){return i[u[e]]}var f=Symbol(`marketing-roi-region`);function p(t){let r={};for(let i of c){let o=a(t,i);if(!o)throw Error(`roi billing: plan ${i} is missing from the catalog`);let s=o.includedMessagingAgents>0;r[i]={price:o.price,priceAnnual:o.priceAnnual,minutes:o.minutes,seats:o.includedTeammates,hasVoice:o.minutes>0,hasMessaging:s,hasTemplates:s,priceExtraMinute:o.priceExtraMinute,priceExtraSeat:o.priceExtraTeammate,canBuyPacks:e(i),modules:{pbx:n(i,u.pbx),operator:n(i,u.operator)}}}return r}var m=new Map;function h(e){let t=m.get(e);return t||(t=p(e),m.set(e,t)),t}function g(e,t){return h(e)[t]}h(`eu`);var _=e=>e.map(e=>({size:e.size,total:e.size*e.pricePerUnit,pricePerUnit:e.pricePerUnit})),v=new Map;function y(e){let t=v.get(e);return t||(t={minutes:_(s(e).minuteBoostPacks)},v.set(e,t)),t}y(`eu`).minutes;var b=e=>Math.round(e*100)/100,x=(e,t,n)=>Math.min(Math.max(e,t),n),S=Object.freeze({region:`eu`,cadence:`month`,optimizeTopUps:!0,modules:Object.freeze({pbx:!1,operator:!1})});function C(e={}){return{region:e.region??S.region,cadence:e.cadence??S.cadence,optimizeTopUps:e.optimizeTopUps??S.optimizeTopUps,modules:{pbx:e.modules?.pbx??S.modules.pbx,operator:e.modules?.operator??S.modules.operator}}}var w=(e,t,n,r)=>{let i=new Map,a=e,o=0,s=0;for(let e=0;e<12;e++){let e=null,r=0;for(let i of n){let n=Math.min(a,i.size)*t-i.total;n>r&&(r=n,e=i)}if(!e)break;i.set(e.size,(i.get(e.size)??0)+1),a=Math.max(0,a-e.size),o+=e.total,s+=r}return i.size?{type:r,packs:[...i.entries()].map(([e,t])=>({size:e,quantity:t})),cost:b(o),covered:e-a,savings:b(s)}:null},T=(e,t,n={})=>{let r=C(n),i=h(r.region)[e],a=t,o=[],s=[],c=[],u=[];!i.hasVoice&&a.voiceMinutes>0&&u.push(`voiceMinutes`),!i.hasMessaging&&a.outboundMessages>0&&u.push(`outboundMessages`),!i.hasTemplates&&a.templates>0&&u.push(`templates`);let d=(e,t,n,i,a)=>{let c=Math.max(0,t-n),l=0;if(c>0&&a?.length&&r.optimizeTopUps){let e=w(c,i,a,`minutes`);e&&(s.push(e),l=e.covered)}o.push({key:e,used:t,included:n,rate:i,covered:l,amount:b((c-l)*i),payPerUse:!1})};i.hasVoice&&a.voiceMinutes>0&&d(`voiceMinutes`,a.voiceMinutes,i.minutes,i.priceExtraMinute,i.canBuyPacks?y(r.region).minutes:void 0),d(`teamMembers`,x(a.teamMembers,1,999),i.seats,i.priceExtraSeat);let f=i.hasMessaging&&(a.outboundMessages>0||a.templates>0);for(let e of l)r.modules[e]&&(i.modules[e]?c.push({key:e,amount:0,included:!0}):u.push(e));let p=r.cadence===`year`?i.priceAnnual:i.price,m=e=>e.reduce((e,t)=>e+t,0),g=b(p+m(o.map(e=>e.amount))+m(s.map(e=>e.cost)));return{base:p,cadence:r.cadence,lines:o,packGroups:s,modules:c,messagesUnlimited:f,unsupported:u,total:g}},E=(e,t={})=>{let n=C(t),r={};for(let t of c)r[t]=T(t,e,n);return r},D=(e,t,n={})=>{let r=C(n),i=h(r.region)[e];return(t.voiceMinutes===0||i.hasVoice)&&(t.outboundMessages===0||i.hasMessaging)&&(t.templates===0||i.hasTemplates)&&l.every(e=>!r.modules[e]||i.modules[e])},O=(e,t,n={})=>{let r=c.filter(e=>D(e,t,n));return r.length?r.reduce((t,n)=>e[n].total<e[t].total?n:t):`studio`};function k(e){let t=a(e,`starter-2026`)?.price,n=a(`eu`,`starter-2026`)?.price;if(!t||!n)return 1;let r=t/n;if(r<=1.5)return 1;let i=10**Math.floor(Math.log10(r));return[1,2,5,10].map(e=>e*i).reduce((e,t)=>Math.abs(Math.log(r/t))<Math.abs(Math.log(r/e))?t:e)}export{O as a,g as c,E as i,l as n,d as o,c as r,k as s,f as t};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.