\n ').concat(ei[a.l.name],"\n
\n ").concat(n,"\n ").concat(null===(_=a.reason)||void 0===_?void 0:_.text,"\n
\n
\n \n ")}var _8=new Set(j("breakout_71_unlocked_levels",[]));function _9(){return te.apply(this,arguments)}function te(){return(te=(0,k._)(function(){var e;return(0,q.__generator)(this,function(_){switch(_.label){case 0:return[4,tm()];case 1:if(_.sent()||tW.running)return[2];return tW.running=!0,tW.ballStickToPuck=!1,!function(e){if(ed("record")&&!i){if(!c){p=(c=document.createElement("canvas")).getContext("2d",{antialias:!1,alpha:!1}),u=(l=c.captureStream(0)).getVideoTracks()[0];var _=(ev(),s);_&&l.addTrack(_.stream.getAudioTracks()[0])}c.width=e.gameZoneWidthRoundedUp,c.height=e.gameZoneHeight;var t=[],a=new MediaRecorder(l,{videoBitsPerSecond:35e5});i=a,a.start(),i.pause(),a.ondataavailable=function(e){t.push(e.data)},a.onstop=(0,k._)(function(){var e,_,a,r;return(0,q.__generator)(this,function(s){switch(s.label){case 0:if((_=new Blob(t,{type:"video/webm"})).size<2e5)return[2];s.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 s.sent(),[3,1];case 3:var n;if((a=document.createElement("video")).autoplay=!0,a.controls=!1,a.disablePictureInPicture=!0,a.disableRemotePlayback=!0,a.width=c.width,a.height=c.height,a.loop=!0,a.muted=!0,a.playsInline=!0,a.src=URL.createObjectURL(_),e.appendChild(a),(r=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"),r.target="_blank",!window.location.href.endsWith("index.html?isInWebView=true"))return[3,5];return[4,(n=_,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(n)}))];case 4:return r.href=s.sent(),[3,6];case 5:r.href=a.src,s.label=6;case 6:return r.textContent=Z("settings.record_download",{size:(_.size/1e6).toFixed(2)}),e.appendChild(r),[2]}})})}}(tW),null===(e=ev())||void 0===e||e.resume(),ed("record")&&(null==i?void 0:i.state)==="paused"&&i.resume(),[2]}})})).apply(this,arguments)}function t_(e){if(tW.running&&!tW.pauseTimeout){var _=function(){tW.running=!1,setTimeout(function(){var e;tW.running||null===(e=ev())||void 0===e||e.suspend()},1e3),_o(),tW.pauseTimeout=null,__.className="",tW.needsRender=!0};e?(tW.pauseUsesDuringRun++,tW.pauseTimeout=setTimeout(_,Math.min(50*Math.max(0,tW.pauseUsesDuringRun-5),500))):_(),document.exitPointerLock&&document.exitPointerLock()}}var tt=function(e){var _=function(_){_.x=e.offsetXRoundedDown+(_.x-a)/r*e.gameZoneWidthRoundedUp,_.y=_.y/s*e.gameZoneHeight},t=function(_){_.x=e.offsetXRoundedDown+(_.x-a)/r*e.gameZoneWidthRoundedUp,_.y=_.y/s*e.gameZoneHeight,_.previousX=_.x,_.previousY=_.y};if(!e)throw Error("Missign game state");var a=e.offsetXRoundedDown,r=e.gameZoneWidthRoundedUp,s=e.gameZoneHeight,n=window.innerWidth,o=window.innerHeight;e.canvasWidth=n,e.canvasHeight=o,eY.width=n,eY.height=o,eQ.width=n,eQ.height=o,e0.width=n/16,e0.height=o/16,e.gameZoneHeight=ed("mobile-mode")?Math.floor(.8*o):o;var i=Math.round(Math.min(e.canvasWidth,.73*e.gameZoneHeight*(e.gridSize+2*e.perks.unbounded)/e.gridSize));e.brickWidth=2*Math.floor(i/(e.gridSize+2*e.perks.unbounded)/2),e.gameZoneWidth=e.brickWidth*e.gridSize,e.offsetX=Math.floor((e.canvasWidth-e.gameZoneWidth)/2),e.offsetXRoundedDown=e.offsetX-e.perks.unbounded*e.brickWidth,e.offsetX.95?(t++,e.rerolls++,r=Z("level_up.plus_one_upgrade_and_reroll")):_>.9&&(t++,r=Z("level_up.plus_one_upgrade")),e.levelMisses<3?(t++,e.rerolls++,n=Z("level_up.plus_one_upgrade_and_reroll")):e.levelMisses<6&&(t++,n=Z("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=eP(e).map(function(_){return x(w({},_),{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(_){_L(e,_.id)}),!(o=p.map(function(_){return{text:_.name+(e.perks[_.id]?Z("level_up.upgrade_perk_to_level",{level:e.perks[_.id]+1}):""),icon:ei["icon:"+_.id],value:_.id,help:_.help(e.perks[_.id]+1)}})).length))return[3,3];return e.rerolls&&o.push({text:Z("level_up.reroll",{count:e.rerolls}),help:Z("level_up.reroll_help"),value:"reroll",icon:ei["icon:reroll"]}),i=a&&r&&n&&s&&Z("level_up.compliment_perfect")||(a||r||n||s)&&Z("level_up.compliment_good")||Z("level_up.compliment_advice"),[4,_m(x(w({},{title:Z("level_up.pick_upgrade_title")+(t?" ("+(t+1)+")":""),content:["".concat(Z("level_up.before_buttons",{score:e.score-e.levelStartScore,catchGain:r,levelSpawnedCoins:e.levelSpawnedCoins,time:Math.round(e.levelTime/1e3),timeGain:a,levelMisses:e.levelMisses,missesGain:n,levelWallBounces:e.levelWallBounces,wallHitsGain:s,compliment:i}),"\n
\n ").concat(Z("level_up.after_buttons",{level:e.currentLevel+1,max:eL(e)}),"
\n ").concat(eB(e,e.currentLevel+1),"
\n")].concat(z(o),[eR(e),_7(e),''])}),{allowClose:!1}))];case 2:return"reroll"===(l=u.sent())?(t++,e.rerolls--):(e.perks[l]++,"instant_upgrade"===l&&(t+=2),e.runStatistics.upgrades_picked++),[3,1];case 3:return[2]}})})).apply(this,arguments)}function tr(e,_){return eO(tW,Math.floor(_/tW.brickWidth),Math.floor((e-tW.offsetX)/tW.brickWidth))}function ts(e){if(tW.bricks[e])return e}function tn(e,_,t){var a,r,s;return null!==(s=null!==(r=null!==(a=ts(tr(e-t,_-t)))&&void 0!==a?a:ts(tr(e+t,_-t)))&&void 0!==r?r:ts(tr(e+t,_+t)))&&void 0!==s?s:ts(tr(e-t,_+t))}window.addEventListener("resize",function(){return tt(tW)}),window.addEventListener("fullscreenchange",function(){return tt(tW)}),setInterval(function(){var e=window.innerWidth,_=window.innerHeight;(e!==tW.canvasWidth||_!==tW.canvasHeight)&&tt(tW)},1e3),eY.addEventListener("mouseup",function(e){0===e.button&&(tW.running?t_(!0):(_9(),ed("pointerLock")&&eY.requestPointerLock&&eY.requestPointerLock().then()))}),eY.addEventListener("mousemove",function(e){document.pointerLockElement===eY?_W(tW,tW.puckPosition+e.movementX):_W(tW,e.x)}),eY.addEventListener("touchstart",function(e){var _;e.preventDefault(),(null===(_=e.touches)||void 0===_?void 0:_.length)&&(_W(tW,e.touches[0].pageX),_x(tW),_9())}),eY.addEventListener("touchend",function(e){e.preventDefault(),t_(!0)}),eY.addEventListener("touchcancel",function(e){e.preventDefault(),t_(!0)}),eY.addEventListener("touchmove",function(e){var _;(null===(_=e.touches)||void 0===_?void 0:_.length)&&_W(tW,e.touches[0].pageX)});var to=0,ti=60;setInterval(function(){ti=to,to=0},1e3),setInterval(function(){tW.creative||(d||(d=eu.map(function(e,_){return w({name:e.name,li:_,l:e},eN(_))})),d.forEach(function(e){var _=e.name,t=e.minScore,a=e.forbidden,r=e.required;e.l,!(_8.has(_)||tW.score"+Z("unlocks.just_unlocked")+""),_R(tW,"colorChange",0,1)))}))},500),window.addEventListener("visibilitychange",function(){document.hidden&&t_(!0)}),__.addEventListener("click",function(e){e.preventDefault(),_l||_5(tW)}),document.addEventListener("visibilitychange",function(){document.hidden&&t_(!0)}),document.getElementById("menu").addEventListener("click",function(e){e.preventDefault(),_l||tu()});var tl=(m=Math).max.apply(m,z(ec.map(function(e){return e.threshold})));function tu(){return tc.apply(this,arguments)}function tc(){return(tc=(0,k._)(function(){var e,_;return(0,q.__generator)(this,function(t){switch(t.label){case 0:var a;return t_(!0),e=[{icon:ei["icon:new_run"],text:Z("main_menu.normal"),help:(eI()?Z("main_menu.high_score",{score:eI()}):"")||Z("main_menu.normal_help"),value:function(){tw({levelToAvoid:eC(tW).name})}},{icon:ei["icon:creative"],text:Z("lab.menu_entry"),help:A()').concat(e.label,"")}).join(""),s=a.sort(function(e,a){return t*(r[_].field(e)-r[_].field(a))}).map(function(e){return""+r.map(function(_){var t,a=null!==(t=_.field(e))&&void 0!==t?t:0;return""+(_.render||function(e){return e.toString()})(a)+" | "}).join("")+"
"}).join(""),[4,_m({title:Z("history.title"),className:"history",content:["\n\n".concat(e,"
\n").concat(s,"\n
\n ")]})];case 1:if(!(n=i.sent()))return[2,{v:void 0}];return n.startsWith("sort:")&&((o=parseInt(n.split(":")[1]))==_?t*=-1:(t=-1,_=o)),[2]}})},_=0,t=-1,r=[{label:Z("history.columns.started"),field:function(e){return e.started},render:function(e){return new Date(e).toISOString().slice(0,10)}},{label:Z("history.columns.score"),field:function(e){return e.score}}].concat(z(Q.map(function(e){return{label:ei["icon:"+e.id],tooltip:e.name,field:function(_){var t;return(null===(t=_.perks)||void 0===t?void 0:t[e.id])||0},render:function(e){return e||"-"}}}))),n.label=1;case 1:return[5,(0,q.__values)(e())];case 2:if(s=n.sent(),"object"===(0,_3._)(s))return[2,s.v];return[3,1];case 3:return[2]}})})()}}),{icon:ei["icon:unlocks"],text:Z("main_menu.unlocks"),help:Z("main_menu.unlocks_help"),value:function(){(function(){tb.apply(this,arguments)})()}}].concat(z(function(e){if(!ed("donation_reminder"))return[];var _=Y();return[{text:Z("main_menu.donate",{hours:_}),help:Z("main_menu.donate_help",{suggestion:Math.min(20,Math.max(1,.2*_)).toFixed(0)}),icon:ei["icon:premium"],value:function(){window.open("https://paypal.me/renanlecaro","_blank")}}]}(0)),[{text:Z("main_menu.settings_title"),help:Z("main_menu.settings_help"),icon:ei["icon:settings"],value:function(){tp()}},{icon:ei["icon:help"],text:Z("help.title"),help:Z("help.help"),value:function(){return(0,k._)(function(){return(0,q.__generator)(this,function(e){switch(e.label){case 0:return[4,_m({title:Z("help.title"),allowClose:!0,content:[J(Z("help.content",{catchRateBest:95,catchRateGood:90,levelTimeBest:30,levelTimeGood:60,missesBest:3,missesGood:6,wallBouncedBest:3,wallBouncedGood:10})),J(Z("help.upgrades"))].concat(z(ec.map(function(e){return'\n\n '.concat(e.icon,"\n
\n ").concat(e.name,"
\n ").concat(e.help(1),"\n
\n
\n \n ").concat(J(e.fullHelp),"\n")})),[""+Z("help.levels")+"
"],z(eu.filter(function(e){var _;return null===(_=e.credit)||void 0===_?void 0:_.trim()}).map(function(e){return'\n\n '.concat(ei[e.name],"\n
\n
\n ").concat(e.name," \n
\n ").concat(J(e.credit||""),"\n
\n \n
")})))})];case 1:return e.sent(),[2]}})})()}}]),[4,_m({title:Z("main_menu.title"),content:z(e).concat([' \n Made in France by Renan LE CARO. \n Donate\n Discord\n F-Droid\n Google Play\n itch.io \n Gitlab\n Web version\n HackerNews\n Privacy Policy\n Archives\n v.'.concat(eo,"\n
")]),allowClose:!0})];case 1:return(_=t.sent())&&(_(),tW.needsRender=!0),[2]}})})).apply(this,arguments)}function tp(){return td.apply(this,arguments)}function td(){return(td=(0,k._)(function(){var e,_,t,a,r,s,n,o,i;return(0,q.__generator)(this,function(l){switch(l.label){case 0:t_(!0),(_=[{disabled:ed("easy"),icon:ei["icon:starting_perks"],text:Z("starting_perks.title"),help:Z("starting_perks.help"),value:function(){return(0,k._)(function(){return(0,q.__generator)(this,function(e){switch(e.label){case 0:return[4,_$()];case 1:return e.sent(),[2]}})})()}}]).push({icon:ei[null===(e=D.find(function(e){return e.value===V()}))||void 0===e?void 0:e.levelName],text:Z("settings.language"),help:Z("settings.language_help"),value:function(){return(0,k._)(function(){var e,_;return(0,q.__generator)(this,function(t){switch(t.label){case 0:return[4,_m({title:Z("settings.language"),content:[Z("settings.language_help")].concat(z(D.map(function(e){return x(w({},e),{icon:ei[e.levelName]})}))),allowClose:!0})];case 1:if(!(_=(e=t.sent())&&e!==V()))return[3,3];return[4,tv(tW)];case 2:_=t.sent(),t.label=3;case 3:return _&&(E("lang",e),window.location.reload()),[2]}})})()}}),t=!0,a=!1,r=void 0;try{for(s=function(){var e=o.value;ep[e]&&_.push({icon:ed(e)?ei["icon:checkmark_checked"]:ei["icon:checkmark_unchecked"],text:ep[e].name,help:ep[e].help,value:function(){em(e),tt(tW),tm(),tp()}})},n=Object.keys(ep)[Symbol.iterator]();!(t=(o=n.next()).done);t=!0)s()}catch(e){a=!0,r=e}finally{try{t||null==n.return||n.return()}finally{if(a)throw r}}return _.push({icon:ei["icon:download"],text:Z("settings.download_save_file"),help:Z("settings.download_save_file_help"),value:function(){return(0,k._)(function(){var e,_;return(0,q.__generator)(this,function(t){return e=_1(),(_=document.createElement("a")).setAttribute("href","data:application/json;base64,"+btoa(JSON.stringify({fileType:"B71-save-file",appVersion:eo,signedPayload:e,key:et("Security by obscurity, but really the game is oss so eh"+e)}))),_.setAttribute("download","b71-save-"+new Date().toISOString().slice(0,19).replace(/[^0-9]+/gi,"-")+".b71"),document.body.appendChild(_),_.click(),setTimeout(function(){return document.body.removeChild(_)},1e3),[2]})})()}}),_.push({icon:ei["icon:upload"],text:Z("settings.load_save_file"),help:Z("settings.load_save_file_help"),value:function(){return(0,k._)(function(){var e,_;return(0,q.__generator)(this,function(t){if(!document.getElementById("save_file_picker")){var a;(_=document.createElement("input")).setAttribute("type","file"),_.setAttribute("id","save_file_picker"),_.setAttribute("accept",".b71,.json"),_.style.position="absolute",_.style.left="-1000px",_.addEventListener("change",(a=(0,k._)(function(e){var t,a,r,s,n,o,i,l,u;return(0,q.__generator)(this,function(e){switch(e.label){case 0:if(e.trys.push([0,4,,6]),!(a=_&&(null===(t=_.files)||void 0===t?void 0:t.item(0))))return[3,3];return[4,new Promise(function(e,_){var t=new FileReader;t.onload=function(){var _;e((null===(_=t.result)||void 0===_?void 0:_.toString())||"")},t.onerror=function(){_(t.error)},t.readAsText(a)})];case 1:if(s=(r=JSON.parse(e.sent())).fileType,n=r.appVersion,o=r.signedPayload,i=r.key,"B71-save-file"!==s)throw Error("Not a B71 save file");if(n>eo)throw Error("Please update your app first, this file is for version "+n+" or newer.");if(i!==et("Security by obscurity, but really the game is oss so eh"+o))throw Error("Key does not match content.");for(var c in l=JSON.parse(o),localStorage.clear(),l)localStorage.setItem(c,l[c]);return[4,_m({title:Z("settings.save_file_loaded"),content:[Z("settings.save_file_loaded_help"),{text:Z("settings.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,_m({title:Z("settings.save_file_error"),content:[u.message,{text:Z("settings.save_file_loaded_ok")}]})];case 5:return e.sent(),[3,6];case 6:return _.value="",[2]}})}),function(e){return a.apply(this,arguments)})),document.body.appendChild(_)}return null===(e=document.getElementById("save_file_picker"))||void 0===e||e.click(),[2]})})()}}),_.push({icon:ei["icon:coins"],text:Z("settings.max_coins",{max:H()}),help:Z("settings.max_coins_help"),value:function(){return(0,k._)(function(){return(0,q.__generator)(this,function(e){switch(e.label){case 0:return E("max_coins",(j("max_coins",1)+1)%6),[4,tp()];case 1:return e.sent(),[2]}})})()}}),_.push({icon:ei["icon:particles"],text:Z("settings.max_particles",{max:F()}),help:Z("settings.max_particles_help"),value:function(){return(0,k._)(function(){return(0,q.__generator)(this,function(e){switch(e.label){case 0:return E("max_particles",(j("max_particles",1)+1)%6),[4,tp()];case 1:return e.sent(),[2]}})})()}}),_.push({icon:ei["icon:reset"],text:Z("settings.reset"),help:Z("settings.reset_help"),value:function(){return(0,k._)(function(){return(0,q.__generator)(this,function(e){switch(e.label){case 0:return[4,_m({title:Z("settings.reset"),content:[Z("settings.reset_instruction"),{text:Z("settings.reset_confirm"),value:!0},{text:Z("settings.reset_cancel"),value:!1}],allowClose:!0})];case 1:return e.sent()&&(localStorage.clear(),window.location.reload()),[2]}})})()}}),[4,_m({title:Z("main_menu.settings_title"),content:[Z("main_menu.settings_help")].concat(z(_)),allowClose:!0,className:"settings"})];case 1:return(i=l.sent())&&(i(),tW.needsRender=!0),[2]}})})).apply(this,arguments)}function tm(){return tg.apply(this,arguments)}function tg(){return(tg=(0,k._)(function(){var e;return(0,q.__generator)(this,function(_){switch(_.label){case 0:if(_.trys.push([0,10,,11]),!(document.fullscreenEnabled||document.webkitFullscreenEnabled))return[2,!1];if(!(null!==document.fullscreenElement&&!ed("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(!(ed("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 tb(){return(tb=(0,k._)(function(){var e,_,t,a,r,s;return(0,q.__generator)(this,function(n){switch(n.label){case 0:return e=A(),_=ed("mobile-mode")?"help":"tooltip",t=ec.sort(function(e,_){return e.threshold-_.threshold}).map(function(t){var a=t.name,r=t.id,s=t.threshold,n=t.icon,o=t.help;return W({text:a,disabled:e'):"";return W({text:e.name+s,disabled:!!r,value:{level:e.name},icon:ei[e.name]},_,(null==r?void 0:r.text)||ex(e))}),[4,_m({title:Z("unlocks.title_upgrades",{unlocked:t.filter(function(e){return!e.disabled}).length,out_of:t.length}),content:["".concat(Z("unlocks.intro",{ts:e}),"\n ").concat(t.find(function(e){return e.disabled})?Z("unlocks.greyed_out_help"):"","
")].concat(z(t),[Z("unlocks.level",{unlocked:r.filter(function(e){return!e.disabled}).length,out_of:r.length})],z(r)),allowClose:!0,className:ed("mobile-mode")?"":"actionsAsGrid"})];case 1:if(!(s=n.sent()))return[3,3];return[4,tv(tW)];case 2:n.sent()&&tw(w({},s)),n.label=3;case 3:return[2]}})})).apply(this,arguments)}function tv(e){return th.apply(this,arguments)}function th(){return(th=(0,k._)(function(e){return(0,q.__generator)(this,function(_){return!e.currentLevel||_l?[2,!0]:(t_(!0),[2,_m({title:Z("confirmRestart.title"),content:[Z("confirmRestart.text"),{value:!0,text:Z("confirmRestart.yes")},{value:!1,text:Z("confirmRestart.no")}]})])})})).apply(this,arguments)}var ty={ArrowLeft:0,ArrowRight:0,Shift:0};function tf(e,_){ty[e]=_,tW.keyboardPuckSpeed=(ty.ArrowRight-ty.ArrowLeft)*(1+2*ty.Shift)*tW.gameZoneWidth/50}document.addEventListener("keydown",(t=(0,k._)(function(e){return(0,q.__generator)(this,function(_){return"f"!==e.key.toLowerCase()||e.ctrlKey||e.metaKey?e.key in ty&&tf(e.key,1):(em("fullscreen"),tm())," "!==e.key||_l||(tW.running?t_(!0):_9(),e.preventDefault()),[2]})}),function(e){return t.apply(this,arguments)}));var tk=new Date;document.addEventListener("keyup",(a=(0,k._)(function(e){var _,t,a,r,s;return(0,q.__generator)(this,function(n){switch(n.label){case 0:if(s=document.querySelector("button:focus"),!(e.key in ty))return[3,1];return tf(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===(a=s.previousElementSibling)||void 0===a?void 0:a.tagName)!=="BUTTON")return[3,3];return null==s||null===(r=s.previousElementSibling)||void 0===r||r.focus(),[3,10];case 3:if(!("Escape"===e.key&&_u))return[3,4];return _u(),[3,10];case 4:if(!("Escape"===e.key&&tW.running))return[3,5];return t_(!0),[3,10];case 5:if(!("m"===e.key.toLowerCase()&&!_l))return[3,6];return tu().then(),[3,10];case 6:if(!("s"===e.key.toLowerCase()&&!_l))return[3,7];return _5(tW).then(),[3,10];case 7:if(!("r"===e.key.toLowerCase()&&!_l&&tk1&&void 0!==arguments[1]?arguments[1]:1;e.runStatistics.max_combo=Math.max(e.runStatistics.max_combo,e.combo),e.lastCombo=e.combo,e.perks.addiction&&e.lastBrickBroken&&e.lastBrickBrokene.lastTickDown+1e3&&e.perks.hot_start&&(e.lastTickDown=e.levelTime,_M(e,e.perks.hot_start,e.puckPosition,e.gameZoneHeight-2*e.puckHeight)),t<=e.perks.skip_last&&!e.autoCleanUses&&(e.bricks.forEach(function(_,t){_&&_P(e,t,e.balls[0],!0)}),e.autoCleanUses++);var a=_V(e.respawns);if(!e.running||t||a?e.winAt=0:e.winAt||(e.winAt=e.levelTime+5e3),e.running&&e.winAt&&e.levelTime>e.winAt||e.levelTime&&!t&&!_V(e.coins))e.currentLevel+1l&&i<16*l*e.perks.ball_attracts_coins){var u=1-.02*(.5+e.perks.ball_attracts_coins);t.vx*=u,t.vy*=u,t.vy*=u;var c=(o.x-t.x)/i*50*e.perks.ball_attracts_coins,p=(o.y-t.y)/i*50*e.perks.ball_attracts_coins;t.vx+=c,t.vy+=p,!ed("basic")&&Math.random()*e.perks.ball_attracts_coins*_>.9&&_F(e,t.x+5*c,t.y+5*p,2*c,2*p,_E(),!0,e.coinSize/2,100)}}}e.perks.bricks_attract_coins&&_X(e,t,e.perks.bricks_attract_coins*_,2,!1);var d=1-(.03*e.perks.viscosity+.002)*_/(1+e.perks.etherealcoins);e.perks.etherealcoins||(t.vy*=d,t.vx*=d),t.vx>7*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;var m=e.perks.helium>0&&2*Math.abs(t.x-e.puckPosition)>e.puckWidth+t.size,g=_*t.weight*.8*(m?-e.perks.helium:1);e.perks.etherealcoins&&(e.perks.helium?g*=.2/e.perks.etherealcoins:g*=0),t.vy+=g,e.perks.helium&&!ed("basic")&&Math.random()<.1*_&&_F(e,t.x,t.y,0,10*g,e.perks.metamorphosis||ed("colorful_coins")?t.color:"#ffd300",!0,5,250);var b=(Math.abs(t.vx)+Math.abs(t.vy))*10,v=_H(e,t,t.size/2,_);t.y>e.gameZoneHeight-r-e.puckHeight&&t.yt&&_.threshold<=a&&(_R(e,"colorChange",0,1),_k(ei["icon:"+_.id]+""+Z("gameOver.unlocked_perk")+""))})}}(e,t.points),e.score>e.highScore&&!e.creative&&(e.highScore=e.score,localStorage.setItem("breakout-3-hs-short",e.score.toString())),ed("basic")||_F(e,t.previousX,t.previousY,(e.canvasWidth-t.x)/100,-t.y/100,e.perks.metamorphosis||ed("colorful_coins")?t.color:"#ffd300",!0,e.coinSize/2,100+50*Math.random()),_R(e,"coinCatch",t.x,1),e.runStatistics.score+=t.points,e.perks.asceticism&&_M(e,3*e.perks.asceticism*t.points,t.x,t.y),_N(e.coins,a)):t.y>e.canvasHeight+10*r&&(e.levelLostCoins+=t.points,_N(e.coins,a),e.perks.compound_interest&&_z(e,t.x,e.gameZoneHeight-20),e.combo<30*e.perks.fountain_toss&&Math.random()<1/e.combo*e.perks.fountain_toss&&_q(e,1,t.x,e.gameZoneHeight-20));var h=function(e,_){var t,a,r=_.size/2,s=_.x,n=_.y,o=_.previousX,i=_.previousY,l=tn(o,n,r),u=tn(s,i,r),c=void 0===l&&void 0===u&&tn(s,n,r)||void 0;if(e.perks.ghost_coins)void 0!==(null!==(t=null!=l?l:u)&&void 0!==t?t:c)&&(_.vy*=1-.2/e.perks.ghost_coins,_.vx*=1-.2/e.perks.ghost_coins);else{if(void 0!==l||void 0!==c){_.y=_.previousY,_.vy*=-1;var p=e.bricks[tr(s-r,n+r)],d=e.bricks[tr(s+r,n+r)];p&&!d&&(_.vx+=1,_.sa-=1),!p&&d&&(_.vx-=1,_.sa+=1)}(void 0!==u||void 0!==c)&&(_.x=_.previousX,_.vx*=-1)}return null!==(a=null!=l?l:u)&&void 0!==a?a:c}(e,t);if(e.perks.metamorphosis&&void 0!==h&&e.bricks[h]&&t.color!==e.bricks[h]&&"black"!==e.bricks[h]&&t.metamorphosisPoints&&(e.bricks[h]=t.color,t.metamorphosisPoints--,_R(e,"colorChange",t.x,.3),e.perks.hypnosis)){var y=eG(e,t.x,t.y);y&&(t.x=y.x,t.y=y.y,t.vx=(Math.random()-.5)*e.baseSpeed,t.vy=(Math.random()-.5)*e.baseSpeed,t.metamorphosisPoints=e.perks.metamorphosis)}if(!e.perks.ghost_coins&&void 0!==h||v){var f=1-.2/(1+e.perks.etherealcoins);t.vx*=f,t.vy*=f,1>Math.abs(t.vy)&&(t.vy=0),t.sa*=.9,b>20&&!t.collidedLastFrame&&_R(e,"coinBounce",t.x,.2),t.collidedLastFrame=!0}else t.collidedLastFrame=!1}),e.balls.forEach(function(t){return function(e,_,t){_.previousVX=_.vx,_.previousVY=_.vy;var a,r=1+e.perks.telekinesis+e.perks.ball_repulse_ball+e.perks.puck_repulse_ball+e.perks.ball_attract_ball;eE(e,_)>0&&(r+=3,_.vx+=(e.puckPosition-_.x)/1e3*t*e.perks.telekinesis*eE(e,_)),eA(e,_)>0&&(r+=3,_.vx+=(e.puckPosition-_.x)/1e3*t*e.perks.yoyo*eA(e,_)),_.hitSinceBounce<3*e.perks.bricks_attract_ball&&_X(e,_,e.perks.bricks_attract_ball*t*.2,2+e.perks.bricks_attract_ball,Math.random()<.5*t),_.vx*_.vx+_.vy*_.vy0?1:-1)*.02/r);var s=!0,n=!1,o=void 0;if(e.perks.ball_repulse_ball)try{for(var i,l=e.balls[Symbol.iterator]();!(s=(i=l.next()).done);s=!0){var u=i.value;u.x>=_.x||_A(e,_,u,e.perks.ball_repulse_ball,!0)}}catch(e){n=!0,o=e}finally{try{s||null==l.return||l.return()}finally{if(n)throw o}}var c=!0,p=!1,d=void 0;if(e.perks.ball_attract_ball)try{for(var m,g=e.balls[Symbol.iterator]();!(c=(m=g.next()).done);c=!0){var b=m.value;b.x>=_.x||function(e,_,t,a){var r=eF(_,t),s=3*e.gameZoneWidth/4;if(!(re.offsetX+e.gameZoneWidth/2&&_z(e,_.x,_.y),e.perks.top_is_lava&&v>=2&&_z(e,_.x,_.y+3*e.ballSize),e.perks.trampoline&&_M(e,e.perks.trampoline,_.x,_.y+e.ballSize),_R(e,"wallBeep",_.x,1),e.levelWallBounces++,e.runStatistics.wall_bounces++);var h=e.gameZoneHeight-e.puckHeight-e.ballSize/2,y=Math.abs(_.x-e.puckPosition)h&&_.vy>0&&(y||e.balls.length<2&&e.perks.extra_life&&_.y>h+e.puckHeight/2)){if(y){var f=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=f*Math.cos(k),_.vy=f*Math.sin(k),_R(e,"wallBeep",_.x,1)}else _.vy*=-1,function(e,_,t,a){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,a){return t&&_P(e,a,_,!0)})),_R(e,"lifeLost",_.x,1),!ed("basic"))for(var r=0;r<10;r++)_F(e,t,a,Math.random()*e.baseSpeed*3,3*e.baseSpeed,"#FF0000",!1,e.coinSize/2,150)}(e,_,_.x,_.y);if(e.perks.streak_shots&&_z(e,_.x,_.y),e.perks.trampoline&&_q(e,e.perks.trampoline,_.x,_.y),e.perks.nbricks&&_.hitSinceBouncee.gameZoneHeight+e.ballSize/2&&(_.destroyed=!0,e.runStatistics.balls_lost++,e.balls.find(function(e){return!e.destroyed})||_v(Z("gameOver.lost.title"),Z("gameOver.lost.summary",{score:e.score})));var w=e.ballSize/2,x=_.x,S=_.y,z=_.previousX,q=_.previousY,M=tn(z,S,w),O=tn(x,q,w),G=void 0===M&&void 0===O&&tn(x,S,w)||void 0,P=null!==(a=null!=M?M:O)&&void 0!==a?a:G;if(void 0!==P){var L=e.bricks[P];_.hitSinceBounce++,e.perks.nbricks&&(_.hitSinceBounce>e.perks.nbricks?_z(e,_.x,_.y):_q(e,e.perks.nbricks,_.x,_.y));var R=!1,B=1+(e.perks.pierce_color&&(void 0===M||e.bricks[M]===e.ballsColor)&&(void 0===O||e.bricks[O]===e.ballsColor)&&(void 0===G||e.bricks[G]===e.ballsColor)?e.perks.pierce_color:0);e.brickHP[P]-=B;var C=Math.min(_.piercePoints,Math.max(1,e.brickHP[P]+1));e.brickHP[P]-=C,_.piercePoints-=C,e.brickHP[P]<0&&(e.brickHP[P]=0,R=!0),void 0===M&&void 0===G||R||(_.y=_.previousY,_.vy*=-1),void 0===O&&void 0===G||R||(_.x=_.previousX,_.vx*=-1),e.brickHP[P]?(_R(e,"wallBeep",x,1),function(e,_,t,a){var r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:8,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:150;_I(e.lights,function(n){n.time=e.levelTime,n.x=_,n.y=t,n.color=a,n.size=r,n.duration=s})}(e,eq(e,P),eM(e,P),"#FFFFFF",e.brickWidth+2,50*e.brickHP[P])):(_.brokenSinceBounce++,_P(e,P,_,!1),_.sapperUses0&&!_.hitSinceBounce,A=e.combo-1;if(E||A&&Math.random()>.1/(1+A)||j&&Math.random()>.1/(1+j)||A&&Math.random()>.1/(1+A)){var H=j&&(Math.random()>.5?"#ffb92a":"#FF0000")||E&&"#FF0000"||e.ballsColor;_F(e,_.x,_.y,e.perks.pierce_color||T?-_.vx+(Math.random()-.5)*e.baseSpeed/3:(Math.random()-.5)*e.baseSpeed,e.perks.pierce_color||T?-_.vy+(Math.random()-.5)*e.baseSpeed/3:(Math.random()-.5)*e.baseSpeed,H,!0,e.coinSize/2,100)}}}(e,t,_)}),e.perks.shocks&&e.balls.forEach(function(_,t){return e.balls.forEach(function(a,r){if(t.5&&_F(e,e.offsetXRoundedDown+Math.random()*e.gameZoneWidthRoundedUp,Math.random()*e.gameZoneHeight,8*s,0,_E(),!0,e.coinSize/2,150);_U(e.particles,function(t,a){t.x+=t.vx*_,t.y+=t.vy*_,!t.ethereal&&(t.vy+=.5*_,ts(tr(t.x,t.y))&&_N(e.particles,a))})}if(e.combo>_S(e)&&!ed("basic")&&(e.combo-_S(e))*Math.random()>5){if(e.perks.top_is_lava&&_F(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&&_F(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&&_F(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 o=e.puckPosition,i=0;do o=e.offsetXRoundedDown+e.gameZoneWidthRoundedUp*Math.random(),i++;while(Math.abs(o-e.puckPosition)_.time)_T(e,_.index,_.color),_N(e.respawns,t);else{var a=_.index,r=_.color,s=Math.random()>.5,n=Math.random()>.5?1:-1,o=Math.random()>.5?1:-1;_F(e,eq(e,a)+n*e.brickWidth/2,eM(e,a)+o*e.brickWidth/2,s?0:-n*e.baseSpeed,s?-o*e.baseSpeed:0,r,!0,e.coinSize/2,250)}}),_U(e.particles,function(_,t){e.levelTime>_.time+_.duration&&_N(e.particles,t)}),_U(e.texts,function(_,t){e.levelTime>_.time+_.duration&&_N(e.texts,t)}),_U(e.lights,function(_,t){e.levelTime>_.time+_.duration&&_N(e.lights,t)})}(tW,a)),(tW.running||tW.needsRender)&&(tW.needsRender=!1,function(e){var _=eC(e),t=e.combo>_S(e),a=eY.width,r=eY.height;if(a&&r){e.currentLevel||e.levelTime?_t.innerText=Z("play.current_lvl",{level:e.currentLevel+1,max:eL(e)}):_t.innerText=Z("play.menu_label");var s=e.levelSpawnedCoins?(e.levelSpawnedCoins-e.levelLostCoins)/e.levelSpawnedCoins:1;if(__.innerHTML=(ed("show_fps")?' \n Math.abs(ti-60)&&"good"||"bad",'">\n ').concat(ti," FPS\n / \n \n "):"")+(ed("show_stats")?' \n .9&&"good"||"",'" data-tooltip="').concat(Z("play.stats.coins_catch_rate"),'">\n ').concat(Math.floor(100*s),'%\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,""),__.className=e.lastScoreIncrease>e.levelTime-500?"active":"",!ed("basic")&&_.svg&&"#000000"===_.color){e1.globalCompositeOperation="source-over",e1.globalAlpha=.99,e1.fillStyle=_.color,e1.fillRect(0,0,a/16,r/16);var n=ed("extra_bright")?3:1;if(e1.globalCompositeOperation="lighten",e1.globalAlpha=.1+5/(_V(e.coins)+10),_U(e.coins,function(_){e8(e1,_n(e,_),2*e.coinSize*n/16,_.x/16,_.y/16)}),e.balls.forEach(function(_){e1.globalAlpha=.3*(1-eZ(_,e)),e8(e1,e.ballsColor,2*e.ballSize*n/16,_.x/16,_.y/16)}),e1.globalAlpha=.05,e.bricks.forEach(function(_,t){if(_){var a=eq(e,t),r=eM(e,t);e8(e1,"black"==_?"#666666":_,Math.min(200,1.5*e.brickWidth*n)/16,a/16,r/16)}}),e1.globalCompositeOperation="screen",_U(e.particles,function(_){var t=_.x,a=_.y,r=_.time,s=_.color,o=_.size,i=_.duration;e1.globalAlpha=.1*Math.min(1,2-(e.levelTime-r)/i*2),e8(e1,s,3*o*n/16,t/16,a/16)}),eJ.globalAlpha=1,eJ.globalCompositeOperation="source-over",eJ.imageSmoothingEnabled=!0,eJ.imageSmoothingQuality="high",eJ.drawImage(e0,0,0,a,r),eJ.imageSmoothingEnabled=!1,eJ.globalAlpha=1,eJ.globalCompositeOperation="multiply",_.svg&&eK.width&&eK.complete){if(eQ.title!==_.name){eQ.title=_.name,eQ.width=e.canvasWidth,eQ.height=e.canvasHeight;var o=eQ.getContext("2d");if(o.globalCompositeOperation="source-over",o.fillStyle=_.color||"#000",o.fillRect(0,0,e.canvasWidth,e.canvasHeight),e.perks.clairvoyant>=3)for(var i=document.body.innerHTML.replace(/\s+/gi,""),l=Math.ceil(e.canvasWidth/15),u=Math.ceil(e.canvasHeight/20),c=Math.ceil(Math.random()*(i.length-l*u)),p=0;p_S(tW),_=e&&tW.perks.picky_eater&&eT(tW),t=e&&eD(tW),a=ej(tW),r=tW.perks.clairvoyant,s=_s(tW);_||t||-1!==a||tW.perks.zen||(s=0);var n=r&&tW.brickHP.reduce(function(e,_){return e+_},0),o=tW.gameZoneWidth+"_"+tW.bricks.join("_")+e$.complete+"_"+a+"_"+_+"_"+t+"_"+tW.ballsColor+"_"+tW.perks.pierce_color+"_"+n+"_"+s;if(o!==e3){e3=o,e4.width=tW.gameZoneWidth,e4.height=tW.gameZoneWidth+1;var i=e4.getContext("2d");i.clearRect(0,0,tW.gameZoneWidth,tW.gameZoneWidth),i.resetTransform(),i.translate(-tW.offsetX,0),tW.bricks.forEach(function(n,o){var l=eq(tW,o),u=eM(tW,o);if(n){var c=a===Math.floor(o/tW.level.size),p=tW.ballsColor!==n&&"black"!==n&&_||e&&tW.perks.zen&&"black"===n||c||t;i.globalCompositeOperation="source-over",e9(tW,i,n,l,u,p?s:-1,r>=2),tW.brickHP[o]>1&&r&&(i.globalCompositeOperation="source-over",_e(i,tW.brickHP[o].toString(),r>=2?n:tW.level.color,tW.puckHeight,l,u)),"black"===n&&(i.globalCompositeOperation="source-over",function(e,_,t,a,r){var s="svg"+_+"_"+t+"_"+_.complete;if(!e5[s]){var n=document.createElement("canvas");n.width=t,n.height=t;var o=n.getContext("2d"),i=t/Math.max(_.width,_.height),l=_.width*i,u=_.height*i;o.drawImage(_,(t-l)/2,(t-u)/2,l,u),e5[s]=n}e.drawImage(e5[s],Math.round(a-t/2),Math.round(r-t/2))}(i,e$,tW.brickWidth,l,u))}})}eJ.drawImage(e4,tW.offsetX,0)}(),eJ.globalCompositeOperation="screen",_U(e.lights,function(_){var t=_.x,a=_.y,r=_.time,s=_.color,n=(_.size,_.duration);eJ.globalAlpha=.5*Math.min(1,2-(e.levelTime-r)/n*2),e9(e,eJ,s,t,a,-1,e.perks.clairvoyant>=2)}),eJ.globalCompositeOperation="screen",_U(e.texts,function(_){var t=_.x,a=_.y,r=_.time,s=_.color,n=_.size,o=_.duration,i=e.levelTime-r;eJ.globalAlpha=Math.max(0,Math.min(1,2-i/o*2)),eJ.globalCompositeOperation="source-over",_e(eJ,_.text,s,n,t,a-i/10)}),_U(e.particles,function(_){var t=_.x,a=_.y,r=_.time,s=_.color,n=_.size,o=_.duration;eJ.globalAlpha=Math.max(0,Math.min(1,2-(e.levelTime-r)/o*2)),eJ.globalCompositeOperation="screen",e6(eJ,s,n,t,a)}),e.perks.extra_life){eJ.globalAlpha=1,eJ.globalCompositeOperation="source-over",eJ.fillStyle=e.puckColor;for(var v=0;v4&&void 0!==arguments[4]?arguments[4]:0,s=arguments.length>5?arguments[5]:void 0,n=arguments.length>6?arguments[6]:void 0,o="puck"+_+"_"+t+"_"+a+"_"+s+"_"+n;if(!e5[o]){var i=document.createElement("canvas");i.width=t,i.height=2*a;var l=i.getContext("2d");l.fillStyle=_,l.beginPath(),l.moveTo(0,2*a),s?(l.lineTo(0,.75*a),l.bezierCurveTo(t/2,a*(2+s)/3,t/2,a*(2+s)/3,t,.75*a)):(l.lineTo(0,1.25*a),l.bezierCurveTo(0,.75*a,t,.75*a,t,1.25*a)),l.lineTo(t,2*a),l.fill(),-1!==n&&(l.strokeStyle="#FF0000",l.lineWidth=4,l.setLineDash(_r),l.lineDashOffset=n,l.stroke()),e5[o]=i}e.drawImage(e5[o],Math.round(tW.puckPosition-t/2),tW.gameZoneHeight-2*a+r)}(eJ,e.puckColor,e.puckWidth,e.puckHeight,0,e.perks.concave_puck,e.perks.streak_shots&&t?_s(e):-1),e.combo>1){eJ.globalCompositeOperation="source-over";var h="x "+e.combo,y=h.length*e.puckHeight/1.8,f=y+2*e.coinSize,k=e.puckPosition-f/2;fe.puckWidth?e.combo.toString():h,"#000",y>e.puckWidth?12:20,e.puckPosition,e.gameZoneHeight-e.puckHeight/2,!1)}eJ.globalCompositeOperation="source-over",eJ.globalAlpha=1;var W=t&&(e.perks.left_is_lava||e.perks.trampoline),w=t&&(e.perks.right_is_lava||e.perks.trampoline),x=t&&(e.perks.top_is_lava||e.perks.trampoline);e.offsetXRoundedDown?(e2(eJ,e,W&&"#FF0000"||"#FFFFFF",e.offsetXRoundedDown-1,0,e.offsetXRoundedDown-1,r,1),e2(eJ,e,w&&"#FF0000"||"#FFFFFF",a-e.offsetXRoundedDown+1,0,a-e.offsetXRoundedDown+1,r,1)):(e2(eJ,e,W&&"#FF0000"||"",0,0,0,r,1),e2(eJ,e,w&&"#FF0000"||"",a-1,0,a-1,r,1)),x&&e2(eJ,e,"#FF0000",e.offsetXRoundedDown,1,a-e.offsetXRoundedDown,1,1),eJ.globalAlpha=1,e2(eJ,e,t&&e.perks.compound_interest&&"#FF0000"||ed("mobile-mode")&&"#FFFFFF"||"",e.offsetXRoundedDown,e.gameZoneHeight,a-e.offsetXRoundedDown,e.gameZoneHeight,1),!ed("basic")&&ed("contrast")&&_.svg&&"#000000"===_.color&&(eJ.imageSmoothingEnabled=!0,e1.fillStyle="#FFFFFF",e1.globalAlpha=.25,e1.globalCompositeOperation="screen",e1.fillRect(0,0,e0.width,e0.height),eJ.globalAlpha=1,eJ.globalCompositeOperation="overlay",eJ.drawImage(e0,0,0,a,r),eJ.imageSmoothingEnabled=!1),eJ.globalCompositeOperation="source-over",eJ.globalAlpha=1,ed("mobile-mode")&&!e.running&&_e(eJ,Z("play.mobile_press_to_play"),e.puckColor,e.puckHeight,e.canvasWidth/2,e.gameZoneHeight+(e.canvasHeight-e.gameZoneHeight)/2),g&&eJ.resetTransform()}}(tW)),tW.running&&function(e){if(ed("record")){var _;l&&(_=e,p&&(p.drawImage(eY,_.offsetXRoundedDown,0,_.gameZoneWidthRoundedUp,_.gameZoneHeight,0,0,c.width,c.height),p.fillStyle="#FFFFFF",p.textBaseline="top",p.font="12px monospace",p.textAlign="right",p.fillText(_.score.toString(),c.width-12,12),p.textAlign="left",p.fillText("Level "+(_.currentLevel+1)+"/"+eL(_),12,12)),(null==u?void 0:u.requestFrame)?null==u||u.requestFrame():(null==l?void 0:l.requestFrame)&&l.requestFrame())}}(tW),ed("sound")&&function(e){if(!(eg>Date.now()-60))for(var _ in eg=Date.now(),e.aboutToPlaySound){var t,a=e.aboutToPlaySound[_];a.vol&&(eb[_](Math.min(2,a.vol),(t=e,Math.max(0,Math.min(1,(a.x-t.offsetXRoundedDown)/t.gameZoneWidthRoundedUp))),e.combo),a.vol=0)}}(tW),requestAnimationFrame(e),to++}(),function(){var e=document.getElementById("tooltip");if(ed("mobile-mode")){e.style.display="none";return}function _(_){e.style.transform="translate(".concat(_.clientX,"px,").concat(_.clientY,"px) translate(").concat(_.clientX>window.innerWidth/2?"-100%":"0",",").concat(_.clientY>2*window.innerHeight/3?"-100%":"20px",")")}function t(){e.style.display="none",a=null}var a=null;document.body.addEventListener("mouseenter",function(r){for(var s,n=r.target;n&&!n.hasAttribute("data-tooltip");)n=n.parentElement;(null==n?void 0:null===(s=n.getAttribute("data-tooltip"))||void 0===s?void 0:s.trim())?(e.innerHTML=(a=n).getAttribute("data-tooltip")||"",e.style.display="",_(r)):t()},!0),setInterval(function(){a&&!document.body.contains(a)&&t()},200),document.body.addEventListener("mousemove",function(t){e.style.display||_(t)},!0),document.body.addEventListener("mouseleave",function(e){t()},!0)}(),null===(g=document.getElementById("menu"))||void 0===g||g.setAttribute("data-tooltip",Z("play.menu_tooltip"))}();