Skip to content

Instantly share code, notes, and snippets.

@estevam5s
Created January 27, 2024 02:22
Show Gist options
  • Save estevam5s/4ba5b3049135005a2fc362a0adfa3c99 to your computer and use it in GitHub Desktop.
Save estevam5s/4ba5b3049135005a2fc362a0adfa3c99 to your computer and use it in GitHub Desktop.
game dino
<!doctype html><html dir="ltr" lang="en" class="offline"><head><meta charset="utf-8"><meta name="color-scheme" content="light dark"><meta name="theme-color" content="#fff"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><title>Chrome Dino Game</title><style>a{color:var(--link-color)}body{--background-color:#fff;--error-code-color:var(--google-gray-700);--google-blue-100:#d2e3fc;--google-blue-300:#8ab4f8;--google-blue-600:#1a73e8;--google-blue-700:#1967d2;--google-gray-100:#f1f3f4;--google-gray-300:#dadce0;--google-gray-500:#9aa0a6;--google-gray-50:#f8f9fa;--google-gray-600:#80868b;--google-gray-700:#5f6368;--google-gray-800:#3c4043;--google-gray-900:#202124;--heading-color:var(--google-gray-900);--link-color:#585858;--popup-container-background-color:rgba(0,0,0,.65);--primary-button-fill-color-active:var(--google-blue-700);--primary-button-fill-color:var(--google-blue-600);--primary-button-text-color:#fff;--quiet-background-color:#f7f7f7;--secondary-button-border-color:var(--google-gray-500);--secondary-button-fill-color:#fff;--secondary-button-hover-border-color:var(--google-gray-600);--secondary-button-hover-fill-color:var(--google-gray-50);--secondary-button-text-color:var(--google-gray-700);--small-link-color:var(--google-gray-700);--text-color:var(--google-gray-700);background:var(--background-color);color:var(--text-color);word-wrap:break-word}.nav-wrapper .secondary-button{background:var(--secondary-button-fill-color);border:1px solid var(--secondary-button-border-color);color:var(--secondary-button-text-color);float:none;margin:0;padding:8px 16px}.hidden{display:none}html{-webkit-text-size-adjust:100%;font-size:125%}.icon{background-repeat:no-repeat;background-size:100%}@media (prefers-color-scheme:dark){body{--background-color:var(--google-gray-900);--error-code-color:var(--google-gray-500);--heading-color:var(--google-gray-500);--link-color:var(--google-blue-300);--primary-button-fill-color-active:#81a2d0;--primary-button-fill-color:var(--google-blue-300);--primary-button-text-color:var(--google-gray-900);--quiet-background-color:var(--background-color);--secondary-button-border-color:var(--google-gray-700);--secondary-button-fill-color:var(--google-gray-900);--secondary-button-hover-fill-color:#303339;--secondary-button-text-color:var(--google-blue-300);--small-link-color:var(--google-blue-300);--text-color:var(--google-gray-500)}}[dir=rtl] button{float:left}.bad-clock button,.captive-portal button,.https-only button,.insecure-form button,.lookalike-url button,.main-frame-blocked button,.neterror button,.pdf button,.safe-browsing-billing button,.ssl button{background:var(--primary-button-fill-color)}button:active{background:var(--primary-button-fill-color-active);outline:0}#debugging{display:inline;overflow:auto}.debugging-content{line-height:1em;margin-bottom:0;margin-top:1em}.debugging-content-fixed-width{display:block;font-family:monospace;font-size:1.2em;margin-top:.5em}.debugging-title{font-weight:700}#details{margin:0 0 50px}#details p:not(:first-of-type){margin-top:20px}.secondary-button:active{border-color:#fff;box-shadow:0 1px 2px 0 rgba(60,64,67,.3),0 2px 6px 2px rgba(60,64,67,.15)}.secondary-button:hover{background:var(--secondary-button-hover-fill-color);border-color:var(--secondary-button-hover-border-color);text-decoration:none}.error-code{color:var(--error-code-color);font-size:.8em;margin-top:12px;text-transform:uppercase}#error-debugging-info{font-size:.8em}h1{color:var(--heading-color);font-size:1.6em;font-weight:400;line-height:1.25em;margin-bottom:16px}h2{font-size:1.2em;font-weight:400}.icon{height:72px;margin:0 0 40px;width:72px}input[type=checkbox]{opacity:0}input[type=checkbox]:focus~.checkbox::after{outline:-webkit-focus-ring-color auto 5px}.interstitial-wrapper{box-sizing:border-box;font-size:1em;line-height:1.6em;margin:14vh auto 0;max-width:600px;width:100%}#main-message>p{display:inline}#extended-reporting-opt-in{font-size:.875em;margin-top:32px}#extended-reporting-opt-in label{display:grid;grid-template-columns:1.8em 1fr;position:relative}#enhanced-protection-message{border-radius:4px;font-size:1em;margin-top:32px;padding:10px 5px}#enhanced-protection-message label{display:grid;grid-template-columns:2.5em 1fr;position:relative}#enhanced-protection-message div{margin:.5em}#enhanced-protection-message .icon{height:1.5em;vertical-align:middle;width:1.5em}.nav-wrapper{margin-top:51px}.nav-wrapper::after{clear:both;content:'';display:table;width:100%}.small-link{color:var(--small-link-color);font-size:.875em}.checkboxes{flex:0 0 24px}.checkbox{--padding:.9em;background:0 0;display:block;height:1em;left:-1em;padding-inline-start:var(--padding);position:absolute;right:0;top:-.5em;width:1em}.checkbox::after{border:1px solid #fff;border-radius:2px;content:'';height:1em;left:var(--padding);position:absolute;top:var(--padding);width:1em}.checkbox::before{background:0 0;border:2px solid #fff;border-inline-end-width:0;border-top-width:0;content:'';height:.2em;left:calc(.3em + var(--padding));opacity:0;position:absolute;top:calc(.3em + var(--padding));transform:rotate(-45deg);width:.5em}input[type=checkbox]:checked~.checkbox::before{opacity:1}#recurrent-error-message{background:#ededed;border-radius:4px;margin-bottom:16px;margin-top:12px;padding:12px 16px}.showing-recurrent-error-message #extended-reporting-opt-in{margin-top:16px}.showing-recurrent-error-message #enhanced-protection-message{margin-top:16px}@media (max-width:700px){.interstitial-wrapper{padding:0 10%}#error-debugging-info{overflow:auto}}@media (max-width:420px){.small-link,[dir=rtl] button,button{float:none;font-size:.825em;font-weight:500;margin:0;width:100%}button{padding:16px 24px}#details{margin:20px 0 20px 0}#details p:not(:first-of-type){margin-top:10px}.secondary-button:not(.hidden){display:block;margin-top:20px;text-align:center;width:100%}.interstitial-wrapper{padding:0 5%}#extended-reporting-opt-in{margin-top:24px}#enhanced-protection-message{margin-top:24px}.nav-wrapper{margin-top:30px}}@media (max-width:420px){.nav-wrapper .secondary-button{border:0;margin:16px 0 0;margin-inline-end:0;padding-bottom:16px;padding-top:16px}}@media (min-width:240px) and (max-width:420px) and (min-height:401px),(min-width:421px) and (min-height:240px) and (max-height:560px){body .nav-wrapper{background:var(--background-color);bottom:0;box-shadow:0 -12px 24px var(--background-color);left:0;margin:0 auto;max-width:736px;padding-inline-end:24px;padding-inline-start:24px;position:fixed;right:0;width:100%;z-index:2}.interstitial-wrapper{max-width:736px}#details,#main-content{padding-bottom:40px}#details{padding-top:5.5vh}button.small-link{color:var(--google-blue-600)}}@media (max-width:420px) and (orientation:portrait),(max-height:560px){body{margin:0 auto}.nav-wrapper .secondary-button,[dir=rtl] button,button,button.small-link{font-family:Roboto-Regular,Helvetica;font-size:.933em;margin:6px 0;transform:translatez(0)}.nav-wrapper{box-sizing:border-box;padding-bottom:8px;width:100%}#details{box-sizing:border-box;height:auto;margin:0;opacity:1;transition:opacity 250ms cubic-bezier(.4,0,.2,1)}#details.hidden,#main-content.hidden{height:0;opacity:0;overflow:hidden;padding-bottom:0;transition:none}h1{font-size:1.5em;margin-bottom:8px}.icon{margin-bottom:5.69vh}.interstitial-wrapper{box-sizing:border-box;margin:7vh auto 12px;padding:0 24px;position:relative}.interstitial-wrapper p{font-size:.95em;line-height:1.61em;margin-top:8px}#main-content{margin:0;transition:opacity .1s cubic-bezier(.4,0,.2,1)}.small-link{border:0}.suggested-left>#control-buttons,.suggested-right>#control-buttons{float:none;margin:0}}@media (min-width:421px) and (min-height:500px) and (max-height:560px){.interstitial-wrapper{margin-top:10vh}}@media (min-height:400px) and (orientation:portrait){.interstitial-wrapper{margin-bottom:145px}}@media (min-height:299px){.nav-wrapper{padding-bottom:16px}}@media (max-height:560px) and (min-height:240px) and (orientation:landscape){.extended-reporting-has-checkbox #details{padding-bottom:80px}}@media (min-height:500px) and (max-height:650px) and (max-width:414px) and (orientation:portrait){.interstitial-wrapper{margin-top:7vh}}@media (min-height:650px) and (max-width:414px) and (orientation:portrait){.interstitial-wrapper{margin-top:10vh}}@media (max-height:400px) and (orientation:portrait),(max-height:239px) and (orientation:landscape),(max-width:419px) and (max-height:399px){.interstitial-wrapper{display:flex;flex-direction:column;margin-bottom:0}#details{flex:1 1 auto;order:0}#main-content{flex:1 1 auto;order:0}.nav-wrapper{flex:0 1 auto;margin-top:8px;order:1;padding-inline-end:0;padding-inline-start:0;position:relative;width:100%}.nav-wrapper .secondary-button,button{padding:16px 24px}button.small-link{color:var(--google-blue-600)}}@media (max-width:239px) and (orientation:portrait){.nav-wrapper{padding-inline-end:0;padding-inline-start:0}}html:not([subframe]) #sub-frame-error{display:none}h1{margin-top:0;word-wrap:break-word}h1 span{font-weight:500}a{text-decoration:none}.icon{-webkit-user-select:none;display:inline-block}.icon-generic{content:-webkit-image-set(url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABIAQMAAABvIyEEAAAABlBMVEUAAABTU1OoaSf/AAAAAXRSTlMAQObYZgAAAENJREFUeF7tzbEJACEQRNGBLeAasBCza2lLEGx0CxFGG9hBMDDxRy/72O9FMnIFapGylsu1fgoBdkXfUHLrQgdfrlJN1BdYBjQQm3UAAAAASUVORK5CYII=) 1x,url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAACQAQMAAADdiHD7AAAABlBMVEUAAABTU1OoaSf/AAAAAXRSTlMAQObYZgAAAFJJREFUeF7t0cENgDAMQ9FwYgxG6WjpaIzCCAxQxVggFuDiCvlLOeRdHR9yzjncHVoq3npu+wQUrUuJHylSTmBaespJyJQoObUeyxDQb3bEm5Au81c0pSCD8HYAAAAASUVORK5CYII=) 2x)}.icon-offline{content:-webkit-image-set(url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABIAQMAAABvIyEEAAAABlBMVEUAAABTU1OoaSf/AAAAAXRSTlMAQObYZgAAAGxJREFUeF7tyMEJwkAQRuFf5ipMKxYQiJ3Z2nSwrWwBA0+DQZcdxEOueaePp9+dQZFB7GpUcURSVU66yVNFj6LFICatThZB6r/ko/pbRpUgilY0Cbw5sNmb9txGXUKyuH7eV25x39DtJXUNPQGJtWFV+BT/QAAAAABJRU5ErkJggg==) 1x,url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAACQBAMAAAAVaP+LAAAAGFBMVEUAAABTU1NNTU1TU1NPT09SUlJSUlJTU1O8B7DEAAAAB3RSTlMAoArVKvVgBuEdKgAAAJ1JREFUeF7t1TEOwyAMQNG0Q6/UE+RMXD9d/tC6womIFSL9P+MnAYOXeTIzMzMzMzMzaz8J9Ri6HoITmuHXhISE8nEh9yxDh55aCEUoTGbbQwjqHwIkRAEiIaG0+0AA9VBMaE89Rogeoww936MQrWdBr4GN/z0IAdQ6nQ/FIpRXDwHcA+JIJcQowQAlFUA0MfQpXLlVQfkzR4igS6ENjknm/wiaGhsAAAAASUVORK5CYII=) 2x);position:relative}.icon-disabled{content:-webkit-image-set(url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHAAAABICAMAAAAZF4G5AAAABlBMVEVMaXFTU1OXUj8tAAAAAXRSTlMAQObYZgAAASZJREFUeAHd11Fq7jAMRGGf/W/6PoWB67YMqv5DybwG/CFjRuR8JBw3+ByiRjgV9W/TJ31P0tBfC6+cj1haUFXKHmVJo5wP98WwQ0ZCbfUc6LQ6VuUBz31ikADkLMkDrfUC4rR6QGW+gF6rx7NaHWCj1Y/W6lf4L7utvgBSt3rBFSS/XBMPUILcJINHCBWYUfpWn4NBi1ZfudIc3rf6/NGEvEA+AsYTJozmXemjXeLZAov+mnkN2HfzXpMSVQDnGw++57qNJ4D1xitA2sJ+VAWMygSEaYf2mYPTjZfk2K8wmP7HLIH5Mg4/pP+PEcDzUvDMvYbs/2NWwPO5vBdMZE4EE5UTQLiBFDaUlTDPBRoJ9HdAYIkIo06og3BNXtCzy7zA1aXk5x+tJARq63eAygAAAABJRU5ErkJggg==) 1x,url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOAAAACQAQMAAAArwfVjAAAABlBMVEVMaXFTU1OXUj8tAAAAAXRSTlMAQObYZgAAAYdJREFUeF7F1EFqwzAUBNARAmVj0FZe5QoBH6BX+dn4GlY2PYNzGx/A0CvkCIJuvIraKJKbgBvzf2g62weDGD7CYggpfFReis4J0ey9EGFIiEQQojFSlA9kSIiqd0KkFjKsewgRbStEN19mxUPTtmW9HQ/h6tyqNQ8NlSMZdzyE6qkoE0trVYGFm0n1WYeBhduzwbwBC7voS+vIxfeMjeaiLxsMMtQNwMPtuew+DjzcTHk8YMfDknEcIUOtf2lVfgVH3K4Xv5PRYAXRVMtItIJ3rfaCIVn9DsTH2NxisAVRex2Hh3hX+/mRUR08bAwPEYsI51ZxWH4Q0SpicQRXeyEaIug48FEdegARfMz/tADVsRciwTAxW308ehmC2gLraC+YCbV3QoTZexa+zegAEW5PhhgYfmbvJgcRqngGByOSXdFJcLk2JeDPEN0kxe1JhIt5FiFA+w+ItMELsUyPF2IaJ4aILqb4FbxPwhImwj6JauKgDUCYaxmYIsd4KXdMjIC9ItB5Bn4BNRwsG0XM2nwAAAAASUVORK5CYII=) 2x);width:112px}.hidden{display:none}#suggestions-list a{color:var(--google-blue-600)}#suggestions-list p{margin-block-end:0}#suggestions-list ul{margin-top:0}.single-suggestion{list-style-type:none;padding-inline-start:0}#error-information-button{content:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDB6Ii8+PHBhdGggZD0iTTExIDE4aDJ2LTJoLTJ2MnptMS0xNkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTAtMTRjLTIuMjEgMC00IDEuNzktNCA0aDJjMC0xLjEuOS0yIDItMnMyIC45IDIgMmMwIDItMyAxLjc1LTMgNWgyYzAtMi4yNSAzLTIuNSAzLTUgMC0yLjIxLTEuNzktNC00LTR6Ii8+PC9zdmc+);height:24px;vertical-align:-.15em;width:24px}.use-popup-container#error-information-popup-container #error-information-popup{align-items:center;background-color:var(--popup-container-background-color);display:flex;height:100%;left:0;position:fixed;top:0;width:100%;z-index:100}.use-popup-container#error-information-popup-container #error-information-popup-content>p{margin-bottom:11px;margin-inline-start:20px}.use-popup-container#error-information-popup-container #suggestions-list ul{margin-inline-start:15px}.use-popup-container#error-information-popup-container #error-information-popup-box{background-color:var(--background-color);left:5%;padding-bottom:15px;padding-top:15px;position:fixed;width:90%;z-index:101}.use-popup-container#error-information-popup-container div.error-code{margin-inline-start:20px}.use-popup-container#error-information-popup-container #suggestions-list p{margin-inline-start:20px}:not(.use-popup-container)#error-information-popup-container #error-information-popup-close{display:none}#error-information-popup-close{margin-bottom:0;margin-inline-end:35px;margin-top:15px;text-align:end}.link-button{color:#4285f4;display:inline-block;font-weight:700;text-transform:uppercase}#sub-frame-error-details{color:#8f8f8f;text-shadow:0 1px 0 rgba(255,255,255,.3)}[jscontent=failedUrl],[jscontent=hostName]{overflow-wrap:break-word}.secondary-button{background:#d9d9d9;color:#696969;margin-inline-end:16px}.snackbar{background:#323232;border-radius:2px;bottom:24px;box-sizing:border-box;color:#fff;font-size:.87em;left:24px;max-width:568px;min-width:288px;opacity:0;padding:16px 24px 12px;position:fixed;transform:translateY(90px);will-change:opacity,transform;z-index:999}.snackbar-show{-webkit-animation:show-snackbar 250ms cubic-bezier(0,0,.2,1) forwards,hide-snackbar 250ms cubic-bezier(.4,0,1,1) forwards 5s}@-webkit-keyframes show-snackbar{100%{opacity:1;transform:translateY(0)}}@-webkit-keyframes hide-snackbar{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(90px)}}.suggestions{margin-top:18px}.suggestion-header{font-weight:700;margin-bottom:4px}.suggestion-body{color:#777}@media (max-width:640px),(max-height:640px){h1{margin:0 0 15px}.suggestions{margin-top:10px}.suggestion-header{margin-bottom:0}}#download-link,#download-link-clicked{margin-bottom:30px;margin-top:30px}#download-link-clicked{color:#bbb}#download-link-clicked::before,#download-link::before{content:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxLjJlbSIgaGVpZ2h0PSIxLjJlbSIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNSAyMGgxNHYtMkg1bTE0LTloLTRWM0g5djZINWw3IDcgNy03eiIgZmlsbD0iIzQyODVGNCIvPjwvc3ZnPg==);display:inline-block;margin-inline-end:4px;vertical-align:-webkit-baseline-middle}#download-link-clicked::before{opacity:0;width:0}#offline-content-list-visibility-card{border:1px solid #fff;border-radius:8px;display:flex;font-size:.8em;justify-content:space-between;line-height:1}#offline-content-list.list-hidden #offline-content-list-visibility-card{border-color:#dadce0}#offline-content-list-visibility-card>div{padding:1em}#offline-content-list-title{color:var(--google-gray-700)}#offline-content-list-hide-text,#offline-content-list-show-text{color:#4285f4}#offline-content-list.list-hidden #offline-content-list-hide-text,#offline-content-list:not(.list-hidden) #offline-content-list-show-text{display:none}#offline-content-suggestions{max-height:27em;transition:max-height .2s ease-in,visibility 0s .2s,opacity .2s .2s linear}#offline-content-list.list-hidden #offline-content-suggestions{max-height:0;opacity:0;transition:opacity .2s linear,visibility 0s .2s,max-height .2s .2s ease-out;visibility:hidden}#offline-content-list{margin-inline-start:-5%;width:110%}@media (max-width:420px){#offline-content-list{margin-inline-start:-2.5%;width:105%}}@media (max-width:420px) and (orientation:portrait),(max-height:560px){#offline-content-list{margin-inline-start:-12px;width:calc(100% + 24px)}}.suggestion-with-image .offline-content-suggestion-thumbnail{flex-basis:8.2em;flex-shrink:0}.suggestion-with-image .offline-content-suggestion-thumbnail>img{height:100%;width:100%}.suggestion-with-image #offline-content-list:not(.is-rtl) .offline-content-suggestion-thumbnail>img{border-bottom-right-radius:7px;border-top-right-radius:7px}.suggestion-with-image #offline-content-list.is-rtl .offline-content-suggestion-thumbnail>img{border-bottom-left-radius:7px;border-top-left-radius:7px}.suggestion-with-icon .offline-content-suggestion-thumbnail{align-items:center;display:flex;justify-content:center;min-height:4.2em;min-width:4.2em}.suggestion-with-icon .offline-content-suggestion-thumbnail>div{align-items:center;background-color:#f1f3f4;border-radius:50%;display:flex;height:2.3em;justify-content:center;width:2.3em}.suggestion-with-icon .offline-content-suggestion-thumbnail>div>img{height:1.45em;width:1.45em}.offline-content-suggestion-favicon{height:1em;margin-inline-end:.4em;width:1.4em}.offline-content-suggestion-favicon>img{height:1.4em;width:1.4em}.no-favicon .offline-content-suggestion-favicon{display:none}.image-video{content:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTcgMTAuNVY3YTEgMSAwIDAgMC0xLTFINGExIDEgMCAwIDAtMSAxdjEwYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMXYtMy41bDQgNHYtMTFsLTQgNHoiIGZpbGw9IiMzQzQwNDMiLz48L3N2Zz4=)}.image-music-note{content:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgM3Y5LjI2Yy0uNS0uMTctMS0uMjYtMS41LS4yNkM4IDEyIDYgMTQgNiAxNi41UzggMjEgMTAuNSAyMXM0LjUtMiA0LjUtNC41VjZoNFYzaC03eiIgZmlsbD0iIzNDNDA0MyIvPjwvc3ZnPg==)}.image-earth{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTIgMmM1LjUyIDAgMTAgNC40OCAxMCAxMHMtNC40OCAxMC0xMCAxMFMyIDE3LjUyIDIgMTIgNi40OCAyIDEyIDJ6TTQgMTJoNC40YzMuNDA3LjAyMiA0LjkyMiAxLjczIDQuNTQzIDUuMTI3SDkuNDg4djIuNDdhOC4wMDQgOC4wMDQgMCAwIDAgMTAuNDk4LTguMDgzQzE5LjMyNyAxMi41MDQgMTguMzMyIDEzIDE3IDEzYy0yLjEzNyAwLTMuMjA2LS45MTYtMy4yMDYtMi43NWgtMy43NDhjLS4yNzQtMi43MjguNjgzLTQuMDkyIDIuODctNC4wOTIgMC0uOTc1LjMyNy0xLjU5Ny44MTEtMS45N0E4LjAwNCA4LjAwNCAwIDAgMCA0IDEyeiIgZmlsbD0iIzNDNDA0MyIvPjwvc3ZnPg==)}.image-file{content:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTMgOVYzLjVMMTguNSA5TTYgMmMtMS4xMSAwLTIgLjg5LTIgMnYxNmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWOGwtNi02SDZ6IiBmaWxsPSIjM0M0MDQzIi8+PC9zdmc+)}.offline-content-suggestion-texts{display:flex;flex-direction:column;justify-content:space-between;line-height:1.3;padding:.9em;width:100%}.offline-content-suggestion-title{-webkit-box-orient:vertical;-webkit-line-clamp:3;color:#202124;display:-webkit-box;font-size:1.1em;overflow:hidden;text-overflow:ellipsis}div.offline-content-suggestion{align-items:stretch;border:1px solid #dadce0;border-radius:8px;display:flex;justify-content:space-between;margin-bottom:.8em}.suggestion-with-image{flex-direction:row;height:8.2em;max-height:8.2em}.suggestion-with-icon{flex-direction:row-reverse;height:4.2em;max-height:4.2em}.suggestion-with-icon .offline-content-suggestion-title{-webkit-line-clamp:1;word-break:break-all}.suggestion-with-icon .offline-content-suggestion-texts{padding-inline-start:0}.offline-content-suggestion-attribution-freshness{color:#5f6368;display:flex;font-size:.8em;line-height:1.7em}.offline-content-suggestion-attribution{-webkit-box-orient:vertical;-webkit-line-clamp:1;display:-webkit-box;flex-shrink:1;margin-inline-end:.3em;overflow:hidden;overflow-wrap:break-word;text-overflow:ellipsis;word-break:break-all}.no-attribution .offline-content-suggestion-attribution{display:none}.offline-content-suggestion-freshness::before{content:'-';display:inline-block;flex-shrink:0;margin-inline-end:.1em;margin-inline-start:.1em}.no-attribution .offline-content-suggestion-freshness::before{display:none}.offline-content-suggestion-freshness{flex-shrink:0}.suggestion-with-image .offline-content-suggestion-pin-spacer{flex-grow:100;flex-shrink:1}.suggestion-with-image .offline-content-suggestion-pin{content:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjR2MjRIMFYweiIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBjbGlwLXBhdGg9InVybCgjYikiIGQ9Ik0xMiAyQzYuNSAyIDIgNi41IDIgMTJzNC41IDEwIDEwIDEwIDEwLTQuNSAxMC0xMFMxNy41IDIgMTIgMnptNSAxNkg3di0yaDEwdjJ6bS02LjctNEw3IDEwLjdsMS40LTEuNCAxLjkgMS45IDUuMy01LjNMMTcgNy4zIDEwLjMgMTR6IiBmaWxsPSIjOUFBMEE2Ii8+PC9zdmc+);flex-shrink:0;height:1.4em;margin-inline-start:.4em;width:1.4em}#offline-content-list-action{text-align:center;transition:visibility 0s .2s,opacity .2s .2s linear}#offline-content-list.list-hidden #offline-content-list-action{opacity:0;transition:opacity .2s linear,visibility 0s .2s;visibility:hidden}#cancel-save-page-button{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48Y2xpcFBhdGggaWQ9Im1hc2siPjxwYXRoIGQ9Ik0xMiAyQzYuNSAyIDIgNi41IDIgMTJzNC41IDEwIDEwIDEwIDEwLTQuNSAxMC0xMFMxNy41IDIgMTIgMnptNSAxNkg3di0yaDEwdjJ6bS02LjctNEw3IDEwLjdsMS40LTEuNCAxLjkgMS45IDUuMy01LjNMMTcgNy4zIDEwLjMgMTR6IiBmaWxsPSIjOUFBMEE2Ii8+PC9jbGlwUGF0aD48cGF0aCBjbGlwLXBhdGg9InVybCgjbWFzaykiIGZpbGw9IiM5QUEwQTYiIGQ9Ik0wIDBoMjR2MjRIMHoiLz48cGF0aCBjbGlwLXBhdGg9InVybCgjbWFzaykiIGZpbGw9IiMxQTczRTgiIHN0eWxlPSJhbmltYXRpb246b2ZmbGluZUFuaW1hdGlvbiA0cyBpbmZpbml0ZSIgZD0iTTAgMGgyNHYyNEgweiIvPjxzdHlsZT5Aa2V5ZnJhbWVzIG9mZmxpbmVBbmltYXRpb257MCUsMzUle2hlaWdodDowfTYwJXtoZWlnaHQ6MTAwJX05MCV7ZmlsbC1vcGFjaXR5OjF9dG97ZmlsbC1vcGFjaXR5OjB9fTwvc3R5bGU+PC9zdmc+);background-position:right 27px center;background-repeat:no-repeat;border:1px solid var(--google-gray-300);border-radius:5px;color:var(--google-gray-700);margin-bottom:26px;padding-bottom:16px;padding-inline-end:88px;padding-inline-start:16px;padding-top:16px;text-align:start}html[dir=rtl] #cancel-save-page-button{background-position:left 27px center}#save-page-for-later-button{display:flex;justify-content:start}#save-page-for-later-button a::before{content:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxLjJlbSIgaGVpZ2h0PSIxLjJlbSIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNSAyMGgxNHYtMkg1bTE0LTloLTRWM0g5djZINWw3IDcgNy03eiIgZmlsbD0iIzQyODVGNCIvPjwvc3ZnPg==);display:inline-block;margin-inline-end:4px;vertical-align:-webkit-baseline-middle}.hidden#save-page-for-later-button{display:none}html[subframe] body{overflow:hidden}#sub-frame-error{-webkit-align-items:center;-webkit-flex-flow:column;-webkit-justify-content:center;background-color:#ddd;display:-webkit-flex;height:100%;left:0;position:absolute;text-align:center;top:0;transition:background-color .2s ease-in-out;width:100%}#sub-frame-error:hover{background-color:#eee}#sub-frame-error .icon-generic{margin:0 0 16px}#sub-frame-error-details{margin:0 10px;text-align:center;visibility:hidden}#sub-frame-error:hover #sub-frame-error-details{visibility:visible}@media (max-width:200px),(max-height:95px){#sub-frame-error-details{display:none}}@media (max-height:100px){#sub-frame-error .icon-generic{height:auto;margin:0;padding-top:0;width:25px}}#details-button{box-shadow:none;min-width:0}.suggested-left>#control-buttons,.suggested-right>#details-button{float:left}.suggested-left>#details-button,.suggested-right>#control-buttons{float:right}.suggested-left .secondary-button{margin-inline-end:0;margin-inline-start:16px}#details-button.singular{float:none}#download-button{padding-bottom:4px;padding-top:4px;position:relative}#download-button::before{background:-webkit-image-set(url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAAO0lEQVQ4y2NgGArgPxIY1YChsOE/LtBAmpYG0mxpIOSDBpKUo2lpIDZxNJCkHKqlYZAla3RAHQ1DFgAARRroHyLNTwwAAAAASUVORK5CYII=) 1x,url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAQAAAD9CzEMAAAAZElEQVRYw+3Ruw3AMAwDUY3OzZUmRRD4E9iim9wNwAdbEURHyk4AAAAATiCVK8lLyPsKeT9K3lsownnunfkPxO78hKiYHxBV8x2icr5BVM+/CMf8g3DN34Rzns6ViwHUAUQ/6wIAd5Km7l6c8AAAAABJRU5ErkJggg==) 2x) no-repeat;content:'';display:inline-block;height:24px;margin-inline-end:4px;margin-inline-start:-4px;vertical-align:middle;width:24px}#download-button:disabled{background:#b4cef9;color:#fff}#buttons::after{clear:both;content:'';display:block;width:100%}html[dir=rtl] .runner-container,html[dir=rtl].offline .icon-offline{transform:scaleX(-1)}.offline{transition:filter 1.5s cubic-bezier(.65,.05,.36,1),background-color 1.5s cubic-bezier(.65,.05,.36,1);will-change:filter,background-color}.offline body{transition:background-color 1.5s cubic-bezier(.65,.05,.36,1)}.offline #main-message>p{display:none}.offline.inverted{background-color:#fff;filter:invert(1)}.offline.inverted body{background-color:#fff}.offline .interstitial-wrapper{color:var(--text-color);font-size:1em;line-height:1.55;margin:0 auto;max-width:600px;padding-top:100px;position:relative;width:100%}.offline .runner-container{direction:ltr;height:150px;max-width:600px;overflow:hidden;position:absolute;top:35px;width:44px}.offline .runner-container:focus{outline:0}.offline .runner-container:focus-visible{outline:3px solid var(--google-blue-300)}.offline .runner-canvas{height:150px;max-width:600px;opacity:1;overflow:hidden;position:absolute;top:0;z-index:10}.offline .controller{height:100vh;left:0;position:absolute;top:0;width:100vw;z-index:9}#offline-resources{display:none}#offline-instruction{image-rendering:pixelated;left:0;margin:auto;position:absolute;right:0;top:60px;width:fit-content}.offline-runner-live-region{bottom:0;clip-path:polygon(0 0,0 0,0 0);color:var(--background-color);display:block;font-size:xx-small;overflow:hidden;position:absolute;text-align:center;transition:color 1.5s cubic-bezier(.65,.05,.36,1);user-select:none}.slow-speed-option{align-items:center;background:var(--google-gray-50);border-radius:24px/50%;bottom:0;color:var(--error-code-color);display:inline-flex;font-size:1em;left:0;line-height:1.1em;margin:5px auto;padding:2px 12px 3px 20px;position:absolute;right:0;width:max-content;z-index:999}.slow-speed-option.hidden{display:none}.slow-speed-option [type=checkbox]{opacity:0;pointer-events:none;position:absolute}.slow-speed-option .slow-speed-toggle{cursor:pointer;margin-inline-start:8px;padding:8px 4px;position:relative}.slow-speed-option [type=checkbox]:disabled~.slow-speed-toggle{cursor:default}.slow-speed-option-label [type=checkbox]{opacity:0;pointer-events:none;position:absolute}.slow-speed-option .slow-speed-toggle::after,.slow-speed-option .slow-speed-toggle::before{content:'';display:block;margin:0 3px;transition:all .1s cubic-bezier(.4,0,1,1)}.slow-speed-option .slow-speed-toggle::before{background:#bdc1c6;border-radius:.65em;height:.9em;width:2em}.slow-speed-option .slow-speed-toggle::after{background:#fff;border-radius:50%;box-shadow:0 1px 3px 0 rgb(0 0 0 / 40%);height:1.2em;position:absolute;top:51%;transform:translate(-20%,-50%);width:1.1em}.slow-speed-option [type=checkbox]:focus+.slow-speed-toggle{box-shadow:0 0 8px #5e9ed6;outline:1px solid #5d9dd5}.slow-speed-option [type=checkbox]:checked+.slow-speed-toggle::before{background:var(--google-blue-600);opacity:.5}.slow-speed-option [type=checkbox]:checked+.slow-speed-toggle::after{background:var(--google-blue-600);transform:translate(calc(2em - 90%),-50%)}.slow-speed-option [type=checkbox]:checked:disabled+.slow-speed-toggle::before{background:#bdc1c6}.slow-speed-option [type=checkbox]:checked:disabled+.slow-speed-toggle::after{background:var(--google-gray-50)}@media (max-width:420px){#download-button{padding-bottom:12px;padding-top:12px}.suggested-left>#control-buttons,.suggested-right>#control-buttons{float:none}.snackbar{border-radius:0;bottom:0;left:0;width:100%}}@media (max-height:350px){h1{margin:0 0 15px}.icon-offline{margin:0 0 10px}.interstitial-wrapper{margin-top:5%}.nav-wrapper{margin-top:30px}}@media (min-width:420px) and (max-width:736px) and (min-height:240px) and (max-height:420px) and (orientation:landscape){.interstitial-wrapper{margin-bottom:100px}}@media (max-width:360px) and (max-height:480px){.offline .interstitial-wrapper{padding-top:60px}.offline .runner-container{top:8px}}@media (min-height:240px) and (orientation:landscape){.offline .interstitial-wrapper{margin-bottom:90px}.icon-offline{margin-bottom:20px}}@media (max-height:320px) and (orientation:landscape){.icon-offline{margin-bottom:0}.offline .runner-container{top:10px}}@media (max-width:240px){button{padding-inline-end:12px;padding-inline-start:12px}.interstitial-wrapper{overflow:inherit;padding:0 8px}}@media (max-width:120px){button{width:auto}}.arcade-mode,.arcade-mode .runner-canvas,.arcade-mode .runner-container{image-rendering:pixelated;max-width:100%;overflow:hidden}.arcade-mode #buttons,.arcade-mode #main-content{opacity:0;overflow:hidden}.arcade-mode .interstitial-wrapper{height:100vh;max-width:100%;overflow:hidden}.arcade-mode .runner-container{left:0;margin:auto;right:0;transform-origin:top center;transition:transform 250ms cubic-bezier(.4,0,1,1) .4s;z-index:2}@media (prefers-color-scheme:dark){.icon{filter:invert(1)}.offline .runner-canvas{filter:invert(1)}.offline.inverted{background-color:var(--background-color);filter:invert(0)}.offline.inverted body{background-color:#fff}.offline.inverted .offline-runner-live-region{color:#fff}#suggestions-list a{color:var(--link-color)}#error-information-button{filter:invert(.6)}.slow-speed-option{background:var(--google-gray-800);color:var(--google-gray-100)}.slow-speed-option .slow-speed-toggle::before,.slow-speed-option [type=checkbox]:checked:disabled+.slow-speed-toggle::before{background:#bdc1c6}.slow-speed-option [type=checkbox]:checked+.slow-speed-toggle::after,.slow-speed-option [type=checkbox]:checked+.slow-speed-toggle::before{background:var(--google-blue-300)}}</style><script>var errorPageController;const HIDDEN_CLASS="hidden";function decodeUTF16Base64ToString(t){const e=atob(t);let n="";for(let t=0;t<e.length;t+=2)n+=String.fromCharCode(256*e.charCodeAt(t)+e.charCodeAt(t+1));return n}function toggleHelpBox(){const t=document.getElementById("details");t.classList.toggle(HIDDEN_CLASS);const e=document.getElementById("details-button");if(t.classList.contains(HIDDEN_CLASS)?e.innerText=e.detailsText:e.innerText=e.hideDetailsText,mobileNav){document.getElementById("main-content").classList.toggle(HIDDEN_CLASS);const t=document.querySelector(".runner-container");t&&t.classList.toggle(HIDDEN_CLASS)}}function diagnoseErrors(){window.errorPageController&&errorPageController.diagnoseErrorsButtonClick()}let isSubFrame=!1;function updateForDnsProbe(t){const e=new JsEvalContext(t);jstProcess(e,document.getElementById("t")),onDocumentLoadOrUpdate()}function updateIconClass(t){const e=isSubFrame?"#sub-frame-error":"#main-frame-error",n=document.querySelector(e+" .icon");n.classList.contains(t)||(n.className="icon "+t)}function reloadButtonClick(t){window.errorPageController?errorPageController.reloadButtonClick():window.location=t}function downloadButtonClick(){if(window.errorPageController){errorPageController.downloadButtonClick();const t=document.getElementById("download-button");t.disabled=!0,t.textContent=t.disabledText,document.getElementById("download-link-wrapper").classList.add(HIDDEN_CLASS),document.getElementById("download-link-clicked-wrapper").classList.remove(HIDDEN_CLASS)}}function detailsButtonClick(){window.errorPageController&&errorPageController.detailsButtonClick()}(window.top.location!==window.location||window.portalHost)&&(document.documentElement.setAttribute("subframe",""),isSubFrame=!0);let AvailableOfflineContent,primaryControlOnLeft=!0;function setAutoFetchState(t,e){document.getElementById("cancel-save-page-button").classList.toggle(HIDDEN_CLASS,!t),document.getElementById("save-page-for-later-button").classList.toggle(HIDDEN_CLASS,t||!e)}function savePageLaterClick(){errorPageController.savePageForLater()}function cancelSavePageClick(){errorPageController.cancelSavePage(),setAutoFetchState(!1,!0)}function toggleErrorInformationPopup(){document.getElementById("error-information-popup-container").classList.toggle(HIDDEN_CLASS)}function launchOfflineItem(t,e){errorPageController.launchOfflineItem(t,e)}function launchDownloadsPage(){errorPageController.launchDownloadsPage()}function getIconForSuggestedItem(t){switch(t.content_type){case 1:return"image-video";case 2:return"image-music-note";case 0:case 3:return"image-earth"}return"image-file"}function getSuggestedContentDiv(t,e){let n="";const o=[];if(t.thumbnail_data_uri)o.push("suggestion-with-image"),n=`<img src="${t.thumbnail_data_uri}">`;else{o.push("suggestion-with-icon"),n=`<div><img class="${getIconForSuggestedItem(t)}"></div>`}let i="";return t.favicon_data_uri?i=`<img src="${t.favicon_data_uri}">`:o.push("no-favicon"),t.attribution_base64||o.push("no-attribution"),`<div class="offline-content-suggestion ${o.join(" ")}"onclick="launchOfflineItem('${t.ID}', '${t.name_space}')"><div class="offline-content-suggestion-texts"><div id="offline-content-suggestion-title-${e}"class="offline-content-suggestion-title"></div><div class="offline-content-suggestion-attribution-freshness"><div id="offline-content-suggestion-favicon-${e}"class="offline-content-suggestion-favicon">${i}</div><div id="offline-content-suggestion-attribution-${e}"class="offline-content-suggestion-attribution"></div><div class="offline-content-suggestion-freshness">${t.date_modified}</div><div class="offline-content-suggestion-pin-spacer"></div><div class="offline-content-suggestion-pin"></div></div></div><div class="offline-content-suggestion-thumbnail">${n}</div></div>`}function offlineContentAvailable(t,e){if(!e||!loadTimeData.valueExists("offlineContentList"))return;const n=[];for(let t=0;t<e.length;t++)n.push(getSuggestedContentDiv(e[t],t));document.getElementById("offline-content-suggestions").innerHTML=n.join("\n");for(let t=0;t<e.length;t++)document.getElementById(`offline-content-suggestion-title-${t}`).textContent=decodeUTF16Base64ToString(e[t].title_base64),document.getElementById(`offline-content-suggestion-attribution-${t}`).textContent=decodeUTF16Base64ToString(e[t].attribution_base64);const o=document.getElementById("offline-content-list");"rtl"===document.dir&&o.classList.add("is-rtl"),o.hidden=!1,t&&toggleOfflineContentListVisibility(!1)}function toggleOfflineContentListVisibility(t){if(!loadTimeData.valueExists("offlineContentList"))return;const e=!document.getElementById("offline-content-list").classList.toggle("list-hidden");t&&window.errorPageController&&errorPageController.listVisibilityChanged(e)}function onDocumentLoadOrUpdate(){const t=loadTimeData.valueExists("downloadButton")&&loadTimeData.getValue("downloadButton").msg,e=document.getElementById("details-button"),n=loadTimeData.valueExists("suggestedOfflineContentPresentation");n&&(document.querySelector(".nav-wrapper").classList.add(HIDDEN_CLASS),e.classList.add(HIDDEN_CLASS),document.getElementById("download-link").hidden=!t,document.getElementById("download-links-wrapper").classList.remove(HIDDEN_CLASS),document.getElementById("error-information-popup-container").classList.add("use-popup-container",HIDDEN_CLASS),document.getElementById("error-information-button").classList.remove(HIDDEN_CLASS));loadTimeData.valueExists("attemptAutoFetch")&&loadTimeData.getValue("attemptAutoFetch");const o=loadTimeData.valueExists("reloadButton")&&loadTimeData.getValue("reloadButton").msg,i=document.getElementById("reload-button"),a=document.getElementById("download-button");"none"===i.style.display&&"none"===a.style.display&&e.classList.add("singular"),document.getElementById("control-buttons").hidden=n||!(o||t);const s=loadTimeData.valueExists("iconClass")&&loadTimeData.getValue("iconClass");updateIconClass(s),isSubFrame||"icon-offline"!==s||(document.documentElement.classList.add("offline"),new Runner(".interstitial-wrapper"))}function onDocumentLoad(){const t=document.getElementById("buttons");primaryControlOnLeft?t.classList.add("suggested-left"):t.classList.add("suggested-right"),onDocumentLoadOrUpdate()}document.addEventListener("DOMContentLoaded",onDocumentLoad);</script><script>let mobileNav=!1;function onResize(){const e=document.querySelector("#details"),t=document.querySelector("#main-content"),i=e.classList.contains(HIDDEN_CLASS),n=document.querySelector(".runner-container");mobileNav!==window.matchMedia("(min-width: 240px) and (max-width: 420px) and (min-height: 401px), (max-height: 560px) and (min-height: 240px) and (min-width: 421px)").matches&&((mobileNav=!mobileNav)?(t.classList.toggle(HIDDEN_CLASS,!i),e.classList.toggle(HIDDEN_CLASS,i),n&&n.classList.toggle(HIDDEN_CLASS,!i)):i||(t.classList.remove(HIDDEN_CLASS),e.classList.remove(HIDDEN_CLASS),n&&n.classList.remove(HIDDEN_CLASS)))}function setupMobileNav(){window.addEventListener("resize",onResize),onResize()}document.addEventListener("DOMContentLoaded",setupMobileNav);</script><script>function Runner(t,e){if(Runner.instance_)return Runner.instance_;Runner.instance_=this,this.outerContainerEl=document.querySelector(t),this.containerEl=null,this.snackbarEl=null,this.touchController=null,this.config=e||Object.assign(Runner.config,Runner.normalConfig),this.dimensions=Runner.defaultDimensions,this.gameType=null,Runner.spriteDefinition=Runner.spriteDefinitionByType.original,this.altGameImageSprite=null,this.altGameModeActive=!1,this.altGameModeFlashTimer=null,this.fadeInTimer=0,this.canvas=null,this.canvasCtx=null,this.tRex=null,this.distanceMeter=null,this.distanceRan=0,this.highestScore=0,this.syncHighestScore=!1,this.time=0,this.runningTime=0,this.msPerFrame=1e3/FPS,this.currentSpeed=this.config.SPEED,Runner.slowDown=!1,this.obstacles=[],this.activated=!1,this.playing=!1,this.crashed=!1,this.paused=!1,this.inverted=!1,this.invertTimer=0,this.resizeTimerId_=null,this.playCount=0,this.audioBuffer=null,this.soundFx={},this.generatedSoundFx=null,this.audioContext=null,this.images={},this.imagesLoaded=0,this.pollingGamepads=!1,this.gamepadIndex=void 0,this.previousGamepad=null,this.isDisabled()?this.setupDisabledRunner():(Runner.isAltGameModeEnabled()&&(this.initAltGameType(),Runner.gameType=this.gameType),this.loadImages(),window.initializeEasterEggHighScore=this.initializeHighScore.bind(this))}const DEFAULT_WIDTH=600,FPS=60,IS_HIDPI=window.devicePixelRatio>1,IS_IOS=/CriOS/.test(window.navigator.userAgent),IS_MOBILE=/Android/.test(window.navigator.userAgent)||IS_IOS,IS_RTL="rtl"==document.querySelector("html").dir,ARCADE_MODE_URL="chrome://dino/",RESOURCE_POSTFIX="offline-resources-",A11Y_STRINGS={ariaLabel:"dinoGameA11yAriaLabel",description:"dinoGameA11yDescription",gameOver:"dinoGameA11yGameOver",highScore:"dinoGameA11yHighScore",jump:"dinoGameA11yJump",started:"dinoGameA11yStartGame",speedLabel:"dinoGameA11ySpeedToggle"};function GeneratedSoundFx(){this.audioCues=!1,this.context=null,this.panner=null}function speakPhrase(t){if("speechSynthesis"in window){const e=new SpeechSynthesisUtterance(t);window.speechSynthesis.getVoices();e.text=t,speechSynthesis.speak(e)}}function announcePhrase(t){Runner.a11yStatusEl&&(Runner.a11yStatusEl.textContent="",Runner.a11yStatusEl.textContent=t)}function getA11yString(t){return loadTimeData&&loadTimeData.valueExists(t)?loadTimeData.getString(t):""}function getRandomNum(t,e){return Math.floor(Math.random()*(e-t+1))+t}function vibrate(t){IS_MOBILE&&window.navigator.vibrate&&window.navigator.vibrate(t)}function createCanvas(t,e,i,s){const n=document.createElement("canvas");return n.className=s?Runner.classes.CANVAS+" "+s:Runner.classes.CANVAS,n.width=e,n.height=i,t.appendChild(n),n}function decodeBase64ToArrayBuffer(t){const e=t.length/4*3,i=atob(t),s=new ArrayBuffer(e),n=new Uint8Array(s);for(let t=0;t<e;t++)n[t]=i.charCodeAt(t);return n.buffer}function getTimeStamp(){return IS_IOS?(new Date).getTime():performance.now()}function GameOverPanel(t,e,i,s,n,a){this.canvas=t,this.canvasCtx=t.getContext("2d"),this.canvasDimensions=s,this.textImgPos=e,this.restartImgPos=i,this.altGameEndImgPos=n,this.altGameModeActive=a,this.frameTimeStamp=0,this.animTimer=0,this.currentFrame=0,this.gameOverRafId=null,this.flashTimer=0,this.flashCounter=0,this.originalText=!0}function checkForCollision(t,e,i){Runner.defaultDimensions.WIDTH,t.xPos;const s=new CollisionBox(e.xPos+1,e.yPos+1,e.config.WIDTH-2,e.config.HEIGHT-2),n=new CollisionBox(t.xPos+1,t.yPos+1,t.typeConfig.width*t.size-2,t.typeConfig.height-2);if(i&&drawCollisionBoxes(i,s,n),boxCompare(s,n)){const a=t.collisionBoxes;let o=[];o=Runner.isAltGameModeEnabled()?Runner.spriteDefinition.TREX.COLLISION_BOXES:e.ducking?Trex.collisionBoxes.DUCKING:Trex.collisionBoxes.RUNNING;for(let t=0;t<o.length;t++)for(let e=0;e<a.length;e++){const h=createAdjustedCollisionBox(o[t],s),r=createAdjustedCollisionBox(a[e],n),c=boxCompare(h,r);if(i&&drawCollisionBoxes(i,h,r),c)return[h,r]}}}function createAdjustedCollisionBox(t,e){return new CollisionBox(t.x+e.x,t.y+e.y,t.width,t.height)}function drawCollisionBoxes(t,e,i){t.save(),t.strokeStyle="#f00",t.strokeRect(e.x,e.y,e.width,e.height),t.strokeStyle="#0f0",t.strokeRect(i.x,i.y,i.width,i.height),t.restore()}function boxCompare(t,e){let i=!1;t.x,t.y;const s=e.x;e.y;return t.x<s+e.width&&t.x+t.width>s&&t.y<e.y+e.height&&t.height+t.y>e.y&&(i=!0),i}function CollisionBox(t,e,i,s){this.x=t,this.y=e,this.width=i,this.height=s}function Obstacle(t,e,i,s,n,a,o,h){this.canvasCtx=t,this.spritePos=i,this.typeConfig=e,this.gapCoefficient=Runner.slowDown?2*n:n,this.size=getRandomNum(1,Obstacle.MAX_OBSTACLE_LENGTH),this.dimensions=s,this.remove=!1,this.xPos=s.WIDTH+(o||0),this.yPos=0,this.width=0,this.collisionBoxes=[],this.gap=0,this.speedOffset=0,this.altGameModeActive=h,this.imageSprite="COLLECTABLE"==this.typeConfig.type?Runner.altCommonImageSprite:this.altGameModeActive?Runner.altGameImageSprite:Runner.imageSprite,this.currentFrame=0,this.timer=0,this.init(a)}function Trex(t,e){this.canvas=t,this.canvasCtx=t.getContext("2d"),this.spritePos=e,this.xPos=0,this.yPos=0,this.xInitialPos=0,this.groundYPos=0,this.currentFrame=0,this.currentAnimFrames=[],this.blinkDelay=0,this.blinkCount=0,this.animStartTime=0,this.timer=0,this.msPerFrame=1e3/FPS,this.config=Object.assign(Trex.config,Trex.normalJumpConfig),this.status=Trex.status.WAITING,this.jumping=!1,this.ducking=!1,this.jumpVelocity=0,this.reachedMinHeight=!1,this.speedDrop=!1,this.jumpCount=0,this.jumpspotX=0,this.altGameModeEnabled=!1,this.flashing=!1,this.init()}function DistanceMeter(t,e,i){this.canvas=t,this.canvasCtx=t.getContext("2d"),this.image=Runner.imageSprite,this.spritePos=e,this.x=0,this.y=5,this.currentDistance=0,this.maxScore=0,this.highScore="0",this.container=null,this.digits=[],this.achievement=!1,this.defaultString="",this.flashTimer=0,this.flashIterations=0,this.invertTrigger=!1,this.flashingRafId=null,this.highScoreBounds={},this.highScoreFlashing=!1,this.config=DistanceMeter.config,this.maxScoreUnits=this.config.MAX_DISTANCE_UNITS,this.canvasWidth=i,this.init(i)}function Cloud(t,e,i){this.canvas=t,this.canvasCtx=this.canvas.getContext("2d"),this.spritePos=e,this.containerWidth=i,this.xPos=i,this.yPos=0,this.remove=!1,this.gap=getRandomNum(Cloud.config.MIN_CLOUD_GAP,Cloud.config.MAX_CLOUD_GAP),this.init()}function BackgroundEl(t,e,i,s){this.canvas=t,this.canvasCtx=this.canvas.getContext("2d"),this.spritePos=e,this.containerWidth=i,this.xPos=i,this.yPos=0,this.remove=!1,this.type=s,this.gap=getRandomNum(BackgroundEl.config.MIN_GAP,BackgroundEl.config.MAX_GAP),this.animTimer=0,this.switchFrames=!1,this.spriteConfig={},this.init()}function NightMode(t,e,i){this.spritePos=e,this.canvas=t,this.canvasCtx=t.getContext("2d"),this.xPos=i-50,this.yPos=30,this.currentPhase=0,this.opacity=0,this.containerWidth=i,this.stars=[],this.drawStars=!1,this.placeStars()}function HorizonLine(t,e){let i=e.SOURCE_X,s=e.SOURCE_Y;IS_HIDPI&&(i*=2,s*=2),this.spritePos={x:i,y:s},this.canvas=t,this.canvasCtx=t.getContext("2d"),this.sourceDimensions={},this.dimensions=e,this.sourceXPos=[this.spritePos.x,this.spritePos.x+this.dimensions.WIDTH],this.xPos=[],this.yPos=0,this.bumpThreshold=.5,this.setSourceDimensions(e),this.draw()}function Horizon(t,e,i,s){this.canvas=t,this.canvasCtx=this.canvas.getContext("2d"),this.config=Horizon.config,this.dimensions=i,this.gapCoefficient=s,this.obstacles=[],this.obstacleHistory=[],this.horizonOffsets=[0,0],this.cloudFrequency=this.config.CLOUD_FREQUENCY,this.spritePos=e,this.nightMode=null,this.altGameModeActive=!1,this.clouds=[],this.cloudSpeed=this.config.BG_CLOUD_SPEED,this.backgroundEls=[],this.lastEl=null,this.backgroundSpeed=this.config.BG_CLOUD_SPEED,this.horizonLine=null,this.horizonLines=[],this.init()}Runner.config={AUDIOCUE_PROXIMITY_THRESHOLD:190,AUDIOCUE_PROXIMITY_THRESHOLD_MOBILE_A11Y:250,BG_CLOUD_SPEED:.2,BOTTOM_PAD:10,CANVAS_IN_VIEW_OFFSET:-10,CLEAR_TIME:3e3,CLOUD_FREQUENCY:.5,FADE_DURATION:1,FLASH_DURATION:1e3,GAMEOVER_CLEAR_TIME:1200,INITIAL_JUMP_VELOCITY:12,INVERT_FADE_DURATION:12e3,MAX_BLINK_COUNT:3,MAX_CLOUDS:6,MAX_OBSTACLE_LENGTH:3,MAX_OBSTACLE_DUPLICATION:2,RESOURCE_TEMPLATE_ID:"audio-resources",SPEED:6,SPEED_DROP_COEFFICIENT:3,ARCADE_MODE_INITIAL_TOP_POSITION:35,ARCADE_MODE_TOP_POSITION_PERCENT:.1},Runner.normalConfig={ACCELERATION:.001,AUDIOCUE_PROXIMITY_THRESHOLD:190,AUDIOCUE_PROXIMITY_THRESHOLD_MOBILE_A11Y:250,GAP_COEFFICIENT:.6,INVERT_DISTANCE:700,MAX_SPEED:13,MOBILE_SPEED_COEFFICIENT:1.2,SPEED:6},Runner.slowConfig={ACCELERATION:5e-4,AUDIOCUE_PROXIMITY_THRESHOLD:170,AUDIOCUE_PROXIMITY_THRESHOLD_MOBILE_A11Y:220,GAP_COEFFICIENT:.3,INVERT_DISTANCE:350,MAX_SPEED:9,MOBILE_SPEED_COEFFICIENT:1.5,SPEED:4.2},Runner.defaultDimensions={WIDTH:600,HEIGHT:150},Runner.classes={ARCADE_MODE:"arcade-mode",CANVAS:"runner-canvas",CONTAINER:"runner-container",CRASHED:"crashed",ICON:"icon-offline",INVERTED:"inverted",SNACKBAR:"snackbar",SNACKBAR_SHOW:"snackbar-show",TOUCH_CONTROLLER:"controller"},Runner.sounds={BUTTON_PRESS:"offline-sound-press",HIT:"offline-sound-hit",SCORE:"offline-sound-reached"},Runner.keycodes={JUMP:{38:1,32:1},DUCK:{40:1},RESTART:{13:1}},Runner.events={ANIM_END:"webkitAnimationEnd",CLICK:"click",KEYDOWN:"keydown",KEYUP:"keyup",POINTERDOWN:"pointerdown",POINTERUP:"pointerup",RESIZE:"resize",TOUCHEND:"touchend",TOUCHSTART:"touchstart",VISIBILITY:"visibilitychange",BLUR:"blur",FOCUS:"focus",LOAD:"load",GAMEPADCONNECTED:"gamepadconnected"},Runner.prototype={initAltGameType(){GAME_TYPE.length>0&&(this.gameType=loadTimeData&&loadTimeData.valueExists("altGameType")?GAME_TYPE[parseInt(loadTimeData.getValue("altGameType"),10)-1]:"")},isDisabled:()=>loadTimeData&&loadTimeData.valueExists("disabledEasterEgg"),setupDisabledRunner(){this.containerEl=document.createElement("div"),this.containerEl.className=Runner.classes.SNACKBAR,this.containerEl.textContent=loadTimeData.getValue("disabledEasterEgg"),this.outerContainerEl.appendChild(this.containerEl),document.addEventListener(Runner.events.KEYDOWN,function(t){Runner.keycodes.JUMP[t.keyCode]&&(this.containerEl.classList.add(Runner.classes.SNACKBAR_SHOW),document.querySelector(".icon").classList.add("icon-disabled"))}.bind(this))},updateConfigSetting(t,e){if(t in this.config&&void 0!==e)switch(this.config[t]=e,t){case"GRAVITY":case"MIN_JUMP_HEIGHT":case"SPEED_DROP_COEFFICIENT":this.tRex.config[t]=e;break;case"INITIAL_JUMP_VELOCITY":this.tRex.setJumpVelocity(e);break;case"SPEED":this.setSpeed(e)}},createImageElement(t){const e=loadTimeData&&loadTimeData.valueExists(t)?loadTimeData.getString(t):null;if(e){const i=document.createElement("img");return i.id=t,i.src=e,document.getElementById("offline-resources").appendChild(i),i}return null},loadImages(){let t="1x";this.spriteDef=Runner.spriteDefinition.LDPI,IS_HIDPI&&(t="2x",this.spriteDef=Runner.spriteDefinition.HDPI),Runner.imageSprite=document.getElementById(RESOURCE_POSTFIX+t),this.gameType&&(Runner.altGameImageSprite=this.createImageElement("altGameSpecificImage"+t),Runner.altCommonImageSprite=this.createImageElement("altGameCommonImage"+t)),Runner.origImageSprite=Runner.imageSprite,Runner.altGameImageSprite&&Runner.altCommonImageSprite||(Runner.isAltGameModeEnabled=(()=>!1),this.altGameModeActive=!1),Runner.imageSprite.complete?this.init():Runner.imageSprite.addEventListener(Runner.events.LOAD,this.init.bind(this))},loadSounds(){if(!IS_IOS){this.audioContext=new AudioContext;const t=document.getElementById(this.config.RESOURCE_TEMPLATE_ID).content;for(const e in Runner.sounds){let i=t.getElementById(Runner.sounds[e]).src;const s=decodeBase64ToArrayBuffer(i=i.substr(i.indexOf(",")+1));this.audioContext.decodeAudioData(s,function(t,e){this.soundFx[t]=e}.bind(this,e))}}},setSpeed(t){const e=t||this.currentSpeed;if(this.dimensions.WIDTH<600){const t=Runner.slowDown?e:e*this.dimensions.WIDTH/600*this.config.MOBILE_SPEED_COEFFICIENT;this.currentSpeed=t>e?e:t}else t&&(this.currentSpeed=t)},init(){document.querySelector("."+Runner.classes.ICON).style.visibility="hidden",this.adjustDimensions(),this.setSpeed();const t=getA11yString(A11Y_STRINGS.ariaLabel);this.containerEl=document.createElement("div"),this.containerEl.setAttribute("role",IS_MOBILE?"button":"application"),this.containerEl.setAttribute("tabindex","0"),this.containerEl.setAttribute("title",t),this.containerEl.className=Runner.classes.CONTAINER,this.canvas=createCanvas(this.containerEl,this.dimensions.WIDTH,this.dimensions.HEIGHT),this.a11yStatusEl=document.createElement("span"),this.a11yStatusEl.className="offline-runner-live-region",this.a11yStatusEl.setAttribute("aria-live","assertive"),this.a11yStatusEl.textContent="",Runner.a11yStatusEl=this.a11yStatusEl,this.slowSpeedCheckboxLabel=document.createElement("label"),this.slowSpeedCheckboxLabel.className="slow-speed-option hidden",this.slowSpeedCheckboxLabel.textContent=getA11yString(A11Y_STRINGS.speedLabel),this.slowSpeedCheckbox=document.createElement("input"),this.slowSpeedCheckbox.setAttribute("type","checkbox"),this.slowSpeedCheckbox.setAttribute("title",getA11yString(A11Y_STRINGS.speedLabel)),this.slowSpeedCheckbox.setAttribute("tabindex","0"),this.slowSpeedCheckbox.setAttribute("checked","checked"),this.slowSpeedToggleEl=document.createElement("span"),this.slowSpeedToggleEl.className="slow-speed-toggle",this.slowSpeedCheckboxLabel.appendChild(this.slowSpeedCheckbox),this.slowSpeedCheckboxLabel.appendChild(this.slowSpeedToggleEl),IS_IOS?this.outerContainerEl.appendChild(this.a11yStatusEl):this.containerEl.appendChild(this.a11yStatusEl),announcePhrase(getA11yString(A11Y_STRINGS.description)),this.generatedSoundFx=new GeneratedSoundFx,this.canvasCtx=this.canvas.getContext("2d"),this.canvasCtx.fillStyle="#f7f7f7",this.canvasCtx.fill(),Runner.updateCanvasScaling(this.canvas),this.horizon=new Horizon(this.canvas,this.spriteDef,this.dimensions,this.config.GAP_COEFFICIENT),this.distanceMeter=new DistanceMeter(this.canvas,this.spriteDef.TEXT_SPRITE,this.dimensions.WIDTH),this.tRex=new Trex(this.canvas,this.spriteDef.TREX),this.outerContainerEl.appendChild(this.containerEl),this.outerContainerEl.appendChild(this.slowSpeedCheckboxLabel),this.startListening(),this.update(),window.addEventListener(Runner.events.RESIZE,this.debounceResize.bind(this));const e=window.matchMedia("(prefers-color-scheme: dark)");this.isDarkMode=e&&e.matches,e.addListener(t=>{this.isDarkMode=t.matches})},createTouchController(){this.touchController=document.createElement("div"),this.touchController.className=Runner.classes.TOUCH_CONTROLLER,this.touchController.addEventListener(Runner.events.TOUCHSTART,this),this.touchController.addEventListener(Runner.events.TOUCHEND,this),this.outerContainerEl.appendChild(this.touchController)},debounceResize(){this.resizeTimerId_||(this.resizeTimerId_=setInterval(this.adjustDimensions.bind(this),250))},adjustDimensions(){clearInterval(this.resizeTimerId_),this.resizeTimerId_=null;const t=window.getComputedStyle(this.outerContainerEl),e=Number(t.paddingLeft.substr(0,t.paddingLeft.length-2));this.dimensions.WIDTH=this.outerContainerEl.offsetWidth-2*e,this.isArcadeMode()&&(this.dimensions.WIDTH=Math.min(600,this.dimensions.WIDTH),this.activated&&this.setArcadeModeContainerScale()),this.canvas&&(this.canvas.width=this.dimensions.WIDTH,this.canvas.height=this.dimensions.HEIGHT,Runner.updateCanvasScaling(this.canvas),this.distanceMeter.calcXPos(this.dimensions.WIDTH),this.clearCanvas(),this.horizon.update(0,0,!0),this.tRex.update(0),this.playing||this.crashed||this.paused?(this.containerEl.style.width=this.dimensions.WIDTH+"px",this.containerEl.style.height=this.dimensions.HEIGHT+"px",this.distanceMeter.update(0,Math.ceil(this.distanceRan)),this.stop()):this.tRex.draw(0,0),this.crashed&&this.gameOverPanel&&(this.gameOverPanel.updateDimensions(this.dimensions.WIDTH),this.gameOverPanel.draw(this.altGameModeActive,this.tRex)))},playIntro(){if(this.activated||this.crashed)this.crashed&&this.restart();else{this.playingIntro=!0,this.tRex.playingIntro=!0;const t="@-webkit-keyframes intro { from { width:"+Trex.config.WIDTH+"px }to { width: "+this.dimensions.WIDTH+"px }}";document.styleSheets[0].insertRule(t,0),this.containerEl.addEventListener(Runner.events.ANIM_END,this.startGame.bind(this)),this.containerEl.style.webkitAnimation="intro .4s ease-out 1 both",this.containerEl.style.width=this.dimensions.WIDTH+"px",this.setPlayStatus(!0),this.activated=!0}},startGame(){this.isArcadeMode()&&this.setArcadeMode(),this.toggleSpeed(),this.runningTime=0,this.playingIntro=!1,this.tRex.playingIntro=!1,this.containerEl.style.webkitAnimation="",this.playCount++,this.generatedSoundFx.background(),announcePhrase(getA11yString(A11Y_STRINGS.started)),Runner.audioCues&&this.containerEl.setAttribute("title",getA11yString(A11Y_STRINGS.jump)),document.addEventListener(Runner.events.VISIBILITY,this.onVisibilityChange.bind(this)),window.addEventListener(Runner.events.BLUR,this.onVisibilityChange.bind(this)),window.addEventListener(Runner.events.FOCUS,this.onVisibilityChange.bind(this))},clearCanvas(){this.canvasCtx.clearRect(0,0,this.dimensions.WIDTH,this.dimensions.HEIGHT)},isCanvasInView(){return this.containerEl.getBoundingClientRect().top>Runner.config.CANVAS_IN_VIEW_OFFSET},enableAltGameMode(){Runner.imageSprite=Runner.altGameImageSprite,Runner.spriteDefinition=Runner.spriteDefinitionByType[Runner.gameType],this.spriteDef=IS_HIDPI?Runner.spriteDefinition.HDPI:Runner.spriteDefinition.LDPI,this.altGameModeActive=!0,this.tRex.enableAltGameMode(this.spriteDef.TREX),this.horizon.enableAltGameMode(this.spriteDef),this.generatedSoundFx.background()},update(){this.updatePending=!1;const t=getTimeStamp();let e=t-(this.time||t);if(this.altGameModeFlashTimer<0||0===this.altGameModeFlashTimer?(this.altGameModeFlashTimer=null,this.tRex.setFlashing(!1),this.enableAltGameMode()):this.altGameModeFlashTimer>0&&(this.altGameModeFlashTimer-=e,this.tRex.update(e),e=0),this.time=t,this.playing){this.clearCanvas(),this.altGameModeActive&&this.fadeInTimer<=this.config.FADE_DURATION?(this.fadeInTimer+=e/1e3,this.canvasCtx.globalAlpha=this.fadeInTimer):this.canvasCtx.globalAlpha=1,this.tRex.jumping&&this.tRex.updateJump(e),this.runningTime+=e;const t=this.runningTime>this.config.CLEAR_TIME;if(1!==this.tRex.jumpCount||this.playingIntro||this.playIntro(),this.playingIntro)this.horizon.update(0,this.currentSpeed,t);else if(!this.crashed){const i=this.isDarkMode^this.inverted;e=this.activated?e:0,this.horizon.update(e,this.currentSpeed,t,i)}let i=t&&checkForCollision(this.horizon.obstacles[0],this.tRex);if(Runner.audioCues&&t){const t="COLLECTABLE"!=this.horizon.obstacles[0].typeConfig.type;if(!this.horizon.obstacles[0].jumpAlerted){const e=Runner.isMobileMouseInput?Runner.config.AUDIOCUE_PROXIMITY_THRESHOLD_MOBILE_A11Y:Runner.config.AUDIOCUE_PROXIMITY_THRESHOLD,i=e+e*Math.log10(this.currentSpeed/Runner.config.SPEED);this.horizon.obstacles[0].xPos<i&&(t&&this.generatedSoundFx.jump(),this.horizon.obstacles[0].jumpAlerted=!0)}}Runner.isAltGameModeEnabled()&&i&&"COLLECTABLE"==this.horizon.obstacles[0].typeConfig.type&&(this.horizon.removeFirstObstacle(),this.tRex.setFlashing(!0),i=!1,this.altGameModeFlashTimer=this.config.FLASH_DURATION,this.runningTime=0,this.generatedSoundFx.collect()),i?this.gameOver():(this.distanceRan+=this.currentSpeed*e/this.msPerFrame,this.currentSpeed<this.config.MAX_SPEED&&(this.currentSpeed+=this.config.ACCELERATION));const s=this.distanceMeter.update(e,Math.ceil(this.distanceRan));if(!Runner.audioCues&&s&&this.playSound(this.soundFx.SCORE),!Runner.isAltGameModeEnabled())if(this.invertTimer>this.config.INVERT_FADE_DURATION)this.invertTimer=0,this.invertTrigger=!1,this.invert(!1);else if(this.invertTimer)this.invertTimer+=e;else{const t=this.distanceMeter.getActualDistance(Math.ceil(this.distanceRan));t>0&&(this.invertTrigger=!(t%this.config.INVERT_DISTANCE),this.invertTrigger&&0===this.invertTimer&&(this.invertTimer+=e,this.invert(!1)))}}(this.playing||!this.activated&&this.tRex.blinkCount<Runner.config.MAX_BLINK_COUNT)&&(this.tRex.update(e),this.scheduleNextUpdate())},handleEvent(t){return function(e,i){switch(e){case i.KEYDOWN:case i.TOUCHSTART:case i.POINTERDOWN:this.onKeyDown(t);break;case i.KEYUP:case i.TOUCHEND:case i.POINTERUP:this.onKeyUp(t);break;case i.GAMEPADCONNECTED:this.onGamepadConnected(t)}}.bind(this)(t.type,Runner.events)},handleCanvasKeyPress(t){this.activated||Runner.audioCues?t.keyCode&&Runner.keycodes.JUMP[t.keyCode]&&this.onKeyDown(t):(this.toggleSpeed(),Runner.audioCues=!0,this.generatedSoundFx.init(),Runner.generatedSoundFx=this.generatedSoundFx,Runner.config.CLEAR_TIME*=1.2)},preventScrolling(t){32===t.keyCode&&t.preventDefault()},toggleSpeed(){if(Runner.audioCues){if(Runner.slowDown!=this.slowSpeedCheckbox.checked){Runner.slowDown=this.slowSpeedCheckbox.checked;const t=Runner.slowDown?Runner.slowConfig:Runner.normalConfig;Runner.config=Object.assign(Runner.config,t),this.currentSpeed=t.SPEED,this.tRex.enableSlowConfig(),this.horizon.adjustObstacleSpeed()}this.playing&&this.disableSpeedToggle(!0)}},showSpeedToggle(t){const e=t&&"focus"==t.type;(Runner.audioCues||e)&&this.slowSpeedCheckboxLabel.classList.toggle(HIDDEN_CLASS,!e&&!this.crashed)},disableSpeedToggle(t){t?this.slowSpeedCheckbox.setAttribute("disabled","disabled"):this.slowSpeedCheckbox.removeAttribute("disabled")},startListening(){this.containerEl.addEventListener(Runner.events.KEYDOWN,this.handleCanvasKeyPress.bind(this)),IS_MOBILE||this.containerEl.addEventListener(Runner.events.FOCUS,this.showSpeedToggle.bind(this)),this.canvas.addEventListener(Runner.events.KEYDOWN,this.preventScrolling.bind(this)),this.canvas.addEventListener(Runner.events.KEYUP,this.preventScrolling.bind(this)),document.addEventListener(Runner.events.KEYDOWN,this),document.addEventListener(Runner.events.KEYUP,this),this.containerEl.addEventListener(Runner.events.TOUCHSTART,this),document.addEventListener(Runner.events.POINTERDOWN,this),document.addEventListener(Runner.events.POINTERUP,this),this.isArcadeMode()&&window.addEventListener(Runner.events.GAMEPADCONNECTED,this)},stopListening(){document.removeEventListener(Runner.events.KEYDOWN,this),document.removeEventListener(Runner.events.KEYUP,this),this.touchController&&(this.touchController.removeEventListener(Runner.events.TOUCHSTART,this),this.touchController.removeEventListener(Runner.events.TOUCHEND,this)),this.containerEl.removeEventListener(Runner.events.TOUCHSTART,this),document.removeEventListener(Runner.events.POINTERDOWN,this),document.removeEventListener(Runner.events.POINTERUP,this),this.isArcadeMode()&&window.removeEventListener(Runner.events.GAMEPADCONNECTED,this)},onKeyDown(t){if(IS_MOBILE&&this.playing&&t.preventDefault(),this.isCanvasInView()){if(Runner.keycodes.JUMP[t.keyCode]&&t.target==this.slowSpeedCheckbox)return;if(!this.crashed&&!this.paused){const e=IS_MOBILE&&t.type===Runner.events.POINTERDOWN&&"mouse"==t.pointerType&&t.target==this.containerEl||IS_IOS&&"touch"==t.pointerType&&document.activeElement==this.containerEl;Runner.keycodes.JUMP[t.keyCode]||t.type===Runner.events.TOUCHSTART||e||Runner.keycodes.DUCK[t.keyCode]&&this.altGameModeActive?(t.preventDefault(),this.playing||(this.touchController||t.type!==Runner.events.TOUCHSTART||this.createTouchController(),e&&this.handleCanvasKeyPress(t),this.loadSounds(),this.setPlayStatus(!0),this.update(),window.errorPageController&&errorPageController.trackEasterEgg()),this.tRex.jumping||this.tRex.ducking||(Runner.audioCues?this.generatedSoundFx.cancelFootSteps():this.playSound(this.soundFx.BUTTON_PRESS),this.tRex.startJump(this.currentSpeed))):!this.altGameModeActive&&this.playing&&Runner.keycodes.DUCK[t.keyCode]&&(t.preventDefault(),this.tRex.jumping?this.tRex.setSpeedDrop():this.tRex.jumping||this.tRex.ducking||this.tRex.setDuck(!0))}}},onKeyUp(t){const e=String(t.keyCode),i=Runner.keycodes.JUMP[e]||t.type===Runner.events.TOUCHEND||t.type===Runner.events.POINTERUP;if(this.isRunning()&&i)this.tRex.endJump();else if(Runner.keycodes.DUCK[e])this.tRex.speedDrop=!1,this.tRex.setDuck(!1);else if(this.crashed){const i=getTimeStamp()-this.time;this.isCanvasInView()&&(Runner.keycodes.RESTART[e]||this.isLeftClickOnCanvas(t)||i>=this.config.GAMEOVER_CLEAR_TIME&&Runner.keycodes.JUMP[e])&&this.handleGameOverClicks(t)}else this.paused&&i&&(this.tRex.reset(),this.play())},onGamepadConnected(t){this.pollingGamepads||this.pollGamepadState()},pollGamepadState(){const t=navigator.getGamepads();this.pollActiveGamepad(t),this.pollingGamepads=!0,requestAnimationFrame(this.pollGamepadState.bind(this))},pollForActiveGamepad(t){for(let e=0;e<t.length;++e)if(t[e]&&t[e].buttons.length>0&&t[e].buttons[0].pressed)return this.gamepadIndex=e,void this.pollActiveGamepad(t)},pollActiveGamepad(t){if(void 0===this.gamepadIndex)return void this.pollForActiveGamepad(t);const e=t[this.gamepadIndex];if(!e)return this.gamepadIndex=void 0,void this.pollForActiveGamepad(t);this.pollGamepadButton(e,0,38),e.buttons.length>=2&&this.pollGamepadButton(e,1,40),e.buttons.length>=10&&this.pollGamepadButton(e,9,13),this.previousGamepad=e},pollGamepadButton(t,e,i){const s=t.buttons[e].pressed;let n=!1;if(this.previousGamepad&&(n=this.previousGamepad.buttons[e].pressed),s!==n){const t=new KeyboardEvent(s?Runner.events.KEYDOWN:Runner.events.KEYUP,{keyCode:i});document.dispatchEvent(t)}},handleGameOverClicks(t){t.target!=this.slowSpeedCheckbox&&(t.preventDefault(),this.distanceMeter.hasClickedOnHighScore(t)&&this.highestScore?this.distanceMeter.isHighScoreFlashing()?(this.saveHighScore(0,!0),this.distanceMeter.resetHighScore()):this.distanceMeter.startHighScoreFlashing():(this.distanceMeter.cancelHighScoreFlashing(),this.restart()))},isLeftClickOnCanvas(t){return null!=t.button&&t.button<2&&t.type===Runner.events.POINTERUP&&(t.target===this.canvas||IS_MOBILE&&Runner.audioCues&&t.target===this.containerEl)},scheduleNextUpdate(){this.updatePending||(this.updatePending=!0,this.raqId=requestAnimationFrame(this.update.bind(this)))},isRunning(){return!!this.raqId},initializeHighScore(t){this.syncHighestScore=!0,(t=Math.ceil(t))<this.highestScore?window.errorPageController&&errorPageController.updateEasterEggHighScore(this.highestScore):(this.highestScore=t,this.distanceMeter.setHighScore(this.highestScore))},saveHighScore(t,e){this.highestScore=Math.ceil(t),this.distanceMeter.setHighScore(this.highestScore),this.syncHighestScore&&window.errorPageController&&(e?errorPageController.resetEasterEggHighScore():errorPageController.updateEasterEggHighScore(this.highestScore))},gameOver(){if(this.playSound(this.soundFx.HIT),vibrate(200),this.stop(),this.crashed=!0,this.distanceMeter.achievement=!1,this.tRex.update(100,Trex.status.CRASHED),!this.gameOverPanel){const t=IS_HIDPI?Runner.spriteDefinitionByType.original.HDPI:Runner.spriteDefinitionByType.original.LDPI;this.canvas&&(Runner.isAltGameModeEnabled?this.gameOverPanel=new GameOverPanel(this.canvas,t.TEXT_SPRITE,t.RESTART,this.dimensions,t.ALT_GAME_END,this.altGameModeActive):this.gameOverPanel=new GameOverPanel(this.canvas,t.TEXT_SPRITE,t.RESTART,this.dimensions))}this.gameOverPanel.draw(this.altGameModeActive,this.tRex),this.distanceRan>this.highestScore&&this.saveHighScore(this.distanceRan),this.time=getTimeStamp(),Runner.audioCues&&(this.generatedSoundFx.stopAll(),announcePhrase(getA11yString(A11Y_STRINGS.gameOver).replace("$1",this.distanceMeter.getActualDistance(this.distanceRan).toString())+" "+getA11yString(A11Y_STRINGS.highScore).replace("$1",this.distanceMeter.getActualDistance(this.highestScore).toString())),this.containerEl.setAttribute("title",getA11yString(A11Y_STRINGS.ariaLabel))),this.showSpeedToggle(),this.disableSpeedToggle(!1)},stop(){this.setPlayStatus(!1),this.paused=!0,cancelAnimationFrame(this.raqId),this.raqId=0,this.generatedSoundFx.stopAll()},play(){this.crashed||(this.setPlayStatus(!0),this.paused=!1,this.tRex.update(0,Trex.status.RUNNING),this.time=getTimeStamp(),this.update(),this.generatedSoundFx.background())},restart(){this.raqId||(this.playCount++,this.runningTime=0,this.setPlayStatus(!0),this.toggleSpeed(),this.paused=!1,this.crashed=!1,this.distanceRan=0,this.setSpeed(this.config.SPEED),this.time=getTimeStamp(),this.containerEl.classList.remove(Runner.classes.CRASHED),this.clearCanvas(),this.distanceMeter.reset(),this.horizon.reset(),this.tRex.reset(),this.playSound(this.soundFx.BUTTON_PRESS),this.invert(!0),this.flashTimer=null,this.update(),this.gameOverPanel.reset(),this.generatedSoundFx.background(),this.containerEl.setAttribute("title",getA11yString(A11Y_STRINGS.jump)),announcePhrase(getA11yString(A11Y_STRINGS.started)))},setPlayStatus(t){this.touchController&&this.touchController.classList.toggle(HIDDEN_CLASS,!t),this.playing=t},isArcadeMode:()=>IS_RTL?1==document.title.indexOf(ARCADE_MODE_URL):document.title===ARCADE_MODE_URL,setArcadeMode(){document.body.classList.add(Runner.classes.ARCADE_MODE),this.setArcadeModeContainerScale()},setArcadeModeContainerScale(){const t=window.innerHeight,e=t/this.dimensions.HEIGHT,i=window.innerWidth/this.dimensions.WIDTH,s=Math.max(1,Math.min(e,i)),n=this.dimensions.HEIGHT*s,a=Math.ceil(Math.max(0,(t-n-Runner.config.ARCADE_MODE_INITIAL_TOP_POSITION)*Runner.config.ARCADE_MODE_TOP_POSITION_PERCENT))*window.devicePixelRatio,o=IS_RTL?-s+","+s:s;this.containerEl.style.transform="scale("+o+") translateY("+a+"px)"},onVisibilityChange(t){document.hidden||document.webkitHidden||"blur"===t.type||"visible"!==document.visibilityState?this.stop():this.crashed||(this.tRex.reset(),this.play())},playSound(t){if(t){const e=this.audioContext.createBufferSource();e.buffer=t,e.connect(this.audioContext.destination),e.start(0)}},invert(t){const e=document.firstElementChild;t?(e.classList.toggle(Runner.classes.INVERTED,!1),this.invertTimer=0,this.inverted=!1):this.inverted=e.classList.toggle(Runner.classes.INVERTED,this.invertTrigger)}},Runner.updateCanvasScaling=function(t,e,i){const s=t.getContext("2d"),n=Math.floor(window.devicePixelRatio)||1,a=Math.floor(s.webkitBackingStorePixelRatio)||1,o=n/a;if(n!==a){const n=e||t.width,a=i||t.height;return t.width=n*o,t.height=a*o,t.style.width=n+"px",t.style.height=a+"px",s.scale(o,o),!0}return 1===n&&(t.style.width=t.width+"px",t.style.height=t.height+"px"),!1},Runner.isAltGameModeEnabled=function(){return loadTimeData&&loadTimeData.valueExists("enableAltGameMode")},GeneratedSoundFx.prototype={init(){this.audioCues=!0,this.context||(this.context=window.webkitAudioContext?new webkitAudioContext:new AudioContext,IS_IOS&&(this.context.onstatechange=function(){"running"!=this.context.state&&this.context.resume()}.bind(this),this.context.resume()),this.panner=this.context.createStereoPanner?this.context.createStereoPanner():null)},stopAll(){this.cancelFootSteps()},playNote(t,e,i,s,n){const a=this.context.createOscillator(),o=this.context.createOscillator(),h=this.context.createGain();a.type="triangle",o.type="triangle",h.gain.value=.1,this.panner?(this.panner.pan.value=n||0,a.connect(h).connect(this.panner),o.connect(h).connect(this.panner),this.panner.connect(this.context.destination)):(a.connect(h),o.connect(h),h.connect(this.context.destination)),a.frequency.value=t+1,o.frequency.value=t-2,h.gain.setValueAtTime(s||.01,e+i-.05),h.gain.linearRampToValueAtTime(1e-5,e+i),a.start(e),o.start(e),a.stop(e+i),o.stop(e+i)},background(){if(this.audioCues){const t=this.context.currentTime;this.playNote(493.883,t,.116),this.playNote(659.255,t+.116,.232),this.loopFootSteps()}},loopFootSteps(){this.audioCues&&!this.bgSoundIntervalId&&(this.bgSoundIntervalId=setInterval(function(){this.playNote(73.42,this.context.currentTime,.05,.16),this.playNote(69.3,this.context.currentTime+.116,.116,.16)}.bind(this),280))},cancelFootSteps(){this.audioCues&&this.bgSoundIntervalId&&(clearInterval(this.bgSoundIntervalId),this.bgSoundIntervalId=null,this.playNote(103.83,this.context.currentTime,.232,.02),this.playNote(116.54,this.context.currentTime+.116,.232,.02))},collect(){if(this.audioCues){this.cancelFootSteps();const t=this.context.currentTime;this.playNote(830.61,t,.116),this.playNote(1318.51,t+.116,.232)}},jump(){if(this.audioCues){const t=this.context.currentTime;this.playNote(659.25,t,.116,.3,-.6),this.playNote(880,t+.116,.232,.3,-.6)}}},GameOverPanel.RESTART_ANIM_DURATION=875,GameOverPanel.LOGO_PAUSE_DURATION=875,GameOverPanel.FLASH_ITERATIONS=5,GameOverPanel.animConfig={frames:[0,36,72,108,144,180,216,252],msPerFrame:GameOverPanel.RESTART_ANIM_DURATION/8},GameOverPanel.dimensions={TEXT_X:0,TEXT_Y:13,TEXT_WIDTH:191,TEXT_HEIGHT:11,RESTART_WIDTH:36,RESTART_HEIGHT:32},GameOverPanel.prototype={updateDimensions(t,e){this.canvasDimensions.WIDTH=t,e&&(this.canvasDimensions.HEIGHT=e),this.currentFrame=GameOverPanel.animConfig.frames.length-1},drawGameOverText(t,e){const i=this.canvasDimensions.WIDTH/2;let s=t.TEXT_X,n=t.TEXT_Y,a=t.TEXT_WIDTH,o=t.TEXT_HEIGHT;const h=Math.round(i-t.TEXT_WIDTH/2),r=Math.round((this.canvasDimensions.HEIGHT-25)/3),c=t.TEXT_WIDTH,l=t.TEXT_HEIGHT;IS_HIDPI&&(n*=2,s*=2,a*=2,o*=2),e||(s+=this.textImgPos.x,n+=this.textImgPos.y);const d=e?Runner.altCommonImageSprite:Runner.origImageSprite;this.canvasCtx.save(),IS_RTL&&(this.canvasCtx.translate(this.canvasDimensions.WIDTH,0),this.canvasCtx.scale(-1,1)),this.canvasCtx.drawImage(d,s,n,a,o,h,r,c,l),this.canvasCtx.restore()},drawAltGameElements(t){if(this.altGameModeActive&&Runner.spriteDefinition.ALT_GAME_END_CONFIG){const e=Runner.spriteDefinition.ALT_GAME_END_CONFIG;let i=e.WIDTH,s=e.HEIGHT;const n=t.xPos+e.X_OFFSET,a=t.yPos+e.Y_OFFSET;IS_HIDPI&&(i*=2,s*=2),this.canvasCtx.drawImage(Runner.altCommonImageSprite,this.altGameEndImgPos.x,this.altGameEndImgPos.y,i,s,n,a,e.WIDTH,e.HEIGHT)}},drawRestartButton(){const t=GameOverPanel.dimensions;let e=GameOverPanel.animConfig.frames[this.currentFrame],i=t.RESTART_WIDTH,s=t.RESTART_HEIGHT;const n=this.canvasDimensions.WIDTH/2-t.RESTART_WIDTH/2,a=this.canvasDimensions.HEIGHT/2;IS_HIDPI&&(i*=2,s*=2,e*=2),this.canvasCtx.save(),IS_RTL&&(this.canvasCtx.translate(this.canvasDimensions.WIDTH,0),this.canvasCtx.scale(-1,1)),this.canvasCtx.drawImage(Runner.origImageSprite,this.restartImgPos.x+e,this.restartImgPos.y,i,s,n,a,t.RESTART_WIDTH,t.RESTART_HEIGHT),this.canvasCtx.restore()},draw(t,e){t&&(this.altGameModeActive=t),this.drawGameOverText(GameOverPanel.dimensions,!1),this.drawRestartButton(),this.drawAltGameElements(e),this.update()},update(){const t=getTimeStamp(),e=t-(this.frameTimeStamp||t);if(this.frameTimeStamp=t,this.animTimer+=e,this.flashTimer+=e,0==this.currentFrame&&this.animTimer>GameOverPanel.LOGO_PAUSE_DURATION)this.animTimer=0,this.currentFrame++,this.drawRestartButton();else if(this.currentFrame>0&&this.currentFrame<GameOverPanel.animConfig.frames.length)this.animTimer>=GameOverPanel.animConfig.msPerFrame&&(this.currentFrame++,this.drawRestartButton());else if(!this.altGameModeActive&&this.currentFrame==GameOverPanel.animConfig.frames.length)return void this.reset();if(this.altGameModeActive&&Runner.spriteDefinitionByType.original.ALT_GAME_OVER_TEXT_CONFIG){const t=Runner.spriteDefinitionByType.original.ALT_GAME_OVER_TEXT_CONFIG;if(this.flashCounter<GameOverPanel.FLASH_ITERATIONS&&this.flashTimer>t.FLASH_DURATION)this.flashTimer=0,this.originalText=!this.originalText,this.clearGameOverTextBounds(),this.originalText?(this.drawGameOverText(GameOverPanel.dimensions,!1),this.flashCounter++):this.drawGameOverText(t,!0);else if(this.flashCounter>=GameOverPanel.FLASH_ITERATIONS)return void this.reset()}this.gameOverRafId=requestAnimationFrame(this.update.bind(this))},clearGameOverTextBounds(){this.canvasCtx.save(),this.canvasCtx.clearRect(Math.round(this.canvasDimensions.WIDTH/2-GameOverPanel.dimensions.TEXT_WIDTH/2),Math.round((this.canvasDimensions.HEIGHT-25)/3),GameOverPanel.dimensions.TEXT_WIDTH,GameOverPanel.dimensions.TEXT_HEIGHT+4),this.canvasCtx.restore()},reset(){this.gameOverRafId&&(cancelAnimationFrame(this.gameOverRafId),this.gameOverRafId=null),this.animTimer=0,this.frameTimeStamp=0,this.currentFrame=0,this.flashTimer=0,this.flashCounter=0,this.originalText=!0}},Obstacle.MAX_GAP_COEFFICIENT=1.5,Obstacle.MAX_OBSTACLE_LENGTH=3,Obstacle.prototype={init(t){if(this.cloneCollisionBoxes(),this.size>1&&this.typeConfig.multipleSpeed>t&&(this.size=1),this.width=this.typeConfig.width*this.size,Array.isArray(this.typeConfig.yPos)){const t=IS_MOBILE?this.typeConfig.yPosMobile:this.typeConfig.yPos;this.yPos=t[getRandomNum(0,t.length-1)]}else this.yPos=this.typeConfig.yPos;this.draw(),this.size>1&&(this.collisionBoxes[1].width=this.width-this.collisionBoxes[0].width-this.collisionBoxes[2].width,this.collisionBoxes[2].x=this.width-this.collisionBoxes[2].width),this.typeConfig.speedOffset&&(this.speedOffset=Math.random()>.5?this.typeConfig.speedOffset:-this.typeConfig.speedOffset),this.gap=this.getGap(this.gapCoefficient,t),Runner.audioCues&&(this.gap*=2)},draw(){let t=this.typeConfig.width,e=this.typeConfig.height;IS_HIDPI&&(t*=2,e*=2);let i=t*this.size*(.5*(this.size-1))+this.spritePos.x;this.currentFrame>0&&(i+=t*this.currentFrame),this.canvasCtx.drawImage(this.imageSprite,i,this.spritePos.y,t*this.size,e,this.xPos,this.yPos,this.typeConfig.width*this.size,this.typeConfig.height)},update(t,e){this.remove||(this.typeConfig.speedOffset&&(e+=this.speedOffset),this.xPos-=Math.floor(e*FPS/1e3*t),this.typeConfig.numFrames&&(this.timer+=t,this.timer>=this.typeConfig.frameRate&&(this.currentFrame=this.currentFrame===this.typeConfig.numFrames-1?0:this.currentFrame+1,this.timer=0)),this.draw(),this.isVisible()||(this.remove=!0))},getGap(t,e){const i=Math.round(this.width*e+this.typeConfig.minGap*t);return getRandomNum(i,Math.round(i*Obstacle.MAX_GAP_COEFFICIENT))},isVisible(){return this.xPos+this.width>0},cloneCollisionBoxes(){const t=this.typeConfig.collisionBoxes;for(let e=t.length-1;e>=0;e--)this.collisionBoxes[e]=new CollisionBox(t[e].x,t[e].y,t[e].width,t[e].height)}},Trex.config={DROP_VELOCITY:-5,FLASH_OFF:175,FLASH_ON:100,HEIGHT:47,HEIGHT_DUCK:25,INTRO_DURATION:1500,SPEED_DROP_COEFFICIENT:3,SPRITE_WIDTH:262,START_X_POS:50,WIDTH:44,WIDTH_DUCK:59},Trex.slowJumpConfig={GRAVITY:.25,MAX_JUMP_HEIGHT:50,MIN_JUMP_HEIGHT:45,INITIAL_JUMP_VELOCITY:-20},Trex.normalJumpConfig={GRAVITY:.6,MAX_JUMP_HEIGHT:30,MIN_JUMP_HEIGHT:30,INITIAL_JUMP_VELOCITY:-10},Trex.collisionBoxes={DUCKING:[new CollisionBox(1,18,55,25)],RUNNING:[new CollisionBox(22,0,17,16),new CollisionBox(1,18,30,9),new CollisionBox(10,35,14,8),new CollisionBox(1,24,29,5),new CollisionBox(5,30,21,4),new CollisionBox(9,34,15,4)]},Trex.status={CRASHED:"CRASHED",DUCKING:"DUCKING",JUMPING:"JUMPING",RUNNING:"RUNNING",WAITING:"WAITING"},Trex.BLINK_TIMING=7e3,Trex.animFrames={WAITING:{frames:[44,0],msPerFrame:1e3/3},RUNNING:{frames:[88,132],msPerFrame:1e3/12},CRASHED:{frames:[220],msPerFrame:1e3/60},JUMPING:{frames:[0],msPerFrame:1e3/60},DUCKING:{frames:[264,323],msPerFrame:125}},Trex.prototype={init(){this.groundYPos=Runner.defaultDimensions.HEIGHT-this.config.HEIGHT-Runner.config.BOTTOM_PAD,this.yPos=this.groundYPos,this.minJumpHeight=this.groundYPos-this.config.MIN_JUMP_HEIGHT,this.draw(0,0),this.update(0,Trex.status.WAITING)},enableSlowConfig:function(){const t=Runner.slowDown?Trex.slowJumpConfig:Trex.normalJumpConfig;Trex.config=Object.assign(Trex.config,t),this.adjustAltGameConfigForSlowSpeed()},enableAltGameMode:function(t){this.altGameModeEnabled=!0,this.spritePos=t;const e=Runner.spriteDefinition.TREX;Trex.animFrames.RUNNING.frames=[e.RUNNING_1.x,e.RUNNING_2.x],Trex.animFrames.CRASHED.frames=[e.CRASHED.x],"object"==typeof e.JUMPING.x?Trex.animFrames.JUMPING.frames=e.JUMPING.x:Trex.animFrames.JUMPING.frames=[e.JUMPING.x],Trex.animFrames.DUCKING.frames=[e.RUNNING_1.x,e.RUNNING_2.x],Trex.config.GRAVITY=e.GRAVITY||Trex.config.GRAVITY,Trex.config.HEIGHT=e.RUNNING_1.h,Trex.config.INITIAL_JUMP_VELOCITY=e.INITIAL_JUMP_VELOCITY,Trex.config.MAX_JUMP_HEIGHT=e.MAX_JUMP_HEIGHT,Trex.config.MIN_JUMP_HEIGHT=e.MIN_JUMP_HEIGHT,Trex.config.WIDTH=e.RUNNING_1.w,Trex.config.WIDTH_JUMP=e.JUMPING.w,Trex.config.INVERT_JUMP=e.INVERT_JUMP,this.adjustAltGameConfigForSlowSpeed(e.GRAVITY),this.config=Trex.config,this.groundYPos=Runner.defaultDimensions.HEIGHT-this.config.HEIGHT-Runner.spriteDefinition.BOTTOM_PAD,this.yPos=this.groundYPos,this.reset()},adjustAltGameConfigForSlowSpeed:function(t){Runner.slowDown&&(t&&(Trex.config.GRAVITY=t/1.5),Trex.config.MIN_JUMP_HEIGHT*=1.5,Trex.config.MAX_JUMP_HEIGHT*=1.5,Trex.config.INITIAL_JUMP_VELOCITY=1.5*Trex.config.INITIAL_JUMP_VELOCITY)},setFlashing:function(t){this.flashing=t},setJumpVelocity(t){this.config.INITIAL_JUMP_VELOCITY=-t,this.config.DROP_VELOCITY=-t/2},update(t,e){this.timer+=t,e&&(this.status=e,this.currentFrame=0,this.msPerFrame=Trex.animFrames[e].msPerFrame,this.currentAnimFrames=Trex.animFrames[e].frames,e===Trex.status.WAITING&&(this.animStartTime=getTimeStamp(),this.setBlinkDelay())),this.playingIntro&&this.xPos<this.config.START_X_POS&&(this.xPos+=Math.round(this.config.START_X_POS/this.config.INTRO_DURATION*t),this.xInitialPos=this.xPos),this.status===Trex.status.WAITING?this.blink(getTimeStamp()):this.draw(this.currentAnimFrames[this.currentFrame],0),!this.flashing&&this.timer>=this.msPerFrame&&(this.currentFrame=this.currentFrame==this.currentAnimFrames.length-1?0:this.currentFrame+1,this.timer=0),this.altGameModeEnabled||this.speedDrop&&this.yPos===this.groundYPos&&(this.speedDrop=!1,this.setDuck(!0))},draw(t,e){let i=t,s=e,n=this.ducking&&this.status!==Trex.status.CRASHED?this.config.WIDTH_DUCK:this.config.WIDTH,a=this.config.HEIGHT;const o=a;let h=Runner.spriteDefinition.TREX.JUMPING.xOffset;this.altGameModeEnabled&&this.jumping&&this.status!==Trex.status.CRASHED&&(n=this.config.WIDTH_JUMP),IS_HIDPI&&(i*=2,s*=2,n*=2,a*=2,h*=2),i+=this.spritePos.x,s+=this.spritePos.y,this.flashing&&(this.timer<this.config.FLASH_ON?this.canvasCtx.globalAlpha=.5:this.timer>this.config.FLASH_OFF&&(this.timer=0)),!this.altGameModeEnabled&&this.ducking&&this.status!==Trex.status.CRASHED?this.canvasCtx.drawImage(Runner.imageSprite,i,s,n,a,this.xPos,this.yPos,this.config.WIDTH_DUCK,o):this.altGameModeEnabled&&this.jumping&&this.status!==Trex.status.CRASHED?this.canvasCtx.drawImage(Runner.imageSprite,i,s,n,a,this.xPos-h,this.yPos,this.config.WIDTH_JUMP,o):(this.ducking&&this.status===Trex.status.CRASHED&&this.xPos++,this.canvasCtx.drawImage(Runner.imageSprite,i,s,n,a,this.xPos,this.yPos,this.config.WIDTH,o)),this.canvasCtx.globalAlpha=1},setBlinkDelay(){this.blinkDelay=Math.ceil(Math.random()*Trex.BLINK_TIMING)},blink(t){t-this.animStartTime>=this.blinkDelay&&(this.draw(this.currentAnimFrames[this.currentFrame],0),1===this.currentFrame&&(this.setBlinkDelay(),this.animStartTime=t,this.blinkCount++))},startJump(t){this.jumping||(this.update(0,Trex.status.JUMPING),this.jumpVelocity=this.config.INITIAL_JUMP_VELOCITY-t/10,this.jumping=!0,this.reachedMinHeight=!1,this.speedDrop=!1,this.config.INVERT_JUMP&&(this.minJumpHeight=this.groundYPos+this.config.MIN_JUMP_HEIGHT))},endJump(){this.reachedMinHeight&&this.jumpVelocity<this.config.DROP_VELOCITY&&(this.jumpVelocity=this.config.DROP_VELOCITY)},updateJump(t){const e=t/Trex.animFrames[this.status].msPerFrame;this.speedDrop?this.yPos+=Math.round(this.jumpVelocity*this.config.SPEED_DROP_COEFFICIENT*e):this.config.INVERT_JUMP?this.yPos-=Math.round(this.jumpVelocity*e):this.yPos+=Math.round(this.jumpVelocity*e),this.jumpVelocity+=this.config.GRAVITY*e,(this.config.INVERT_JUMP&&this.yPos>this.minJumpHeight||!this.config.INVERT_JUMP&&this.yPos<this.minJumpHeight||this.speedDrop)&&(this.reachedMinHeight=!0),(this.config.INVERT_JUMP&&this.yPos>-this.config.MAX_JUMP_HEIGHT||!this.config.INVERT_JUMP&&this.yPos<this.config.MAX_JUMP_HEIGHT||this.speedDrop)&&this.endJump(),((this.config.INVERT_JUMP&&this.yPos)<this.groundYPos||(!this.config.INVERT_JUMP&&this.yPos)>this.groundYPos)&&(this.reset(),this.jumpCount++,Runner.audioCues&&Runner.generatedSoundFx.loopFootSteps())},setSpeedDrop(){this.speedDrop=!0,this.jumpVelocity=1},setDuck(t){t&&this.status!==Trex.status.DUCKING?(this.update(0,Trex.status.DUCKING),this.ducking=!0):this.status===Trex.status.DUCKING&&(this.update(0,Trex.status.RUNNING),this.ducking=!1)},reset(){this.xPos=this.xInitialPos,this.yPos=this.groundYPos,this.jumpVelocity=0,this.jumping=!1,this.ducking=!1,this.update(0,Trex.status.RUNNING),this.midair=!1,this.speedDrop=!1,this.jumpCount=0}},DistanceMeter.dimensions={WIDTH:10,HEIGHT:13,DEST_WIDTH:11},DistanceMeter.yPos=[0,13,27,40,53,67,80,93,107,120],DistanceMeter.config={MAX_DISTANCE_UNITS:5,ACHIEVEMENT_DISTANCE:100,COEFFICIENT:.025,FLASH_DURATION:250,FLASH_ITERATIONS:3,HIGH_SCORE_HIT_AREA_PADDING:4},DistanceMeter.prototype={init(t){let e="";this.calcXPos(t),this.maxScore=this.maxScoreUnits;for(let t=0;t<this.maxScoreUnits;t++)this.draw(t,0),this.defaultString+="0",e+="9";this.maxScore=parseInt(e,10)},calcXPos(t){this.x=t-DistanceMeter.dimensions.DEST_WIDTH*(this.maxScoreUnits+1)},draw(t,e,i){let s=DistanceMeter.dimensions.WIDTH,n=DistanceMeter.dimensions.HEIGHT,a=DistanceMeter.dimensions.WIDTH*e,o=0;const h=t*DistanceMeter.dimensions.DEST_WIDTH,r=this.y,c=DistanceMeter.dimensions.WIDTH,l=DistanceMeter.dimensions.HEIGHT;if(IS_HIDPI&&(s*=2,n*=2,a*=2),a+=this.spritePos.x,o+=this.spritePos.y,this.canvasCtx.save(),IS_RTL)i?this.canvasCtx.translate(this.canvasWidth-DistanceMeter.dimensions.WIDTH*(this.maxScoreUnits+3),this.y):this.canvasCtx.translate(this.canvasWidth-DistanceMeter.dimensions.WIDTH,this.y),this.canvasCtx.scale(-1,1);else{const t=this.x-2*this.maxScoreUnits*DistanceMeter.dimensions.WIDTH;i?this.canvasCtx.translate(t,this.y):this.canvasCtx.translate(this.x,this.y)}this.canvasCtx.drawImage(this.image,a,o,s,n,h,r,c,l),this.canvasCtx.restore()},getActualDistance(t){return t?Math.round(t*this.config.COEFFICIENT):0},update(t,e){let i=!0,s=!1;if(this.achievement)this.flashIterations<=this.config.FLASH_ITERATIONS?(this.flashTimer+=t,this.flashTimer<this.config.FLASH_DURATION?i=!1:this.flashTimer>2*this.config.FLASH_DURATION&&(this.flashTimer=0,this.flashIterations++)):(this.achievement=!1,this.flashIterations=0,this.flashTimer=0);else if((e=this.getActualDistance(e))>this.maxScore&&this.maxScoreUnits==this.config.MAX_DISTANCE_UNITS?(this.maxScoreUnits++,this.maxScore=parseInt(this.maxScore+"9",10)):this.distance=0,e>0){e%this.config.ACHIEVEMENT_DISTANCE==0&&(this.achievement=!0,this.flashTimer=0,s=!0);const t=(this.defaultString+e).substr(-this.maxScoreUnits);this.digits=t.split("")}else this.digits=this.defaultString.split("");if(i)for(let t=this.digits.length-1;t>=0;t--)this.draw(t,parseInt(this.digits[t],10));return this.drawHighScore(),s},drawHighScore(){if(parseInt(this.highScore,10)>0){this.canvasCtx.save(),this.canvasCtx.globalAlpha=.8;for(let t=this.highScore.length-1;t>=0;t--)this.draw(t,parseInt(this.highScore[t],10),!0);this.canvasCtx.restore()}},setHighScore(t){t=this.getActualDistance(t);const e=(this.defaultString+t).substr(-this.maxScoreUnits);this.highScore=["10","11",""].concat(e.split(""))},hasClickedOnHighScore(t){let e=0,i=0;if(t.touches){const s=this.canvas.getBoundingClientRect();e=t.touches[0].clientX-s.left,i=t.touches[0].clientY-s.top}else e=t.offsetX,i=t.offsetY;return this.highScoreBounds=this.getHighScoreBounds(),e>=this.highScoreBounds.x&&e<=this.highScoreBounds.x+this.highScoreBounds.width&&i>=this.highScoreBounds.y&&i<=this.highScoreBounds.y+this.highScoreBounds.height},getHighScoreBounds(){return{x:this.x-2*this.maxScoreUnits*DistanceMeter.dimensions.WIDTH-DistanceMeter.config.HIGH_SCORE_HIT_AREA_PADDING,y:this.y,width:DistanceMeter.dimensions.WIDTH*(this.highScore.length+1)+DistanceMeter.config.HIGH_SCORE_HIT_AREA_PADDING,height:DistanceMeter.dimensions.HEIGHT+2*DistanceMeter.config.HIGH_SCORE_HIT_AREA_PADDING}},flashHighScore(){const t=getTimeStamp(),e=t-(this.frameTimeStamp||t);let i=!0;this.frameTimeStamp=t,this.flashIterations>2*this.config.FLASH_ITERATIONS?this.cancelHighScoreFlashing():(this.flashTimer+=e,this.flashTimer<this.config.FLASH_DURATION?i=!1:this.flashTimer>2*this.config.FLASH_DURATION&&(this.flashTimer=0,this.flashIterations++),i?this.drawHighScore():this.clearHighScoreBounds(),this.flashingRafId=requestAnimationFrame(this.flashHighScore.bind(this)))},clearHighScoreBounds(){this.canvasCtx.save(),this.canvasCtx.fillStyle="#fff",this.canvasCtx.rect(this.highScoreBounds.x,this.highScoreBounds.y,this.highScoreBounds.width,this.highScoreBounds.height),this.canvasCtx.fill(),this.canvasCtx.restore()},startHighScoreFlashing(){this.highScoreFlashing=!0,this.flashHighScore()},isHighScoreFlashing(){return this.highScoreFlashing},cancelHighScoreFlashing(){this.flashingRafId&&cancelAnimationFrame(this.flashingRafId),this.flashIterations=0,this.flashTimer=0,this.highScoreFlashing=!1,this.clearHighScoreBounds(),this.drawHighScore()},resetHighScore(){this.setHighScore(0),this.cancelHighScoreFlashing()},reset(){this.update(0,0),this.achievement=!1}},Cloud.config={HEIGHT:14,MAX_CLOUD_GAP:400,MAX_SKY_LEVEL:30,MIN_CLOUD_GAP:100,MIN_SKY_LEVEL:71,WIDTH:46},Cloud.prototype={init(){this.yPos=getRandomNum(Cloud.config.MAX_SKY_LEVEL,Cloud.config.MIN_SKY_LEVEL),this.draw()},draw(){this.canvasCtx.save();let t=Cloud.config.WIDTH,e=Cloud.config.HEIGHT;const i=t,s=e;IS_HIDPI&&(t*=2,e*=2),this.canvasCtx.drawImage(Runner.imageSprite,this.spritePos.x,this.spritePos.y,t,e,this.xPos,this.yPos,i,s),this.canvasCtx.restore()},update(t){this.remove||(this.xPos-=Math.ceil(t),this.draw(),this.isVisible()||(this.remove=!0))},isVisible(){return this.xPos+Cloud.config.WIDTH>0}},BackgroundEl.config={MAX_BG_ELS:0,MAX_GAP:0,MIN_GAP:0,POS:0,SPEED:0,Y_POS:0,MS_PER_FRAME:0},BackgroundEl.prototype={init(){this.spriteConfig=Runner.spriteDefinition.BACKGROUND_EL[this.type],this.spriteConfig.FIXED&&(this.xPos=this.spriteConfig.FIXED_X_POS),this.yPos=BackgroundEl.config.Y_POS-this.spriteConfig.HEIGHT+this.spriteConfig.OFFSET,this.draw()},draw(){this.canvasCtx.save();let t=this.spriteConfig.WIDTH,e=this.spriteConfig.HEIGHT,i=this.spriteConfig.X_POS;const s=t,n=e;IS_HIDPI&&(t*=2,e*=2,i*=2),this.canvasCtx.drawImage(Runner.imageSprite,i,this.spritePos.y,t,e,this.xPos,this.yPos,s,n),this.canvasCtx.restore()},update(t){this.remove||(this.spriteConfig.FIXED?(this.animTimer+=t,this.animTimer>BackgroundEl.config.MS_PER_FRAME&&(this.animTimer=0,this.switchFrames=!this.switchFrames),this.spriteConfig.FIXED_Y_POS_1&&this.spriteConfig.FIXED_Y_POS_2&&(this.yPos=this.switchFrames?this.spriteConfig.FIXED_Y_POS_1:this.spriteConfig.FIXED_Y_POS_2)):this.xPos-=BackgroundEl.config.SPEED,this.draw(),this.isVisible()||(this.remove=!0))},isVisible(){return this.xPos+this.spriteConfig.WIDTH>0}},NightMode.config={FADE_SPEED:.035,HEIGHT:40,MOON_SPEED:.25,NUM_STARS:2,STAR_SIZE:9,STAR_SPEED:.3,STAR_MAX_Y:70,WIDTH:20},NightMode.phases=[140,120,100,60,40,20,0],NightMode.prototype={update(t){if(t&&0===this.opacity&&(this.currentPhase++,this.currentPhase>=NightMode.phases.length&&(this.currentPhase=0)),t&&(this.opacity<1||0===this.opacity)?this.opacity+=NightMode.config.FADE_SPEED:this.opacity>0&&(this.opacity-=NightMode.config.FADE_SPEED),this.opacity>0){if(this.xPos=this.updateXPos(this.xPos,NightMode.config.MOON_SPEED),this.drawStars)for(let t=0;t<NightMode.config.NUM_STARS;t++)this.stars[t].x=this.updateXPos(this.stars[t].x,NightMode.config.STAR_SPEED);this.draw()}else this.opacity=0,this.placeStars();this.drawStars=!0},updateXPos(t,e){return t<-NightMode.config.WIDTH?t=this.containerWidth:t-=e,t},draw(){let t=3===this.currentPhase?2*NightMode.config.WIDTH:NightMode.config.WIDTH,e=NightMode.config.HEIGHT,i=this.spritePos.x+NightMode.phases[this.currentPhase];const s=t;let n=NightMode.config.STAR_SIZE,a=Runner.spriteDefinitionByType.original.LDPI.STAR.x;if(IS_HIDPI&&(t*=2,e*=2,i=this.spritePos.x+2*NightMode.phases[this.currentPhase],n*=2,a=Runner.spriteDefinitionByType.original.HDPI.STAR.x),this.canvasCtx.save(),this.canvasCtx.globalAlpha=this.opacity,this.drawStars)for(let t=0;t<NightMode.config.NUM_STARS;t++)this.canvasCtx.drawImage(Runner.origImageSprite,a,this.stars[t].sourceY,n,n,Math.round(this.stars[t].x),this.stars[t].y,NightMode.config.STAR_SIZE,NightMode.config.STAR_SIZE);this.canvasCtx.drawImage(Runner.origImageSprite,i,this.spritePos.y,t,e,Math.round(this.xPos),this.yPos,s,NightMode.config.HEIGHT),this.canvasCtx.globalAlpha=1,this.canvasCtx.restore()},placeStars(){const t=Math.round(this.containerWidth/NightMode.config.NUM_STARS);for(let e=0;e<NightMode.config.NUM_STARS;e++)this.stars[e]={},this.stars[e].x=getRandomNum(t*e,t*(e+1)),this.stars[e].y=getRandomNum(0,NightMode.config.STAR_MAX_Y),this.stars[e].sourceY=IS_HIDPI?Runner.spriteDefinitionByType.original.HDPI.STAR.y+2*NightMode.config.STAR_SIZE*e:Runner.spriteDefinitionByType.original.LDPI.STAR.y+NightMode.config.STAR_SIZE*e},reset(){this.currentPhase=0,this.opacity=0,this.update(!1)}},HorizonLine.dimensions={WIDTH:600,HEIGHT:12,YPOS:127},HorizonLine.prototype={setSourceDimensions(t){for(const e in t)"SOURCE_X"!==e&&"SOURCE_Y"!==e&&(IS_HIDPI?"YPOS"!==e&&(this.sourceDimensions[e]=2*t[e]):this.sourceDimensions[e]=t[e],this.dimensions[e]=t[e]);this.xPos=[0,t.WIDTH],this.yPos=t.YPOS},getRandomType(){return Math.random()>this.bumpThreshold?this.dimensions.WIDTH:0},draw(){this.canvasCtx.drawImage(Runner.imageSprite,this.sourceXPos[0],this.spritePos.y,this.sourceDimensions.WIDTH,this.sourceDimensions.HEIGHT,this.xPos[0],this.yPos,this.dimensions.WIDTH,this.dimensions.HEIGHT),this.canvasCtx.drawImage(Runner.imageSprite,this.sourceXPos[1],this.spritePos.y,this.sourceDimensions.WIDTH,this.sourceDimensions.HEIGHT,this.xPos[1],this.yPos,this.dimensions.WIDTH,this.dimensions.HEIGHT)},updateXPos(t,e){const i=t,s=0===t?1:0;this.xPos[i]-=e,this.xPos[s]=this.xPos[i]+this.dimensions.WIDTH,this.xPos[i]<=-this.dimensions.WIDTH&&(this.xPos[i]+=2*this.dimensions.WIDTH,this.xPos[s]=this.xPos[i]-this.dimensions.WIDTH,this.sourceXPos[i]=this.getRandomType()+this.spritePos.x)},update(t,e){const i=Math.floor(e*(FPS/1e3)*t);this.xPos[0]<=0?this.updateXPos(0,i):this.updateXPos(1,i),this.draw()},reset(){this.xPos[0]=0,this.xPos[1]=this.dimensions.WIDTH}},Horizon.config={BG_CLOUD_SPEED:.2,BUMPY_THRESHOLD:.3,CLOUD_FREQUENCY:.5,HORIZON_HEIGHT:16,MAX_CLOUDS:6},Horizon.prototype={init(){Obstacle.types=Runner.spriteDefinitionByType.original.OBSTACLES,this.addCloud();for(let t=0;t<Runner.spriteDefinition.LINES.length;t++)this.horizonLines.push(new HorizonLine(this.canvas,Runner.spriteDefinition.LINES[t]));this.nightMode=new NightMode(this.canvas,this.spritePos.MOON,this.dimensions.WIDTH)},adjustObstacleSpeed:function(){for(let t=0;t<Obstacle.types.length;t++)Runner.slowDown&&(Obstacle.types[t].multipleSpeed=Obstacle.types[t].multipleSpeed/2,Obstacle.types[t].minGap*=1.5,Obstacle.types[t].minSpeed=Obstacle.types[t].minSpeed/2,"object"==typeof Obstacle.types[t].yPos&&(Obstacle.types[t].yPos=Obstacle.types[t].yPos[0],Obstacle.types[t].yPosMobile=Obstacle.types[t].yPos[0]))},enableAltGameMode:function(t){this.clouds=[],this.backgroundEls=[],this.altGameModeActive=!0,this.spritePos=t,Obstacle.types=Runner.spriteDefinition.OBSTACLES,this.adjustObstacleSpeed(),Obstacle.MAX_GAP_COEFFICIENT=Runner.spriteDefinition.MAX_GAP_COEFFICIENT,Obstacle.MAX_OBSTACLE_LENGTH=Runner.spriteDefinition.MAX_OBSTACLE_LENGTH,BackgroundEl.config=Runner.spriteDefinition.BACKGROUND_EL_CONFIG,this.horizonLines=[];for(let t=0;t<Runner.spriteDefinition.LINES.length;t++)this.horizonLines.push(new HorizonLine(this.canvas,Runner.spriteDefinition.LINES[t]));this.reset()},update(t,e,i,s){this.runningTime+=t,this.altGameModeActive&&this.updateBackgroundEls(t,e);for(let i=0;i<this.horizonLines.length;i++)this.horizonLines[i].update(t,e);this.altGameModeActive&&!Runner.spriteDefinition.HAS_CLOUDS||(this.nightMode.update(s),this.updateClouds(t,e)),i&&this.updateObstacles(t,e)},updateBackgroundEl(t,e,i,s,n){const a=e.length;if(a){for(let i=a-1;i>=0;i--)e[i].update(t);const o=e[a-1];a<i&&this.dimensions.WIDTH-o.xPos>o.gap&&n>Math.random()&&s()}else s()},updateClouds(t,e){const i=this.cloudSpeed/1e3*t*e;this.updateBackgroundEl(i,this.clouds,this.config.MAX_CLOUDS,this.addCloud.bind(this),this.cloudFrequency),this.clouds=this.clouds.filter(t=>!t.remove)},updateBackgroundEls(t,e){this.updateBackgroundEl(t,this.backgroundEls,BackgroundEl.config.MAX_BG_ELS,this.addBackgroundEl.bind(this),this.cloudFrequency),this.backgroundEls=this.backgroundEls.filter(t=>!t.remove)},updateObstacles(t,e){const i=this.obstacles.slice(0);for(let s=0;s<this.obstacles.length;s++){const n=this.obstacles[s];n.update(t,e),n.remove&&i.shift()}if(this.obstacles=i,this.obstacles.length>0){const t=this.obstacles[this.obstacles.length-1];t&&!t.followingObstacleCreated&&t.isVisible()&&t.xPos+t.width+t.gap<this.dimensions.WIDTH&&(this.addNewObstacle(e),t.followingObstacleCreated=!0)}else this.addNewObstacle(e)},removeFirstObstacle(){this.obstacles.shift()},addNewObstacle(t){const e=Runner.isAltGameModeEnabled()&&!this.altGameModeActive||this.altGameModeActive?Obstacle.types.length-1:Obstacle.types.length-2,i=e>0?getRandomNum(0,e):0,s=Obstacle.types[i];if(e>0&&this.duplicateObstacleCheck(s.type)||t<s.minSpeed)this.addNewObstacle(t);else{const e=this.spritePos[s.type];this.obstacles.push(new Obstacle(this.canvasCtx,s,e,this.dimensions,this.gapCoefficient,t,s.width,this.altGameModeActive)),this.obstacleHistory.unshift(s.type),this.obstacleHistory.length>1&&this.obstacleHistory.splice(Runner.config.MAX_OBSTACLE_DUPLICATION)}},duplicateObstacleCheck(t){let e=0;for(let i=0;i<this.obstacleHistory.length;i++)e=this.obstacleHistory[i]===t?e+1:0;return e>=Runner.config.MAX_OBSTACLE_DUPLICATION},reset(){this.obstacles=[];for(let t=0;t<this.horizonLines.length;t++)this.horizonLines[t].reset();this.nightMode.reset()},resize(t,e){this.canvas.width=t,this.canvas.height=e},addCloud(){this.clouds.push(new Cloud(this.canvas,this.spritePos.CLOUD,this.dimensions.WIDTH))},addBackgroundEl(){const t=Object.keys(Runner.spriteDefinition.BACKGROUND_EL);if(t.length>0){let e=getRandomNum(0,t.length-1),i=t[e];for(;i==this.lastEl&&t.length>1;)i=t[e=getRandomNum(0,t.length-1)];this.lastEl=i,this.backgroundEls.push(new BackgroundEl(this.canvas,this.spritePos.BACKGROUND_EL,this.dimensions.WIDTH,i))}}};</script><script>const GAME_TYPE=[];let ObstacleType;Runner.spriteDefinitionByType={original:{LDPI:{BACKGROUND_EL:{x:86,y:2},CACTUS_LARGE:{x:332,y:2},CACTUS_SMALL:{x:228,y:2},OBSTACLE_2:{x:332,y:2},OBSTACLE:{x:228,y:2},CLOUD:{x:86,y:2},HORIZON:{x:2,y:54},MOON:{x:484,y:2},PTERODACTYL:{x:134,y:2},RESTART:{x:2,y:68},TEXT_SPRITE:{x:655,y:2},TREX:{x:848,y:2},STAR:{x:645,y:2},COLLECTABLE:{x:2,y:2},ALT_GAME_END:{x:121,y:2}},HDPI:{BACKGROUND_EL:{x:166,y:2},CACTUS_LARGE:{x:652,y:2},CACTUS_SMALL:{x:446,y:2},OBSTACLE_2:{x:652,y:2},OBSTACLE:{x:446,y:2},CLOUD:{x:166,y:2},HORIZON:{x:2,y:104},MOON:{x:954,y:2},PTERODACTYL:{x:260,y:2},RESTART:{x:2,y:130},TEXT_SPRITE:{x:1294,y:2},TREX:{x:1678,y:2},STAR:{x:1276,y:2},COLLECTABLE:{x:4,y:4},ALT_GAME_END:{x:242,y:4}},MAX_GAP_COEFFICIENT:1.5,MAX_OBSTACLE_LENGTH:3,HAS_CLOUDS:1,BOTTOM_PAD:10,TREX:{WAITING_1:{x:44,w:44,h:47,xOffset:0},WAITING_2:{x:0,w:44,h:47,xOffset:0},RUNNING_1:{x:88,w:44,h:47,xOffset:0},RUNNING_2:{x:132,w:44,h:47,xOffset:0},JUMPING:{x:0,w:44,h:47,xOffset:0},CRASHED:{x:220,w:44,h:47,xOffset:0},COLLISION_BOXES:[new CollisionBox(22,0,17,16),new CollisionBox(1,18,30,9),new CollisionBox(10,35,14,8),new CollisionBox(1,24,29,5),new CollisionBox(5,30,21,4),new CollisionBox(9,34,15,4)]},OBSTACLES:[{type:"CACTUS_SMALL",width:17,height:35,yPos:105,multipleSpeed:4,minGap:120,minSpeed:0,collisionBoxes:[new CollisionBox(0,7,5,27),new CollisionBox(4,0,6,34),new CollisionBox(10,4,7,14)]},{type:"CACTUS_LARGE",width:25,height:50,yPos:90,multipleSpeed:7,minGap:120,minSpeed:0,collisionBoxes:[new CollisionBox(0,12,7,38),new CollisionBox(8,0,7,49),new CollisionBox(13,10,10,38)]},{type:"PTERODACTYL",width:46,height:40,yPos:[100,75,50],yPosMobile:[100,50],multipleSpeed:999,minSpeed:8.5,minGap:150,collisionBoxes:[new CollisionBox(15,15,16,5),new CollisionBox(18,21,24,6),new CollisionBox(2,14,4,3),new CollisionBox(6,10,4,7),new CollisionBox(10,8,6,9)],numFrames:2,frameRate:1e3/6,speedOffset:.8}],BACKGROUND_EL:{CLOUD:{HEIGHT:14,MAX_CLOUD_GAP:400,MAX_SKY_LEVEL:30,MIN_CLOUD_GAP:100,MIN_SKY_LEVEL:71,OFFSET:4,WIDTH:46,X_POS:1,Y_POS:120}},BACKGROUND_EL_CONFIG:{MAX_BG_ELS:1,MAX_GAP:400,MIN_GAP:100,POS:0,SPEED:.5,Y_POS:125},LINES:[{SOURCE_X:2,SOURCE_Y:52,WIDTH:600,HEIGHT:12,YPOS:127}]}};</script></head><body id="t" class="neterror" style="font-family:'Segoe UI',Tahoma,sans-serif;font-size:75%" jstcache="0"><div id="main-frame-error" class="interstitial-wrapper" jstcache="0"><div id="main-content" jstcache="0"><div class="icon icon-offline" jstcache="0" style="visibility:hidden"></div><div id="main-message" jstcache="0"><h1 jstcache="0"><span jsselect="heading" jsvalues=".innerHTML:msg" jstcache="9">Press space to play</span> <a id="error-information-button" class="hidden" onclick="toggleErrorInformationPopup()" jstcache="0"></a></h1><p jsselect="summary" jsvalues=".innerHTML:msg" jstcache="1" style="display:none"></p><div id="error-information-popup-container" jstcache="0"><div id="error-information-popup" jstcache="0"><div id="error-information-popup-box" jstcache="0"><div id="error-information-popup-content" jstcache="0"><div id="suggestions-list" style="display:none" jsdisplay="(suggestionsSummaryList &amp;&amp; suggestionsSummaryList.length)" jstcache="16"><p jsvalues=".innerHTML:suggestionsSummaryListHeader" jstcache="18"></p><ul jsvalues=".className:suggestionsSummaryList.length == 1 ? 'single-suggestion' : ''" jstcache="19"><li jsselect="suggestionsSummaryList" jsvalues=".innerHTML:summary" jstcache="21"></li></ul></div><div class="error-code" jscontent="errorCode" jstcache="17"></div><p id="error-information-popup-close" jstcache="0"><a class="link-button" jscontent="closeDescriptionPopup" onclick="toggleErrorInformationPopup()" jstcache="20">null</a></p></div></div></div></div><div id="download-links-wrapper" class="hidden" jstcache="0"><div id="download-link-wrapper" jstcache="0"><a id="download-link" class="link-button" onclick="downloadButtonClick()" jsselect="downloadButton" jscontent="msg" jsvalues=".disabledText:disabledMsg" jstcache="6" style="display:none"></a></div><div id="download-link-clicked-wrapper" class="hidden" jstcache="0"><div id="download-link-clicked" class="link-button" jsselect="downloadButton" jscontent="disabledMsg" jstcache="11" style="display:none"></div></div></div><div id="save-page-for-later-button" class="hidden" jstcache="0"><a class="link-button" onclick="savePageLaterClick()" jsselect="savePageLater" jscontent="savePageMsg" jstcache="10" style="display:none"></a></div><div id="cancel-save-page-button" class="hidden" onclick="cancelSavePageClick()" jsselect="savePageLater" jsvalues=".innerHTML:cancelMsg" jstcache="4" style="display:none"></div><div id="offline-content-list" class="list-hidden" hidden jstcache="0"><div id="offline-content-list-visibility-card" onclick="toggleOfflineContentListVisibility(!0)" jstcache="0"><div id="offline-content-list-title" jsselect="offlineContentList" jscontent="title" jstcache="12" style="display:none"></div><div jstcache="0"><div id="offline-content-list-show-text" jsselect="offlineContentList" jscontent="showText" jstcache="14" style="display:none"></div><div id="offline-content-list-hide-text" jsselect="offlineContentList" jscontent="hideText" jstcache="15" style="display:none"></div></div></div><div id="offline-content-suggestions" jstcache="0"></div><div id="offline-content-list-action" jstcache="0"><a class="link-button" onclick="launchDownloadsPage()" jsselect="offlineContentList" jscontent="actionText" jstcache="13" style="display:none"></a></div></div></div></div><div id="buttons" class="nav-wrapper suggested-left" jstcache="0"><div id="control-buttons" hidden jstcache="0"><button id="reload-button" class="blue-button text-button" onclick="reloadButtonClick(this.url)" jsselect="reloadButton" jsvalues=".url:reloadUrl" jscontent="msg" jstcache="5" style="display:none"></button> <button id="download-button" class="blue-button text-button" onclick="downloadButtonClick()" jsselect="downloadButton" jscontent="msg" jsvalues=".disabledText:disabledMsg" jstcache="6" style="display:none"></button></div><button id="details-button" class="secondary-button text-button small-link singular" onclick="detailsButtonClick(),toggleHelpBox()" jscontent="details" jsdisplay="(suggestionsDetails &amp;&amp; suggestionsDetails.length > 0) || diagnose" jsvalues=".detailsText:details; .hideDetailsText:hideDetails;" jstcache="2" style="display:none"></button></div><div id="details" class="hidden" jstcache="0"><div class="suggestions" jsselect="suggestionsDetails" jstcache="3" style="display:none"><div class="suggestion-header" jsvalues=".innerHTML:header" jstcache="7"></div><div class="suggestion-body" jsvalues=".innerHTML:body" jstcache="8"></div></div></div><div role="application" tabindex="0" title="Dino game, play" class="runner-container"><canvas class="runner-canvas" width="600" height="150" style="width:600px;height:150px"></canvas><span class="offline-runner-live-region" aria-live="assertive">Dino game. A pixelated dinosaur dodges cacti and pterodactyls as it runs across a desolate landscape. When you hear an audio cue, press space to jump over obstacles.</span></div><label class="slow-speed-option hidden">Start slower<input type="checkbox" title="Start slower" tabindex="0" checked><span class="slow-speed-toggle"></span></label></div><div id="sub-frame-error" jstcache="0"><div class="icon" jstcache="0"></div><div id="sub-frame-error-details" jsselect="summary" jsvalues=".innerHTML:msg" jstcache="1" style="display:none"></div></div><div id="offline-resources" jstcache="0"><img id="offline-resources-1x" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABNEAAABkBAMAAABayruYAAAAJFBMVEUAAADa2tr/////9/e6urpTU1O5ubn39/f///9ZWVlfX1/z8/O/OctmAAAACXRSTlMA//////////ZO3iNwAAALPElEQVR4AezdwY6bShMF4GP6krX9Bqgk9kiI/SzyAAir9lnlFfL6N26OWhXckDae9mClj/L7L1czMMbfbYDMOCgpKSkpwelyRmIEd6mEhTQpDabvu1C7vsf2ALM6cLlctquVtq2YDwC1jrfHEVDV8fagvln7p7XOlUKVi9SKWrncY5GQnN0DhLuZ1HZJa7WZPemU0GCc6hUMBtVue4BZHeD3v1caTn9KIyiPSimIvjw8SqtDVaQlvKrT2e91JEVUsEilOtGTNkkNUglWnFLX1oDrWSwGSOZ8V91CRczFDnBkWVEaKG0WBISZDPOTeeD2MIZK/Sz4YESUkbxdRhlkTXTrJ74d+aQ1bFRPSRvYjUuLmLOKmNjIch3/fQesGygrHW/SyO2WWzWmSyvSHjpVE1WJSWsIqwJk0agmSmsb39gnzbGKSaOXyJTGKmFSA6vvv/Nh3NQaDpyjPWaCp22mt0+ahkj+LlTzU4tu3Ujjrt4nrZoIq20qlT8brW/4k7S5sQGq73ZJO+M5aawjc5pHRmmYLxMozY/64llp8oAeeaQrMWkir5EGnSPLg8aZ6OaIrJ3n8WsX0lptPCy5ldOiYaT5xro0p9cEaa7nAENd99DOrEzIK0btxOrDSKMl0JeyCgugtr2DSWunmDR2Xy7tdF7c7MgmrfmLNDa7LWmOX9pllzbSDac0UBqrpTQOHOboeQBpIWJOjU3Oq8dItu+pNZRWLaWFBg+nnyBt6FhxIMIrVGxfFqGujcuDj/lkf6S0EeYC9E5aGDiUtAMcPUNkMZ8xl/Oj0qqJ0tomSFs2xDfkaWlOr1FpZzwrzU5qP3jn1px/qeroQUGVDyR2q/hs9X5auSI44T5nLheTJkppdnDpiNJCY1ta3wVQcB2lceBrpH3Dj29F2qdKO50vEWunl0qb6RDUcO0ojQOGYFya6++gnVlRGiubIO1CXgtq+IFPTZF2AeJvBBeT+Ffz8TlpvJnhZTleSTo+NwOB4Iq0QbvPl/btJz41Rdpanpemf5EWbmZQVheXZgei0m7Fp0v7+Ts/APteqI6savX/Y22XCa3NJVlH9qrP092DSROfv3qUOXdt/t8z0iyo3rjplgMJ0ugkemPjHCobnKK3PPiFnNOOL61Iq95cGq89rZ9aQ6l1MKNYhLqi9XKZX79if0EokqNrk9FZwtZj0EJks01pamYztFYaSz7qXmmue5U0f+0Zs0FpWqR9rbSpIqwGFWEpG0Fau1/a4Fn1r5rTskv7pV5aJeYwA4hKli4UjFXmh2LhGho8mujW1yNzlFE+R7QdpDWUNgGoOHmxQWnazP090nr/R/UV0sLfe2ryGVfcZB1Zkms+qLRKhGki0iTkC6VNglmaNKC0KTSCNAhnvf3SOnT5pW3pwlgnzWnLqwOY9ghKE2nDzuQ7laUL81KMtHlYDC9TtpNIY+xJsrTl1pmnD6I8OeNE1gAsGzZgpIGz3pa0fkvaFe7qpfX5pH18fPyj0sKX6SRipTHKiHyJtIrS0Fppk4ANwgvSpNmW5hOXdu078Cab5pP23/cZx9oZV6I0qI5RaVC9SVO+dwyd5OlCNXKHQ9QsTF5qy8nY0zRp0a2nUiPO1bY9O6O0RaO10hpsSHPb0oD80vzP3AKqutSVfD+NITS7JAnrQaWRFeulNA35ImmVzLAgbZBmGySnKdIwJEjDkH1Oe4U0+94JnWTqQlUNNARpd5napTob2QYU33qqNEbifUn+3ahbK0Ga25bm/JzGhTKep+VOTmlFWpMiDcOmtKEbtLs9aNZrz9dIY+z5fKYu1MTc5dDVTBKlliBtsfWUyNpXiG2nSpvENHiJqT1B9To/dIDjQFSa0+ugvV5d32f7G/Yi7d2lAVYaQ0zMFeAgB0jwThrglDYzSMMXSIOPZOnGpW1Tm5pK2qelIS2yeptXGOB5aZ0zNaXZAaqLSKPNIm21W6TRCakMpqY0/8QNlmNcWpfj9wheElEbydxFVBpE1qVhSS2FkOyTlrDsPmlGVxfQXPuO0swAh1gupdHm+0uT3F1EoGWXJjiANCLqezuJMYMZIEGWVhoHcvwW3uupSfYurLRtapPc0iBOTXywFtkpTZBJGvp+CCdmvJIEYwZIkKWRlu932I8vrUjL8KlWhuDwhtLSr+3zdxGDZqnxdi2LBlhSEwlF+qv6XGkQaWZyImmNHZ815HojLfETYFguoeG0+gkwx5ZWpO3Krk+14tVCzk+1ej01kVd0EYHmNf15a2NOw1FLTSBM6qtKjajgYNJ4upb3k/r+TWki7SRr0iYRlX9Kmh/su8yfPvqa8MglqiKpXeGBzXYlaQ2khntpLX9AyEuLsOFWU+XYrSdHcDxpbtAuDGT6ROV/SVollNZULdcd32oSHZ7OcevKvKc0WGmZPiX+ZRFVgaikd3lgW1JLWsOs7F6a/3yLBmvSBBAh5/2vKn/ySztyji8NVZAW1m1CaXNQpL2vNOFDWjcSEUldAxQxaSLSTg3WpBHYQ9IERdpqijQmLi09qkXaYY+eKqndeBLXAFU+RA6gTcKqd7yq40hzFlS3MRCX1uHoKdJqfG2c86AGb6Wbf1b7ejcAx4GINA68c8Jvhqd240lbw3p4hra66vSoLrZ+gAyDhqnLXZUzlB0gwXnAWWl2IH+KtPeOc/3vdCCoWxYDJEhfHVz4LTwzkJKSEmetDN1ygARvA47/7OfQud4OJKWkxFJxCQOh5pP3S0lJSUlJSYmq4sipVcdF/Y4pqcfbnwNHgXFRv2FKagWgOG74D97a+h1Tonw8ZgiLjxo6nxQteV1GzmzK8NlxYkyMz/lAydGmEEVJSe7Mc0dJrY8uPyaedO4PN5I96Zsr+yp9c6ppKwKjSIuurYAZk48wy4xJb7COO2jU3CIXKPsqcV8dMnXaEjuiO76DL9xLZV/Va9+T6oP/LSVN3yO3wMXzRLEnY9lXyUk8dOquw8R4vHNG1T3fmCa90LKv0vfV/+2dQW6jQBBFEascwyqpL9RSiZO0ejvL4QZDbmB8g/hy0zXwRUPZ0QiRDfwnJ5aesstTCdNNm7yAEEJaWXE7ztQQEnRFPM6Q04+orftuwLS64XaUacjpR5Q7KyQuRirMBt0QjzLNmSHyr7TNSVuFOJuPYRjGifsw/GFp+yCtqBHlnemH4XOcKdH9Ymm7IKIT8eYNShvB/X1p3cYY2RlNznSXKI20CgQmrk2PkWZ8U1remtrBqDddukJpRNxHvxDDaqj1w7hwn0pLKbl5lfOL0pIrzZkuX6A00sYqDwy5sBpq/edYMZWWsxWTC3VpaWsK6o12G5NgmhPD0uRlaQFmKu05Pp6FL5TW5ZxRydSMqbQ1BXXGulqbDNOcFtKqqMoM7q5FM6Eq7WGlGShNp5lmoBm0B4MQVwYzbW0STENOS1AJUTQKLsuso2ARiBRnprfKvsbCo7zdUVpeLrLiG5O6vDX22pguw5y0NIKurDIJqorSROyXvU+ljVaaUZeWXFfedMmX5kyXLlAaCXNkWpcWA0JAaV/PbWkp/09pzmjypek1SmNp0ZWmMEtpoytNfUU7zTVLY2nK0sjPlKa+NGFp5AdKc58INE4/LI0cWloUe6E0TDjxpT1YGtmLaEFEcD8NJkiA6S2xmRGlZYBmDjENOftWDtFCrEyU9WrUBFajsIqElaajTEOuVFpQZKDx3Qr7Mozwx4eYhpyXsJR2m4wsGbzeNcQ9t2QHLf7pKjD1SPM7IVka2UUruKshMMGEISyNHMe8mh6lMrhuc88RDCyN7Gba9xhvlYlaBJ/CI8fSBg0qt9pIEYvpkdrdRhpLI57dXw66Mh+/K3haAuEJMOQ88FQrsoO/etICpT2ul1QAAAAASUVORK5CYII=" jstcache="0"> <img id="offline-resources-2x" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACY4AAADCCAMAAADT9DSoAAAANlBMVEUAAADa2tr/////9/e5ubn39/dTU1P29vbv7+/+/v74+Pjw8PD///9ZWVlfX1/z8/P5+fn///9RgilMAAAAEnRSTlMA///////////////2////9gn80juWAAAR/UlEQVR4AezdAW+jOBPG8QcgVPv9P+xqHQPvu9nrTWWd1enNuY7D/ydpS+gwdqRq44yN0WUBAAAAAAAA06u/sVPPbZZ0/Ie5LNvIEWbRu11msCsK7duYZM4OcaWzf1+rVk13fbTpj1SctXMWZJHluSLYTmxlUBlVxJlkZz/py2a/txeV/o1qls9B3q55/TALAAAAHa16KeU340nT4+gKZq36LesYPMIsWmR2mbGuqGvZxqkrOsct+wNgOAYA2Gy6bysmEo3N/71HKhWzg+W1haTCZqdr06Blu5tSvS/GpLIhAAzHmsxMWyWsqJA980zxKinb+4zWxh4Zs46RIyoVosWqRGNcYRGOrJE2zCTjjzsD+SwysJLTFXdaRCjf+DA7P74yeTvmrdtUKCTWjr2uaZIAoHR7k5a3H+oLANZX+W4zdf4WjFmHP+IyrM616/ucQ+S1nFO3FWTn/r6Gsbi50Sb+3l+aykxk5Q5Mu9xstTshK20UL5MAMBwbzsmyXgCF22yD5OVx/EthAMBw7NSobP1Yh2qV7X4WyjF/shLMIio5Xrw2tsTrY/3XjQXiLPYMxFktLZ7v3O04azRYA/+z9stL3s0Zk/ibHkqvqUwA2Opzl9ock5B2J2Qtn50t5ky38txW6R8AhmM9xt4w/mrVnyMpB3I8MjyOKyyimqO9+r2O16sRswdZtv+HNN01KGRJK/1tmfdhbZ4Xq67AtoS11wDwcLsLAK49HEvhqvrU9O7Po2HudpVAq0Udn0bocfQ4DuRo0NOB7nXsULPrsG7s9MUZ/zouTV3Wj0lZq6Z7juyclFQe1yYh7ZxxXJvKBJvsd+XvTbKTQHxtc+u8WPXyJp3Fh8kkAAAAhmMxzu/G/WHWccF7HesWazVYswOw0l/L++zAvmP1Oy0BoLr5a8WmIsC9lasdBVgeE8sMgOHYFl4nczZ7lqRsPVez3Nle2/qxXrvhN8hh903CqmB7uGYX3x/sDOdzaLj/2BTNB8Ahf1NerNz+DgAAwHCs/Vox9hdr2Yp/tzFqYw1XrZ1C9KmYSdrKab+tOh+42XXldqxJFf8Q95VrN5lUucuzov4+gP5r3TDrwqb/E4BLur39KI57AYCVfccra7v65Lb1Y4HqU7O9wQbdocvqUezcD3PuR3HcCwCsTGEAYDf+v4+TCkn1M/Wz9d8l/7X1vvj7l+wAAMMxoMeu+vErAhW45nVB92O/JpXOxndVtr+78tTkiiu/fFlctnqvHXcBAOtYS/incq/9oNPyALic27xrmeef6goAVqFc21Vfy9Uot+ptXozVf/y76nuvWKox8Tbsmn2op23i3MW+eAAYjn11YuOsTlUAgN9ttoHt8jj+JQBgOAb+GOKrvLr0yiIWixngaZvUxd5lgf3jyQuGYw5n5RwANH1wW3LHOyNT5WUtvpBav6n2/dwcwR0BDMfy06wb8++XewRzG9aPlfWfwBUXqEpNMqczTq3j2t9dGYg7Ncnisuw/wOkuAGBX/n4A4CYAoDrWFQ5lrboiIGvVdM/Vebq6Mn6TNt+F23u8U1JU8aasqzGBftb7M38y7zA7P86y5SBvPG+p2dxNojoGADyzEsD4qI41GtP3Xze2+r8jxHPHOXKuofqY5aAcG9+hHzyzEgBWCQB4ZmVgpvLr85VXAYDhGLIOzZ9G/HbYfWYNWrFVOtdQ26F/0TMBz6x81uei5Opv6x9buVNe8to3jOSIKSXnWqpDDURaZe0YAAAA1bEOY++ee56tzv3Bao5GuQ9X1coTYfnmSt9irVj+rPUCxVnboZ/a2MjKzV0796RDZ+wO0Jb93AQ8S93p6NVqJR4AAACsHUO80neEIoqVYYEcplihVrRyHfv7g6u1qwTAPbNScXTIS94WNVCbI5r/dSXpGKjVSwKA2zz/tJ8f+efp3GFFZn/+pJbqPazP2Mb7WSYHsI783cYh3F52rvEyJlv+JrmPatQh442o1caiOcor5korPSxda2O2O1m3XrHzmP18QQBm5+gjW2yHVg+75noAYHuTljfpJgBogclKnjdpEcH1Z/5W1kArr10bszrYx9rY0nV3MuS//p3u2b+Va8mCt6EfzFefq03tp0TTp/eUe+cRskrkbZ+3vvfY5pyyTs62Z2ef7QqvDq0yHAOA2ywbHD+OfwnAeKiOdRh793C41niZLHO0zN20PmYttG/le+0d60+7ngfO3Y6zXheA1RmTu7Vq8QAAm698IpvKHsbfVHJflVr2s5yvBBg0Yli2m5cjonUr6wB/XFYfu3Kf8PHvebqrK8SrBtnieuUlb7F+bHMuo9yaDVdW/7vo1SrPrASA25setrcf6gkA1qG+2wzA1sDF16a5cjt2LLGIAFcrSXN9z31qUdW9+JcufcK5T/f1URs7/LNs9cjUOD4itbwqBdImXRpAdQwAbvbzdQFg7RhgtTHqY7YXf3muR5+Qle0nhv94yn3ykjf+2LD4vFn8HXdvdVZHAAAAWIf5bjOALHPE9zYL5u4vh3q7fH4ucMVejVia18aWyrn9S704JU36Y9LpijPt4zzOb42bKnFdAQDVMQC46YUBoDoGHFKz2tiuXYvnCosvrrcIRxvOVmL2IqPvnfyPvXvRkRMHogAKYdT//70ImH3WitHGkTXuCpQ4Z59NsD2iETE3hWGEujHXG/2m9zvwNH9HJVfVUaVjAADSsYajaJ1YOEbfjdl9fNinPWf/Rpv+BG6ZxsnGAOqTjgEASMcgaTWwSIiiRXo2tvf/VL85FYynHP/5d//TlfEsZv7TlXlPS86eqqyv9Yx5hX7123j3pPox6RgAgHRsfO5dp27suKx2Tj62T3tfi9hvMBv7yzJeaZZSMQfEFVm/tfpdJ6RjAABqx9pzb+Rj/VlXTz7WNjBGo0Xs+159Kd+sMqqrygz1Y/pVP7ZdOKp0rD4AQDqmfkySl+1Xb27ce1sM2L+R2oX0fOyNT0PO0+d4f5e9q3J+c38AascAAKRjcL98bBlokZnaLZ0VcNlA/dim39x+k+rH1t9WP7Y1JjsfP9nnuHTUS9MxAAA+Kt3btHGcjuRRd48Cqd1ym7xutN4rnsQc70/dGIDaMQAA6RjXO4rv8YAV1GLbafvy5vX258QkaE5LmGYrjvVSP9ZR8aPf/H5H6sfWod/jfnyjkuvoXGfs2lEvTccAAPi4yb2NNcd4bGYW2VjV+rHoR90YcK3ty+RmKzCqdAwAQO0YyMf2+He4dQXZnNDrrGqshfgzlsbnGv3+4+O/7du/KcjxvX6jz5sfh6gfa30e89E4CltqzXLre/1VJnZIxwAApGO9c+8CDnVjpK1ftk/vE8nV3L9fO0vr769dQfbGGq9ZzRhYmatz/f5zivbP5yNv1NAY9XnpGACAdOz1zRX3X+Nvt4JC9sjGUkXqVZOqMSLnCNtPntk/7t9vvPXw5Bh6X2OkL9cfhz5rZv3YBSsfnEfarMoPACAd60yxeubea5H7NKjh86r9CvysQPm8tMN2bnfNqNIxAABPVgJAQr1OjX4/T/0eb8yFtvPnAsdhzVsF/7K6sZF3TkrHAACkY9mzVwCA4zajSscAAKRjr1MqBgDjq0wd7W236neOVdmz0pcCxyFmAmt72+BR+NH+SZPPw17SMQAA6dga8723zr1hmfb6LULiGPkAkI4BAEjH8r0e+75KCdjS+JW/tu+XtAjtFpliDHiarbGtQL95ChyHtXNblaO9SccAAKRjnV4x/33b3HudeJjIgRrJ1f7PP/kt+jO7aDFc4dU/BgBqxwAAeJt5gjK1Y/uFLZZGiz1anPbaT59O+8W48SuxtWsMAJ6SjgEA4MlKiDqp9pOF+S36K8rO2/f/fQr7lxH209beMQB4cjoGAACwLAVaJIwQbQB4djoGAAAAAAAAYN0xAF5eYEKVM9AZq3YMAEA6BkBCMrF+/XBPOAOdsdIxAADpGAAJNTtrM3qA689AZ6x0DABAOgZAfs1OO4CAa85AZ2zJdAwAgDmmqABU0C7R6WzabgwJZ+D62JNuvWM6BgCA2jEAz8M9sY4H1I4BACAdA+DVX+UCSMcAAKRj+dULNb0S7iQd1fzvBN+d65Wj6jsh/7uTjgEAlDRXmre/prVnteACqxknHIPe1mWOSv5Ryr9H7x+x8qhxtON7zP8ZXK9cr1yv8rleqR0DAFA7RlWvafVzXHt/XOn4q+bBdcL1yvXKk5UAAMzJM92EWXx+zUh+bUD+/D7vT9VlKfXvbOURrleuV2RwvZKOAQAUNZ/v3HJmuu3+3ZlTt0agfX6Pn2PuctvHz/WK+3K9cr2SjgEAAAAAAADFzN6R3vZHe3ew27YORGH4DDHLbu77P2Q3WQ40FygCI0xpj0xJjST8H9A2qugTZ3cwZqiFnDoHAACwdwwAAODKXLfW5JoXWoocci4NAACmYwAAALDVjW3RvD7n3LOxTmghp8jZBgAAeF2guotlvoi5FG/mNDaXAwCAu7OXXcjVianG0/rmF0Vz2q2ONbm2C4mcA+djAADA325CbZkpY95/x1iT80u2pjdm9/WHAAAArsTfH0s1LW+VMY/ht40ipypjD6b88vUvCtkNAABAHWvdrXKwVW8a2zhos+J26qIAAAC8no3ND8ia5FXO7GysY8przscAAAD87RLlkqIcbNWlztcO2kyd+w3IUiYAAMAxsA9t7oWH5dj5Hr6ZqdPKvPjPCAAAdaxNvnJ82zfnmFYyXVdSfgAAoI51166Ce9WjmtzrmDrHtJpduj9lMh8DAIA6doCIuthdj+3byEwAAIA6Nr4salSrY2vxcrHtVWvysz9lKk80I2M+BgAA2pEvdp/rdfuPmVKZn/0idaIOBQAA4IPTJ0r1Ute5WI5bW6pn6+N6OZWjHJ54kXM5gyQpD83ZDgAA+GjcFa512vJ6bBYbc2xw0qu96BCWawpUms4CAADA9c+EXCOuUMW0leV+J7IORm2zOT2bzxm98vic7QAAgI9OuQg9xMxYq41K2CPMV+dY96/likck5Yo+ZtqP6cQAAADTMX+0se8Nz3+w8aRtmo+lCrM5tuf7sR/LmQcAAHWsPa5C8r45DVtUjMdaTUNdMYuvWa4Y5di3NmB5umdXmgAAALbxw1MfTS4e3ev9KVnxO4wm5VSHsj56fi+aTedIUvYJNpUz/g1I2zXnwgAAYCu/y0cb+KN4DynZ3qOvNAEAAJy6jnkMplcuhULyvlK9Fl9iunj/8nFoEZKy2btjtttRZnbOTz3tTDkAAKDQdCh3H5Q+7xb4P+wHZ2tQAAAA7Vkzi/j7KUfuLwPGORqK+BbbqrqTuU9JMqVuzexUOQAAoOA/EuqhCXm/z/IYtAEAAK+fR7mNK/bpY3Qf9o0BAMDescO4CwAAgOnYYfzJ8ysBAADQDhhYub4JjQEAAKDpXwgVKGwAAIA6pkV/iXhy+epVS0TUc7Y6JzUjBQAAwHTM9U0MLwEAAOAvb8W65YWQFN5fO8dWAAAArOlX8VgSmtX1uvDYv3elAAAAOOjitZB3Ba8TAgAAoI5paeGDI/VDz4S0qDfOiaJzjXPS9LacX9Aj504AAGA65uM2BgAAAO/HWk/vx7i7LRpZWl3JipxuPJard46lnjOlaqYCOVcAAADTseiDn3Q6to4BAAD4eEhVKdYvbZ+ctPe2NOXW+Y+pRg4AANiTPzvXohQ80BIAAGA71wZL/XHlfM6EVMW0ATkAAOD4OrY0heT1nq8Ytagu57uYaWNpk20MAACAgy5CXnw3AAAA+MpN+F4OtYqcGGZElZPGcAwAANxaG5WsUCGiaFGj214sHEvaGAAAuLU2u69+WbEg9CkihqUuVuQkbQwAANyZj3pUi683Qp2o21iXUy0qpYw2BgAAbsunTnFdVOtzXPHWtrEP/ZKt3kCWekh9CAAA4Dr8WY8KSfJ+UbxsY0Wv876J+Ts5aYzGAADA7RT769suh7YuiienX0SV08/HZHUZYzZ2DwAAUMeKQrZoqMgJySVFP2KrC9modHnIpc+/eh8CAAC4Fi+24v8Rk2WsL3bR/+e8ePwBAAC4PFOpTRSoI3P+0x+/VWpybRNaTpfTpFO9HwAAsI2rtGjCgTm/BQAAcB+mW2vy7bOfk+U0STrZzwUAAOY1ATgnAADTMfrmcracLuEs7wcAADAdAwAAuLD/AQPLUxmjjeldAAAAAElFTkSuQmCC" jstcache="0"><template id="audio-resources" jstcache="0"><audio id="offline-sound-press" src="data:audio/mpeg;base64,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"></audio><audio id="offline-sound-hit" src="data:audio/mpeg;base64,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"></audio><audio id="offline-sound-reached" src="data:audio/mpeg;base64,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"></audio></template></div><script jstcache="0">!function(){function t(t,e,n){var i=function(t,e,n){return Function.prototype.call.apply(Array.prototype.slice,arguments)}(arguments,2);return function(){return e.apply(t,i)}}function e(t){this.i=t}function n(t){t.style.display=""}function i(t){t.style.display="none"}function r(t,e){this.l.apply(this,arguments)}function s(t){for(var e in t.a)delete t.a[e];t.f=null,m.push(t)}function o(t,e,n){try{return e.call(n,t.a,t.f)}catch(t){return b.$default}}function l(t){if(!_[t])try{var e="(function(a_, b_) { with (a_) with (b_) return "+t+" })",n=window.trustedTypes?y.createScript(e):e;_[t]=window.eval(n)}catch(t){}return _[t]}function a(t){for(var e=[],n=0,i=(t=t.split(j)).length;i>n;++n){var r=t[n].indexOf(":");if(!(0>r)){var s=t[n].substr(0,r).replace(/^\s+/,"").replace(/\s+$/,"");r=l(t[n].substr(r+1)),e.push(s,r)}}return e}function u(){}function c(t){t.__jstcache||function(t,n){var i=new e(n);for(i.h=[t];i.h.length;){var r=i,s=i.h.shift();for(r.i(s),s=s.firstChild;s;s=s.nextSibling)1==s.nodeType&&r.h.push(s)}}(t,function(t){h(t)})}function h(t){if(t.__jstcache)return t.__jstcache;var e=t.getAttribute("jstcache");if(null!=e)return t.__jstcache=C[e];e=T.length=0;for(var n=E.length;n>e;++e){var i=E[e][0],r=t.getAttribute(i);B[i]=r,null!=r&&T.push(i+"="+r)}if(0==T.length)return t.setAttribute("jstcache","0"),t.__jstcache=C[0];var s=T.join("&");if(e=A[s])return t.setAttribute("jstcache",e),t.__jstcache=C[e];var o={};for(e=0,n=E.length;n>e;++e){i=(r=E[e])[0];var l=r[1];null!=(r=B[i])&&(o[i]=l(r))}return e=""+ ++w,t.setAttribute("jstcache",e),C[e]=o,A[s]=e,t.__jstcache=o}function f(t,e){t.j.push(e),t.o.push(0)}function p(t){return t.c.length?t.c.pop():[]}function d(t){if(t.__jstcache)return t.__jstcache;var e=t.getAttribute("jstcache");return e?t.__jstcache=C[e]:h(t)}function v(t,e){var n=document;if(e){var r=n.getElementById(t);if(!r){r=e();var s=n.getElementById("jsts");s||((s=n.createElement("div")).id="jsts",i(s),s.style.position="absolute",n.body.appendChild(s));var o=n.createElement("div");s.appendChild(o),o.innerHTML=r,r=n.getElementById(t)}n=r}else n=n.getElementById(t);return n?(c(n),(n=n.cloneNode(!0)).removeAttribute("id"),n):null}function g(t,e,n){n==e.length-1?t.setAttribute("jsinstance","*"+n):t.setAttribute("jsinstance",""+n)}var j=/\s*;\s*/;r.prototype.l=function(t,e){if(this.a||(this.a={}),e){var n=this.a,i=e.a;for(r in i)n[r]=i[r]}else{var r=this.a;for(n in i=b)r[n]=i[n]}this.a.$this=t,this.a.$context=this,this.f=void 0!==t&&null!=t?t:"",e||(this.a.$top=this.f)};var y,b={$default:null},m=[];r.prototype.clone=function(t,e,n){if(0<m.length){var i=m.pop();r.call(i,t,this),t=i}else t=new r(t,this);return t.a.$index=e,t.a.$count=n,t},window.trustedTypes&&(y=trustedTypes.createPolicy("jstemplate",{createScript:function(t){return t}}));var _={},w=0,C={0:{}},A={},B={},T=[],E=[["jsselect",l],["jsdisplay",l],["jsvalues",a],["jsvars",a],["jseval",function(t){for(var e=[],n=0,i=(t=t.split(j)).length;i>n;++n)if(t[n]){var r=l(t[n]);e.push(r)}return e}],["transclude",function(t){return t}],["jscontent",l],["jsskip",l]];u.prototype.g=function(t,e){var r=d(e),l=r.transclude;if(l)(r=v(l))?(e.parentNode.replaceChild(r,e),(l=p(this)).push(this.g,t,r),f(this,l)):e.parentNode.removeChild(e);else if(r=r.jsselect){r=o(t,r,e);var a=e.getAttribute("jsinstance"),u=!1;a&&("*"==a.charAt(0)?(a=parseInt(a.substr(1),10),u=!0):a=parseInt(a,10));var c=null!=r&&"object"==typeof r&&"number"==typeof r.length;l=c?r.length:1;var h=c&&0==l;if(c)if(h)a?e.parentNode.removeChild(e):(e.setAttribute("jsinstance","*0"),i(e));else if(n(e),null===a||""===a||u&&l-1>a){for(u=p(this),a=a||0,c=l-1;c>a;++a){var j=e.cloneNode(!0);e.parentNode.insertBefore(j,e),g(j,r,a),h=t.clone(r[a],a,l),u.push(this.b,h,j,s,h,null)}g(e,r,a),h=t.clone(r[a],a,l),u.push(this.b,h,e,s,h,null),f(this,u)}else l>a?(u=r[a],g(e,r,a),h=t.clone(u,a,l),(u=p(this)).push(this.b,h,e,s,h,null),f(this,u)):e.parentNode.removeChild(e);else null==r?i(e):(n(e),h=t.clone(r,0,1),(u=p(this)).push(this.b,h,e,s,h,null),f(this,u))}else this.b(t,e)},u.prototype.b=function(t,e){var r=d(e),s=r.jsdisplay;if(s){if(!o(t,s,e))return void i(e);n(e)}if(s=r.jsvars)for(var l=0,a=s.length;a>l;l+=2){var u=s[l],c=o(t,s[l+1],e);t.a[u]=c}if(s=r.jsvalues)for(l=0,a=s.length;a>l;l+=2)if(c=s[l],u=o(t,s[l+1],e),"$"==c.charAt(0))t.a[c]=u;else if("."==c.charAt(0)){for(var h=e,v=(c=c.substr(1).split(".")).length,g=0,j=v-1;j>g;++g){var y=c[g];h[y]||(h[y]={}),h=h[y]}h[c[v-1]]=u}else c&&("boolean"==typeof u?u?e.setAttribute(c,c):e.removeAttribute(c):e.setAttribute(c,""+u));if(s=r.jseval)for(l=0,a=s.length;a>l;++l)o(t,s[l],e);if(!(s=r.jsskip)||!o(t,s,e))if(r=r.jscontent){if(r=""+o(t,r,e),e.innerHTML!=r){for(;e.firstChild;)(s=e.firstChild).parentNode.removeChild(s);e.appendChild(this.m.createTextNode(r))}}else{for(r=p(this),s=e.firstChild;s;s=s.nextSibling)1==s.nodeType&&r.push(this.g,t,s);r.length&&f(this,r)}},window.jstGetTemplate=v,window.JsEvalContext=r,window.jstProcess=function(e,n){var i=new u;c(n),i.m=n?9==n.nodeType?n:n.ownerDocument||document:document;var r,s,o,l=t(i,i.g,e,n),a=i.j=[],h=i.o=[];for(i.c=[],l();a.length;)r=a[a.length-1],(l=h[h.length-1])>=r.length?(l=i,(s=a.pop()).length=0,l.c.push(s),h.pop()):(s=r[l++],o=r[l++],r=r[l++],h[h.length-1]=l,s.call(i,o,r))}}();</script><script jstcache="0">var loadTimeData;class LoadTimeData{constructor(){this.data_=null}set data(t){expect(!this.data_,"Re-setting data."),this.data_=t}valueExists(t){return t in this.data_}getValue(t){expect(this.data_,"No data. Did you remember to include strings.js?");const e=this.data_[t];return expect(void 0!==e,"Could not find value for "+t),e}getString(t){const e=this.getValue(t);return expectIsType(t,e,"string"),e}getStringF(t,e){const n=this.getString(t);if(!n)return"";const a=Array.prototype.slice.call(arguments);return a[0]=n,this.substituteString.apply(this,a)}substituteString(t,e){const n=arguments;return t.replace(/\$(.|$|\n)/g,function(t){return expect(t.match(/\$[$1-9]/),"Unescaped $ found in localized string."),"$$"===t?"$":n[t[1]]})}getSubstitutedStringPieces(t,e){const n=arguments;return(t.match(/(\$[1-9])|(([^$]|\$([^1-9]|$))+)/g)||[]).map(function(t){return t.match(/^\$[1-9]$/)?{value:n[t[1]],arg:t}:(expect((t.match(/\$/g)||[]).length%2==0,"Unescaped $ found in localized string."),{value:t.replace(/\$\$/g,"$"),arg:null})})}getBoolean(t){const e=this.getValue(t);return expectIsType(t,e,"boolean"),e}getInteger(t){const e=this.getValue(t);return expectIsType(t,e,"number"),expect(e===Math.floor(e),"Number isn't integer: "+e),e}overrideValues(t){expect("object"==typeof t,"Replacements must be a dictionary object.");for(const e in t)this.data_[e]=t[e]}resetForTesting(t=null){this.data_=t}isInitialized(){return null!==this.data_}}function expect(t,e){if(!t)throw new Error("Unexpected condition on "+document.location.href+": "+e)}function expectIsType(t,e,n){expect(typeof e===n,"["+e+"] ("+t+") is not a "+n)}expect(!loadTimeData,"should only include this file once"),loadTimeData=new LoadTimeData,window.loadTimeData=loadTimeData,console.warn("crbug/1173575, non-JS module files deprecated.");</script><script jstcache="0">const pageData={dinoGameA11yAriaLabel:"Dino game, play",dinoGameA11yDescription:"Dino game. A pixelated dinosaur dodges cacti and pterodactyls as it runs across a desolate landscape. When you hear an audio cue, press space to jump over obstacles.",dinoGameA11yGameOver:"Game over, your score is $1.",dinoGameA11yHighScore:"Your highest score is $1.",dinoGameA11yJump:"Jump!",dinoGameA11ySpeedToggle:"Start slower",dinoGameA11yStartGame:"Game started.",errorCode:"",fontfamily:"'Segoe UI', Tahoma, sans-serif",fontsize:"75%",heading:{hostName:"dino",msg:"Press space to play"},iconClass:"icon-offline",language:"en",textdirection:"ltr",title:"chrome://dino/"};loadTimeData.data=pageData;var tp=document.getElementById("t");jstProcess(new JsEvalContext(pageData),tp);</script></body></html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment