\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"]"));function j(e){for(var _=0,t=0;t ".concat(C("score_panel.upcoming_levels")," ").concat(_,"
\n '.concat(c.title,'\n \n
\n\n'),i.slice(i.indexOf(c)+1).slice(0,3).forEach(function(e){n+='\n\n '.concat(e.title," \n
\n")})}var h=i.filter(function(e){return e.threshold>o&&e.threshold".concat(C("gameOver.test_run"),"
"):"","\n").concat(_,"
\n").concat(C("gameOver.cumulative_total",{startTs:o,endTs:l}),"
\n ").concat(n," \n "),actions:[{value:null,text:C("gameOver.restart"),help:""}],textAfterButtons:'\n'.concat(C("gameOver.upgrades_picked"),"
\n").concat(ed(_P),"
\n ").concat(function(){var e="";try{var _=JSON.parse(localStorage.getItem("breakout_71_runs_history")||"[]");_.sort(function(e,_){return e.score-_.score}).reverse(),(_=_.slice(0,100)).push(W(k({},_P.runStatistics),{perks:_P.perks,appVersion:F})),_P.isCreativeModeRun||localStorage.setItem("breakout_71_runs_history",JSON.stringify(_,null,2));var t=function(e,t,r){var a,s,n,l=_.map(function(e){return t(e)||0}),o=(a=Math).min.apply(a,f(l)),i=(s=Math).max.apply(s,f(l));if(o===i)return"";i-o<10&&(o=Math.max(0,i-10),i=Math.max(i,o+10));var u=Math.min(l.length,10);if(u<3)return"";for(var c=[],p=[],d=0;d1?"s":""," between ").concat(Math.floor(o+_*m)," and ").concat(Math.floor(o+(_+1)*m)).concat(r,'"\n >').concat(!e&&" "||_==v&&b+r||Math.round(p[_]/e)+r,"")}).join("");return'".concat(C("gameOver.stats.intro",{count:_.length-1}),"
")+e)}catch(e){console.warn(e)}return e}()," \n ")}).then(function(){return _O({levelToAvoid:eh(_P).name})})}}function eK(e,_){Math.abs(_-e.puckPosition)>1&&(e.lastPuckMove=e.levelTime),e.puckPosition=_,e.needsRender=!0}function eQ(e){e$(e);var _,t=1+((null===(_=e.perks)||void 0===_?void 0:_.multiball)||0),r=e.puckWidth/(t+1);e.balls=[],e.ballsColor="#FFF",(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,f(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}))||"#FFF");for(var a=0;a".concat(C("level_up.after_buttons",{level:e.currentLevel+1,max:ep(e)}),"
\n").concat(ed(e),'
\n \n \n '),u=a&&s&&l&&n&&C("level_up.compliment_perfect")||(a||s||l||n)&&C("level_up.compliment_good")||C("level_up.compliment_advice"),[4,eU({title:C("level_up.pick_upgrade_title")+(t?" ("+(t+1)+")":""),actions:o,text:"".concat(C("level_up.before_buttons",{score:e.score-e.levelStartScore,catchGain:s,levelSpawnedCoins:e.levelSpawnedCoins,time:Math.round(e.levelTime/1e3),timeGain:a,levelMisses:e.levelMisses,missesGain:l,levelWallBounces:e.levelWallBounces,wallHitsGain:n,compliment:u}),"\n
\n\n").concat(em(e),"
\n"),allowClose:!1,textAfterButtons:i})];case 2:return c=p.sent(),e.perks[c]++,"instant_upgrade"===c&&(t+=2),e.runStatistics.upgrades_picked++,[3,1];case 3:return[2]}})})).apply(this,arguments)}function _b(e,_){return eu(_P,Math.floor(_/_P.brickWidth),Math.floor((e-_P.offsetX)/_P.brickWidth))}function _v(e){if(_P.bricks[e])return e}function _f(e,_,t){var r,a,s;return null!==(s=null!==(a=null!==(r=_v(_b(e-t,_-t)))&&void 0!==r?r:_v(_b(e+t,_-t)))&&void 0!==a?a:_v(_b(e+t,_+t)))&&void 0!==s?s:_v(_b(e-t,_+t))}window.addEventListener("resize",_h),window.addEventListener("fullscreenchange",_h),setInterval(function(){var e=eS.getBoundingClientRect(),_=e.width,t=e.height;(_!==_P.canvasWidth||t!==_P.canvasHeight)&&_h()},1e3),eS.addEventListener("mouseup",function(e){0===e.button&&(_P.running?_m(!0):(_d(),J("pointerLock")&&eS.requestPointerLock&&eS.requestPointerLock().then()))}),eS.addEventListener("mousemove",function(e){document.pointerLockElement===eS?eK(_P,_P.puckPosition+e.movementX):eK(_P,e.x)}),eS.addEventListener("touchstart",function(e){var _;e.preventDefault(),(null===(_=e.touches)||void 0===_?void 0:_.length)&&(eK(_P,e.touches[0].pageX),e$(_P),_d())}),eS.addEventListener("touchend",function(e){e.preventDefault(),_m(!0)}),eS.addEventListener("touchcancel",function(e){e.preventDefault(),_m(!0)}),eS.addEventListener("touchmove",function(e){var _;(null===(_=e.touches)||void 0===_?void 0:_.length)&&eK(_P,e.touches[0].pageX)});var _y=0,_k=document.getElementById("FPSDisplay");function _W(){return _w.apply(this,arguments)}function _w(){return(_w=(0,g._)(function(){return(0,y.__generator)(this,function(e){switch(e.label){case 0:return _m(!0),[4,eU({title:C("score_panel.title",{score:_P.score,level:_P.currentLevel+1,max:ep(_P)}),text:"\n ".concat(_P.isCreativeModeRun?"".concat(C("score_panel.test_run"),"
"):"","\n").concat(C("score_panel.upgrades_picked"),"
\n").concat(ed(_P),"
\n \n").concat(em(_P),"
\n "),allowClose:!0})];case 1:return e.sent(),[2]}})})).apply(this,arguments)}function _x(){return _S.apply(this,arguments)}function _S(){return(_S=(0,g._)(function(){var e,_,t,r;return(0,y.__generator)(this,function(a){switch(a.label){case 0:return _m(!0),_=(e=Math).max.apply(e,f(N.map(function(e){return e.threshold}))),t=[{text:C("main_menu.settings_title"),help:C("main_menu.settings_help"),icon:X["icon:settings"],value:function(){_z()}},{icon:X["icon:unlocks"],text:C("main_menu.unlocks"),help:C("main_menu.unlocks_help"),value:function(){(function(){_G.apply(this,arguments)})()}},{icon:X["icon:sandbox"],text:C("sandbox.title"),help:B()<_?C("sandbox.unlocks_at",{score:_}):C("sandbox.help"),disabled:B()<_,value:function(){return(0,g._)(function(){var e,_;return(0,y.__generator)(this,function(t){switch(t.label){case 0:e=H("creativeModePerks",{}),t.label=1;case 1:return[4,eU({title:C("sandbox.title"),text:C("sandbox.instructions"),actionsAsGrid:!0,actions:f(N.map(function(_){return{icon:_.icon,text:_.name,help:(e[_.id]||0)+"/"+_.max,value:_,className:e[_.id]?"":"grey-out-unless-hovered"}})).concat([{text:C("sandbox.start"),value:"start",icon:X["icon:continue"]}])})];case 2:if(!(_=t.sent()))return[3,3];if("start"===_)return _O({perks:e}),[3,3];return _&&(e[_.id]=((e[_.id]||0)+1)%(_.max+1),R("creativeModePerks",e)),[3,1];case 3:return[2]}})})()}},{icon:X["icon:restart"],text:C("score_panel.restart"),help:C("score_panel.restart_help"),value:function(){_O({levelToAvoid:eh(_P).name})}},{icon:X["icon:continue"],text:C("main_menu.resume"),help:C("main_menu.resume_help"),value:function(){}}],[4,eU({title:C("main_menu.title"),text:"",allowClose:!0,actions:t,textAfterButtons:C("main_menu.footer_html",{appVersion:F})})];case 1:return(r=a.sent())&&(r(),_P.needsRender=!0),[2]}})})).apply(this,arguments)}function _z(){return _M.apply(this,arguments)}function _M(){return(_M=(0,g._)(function(){var e,_,t,r,a,s,n,l;return(0,y.__generator)(this,function(o){switch(o.label){case 0:_m(!0),e=[],_=!0,t=!1,r=void 0;try{for(a=function(){var _=n.value;Y[_]&&e.push({icon:J(_)?X["icon:checkmark_checked"]:X["icon:checkmark_unchecked"],text:Y[_].name,help:Y[_].help,value:function(){R("breakout-settings-enable-"+_,!J(_)),"mobile-mode"===_&&_h(),_z()}})},s=Object.keys(Y)[Symbol.iterator]();!(_=(n=s.next()).done);_=!0)a()}catch(e){t=!0,r=e}finally{try{_||null==s.return||s.return()}finally{if(t)throw r}}return(document.fullscreenEnabled||document.webkitFullscreenEnabled)&&(null!==document.fullscreenElement?e.push({text:C("main_menu.fullscreen_exit"),help:C("main_menu.fullscreen_exit_help"),icon:X["icon:exit_fullscreen"],value:function(){_B(),_z()}}):e.push({text:C("main_menu.fullscreen"),help:C("main_menu.fullscreen_help"),icon:X["icon:fullscreen"],value:function(){_B(),_z()}})),e.push({text:C("main_menu.reset"),help:C("main_menu.reset_help"),value:function(){return(0,g._)(function(){return(0,y.__generator)(this,function(e){switch(e.label){case 0:return[4,eU({title:C("main_menu.reset"),text:C("main_menu.reset_instruction"),actions:[{text:C("main_menu.reset_confirm"),value:!0},{text:C("main_menu.reset_cancel"),value:!1}],allowClose:!0})];case 1:return e.sent()&&(localStorage.clear(),window.location.reload()),[2]}})})()}}),e.push({text:C("main_menu.download_save_file"),help:C("main_menu.download_save_file_help"),value:function(){return(0,g._)(function(){var e,_,t,r,a,s;return(0,y.__generator)(this,function(n){for(_=0,e={};_".concat(C("unlocks.intro",{ts:e}),"\n ").concat(t<100?C("unlocks.greyed_out_help"):"","
\n "),textAfterButtons:"\nYour high score is ".concat(_P.highScore,". \nClick an item above to start a run with it.\n
"),actions:_,allowClose:!0})];case 1:if(!(r=a.sent()))return[3,3];return[4,_H()];case 2:a.sent()&&_O(r),a.label=3;case 3:return[2]}})})).apply(this,arguments)}function _H(){return _R.apply(this,arguments)}function _R(){return(_R=(0,g._)(function(){return(0,y.__generator)(this,function(e){return _P.currentLevel?[2,eU({title:C("confirmRestart.title"),text:C("confirmRestart.text"),actions:[{value:!0,text:C("confirmRestart.yes")},{value:!1,text:C("confirmRestart.no")}]})]:[2,!0]})})).apply(this,arguments)}function _B(){try{if(null!==document.fullscreenElement)document.exitFullscreen?document.exitFullscreen():document.webkitCancelFullScreen&&document.webkitCancelFullScreen();else{var e=document.documentElement;e.requestFullscreen?e.requestFullscreen():e.webkitRequestFullscreen&&e.webkitRequestFullscreen()}}catch(e){console.warn(e)}}setInterval(function(){J("show_fps")?_k.innerText=_y+" FPS "+_i(_P.coins)+" COINS "+(_i(_P.particles)+_i(_P.texts)+_i(_P.lights))+" PARTICLES ":_k.innerText="",_y=0},1e3),window.addEventListener("visibilitychange",function(){document.hidden&&_m(!0)}),eA.addEventListener("click",function(e){e.preventDefault(),eZ||_W()}),document.addEventListener("visibilitychange",function(){document.hidden&&_m(!0)}),document.getElementById("menu").addEventListener("click",function(e){e.preventDefault(),eZ||_x()});var _q={ArrowLeft:0,ArrowRight:0,Shift:0};function _L(e,_){_q[e]=_,_P.keyboardPuckSpeed=(_q.ArrowRight-_q.ArrowLeft)*(1+2*_q.Shift)*_P.gameZoneWidth/50}document.addEventListener("keydown",function(e){"f"!==e.key.toLowerCase()||e.ctrlKey||e.metaKey?e.key in _q&&_L(e.key,1):_B()," "===e.key&&!eZ&&(_P.running?_m(!0):_d(),e.preventDefault())}),document.addEventListener("keyup",(t=(0,g._)(function(e){var _,t,r,a,s;return(0,y.__generator)(this,function(n){switch(n.label){case 0:if(s=document.querySelector("button:focus"),!(e.key in _q))return[3,1];return _L(e.key,0),[3,10];case 1:if("ArrowDown"!==e.key||(null==s?void 0:null===(_=s.nextElementSibling)||void 0===_?void 0:_.tagName)!=="BUTTON")return[3,2];return null==s||null===(t=s.nextElementSibling)||void 0===t||t.focus(),[3,10];case 2:if("ArrowUp"!==e.key||(null==s?void 0:null===(r=s.previousElementSibling)||void 0===r?void 0:r.tagName)!=="BUTTON")return[3,3];return null==s||null===(a=s.previousElementSibling)||void 0===a||a.focus(),[3,10];case 3:if(!("Escape"===e.key&&eV))return[3,4];return eV(),[3,10];case 4:if(!("Escape"===e.key&&_P.running))return[3,5];return _m(!0),[3,10];case 5:if(!("m"===e.key.toLowerCase()&&!eZ))return[3,6];return _x().then(),[3,10];case 6:if(!("s"===e.key.toLowerCase()&&!eZ))return[3,7];return _W().then(),[3,10];case 7:if(!("r"===e.key.toLowerCase()&&!eZ))return[3,9];return[4,_H()];case 8:return n.sent()&&_O({levelToAvoid:eh(_P).name}),[3,10];case 9:return[2];case 10:return e.preventDefault(),[2]}})}),function(e){return t.apply(this,arguments)}));var _P=_p({});function _O(e){_h(),Object.assign(_P,_p(e)),ej(),e8(_P,0)}_O(window.location.search.includes("stressTest")?{level:"Bird",perks:{sapper:10,bigger_explosions:1,unbounded:1,pierce_color:1,pierce:20,multiball:6,base_combo:100,telekinesis:2,yoyo:2,metamorphosis:1,implosions:1}}:{}),function e(){var _=performance.now(),t=_-_P.lastTick;_P.lastTick=_;var r=Math.min(4,t/(1e3/60));_P.keyboardPuckSpeed&&eK(_P,_P.puckPosition+_P.keyboardPuckSpeed),e$(_P),_P.running&&(_P.levelTime+=t,_P.runStatistics.runTime+=t,function(e){var _=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;e.runStatistics.max_combo=Math.max(e.runStatistics.max_combo,e.combo),e.balls=e.balls.filter(function(e){return!e.destroyed});var t=e.bricks.filter(function(e){return e&&"black"!==e}).length;e.levelTime>e.lastTickDown+1e3&&e.perks.hot_start&&(e.lastTickDown=e.levelTime,e2(e,e.perks.hot_start,e.puckPosition,e.gameZoneHeight-2*e.puckHeight)),t<=e.perks.skip_last&&!e.autoCleanUses&&(e.bricks.forEach(function(_,t){_&&e3(e,t,e.balls[0],!0)}),e.autoCleanUses++);var r=e.perks.respawn&&e.balls.find(function(e){return e.hitItem.length>1});if(!e.running||t||r?e.winAt=0:e.winAt||(e.winAt=e.levelTime+5e3),e.winAt&&e.levelTime>e.winAt||e.running&&e.levelTime&&!t&&!_i(e.coins))e.currentLevel+1e.canvasWidth+e.gameZoneWidth/2;e.running&&(_.y>e.gameZoneHeight+e.ballSize/2||O)&&(_.destroyed=!0,e.runStatistics.balls_lost++,e.balls.find(function(e){return!e.destroyed})||eJ(C("gameOver.lost.title"),C("gameOver.lost.summary",{score:e.score})));var T=e.ballSize/2,A=_.x,E=_.y,j=_.previousX,D=_.previousY,Z=_f(j,E,T),V=_f(A,D,T),I=void 0===Z&&void 0===V&&_f(A,E,T)||void 0,F=null!==(r=null!=Z?Z:V)&&void 0!==r?r:I;if(void 0!==F){_.hitSinceBounce++;var X=!1,U=1+(e.perks.pierce_color&&(void 0===Z||e.bricks[Z]===e.ballsColor)&&(void 0===V||e.bricks[V]===e.ballsColor)&&(void 0===I||e.bricks[I]===e.ballsColor)?e.perks.pierce_color:0);e.brickHP[F]-=U;var N=Math.min(_.piercePoints,Math.max(1,e.brickHP[F]));if(e.brickHP[F]-=N,_.piercePoints-=N,e.brickHP[F]<0&&(e.brickHP[F]=0,X=!0),void 0===Z&&void 0===I||X||(_.y=_.previousY,_.vy*=-1),void 0===V&&void 0===I||X||(_.x=_.previousX,_.vx*=-1),!e.brickHP[F]){var Y=e.bricks[F];_.brokenSinceBounce++,e3(e,F,_,!1),_.sapperUses.1/(1+$)||Q&&Math.random()>.1/(1+Q)||$&&Math.random()>.1/(1+$)){var ee=Q?Math.random()>.5?"orange":"red":e.ballsColor;_a(e,_.x,_.y,e.perks.pierce_color||K?-_.vx+(Math.random()-.5)*e.baseSpeed/3:(Math.random()-.5)*e.baseSpeed,e.perks.pierce_color||K?-_.vy+(Math.random()-.5)*e.baseSpeed/3:(Math.random()-.5)*e.baseSpeed,ee,!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&&_a(e,e.offsetXRoundedDown+Math.random()*e.gameZoneWidthRoundedUp,Math.random()*e.gameZoneHeight,8*s,0,__(),!0,e.coinSize/2,150);_c(e.particles,function(t,r){t.x+=t.vx*_,t.y+=t.vy*_,!t.ethereal&&(t.vy+=.5,_v(_b(t.x,t.y))&&_o(e.particles,r))})}if(e.combo>e0(e)&&!J("basic")&&(e.combo-e0(e))*Math.random()>5){if(e.perks.top_is_lava&&_a(e,e.offsetXRoundedDown+Math.random()*e.gameZoneWidthRoundedUp,0,(Math.random()-.5)*10,5,"red",!0,e.coinSize/2,100*(Math.random()+1)),e.perks.left_is_lava&&_a(e,e.offsetXRoundedDown,Math.random()*e.gameZoneHeight,5,(Math.random()-.5)*10,"red",!0,e.coinSize/2,100*(Math.random()+1)),e.perks.right_is_lava&&_a(e,e.offsetXRoundedDown+e.gameZoneWidthRoundedUp,Math.random()*e.gameZoneHeight,-5,(Math.random()-.5)*10,"red",!0,e.coinSize/2,100*(Math.random()+1)),e.perks.compound_interest){var l=e.puckPosition,o=0;do l=e.offsetXRoundedDown+e.gameZoneWidthRoundedUp*Math.random(),o++;while(Math.abs(l-e.puckPosition) _.time+_.duration&&_o(e.particles,t)}),_c(e.texts,function(_,t){e.levelTime>_.time+_.duration&&_o(e.texts,t)}),_c(e.lights,function(_,t){e.levelTime>_.time+_.duration&&_o(e.lights,t)})}(_P,r)),(_P.running||_P.needsRender)&&(_P.needsRender=!1,function(e){var _=eh(e),t=eS.width,r=eS.height;if(t&&r){if(e.currentLevel||e.levelTime?eE.innerText=C("play.current_lvl",{level:e.currentLevel+1,max:ep(e)}):eE.innerText=C("play.menu_label"),eA.innerText="$".concat(e.score),eA.className=e.lastScoreIncrease>e.levelTime-500?"active":"",J("basic")||_.color||!_.svg)ez.globalAlpha=1,ez.globalCompositeOperation="source-over",ez.fillStyle=_.color||"#000",ez.fillRect(0,0,t,r),_c(e.particles,function(_){var t=_.x,r=_.y,a=_.time,s=_.color,n=_.size,l=_.duration;ez.globalAlpha=Math.min(1,2-(e.levelTime-a)/l*2),eP(ez,s,n,t,r)});else if(ez.globalCompositeOperation="source-over",ez.globalAlpha=1,ez.fillStyle="#000",ez.fillRect(0,0,t,r),ez.globalCompositeOperation="screen",ez.globalAlpha=.6,_c(e.coins,function(_){eC(ez,_.color,2*e.coinSize,_.x,_.y)}),e.balls.forEach(function(_){eC(ez,e.ballsColor,2*e.ballSize,_.x,_.y)}),ez.globalAlpha=.5,e.bricks.forEach(function(_,t){if(_){var r=eo(e,t),a=ei(e,t);eC(ez,"black"==_?"#666":_,e.brickWidth,r,a)}}),ez.globalAlpha=1,_c(e.lights,function(_){var t=_.x,r=_.y,a=_.time,s=_.color,n=_.size,l=_.duration;ez.globalAlpha=Math.min(1,2-(e.levelTime-a)/l*2),eC(ez,s,n,t,r)}),_c(e.particles,function(_){var t=_.x,r=_.y,a=_.time,s=_.color,n=_.size,l=_.duration;ez.globalAlpha=Math.min(1,2-(e.levelTime-a)/l*2),eC(ez,s,3*n,t,r)}),ez.globalAlpha=.2,ez.globalCompositeOperation="multiply",ez.fillStyle="black",ez.fillRect(0,0,t,r),ez.globalAlpha=.8,ez.globalCompositeOperation="multiply",_.svg&&eG.width&&eG.complete){if(eH.title!==_.name){eH.title=_.name,eH.width=e.canvasWidth,eH.height=e.canvasHeight;var a=eH.getContext("2d");a.fillStyle=_.color||"#000",a.fillRect(0,0,e.canvasWidth,e.canvasHeight);var s=ez.createPattern(eG,"repeat");s&&(a.fillStyle=s,a.fillRect(0,0,t,r))}ez.drawImage(eH,0,0)}else ez.fillStyle="#000",ez.fillRect(0,0,t,r);ez.globalAlpha=1,ez.globalCompositeOperation="source-over";var n=Date.now()-e.lastExplosion+5,l=n<200&&!J("basic");if(l){var o=(e.perks.bigger_explosions+1)*50/n;ez.translate(Math.sin(Date.now())*o,Math.sin(Date.now()+36)*o)}if(e.perks.bigger_explosions&&!J("basic")&&l?eS.style.filter="brightness("+(1+100/(1+n))+")":eS.style.filter="",ez.globalAlpha=1,_c(e.coins,function(e){ez.globalCompositeOperation="gold"===e.color||_.color?"source-over":"screen",eO(ez,e.color,e.size,e.x,e.y,_.color||"black",e.a)}),J("basic")||(ez.globalCompositeOperation="source-over",ez.globalAlpha=Math.min(.8,_i(e.coins)/20),e.balls.forEach(function(t){eP(ez,_.color||"#000",6*e.ballSize,t.x,t.y)})),ez.globalCompositeOperation="source-over",function(){ez.globalAlpha=1;var e=_P.combo>e0(_P)&&_P.perks.picky_eater&&!J("basic"),_=_P.perks.clairvoyant&&_P.brickHP.reduce(function(e,_){return e+_},0),t=_P.gameZoneWidth+"_"+_P.bricks.join("_")+eM.complete+"_"+e+"_"+_P.ballsColor+"_"+_P.perks.pierce_color+"_"+_;if(t!==eB){eB=t,eR.width=_P.gameZoneWidth,eR.height=_P.gameZoneWidth+1;var r=eR.getContext("2d");r.clearRect(0,0,_P.gameZoneWidth,_P.gameZoneWidth),r.resetTransform(),r.translate(-_P.offsetX,0),_P.bricks.forEach(function(_,t){var a=eo(_P,t),s=ei(_P,t);if(_){var n=_P.perks.reach&&ek(_P,t)&&!eW(_P,t),l=_P.ballsColor!==_&&"black"!==_&&e||n;r.globalCompositeOperation="source-over",function(e,_,t,r,a){var s=Math.ceil(r-_P.brickWidth/2),n=Math.ceil(a-_P.brickWidth/2),l=Math.ceil(r+_P.brickWidth/2)-1,o=Math.ceil(a+_P.brickWidth/2)-1,i=l-s,u=o-n,c="brick"+_+"_"+t+"_"+i+"_"+u;if(!eq[c]){var p,d,m,h,g,b,v=document.createElement("canvas");v.width=i,v.height=u;var f=v.getContext("2d");f.fillStyle=_,f.strokeStyle=t,f.lineJoin="round",f.lineWidth=2,p=f,d=1,m=1,h=i-2,g=u-2,b=2,p.beginPath(),p.moveTo(3,1),p.lineTo(d+h-b,m),p.quadraticCurveTo(d+h,m,d+h,m+b),p.lineTo(d+h,m+g-b),p.quadraticCurveTo(d+h,m+g,d+h-b,m+g),p.lineTo(d+b,m+g),p.quadraticCurveTo(d,m+g,d,m+g-b),p.lineTo(d,m+b),p.quadraticCurveTo(d,m,d+b,m),p.closePath(),f.fill(),f.stroke(),eq[c]=v}e.drawImage(eq[c],s,n,i,u)}(r,_,l&&"red"||_,a,s),_P.brickHP[t]>1&&_P.perks.clairvoyant&&(r.globalCompositeOperation="destination-out",eT(r,_P.brickHP[t].toString(),"white",_P.puckHeight,a,s)),"black"===_&&(r.globalCompositeOperation="source-over",function(e,_,t,r,a){var s="svg"+_+"_"+t+"_"+_.complete;if(!eq[s]){var n=document.createElement("canvas");n.width=t,n.height=t;var l=n.getContext("2d"),o=t/Math.max(_.width,_.height),i=_.width*o,u=_.height*o;l.drawImage(_,(t-i)/2,(t-u)/2,i,u),eq[s]=n}e.drawImage(eq[s],Math.round(r-t/2),Math.round(a-t/2))}(r,eM,_P.brickWidth,a,s))}})}ez.drawImage(eR,_P.offsetX,0)}(),ez.globalCompositeOperation="screen",_c(e.texts,function(_){var t=_.x,r=_.y,a=_.time,s=_.color,n=_.size,l=_.duration,o=e.levelTime-a;ez.globalAlpha=Math.max(0,Math.min(1,2-o/l*2)),ez.globalCompositeOperation="source-over",eT(ez,_.text,s,n,t,r-o/10)}),_c(e.particles,function(_){var t=_.x,r=_.y,a=_.time,s=_.color,n=_.size,l=_.duration;ez.globalAlpha=Math.max(0,Math.min(1,2-(e.levelTime-a)/l*2)),ez.globalCompositeOperation="screen",eP(ez,s,n,t,r),eC(ez,s,n,t,r)}),e.perks.extra_life){ez.globalAlpha=1,ez.globalCompositeOperation="source-over",ez.fillStyle=e.puckColor;for(var i=0;i e0(e)&&e.lastPuckMove>e.levelTime-500*e.perks.passive_income&&"red"||e.ballsColor,e.ballSize,_.x,_.y,e.puckColor),(eg(e,_)||eb(e,_))&&(ez.strokeStyle=e.puckColor,ez.beginPath(),ez.moveTo(e.puckPosition,e.gameZoneHeight),ez.bezierCurveTo(e.puckPosition,e.gameZoneHeight,e.puckPosition,_.y,_.x,_.y),ez.stroke()),e.perks.clairvoyant&&e.ballStickToPuck&&(ez.strokeStyle=e.ballsColor,ez.beginPath(),ez.moveTo(_.x,_.y),ez.lineTo(_.x+10*_.vx,_.y+10*_.vy),ez.stroke())}),ez.globalAlpha=1,ez.globalCompositeOperation="source-over",e.perks.streak_shots&&e.combo>e0(e)&&eL(ez,"red",e.puckWidth,e.puckHeight,-2,!!e.perks.concave_puck),eL(ez,e.puckColor,e.puckWidth,e.puckHeight,0,!!e.perks.concave_puck),e.combo>1){ez.globalCompositeOperation="source-over";var u="x "+e.combo,c=u.length*e.puckHeight/1.8,p=c+2*e.coinSize,d=e.puckPosition-p/2;p e.puckWidth?e.combo.toString():u,"#000",c>e.puckWidth?12:20,e.puckPosition,e.gameZoneHeight-e.puckHeight/2,!1)}var m=e.combo>e0(e);ez.globalCompositeOperation="source-over",ez.globalAlpha=e.perks.unbounded?.1:1,e.offsetXRoundedDown?(ez.fillStyle=m&&e.perks.left_is_lava?"red":e.puckColor,ez.fillRect(e.offsetX-1,0,1,r),ez.fillStyle=m&&e.perks.right_is_lava?"red":e.puckColor,ez.fillRect(t-e.offsetX+1,0,1,r)):(ez.fillStyle="red",m&&e.perks.left_is_lava&&ez.fillRect(0,0,1,r),m&&e.perks.right_is_lava&&ez.fillRect(t-1,0,1,r)),e.perks.top_is_lava&&e.combo>e0(e)&&(ez.fillStyle="red",ez.fillRect(e.offsetXRoundedDown,0,e.gameZoneWidthRoundedUp,1));var h=e.perks.compound_interest&&e.combo>e0(e);ez.fillStyle=h?"red":e.puckColor,J("mobile-mode")?(ez.fillRect(e.offsetXRoundedDown,e.gameZoneHeight,e.gameZoneWidthRoundedUp,1),e.running||eT(ez,C("play.mobile_press_to_play"),e.puckColor,e.puckHeight,e.canvasWidth/2,e.gameZoneHeight+(e.canvasHeight-e.gameZoneHeight)/2)):h&&ez.fillRect(e.offsetXRoundedDown,e.gameZoneHeight-1,e.gameZoneWidthRoundedUp,1),l&&ez.resetTransform()}}(_P)),_P.running&&function(e){if(J("record")){var _;l&&(_=e,u&&(u.drawImage(eS,_.offsetXRoundedDown,0,_.gameZoneWidthRoundedUp,_.gameZoneHeight,0,0,i.width,i.height),u.fillStyle="#FFF",u.textBaseline="top",u.font="12px monospace",u.textAlign="right",u.fillText(_.score.toString(),i.width-12,12),u.textAlign="left",u.fillText("Level "+(_.currentLevel+1)+"/"+ep(_),12,12)),(null==o?void 0:o.requestFrame)?null==o||o.requestFrame():(null==l?void 0:l.requestFrame)&&l.requestFrame())}}(_P),J("sound")&&function(e){if(!(K>Date.now()-60))for(var _ in K=Date.now(),e.aboutToPlaySound){var t,r=e.aboutToPlaySound[_];r.vol&&(Q[_](Math.min(2,r.vol),(t=e,Math.max(0,Math.min(1,(r.x-t.offsetXRoundedDown)/t.gameZoneWidthRoundedUp))),e.combo),r.vol=0)}}(_P),requestAnimationFrame(e),_y++}()}();