\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"]"));function X(e){for(var _=0,t=0;t')}(t,e.size,e.color);return $[e.name]=a,S(k({},e),{bricks:t,bricksCount:r,icon:a,color:e.color||"#000000",svg:N[X(e.name)%N.length]})}).filter(function(e){return!e.name.startsWith("icon:")}).map(function(e,_){return S(k({},e),{sortKey:(Math.random()+3)/3.5*e.bricksCount})}),e_=Z.map(function(e){return S(k({},e),{icon:$["icon:"+e.id]})}),et={sound:{default:!0,name:A("main_menu.sounds"),help:A("main_menu.sounds_help")},"mobile-mode":{default:window.innerHeight>window.innerWidth,name:A("main_menu.mobile"),help:A("main_menu.mobile_help")},basic:{default:!1,name:A("main_menu.basic"),help:A("main_menu.basic_help")},colorful_coins:{default:!1,name:A("main_menu.colorful_coins"),help:A("main_menu.colorful_coins_help")},extra_bright:{default:!0,name:A("main_menu.extra_bright"),help:A("main_menu.extra_bright_help")},contrast:{default:!1,name:A("main_menu.contrast"),help:A("main_menu.contrast_help")},show_fps:{default:!1,name:A("main_menu.show_fps"),help:A("main_menu.show_fps_help")},show_stats:{default:!1,name:A("main_menu.show_stats"),help:A("main_menu.show_stats_help")},pointerLock:{default:!1,name:A("main_menu.pointer_lock"),help:A("main_menu.pointer_lock_help")},easy:{default:!1,name:A("main_menu.kid"),help:A("main_menu.kid_help")},record:{default:!1,name:A("main_menu.record"),help:A("main_menu.record_help")},fullscreen:{default:!1,name:A("main_menu.fullscreen"),help:A("main_menu.fullscreen_help")},donation_reminder:{default:D()>5,name:A("main_menu.donation_reminder"),help:A("main_menu.donation_reminder_help")},red_miss:{default:!0,name:A("main_menu.red_miss"),help:A("main_menu.red_miss_help")},comboIncreaseTexts:{default:!0,name:A("main_menu.comboIncreaseTexts"),help:A("main_menu.comboIncreaseTexts_help")}};function er(e){var _;return R("breakout-settings-enable-"+e,null===(_=et[e])||void 0===_?void 0:_.default)}function ea(e){L("breakout-settings-enable-"+e,!er(e))}var en=Date.now(),el={wallBeep:function(e,_,t){er("sound")&&eo(800,_,e)},comboIncreaseMaybe:function(e,_,t){if(er("sound")){var r=0;!isNaN(eu)&&(eut&&(r=-1)),ep(r,_,e),eu=t}},comboDecrease:function(e,_,t){er("sound")&&ep(-1,_,e)},coinBounce:function(e,_,t){er("sound")&&eo(1200,_,e,.1,"triangle")},explode:function(e,_,t){er("sound")&&function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:.5,_=es();if(_){var t=_.createBufferSource();t.buffer=ei(_);var r=_.createGain();t.connect(r);var a=_.createBiquadFilter();a.type="lowpass",a.frequency.setValueAtTime(1e3,_.currentTime),r.connect(a);var l=_.createStereoPanner();l.pan.setValueAtTime(2*e-1,_.currentTime),a.connect(l),l.connect(_.destination),l.connect(n),r.gain.setValueAtTime(1,_.currentTime),r.gain.exponentialRampToValueAtTime(.01,_.currentTime+1),a.frequency.exponentialRampToValueAtTime(60,_.currentTime+1),t.start(_.currentTime),t.stop(_.currentTime+1)}}(_)},lifeLost:function(e,_,t){er("sound")&&function(e){var _=es();if(_){var t=[ed(_,3e3,"square"),ed(_,4500,"square"),ed(_,6e3,"square")],r=_.createGain(),a=_.createBufferSource();a.buffer=ei(_),t.forEach(function(e){return e.connect(r)}),a.connect(r),r.gain.setValueAtTime(.2,_.currentTime),t.forEach(function(e){return e.start()}),a.start(),t.forEach(function(e){return e.stop(_.currentTime+.2)}),a.stop(_.currentTime+.2),r.gain.exponentialRampToValueAtTime(.001,_.currentTime+.2);var l=_.createStereoPanner();l.pan.setValueAtTime(2*e-1,_.currentTime),r.connect(l),l.connect(_.destination),l.connect(n),r.connect(l)}}(_)},coinCatch:function(e,_,t){er("sound")&&eo(900,_,e,.1,"triangle")},colorChange:function(e,_,t){eo(400,_,e,.5,"sine"),eo(800,_,.5*e,.2,"square")}};function es(){if(!a){if(!er("sound"))return null;n=(a=new(window.AudioContext||window.webkitAudioContext)).createMediaStreamDestination()}return a}function eo(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:800,_=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.5,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.1,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"sine",l=es();if(l){var s=ed(l,e,a),o=l.createGain();s.connect(o);var i=l.createStereoPanner();i.pan.setValueAtTime(2*_-1,l.currentTime),o.connect(i),i.connect(l.destination),i.connect(n),o.gain.setValueAtTime(.8*t,l.currentTime),o.gain.exponentialRampToValueAtTime(.001,l.currentTime+r),s.start(l.currentTime),s.stop(l.currentTime+r)}}function ei(e){if(!l)for(var _=2*e.sampleRate,t=(l=e.createBuffer(1,_,e.sampleRate)).getChannelData(0),r=0;r<_;r++)t[r]=2*Math.random()-1;return l}var eu=NaN,ec=6;function ep(e,_,t){(ec+=e)>11&&(ec=0),ec<0&&(ec=11);var r=function(e){var r=392*Math.pow(1.05945594920268,e),a=Math.abs(e-5.5),n=Math.max(0,t*(1-a/16.5));return eo(r,_,n),r.toFixed(2)+" at "+Math.floor(100*n)+"% diff "+a};r(12+ec),r(ec),r(-12+ec)}function ed(e,_,t){var r=e.createOscillator();return r.type=t,r.frequency.setValueAtTime(_,e.currentTime),r}function em(e){var _=0,t=new Set,r=0;return e.bricks.forEach(function(e){if(e){if("black"===e){r++;return}t.add(e),_++}}),A("unlocks.level_description",{size:e.size,bricks:_,colors:t.size,bombs:r})}function eb(e){var _;return e&&(null===(_=Object.values(e))||void 0===_?void 0:_.reduce(function(e,_){return e+_},0))||0}var eg=function(e){var _={};return e.forEach(function(e){return _[e.id]=0}),_};function eh(e,_){return e.offsetX+(_%e.gridSize+.5)*e.brickWidth}function ev(e,_){return(Math.floor(_/e.gridSize)+.5)*e.brickWidth}function ef(e,_,t){return _<0||t<0||_>=e.gridSize||t>=e.gridSize?-1:_*e.gridSize+t}function ey(e){return e_.filter(function(_){return e.totalScoreAtRunStart>=_.threshold}).filter(function(_){return!(null==_?void 0:_.requires)||e.perks[null==_?void 0:_.requires]})}function ek(e){return e.creative?1:7+e.perks.extra_levels}function eW(e){var _=ey(e).filter(function(_){return e.perks[_.id]}).map(function(_){for(var t=Math.max(0,_.max+e.perks.limitless),r=[],a=0;a'):a'):r.push('');var n=e.perks[_.id]&&1||!t&&2||3;return{state:n,html:'\n \n ').concat(_.icon,"\n
\n ").concat(_.name,"\n ").concat(_.help(Math.max(1,e.perks[_.id])),"\n
\n ").concat(r.reverse().join(""),"\n
\n ")}}).sort(function(e,_){return e.state-_.state}).map(function(e){return e.html});return" ".concat(A("score_panel.upgrades_picked"),"
")+_.join("")}function ew(e,_){if(!e.perks.clairvoyant||e.creative)return"";for(var t="",r=0;r').concat($[e.runLevels[r].name],"");return"".concat(A("score_panel.upcoming_levels"),"
").concat(t,"
")}function ex(e){return e.level}function eS(e){return -1!==e.bricks.indexOf(e.ballsColor)}function ez(e){if(!e.perks.reach)return -1;for(var _=e.level.size,t=-1,r=-1,a=-1,n=0;n<_;n++)for(var l=0;l<_;l++)e.bricks[l+n*_]&&(-1==t&&(t=n),r0&&E(1-_.y/e.gameZoneHeight*1.1+.1,0,1)||0}function eq(e,_){return Math.pow(e.x-_.x,2)+Math.pow(e.y-_.y,2)}function eH(e,_){return Math.sqrt(eq(e,_))}function eP(e){return!!(e.lastPuckMove&&e.perks.passive_income&&e.lastPuckMove>e.levelTime-250*e.perks.passive_income)}function eR(){try{return parseInt(localStorage.getItem("breakout-3-hs-short")||"0")}catch(e){}return 0}function eL(e,_){if(e<=10)return"";if(e<20){var t=100*e;return _.find(function(e){return e.score>=t})?"":A("unlocks.minScore",{minScore:t})}var r=["extra_levels","extra_life","one_more_choice","instant_upgrade"],a=Z.slice(0,Math.floor(e/2)).map(function(e){return e}).filter(function(e){return!r.includes(e.id)}).sort(function(_,t){return X(e+_.id)-X(e+t.id)}),n=Math.ceil(e/30),l=a.slice(0,n),s=a.slice(n,n+n),o=100*e*Math.floor(Math.pow(1.01,e));return _.find(function(e){return e.score>=o&&!l.find(function(_){var t;return!(null==e?void 0:null===(t=e.perks)||void 0===t?void 0:t[_.id])})&&!s.find(function(_){var t;return null==e?void 0:null===(t=e.perks)||void 0===t?void 0:t[_.id]})})?"":A("unlocks.minScoreWithPerks",{minScore:o,required:l.map(function(e){return e.name}).join(", "),forbidden:s.map(function(e){return e.name}).join(", ")})}var eB={};if(eB=h("kqXj6").getBundleURL("1foiJ")+"sw-b71.0055e686.js","serviceWorker"in navigator&&window.location.href.endsWith("/index.html?isPWA=true")){var eO=new URL(eB);navigator.serviceWorker.register(eO)}var f=h("5mG9B"),x=h("6QuVk"),eC=document.getElementById("game"),eT=eC.getContext("2d",{alpha:!1}),eF=document.createElement("img");eF.src="data:image/svg+xml;base64,"+btoa(''),eF.onload=function(){return te.needsRender=!0};var eA=document.createElement("img");eA.onload=function(){return te.needsRender=!0};var eE=document.createElement("canvas"),ej=document.createElement("canvas"),eD=ej.getContext("2d",{alpha:!1});function eV(e,_,t,r,a,n,l){var s=arguments.length>7&&void 0!==arguments[7]?arguments[7]:1;e.globalAlpha=s,t&&("#FF0000"==t?(e.strokeStyle="#FF0000",e.lineDashOffset=e2(_),e.lineWidth=2,e.setLineDash(e1)):(e.strokeStyle="#FFFFFF",e.lineWidth=1),e.beginPath(),e.moveTo(r,a),e.lineTo(n,l),e.stroke(),"#FF0000"==t&&(e.setLineDash(e0),e.lineWidth=1),e.globalAlpha=1)}var eZ=document.createElement("canvas"),eI="",eN={};function eX(e,_,t,r,a){var n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"",l="ball"+_+"_"+t+"_"+n,s=Math.round(t);if(!eN[l]){var o=document.createElement("canvas");o.width=s,o.height=s;var i=o.getContext("2d");i.beginPath(),i.arc(s/2,s/2,Math.round(s/2)-1,0,2*Math.PI),i.fillStyle=_,i.fill(),n&&(i.lineWidth=2,i.strokeStyle=n,i.stroke()),eN[l]=o}e.drawImage(eN[l],Math.round(r-s/2),Math.round(a-s/2))}function eY(e,_,t,r,a,n,l){var s=(Math.round(l/Math.PI*64)%32+32)%32,o="coin with halo_"+_+"_"+t+"_"+n+"_"+("#ffd300"===_?s:"whatever");if(!eN[o]){var i=document.createElement("canvas");i.width=t,i.height=t;var u=i.getContext("2d");u.beginPath(),u.arc(t/2,t/2,t/2,0,2*Math.PI),u.fillStyle=_,u.fill(),u.strokeStyle=n,"#FF0000"==n&&(u.lineWidth=2,u.setLineDash(e1)),u.stroke(),"#ffd300"===_&&(u.beginPath(),u.arc(t/2,t/2,t/2*.6,0,2*Math.PI),u.fillStyle="rgba(255,255,255,0.5)",u.fill(),u.translate(t/2,t/2),u.rotate(s/16),u.translate(-t/2,-t/2),u.globalCompositeOperation="multiply",eK(u,"$",_,t-2,t/2,t/2+1),eK(u,"$",_,t-2,t/2,t/2+1)),eN[o]=i}e.drawImage(eN[o],Math.round(r-t/2),Math.round(a-t/2))}function eU(e,_,t,r,a){var n="fuzzy-circle"+_+"_"+t,l=Math.round(3*t);if(!eN[n]){var s=document.createElement("canvas");s.width=l,s.height=l;var o=s.getContext("2d"),i=o.createRadialGradient(l/2,l/2,0,l/2,l/2,l/2);i.addColorStop(0,_),console.log(_),i.addColorStop(.3,_+"88"),i.addColorStop(.6,_+"22"),i.addColorStop(1,"transparent"),o.fillStyle=i,o.fillRect(0,0,l,l),eN[n]=s}e.drawImage(eN[n],Math.round(r-l/2),Math.round(a-l/2))}function eJ(e,_,t,r,a){var n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,l=arguments.length>6?arguments[6]:void 0,s=Math.ceil(r-e.brickWidth/2),o=Math.ceil(a-e.brickWidth/2),i=Math.ceil(r+e.brickWidth/2)-1,u=Math.ceil(a+e.brickWidth/2)-1,c=i-s,p=u-o,d=-1==n&&"#231f20"==t&&"#000000"==e.level.color&&"#FFFFFF",m="brick"+t+"__"+c+"_"+p+"_"+n+"_"+l+"_"+d;if(!eN[m]){var b,g,h,v,f,y,k=document.createElement("canvas");k.width=c,k.height=p;var W=k.getContext("2d");W.fillStyle=t,W.setLineDash(-1!==n?e1:e0),W.lineDashOffset=n,W.strokeStyle=-1!==n&&"#FF0000"||d||t,W.lineJoin="round",W.lineWidth=d?1:4,b=W,g=2,h=2,v=c-4,f=p-4,y=2,b.beginPath(),b.moveTo(4,2),b.lineTo(g+v-y,h),b.quadraticCurveTo(g+v,h,g+v,h+y),b.lineTo(g+v,h+f-y),b.quadraticCurveTo(g+v,h+f,g+v-y,h+f),b.lineTo(g+y,h+f),b.quadraticCurveTo(g,h+f,g,h+f-y),b.lineTo(g,h+y),b.quadraticCurveTo(g,h,g+y,h),b.closePath(),l||W.fill(),W.stroke(),eN[m]=k}_.drawImage(eN[m],s,o,c,p)}function eK(e,_,t,r,a,n){var l=arguments.length>6&&void 0!==arguments[6]&&arguments[6],s="text"+_+"_"+t+"_"+r+"_"+l;if(!eN[s]){var o=document.createElement("canvas");o.width=r*_.length,o.height=r;var i=o.getContext("2d");i.fillStyle=t,i.textAlign=l?"left":"center",i.textBaseline="middle",i.font=r+"px monospace",i.fillText(_,l?0:o.width/2,o.height/2,o.width),eN[s]=o}e.drawImage(eN[s],l?a:Math.round(a-eN[s].width/2),Math.round(n-eN[s].height/2))}var eQ=document.getElementById("score"),e$=document.getElementById("menuLabel"),e0=[],e1=[5,5];function e2(e){return er("basic")?0:Math.floor(e.levelTime%500/500*10)%10}function e4(e,_){return e.perks.metamorphosis||er("colorful_coins")?_.color:"#ffd300"}var f=h("5mG9B"),x=h("6QuVk");function e3(){er("record")&&(null==s?void 0:s.state)==="recording"&&(null==s||s.pause())}function e5(){er("record")&&s&&(null==s||s.stop(),s=null)}var f=h("5mG9B"),x=h("6QuVk"),e6=0,e7=null,e8=document.getElementById("popup"),e9=document.getElementById("close-modale");e9.addEventListener("click",function(e){e.preventDefault(),e7&&e7()}),e9.title=A("play.close_modale_window_tooltip");var _e=-1;function __(e){return _t.apply(this,arguments)}function _t(){return(_t=(0,f._)(function(e){var _,t,r,a,n,l,s;return(0,x.__generator)(this,function(o){return _=e.title,r=void 0===(t=e.content)?[]:t,n=void 0===(a=e.allowClose)||a,s=void 0===(l=e.className)?"":l,_r(1),[2,new Promise(function(e){var t,a=function(_){o||(o=!0,Array.prototype.forEach.call(l.querySelectorAll("button:not([disabled])"),function(e){return e.disabled=!0}),document.body.style.minHeight=document.body.scrollHeight+"px",setTimeout(function(){return document.body.style.minHeight=""},0),l.remove(),e(_))};e8.className=s,e9.style.display=n?"":"none";var l=document.createElement("div"),o=!1;if(e7=n?function(){a(void 0)}:null,_){var i=document.createElement("h2");i.innerHTML=_,l.appendChild(i)}null==r||r.filter(function(e){return e}).forEach(function(e,_){if(e){if("string"==typeof e){var t,r,n=document.createElement("div");n.innerHTML=e,l.appendChild(n);return}(null===(t=l.lastChild)||void 0===t?void 0:t.nodeName)=="SECTION"?r=l.lastChild:((r=document.createElement("section")).className="actions",l.appendChild(r));var s=e.text,o=e.value,i=e.help,u=e.disabled,c=e.className,p=e.icon,d=e.tooltip,m=document.createElement("button");m.innerHTML="\n".concat(void 0===p?"":p,"\n\n ").concat(s,"\n ").concat(i||"","\n
"),d&&m.setAttribute("data-tooltip",d),u?m.setAttribute("disabled","disabled"):m.addEventListener("click",function(e){e.preventDefault(),e.stopPropagation(),a(o),_e=_}),m.className=(void 0===c?"":c)+(_e===_?" needs-focus":""),r.appendChild(m)}}),e8.appendChild(l),null===(t=e8.querySelector("section.actions > button.needs-focus"))||void 0===t||t.focus(),_e=-1}).then(function(e){return _r(-1),e7=null,e},function(){e7=null,_r(-1)})]})})).apply(this,arguments)}function _r(e){(e6+=e)>1&&alert("Two alerts where opened at once"),document.body.classList[e6?"add":"remove"]("has-alert-open")}function _a(e,_){if(te.running&&!te.isGameOver){te.isGameOver=!0,_j(!0),e5(),function(e){try{localStorage.setItem("breakout_71_total_play_time",JSON.stringify(JSON.parse(localStorage.getItem("breakout_71_total_play_time")||"0")+e))}catch(e){}}(te.runStatistics.runTime),te.runStatistics.max_level=te.currentLevel+1;var t=B(),r=t-te.score,a=Z.filter(function(e){return e.threshold>r&&e.threshold".concat(1===a.length?A("gameOver.unlocked_perk"):A("gameOver.unlocked_perk_plural",{count:a.length}),"\n \n ").concat(a.map(function(e){return' \n \n '.concat($["icon:"+e.id],"\n
\n ").concat(e.name,"\n ").concat(e.help(1),"\n
\n
\n ")}).join("\n")," \n "):"";te.combo=1,__({allowClose:!0,title:e,content:[_n(te),"\n ".concat(_,"
\n ").concat(A("gameOver.cumulative_total",{startTs:r,endTs:t}),"
\n "),{icon:$["icon:new_run"],value:null,text:A("gameOver.restart"),help:""},'',n,function(e){if(e.creative)return"";var _="",t="";try{var r=ee.map(function(e,_){return{li:_,l:e,r:eL(_,_l)}}).filter(function(e){return e.r});_l.push(S(k({},e.runStatistics),{perks:e.perks,appVersion:Q}));var a=r.filter(function(e){var _=e.li;return!eL(_,_l)});a.length&&(_="\n\n ".concat(1===a.length?A("unlocks.just_unlocked"):A("unlocks.just_unlocked_plural",{count:a.length}),"
\n \n ").concat(a.map(function(e){var _=e.l;return e.r,' \n \n '.concat($[_.name],"\n
\n ").concat(_.name,"\n ").concat(em(_),"\n
\n
\n ")}).join("\n")," \n ")),localStorage.setItem("breakout_71_runs_history",JSON.stringify(_l,null,2));var n=function(e,_,t){var r,a,n,l=_l.map(function(e){return _(e)||0}),s=(r=Math).min.apply(r,w(l)),o=(a=Math).max.apply(a,w(l));if(s===o)return"";o-s<10&&(s=Math.max(0,o-10),o=Math.max(o,s+10));var i=Math.min(l.length,10);if(i<3)return"";for(var u=[],c=[],p=0;p1?"s":""," between ").concat(Math.floor(s+_*d)," and ").concat(Math.floor(s+(_+1)*d)).concat(t,'"\n >').concat(!e&&" "||_==h&&g+t||Math.round(c[_]/e)+t,"")}).join("");return''.concat(e," : ").concat(g).concat(t,'
\n ').concat(v,"
\n ")};t+=n(A("gameOver.stats.total_score"),function(e){return e.score},""),t+=n(A("gameOver.stats.catch_rate"),function(e){return Math.round(e.score/e.coins_spawned*100)},"%"),t+=n(A("gameOver.stats.bricks_broken"),function(e){return e.bricks_broken},""),t+=n(A("gameOver.stats.bricks_per_minute"),function(e){return Math.round(e.bricks_broken/e.runTime*6e4)},""),t+=n(A("gameOver.stats.hit_rate"),function(e){return Math.round((1-e.misses/e.puck_bounces)*100)},"%"),t+=n(A("gameOver.stats.duration_per_level"),function(e){return Math.round(e.runTime/1e3/e.levelsPlayed)},"s"),t+=n(A("gameOver.stats.level_reached"),function(e){return e.levelsPlayed},""),t+=n(A("gameOver.stats.upgrades_applied"),function(e){return e.upgrades_picked},""),t+=n(A("gameOver.stats.balls_lost"),function(e){return e.balls_lost},""),t+=n(A("gameOver.stats.combo_avg"),function(e){return Math.round(e.coins_spawned/e.bricks_broken)},""),t+=n(A("gameOver.stats.combo_max"),function(e){return e.max_combo},""),(t+=n(A("gameOver.stats.loops"),function(e){return e.loops},""))&&(t="".concat(A("gameOver.stats.intro",{count:_l.length-1}),"
")+t)}catch(e){console.warn(e)}return t+_}(te)]}).then(function(){return t_({levelToAvoid:ex(te).name})})}}function _n(e){return e.creative?""+A("gameOver.creative")+"
":""}var _l=[];try{_l=JSON.parse(localStorage.getItem("breakout_71_runs_history")||"[]")}catch(e){}function _s(e,_){e.puckPosition=_,e.needsRender=!0}function _o(e){_i(e);var _,t=1+((null===(_=e.perks)||void 0===_?void 0:_.multiball)||0),r=e.puckWidth/(t+1);e.balls=[],e.ballsColor="#FFFFFF",(e.perks.picky_eater||e.perks.pierce_color)&&(e.ballsColor=function(e){var _,t,r={};e.forEach(function(e){return r[e]=(r[e]||0)+1});var a=(t=Math).max.apply(t,w(Object.keys(r).map(function(e){return r[e]})));return(_=Object.keys(r).filter(function(e){return r[e]==a}))[Math.floor(_.length*Math.random())]}(e.bricks.filter(function(e){return e}))||"#FFFFFF");for(var a=0;a.5?e.baseSpeed:-e.baseSpeed);e.balls.push({x:n,previousX:n,y:e.gameZoneHeight-1.5*e.ballSize,previousY:e.gameZoneHeight-1.5*e.ballSize,vx:l,previousVX:l,vy:-e.baseSpeed,previousVY:-e.baseSpeed,piercePoints:3*e.perks.pierce,hitSinceBounce:0,brokenSinceBounce:0,sapperUses:0})}e.ballStickToPuck=!0}function _i(e){e.baseSpeed=Math.max(3,e.gameZoneWidth/12/10+e.currentLevel/3+e.levelTime/3e4-2*e.perks.slow_down),e.puckWidth=Math.max(e.ballSize,e.gameZoneWidth/12*Math.min(12,3-e.perks.smaller_puck+e.perks.bigger_puck));var _=e.levelTime?e.perks.corner_shot:0,t=e.offsetXRoundedDown+e.puckWidth/2-e.puckWidth*_,r=e.offsetXRoundedDown+e.gameZoneWidthRoundedUp-e.puckWidth/2+e.puckWidth*_;e.puckPosition=E(e.puckPosition,t,r),e.ballStickToPuck&&function(e){var _=e.balls.length,t=e.puckWidth/(_+1);e.balls.forEach(function(_,r){var a=e.puckPosition-e.puckWidth/2+t*(r+1);_.x=a,_.previousX=a,_.y=e.gameZoneHeight-1.5*e.ballSize,_.previousY=_.y,_.hitSinceBounce=0,_.brokenSinceBounce=0,_.piercePoints=3*e.perks.pierce})}(e),Math.abs(e.lastPuckPosition-e.puckPosition)>1&&e.running&&(e.lastPuckMove=e.levelTime),e.lastPuckPosition=e.puckPosition}function _u(e){return 1+3*e.perks.base_combo+5*e.perks.smaller_puck}function _c(e,_,t){var r=e.combo;e.combo=_u(e),r>e.combo&&e.perks.soft_reset&&(e.combo+=Math.floor((r-e.combo)*j(e.perks.soft_reset)));var a=Math.max(0,r-e.combo);if(a){for(var n=0;nC()&&(_=1);for(var n=0;n<_;n++)_z(e,t+(Math.random()-.5)*e.brickWidth/2,r+(Math.random()-.5)*e.brickWidth/2,(Math.random()-.5)*30,(Math.random()-.5)*30,a,!1)}}function _b(e,_,t,r,a){var n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,l=1+e.perks.bigger_explosions+Math.max(0,e.perks.implosions-1)+n;if(_v(e,"explode",a.x,1),-1!==_)for(var s=_%e.gridSize,o=Math.floor(_/e.gridSize),i=-l;i<=l;i++)for(var u=-l;u<=l;u++){var c=ef(e,o+u,s+i);e.bricks[c]&&-1!==c&&(e.brickHP[c]--,e.brickHP[c]<=0&&_g(e,c,a,!0))}var p=e.perks.implosions?-1:1;_R(e.coins,function(_){var a=_.x-t,n=_.y-r,s=Math.max(e.brickWidth,Math.abs(a)+Math.abs(n));_.vx+=a/s*10*l/_.weight*p,_.vy+=n/s*10*l/_.weight*p}),e.lastExplosion=Date.now(),e.perks.implosions?function(e,_,t,r,a){if(!er("basic")){_H(e.particles)>C()&&(_=1);for(var n=0;n<_;n++){var l=(Math.random()-.5)*e.brickWidth/2,s=(Math.random()-.5)*e.brickWidth/2;_z(e,t-10*l,r-10*s,l,s,a,!1)}}}(e,7*l,t,r,"#FFFFFF"):_m(e,7*l,t,r,"#FFFFFF"),e.runStatistics.bricks_broken++,e.perks.zen&&_c(e,t,r)}function _g(e,_,t,r){var a=e.bricks[_];if(a){var n=e.perks.picky_eater&&eS(e),l=ez(e);if(e.lastBrickBroken=e.levelTime,"black"===a){var s=eh(e,_),o=ev(e,_);_k(e,_,""),_b(e,_,s,o,t,0)}else if(a){var i=eh(e,_),u=ev(e,_);_k(e,_,"");var c=e.combo;e.perks.sturdy_bricks&&(c+=Math.ceil((2+e.perks.sturdy_bricks)/2*c)),e.levelSpawnedCoins+=c,e.runStatistics.coins_spawned+=c,e.runStatistics.bricks_broken++;for(var p=O()*(er("basic")?.5:1),d=Math.max(1,Math.ceil(c/(_H(e.coins)>O()?1:Math.floor(p-_H(e.coins))/3)));c>0;){var m=Math.min(d,c);(m<0||isNaN(m))&&console.error({points:m}),c-=m;var b=i+(Math.random()-.5)*(e.brickWidth-e.coinSize),g=u+(Math.random()-.5)*(e.brickWidth-e.coinSize);!function(e,_,t,r,a){var n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"#ffd300",l=arguments.length>6&&void 0!==arguments[6]?arguments[6]:1,s=.8+.2*Math.random()+Math.min(2,.01*l);s*=5/(5+e.perks.etherealcoins),_M(e.coins,function(o){o.x=_,o.y=t,o.collidedLastFrame=!0,o.size=e.coinSize,o.previousX=_,o.previousY=t,o.vx=r,o.vy=a,o.color=n,o.a=Math.random()*Math.PI*2,o.sa=Math.random()-.5,o.points=l,o.weight=s,o.metamorphosisPoints=e.perks.metamorphosis})}(e,b,g,t.previousVX*(.5+Math.random()),t.previousVY*(.5+Math.random()),a,m)}if(_p(e,e.perks.streak_shots+e.perks.compound_interest+e.perks.left_is_lava+e.perks.right_is_lava+e.perks.top_is_lava+e.perks.picky_eater+3*e.perks.asceticism+e.perks.zen+e.perks.passive_income+e.perks.addiction+e.perks.unbounded,t.x,t.y),e.perks.side_kick&&(t.previousVX>0?_p(e,e.perks.side_kick,t.x,t.y):_d(e,2*e.perks.side_kick,t.x,t.y)),-1!==l){if(Math.floor(_/e.level.size)===l)_c(e,i,u);else for(var h=0;h=_)return[2,console.warn("Extra upgrade request ignored ")];if(e.upgradesOfferedFor=_,_j(!1),e5(),l=e.score-e.levelStartScore,(-1===(s=e.runStatistics).best_level_score||s.best_level_scorel)&&(s.worst_level_score=l),!(_>0))return[3,2];return[4,function(e){return _V.apply(this,arguments)}(e)];case 1:n.sent(),n.label=2;case 2:for(e.currentLevel=_,e.level=e.runLevels[_],e.levelTime=0,e.winAt=0,e.levelWallBounces=0,e.lastPuckMove=0,e.autoCleanUses=0,e.lastTickDown=e.levelTime,e.levelStartScore=e.score,e.levelSpawnedCoins=0,e.levelLostCoins=0,e.levelMisses=0,e.lastBrickBroken=0,e.runStatistics.levelsPlayed++,t=e.combo,e.combo=_u(e),e.perks.shunt&&(e.combo+=Math.round(Math.max(0,(t-e.combo)*j(e.perks.shunt)))),e.combo+=30*e.perks.hot_start,(r=ex(e)).size!==e.gridSize&&(e.gridSize=r.size,_D()),e.levelLostCoins+=_P(e.coins),_P(e.particles),_P(e.lights),_P(e.texts),_P(e.respawns),e.bricks=[],a=0;al)){var s=(_.x-t.x)/n,o=(_.y-t.y)/n,i=-r*(l-n)/(1.2*l)/3*Math.min(500,e.levelTime)/500;a&&void 0!==t.vx&&void 0!==t.vy&&(t.vx+=s*i,t.vy+=o*i),_.vx-=s*i,_.vy-=o*i,_z(e,_.x,_.y,-(10*s)+_.vx+(Math.random()-.5)*2,-(10*o)+_.vy+(Math.random()-.5)*2,_w(),!0,e.coinSize/2,100),a&&void 0!==t.vx&&void 0!==t.vy&&_z(e,t.x,t.y,10*s+t.vx+(Math.random()-.5)*2,10*o+t.vy+(Math.random()-.5)*2,_w(),!0,e.coinSize/2,100)}}function _S(e,_,t,r){if(!_.destroyed){_.previousX=_.x,_.previousY=_.y,_.x+=_.vx*r,_.y+=_.vy*r,e.perks.wind&&(_.vx+=(e.puckPosition-(e.offsetX+e.gameZoneWidth/2))/e.gameZoneWidth*e.perks.wind*.5);var a=0,n=0;return _.xe.canvasWidth-e.offsetXRoundedDown-t&&!e.perks.unbounded&&(_.x=e.canvasWidth-e.offsetXRoundedDown-t-(_.x-(e.canvasWidth-e.offsetXRoundedDown-t)),_.vx*=-1,n=1),n+2*a}}function _z(e,_,t,r,a,n){var l=arguments.length>6&&void 0!==arguments[6]&&arguments[6],s=arguments.length>7&&void 0!==arguments[7]?arguments[7]:8,o=arguments.length>8&&void 0!==arguments[8]?arguments[8]:150;_M(e.particles,function(i){i.time=e.levelTime,i.x=_,i.y=t,i.vx=r,i.vy=a,i.color=n,i.size=s,i.duration=o,i.ethereal=l})}function _G(e,_,t,r,a){var n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:20,l=arguments.length>6&&void 0!==arguments[6]?arguments[6]:500;_M(e.texts,function(s){s.time=e.levelTime,s.x=_,s.y=t,s.color=r,s.size=n,s.duration=E(l,400,2e3),s.text=a})}function _M(e,_){for(;e.list[e.indexMin]&&!e.list[e.indexMin].destroyed&&e.indexMin1});if(_o(r),!eb(r.perks)){var a=ey(r).filter(function(e){return e.giftable}),n=er("easy")&&"slow_down"||a[Math.floor(Math.random()*a.length)].id;t[n]=1,_h(r,n)}var l=!0,s=!1,o=void 0;try{for(var i,u,c,p,d,m=e_[Symbol.iterator]();!(l=(d=m.next()).done);l=!0){var b=d.value;r.perks[b.id]&&_h(r,b.id)}}catch(e){s=!0,o=e}finally{try{l||null==m.return||m.return()}finally{if(s)throw o}}return r}var f=h("5mG9B"),x=h("6QuVk"),f=h("5mG9B"),x=h("6QuVk");function _B(){return(_B=(0,f._)(function(){var e,_,t;return(0,x.__generator)(this,function(r){switch(r.label){case 0:e=R("creativeModePerks",{}),t=["extra_levels","shunt","one_more_choice","instant_upgrade"],r.label=1;case 1:return[4,__({title:A("lab.menu_entry"),className:"actionsAsGrid",content:[A("lab.instructions"),{value:"reset",text:A("lab.reset"),disabled:!eb(e)}].concat(w(e_.filter(function(e){return!t.includes(e.id)}).map(function(_){return{icon:_.icon,text:_.name,help:(e[_.id]||0)+"/"+(_.max+(e.limitless||0)),value:_,className:e[_.id]?"sandbox":"sandbox grey-out-unless-hovered",tooltip:_.help(e[_.id]||1)}})),[A("lab.select_level")],w(ee.map(function(e,_){var t=eL(_,_l);return{icon:$[e.name],text:e.name,value:e,disabled:!!t,tooltip:t||em(e)}})))})];case 2:if(!(_=r.sent()))return[3,7];if("reset"!==_)return[3,3];return e_.forEach(function(_){e[_.id]=0}),[3,6];case 3:if(!("bricks"in _))return[3,5];return L("creativeModePerks",e),[4,_5(te)];case 4:return r.sent()&&t_({perks:e,level:_.name}),[2];case 5:if(!_)return[2];e[_.id]=((e[_.id]||0)+1)%(_.max+1+(e.limitless||0)),r.label=6;case 6:return[3,1];case 7:return[2]}})})).apply(this,arguments)}var f=h("5mG9B"),x=h("6QuVk");function _O(e){return R("start_with_"+e.id,e.giftable)}function _C(){return _T.apply(this,arguments)}function _T(){return(_T=(0,f._)(function(){var e,_,t,r,a;return(0,x.__generator)(this,function(n){switch(n.label){case 0:return e=B(),t=(_=e_.filter(function(_){return!_.requires&&!["instant_upgrade"].includes(_.id)&&_.threshold<=e})).filter(function(e){return _O(e)}),r=_.map(function(e){var _=_O(e);return{icon:e.icon,text:e.name,tooltip:e.help(1),value:e,disabled:_&&t.length<2,checked:_}}),[4,__({title:A("main_menu.starting_perks"),className:"actionsAsGrid",content:[A("main_menu.starting_perks_checked")].concat(w(r.filter(function(e){return e.checked})),[A("main_menu.starting_perks_unchecked")],w(r.filter(function(e){return!e.checked})))})];case 1:return(a=n.sent())&&(L("start_with_"+a.id,!_O(a)),_C()),[2]}})})).apply(this,arguments)}function _F(e,_){if(!localStorage.getItem(e))try{_(),console.debug("Ran migration : "+e),localStorage.setItem(e,""+Date.now())}catch(_){console.warn("Migration "+e+" failed : ",_)}}function _A(){return _E.apply(this,arguments)}function _E(){return(_E=(0,f._)(function(){var e;return(0,x.__generator)(this,function(_){switch(_.label){case 0:return[4,_2()];case 1:if(_.sent()||te.running)return[2];return te.running=!0,te.ballStickToPuck=!1,!function(e){if(er("record")&&!s){if(!u){c=(u=document.createElement("canvas")).getContext("2d",{antialias:!1,alpha:!1}),i=(o=u.captureStream(0)).getVideoTracks()[0];var _=(es(),n);_&&o.addTrack(_.stream.getAudioTracks()[0])}u.width=e.gameZoneWidthRoundedUp,u.height=e.gameZoneHeight;var t=[],r=new MediaRecorder(o,{videoBitsPerSecond:35e5});s=r,r.start(),s.pause(),r.ondataavailable=function(e){t.push(e.data)},r.onstop=(0,f._)(function(){var e,_,r,a;return(0,x.__generator)(this,function(n){switch(n.label){case 0:if((_=new Blob(t,{type:"video/webm"})).size<2e5)return[2];n.label=1;case 1:if(e=document.getElementById("level-recording-container"))return[3,3];return[4,new Promise(function(e){return setTimeout(e,200)})];case 2:return n.sent(),[3,1];case 3:var l;if((r=document.createElement("video")).autoplay=!0,r.controls=!1,r.disablePictureInPicture=!0,r.disableRemotePlayback=!0,r.width=u.width,r.height=u.height,r.loop=!0,r.muted=!0,r.playsInline=!0,r.src=URL.createObjectURL(_),e.appendChild(r),(a=document.createElement("a")).download=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"webm";return"breakout-71-capture-"+new Date().toISOString().replace(/[^0-9\-]+/gi,"-")+"."+e}("webm"),a.target="_blank",!window.location.href.endsWith("index.html?isInWebView=true"))return[3,5];return[4,(l=_,new Promise(function(e,_){var t=new FileReader;t.onload=function(){e(t.result)},t.onerror=function(e){console.error(e),_(Error("Failed to readAsDataURL of the video "))},t.readAsDataURL(l)}))];case 4:return a.href=n.sent(),[3,6];case 5:a.href=r.src,n.label=6;case 6:return a.textContent=A("main_menu.record_download",{size:(_.size/1e6).toFixed(2)}),e.appendChild(a),[2]}})})}}(te),null===(e=es())||void 0===e||e.resume(),er("record")&&(null==s?void 0:s.state)==="paused"&&s.resume(),[2]}})})).apply(this,arguments)}function _j(e){if(te.running&&!te.pauseTimeout){var _=function(){te.running=!1,setTimeout(function(){var e;te.running||null===(e=es())||void 0===e||e.suspend()},1e3),e3(),te.pauseTimeout=null,eQ.className="",te.needsRender=!0};e?(te.pauseUsesDuringRun++,te.pauseTimeout=setTimeout(_,Math.min(50*Math.max(0,te.pauseUsesDuringRun-5),500))):_(),document.exitPointerLock&&document.exitPointerLock()}}_F("migrate_high_scores",function(){var e=localStorage.getItem("breakout-3-hs");e&&(localStorage.setItem("breakout-3-hs-short",e),localStorage.removeItem("breakout-3-hs"))}),_F("recover_high_scores",function(){JSON.parse(localStorage.getItem("breakout_71_runs_history")||"[]").forEach(function(e){var _=parseInt(localStorage.getItem("breakout-3-hs-"+(e.mode||"short"))||"0");e.score>_&&localStorage.setItem("breakout-3-hs-"+(e.mode||"short"),""+e.score)})}),_F("remove_long_and_creative_mode_data",function(){var e=JSON.parse(localStorage.getItem("breakout_71_runs_history")||"[]"),_=e.filter(function(e){return!("mode"in e)||"short"===e.mode});_.length!==e.length&&localStorage.setItem("breakout_71_runs_history",JSON.stringify(_))});var _D=function(){var e=function(e){e.x=te.offsetXRoundedDown+(e.x-t)/r*te.gameZoneWidthRoundedUp,e.y=e.y/a*te.gameZoneHeight},_=function(e){e.x=te.offsetXRoundedDown+(e.x-t)/r*te.gameZoneWidthRoundedUp,e.y=e.y/a*te.gameZoneHeight,e.previousX=e.x,e.previousY=e.y},t=te.offsetXRoundedDown,r=te.gameZoneWidthRoundedUp,a=te.gameZoneHeight,n=eC.getBoundingClientRect(),l=n.width,s=n.height;te.canvasWidth=l,te.canvasHeight=s,eC.width=l,eC.height=s,eE.width=l,eE.height=s,ej.width=l/8,ej.height=s/8,te.gameZoneHeight=er("mobile-mode")?80*s/100:s;var o=Math.round(Math.min(te.canvasWidth,.73*te.gameZoneHeight));te.brickWidth=2*Math.floor(o/te.gridSize/2),te.gameZoneWidth=te.brickWidth*te.gridSize,te.offsetX=Math.floor((te.canvasWidth-te.gameZoneWidth)/2),te.offsetXRoundedDown=te.offsetX,te.offsetX.95?(t++,e.rerolls++,a=A("level_up.plus_one_upgrade_and_reroll")):_>.9&&(t++,a=A("level_up.plus_one_upgrade")),e.levelMisses<3?(t++,e.rerolls++,l=A("level_up.plus_one_upgrade_and_reroll")):e.levelMisses<6&&(t++,l=A("level_up.plus_one_upgrade")),u.label=1;case 1:var c,p;if(!t--||(c=3+e.perks.one_more_choice-e.perks.instant_upgrade,(p=ey(e).map(function(_){return S(k({},_),{score:Math.random()+(e.lastOffered[_.id]||0)})}).sort(function(e,_){return e.score-_.score}).filter(function(_){return e.perks[_.id]<_.max+e.perks.limitless}).slice(0,c).sort(function(e,_){return e.id>_.id?1:-1})).forEach(function(_){_h(e,_.id)}),!(s=p.map(function(_){return{text:_.name+(e.perks[_.id]?A("level_up.upgrade_perk_to_level",{level:e.perks[_.id]+1}):""),icon:$["icon:"+_.id],value:_.id,help:_.help(e.perks[_.id]+1)}})).length))return[3,3];return e.rerolls&&s.push({text:A("level_up.reroll",{count:e.rerolls}),help:A("level_up.reroll_help"),value:"reroll",icon:$["icon:reroll"]}),o=r&&a&&l&&n&&A("level_up.compliment_perfect")||(r||a||l||n)&&A("level_up.compliment_good")||A("level_up.compliment_advice"),[4,__(S(k({},{title:A("level_up.pick_upgrade_title")+(t?" ("+(t+1)+")":""),content:["".concat(A("level_up.before_buttons",{score:e.score-e.levelStartScore,catchGain:a,levelSpawnedCoins:e.levelSpawnedCoins,time:Math.round(e.levelTime/1e3),timeGain:r,levelMisses:e.levelMisses,missesGain:l,levelWallBounces:e.levelWallBounces,wallHitsGain:n,compliment:o}),"\n
\n ").concat(A("level_up.after_buttons",{level:e.currentLevel+1,max:ek(e)}),"
\n ").concat(ew(e,e.currentLevel+1),"
\n")].concat(w(s),[eW(e),''])}),{allowClose:!1}))];case 2:return"reroll"===(i=u.sent())?(t++,e.rerolls--):(e.perks[i]++,"instant_upgrade"===i&&(t+=2),e.runStatistics.upgrades_picked++),[3,1];case 3:return[2]}})})).apply(this,arguments)}function _Z(e,_){return ef(te,Math.floor(_/te.brickWidth),Math.floor((e-te.offsetX)/te.brickWidth))}function _I(e){if(te.bricks[e])return e}function _N(e,_,t){var r,a,n;return null!==(n=null!==(a=null!==(r=_I(_Z(e-t,_-t)))&&void 0!==r?r:_I(_Z(e+t,_-t)))&&void 0!==a?a:_I(_Z(e+t,_+t)))&&void 0!==n?n:_I(_Z(e-t,_+t))}window.addEventListener("resize",_D),window.addEventListener("fullscreenchange",_D),setInterval(function(){var e=eC.getBoundingClientRect(),_=e.width,t=e.height;(_!==te.canvasWidth||t!==te.canvasHeight)&&_D()},1e3),eC.addEventListener("mouseup",function(e){0===e.button&&(te.running?_j(!0):(_A(),er("pointerLock")&&eC.requestPointerLock&&eC.requestPointerLock().then()))}),eC.addEventListener("mousemove",function(e){document.pointerLockElement===eC?_s(te,te.puckPosition+e.movementX):_s(te,e.x)}),eC.addEventListener("touchstart",function(e){var _;e.preventDefault(),(null===(_=e.touches)||void 0===_?void 0:_.length)&&(_s(te,e.touches[0].pageX),_i(te),_A())}),eC.addEventListener("touchend",function(e){e.preventDefault(),_j(!0)}),eC.addEventListener("touchcancel",function(e){e.preventDefault(),_j(!0)}),eC.addEventListener("touchmove",function(e){var _;(null===(_=e.touches)||void 0===_?void 0:_.length)&&_s(te,e.touches[0].pageX)});var _X=0,_Y=60;function _U(){return _J.apply(this,arguments)}function _J(){return(_J=(0,f._)(function(){return(0,x.__generator)(this,function(e){switch(e.label){case 0:return _j(!0),[4,__({title:A("score_panel.title",{score:te.score,level:te.currentLevel+1,max:ek(te)}),content:[_n(te),eW(te),ew(te,te.currentLevel),te.rerolls?A("score_panel.rerolls_count",{rerolls:te.rerolls}):""],allowClose:!0})];case 1:return e.sent(),[2]}})})).apply(this,arguments)}setInterval(function(){_Y=_X,_X=0},1e3),window.addEventListener("visibilitychange",function(){document.hidden&&_j(!0)}),eQ.addEventListener("click",function(e){e.preventDefault(),e6||_U()}),document.addEventListener("visibilitychange",function(){document.hidden&&_j(!0)}),document.getElementById("menu").addEventListener("click",function(e){e.preventDefault(),e6||_Q()});var _K=(p=Math).max.apply(p,w(e_.map(function(e){return e.threshold})));function _Q(){return _$.apply(this,arguments)}function _$(){return(_$=(0,f._)(function(){var e,_;return(0,x.__generator)(this,function(t){switch(t.label){case 0:return _j(!0),e=[{icon:$["icon:new_run"],text:A("main_menu.normal"),help:(eR()?A("main_menu.high_score",{score:eR()}):"")||A("main_menu.normal_help"),value:function(){t_({levelToAvoid:ex(te).name})}},{icon:$["icon:creative"],text:A("lab.menu_entry"),help:B()<_K&&A("lab.unlocks_at",{score:_K})||A("lab.help"),disabled:B()<_K,value:function(){return(0,f._)(function(){return(0,x.__generator)(this,function(e){return function(){_B.apply(this,arguments)}(),[2]})})()}},{icon:$["icon:unlocks"],text:A("main_menu.unlocks"),help:A("main_menu.unlocks_help"),value:function(){(function(){_3.apply(this,arguments)})()}}].concat(w(function(e){if(!er("donation_reminder"))return[];var _=D();return[{text:A("main_menu.donate",{hours:_}),help:A("main_menu.donate_help",{suggestion:Math.min(20,Math.max(1,.2*_)).toFixed(0)}),icon:$["icon:premium"],value:function(){window.open("https://paypal.me/renanlecaro","_blank")}}]}(0)),[{text:A("main_menu.settings_title"),help:A("main_menu.settings_help"),icon:$["icon:settings"],value:function(){_0()}},{icon:$["icon:help"],text:A("main_menu.help_title"),help:A("main_menu.help_help"),value:function(){return(0,f._)(function(){return(0,x.__generator)(this,function(e){switch(e.label){case 0:return[4,__({title:A("main_menu.help_title"),allowClose:!0,content:[V(A("main_menu.help_content")),A("main_menu.help_upgrades")].concat(w(e_.map(function(e){return'\n\n '.concat(e.icon,"\n
\n ").concat(e.name,"
\n ").concat(e.help(1),"\n
\n
\n \n ").concat(V(e.fullHelp),"\n")})),[V(A("main_menu.credits")),A("main_menu.credit_levels")],w(ee.filter(function(e){var _;return null===(_=e.credit)||void 0===_?void 0:_.startsWith("http")}).map(function(e){return'\n")})))})];case 1:return e.sent(),[2]}})})()}}]),[4,__({title:A("main_menu.title"),content:w(e).concat([A("main_menu.footer_html",{appVersion:Q})]),allowClose:!0})];case 1:return(_=t.sent())&&(_(),te.needsRender=!0),[2]}})})).apply(this,arguments)}function _0(){return _1.apply(this,arguments)}function _1(){return(_1=(0,f._)(function(){var e,_,t,r,a,n,l,s,o,i;return(0,x.__generator)(this,function(u){switch(u.label){case 0:_j(!0),_=[{icon:$["icon:starting_perks"],text:A("main_menu.starting_perks"),help:A("main_menu.starting_perks_help"),value:function(){return(0,f._)(function(){return(0,x.__generator)(this,function(e){switch(e.label){case 0:return[4,_C()];case 1:return e.sent(),[2]}})})()}}],t=[{text:"English",value:"en",icon:$.UK},{text:"Français",value:"fr",icon:$.France}],_.push({icon:null===(e=t.find(function(e){return e.value===F()}))||void 0===e?void 0:e.icon,text:A("main_menu.language"),help:A("main_menu.language_help"),value:function(){return(0,f._)(function(){var e,_;return(0,x.__generator)(this,function(r){switch(r.label){case 0:return[4,__({title:A("main_menu.language"),content:[A("main_menu.language_help")].concat(w(t)),allowClose:!0})];case 1:if(!(_=(e=r.sent())&&e!==F()))return[3,3];return[4,_5(te)];case 2:_=r.sent(),r.label=3;case 3:return _&&(L("lang",e),window.location.reload()),[2]}})})()}}),r=!0,a=!1,n=void 0;try{for(l=function(){var e=o.value;et[e]&&_.push({icon:er(e)?$["icon:checkmark_checked"]:$["icon:checkmark_unchecked"],text:et[e].name,help:et[e].help,value:function(){ea(e),_D(),_2(),_0()}})},s=Object.keys(et)[Symbol.iterator]();!(r=(o=s.next()).done);r=!0)l()}catch(e){a=!0,n=e}finally{try{r||null==s.return||s.return()}finally{if(a)throw n}}return _.push({icon:$["icon:download"],text:A("main_menu.download_save_file"),help:A("main_menu.download_save_file_help"),value:function(){return(0,f._)(function(){var e,_,t,r,a,n;return(0,x.__generator)(this,function(l){for(_=0,e={};_Q)throw Error("Please update your app first, this file is for version "+l+" or newer.");if(o!==X("Security by obscurity, but really the game is oss so eh"+s))throw Error("Key does not match content.");for(var c in i=JSON.parse(s),localStorage.clear(),i)localStorage.setItem(c,i[c]);return[4,__({title:A("main_menu.save_file_loaded"),content:[A("main_menu.save_file_loaded_help"),{text:A("main_menu.save_file_loaded_ok")}]})];case 2:e.sent(),window.location.reload(),e.label=3;case 3:return[3,6];case 4:return u=e.sent(),[4,__({title:A("main_menu.save_file_error"),content:[u.message,{text:A("main_menu.save_file_loaded_ok")}]})];case 5:return e.sent(),[3,6];case 6:return _.value="",[2]}})}),function(e){return r.apply(this,arguments)})),document.body.appendChild(_)}return null===(e=document.getElementById("save_file_picker"))||void 0===e||e.click(),[2]})})()}}),_.push({icon:$["icon:coins"],text:A("main_menu.max_coins",{max:O()}),help:A("main_menu.max_coins_help"),value:function(){return(0,f._)(function(){return(0,x.__generator)(this,function(e){switch(e.label){case 0:return L("max_coins",(R("max_coins",1)+1)%6),[4,_0()];case 1:return e.sent(),[2]}})})()}}),_.push({icon:$["icon:particles"],text:A("main_menu.max_particles",{max:C()}),help:A("main_menu.max_particles_help"),value:function(){return(0,f._)(function(){return(0,x.__generator)(this,function(e){switch(e.label){case 0:return L("max_particles",(R("max_particles",1)+1)%6),[4,_0()];case 1:return e.sent(),[2]}})})()}}),_.push({icon:$["icon:reset"],text:A("main_menu.reset"),help:A("main_menu.reset_help"),value:function(){return(0,f._)(function(){return(0,x.__generator)(this,function(e){switch(e.label){case 0:return[4,__({title:A("main_menu.reset"),content:[A("main_menu.reset_instruction"),{text:A("main_menu.reset_confirm"),value:!0},{text:A("main_menu.reset_cancel"),value:!1}],allowClose:!0})];case 1:return e.sent()&&(localStorage.clear(),window.location.reload()),[2]}})})()}}),[4,__({title:A("main_menu.settings_title"),content:[A("main_menu.settings_help")].concat(w(_)),allowClose:!0,className:"settings"})];case 1:return(i=u.sent())&&(i(),te.needsRender=!0),[2]}})})).apply(this,arguments)}function _2(){return _4.apply(this,arguments)}function _4(){return(_4=(0,f._)(function(){var e;return(0,x.__generator)(this,function(_){switch(_.label){case 0:if(_.trys.push([0,10,,11]),!(document.fullscreenEnabled||document.webkitFullscreenEnabled))return[2,!1];if(!(null!==document.fullscreenElement&&!er("fullscreen")))return[3,5];if(!document.exitFullscreen)return[3,2];return[4,document.exitFullscreen()];case 1:case 3:case 6:case 8:return _.sent(),[2,!0];case 2:if(!document.webkitCancelFullScreen)return[3,4];return[4,document.webkitCancelFullScreen()];case 4:return[3,9];case 5:if(!(er("fullscreen")&&!document.fullscreenElement))return[3,9];if(!(e=document.documentElement).requestFullscreen)return[3,7];return[4,e.requestFullscreen()];case 7:if(!e.webkitRequestFullscreen)return[3,9];return[4,e.webkitRequestFullscreen()];case 9:return[3,11];case 10:return console.warn(_.sent()),[3,11];case 11:return[2,!1]}})})).apply(this,arguments)}function _3(){return(_3=(0,f._)(function(){var e,_,t,r,a;return(0,x.__generator)(this,function(n){switch(n.label){case 0:return e=B(),_=er("mobile-mode")?"help":"tooltip",t=e_.sort(function(e,_){return e.threshold-_.threshold}).map(function(t){var r=t.name,a=t.id,n=t.threshold,l=t.icon,s=t.help;return y({text:r,disabled:e".concat(A("unlocks.intro",{ts:e}),"\n ").concat(t.find(function(e){return e.disabled})?A("unlocks.greyed_out_help"):"","
")].concat(w(t),[A("unlocks.level",{unlocked:r.filter(function(e){return!e.disabled}).length,out_of:r.length})],w(r)),allowClose:!0,className:er("mobile-mode")?"":"actionsAsGrid"})];case 1:if(!(a=n.sent()))return[3,3];return[4,_5(te)];case 2:n.sent()&&t_(k({},a)),n.label=3;case 3:return[2]}})})).apply(this,arguments)}function _5(e){return _6.apply(this,arguments)}function _6(){return(_6=(0,f._)(function(e){return(0,x.__generator)(this,function(_){return!e.currentLevel||e6?[2,!0]:(_j(!0),[2,__({title:A("confirmRestart.title"),content:[A("confirmRestart.text"),{value:!0,text:A("confirmRestart.yes")},{value:!1,text:A("confirmRestart.no")}]})])})})).apply(this,arguments)}var _7={ArrowLeft:0,ArrowRight:0,Shift:0};function _8(e,_){_7[e]=_,te.keyboardPuckSpeed=(_7.ArrowRight-_7.ArrowLeft)*(1+2*_7.Shift)*te.gameZoneWidth/50}document.addEventListener("keydown",(t=(0,f._)(function(e){return(0,x.__generator)(this,function(_){return"f"!==e.key.toLowerCase()||e.ctrlKey||e.metaKey?e.key in _7&&_8(e.key,1):(ea("fullscreen"),_2())," "!==e.key||e6||(te.running?_j(!0):_A(),e.preventDefault()),[2]})}),function(e){return t.apply(this,arguments)}));var _9=new Date;document.addEventListener("keyup",(r=(0,f._)(function(e){var _,t,r,a,n;return(0,x.__generator)(this,function(l){switch(l.label){case 0:if(n=document.querySelector("button:focus"),!(e.key in _7))return[3,1];return _8(e.key,0),[3,10];case 1:if("ArrowDown"!==e.key||(null==n?void 0:null===(_=n.nextElementSibling)||void 0===_?void 0:_.tagName)!=="BUTTON")return[3,2];return null==n||null===(t=n.nextElementSibling)||void 0===t||t.focus(),[3,10];case 2:if("ArrowUp"!==e.key||(null==n?void 0:null===(r=n.previousElementSibling)||void 0===r?void 0:r.tagName)!=="BUTTON")return[3,3];return null==n||null===(a=n.previousElementSibling)||void 0===a||a.focus(),[3,10];case 3:if(!("Escape"===e.key&&e7))return[3,4];return e7(),[3,10];case 4:if(!("Escape"===e.key&&te.running))return[3,5];return _j(!0),[3,10];case 5:if(!("m"===e.key.toLowerCase()&&!e6))return[3,6];return _Q().then(),[3,10];case 6:if(!("s"===e.key.toLowerCase()&&!e6))return[3,7];return _U().then(),[3,10];case 7:if(!("r"===e.key.toLowerCase()&&!e6&&_91&&void 0!==arguments[1]?arguments[1]:1;e.runStatistics.max_combo=Math.max(e.runStatistics.max_combo,e.combo),e.perks.addiction&&e.lastBrickBroken&&e.lastBrickBrokene.lastTickDown+1e3&&e.perks.hot_start&&(e.lastTickDown=e.levelTime,_d(e,e.perks.hot_start,e.puckPosition,e.gameZoneHeight-2*e.puckHeight)),t<=e.perks.skip_last&&!e.autoCleanUses&&(e.bricks.forEach(function(_,t){_&&_g(e,t,e.balls[0],!0)}),e.autoCleanUses++);var r=_H(e.respawns);if(!e.running||t||r?e.winAt=0:e.winAt||(e.winAt=e.levelTime+5e3),e.running&&e.winAt&&e.levelTime>e.winAt||e.levelTime&&!t&&!_H(e.coins))e.currentLevel+17*e.baseSpeed&&(t.vx=7*e.baseSpeed),t.vx<-7*e.baseSpeed&&(t.vx=-7*e.baseSpeed),t.vy>7*e.baseSpeed&&(t.vy=7*e.baseSpeed),t.vy<-7*e.baseSpeed&&(t.vy=-7*e.baseSpeed),t.a+=t.sa,!e.perks.etherealcoins){var i=e.perks.helium>0&&2*Math.abs(t.x-e.puckPosition)>e.puckWidth+t.size;t.vy+=_*t.weight*.8*(i?-e.perks.helium:1),i&&!er("basic")&&.1>Math.random()&&_z(e,t.x,t.y,0,e.baseSpeed,e.perks.metamorphosis||er("colorful_coins")?t.color:"#ffd300",!0,5,250)}var u=(Math.abs(t.vx)+Math.abs(t.vy))*10,c=_S(e,t,t.size/2,_);t.y>e.gameZoneHeight-a-e.puckHeight&&t.ye.highScore&&!e.creative&&(e.highScore=e.score,localStorage.setItem("breakout-3-hs-short",e.score.toString())),er("basic")||_z(e,t.previousX,t.previousY,(e.canvasWidth-t.x)/100,-t.y/100,e.perks.metamorphosis||er("colorful_coins")?t.color:"#ffd300",!0,e.coinSize/2,100+50*Math.random()),_v(e,"coinCatch",t.x,1),e.runStatistics.score+=t.points,e.perks.asceticism&&_d(e,3*e.perks.asceticism*t.points,t.x,t.y),_q(e.coins,r)):t.y>e.canvasHeight+10*a?(e.levelLostCoins+=t.points,_q(e.coins,r),e.perks.compound_interest&&_c(e,t.x,e.gameZoneHeight-20),e.combo<30*e.perks.fountain_toss&&Math.random()<1/e.combo*e.perks.fountain_toss&&_p(e,1,t.x,e.gameZoneHeight-20)):e.perks.unbounded&&(t.x<-e.gameZoneWidth/2||t.x>e.canvasWidth+e.gameZoneWidth/2||t.y<-e.gameZoneWidth)&&(e.levelLostCoins+=t.points,_q(e.coins,r));var p=function(e,_){var t,r,a=_.size/2,n=_.x,l=_.y,s=_.previousX,o=_.previousY,i=_N(s,l,a),u=_N(n,o,a),c=void 0===i&&void 0===u&&_N(n,l,a)||void 0;if(e.perks.ghost_coins)void 0!==(null!==(t=null!=i?i:u)&&void 0!==t?t:c)&&(_.vy*=1-.2/e.perks.ghost_coins,_.vx*=1-.2/e.perks.ghost_coins);else{if(void 0!==i||void 0!==c){_.y=_.previousY,_.vy*=-1;var p=e.bricks[_Z(n-a,l+a)],d=e.bricks[_Z(n+a,l+a)];p&&!d&&(_.vx+=1,_.sa-=1),!p&&d&&(_.vx-=1,_.sa+=1)}(void 0!==u||void 0!==c)&&(_.x=_.previousX,_.vx*=-1)}return null!==(r=null!=i?i:u)&&void 0!==r?r:c}(e,t);e.perks.metamorphosis&&void 0!==p&&e.bricks[p]&&t.color!==e.bricks[p]&&"black"!==e.bricks[p]&&t.metamorphosisPoints&&(e.bricks[p]=t.color,t.metamorphosisPoints--,_v(e,"colorChange",t.x,.3)),!e.perks.ghost_coins&&void 0!==p||c?(t.vx*=.8,t.vy*=.8,t.sa*=.9,u>20&&!t.collidedLastFrame&&_v(e,"coinBounce",t.x,.2),t.collidedLastFrame=!0,3>Math.abs(t.vy)&&(t.vy=0)):t.collidedLastFrame=!1}),e.balls.forEach(function(t){return function(e,_,t){_.previousVX=_.vx,_.previousVY=_.vy;var r,a=1+e.perks.telekinesis+e.perks.ball_repulse_ball+e.perks.puck_repulse_ball+e.perks.ball_attract_ball;eG(e,_)>0&&(a+=3,_.vx+=(e.puckPosition-_.x)/1e3*t*e.perks.telekinesis*eG(e,_)),eM(e,_)>0&&(a+=3,_.vx+=(e.puckPosition-_.x)/1e3*t*e.perks.yoyo*eM(e,_)),_.vx*_.vx+_.vy*_.vy0?1:-1)*.02/a);var n=!0,l=!1,s=void 0;if(e.perks.ball_repulse_ball)try{for(var o,i=e.balls[Symbol.iterator]();!(n=(o=i.next()).done);n=!0){var u=o.value;u.x>=_.x||_x(e,_,u,e.perks.ball_repulse_ball,!0)}}catch(e){l=!0,s=e}finally{try{n||null==i.return||i.return()}finally{if(l)throw s}}var c=!0,p=!1,d=void 0;if(e.perks.ball_attract_ball)try{for(var m,b=e.balls[Symbol.iterator]();!(c=(m=b.next()).done);c=!0){var g=m.value;g.x>=_.x||function(e,_,t,r){var a=eH(_,t),n=3*e.gameZoneWidth/4;if(!(ae.offsetX+e.gameZoneWidth/2&&_c(e,_.x,_.y),e.perks.top_is_lava&&h>=2&&_c(e,_.x,_.y+3*e.ballSize),e.perks.trampoline&&_d(e,e.perks.trampoline,_.x,_.y+e.ballSize),_v(e,"wallBeep",_.x,1),e.levelWallBounces++,e.runStatistics.wall_bounces++);var v=e.gameZoneHeight-e.puckHeight-e.ballSize/2,f=Math.abs(_.x-e.puckPosition)v&&_.vy>0&&(f||e.perks.extra_life&&_.y>v+e.puckHeight/2)){if(f){var y=Math.sqrt(_.vx*_.vx+_.vy*_.vy),k=Math.atan2(-e.puckWidth/2,(_.x-e.puckPosition)*(e.perks.concave_puck?-1/(1+e.perks.concave_puck):1));_.vx=y*Math.cos(k),_.vy=y*Math.sin(k),_v(e,"wallBeep",_.x,1)}else _.vy*=-1,function(e,_,t,r){if(e.perks.extra_life-=1,e.perks.extra_life<0?e.perks.extra_life=0:e.perks.sacrifice&&(e.combo*=e.perks.sacrifice,e.bricks.forEach(function(t,r){return t&&_g(e,r,_,!0)})),_v(e,"lifeLost",_.x,1),!er("basic"))for(var a=0;a<10;a++)_z(e,t,r,Math.random()*e.baseSpeed*3,3*e.baseSpeed,"#FF0000",!1,e.coinSize/2,150)}(e,_,_.x,_.y);if(e.perks.streak_shots&&_c(e,_.x,_.y),e.perks.trampoline&&_p(e,e.perks.trampoline,_.x,_.y),e.perks.nbricks&&_.hitSinceBouncee.canvasWidth+e.gameZoneWidth/2,x=e.perks.unbounded>1&&_.y<-e.gameZoneWidth/2;e.running&&(_.y>e.gameZoneHeight+e.ballSize/2||w||x)&&(_.destroyed=!0,e.runStatistics.balls_lost++,e.balls.find(function(e){return!e.destroyed})||_a(A("gameOver.lost.title"),A("gameOver.lost.summary",{score:e.score})));var S=e.ballSize/2,z=_.x,G=_.y,M=_.previousX,q=_.previousY,H=_N(M,G,S),P=_N(z,q,S),R=void 0===H&&void 0===P&&_N(z,G,S)||void 0,L=null!==(r=null!=H?H:P)&&void 0!==r?r:R;if(void 0!==L){var B=e.bricks[L];_.hitSinceBounce++,e.perks.nbricks&&(_.hitSinceBounce>e.perks.nbricks?_c(e,_.x,_.y):_p(e,e.perks.nbricks,_.x,_.y));var O=!1,C=1+(e.perks.pierce_color&&(void 0===H||e.bricks[H]===e.ballsColor)&&(void 0===P||e.bricks[P]===e.ballsColor)&&(void 0===R||e.bricks[R]===e.ballsColor)?e.perks.pierce_color:0);e.brickHP[L]-=C;var T=Math.min(_.piercePoints,Math.max(1,e.brickHP[L]+1));e.brickHP[L]-=T,_.piercePoints-=T,e.brickHP[L]<0&&(e.brickHP[L]=0,O=!0),void 0===H&&void 0===R||O||(_.y=_.previousY,_.vy*=-1),void 0===P&&void 0===R||O||(_.x=_.previousX,_.vx*=-1),e.brickHP[L]?(_v(e,"wallBeep",z,1),function(e,_,t,r){var a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:8,n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:150;_M(e.lights,function(l){l.time=e.levelTime,l.x=_,l.y=t,l.color=r,l.size=a,l.duration=n})}(e,eh(e,L),ev(e,L),"#FFFFFF",e.brickWidth+2,50*e.brickHP[L])):(_.brokenSinceBounce++,_g(e,L,_,!1),_.sapperUses0&&!_.hitSinceBounce,D=e.combo-1;if(j||D&&Math.random()>.1/(1+D)||E&&Math.random()>.1/(1+E)||D&&Math.random()>.1/(1+D)){var V=E&&(Math.random()>.5?"#ffb92a":"#FF0000")||j&&"#FF0000"||e.ballsColor;_z(e,_.x,_.y,e.perks.pierce_color||F?-_.vx+(Math.random()-.5)*e.baseSpeed/3:(Math.random()-.5)*e.baseSpeed,e.perks.pierce_color||F?-_.vy+(Math.random()-.5)*e.baseSpeed/3:(Math.random()-.5)*e.baseSpeed,V,!0,e.coinSize/2,100)}}}(e,t,_)}),e.perks.shocks&&e.balls.forEach(function(_,t){return e.balls.forEach(function(r,a){if(t.5&&_z(e,e.offsetXRoundedDown+Math.random()*e.gameZoneWidthRoundedUp,Math.random()*e.gameZoneHeight,8*n,0,_w(),!0,e.coinSize/2,150);_R(e.particles,function(t,r){t.x+=t.vx*_,t.y+=t.vy*_,!t.ethereal&&(t.vy+=.5,_I(_Z(t.x,t.y))&&_q(e.particles,r))})}if(e.combo>_u(e)&&!er("basic")&&(e.combo-_u(e))*Math.random()>5){if(e.perks.top_is_lava&&_z(e,e.offsetXRoundedDown+Math.random()*e.gameZoneWidthRoundedUp,0,(Math.random()-.5)*10,5,"#FF0000",!0,e.coinSize/2,100*(Math.random()+1)),e.perks.left_is_lava&&_z(e,e.offsetXRoundedDown,Math.random()*e.gameZoneHeight,5,(Math.random()-.5)*10,"#FF0000",!0,e.coinSize/2,100*(Math.random()+1)),e.perks.right_is_lava&&_z(e,e.offsetXRoundedDown+e.gameZoneWidthRoundedUp,Math.random()*e.gameZoneHeight,-5,(Math.random()-.5)*10,"#FF0000",!0,e.coinSize/2,100*(Math.random()+1)),e.perks.compound_interest){var s=e.puckPosition,o=0;do s=e.offsetXRoundedDown+e.gameZoneWidthRoundedUp*Math.random(),o++;while(Math.abs(s-e.puckPosition)_.time)_k(e,_.index,_.color),_q(e.respawns,t);else{var r=_.index,a=_.color,n=Math.random()>.5,l=Math.random()>.5?1:-1,s=Math.random()>.5?1:-1;_z(e,eh(e,r)+l*e.brickWidth/2,ev(e,r)+s*e.brickWidth/2,n?0:-l*e.baseSpeed,n?-s*e.baseSpeed:0,a,!0,e.coinSize/2,250)}}),_R(e.particles,function(_,t){e.levelTime>_.time+_.duration&&_q(e.particles,t)}),_R(e.texts,function(_,t){e.levelTime>_.time+_.duration&&_q(e.texts,t)}),_R(e.lights,function(_,t){e.levelTime>_.time+_.duration&&_q(e.lights,t)})}(te,r)),(te.running||te.needsRender)&&(te.needsRender=!1,function(e){var _=ex(e),t=e.combo>_u(e),r=eC.width,a=eC.height;if(r&&a){e.currentLevel||e.levelTime?e$.innerText=A("play.current_lvl",{level:e.currentLevel+1,max:ek(e)}):e$.innerText=A("play.menu_label");var n=e.levelSpawnedCoins?(e.levelSpawnedCoins-e.levelLostCoins)/e.levelSpawnedCoins:1;if(eQ.innerHTML=(er("show_fps")?' \n Math.abs(_Y-60)&&"good"||"bad",'">\n ').concat(_Y," FPS\n / \n \n "):"")+(er("show_stats")?' \n .9&&"good"||"",'" data-tooltip="').concat(A("play.stats.coins_catch_rate"),'">\n ').concat(Math.floor(100*n),'%\n / \n \n ').concat(Math.ceil(e.levelTime/1e3),'s \n / \n \n ').concat(e.levelWallBounces,' B \n / \n \n ').concat(e.levelMisses," M\n / \n "):"")+'$').concat(e.score,""),eQ.className=e.lastScoreIncrease>e.levelTime-500?"active":"",!er("basic")&&_.svg&&"#000000"===_.color){eD.globalCompositeOperation="source-over",eD.globalAlpha=.99,eD.fillStyle=_.color,eD.fillRect(0,0,r/8,a/8);var l=er("extra_bright")?3:1;if(eD.globalCompositeOperation="lighten",eD.globalAlpha=.1,_R(e.coins,function(_){eU(eD,e4(e,_),2*e.coinSize*l/8,_.x/8,_.y/8)}),eD.globalAlpha=.1,e.balls.forEach(function(_){eU(eD,e.ballsColor,3*e.ballSize*l/8,_.x/8,_.y/8)}),eD.globalAlpha=.05,e.bricks.forEach(function(_,t){if(_){var r=eh(e,t),a=ev(e,t);eU(eD,"black"==_?"#666666":_,2*e.brickWidth*l/8,r/8,a/8)}}),eD.globalCompositeOperation="screen",eD.globalAlpha=.3,_R(e.particles,function(_){var t=_.x,r=_.y,a=(_.time,_.color),n=_.size;_.duration,e.levelTime,eU(eD,a,3*n*l/8,t/8,r/8)}),eT.globalAlpha=1,eT.globalCompositeOperation="source-over",eT.drawImage(ej,0,0,r,a),eT.globalAlpha=1,eT.globalCompositeOperation="multiply",_.svg&&eA.width&&eA.complete){if(eE.title!==_.name){eE.title=_.name,eE.width=e.canvasWidth,eE.height=e.canvasHeight;var s=eE.getContext("2d");if(s.globalCompositeOperation="source-over",s.fillStyle=_.color||"#000",s.fillRect(0,0,e.canvasWidth,e.canvasHeight),e.perks.clairvoyant>=3)for(var o=document.body.innerHTML.replace(/\s+/gi,""),i=Math.ceil(e.canvasWidth/15),u=Math.ceil(e.canvasHeight/20),c=Math.ceil(Math.random()*(o.length-i*u)),p=0;p_u(te),_=e&&te.perks.picky_eater&&eS(te),t=e&&eP(te),r=ez(te),a=te.perks.clairvoyant,n=e2(te);_||t||-1!==r||te.perks.zen||(n=0);var l=a&&te.brickHP.reduce(function(e,_){return e+_},0),s=te.gameZoneWidth+"_"+te.bricks.join("_")+eF.complete+"_"+r+"_"+_+"_"+t+"_"+te.ballsColor+"_"+te.perks.pierce_color+"_"+l+"_"+n;if(s!==eI){eI=s,eZ.width=te.gameZoneWidth,eZ.height=te.gameZoneWidth+1;var o=eZ.getContext("2d");o.clearRect(0,0,te.gameZoneWidth,te.gameZoneWidth),o.resetTransform(),o.translate(-te.offsetX,0),te.bricks.forEach(function(l,s){var i=eh(te,s),u=ev(te,s);if(l){var c=r===Math.floor(s/te.level.size),p=te.ballsColor!==l&&"black"!==l&&_||e&&te.perks.zen&&"black"===l||c||t;o.globalCompositeOperation="source-over",eJ(te,o,l,i,u,p?n:-1,a>=2),te.brickHP[s]>1&&a&&(o.globalCompositeOperation="source-over",eK(o,te.brickHP[s].toString(),a>=2?l:te.level.color,te.puckHeight,i,u)),"black"===l&&(o.globalCompositeOperation="source-over",function(e,_,t,r,a){var n="svg"+_+"_"+t+"_"+_.complete;if(!eN[n]){var l=document.createElement("canvas");l.width=t,l.height=t;var s=l.getContext("2d"),o=t/Math.max(_.width,_.height),i=_.width*o,u=_.height*o;s.drawImage(_,(t-i)/2,(t-u)/2,i,u),eN[n]=l}e.drawImage(eN[n],Math.round(r-t/2),Math.round(a-t/2))}(o,eF,te.brickWidth,i,u))}})}eT.drawImage(eZ,te.offsetX,0)}(),eT.globalCompositeOperation="screen",_R(e.lights,function(_){var t=_.x,r=_.y,a=_.time,n=_.color,l=(_.size,_.duration);eT.globalAlpha=.5*Math.min(1,2-(e.levelTime-a)/l*2),eJ(e,eT,n,t,r,-1,e.perks.clairvoyant>=2)}),eT.globalCompositeOperation="screen",_R(e.texts,function(_){var t=_.x,r=_.y,a=_.time,n=_.color,l=_.size,s=_.duration,o=e.levelTime-a;eT.globalAlpha=Math.max(0,Math.min(1,2-o/s*2)),eT.globalCompositeOperation="source-over",eK(eT,_.text,n,l,t,r-o/10)}),_R(e.particles,function(_){var t=_.x,r=_.y,a=_.time,n=_.color,l=_.size,s=_.duration;eT.globalAlpha=Math.max(0,Math.min(1,2-(e.levelTime-a)/s*2)),eT.globalCompositeOperation="screen",eX(eT,n,l,t,r)}),e.perks.extra_life){eT.globalAlpha=1,eT.globalCompositeOperation="source-over",eT.fillStyle=e.puckColor;for(var h=0;h4&&void 0!==arguments[4]?arguments[4]:0,n=arguments.length>5?arguments[5]:void 0,l=arguments.length>6?arguments[6]:void 0,s="puck"+_+"_"+t+"_"+r+"_"+n+"_"+l;if(!eN[s]){var o=document.createElement("canvas");o.width=t,o.height=2*r;var i=o.getContext("2d");i.fillStyle=_,i.beginPath(),i.moveTo(0,2*r),n?(i.lineTo(0,.75*r),i.bezierCurveTo(t/2,r*(2+n)/3,t/2,r*(2+n)/3,t,.75*r)):(i.lineTo(0,1.25*r),i.bezierCurveTo(0,.75*r,t,.75*r,t,1.25*r)),i.lineTo(t,2*r),i.fill(),-1!==l&&(i.strokeStyle="#FF0000",i.lineWidth=4,i.setLineDash(e1),i.lineDashOffset=l,i.stroke()),eN[s]=o}e.drawImage(eN[s],Math.round(te.puckPosition-t/2),te.gameZoneHeight-2*r+a)}(eT,e.puckColor,e.puckWidth,e.puckHeight,0,e.perks.concave_puck,e.perks.streak_shots&&t?e2(e):-1),e.combo>1){eT.globalCompositeOperation="source-over";var v="x "+e.combo,f=v.length*e.puckHeight/1.8,y=f+2*e.coinSize,k=e.puckPosition-y/2;ye.puckWidth?e.combo.toString():v,"#000",f>e.puckWidth?12:20,e.puckPosition,e.gameZoneHeight-e.puckHeight/2,!1)}eT.globalCompositeOperation="source-over",eT.globalAlpha=e.perks.unbounded?.1:1;var W=t&&!e.perks.unbounded&&(e.perks.left_is_lava||e.perks.trampoline),w=t&&!e.perks.unbounded&&(e.perks.right_is_lava||e.perks.trampoline),x=t&&e.perks.unbounded<=2&&(e.perks.top_is_lava||e.perks.trampoline);e.offsetXRoundedDown?(eV(eT,e,W&&"#FF0000"||"#FFFFFF",e.offsetX-1,0,e.offsetX-1,a,e.perks.unbounded?.1:1),eV(eT,e,w&&"#FF0000"||"#FFFFFF",r-e.offsetX+1,0,r-e.offsetX+1,a,e.perks.unbounded?.1:1)):(eV(eT,e,W&&"#FF0000"||"",0,0,0,a,1),eV(eT,e,w&&"#FF0000"||"",r-1,0,r-1,a,1)),x&&eV(eT,e,"#FF0000",e.perks.unbounded?0:e.offsetXRoundedDown,1,e.perks.unbounded?r:r-e.offsetXRoundedDown,1,1),eT.globalAlpha=1,eV(eT,e,t&&e.perks.compound_interest&&"#FF0000"||er("mobile-mode")&&"#FFFFFF"||"",e.offsetXRoundedDown,e.gameZoneHeight,r-e.offsetXRoundedDown,e.gameZoneHeight,1),!er("basic")&&er("contrast")&&_.svg&&"#000000"===_.color&&(eD.fillStyle="#FFFFFF",eD.globalAlpha=.25,eD.globalCompositeOperation="screen",eD.fillRect(0,0,ej.width,ej.height),eT.globalAlpha=1,eT.globalCompositeOperation="soft-light",eT.drawImage(ej,0,0,r,a)),eT.globalCompositeOperation="source-over",eT.globalAlpha=1,er("mobile-mode")&&!e.running&&eK(eT,A("play.mobile_press_to_play"),e.puckColor,e.puckHeight,e.canvasWidth/2,e.gameZoneHeight+(e.canvasHeight-e.gameZoneHeight)/2),b&&eT.resetTransform()}}(te)),te.running&&function(e){if(er("record")){var _;o&&(_=e,c&&(c.drawImage(eC,_.offsetXRoundedDown,0,_.gameZoneWidthRoundedUp,_.gameZoneHeight,0,0,u.width,u.height),c.fillStyle="#FFFFFF",c.textBaseline="top",c.font="12px monospace",c.textAlign="right",c.fillText(_.score.toString(),u.width-12,12),c.textAlign="left",c.fillText("Level "+(_.currentLevel+1)+"/"+ek(_),12,12)),(null==i?void 0:i.requestFrame)?null==i||i.requestFrame():(null==o?void 0:o.requestFrame)&&o.requestFrame())}}(te),er("sound")&&function(e){if(!(en>Date.now()-60))for(var _ in en=Date.now(),e.aboutToPlaySound){var t,r=e.aboutToPlaySound[_];r.vol&&(el[_](Math.min(2,r.vol),(t=e,Math.max(0,Math.min(1,(r.x-t.offsetXRoundedDown)/t.gameZoneWidthRoundedUp))),e.combo),r.vol=0)}}(te),requestAnimationFrame(e),_X++}(),function(){var e=document.getElementById("tooltip");if(er("mobile-mode")){e.style.display="none";return}function _(_){e.style.transform="translate(".concat(_.clientX,"px,").concat(_.clientY+20,"px) ")+(_.clientX>window.innerWidth/2?" translate(-100%,0)":"")}function t(){e.style.display="none",r=null}var r=null;document.body.addEventListener("mouseenter",function(a){for(var n=a.target;n&&!n.hasAttribute("data-tooltip");)n=n.parentElement;(null==n?void 0:n.hasAttribute("data-tooltip"))?(e.innerHTML=(r=n).getAttribute("data-tooltip")||"",e.style.display="",_(a)):t()},!0),setInterval(function(){r&&!document.body.contains(r)&&t()},200),document.body.addEventListener("mousemove",function(t){e.style.display||_(t)},!0),document.body.addEventListener("mouseleave",function(e){t()})}(),null===(d=document.getElementById("menu"))||void 0===d||d.setAttribute("data-tooltip",A("play.menu_tooltip"))}();