diff --git a/data/emu-main.js b/data/emu-main.js index 7dcd887..d974018 100644 --- a/data/emu-main.js +++ b/data/emu-main.js @@ -1,11 +1,11 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'use strict'; window.EJS_RESET_VARS = []; - for (var k in window) { + for (let k in window) { window.EJS_RESET_VARS.push(k); } _0x2c1832.r(_0x17edbf); - var _0x39ca5e = { + let _0x39ca5e = { 'volume': 0.5, 'muted': false, 'i18n': { @@ -163,7 +163,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }, 'url': function(_0xd61cf4) { if (_0x1b0c2c(_0xd61cf4, window.URL)) return true; - var _0x17edbf = _0xd61cf4; + let _0x17edbf = _0xd61cf4; _0xd61cf4.startsWith('http://') && _0xd61cf4.startsWith('https://') || (_0x17edbf = 'http://' .concat(_0xd61cf4)); try { return !_0x555ee8(new URL(_0x17edbf).hostname); @@ -174,9 +174,9 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'empty': _0x555ee8 }, _0x168698 = function() { - var _0xa88a13 = !0x1; + let _0xa88a13 = !0x1; try { - var _0x17edbf = Object.defineProperty({}, 'passive', { + let _0x17edbf = Object.defineProperty({}, 'passive', { 'get': function() { return _0xa88a13 = true, null; } @@ -187,12 +187,12 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }(); function _0x1ef215(_0xa482e6, _0x474854, _0xc30d6e) { - var _0x57056f = this, + let _0x57056f = this, _0x3f468e = arguments.length > 0x3 && void 0x0 !== arguments[0x3] && arguments[0x3], _0x79ce58 = !(arguments.length > 0x4 && void 0x0 !== arguments[0x4]) || arguments[0x4], _0x23848b = arguments.length > 0x5 && void 0x0 !== arguments[0x5] && arguments[0x5]; if (_0xa482e6 && 'addEventListener' in _0xa482e6 && !_0x1e2c68.empty(_0x474854) && _0x1e2c68.function(_0xc30d6e)) { - var _0x4a2da0 = _0x474854.split(' '), + let _0x4a2da0 = _0x474854.split(' '), _0x40de8d = _0x23848b; _0x168698 && (_0x40de8d = { 'passive': _0x79ce58, @@ -209,7 +209,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } function _0x1093f4(_0x4d8d94) { - var _0x17edbf = arguments.length > 0x1 && void 0x0 !== arguments[0x1] ? arguments[0x1] : '', + let _0x17edbf = arguments.length > 0x1 && void 0x0 !== arguments[0x1] ? arguments[0x1] : '', _0x2c1832 = arguments.length > 0x2 ? arguments[0x2] : void 0x0, _0x4adcdf = !(arguments.length > 0x3 && void 0x0 !== arguments[0x3]) || arguments[0x3], _0x2f85bc = arguments.length > 0x4 && void 0x0 !== arguments[0x4] && arguments[0x4]; @@ -217,7 +217,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } function _0x20109b(_0x550b1a) { - var _0x17edbf = arguments.length > 0x1 && void 0x0 !== arguments[0x1] ? arguments[0x1] : '', + let _0x17edbf = arguments.length > 0x1 && void 0x0 !== arguments[0x1] ? arguments[0x1] : '', _0x2c1832 = arguments.length > 0x2 ? arguments[0x2] : void 0x0, _0x5e10a2 = !(arguments.length > 0x3 && void 0x0 !== arguments[0x3]) || arguments[0x3], _0x5c9512 = arguments.length > 0x4 && void 0x0 !== arguments[0x4] && arguments[0x4]; @@ -225,24 +225,26 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } function _0x455c85(_0x4e4b15) { - var _0x17edbf = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : '', + let _0x17edbf = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : '', _0x2c1832 = arguments.length > 2 ? arguments[2] : void 0, _0x2b8c91 = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3], _0x23e991 = arguments.length > 4 && void 0 !== arguments[4] && arguments[4]; _0x1ef215.call(this, _0x4e4b15, _0x17edbf, function _0x5127f4() { _0x20109b(_0x4e4b15, _0x17edbf, _0x5127f4, _0x2b8c91, _0x23e991); - for (var _0x1fe440 = arguments.length, _0x1d3219 = new Array(_0x1fe440), _0x54457c = 0x0; _0x54457c < _0x1fe440; _0x54457c++) _0x1d3219[_0x54457c] = arguments[_0x54457c]; + let _0x1fe440 = arguments.length, + _0x1d3219 = new Array(_0x1fe440); + for (let _0x54457c = 0x0; _0x54457c < _0x1fe440; _0x54457c++) _0x1d3219[_0x54457c] = arguments[_0x54457c]; _0x2c1832.apply(this, _0x1d3219); }, true, _0x2b8c91, _0x23e991); } function _0xbae705(_0x975ccc) { - var _0x17edbf = arguments.length > 0x1 && void 0x0 !== arguments[0x1] ? arguments[0x1] : '', + let _0x17edbf = arguments.length > 0x1 && void 0x0 !== arguments[0x1] ? arguments[0x1] : '', _0x2c1832 = arguments.length > 0x2 && void 0x0 !== arguments[0x2] && arguments[0x2], _0x57297b = arguments.length > 0x3 && void 0x0 !== arguments[0x3] ? arguments[0x3] : {}; if (_0x1e2c68.element(_0x975ccc) && !_0x1e2c68.empty(_0x17edbf)) { - var _0x4f631e = new CustomEvent(_0x17edbf, { + let _0x4f631e = new CustomEvent(_0x17edbf, { 'bubbles': _0x2c1832, 'detail': Object.assign({}, _0x57297b, { 'emulator': this @@ -251,19 +253,19 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x975ccc.dispatchEvent(_0x4f631e); } } - var _0x55349e = _0x2c1832(0x9e), + let _0x55349e = _0x2c1832(0x9e), _0x42870c = _0x2c1832.n(_0x55349e); function _0x30f85e(_0x3ed035, _0xd96db3) { return function(_0x18bbf3) { if (Array.isArray(_0x18bbf3)) return _0x18bbf3; }(_0x3ed035) || function(_0x2bb2ab, _0x4993ee) { - var _0x2c1832 = [], + let _0x2c1832 = [], _0x629f39 = true, _0xde5653 = !0x1, _0x346a0d = void 0x0; try { - for (var _0x57d79d, _0x557ef0 = _0x2bb2ab[Symbol.iterator](); !(_0x629f39 = (_0x57d79d = _0x557ef0.next()).done) && (_0x2c1832.push(_0x57d79d.value), !_0x4993ee || _0x2c1832.length !== _0x4993ee); _0x629f39 = true); + for (let _0x57d79d, _0x557ef0 = _0x2bb2ab[Symbol.iterator](); !(_0x629f39 = (_0x57d79d = _0x557ef0.next()).done) && (_0x2c1832.push(_0x57d79d.value), !_0x4993ee || _0x2c1832.length !== _0x4993ee); _0x629f39 = true); } catch (_0x54a546) { _0xde5653 = true, _0x346a0d = _0x54a546; } finally { @@ -280,9 +282,9 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } function _0x580edd(_0x39eb34, _0x86c3db) { - var _0x2c1832 = _0x39eb34.length ? _0x39eb34 : [_0x39eb34]; + let _0x2c1832 = _0x39eb34.length ? _0x39eb34 : [_0x39eb34]; Array.from(_0x2c1832).reverse().forEach(function(_0x35fc48, _0x79e6bf) { - var _0x1510e4 = _0x79e6bf > 0x0 ? _0x86c3db.cloneNode(true) : _0x86c3db, + let _0x1510e4 = _0x79e6bf > 0x0 ? _0x86c3db.cloneNode(true) : _0x86c3db, _0x247f26 = _0x35fc48.parentNode, _0x3a5422 = _0x35fc48.nextSibling; _0x1510e4.appendChild(_0x35fc48), _0x3a5422 ? _0x247f26.insertBefore(_0x1510e4, _0x3a5422) : _0x247f26.appendChild(_0x1510e4); @@ -291,10 +293,10 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { function _0x154f99(_0x5e4eb3, _0x1acdad) { _0x1e2c68.element(_0x5e4eb3) && !_0x1e2c68.empty(_0x1acdad) && Object.entries(_0x1acdad).filter(function(_0x37e04b) { - var _0x1acdad = _0x30f85e(_0x37e04b, 0x2)[0x1]; + let _0x1acdad = _0x30f85e(_0x37e04b, 0x2)[0x1]; return !_0x1e2c68.nullOrUndefined(_0x1acdad); }).forEach(function(_0x4993dd) { - var _0x2c1832 = _0x30f85e(_0x4993dd, 0x2), + let _0x2c1832 = _0x30f85e(_0x4993dd, 0x2), _0x24704f = _0x2c1832[0x0], _0x52ac21 = _0x2c1832[0x1]; return _0x5e4eb3.setAttribute(_0x24704f, _0x52ac21); @@ -302,7 +304,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } function _0x428003(_0x1397c4, _0x1ec8c9, _0x1a02af) { - var _0xca6ad9 = document.createElement(_0x1397c4); + let _0xca6ad9 = document.createElement(_0x1397c4); return _0x1e2c68.object(_0x1ec8c9) && _0x154f99(_0xca6ad9, _0x1ec8c9), _0x1e2c68.string(_0x1a02af) && (_0xca6ad9.innerText = _0x1a02af), _0xca6ad9; } @@ -312,10 +314,10 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { function _0xa949a8(_0x3bc809, _0x215e7f) { if (!_0x1e2c68.string(_0x3bc809) || _0x1e2c68.empty(_0x3bc809)) return {}; - var _0x2c1832 = {}, + let _0x2c1832 = {}, _0x3ab896 = _0x215e7f; return _0x3bc809.split(',').forEach(function(_0x2b6c5b) { - var _0x215e7f = _0x2b6c5b.trim(), + let _0x215e7f = _0x2b6c5b.trim(), _0x2b2f76 = _0x215e7f.replace('.', ''), _0x499377 = _0x215e7f.replace(/[[\]]/g, '').split('='), _0x1db3b8 = _0x499377[0x0], @@ -335,7 +337,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { function _0x132da7(_0x275729, _0x511d6f) { if (_0x1e2c68.element(_0x275729)) { - var _0x2c1832 = _0x511d6f; + let _0x2c1832 = _0x511d6f; _0x1e2c68.boolean(_0x2c1832) || (_0x2c1832 = !_0x275729.hidden), _0x2c1832 ? _0x275729.setAttribute('hidden', '') : _0x275729.removeAttribute('hidden'); } } @@ -345,7 +347,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { return _0x3a8e2f(_0x543362, _0x46e2bb, _0x3b6b0b); }); if (_0x1e2c68.element(_0x2bf197)) { - var _0x34f25e = 'toggle'; + let _0x34f25e = 'toggle'; return void 0x0 !== _0x3b6b0b && (_0x34f25e = _0x3b6b0b ? 'add' : 'remove'), _0x2bf197.classList[_0x34f25e](_0x46e2bb), _0x2bf197.classList.contains(_0x46e2bb); } return !0x1; @@ -356,7 +358,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } function _0x13f491(_0x11bf98, _0x674fa2) { - var _0x2c1832 = { + let _0x2c1832 = { 'Element': Element }; return (_0x2c1832.matches || _0x2c1832.webkitMatchesSelector || _0x2c1832.mozMatchesSelector || _0x2c1832.msMatchesSelector || function() { @@ -373,15 +375,15 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } function _0x5e0c7d() { - var _0xa88a13 = arguments.length > 0x0 && void 0x0 !== arguments[0x0] ? arguments[0x0] : null, + let _0xa88a13 = arguments.length > 0x0 && void 0x0 !== arguments[0x0] ? arguments[0x0] : null, _0x17edbf = arguments.length > 0x1 && void 0x0 !== arguments[0x1] && arguments[0x1]; if (_0x1e2c68.element(_0xa88a13)) { - var _0x2c1832 = _0x23ffa1.call(this, 'button:not(:disabled), input:not(:disabled), [tabindex]'), + let _0x2c1832 = _0x23ffa1.call(this, 'button:not(:disabled), input:not(:disabled), [tabindex]'), _0x1c6631 = _0x2c1832[0x0], _0x52c9df = _0x2c1832[_0x2c1832.length - 0x1]; _0x1ef215.call(this, this.elements.container, 'keydown', function(_0x1bba02) { if ('Tab' === _0x1bba02.key && 0x9 === _0x1bba02.keyCode) { - var _0x17edbf = document.activeElement; + let _0x17edbf = document.activeElement; _0x17edbf !== _0x52c9df || _0x1bba02.shiftKey ? _0x17edbf === _0x1c6631 && _0x1bba02.shiftKey && (_0x52c9df.focus(), _0x1bba02.preventDefault()) : (_0x1c6631.focus(), _0x1bba02.preventDefault()); } }, _0x17edbf, !0x1); @@ -389,7 +391,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } function _0x31cc23() { - var _0xa88a13 = arguments.length > 0x0 && void 0x0 !== arguments[0x0] ? arguments[0x0] : null, + let _0xa88a13 = arguments.length > 0x0 && void 0x0 !== arguments[0x0] ? arguments[0x0] : null, _0x17edbf = arguments.length > 0x1 && void 0x0 !== arguments[0x1] && arguments[0x1]; _0x1e2c68.element(_0xa88a13) && (_0xa88a13.focus(), _0x17edbf && _0x3a8e2f(_0xa88a13, this.config.classNames.tabFocus)); } @@ -397,7 +399,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { function _0x449eac(_0x589e98) { return _0x48e5ff.a.bind(_0x42870c.a)(_0x589e98); } - var _0x32d193, _0x5f365a, _0x820caf, _0x5a2767 = (_0x32d193 = document.createElement('span'), _0x5f365a = { + let _0x32d193, _0x5f365a, _0x820caf, _0x5a2767 = (_0x32d193 = document.createElement('span'), _0x5f365a = { 'WebkitTransition': 'webkitTransitionEnd', 'MozTransition': 'transitionend', 'OTransition': 'oTransitionEnd otransitionend', @@ -413,14 +415,14 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } catch (_0x517747) {} }, 0x0); } - var _0x296fa9, _0x59aa33 = { + let _0x296fa9, _0x59aa33 = { 'isEdge': 'Netscape' === navigator.appName && navigator.appVersion.indexOf('Edge') > -0x1, 'isIE': !!document.documentMode, 'isWebkit': 'WebkitAppearance' in document.documentElement.style && !/Edge/ .test(navigator.userAgent), 'isIPhone': /(iPhone|iPod)/gi .test(navigator.platform), 'isIos': /(iPad|iPhone|iPod)/gi .test(navigator.platform), 'info': function() { - var _0xa88a13 = /(MSIE|(?!Gecko.+)Firefox|(?!AppleWebKit.+Chrome.+)Safari|(?!AppleWebKit.+)Chrome|AppleWebKit(?!.+Chrome|.+Safari)|Gecko(?!.+Firefox))(?: |\/)([\d\.apre]+)/ .exec(navigator.userAgent); + let _0xa88a13 = /(MSIE|(?!Gecko.+)Firefox|(?!AppleWebKit.+Chrome.+)Safari|(?!AppleWebKit.+)Chrome|AppleWebKit(?!.+Chrome|.+Safari)|Gecko(?!.+Firefox))(?: |\/)([\d\.apre]+)/ .exec(navigator.userAgent); return { 'name': _0xa88a13[0x1].toLowerCase(), 'version': _0xa88a13[0x2] @@ -433,18 +435,18 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'transitions': !0x1 !== _0x5a2767, 'reducedMotion': 'matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches, 'webgl': function() { - var _0xa88a13 = { + let _0xa88a13 = { 'DETECTED': !0x1 }; if (!_0xa88a13.DETECTED) { - var _0x17edbf = document.createElement('canvas'); + let _0x17edbf = document.createElement('canvas'); if (_0x17edbf && _0x17edbf.getContext) - for (var _0x2c1832 = ['webgl2', 'experimental-webgl2', 'webgl', 'experimental-webgl'], _0x44cd27 = 0x0, _0x12b7b8 = _0x2c1832.length; _0x44cd27 < _0x12b7b8; ++_0x44cd27) { - var _0x11cb40 = _0x2c1832[_0x44cd27], + for (let _0x2c1832 = ['webgl2', 'experimental-webgl2', 'webgl', 'experimental-webgl'], _0x44cd27 = 0x0, _0x12b7b8 = _0x2c1832.length; _0x44cd27 < _0x12b7b8; ++_0x44cd27) { + let _0x11cb40 = _0x2c1832[_0x44cd27], _0x26b3b2 = _0x17edbf.getContext(_0x11cb40); if (_0x26b3b2) { _0xa88a13.WEBGL_CONTEXT = _0x11cb40, _0xa88a13.WEBGL_VERSION = _0x26b3b2.getParameter(_0x26b3b2.VERSION), _0xa88a13.WEBGL_VENDOR = _0x26b3b2.getParameter(_0x26b3b2.VENDOR), _0xa88a13.WEBGL_SL_VERSION = _0x26b3b2.getParameter(_0x26b3b2.SHADING_LANGUAGE_VERSION), _0xa88a13.MAX_TEXTURE_SIZE = _0x26b3b2.getParameter(_0x26b3b2.MAX_TEXTURE_SIZE); - var _0x40c8fc = _0x26b3b2.getExtension('WEBGL_debug_renderer_info'); + let _0x40c8fc = _0x26b3b2.getExtension('WEBGL_debug_renderer_info'); _0x40c8fc && (_0xa88a13.WEBGL_VENDOR = _0x26b3b2.getParameter(_0x40c8fc.UNMASKED_VENDOR_WEBGL), _0xa88a13.WEBGL_RENDERER = _0x26b3b2.getParameter(_0x40c8fc.UNMASKED_RENDERER_WEBGL)), _0xa88a13.DETECTED = true; break; } @@ -472,25 +474,27 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } function _0x5dc0c0() { - for (var _0xa88a13 = arguments.length > 0x0 && void 0x0 !== arguments[0x0] ? arguments[0x0] : {}, _0x17edbf = arguments.length, _0x2c1832 = new Array(_0x17edbf > 0x1 ? _0x17edbf - 0x1 : 0x0), _0x189546 = 0x1; _0x189546 < _0x17edbf; _0x189546++) _0x2c1832[_0x189546 - 0x1] = arguments[_0x189546]; + let _0xa88a13 = arguments.length > 0x0 && void 0x0 !== arguments[0x0] ? arguments[0x0] : {}, + _0x2c1832 = new Array(_0x17edbf > 0x1 ? _0x17edbf - 0x1 : 0x0); + for (let _0x17edbf = arguments.length, _0x189546 = 0x1; _0x189546 < _0x17edbf; _0x189546++) _0x2c1832[_0x189546 - 0x1] = arguments[_0x189546]; if (!_0x2c1832.length) return _0xa88a13; - var _0x279e54 = _0x2c1832.shift(); + let _0x279e54 = _0x2c1832.shift(); return _0x1e2c68.object(_0x279e54) ? (Object.keys(_0x279e54).forEach(function(_0x53b45a) { _0x1e2c68.object(_0x279e54[_0x53b45a]) ? (Object.keys(_0xa88a13).includes(_0x53b45a) || Object.assign(_0xa88a13, _0x55cbbe({}, _0x53b45a, {})), _0x5dc0c0(_0xa88a13[_0x53b45a], _0x279e54[_0x53b45a])) : Object.assign(_0xa88a13, _0x55cbbe({}, _0x53b45a, _0x279e54[_0x53b45a])); }), _0x5dc0c0.apply(void 0x0, [_0xa88a13].concat(_0x2c1832))) : _0xa88a13; } function _0x1a0e98() { - var _0xa88a13 = arguments.length > 0x0 && void 0x0 !== arguments[0x0] ? arguments[0x0] : '', + let _0xa88a13 = arguments.length > 0x0 && void 0x0 !== arguments[0x0] ? arguments[0x0] : '', _0x17edbf = arguments.length > 0x1 && void 0x0 !== arguments[0x1] ? arguments[0x1] : '', _0x2c1832 = arguments.length > 0x2 && void 0x0 !== arguments[0x2] ? arguments[0x2] : ''; return _0xa88a13.replace(new RegExp(_0x17edbf.toString().replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\x5c$1'), 'g'), _0x2c1832.toString()); } function _0x9fdcea() { - var _0xa88a13 = (arguments.length > 0x0 && void 0x0 !== arguments[0x0] ? arguments[0x0] : '').toString(); + let _0xa88a13 = (arguments.length > 0x0 && void 0x0 !== arguments[0x0] ? arguments[0x0] : '').toString(); return (_0xa88a13 = function() { - var _0xa88a13 = (arguments.length > 0x0 && void 0x0 !== arguments[0x0] ? arguments[0x0] : '').toString(); + let _0xa88a13 = (arguments.length > 0x0 && void 0x0 !== arguments[0x0] ? arguments[0x0] : '').toString(); return _0xa88a13 = _0x1a0e98(_0xa88a13, '-', ' '), _0xa88a13 = _0x1a0e98(_0xa88a13, '_', ' '), _0x1a0e98(_0xa88a13 = function() { return (arguments.length > 0x0 && void 0x0 !== arguments[0x0] ? arguments[0x0] : '').toString().replace(/\w\S*/g, function(_0x5b5cba) { return _0x5b5cba.charAt(0x0).toUpperCase() + _0x5b5cba.substr(0x1).toLowerCase(); @@ -503,12 +507,12 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { return function(_0x38f65b) { if (Array.isArray(_0x38f65b)) return _0x38f65b; }(_0x3614ce) || function(_0x20a132, _0x481bd0) { - var _0x2c1832 = [], + let _0x2c1832 = [], _0x930e75 = true, _0x40863e = !0x1, _0xf7a5cf = void 0x0; try { - for (var _0x9d4c5a, _0x2f59ed = _0x20a132[Symbol.iterator](); !(_0x930e75 = (_0x9d4c5a = _0x2f59ed.next()).done) && (_0x2c1832.push(_0x9d4c5a.value), !_0x481bd0 || _0x2c1832.length !== _0x481bd0); _0x930e75 = true); + for (let _0x9d4c5a, _0x2f59ed = _0x20a132[Symbol.iterator](); !(_0x930e75 = (_0x9d4c5a = _0x2f59ed.next()).done) && (_0x2c1832.push(_0x9d4c5a.value), !_0x481bd0 || _0x2c1832.length !== _0x481bd0); _0x930e75 = true); } catch (_0x383181) { _0x40863e = true, _0xf7a5cf = _0x383181; } finally { @@ -523,19 +527,19 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { throw new TypeError('Invalid attempt to destructure non-iterable instance'); }(); } - var _0xb9b2ff = { + let _0xb9b2ff = { 'get': function() { - var _0xa88a13 = arguments.length > 0x0 && void 0x0 !== arguments[0x0] ? arguments[0x0] : '', + let _0xa88a13 = arguments.length > 0x0 && void 0x0 !== arguments[0x0] ? arguments[0x0] : '', _0x17edbf = arguments.length > 0x1 && void 0x0 !== arguments[0x1] ? arguments[0x1] : {}; if (_0x1e2c68.empty(_0xa88a13) || _0x1e2c68.empty(_0x17edbf)) return ''; - var _0x2c1832 = _0x344e81(_0x17edbf.i18n, _0xa88a13); + let _0x2c1832 = _0x344e81(_0x17edbf.i18n, _0xa88a13); if (_0x1e2c68.empty(_0x2c1832)) return ''; - var _0x54bf45 = { + let _0x54bf45 = { '{seektime}': _0x17edbf.seekTime, '{title}': _0x17edbf.title }; return Object.entries(_0x54bf45).forEach(function(_0x34ee43) { - var _0x17edbf = _0x419e30(_0x34ee43, 0x2), + let _0x17edbf = _0x419e30(_0x34ee43, 0x2), _0x473ebb = _0x17edbf[0x0], _0x56ec0 = _0x17edbf[0x1]; _0x2c1832 = _0x1a0e98(_0x2c1832, _0x473ebb, _0x56ec0); @@ -544,18 +548,18 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }; function _0x4c97b0(_0xb3d5fd, _0x2cda5d) { - for (var _0x2c1832 = 0x0; _0x2c1832 < _0x2cda5d.length; _0x2c1832++) { - var _0x3f3944 = _0x2cda5d[_0x2c1832]; + for (let _0x2c1832 = 0x0; _0x2c1832 < _0x2cda5d.length; _0x2c1832++) { + let _0x3f3944 = _0x2cda5d[_0x2c1832]; _0x3f3944.enumerable = _0x3f3944.enumerable || !0x1, _0x3f3944.configurable = true, 'value' in _0x3f3944 && (_0x3f3944.writable = true), Object.defineProperty(_0xb3d5fd, _0x3f3944.key, _0x3f3944); } } - var _0x2f61ba = function() { + let _0x2f61ba = function() { function _0x566dbe(_0x3a7165, _0x3d2e3a) { ! function(_0x48c5c0, _0x2b027d) { if (!(_0x48c5c0 instanceof _0x2b027d)) throw new TypeError('Cannot call a class as a function'); }(this, _0x566dbe), this.enabled = true, this.key = _0x3d2e3a; } - var _0x17edbf, _0x2c1832, _0x4496fc; + let _0x17edbf, _0x2c1832, _0x4496fc; return _0x17edbf = _0x566dbe, _0x4496fc = [{ 'key': 'supported', 'get': function() { @@ -569,22 +573,22 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'key': 'get', 'value': function(_0x4ed865) { if (!_0x566dbe.supported || !this.enabled) return null; - var _0x2c1832 = window.localStorage.getItem(this.key); + let _0x2c1832 = window.localStorage.getItem(this.key); if (_0x1e2c68.empty(_0x2c1832)) return null; - var _0x57ebf7 = JSON.parse(_0x2c1832); + let _0x57ebf7 = JSON.parse(_0x2c1832); return _0x1e2c68.string(_0x4ed865) && _0x4ed865.length ? _0x57ebf7[_0x4ed865] : _0x57ebf7; } }, { 'key': 'set', 'value': function(_0x443e7a) { if (_0x566dbe.supported && this.enabled && _0x1e2c68.object(_0x443e7a)) { - var _0x2c1832 = this.get(); + let _0x2c1832 = this.get(); _0x1e2c68.empty(_0x2c1832) && (_0x2c1832 = {}), _0x5dc0c0(_0x2c1832, _0x443e7a), window.localStorage.setItem(this.key, JSON.stringify(_0x2c1832)); } } }]) && _0x4c97b0(_0x17edbf.prototype, _0x2c1832), _0x4496fc && _0x4c97b0(_0x17edbf, _0x4496fc), _0x566dbe; }(); - var _0x13fb79, _0x4ad1c6 = _0x2c1832(6), + let _0x13fb79, _0x4ad1c6 = _0x2c1832(6), _0x4704b1 = _0x2c1832(159), _0x3a58c8 = _0x2c1832.n(_0x4704b1), _0x5032e6 = { @@ -609,9 +613,9 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { this.listeners.media(), _0x1e2c68.element(this.elements.controls) || (_0x2593da.inject.call(this), this.listeners.controls()), this.volume = null, this.muted = null, _0x2593da.updateVolume.call(this), _0x3a8e2f(this.elements.container, this.config.classNames.isTouch, this.touch), this.ready = true; }, 'toggleControls': function(_0x4dbb7a) { - var _0x17edbf = this.elements.controls; + let _0x17edbf = this.elements.controls; if (_0x17edbf) { - var _0x2c1832 = 0x0, + let _0x2c1832 = 0x0, _0x4b4cd5 = _0x23ffa1.call(this, '.' .concat(_0x449eac({ 'ejs__dialogs': true }), ' > .').concat(_0x449eac({ @@ -640,7 +644,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }, !0x1), this._fileReader.readAsArrayBuffer(_0x4380c5); } else if ('object' === _0x5272a8(_0x4380c5) && 'string' == typeof _0x4380c5.fileName && 'boolean' == typeof _0x4380c5.littleEndian) { this.fileName = _0x4380c5.fileName, this.fileType = _0x4380c5.fileType, this.fileSize = _0x4380c5.fileSize; - var _0x2c1832 = new ArrayBuffer(_0x4380c5); + let _0x2c1832 = new ArrayBuffer(_0x4380c5); this._u8array = new Uint8Array(this.fileType), this._dataView = new DataView(this.fileType), _0x4380c5.copyToFile(this, 0x0), _0x3c0d58 && _0x3c0d58.call(); } else if ('object' === _0x5272a8(_0x4380c5) && 'number' == typeof _0x4380c5.byteLength) this.fileName = 'file.bin', this.fileType = 'application/octet-stream', this.fileSize = _0x4380c5.byteLength, void 0x0 !== _0x4380c5.buffer && (_0x4380c5 = _0x4380c5.buffer), this._u8array = new Uint8Array(_0x4380c5), this._dataView = new DataView(_0x4380c5), _0x3c0d58 && _0x3c0d58.call(); else { @@ -657,20 +661,20 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }, _0x3189ba.prototype.isEOF = function() { return !(this.offset < this.fileSize); }, _0x3189ba.prototype.slice = function(_0x2bfcbb, _0x8026e) { - var _0x2c1832; + let _0x2c1832; return _0x8026e = _0x8026e || this.fileSize - _0x2bfcbb, void 0x0 !== this._u8array.buffer.slice ? ((_0x2c1832 = new _0x3189ba(0x0)).fileSize = _0x8026e, _0x2c1832._u8array = new Uint8Array(this._u8array.buffer.slice(_0x2bfcbb, _0x2bfcbb + _0x8026e))) : (_0x2c1832 = new _0x3189ba(_0x8026e), this.copyToFile(_0x2c1832, _0x2bfcbb, _0x8026e, 0x0)), _0x2c1832.fileName = this.fileName, _0x2c1832.fileType = this.fileType, _0x2c1832.littleEndian = this.littleEndian, _0x2c1832; }, _0x3189ba.prototype.copyToFile = function(_0x51f9b5, _0x1ada3e, _0x3997cd, _0x38ae1a) { void 0x0 === _0x38ae1a && (_0x38ae1a = _0x1ada3e), _0x3997cd = _0x3997cd || this.fileSize - _0x1ada3e; - for (var _0x3bc3d8 = 0x0; _0x3bc3d8 < _0x3997cd; _0x3bc3d8++) _0x51f9b5._u8array[_0x38ae1a + _0x3bc3d8] = this._u8array[_0x1ada3e + _0x3bc3d8]; + for (let _0x3bc3d8 = 0x0; _0x3bc3d8 < _0x3997cd; _0x3bc3d8++) _0x51f9b5._u8array[_0x38ae1a + _0x3bc3d8] = this._u8array[_0x1ada3e + _0x3bc3d8]; }, _0x3189ba.prototype.save = function() { - var _0xa88a13; + let _0xa88a13; try { _0xa88a13 = new Blob([this._u8array], { 'type': this.fileType }); } catch (_0x1dfb06) { if (window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder, 'InvalidStateError' !== _0x1dfb06.name || !window.BlobBuilder) throw new Error('Incompatible Browser'); - var _0x17edbf = new BlobBuilder(); + let _0x17edbf = new BlobBuilder(); _0x17edbf.append(this._u8array.buffer), _0xa88a13 = _0x17edbf.getBlob(this.fileType); } saveAs(_0xa88a13, this.fileName); @@ -684,11 +688,11 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { return this.littleEndian ? this._lastRead = this._u8array[this.offset] + (this._u8array[this.offset + 0x1] << 0x8) + (this._u8array[this.offset + 0x2] << 0x10) + (this._u8array[this.offset + 0x3] << 0x18) : this._lastRead = (this._u8array[this.offset] << 0x18) + (this._u8array[this.offset + 0x1] << 0x10) + (this._u8array[this.offset + 0x2] << 0x8) + this._u8array[this.offset + 0x3], this.offset += 0x4, this._lastRead >>> 0x0; }, _0x3189ba.prototype.readBytes = function(_0x455cfd) { this._lastRead = new Array(_0x455cfd); - for (var _0x17edbf = 0x0; _0x17edbf < _0x455cfd; _0x17edbf++) this._lastRead[_0x17edbf] = this._u8array[this.offset + _0x17edbf]; + for (let _0x17edbf = 0x0; _0x17edbf < _0x455cfd; _0x17edbf++) this._lastRead[_0x17edbf] = this._u8array[this.offset + _0x17edbf]; return this.offset += _0x455cfd, this._lastRead; }, _0x3189ba.prototype.readString = function(_0x4fe914) { this._lastRead = ''; - for (var _0x17edbf = 0x0; _0x17edbf < _0x4fe914 && this.offset + _0x17edbf < this.fileSize && this._u8array[this.offset + _0x17edbf] > 0x0; _0x17edbf++) this._lastRead = this._lastRead + String.fromCharCode(this._u8array[this.offset + _0x17edbf]); + for (let _0x17edbf = 0x0; _0x17edbf < _0x4fe914 && this.offset + _0x17edbf < this.fileSize && this._u8array[this.offset + _0x17edbf] > 0x0; _0x17edbf++) this._lastRead = this._lastRead + String.fromCharCode(this._u8array[this.offset + _0x17edbf]); return this.offset += _0x4fe914, this._lastRead; }, _0x3189ba.prototype.writeU8 = function(_0x276206) { this._u8array[this.offset] = _0x276206, this.offset++; @@ -699,15 +703,15 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }, _0x3189ba.prototype.writeU32 = function(_0xa4dd26) { this.littleEndian ? (this._u8array[this.offset] = 0xff & _0xa4dd26, this._u8array[this.offset + 0x1] = (0xff00 & _0xa4dd26) >> 0x8, this._u8array[this.offset + 0x2] = (0xff0000 & _0xa4dd26) >> 0x10, this._u8array[this.offset + 0x3] = (0xff000000 & _0xa4dd26) >> 0x18) : (this._u8array[this.offset] = (0xff000000 & _0xa4dd26) >> 0x18, this._u8array[this.offset + 0x1] = (0xff0000 & _0xa4dd26) >> 0x10, this._u8array[this.offset + 0x2] = (0xff00 & _0xa4dd26) >> 0x8, this._u8array[this.offset + 0x3] = 0xff & _0xa4dd26), this.offset += 0x4; }, _0x3189ba.prototype.writeBytes = function(_0x5ad6b9) { - for (var _0x17edbf = 0x0; _0x17edbf < _0x5ad6b9.length; _0x17edbf++) this._u8array[this.offset + _0x17edbf] = _0x5ad6b9[_0x17edbf]; + for (let _0x17edbf = 0x0; _0x17edbf < _0x5ad6b9.length; _0x17edbf++) this._u8array[this.offset + _0x17edbf] = _0x5ad6b9[_0x17edbf]; this.offset += _0x5ad6b9.length; }, _0x3189ba.prototype.writeString = function(_0x58c146, _0x23e582) { _0x23e582 = _0x23e582 || _0x58c146.length; - for (var _0x2c1832 = 0x0; _0x2c1832 < _0x58c146.length && _0x2c1832 < _0x23e582; _0x2c1832++) this._u8array[this.offset + _0x2c1832] = _0x58c146.charCodeAt(_0x2c1832); + for (let _0x2c1832 = 0x0; _0x2c1832 < _0x58c146.length && _0x2c1832 < _0x23e582; _0x2c1832++) this._u8array[this.offset + _0x2c1832] = _0x58c146.charCodeAt(_0x2c1832); for (; _0x2c1832 < _0x23e582; _0x2c1832++) this._u8array[this.offset + _0x2c1832] = 0x0; this.offset += _0x23e582; }; - var _0x863031 = _0x3189ba, + let _0x863031 = _0x3189ba, _0x34e7cf = 0x0; function _0x454881() { @@ -715,9 +719,9 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } function _0x288092(_0x1ab789) { - var _0x17edbf = new _0x454881(); + let _0x17edbf = new _0x454881(); _0x1ab789.seek(0x5); - for (var _0x2c1832 = 0x0, _0x195f00 = 0x0; !_0x1ab789.isEOF();) { + for (let _0x2c1832 = 0x0, _0x195f00 = 0x0; !_0x1ab789.isEOF();) { if (0x454f46 === (_0x2c1832 = _0x1ab789.readU24())) { if (_0x1ab789.isEOF()) break; if (_0x1ab789.offset + 0x3 === _0x1ab789.fileSize) { @@ -744,23 +748,23 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }); }, _0x454881.prototype.toString = function() { nSimpleRecords = 0x0, nRLERecords = 0x0; - for (var _0xa88a13 = 0x0; _0xa88a13 < this.records.length; _0xa88a13++) this.records[_0xa88a13].type === _0x34e7cf ? nRLERecords++ : nSimpleRecords++; - var _0x17edbf = 'Simple records: ' + nSimpleRecords; + for (let _0xa88a13 = 0x0; _0xa88a13 < this.records.length; _0xa88a13++) this.records[_0xa88a13].type === _0x34e7cf ? nRLERecords++ : nSimpleRecords++; + let _0x17edbf = 'Simple records: ' + nSimpleRecords; return _0x17edbf += '\nRLE records: ' + nRLERecords, _0x17edbf += '\nTotal records: ' + this.records.length, this.truncate && (_0x17edbf += '\nTruncate at: 0x' + this.truncate.toString(0x10)), _0x17edbf; }, _0x454881.prototype.export = function(_0x4d18dc) { - for (var _0x17edbf = 0x5, _0x2c1832 = 0x0; _0x2c1832 < this.records.length; _0x2c1832++) this.records[_0x2c1832].type === _0x34e7cf ? _0x17edbf += 0x8 : _0x17edbf += 0x5 + this.records[_0x2c1832].data.length; + for (let _0x17edbf = 0x5, _0x2c1832 = 0x0; _0x2c1832 < this.records.length; _0x2c1832++) this.records[_0x2c1832].type === _0x34e7cf ? _0x17edbf += 0x8 : _0x17edbf += 0x5 + this.records[_0x2c1832].data.length; _0x17edbf += 0x3, this.truncate && (_0x17edbf += 0x3), tempFile = new _0x863031(_0x17edbf), tempFile.fileName = _0x4d18dc + '.ips', tempFile.writeString('PATCH'); for (_0x2c1832 = 0x0; _0x2c1832 < this.records.length; _0x2c1832++) { - var _0x512785 = this.records[_0x2c1832]; + let _0x512785 = this.records[_0x2c1832]; tempFile.writeU24(_0x512785.offset), _0x512785.type === _0x34e7cf ? (tempFile.writeU16(0x0), tempFile.writeU16(_0x512785.length), tempFile.writeU8(_0x512785.byte)) : (tempFile.writeU16(_0x512785.data.length), tempFile.writeBytes(_0x512785.data)); } return tempFile.writeString('EOF'), _0x512785.truncate && tempFile.writeU24(_0x512785.truncate), tempFile; }, _0x454881.prototype.apply = function(_0xefa71d) { - var _0x17edbf; + let _0x17edbf; if (this.truncate) _0x17edbf = _0xefa71d.slice(0x0, this.truncate); else { - for (var _0x2c1832 = _0xefa71d.fileSize, _0x5a0a71 = 0x0; _0x5a0a71 < this.records.length; _0x5a0a71++) { - var _0x105576 = this.records[_0x5a0a71]; + for (let _0x2c1832 = _0xefa71d.fileSize, _0x5a0a71 = 0x0; _0x5a0a71 < this.records.length; _0x5a0a71++) { + let _0x105576 = this.records[_0x5a0a71]; _0x105576.type === _0x34e7cf ? _0x105576.offset + _0x105576.length > _0x2c1832 && (_0x2c1832 = _0x105576.offset + _0x105576.length) : _0x105576.offset + _0x105576.data.length > _0x2c1832 && (_0x2c1832 = _0x105576.offset + _0x105576.data.length); } _0x2c1832 === _0xefa71d.fileSize ? _0x17edbf = _0xefa71d.slice(0x0, _0xefa71d.fileSize) : (_0x17edbf = new _0x863031(_0x2c1832), _0xefa71d.copyToFile(_0x17edbf, 0x0)); @@ -768,25 +772,25 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0xefa71d.seek(0x0); for (_0x5a0a71 = 0x0; _0x5a0a71 < this.records.length; _0x5a0a71++) if (_0x17edbf.seek(this.records[_0x5a0a71].offset), this.records[_0x5a0a71].type === _0x34e7cf) - for (var _0x729105 = 0x0; _0x729105 < this.records[_0x5a0a71].length; _0x729105++) _0x17edbf.writeU8(this.records[_0x5a0a71].byte); + for (let _0x729105 = 0x0; _0x729105 < this.records[_0x5a0a71].length; _0x729105++) _0x17edbf.writeU8(this.records[_0x5a0a71].byte); else _0x17edbf.writeBytes(this.records[_0x5a0a71].data); return _0x17edbf; }; '0123456789abcdef' .split(''); - var _0x1aa7ba = function() { - for (var _0xa88a13, _0x17edbf = [], _0x2c1832 = 0x0; _0x2c1832 < 0x100; _0x2c1832++) { + let _0x1aa7ba = function() { + for (let _0xa88a13, _0x17edbf = [], _0x2c1832 = 0x0; _0x2c1832 < 0x100; _0x2c1832++) { _0xa88a13 = _0x2c1832; - for (var _0x32bcf1 = 0x0; _0x32bcf1 < 0x8; _0x32bcf1++) _0xa88a13 = 0x1 & _0xa88a13 ? 0xedb88320 ^ _0xa88a13 >>> 0x1 : _0xa88a13 >>> 0x1; + for (let _0x32bcf1 = 0x0; _0x32bcf1 < 0x8; _0x32bcf1++) _0xa88a13 = 0x1 & _0xa88a13 ? 0xedb88320 ^ _0xa88a13 >>> 0x1 : _0xa88a13 >>> 0x1; _0x17edbf[_0x2c1832] = _0xa88a13; } return _0x17edbf; }(); function _0x2d78e9(_0x509ecf, _0x4219e1, _0xd66d2b) { - for (var _0x185f93 = _0x4219e1 ? new Uint8Array(_0x509ecf._u8array.buffer, _0x4219e1) : _0x509ecf._u8array, _0x20e2c1 = -0x1, _0x3d100a = _0xd66d2b ? _0x185f93.length - 0x4 : _0x185f93.length, _0x56a6e6 = 0x0; _0x56a6e6 < _0x3d100a; _0x56a6e6++) _0x20e2c1 = _0x20e2c1 >>> 0x8 ^ _0x1aa7ba[0xff & (_0x20e2c1 ^ _0x185f93[_0x56a6e6])]; + for (let _0x185f93 = _0x4219e1 ? new Uint8Array(_0x509ecf._u8array.buffer, _0x4219e1) : _0x509ecf._u8array, _0x20e2c1 = -0x1, _0x3d100a = _0xd66d2b ? _0x185f93.length - 0x4 : _0x185f93.length, _0x56a6e6 = 0x0; _0x56a6e6 < _0x3d100a; _0x56a6e6++) _0x20e2c1 = _0x20e2c1 >>> 0x8 ^ _0x1aa7ba[0xff & (_0x20e2c1 ^ _0x185f93[_0x56a6e6])]; return (-0x1 ^ _0x20e2c1) >>> 0x0; } - var _0x37eff4 = 0x0, + let _0x37eff4 = 0x0, _0x34d681 = 0x1, _0x4c50e7 = 0x2, _0xf9eeea = 0x3; @@ -797,19 +801,19 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { function _0x356089(_0x1bf770) { _0x1bf770.readVLV = _0x45da2c, _0x1bf770.littleEndian = true; - var _0x17edbf = new _0x5b02d3(); + let _0x17edbf = new _0x5b02d3(); _0x1bf770.seek(0x4), _0x17edbf.sourceSize = _0x1bf770.readVLV(), _0x17edbf.targetSize = _0x1bf770.readVLV(); - var _0x2c1832 = _0x1bf770.readVLV(); + let _0x2c1832 = _0x1bf770.readVLV(); _0x2c1832 && (_0x17edbf.metaData = _0x1bf770.readString(_0x2c1832)); - for (var _0x157bba = _0x1bf770.fileSize - 0xc; _0x1bf770.offset < _0x157bba;) { - var _0x31dcc2 = _0x1bf770.readVLV(), + for (let _0x157bba = _0x1bf770.fileSize - 0xc; _0x1bf770.offset < _0x157bba;) { + let _0x31dcc2 = _0x1bf770.readVLV(), _0x21bafe = { 'type': 0x3 & _0x31dcc2, 'length': 0x1 + (_0x31dcc2 >> 0x2) }; if (_0x21bafe.type === _0x34d681) _0x21bafe.bytes = _0x1bf770.readBytes(_0x21bafe.length); else if (_0x21bafe.type === _0x4c50e7 || _0x21bafe.type === _0xf9eeea) { - var _0x4c6327 = _0x1bf770.readVLV(); + let _0x4c6327 = _0x1bf770.readVLV(); _0x21bafe.relativeOffset = (0x1 & _0x4c6327 ? -0x1 : 0x1) * (_0x4c6327 >> 0x1); } _0x17edbf.actions.push(_0x21bafe); @@ -819,8 +823,8 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } function _0x45da2c() { - for (var _0xa88a13 = 0x0, _0x17edbf = 0x1;;) { - var _0x2c1832 = this.readU8(); + for (let _0xa88a13 = 0x0, _0x17edbf = 0x1;;) { + let _0x2c1832 = this.readU8(); if (_0xa88a13 += (0x7f & _0x2c1832) * _0x17edbf, 0x80 & _0x2c1832) break; _0xa88a13 += _0x17edbf <<= 0x7; } @@ -829,7 +833,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { function _0x152a53(_0x33f58d) { for (;;) { - var _0x17edbf = 0x7f & _0x33f58d; + let _0x17edbf = 0x7f & _0x33f58d; if (0x0 === (_0x33f58d >>= 0x7)) { this.writeU8(0x80 | _0x17edbf); break; @@ -839,7 +843,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } function _0x5a4975(_0x221175) { - for (var _0x17edbf = 0x0;;) { + for (let _0x17edbf = 0x0;;) { if (0x0 === (_0x221175 >>= 0x7)) { _0x17edbf++; break; @@ -853,19 +857,19 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { this.offset = 0x0, this.next = null; } _0x5b02d3.prototype.toString = function() { - var _0xa88a13 = 'Source size: ' + this.sourceSize; + let _0xa88a13 = 'Source size: ' + this.sourceSize; return _0xa88a13 += '\nTarget size: ' + this.targetSize, _0xa88a13 += '\nMetadata: ' + this.metaData, _0xa88a13 += '\n#Actions: ' + this.actions.length; }, _0x5b02d3.prototype.validateSource = function(_0x48d2df, _0x3c15dd) { return this.sourceChecksum === _0x2d78e9(_0x48d2df, _0x3c15dd); }, _0x5b02d3.prototype.apply = function(_0x393f39, _0x76e509) { if (_0x76e509 && !this.validateSource(_0x393f39)) throw new Error('error_crc_input'); - for (var _0x2c1832 = new _0x863031(this.targetSize), _0x4df6ae = 0x0, _0xad0fa9 = 0x0, _0x38240a = 0x0; _0x38240a < this.actions.length; _0x38240a++) { - var _0x4b1026 = this.actions[_0x38240a]; + for (let _0x2c1832 = new _0x863031(this.targetSize), _0x4df6ae = 0x0, _0xad0fa9 = 0x0, _0x38240a = 0x0; _0x38240a < this.actions.length; _0x38240a++) { + let _0x4b1026 = this.actions[_0x38240a]; if (_0x4b1026.type === _0x37eff4) _0x393f39.copyToFile(_0x2c1832, _0x2c1832.offset, _0x4b1026.length), _0x2c1832.skip(_0x4b1026.length); else if (_0x4b1026.type === _0x34d681) _0x2c1832.writeBytes(_0x4b1026.bytes); else if (_0x4b1026.type === _0x4c50e7) { _0x4df6ae += _0x4b1026.relativeOffset; - for (var _0x5c2263 = _0x4b1026.length; _0x5c2263--;) _0x2c1832.writeU8(_0x393f39._u8array[_0x4df6ae]), _0x4df6ae++; + for (let _0x5c2263 = _0x4b1026.length; _0x5c2263--;) _0x2c1832.writeU8(_0x393f39._u8array[_0x4df6ae]), _0x4df6ae++; } else if (_0x4b1026.type === _0xf9eeea) { _0xad0fa9 += _0x4b1026.relativeOffset; for (_0x5c2263 = _0x4b1026.length; _0x5c2263--;) _0x2c1832.writeU8(_0x2c1832._u8array[_0xad0fa9]), _0xad0fa9++; @@ -874,22 +878,22 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { if (_0x76e509 && this.targetChecksum !== _0x2d78e9(_0x2c1832)) throw new Error('error_crc_output'); return _0x2c1832; }, _0x5b02d3.prototype.export = function(_0x3e1e58) { - var _0x17edbf = 'BPS1' .length; + let _0x17edbf = 'BPS1' .length; _0x17edbf += _0x5a4975(this.sourceSize), _0x17edbf += _0x5a4975(this.targetSize), _0x17edbf += _0x5a4975(this.metaData.length), _0x17edbf += this.metaData.length; - for (var _0x2c1832 = 0x0; _0x2c1832 < this.actions.length; _0x2c1832++) { + for (let _0x2c1832 = 0x0; _0x2c1832 < this.actions.length; _0x2c1832++) { _0x17edbf += _0x5a4975(((_0x38dad6 = this.actions[_0x2c1832]).length - 0x1 << 0x2) + _0x38dad6.type), _0x38dad6.type === _0x34d681 ? _0x17edbf += _0x38dad6.length : _0x38dad6.type !== _0x4c50e7 && _0x38dad6.type !== _0xf9eeea || (_0x17edbf += _0x5a4975((Math.abs(_0x38dad6.relativeOffset) << 0x1) + (_0x38dad6.relativeOffset < 0x0 ? 0x1 : 0x0))); } - var _0x2d1555 = new _0x863031(_0x17edbf += 0xc); + let _0x2d1555 = new _0x863031(_0x17edbf += 0xc); _0x2d1555.fileName = _0x3e1e58 + '.bps', _0x2d1555.littleEndian = true, _0x2d1555.writeVLV = _0x152a53, _0x2d1555.writeString('BPS1'), _0x2d1555.writeVLV(this.sourceSize), _0x2d1555.writeVLV(this.targetSize), _0x2d1555.writeVLV(this.metaData.length), _0x2d1555.writeString(this.metaData, this.metaData.length); for (_0x2c1832 = 0x0; _0x2c1832 < this.actions.length; _0x2c1832++) { - var _0x38dad6 = this.actions[_0x2c1832]; + let _0x38dad6 = this.actions[_0x2c1832]; _0x2d1555.writeVLV((_0x38dad6.length - 0x1 << 0x2) + _0x38dad6.type), _0x38dad6.type === _0x34d681 ? _0x2d1555.writeBytes(_0x38dad6.bytes) : _0x38dad6.type !== _0x4c50e7 && _0x38dad6.type !== _0xf9eeea || _0x2d1555.writeVLV((Math.abs(_0x38dad6.relativeOffset) << 0x1) + (_0x38dad6.relativeOffset < 0x0 ? 0x1 : 0x0)); } return _0x2d1555.writeU32(this.sourceChecksum), _0x2d1555.writeU32(this.targetChecksum), _0x2d1555.writeU32(this.patchChecksum), _0x2d1555; }, _0x562e68.prototype.delete = function() { this.next && delete this.next; }; - var _0x7a6485 = 'UPS1'; + let _0x7a6485 = 'UPS1'; function _0x42cd9e() { this.records = [], this.sizeInput = 0x0, this.sizeOutput = 0x0, this.checksumInput = 0x0, this.checksumOutput = 0x0; @@ -897,7 +901,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { function _0x10dc1d(_0x5d0c48) { for (;;) { - var _0x17edbf = 0x7f & _0x5d0c48; + let _0x17edbf = 0x7f & _0x5d0c48; if (0x0 === (_0x5d0c48 >>= 0x7)) { this.writeU8(0x80 | _0x17edbf); break; @@ -907,8 +911,8 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } function _0x454043() { - for (var _0xa88a13 = 0x0, _0x17edbf = 0x1;;) { - var _0x2c1832 = this.readU8(); + for (let _0xa88a13 = 0x0, _0x17edbf = 0x1;;) { + let _0x2c1832 = this.readU8(); if (-0x1 == _0x2c1832) throw new Error('Can\'t read UPS VLV at 0x' + (this.offset - 0x1).toString(0x10)); if (_0xa88a13 += (0x7f & _0x2c1832) * _0x17edbf, 0x0 != (0x80 & _0x2c1832)) break; _0xa88a13 += _0x17edbf <<= 0x7; @@ -917,7 +921,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } function _0xca245c(_0x459173) { - for (var _0x17edbf = 0x0;;) { + for (let _0x17edbf = 0x0;;) { if (_0x17edbf++, 0x0 === (_0x459173 >>= 0x7)) break; _0x459173 -= 0x1; } @@ -925,10 +929,10 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } function _0xd2202f(_0x5abb5e) { - var _0x17edbf = new _0x42cd9e(); + let _0x17edbf = new _0x42cd9e(); _0x5abb5e.readVLV = _0x454043, _0x5abb5e.seek(_0x7a6485.length), _0x17edbf.sizeInput = _0x5abb5e.readVLV(), _0x17edbf.sizeOutput = _0x5abb5e.readVLV(); for (; _0x5abb5e.offset < _0x5abb5e.fileSize - 0xc;) { - for (var _0x2c1832 = _0x5abb5e.readVLV(), _0x3bca86 = []; _0x5abb5e.readU8();) _0x3bca86.push(_0x5abb5e._lastRead); + for (let _0x2c1832 = _0x5abb5e.readVLV(), _0x3bca86 = []; _0x5abb5e.readU8();) _0x3bca86.push(_0x5abb5e._lastRead); _0x17edbf.addRecord(_0x2c1832, _0x3bca86); } return _0x5abb5e.littleEndian = true, _0x17edbf.checksumInput = _0x5abb5e.readU32(), _0x17edbf.checksumOutput = _0x5abb5e.readU32(), _0x5abb5e.littleEndian = !0x1, _0x17edbf; @@ -939,12 +943,12 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'XORdata': _0x39594d }); }, _0x42cd9e.prototype.toString = function() { - var _0xa88a13 = 'Records: ' + (void 0x0).records.length; + let _0xa88a13 = 'Records: ' + (void 0x0).records.length; return _0xa88a13 += '\nInput file size: ' + (void 0x0).sizeInput, _0xa88a13 += '\nOutput file size: ' + (void 0x0).sizeOutput, _0xa88a13 += '\nInput file checksum: ' + padZeroes((void 0x0).checksumInput, 0x4), _0xa88a13 += '\nOutput file checksum: ' + padZeroes((void 0x0).checksumOutput, 0x4); }, _0x42cd9e.prototype.export = function(_0x1a3e8b) { - var _0x17edbf = _0x7a6485.length; + let _0x17edbf = _0x7a6485.length; _0x17edbf += _0xca245c(this.sizeInput), _0x17edbf += _0xca245c(this.sizeOutput); - for (var _0x2c1832 = 0x0; _0x2c1832 < this.records.length; _0x2c1832++) _0x17edbf += _0xca245c(this.records[_0x2c1832].offset), _0x17edbf += this.records[_0x2c1832].XORdata.length + 0x1; + for (let _0x2c1832 = 0x0; _0x2c1832 < this.records.length; _0x2c1832++) _0x17edbf += _0xca245c(this.records[_0x2c1832].offset), _0x17edbf += this.records[_0x2c1832].XORdata.length + 0x1; _0x17edbf += 0xc, tempFile = new _0x863031(_0x17edbf), tempFile.writeVLV = _0x10dc1d, tempFile.fileName = _0x1a3e8b + '.ups', tempFile.writeString(_0x7a6485), tempFile.writeVLV(this.sizeInput), tempFile.writeVLV(this.sizeOutput); for (_0x2c1832 = 0x0; _0x2c1832 < this.records.length; _0x2c1832++) tempFile.writeVLV(this.records[_0x2c1832].offset), tempFile.writeBytes(this.records[_0x2c1832].XORdata), tempFile.writeU8(0x0); return tempFile.littleEndian = true, tempFile.writeU32(this.checksumInput), tempFile.writeU32(this.checksumOutput), tempFile.writeU32(_0x2d78e9(tempFile, 0x0, true)), tempFile; @@ -952,23 +956,21 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { return _0x2d78e9(_0x25cb26, _0xd0163c) === this.checksumInput; }, _0x42cd9e.prototype.apply = function(_0x21d682, _0x41bbac) { _0x41bbac && this.validateSource(_0x21d682), tempFile = new _0x863031(this.sizeOutput), _0x21d682.copyToFile(tempFile, 0x0, this.sizeInput), _0x21d682.seek(0x0); - for (var _0x2c1832 = 0x0; _0x2c1832 < this.records.length; _0x2c1832++) { - var _0x5ed6c9 = this.records[_0x2c1832]; + for (let _0x2c1832 = 0x0; _0x2c1832 < this.records.length; _0x2c1832++) { + let _0x5ed6c9 = this.records[_0x2c1832]; tempFile.skip(_0x5ed6c9.offset), _0x21d682.skip(_0x5ed6c9.offset); - for (var _0x3faf05 = 0x0; _0x3faf05 < _0x5ed6c9.XORdata.length; _0x3faf05++) tempFile.writeU8((_0x21d682.isEOF() ? 0x0 : _0x21d682.readU8()) ^ _0x5ed6c9.XORdata[_0x3faf05]); + for (let _0x3faf05 = 0x0; _0x3faf05 < _0x5ed6c9.XORdata.length; _0x3faf05++) tempFile.writeU8((_0x21d682.isEOF() ? 0x0 : _0x21d682.readU8()) ^ _0x5ed6c9.XORdata[_0x3faf05]); tempFile.skip(0x1), _0x21d682.skip(0x1); } return _0x41bbac && (_0x2d78e9(tempFile), this.checksumOutput), tempFile; }; - var _0xc778fa = _0x2c1832(0xa0), - _0x5a641d = _0x2c1832.n(_0xc778fa), - _0x4d7024 = { + var _0x4d7024 = { '_FS': { 'createFolder': function(parent, name, canRead, canWrite) { if (! _0x4d7024.FS) return; if (typeof _0x4d7024.FS.mkdir == 'function' && window.PATH) { - var path = PATH.join2(typeof parent === 'string' ? parent : _0x4d7024.FS.getPath(parent), name); - var mode = _0x4d7024.FS.getMode(canRead, canWrite); + let path = PATH.join2(typeof parent === 'string' ? parent : _0x4d7024.FS.getPath(parent), name); + let mode = _0x4d7024.FS.getMode(canRead, canWrite); _0x4d7024.FS.mkdir(path, mode); } else { _0x4d7024.FS.createFolder(parent, name, canRead, canWrite); @@ -993,9 +995,9 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'coreFileVersion': '', 'isMobileDevice': !!/Android|webOS|iPhone|iPad|iPod|BB10|BlackBerry|IEMobile|Opera Mini|Mobile|mobile/i .test(navigator.userAgent || ''), 'create': function() { - var _0xa88a13 = this; + let _this = this; window.URL = window.URL || window.webkitURL; - var _0x17edbf, _0x2c1832, _0x4ce206, _0x528f2b = !0x1, + let _0x17edbf, _0x2c1832, _0x4ce206, _0x528f2b = !0x1, _0x547484 = !0x1, _0x5e24fa = !0x1, _0x468801 = 0x0, @@ -1072,11 +1074,11 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x17edbf = (_0xc6823.customPaths && typeof _0xc6823.customPaths['extract7z.js'] == 'string') ? _0xc6823.customPaths['extract7z.js'] : (_0xc6823.dataPath + 'extract7z.js');; _0x2c1832 = (_0xc6823.customPaths && typeof _0xc6823.customPaths['extractzip.js'] == 'string') ? _0xc6823.customPaths['extractzip.js'] : (_0xc6823.dataPath + 'extractzip.js?v=1'); _0x4ce206 = (_0xc6823.customPaths && typeof _0xc6823.customPaths['libunrar.js'] == 'string') ? _0xc6823.customPaths['libunrar.js'] : (_0xc6823.dataPath + 'libunrar.js'); - var _0xb2be2a = _0x428003('canvas', {}); + let _0xb2be2a = _0x428003('canvas', {}); this.game.appendChild(_0xb2be2a), _0x4d7024.loading = _0x428003('div', { 'class': this.config.classNames.loading }), this.elements.container.appendChild(_0x4d7024.loading); - var _0x4fce24 = { + let _0x4fce24 = { 'loading-info': _0x449eac({ 'loading-info': true }), @@ -1108,7 +1110,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x4e198f = ''; if (typeof _0xc6823.adUrl === 'string') { _0x4d7024.loading.innerHTML = '\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n '+(_0xb9b2ff.get('playNow', _0xc6823.config))+'\n
\n
'; - var _0x2e2264 = _0x428003('iframe', { + let _0x2e2264 = _0x428003('iframe', { 'src': _0xc6823.adUrl, 'scrolling': 'no', 'frameborder': 'no', @@ -1122,8 +1124,8 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x132da7(_0x4d7024.loading.querySelector('.' .concat(_0x4fce24['start-game'])), true), _0x4d7024.loading.querySelector('.' .concat(_0x4fce24.p3)).innerHTML = 'Failed to initialize WebGL.'; } } - var _0x18a437 = window.URL || window.webkitURL; - var isCompressed = function(data) { //https://www.garykessler.net/library/file_sigs.html + let _0x18a437 = window.URL || window.webkitURL; + let isCompressed = function(data) { //https://www.garykessler.net/library/file_sigs.html if ((data[0] === 80 && data[1] === 75) && ((data[2] === 3 && data[3] === 4) || (data[2] === 5 && data[3] === 6) || (data[2] === 7 && data[3] === 8))) { return 'zip'; } else if (data[0] === 55 && data[1] === 122 && data[2] === 188 && data[3] === 175 && data[4] === 39 && data[5] === 28) { @@ -1133,7 +1135,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } }, extractFile = async function(url) { - var fileData = await (await fetch(url)).text(), + let fileData = await (await fetch(url)).text(), _0x2c1832 = new Blob([fileData], { 'type': 'application/javascript' }), @@ -1141,9 +1143,9 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { return new Worker(_0x501a8e); }, extractRar = async function(url) { - var fileData = await (await fetch(url)).text(); - var _0x2c1832 = '\nvar dataToPass = [];\nModule = {\n monitorRunDependencies: function(left) {\n if (left == 0) {\n setTimeout(function() {\n unrar(dataToPass, null);\n }, 100);\n }\n },\n onRuntimeInitialized: function() {\n },\n locateFile: function(file) {\n return \''+url+'.mem\';\n }\n};\n'+fileData+'\nvar unrar = function(data, password) {\n var cb = function(fileName, fileSize, progress) {\n postMessage({"t":4,"current":progress,"total":fileSize, "name": fileName});\n };\n\n var rarContent = readRARContent(data.map(function(d) {\n return {\n name: d.name,\n content: new Uint8Array(d.content)\n }\n }), password, cb)\n var rec = function(entry) {\n if (entry.type === \'file\') {\n postMessage({"t":2,"file":entry.fullFileName,"size":entry.fileSize,"data":entry.fileContent});\n } else if (entry.type === \'dir\') {\n Object.keys(entry.ls).forEach(function(k) {\n rec(entry.ls[k]);\n })\n } else {\n throw "Unknown type";\n }\n }\n rec(rarContent);\n postMessage({"t":1});\n return rarContent;\n};\nonmessage = function(data) {\n dataToPass.push({name: \'test.rar\', content: data.data});\n};\n '; - var _0x22326b = new Blob([_0x2c1832], { + let fileData = await (await fetch(url)).text(); + let _0x2c1832 = '\nlet dataToPass = [];\nModule = {\n monitorRunDependencies: function(left) {\n if (left == 0) {\n setTimeout(function() {\n unrar(dataToPass, null);\n }, 100);\n }\n },\n onRuntimeInitialized: function() {\n },\n locateFile: function(file) {\n return \''+url+'.mem\';\n }\n};\n'+fileData+'\nlet unrar = function(data, password) {\n let cb = function(fileName, fileSize, progress) {\n postMessage({"t":4,"current":progress,"total":fileSize, "name": fileName});\n };\n\n let rarContent = readRARContent(data.map(function(d) {\n return {\n name: d.name,\n content: new Uint8Array(d.content)\n }\n }), password, cb)\n let rec = function(entry) {\n if (entry.type === \'file\') {\n postMessage({"t":2,"file":entry.fullFileName,"size":entry.fileSize,"data":entry.fileContent});\n } else if (entry.type === \'dir\') {\n Object.keys(entry.ls).forEach(function(k) {\n rec(entry.ls[k]);\n })\n } else {\n throw "Unknown type";\n }\n }\n rec(rarContent);\n postMessage({"t":1});\n return rarContent;\n};\nonmessage = function(data) {\n dataToPass.push({name: \'test.rar\', content: data.data});\n};\n '; + let _0x22326b = new Blob([_0x2c1832], { 'type': 'application/javascript' }), _0x3635b1 = window.URL.createObjectURL(_0x22326b); @@ -1213,7 +1215,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { if (_0xdcec2a && (_0xdcec2a.virtualGamepadContainer == 'undefined' || _0xdcec2a.virtualGamepadContainer === null)) { _0x5ab74d.toggleControls.call(_0xc6823, true); } - var _0x2c1832 = _0x449eac({ + let _0x2c1832 = _0x449eac({ 'ejs__tooltip--visible': true }), _0x10efa5 = _0xc6823.elements.buttons.gamepad.querySelector('.' .concat(_0x449eac({ @@ -1231,138 +1233,118 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } } _0x132da7(_0x4d7024.loading.querySelector('.' .concat(_0x4fce24['start-game'])), true); - var _0x30fd44 = _0x5dc0c0(_0x2593da.defaultCoreOptionsValues.call(_0xa88a13), _0x2593da.storage.get('core-options') || {}); + let _0x30fd44 = _0x5dc0c0(_0x2593da.defaultCoreOptionsValues.call(_this), _0x2593da.storage.get('core-options') || {}); 'n64' === _0xc6823.system && _0x30fd44 && Object.keys(_0x30fd44).forEach(function(_0x3015d2) { - 'glupen64-aspect' === _0x3015d2 && '16:9' === _0x30fd44[_0x3015d2] && (_0xb2be2a.height = _0xb2be2a.width / 0x10 * 0x9, _0x4d7024.aspectRatio = 0x10 / 0x9); - }), 'arcade' !== _0xa88a13.system && 'fba0.2.97.29' !== _0xa88a13.system || _0x30fd44 && Object.keys(_0x30fd44).forEach(function(_0x490c06) { - 'fba-aspect' === _0x490c06 && 'PAR' === _0x30fd44[_0x490c06] && (_0xb2be2a.height = _0xb2be2a.width / 0x10 * 0x9, _0x4d7024.aspectRatio = 0x10 / 0x9); - }), 'gba' === _0xc6823.system && (_0xb2be2a.height = _0xb2be2a.width / 1.5, _0x4d7024.aspectRatio = 1.5), window.setTimeout(function() {}, 0x96), - function() { - var _0x3d9f57 = _0xa88a13; - if ('undefined' != typeof RI) { - document.removeEventListener('mousemove', RI.eventHandler, !0x1), _0xb2be2a.removeEventListener('mousedown', RI.canvasEventHandler, !0x1), _0xb2be2a.removeEventListener('mouseup', RI.canvasEventHandler, !0x1); - _0x3d9f57.elements.container.addEventListener('mousemove', function(_0x44f409) { - var _0x3d9f57 = 0x0, - _0x2c1832 = 0x0, - _0x2cc8a1 = _0x44f409.offsetX - _0x4d7024.Module.canvas.offsetLeft, - _0x5744ed = _0x44f409.offsetY - _0x4d7024.Module.canvas.offsetTop; - switch (_0x44f409.type) { - case 'mousemove': - _0x2cc8a1 < 0x0 ? (_0x2cc8a1 = 0x0, _0x3d9f57 = -_0x4d7024.Module.canvas.offsetWidth) : _0x2cc8a1 > _0x4d7024.Module.canvas.offsetWidth ? (_0x2cc8a1 = _0x4d7024.Module.canvas.offsetWidth, _0x3d9f57 = _0x4d7024.Module.canvas.offsetWidth) : _0x3d9f57 = _0x2cc8a1 - RI.currentX, _0x5744ed < 0x0 ? (_0x5744ed = 0x0, _0x2c1832 = -_0x4d7024.Module.canvas.offsetHeight) : _0x5744ed > _0x4d7024.Module.canvas.offsetHeight ? (_0x5744ed = _0x4d7024.Module.canvas.offsetHeight, _0x2c1832 = _0x4d7024.Module.canvas.offsetHeight) : _0x2c1832 = _0x5744ed - RI.currentY, RI.currentX = _0x2cc8a1, RI.currentY = _0x5744ed; - for (var _0x3e03cb = 0x0; _0x3e03cb < RI.contexts.length; _0x3e03cb += 0x1) HEAP32[RI.contexts[_0x3e03cb].state + 0x20 >> 0x2] = _0x3d9f57, HEAP32[RI.contexts[_0x3e03cb].state + 0x24 >> 0x2] = _0x2c1832; - } - }, !0x1), _0x3d9f57.elements.container.addEventListener('mousedown', RI.canvasEventHandler, !0x1), _0x3d9f57.elements.container.addEventListener('mouseup', RI.canvasEventHandler, !0x1); - var _0x2c1832 = function(_0x5d0cbb) { - if (_0x5d0cbb.targetTouches[0x0]) { - var _0x3d9f57, _0x2c1832, _0x19a4e0 = 0x0, - _0x2b7b61 = 0x0, - _0x1e0f64 = _0x5d0cbb.target.getBoundingClientRect(), - _0x2c55b8 = _0x5d0cbb.targetTouches[0x0].clientX - _0x1e0f64.left, - _0x3a7025 = _0x5d0cbb.targetTouches[0x0].clientY - _0x1e0f64.top; - _0x2c55b8 < 0x0 ? (_0x2c55b8 = 0x0, _0x19a4e0 = -_0x4d7024.Module.canvas.offsetWidth) : _0x2c55b8 > _0x4d7024.Module.canvas.offsetWidth ? (_0x2c55b8 = _0x4d7024.Module.canvas.offsetWidth, _0x19a4e0 = _0x4d7024.Module.canvas.offsetWidth) : _0x19a4e0 = _0x2c55b8 - RI.currentX, _0x3a7025 < 0x0 ? (_0x3a7025 = 0x0, _0x2b7b61 = -_0x4d7024.Module.canvas.offsetHeight) : _0x3a7025 > _0x4d7024.Module.canvas.offsetHeight ? (_0x3a7025 = _0x4d7024.Module.canvas.offsetHeight, _0x2b7b61 = _0x4d7024.Module.canvas.offsetHeight) : _0x2b7b61 = _0x3a7025 - RI.currentY, RI.currentX = _0x2c55b8, RI.currentY = _0x3a7025; - for (var _0x43b670 = 0x0; _0x43b670 < RI.contexts.length; _0x43b670 += 0x1) HEAP32[RI.contexts[_0x43b670].state + 0x20 >> 0x2] = _0x19a4e0, HEAP32[RI.contexts[_0x43b670].state + 0x24 >> 0x2] = _0x2b7b61; - switch (_0x5d0cbb.type) { - case 'touchend': - case 'touchstart': - if (0x0 === _0x5d0cbb.button) _0x2c1832 = 0x28; - else { - if (0x2 !== _0x5d0cbb.button) break; - _0x2c1832 = 0x29; - } - _0x3d9f57 = 'touchend' === _0x5d0cbb.type ? 0x0 : 0x1; - for (var _0x443e8b = 0x0; _0x443e8b < RI.contexts.length; _0x443e8b += 0x1) HEAP8[RI.contexts[_0x443e8b].state + _0x2c1832 >> 0x0] = _0x3d9f57; - } - } - }; - _0x3d9f57.elements.container.addEventListener('touchstart', _0x2c1832, !0x1), _0x3d9f57.elements.container.addEventListener('touchend', _0x2c1832, !0x1); - } else { - var _0x518e5a = function(_0x45d640) { - var _0x3d9f57 = new MouseEvent(_0x45d640.type, _0x45d640); - _0x4d7024.Module.canvas.dispatchEvent(_0x3d9f57); - }; - _0x530042.call(_0xa88a13, '.' .concat(_0x449eac({ - 'ejs__dialogs': true - }))).addEventListener('mousemove', _0x518e5a, !0x1), _0x530042.call(_0xa88a13, '.' .concat(_0x449eac({ - 'ejs__dialogs': true - }))).addEventListener('mousedown', _0x518e5a, !0x1), _0x530042.call(_0xa88a13, '.' .concat(_0x449eac({ - 'ejs__dialogs': true - }))).addEventListener('mouseup', _0x518e5a, !0x1); - } - }(), 'msx' === _0xc6823.system && function(_0x3c016a) { - if ('undefined' != typeof RI) { - document.removeEventListener('keydown', RI.eventHandler, !0x1), document.removeEventListener('keyup', RI.eventHandler, !0x1); - var _0x3d9f57 = function(_0x97e67b) { - var _0x3d9f57 = _0x97e67b.keyCode, - _0x2c1832 = _0x3d9f57 >> 0x3, - _0x3340c0 = 0x1 << (0x7 & _0x3d9f57); - switch (_0x97e67b.type) { - case 'keyup': - case 'keydown': - if (_0x2c1832 >= 0x20) throw 'key code error! bad code: ' + _0x3d9f57; - for (var _0x126f58 = 0x0; _0x126f58 < RI.contexts.length; _0x126f58++) { - var _0x4ca77a = HEAP8[RI.contexts[_0x126f58].state + _0x2c1832 >> 0x0]; - 'keyup' === _0x97e67b.type ? _0x4ca77a &= ~_0x3340c0 : _0x4ca77a |= _0x3340c0, HEAP8[RI.contexts[_0x126f58].state + _0x2c1832 >> 0x0] = _0x4ca77a; + 'glupen64-aspect' === _0x3015d2 && '16:9' === _0x30fd44[_0x3015d2] && (_0xb2be2a.height = _0xb2be2a.width / 0x10 * 0x9, _0x4d7024.aspectRatio = 0x10 / 0x9); + }); + 'arcade' !== _this.system && 'fba0.2.97.29' !== _this.system || _0x30fd44 && Object.keys(_0x30fd44).forEach(function(_0x490c06) { + 'fba-aspect' === _0x490c06 && 'PAR' === _0x30fd44[_0x490c06] && (_0xb2be2a.height = _0xb2be2a.width / 0x10 * 0x9, _0x4d7024.aspectRatio = 0x10 / 0x9); + }); + 'gba' === _0xc6823.system && (_0xb2be2a.height = _0xb2be2a.width / 1.5, _0x4d7024.aspectRatio = 1.5); + (function() { + let _0x3d9f57 = _this; + if ('undefined' != typeof RI) { + document.removeEventListener('mousemove', RI.eventHandler, !0x1), _0xb2be2a.removeEventListener('mousedown', RI.canvasEventHandler, !0x1), _0xb2be2a.removeEventListener('mouseup', RI.canvasEventHandler, !0x1); + _0x3d9f57.elements.container.addEventListener('mousemove', function(_0x44f409) { + let _0x3d9f57 = 0x0, + _0x2c1832 = 0x0, + _0x2cc8a1 = _0x44f409.offsetX - _0x4d7024.Module.canvas.offsetLeft, + _0x5744ed = _0x44f409.offsetY - _0x4d7024.Module.canvas.offsetTop; + switch (_0x44f409.type) { + case 'mousemove': + _0x2cc8a1 < 0x0 ? (_0x2cc8a1 = 0x0, _0x3d9f57 = -_0x4d7024.Module.canvas.offsetWidth) : _0x2cc8a1 > _0x4d7024.Module.canvas.offsetWidth ? (_0x2cc8a1 = _0x4d7024.Module.canvas.offsetWidth, _0x3d9f57 = _0x4d7024.Module.canvas.offsetWidth) : _0x3d9f57 = _0x2cc8a1 - RI.currentX, _0x5744ed < 0x0 ? (_0x5744ed = 0x0, _0x2c1832 = -_0x4d7024.Module.canvas.offsetHeight) : _0x5744ed > _0x4d7024.Module.canvas.offsetHeight ? (_0x5744ed = _0x4d7024.Module.canvas.offsetHeight, _0x2c1832 = _0x4d7024.Module.canvas.offsetHeight) : _0x2c1832 = _0x5744ed - RI.currentY, RI.currentX = _0x2cc8a1, RI.currentY = _0x5744ed; + for (let _0x3e03cb = 0x0; _0x3e03cb < RI.contexts.length; _0x3e03cb += 0x1) HEAP32[RI.contexts[_0x3e03cb].state + 0x20 >> 0x2] = _0x3d9f57, HEAP32[RI.contexts[_0x3e03cb].state + 0x24 >> 0x2] = _0x2c1832; + } + }, !0x1), _0x3d9f57.elements.container.addEventListener('mousedown', RI.canvasEventHandler, !0x1), _0x3d9f57.elements.container.addEventListener('mouseup', RI.canvasEventHandler, !0x1); + let _0x2c1832 = function(_0x5d0cbb) { + if (_0x5d0cbb.targetTouches[0x0]) { + let _0x3d9f57, _0x2c1832, _0x19a4e0 = 0x0, + _0x2b7b61 = 0x0, + _0x1e0f64 = _0x5d0cbb.target.getBoundingClientRect(), + _0x2c55b8 = _0x5d0cbb.targetTouches[0x0].clientX - _0x1e0f64.left, + _0x3a7025 = _0x5d0cbb.targetTouches[0x0].clientY - _0x1e0f64.top; + _0x2c55b8 < 0x0 ? (_0x2c55b8 = 0x0, _0x19a4e0 = -_0x4d7024.Module.canvas.offsetWidth) : _0x2c55b8 > _0x4d7024.Module.canvas.offsetWidth ? (_0x2c55b8 = _0x4d7024.Module.canvas.offsetWidth, _0x19a4e0 = _0x4d7024.Module.canvas.offsetWidth) : _0x19a4e0 = _0x2c55b8 - RI.currentX, _0x3a7025 < 0x0 ? (_0x3a7025 = 0x0, _0x2b7b61 = -_0x4d7024.Module.canvas.offsetHeight) : _0x3a7025 > _0x4d7024.Module.canvas.offsetHeight ? (_0x3a7025 = _0x4d7024.Module.canvas.offsetHeight, _0x2b7b61 = _0x4d7024.Module.canvas.offsetHeight) : _0x2b7b61 = _0x3a7025 - RI.currentY, RI.currentX = _0x2c55b8, RI.currentY = _0x3a7025; + for (let _0x43b670 = 0x0; _0x43b670 < RI.contexts.length; _0x43b670 += 0x1) HEAP32[RI.contexts[_0x43b670].state + 0x20 >> 0x2] = _0x19a4e0, HEAP32[RI.contexts[_0x43b670].state + 0x24 >> 0x2] = _0x2b7b61; + switch (_0x5d0cbb.type) { + case 'touchend': + case 'touchstart': + if (0x0 === _0x5d0cbb.button) _0x2c1832 = 0x28; + else { + if (0x2 !== _0x5d0cbb.button) break; + _0x2c1832 = 0x29; } + _0x3d9f57 = 'touchend' === _0x5d0cbb.type ? 0x0 : 0x1; + for (let _0x443e8b = 0x0; _0x443e8b < RI.contexts.length; _0x443e8b += 0x1) HEAP8[RI.contexts[_0x443e8b].state + _0x2c1832 >> 0x0] = _0x3d9f57; } - }; - document.addEventListener('keydown', _0x3d9f57, !0x1), document.addEventListener('keyup', _0x3d9f57, !0x1); - } - }(), setTimeout(function() { - var _0xa88a13; - _0xa88a13 = _0x59aa33.info(), null === _0xdcec2a.setVolume && 'undefined' != typeof RA ? (RA.queueAudio = function() { - var _0x3d9f57, _0x2c1832 = _0xc6823.volume, - _0x2cbc4 = RA.bufIndex; - _0x3d9f57 = RA.bufIndex ? RA.buffers[RA.bufIndex - 0x1].endTime : RA.context.currentTime, RA.buffers[_0x2cbc4].endTime = _0x3d9f57 + RA.buffers[_0x2cbc4].duration; - var _0x4e7320 = RA.context.createBufferSource(); - if (_0x4e7320.buffer = RA.buffers[_0x2cbc4], _0xc6823.muted && (_0x2c1832 = 0x0), 0x1 === _0x2c1832) _0x4e7320.connect(RA.context.destination); - else { - var _0x3da8fc = RA.context.createGain(); - _0x4e7320.connect(_0x3da8fc), _0x3da8fc.connect(RA.context.destination), _0x59aa33.isEdge || 'chrome' === _0xa88a13.name && parseInt(_0xa88a13.version, 0xa) <= 0x3c || 'firefox' === _0xa88a13.name && parseInt(_0xa88a13.version, 0xa) <= 0x38 || 'opera' === _0xa88a13.name && parseInt(_0xa88a13.version, 0xa) <= 0x2c ? _0x3da8fc.gain.value = _0x2c1832 : 'firefox' === _0xa88a13.name ? _0x3da8fc.gain.setValueAtTime(_0x2c1832, RA.context.currentTime) : _0x3da8fc.gain.setValueAtTime(_0x2c1832, RA.context.currentTime, 0x0); } - _0x4e7320.start(_0x3d9f57), RA.bufIndex += 0x1, RA.bufOffset = 0x0; - }, _0x59aa33.isIos && window.addEventListener('touchstart', function() { - if (RA.context) { - RA.context.resume(); - var _0xa88a13 = RA.context.createBufferSource(); - _0xa88a13.connect(RA.context.destination), _0xa88a13.start(); - } - }, !0x1)) : _0xdcec2a.setVolume(); - }, 0x1f4), setTimeout(function() { - _0xc6823.elements.container.focus(); - }, 0x1e), void 0x0 === window.addRunDependency && (window.Module = void 0x0); - var _0x36b9cc = _0x4d7024.FS.readFile(_0xc6823.startName); - if (_0x36b9cc.length <= 0x2000000 && '.cue' != _0xc6823.startName.substr(-0x4)) { - var _0x4fa964; - if ('snes' === _0xc6823.system || ['snes2002', 'snes2005', 'snes2010'].includes(_0xc6823.system)) { - var _0x4b2f70 = _0x36b9cc.length % 0x400; - _0x4fa964 = new _0x863031(_0x4b2f70 ? _0x36b9cc.slice ? _0x36b9cc.slice(_0x4b2f70) : _0x36b9cc.subarray(_0x4b2f70) : _0x36b9cc); - } else _0x4fa964 = new _0x863031(_0x36b9cc); - var _0x21e040 = _0x5a641d.a.create(), - _0x2b8478 = new FileReader(), - _0x15068c = 0x0, - _0x1646ca = _0x4fa964._u8array.length, - _0x4c84da = function() { - if (_0x15068c < _0x1646ca) { - var _0xa88a13 = Math.min(_0x15068c + 0x200000, _0x1646ca); - _0x2b8478.readAsArrayBuffer(new Blob([_0x4fa964._u8array.slice(_0x15068c, _0xa88a13)])), _0x15068c = _0xa88a13; - } else console.log(_0x21e040.hex()), _0xc6823.hash = _0x21e040.hex(), 'function' == typeof window.ejsromshash && window.ejsromshash(_0xc6823.hash); }; - _0x2b8478.onload = function(_0x26a751) { - try { - _0x21e040.update(_0x26a751.target.result), _0x4c84da(); - } catch (_0x5c9e53) { - console.log(_0x5c9e53); + _0x3d9f57.elements.container.addEventListener('touchstart', _0x2c1832, !0x1), _0x3d9f57.elements.container.addEventListener('touchend', _0x2c1832, !0x1); + } else { + let _0x518e5a = function(_0x45d640) { + let _0x3d9f57 = new MouseEvent(_0x45d640.type, _0x45d640); + _0x4d7024.Module.canvas.dispatchEvent(_0x3d9f57); + }; + _0x530042.call(_this, '.' .concat(_0x449eac({ + 'ejs__dialogs': true + }))).addEventListener('mousemove', _0x518e5a, !0x1), _0x530042.call(_this, '.' .concat(_0x449eac({ + 'ejs__dialogs': true + }))).addEventListener('mousedown', _0x518e5a, !0x1), _0x530042.call(_this, '.' .concat(_0x449eac({ + 'ejs__dialogs': true + }))).addEventListener('mouseup', _0x518e5a, !0x1); + } + })(); + 'msx' === _0xc6823.system && function(_0x3c016a) { + if ('undefined' != typeof RI) { + document.removeEventListener('keydown', RI.eventHandler, !0x1), document.removeEventListener('keyup', RI.eventHandler, !0x1); + let _0x3d9f57 = function(_0x97e67b) { + let _0x3d9f57 = _0x97e67b.keyCode, + _0x2c1832 = _0x3d9f57 >> 0x3, + _0x3340c0 = 0x1 << (0x7 & _0x3d9f57); + switch (_0x97e67b.type) { + case 'keyup': + case 'keydown': + if (_0x2c1832 >= 0x20) throw 'key code error! bad code: ' + _0x3d9f57; + for (let _0x126f58 = 0x0; _0x126f58 < RI.contexts.length; _0x126f58++) { + let _0x4ca77a = HEAP8[RI.contexts[_0x126f58].state + _0x2c1832 >> 0x0]; + 'keyup' === _0x97e67b.type ? _0x4ca77a &= ~_0x3340c0 : _0x4ca77a |= _0x3340c0, HEAP8[RI.contexts[_0x126f58].state + _0x2c1832 >> 0x0] = _0x4ca77a; + } + } + }; + document.addEventListener('keydown', _0x3d9f57, !0x1), document.addEventListener('keyup', _0x3d9f57, !0x1); + } + }(); + setTimeout(function() { + let _0xa88a13; + _0xa88a13 = _0x59aa33.info(), null === _0xdcec2a.setVolume && 'undefined' != typeof RA ? (RA.queueAudio = function() { + let _0x3d9f57, _0x2c1832 = _0xc6823.volume, + _0x2cbc4 = RA.bufIndex; + _0x3d9f57 = RA.bufIndex ? RA.buffers[RA.bufIndex - 0x1].endTime : RA.context.currentTime, RA.buffers[_0x2cbc4].endTime = _0x3d9f57 + RA.buffers[_0x2cbc4].duration; + let _0x4e7320 = RA.context.createBufferSource(); + if (_0x4e7320.buffer = RA.buffers[_0x2cbc4], _0xc6823.muted && (_0x2c1832 = 0x0), 0x1 === _0x2c1832) _0x4e7320.connect(RA.context.destination); + else { + let _0x3da8fc = RA.context.createGain(); + _0x4e7320.connect(_0x3da8fc), _0x3da8fc.connect(RA.context.destination), _0x59aa33.isEdge || 'chrome' === _0xa88a13.name && parseInt(_0xa88a13.version, 0xa) <= 0x3c || 'firefox' === _0xa88a13.name && parseInt(_0xa88a13.version, 0xa) <= 0x38 || 'opera' === _0xa88a13.name && parseInt(_0xa88a13.version, 0xa) <= 0x2c ? _0x3da8fc.gain.value = _0x2c1832 : 'firefox' === _0xa88a13.name ? _0x3da8fc.gain.setValueAtTime(_0x2c1832, RA.context.currentTime) : _0x3da8fc.gain.setValueAtTime(_0x2c1832, RA.context.currentTime, 0x0); } - }, _0x4c84da(); - } + _0x4e7320.start(_0x3d9f57), RA.bufIndex += 0x1, RA.bufOffset = 0x0; + }, _0x59aa33.isIos && window.addEventListener('touchstart', function() { + if (RA.context) { + RA.context.resume(); + let _0xa88a13 = RA.context.createBufferSource(); + _0xa88a13.connect(RA.context.destination), _0xa88a13.start(); + } + }, !0x1)) : _0xdcec2a.setVolume(); + }, 0x1f4); + setTimeout(function() { + _0xc6823.elements.container.focus(); + }, 0x1e); + void 0x0 === window.addRunDependency && (window.Module = void 0x0); }) if (typeof _0xc6823.adUrl === 'string') { _0x1093f4.call(_0xc6823, _0x4d7024.loading.querySelector('.' .concat(_0x4fce24['close-ad'])), 'click', function(_0x96b13f) { _0x96b13f instanceof MouseEvent && _0xc6823.started && _0x4d7024.loading.querySelector('.' .concat(_0x4fce24.ad)) && _0x4d7024.loading.querySelector('.' .concat(_0x4fce24.ad)).parentNode.removeChild(_0x4d7024.loading.querySelector('.' .concat(_0x4fce24.ad))), _0xc6823.elements.container.focus(); }); } - var _0xa88a13 = this; - var _0x16cf3e = function() { + let _0x16cf3e = function() { _0x4e171c.db && _0x4e171c.getAll(function(_0x1a4eaf) { Array.isArray(_0x1a4eaf) && _0x1a4eaf.length > 0xa && _0x1a4eaf.sort(function(_0x155e15, _0x4a9e7f) { return (_0x4a9e7f.lastaccess ? _0x4a9e7f.lastaccess : 0x0) - (_0x155e15.lastaccess ? _0x155e15.lastaccess : 0x0); @@ -1375,14 +1357,21 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }, _0x5f3757 = function(_0x2bd107) { if (_0x4d7024.gamePatch) { - var _0x17edbf = _0x2bd107.startName.split('/'), + let startName = _0x4d7024.getStartName(true); + let _0x17edbf = startName.split('/'), _0x2c1832 = _0x17edbf.pop().split('.').pop(), _0x11dc72 = (_0x4d7024.gamePatch.split('.').pop(), _0x4d7024.gamePatch.split('/').pop().split('.').shift()), _0x453ec0 = '' .concat(_0x17edbf.join('/'), '/').concat(_0x11dc72, '.').concat(_0x2c1832); _0x453ec0 = _0x453ec0.replace(/\#/g, ''); - var _0x5438db = _0x4d7024.gamePatch; - if (_0x4d7024.FS.rename(_0x2bd107.startName, _0x453ec0), _0x2bd107.startName = _0x453ec0, 'snes' === _0x2bd107.system || ['snes2002', 'snes2005', 'snes2010'].includes(_0x2bd107.system)) { - var _0x4758bc, _0x4b4000, _0x4aa31e, _0x2d9175 = new _0x863031(_0x4d7024.FS.readFile(_0x2bd107.startName)), + if (_0x4d7024.gamePatch.startsWith('blob:')) { + _0x453ec0 = startName; + } + let _0x5438db = _0x4d7024.gamePatch; + _0x4d7024.FS.rename(startName, _0x453ec0); + _0x2bd107.startName = _0x453ec0; + startName = _0x4d7024.getStartName(true); + if ('snes' === _0x2bd107.system || ['snes2002', 'snes2005', 'snes2010'].includes(_0x2bd107.system)) { + let _0x4758bc, _0x4b4000, _0x4aa31e, _0x2d9175 = new _0x863031(_0x4d7024.FS.readFile(startName)), _0x567355 = _0x2d78e9(_0x2d9175), _0x3d2ad0 = new _0x863031(_0x4d7024.FS.readFile(_0x5438db)), _0x4a229b = _0x3d2ad0.readString(0x6), @@ -1390,27 +1379,27 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x4a229b.startsWith('PATCH') ? (_0x4758bc = _0x288092(_0x3d2ad0), 0x0 === _0x20786d && 'B19ED489' === _0x567355.toString(0x10).toUpperCase() && ((_0x4b4000 = new Uint8Array(_0x2d9175._u8array.length + 0x200)).set(new Uint8Array(0x200), 0x0), _0x4b4000.set(_0x2d9175._u8array, 0x200), _0x2d9175 = new _0x863031(_0x4b4000))) : _0x4a229b.startsWith(_0x7a6485) ? _0x4758bc = _0xd2202f(_0x3d2ad0) : _0x4a229b.startsWith('BPS1') && (_0x4758bc = _0x356089(_0x3d2ad0), _0x20786d > 0x0 && 'A31BEAD4' === _0x567355.toString(0x10).toUpperCase() && (_0x4b4000 = _0x2d9175._u8array.slice ? _0x2d9175._u8array.slice(_0x20786d) : _0x2d9175._u8array.subarray(_0x20786d), _0x2d9175 = new _0x863031(_0x4b4000))); try { if (_0x4aa31e = _0x4758bc.apply(_0x2d9175, !0x1)) { - var _0x1ffde3 = _0x4aa31e._u8array.length % 0x400; - _0x1ffde3 > 0x0 && (_0x4b4000 = _0x4aa31e._u8array.slice ? _0x4aa31e._u8array.slice(_0x1ffde3) : _0x4aa31e._u8array.subarray(_0x1ffde3), _0x4aa31e = new _0x863031(_0x4b4000)), _0x4d7024.FS.unlink(_0x5438db), _0x4d7024.FS.unlink(_0x2bd107.startName), _0x4d7024.FS.writeFile(_0x2bd107.startName, _0x4aa31e._u8array); + let _0x1ffde3 = _0x4aa31e._u8array.length % 0x400; + _0x1ffde3 > 0x0 && (_0x4b4000 = _0x4aa31e._u8array.slice ? _0x4aa31e._u8array.slice(_0x1ffde3) : _0x4aa31e._u8array.subarray(_0x1ffde3), _0x4aa31e = new _0x863031(_0x4b4000)), _0x4d7024.FS.unlink(_0x5438db), _0x4d7024.FS.unlink(startName), _0x4d7024.FS.writeFile(startName, _0x4aa31e._u8array); } } catch (_0x2ef20f) {} } else { - var _0x4108d8, _0x5e086b, _0x454a20 = new _0x863031(_0x4d7024.FS.readFile(_0x2bd107.startName)), + let _0x4108d8, _0x5e086b, _0x454a20 = new _0x863031(_0x4d7024.FS.readFile(startName)), _0x4991ea = new _0x863031(_0x4d7024.FS.readFile(_0x5438db)), _0x130f1f = _0x4991ea.readString(0x6); _0x130f1f.startsWith('PATCH') ? _0x4108d8 = _0x288092(_0x4991ea) : _0x130f1f.startsWith(_0x7a6485) ? _0x4108d8 = _0xd2202f(_0x4991ea) : _0x130f1f.startsWith('BPS1') && (_0x4108d8 = _0x356089(_0x4991ea)); try { - (_0x5e086b = _0x4108d8.apply(_0x454a20, !0x1)) && (_0x4d7024.FS.unlink(_0x5438db), _0x4d7024.FS.unlink(_0x2bd107.startName), _0x4d7024.FS.writeFile(_0x2bd107.startName, _0x5e086b._u8array)); + (_0x5e086b = _0x4108d8.apply(_0x454a20, !0x1)) && (_0x4d7024.FS.unlink(_0x5438db), _0x4d7024.FS.unlink(startName), _0x4d7024.FS.writeFile(startName, _0x5e086b._u8array)); } catch (_0x3ed519) {} } } }, _0x4bd781 = function() { - var key = (_0xa88a13.coreVer===2)?"INITIAL_MEMORY":"TOTAL_MEMORY" - _0x31a5b3 ? (window.Module[key] = 0x10000000, ['jaguar'].includes(_0xa88a13.system) && (window.Module[key] = 0x10000000), ['nds', 'nes', 'snes', 'arcade', 'mame'].includes(_0xa88a13.system) && (window.Module[key] = 0x0), ['snes2002', 'snes2005', 'snes2010'].includes(_0xa88a13.system) && (window.Module[key] = 0x0), 'gba' == _0xa88a13.system && (window.Module[key] = 0x0), '3do' == _0xa88a13.system && (window.Module[key] = 0x0), 'n64' == _0xa88a13.system && (window.Module[key] = 0x0)) : ('nes' === _0xa88a13.system && (window.Module[key] = 0x8000000), window.Module[key] = _0x468801 + 0x4000000, ['arcade', 'mame', 'mame2003', 'fba0.2.97.29'].includes(_0xa88a13.system) && (window.Module[key] = _0x468801 + 0x10000000, _0x4d7024.isMobileDevice && (window.Module[key] = 0x12c00000)), ['n64', 'nds', 'jaguar'].includes(_0xa88a13.system) && (window.Module[key] = _0x468801 + 0x10000000, _0x4d7024.isMobileDevice && (window.Module[key] = 0x12c00000)), 'gba' == _0xa88a13.system && (window.Module[key] = 0x10000000)), 'undefined' != typeof EJS_MEMORY && (window.Module[key] = EJS_MEMORY); + let key = (_this.coreVer===2)?"INITIAL_MEMORY":"TOTAL_MEMORY" + _0x31a5b3 ? (window.Module[key] = 0x10000000, ['jaguar'].includes(_this.system) && (window.Module[key] = 0x10000000), ['nds', 'nes', 'snes', 'arcade', 'mame'].includes(_this.system) && (window.Module[key] = 0x0), ['snes2002', 'snes2005', 'snes2010'].includes(_this.system) && (window.Module[key] = 0x0), 'gba' == _this.system && (window.Module[key] = 0x0), '3do' == _this.system && (window.Module[key] = 0x0), 'n64' == _this.system && (window.Module[key] = 0x0)) : ('nes' === _this.system && (window.Module[key] = 0x8000000), window.Module[key] = _0x468801 + 0x4000000, ['arcade', 'mame', 'mame2003', 'fba0.2.97.29'].includes(_this.system) && (window.Module[key] = _0x468801 + 0x10000000, _0x4d7024.isMobileDevice && (window.Module[key] = 0x12c00000)), ['n64', 'nds', 'jaguar'].includes(_this.system) && (window.Module[key] = _0x468801 + 0x10000000, _0x4d7024.isMobileDevice && (window.Module[key] = 0x12c00000)), 'gba' == _this.system && (window.Module[key] = 0x10000000)), 'undefined' != typeof EJS_MEMORY && (window.Module[key] = EJS_MEMORY); }, _0x3512e9 = function(_0x1bc287, _0x1844e3) { - var _0x55627a = _0xa88a13, + let _0x55627a = _this, _0x1cfda7 = _0x4d7024.loading.querySelector('.' .concat(_0x4fce24.p3)), _0x429d6b = (_0x1bc287.split('.').pop(), _0x29078e[_0x1143c5]), _0xb0c5d8 = -1, @@ -1420,7 +1409,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x55627a.elements.settings.panels.home.querySelector('[role="menu"]').innerHTML = ""; _0x7f9f36.setNormalOptionsMenu.call(_0x55627a); _0x7f9f36.setCoreOptionsMenu.call(_0x55627a); - var mainLoop = _0x4d7024.Module.cwrap('toggleMainLoop', 'null', ['number']); + let mainLoop = _0x4d7024.Module.cwrap('toggleMainLoop', 'null', ['number']); _0x4d7024.Module.resumeMainLoop = function() { mainLoop(1); } @@ -1431,7 +1420,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { if (typeof _0x55627a.loadStateOnStart == 'string') { fetch(_0x55627a.loadStateOnStart).then(function(response) { response.arrayBuffer().then(function(ab) { - var a = new Uint8Array(ab); + let a = new Uint8Array(ab); EJS_loadState(a); }) }) @@ -1440,32 +1429,32 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { window.EJS_terminate = function() { _0x4d7024.Module.pauseMainLoop(); if (_0x55627a && _0x55627a.eventListeners) { - for (var k in _0x55627a) { - for (var i=0; i<_0x55627a.eventListeners.length; i++) { - var a = _0x55627a.eventListeners[i]; + for (let k in _0x55627a) { + for (let i=0; i<_0x55627a.eventListeners.length; i++) { + let a = _0x55627a.eventListeners[i]; a.element.removeEventListener(a.type, a.callback, a.capture); } } } if (window.EJS_RESET_VARS) { - var a = []; - var b = []; - for (var k in window) { + let a = []; + let b = []; + for (let k in window) { a.push(k); } - for (var i=0; i20) clearInterval(j); i++; _0x4d7024.Module.setCanvasSize(800, 600); @@ -1497,7 +1486,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x1cfda7.innerHTML = 'Doesn\'t look like your browser is supported'; } } - var _0x99321 = function(_0x52e6f3) { + let _0x99321 = function(_0x52e6f3) { if (_0x52e6f3.data) { if (1 === _0x52e6f3.data.t) { !_0x55627a.startName && _0x567713 && (_0x55627a.startName = _0x567713); @@ -1505,25 +1494,25 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { start(_0x55627a.startName); } if (2 === _0x52e6f3.data.t) { - var _0x25aae3 = _0x52e6f3.data.file.split('/'), + let _0x25aae3 = _0x52e6f3.data.file.split('/'), _0x1bc287 = _0x25aae3.pop(), _0x1844e3 = _0x1bc287.split('.').pop(); _0x1bc287 = _0x1bc287.replace(/\#/g, ''), _0x4d7024.FS.createPath('/', _0x25aae3.join('/'), true, true); - for (var _0x36bace = _0x1e0766[_0x429d6b].length - 0x1; _0x36bace >= 0x0; _0x36bace -= 0x1) _0x1e0766[_0x429d6b][_0x36bace] === _0x1844e3.toLowerCase() && _0x36bace > _0xb0c5d8 && (_0xb0c5d8 = _0x36bace, _0x55627a.startName = ['', _0x25aae3.join('/'), _0x1bc287].join('/'), _0x55627a.startName = _0x55627a.startName.replace(/\/+/, '/')); + for (let _0x36bace = _0x1e0766[_0x429d6b].length - 0x1; _0x36bace >= 0x0; _0x36bace -= 0x1) _0x1e0766[_0x429d6b][_0x36bace] === _0x1844e3.toLowerCase() && _0x36bace > _0xb0c5d8 && (_0xb0c5d8 = _0x36bace, _0x55627a.startName = ['', _0x25aae3.join('/'), _0x1bc287].join('/'), _0x55627a.startName = _0x55627a.startName.replace(/\/+/, '/')); _0x1bc287 && (_0x4d7024.FS.createDataFile('/' .concat(_0x25aae3.join('/')), _0x1bc287, _0x52e6f3.data.data, true, !0x1), _0x468801 += _0x52e6f3.data.data.length), _0x567713 = '/' .concat(_0x25aae3.join('/'), '/').concat(_0x1bc287); } if (4 === _0x52e6f3.data.t && _0x52e6f3.data.total > 0) { - var _0x163fc4 = Math.floor(_0x52e6f3.data.current / _0x52e6f3.data.total * 100), + let _0x163fc4 = Math.floor(_0x52e6f3.data.current / _0x52e6f3.data.total * 100), _0x5448a3 = _0x52e6f3.data.name || ''; if (_0x163fc4 <= 100 && _0x163fc4 > 0) { - _0x1cfda7.innerHTML = _0xa88a13.localization('Decompress Game Data')+_0x5448a3+' '+_0x163fc4+'%'; + _0x1cfda7.innerHTML = _this.localization('Decompress Game Data')+_0x5448a3+' '+_0x163fc4+'%'; } } } }, _0x1e67c4 = false; if (!['arcade', 'mame', 'mame2003', 'fba0.2.97.29'].includes(_0x55627a.system)) { - var _0x20a78c = _0x1844e3.slice ? _0x1844e3.slice(0, 10) : _0x1844e3.subarray(0, 10), + let _0x20a78c = _0x1844e3.slice ? _0x1844e3.slice(0, 10) : _0x1844e3.subarray(0, 10), _0x1761cf = isCompressed(_0x20a78c); if (_0x1761cf === "7z") { extractFile(_0x17edbf).then(function(_0xea623e) { @@ -1546,29 +1535,31 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } } if (!_0x1e67c4) { - var _0x1c661d = _0x1bc287.replace(/\#/g, ''); + _0x55627a.startName = _0x55627a.getStartName(); + if (!_0x55627a.startName) { + _0x55627a.startName = 'rom'; + } try { _0x468801 += _0x1844e3.length; - _0x4d7024.FS.createDataFile('/', _0x1c661d, _0x1844e3, true, false); + _0x4d7024.FS.createDataFile('/', _0x55627a.startName, _0x1844e3, true, false); } catch (_0x210043) { console.log(_0x210043); } - _0x55627a.startName = _0x1c661d; start(_0x55627a.startName); } }, _0x5048db = function() { - var _0x17edbf = _0xa88a13, + let _0x17edbf = _this, _0x2c1832 = _0x4d7024.loading.querySelector('.' .concat(_0x4fce24.p3)), - _0x50eb85 = _0xa88a13.config, + _0x50eb85 = _this.config, _0x3cf3cf = _0x50eb85.gameUrl, _0x594488 = _0x50eb85.system; 'vbanext' == _0x594488 && (_0x594488 = 'gba'); - var _0x154dc5 = (typeof _0x3cf3cf == 'string') ? _0x3cf3cf.split('/') : "ga.me", + let _0x154dc5 = (typeof _0x3cf3cf == 'string') ? _0x3cf3cf.split('/') : "ga.me", _0x139f1c = _0x154dc5[_0x154dc5.length - 0x1]; _0x139f1c.indexOf('?') > -0x1 && (_0x139f1c = _0x139f1c.substr(0x0, _0x139f1c.indexOf('?'))); _0x139f1c.split('.').pop(); - _0x2c1832.innerHTML = _0xa88a13.localization('Download Game Data'); + _0x2c1832.innerHTML = _this.localization('Download Game Data'); if (['arcade', 'mame', 'mame2003', 'fba0.2.97.29'].includes(_0x17edbf.system) && _0x17edbf.config.gameParentUrl) { _0x2c1832.innerHTML += ' (2/2)'; } @@ -1588,26 +1579,26 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { return; } _0x550f17.a.head(_0x3cf3cf, {}).then(function(_0x3d703e) { - var _0x21b526 = _0x3d703e.headers['content-length'], + let _0x21b526 = _0x3d703e.headers['content-length'], _0x7e8d4c = _0x3d703e.headers['content-type'], _0x107e8a = (_0x3d703e.headers['last-modified'], '' .concat(_0x594488, '-').concat(_0x139f1c)), _0x43a689 = function() { _0x550f17.a.get(_0x3cf3cf, { 'onDownloadProgress': function(_0x4e7133) { - var _0x13b999 = _0x4e7133.total ? '' .concat(Math.floor(_0x4e7133.loaded / _0x4e7133.total * 0x64), '%') : ''; - ['arcade', 'mame', 'mame2003', 'fba0.2.97.29'].includes(_0x17edbf.system) && _0x17edbf.config.gameParentUrl ? _0x2c1832.innerHTML = _0xa88a13.localization('Download Game Data')+' (2/2) ' .concat(_0x13b999) : _0x17edbf.config.gamePatchUrl ? _0x2c1832.innerHTML = _0xa88a13.localization('Download Game Data')+' (2/2) ' .concat(_0x13b999) : _0x2c1832.innerHTML = _0xa88a13.localization('Download Game Data')+' ' .concat(_0x13b999); + let _0x13b999 = _0x4e7133.total ? '' .concat(Math.floor(_0x4e7133.loaded / _0x4e7133.total * 0x64), '%') : ''; + ['arcade', 'mame', 'mame2003', 'fba0.2.97.29'].includes(_0x17edbf.system) && _0x17edbf.config.gameParentUrl ? _0x2c1832.innerHTML = _this.localization('Download Game Data')+' (2/2) ' .concat(_0x13b999) : _0x17edbf.config.gamePatchUrl ? _0x2c1832.innerHTML = _this.localization('Download Game Data')+' (2/2) ' .concat(_0x13b999) : _0x2c1832.innerHTML = _this.localization('Download Game Data')+' ' .concat(_0x13b999); }, 'responseType': 'arraybuffer' }).then(function(_0x22a1f4) { - var _0x17edbf = new Uint8Array(_0x22a1f4.data); - if (typeof _0xa88a13.config.gameUrl != 'string' || (typeof _0xa88a13.config.gameUrl == 'string' && (_0xa88a13.config.gameUrl.startsWith('blob:') || _0xa88a13.config.gameUrl.startsWith('file:') || _0xa88a13.config.gameUrl.startsWith('chrome-extension:') || ((window.location.protocol == 'file:' || window.location.protocol == 'chrome-extension:') && _0xa88a13.config.gameUrl.split(':').length === 1)))) { + let _0x17edbf = new Uint8Array(_0x22a1f4.data); + if (typeof _this.config.gameUrl != 'string' || (typeof _this.config.gameUrl == 'string' && (_this.config.gameUrl.startsWith('blob:') || _this.config.gameUrl.startsWith('file:') || _this.config.gameUrl.startsWith('chrome-extension:') || ((window.location.protocol == 'file:' || window.location.protocol == 'chrome-extension:') && _this.config.gameUrl.split(':').length === 1)))) { _0x3512e9(_0x139f1c, _0x17edbf); return; }; if (_0x107e8a && _0x4e171c.db) if (_0x17edbf.length > 0x6400000) - for (var _0x2c1832 = Math.ceil(_0x17edbf.length / 0x6400000), _0x257c4d = 0x0; _0x257c4d < _0x2c1832; _0x257c4d += 0x1) { - var _0x47d2ae = _0x17edbf.slice ? _0x17edbf.slice(0x6400000 * _0x257c4d, 0x6400000 * (_0x257c4d + 0x1)) : _0x17edbf.subarray(0x6400000 * _0x257c4d, 0x6400000 * (_0x257c4d + 0x1)), + for (let _0x2c1832 = Math.ceil(_0x17edbf.length / 0x6400000), _0x257c4d = 0x0; _0x257c4d < _0x2c1832; _0x257c4d += 0x1) { + let _0x47d2ae = _0x17edbf.slice ? _0x17edbf.slice(0x6400000 * _0x257c4d, 0x6400000 * (_0x257c4d + 0x1)) : _0x17edbf.subarray(0x6400000 * _0x257c4d, 0x6400000 * (_0x257c4d + 0x1)), _0x6ce9f3 = '' .concat(_0x107e8a); _0x257c4d > 0x0 && (_0x6ce9f3 = '' .concat(_0x107e8a, '-part-').concat(_0x257c4d)), _0x4d7024.saveFilenames.push(_0x6ce9f3), _0x4e171c.put(_0x6ce9f3, { 'filename': _0x139f1c, @@ -1638,7 +1629,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }); _0x3512e9(_0x139f1c, _0x17edbf); }).catch(function(_0x2e4d62) { - renderErrorPage(_0x2e4d62, _0x2c1832, _0xa88a13); + renderErrorPage(_0x2e4d62, _0x2c1832, _this); }); }; _0x1ffb98.db ? _0x1ffb98.get(_0x107e8a, function(_0x5afc4a) { @@ -1646,9 +1637,9 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { if (_0x4e171c.get(_0x107e8a, function(_0x2585bd) { _0x2585bd.lastaccess = new Date().valueOf(), _0x4e171c.put(_0x2585bd.key, _0x2585bd); }), _0x5afc4a.filesize > 0x6400000) { - var _0x17edbf = new Uint8Array(_0x5afc4a.filesize); + let _0x17edbf = new Uint8Array(_0x5afc4a.filesize); _0x17edbf.set(_0x5afc4a.data); - for (var _0x2c1832 = Math.ceil(_0x5afc4a.filesize / 0x6400000), _0x36180f = [], _0x3c1e3a = 0x1; _0x3c1e3a < _0x2c1832; _0x3c1e3a += 0x1) _0x36180f.push('' .concat(_0x107e8a, '-part-').concat(_0x3c1e3a)), _0x4e171c.get('' .concat(_0x107e8a, '-part-').concat(_0x3c1e3a), function(_0x4f1393) { + for (let _0x2c1832 = Math.ceil(_0x5afc4a.filesize / 0x6400000), _0x36180f = [], _0x3c1e3a = 0x1; _0x3c1e3a < _0x2c1832; _0x3c1e3a += 0x1) _0x36180f.push('' .concat(_0x107e8a, '-part-').concat(_0x3c1e3a)), _0x4e171c.get('' .concat(_0x107e8a, '-part-').concat(_0x3c1e3a), function(_0x4f1393) { _0x4f1393.lastaccess = new Date().valueOf(), _0x4e171c.put(_0x4f1393.key, _0x4f1393); }); _0x1ffb98.getBatch(_0x36180f, function(_0x47ffae) { @@ -1662,41 +1653,41 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { else _0x43a689(); }) : _0x43a689(); }).catch(function(_0x5ec6be) { - renderErrorPage(_0x5ec6be, _0x2c1832, _0xa88a13); + renderErrorPage(_0x5ec6be, _0x2c1832, _this); }); }, _0x139f68 = function() { - var _0x2591d9 = _0x4d7024.loading.querySelector('.' .concat(_0x4fce24.p3)), - _0x5c896f = _0xa88a13.config.gamePatchUrl; + let _0x2591d9 = _0x4d7024.loading.querySelector('.' .concat(_0x4fce24.p3)), + _0x5c896f = _this.config.gamePatchUrl; if (_0x5c896f) { - var _0x227b23 = _0x5c896f.split('/'), + let _0x227b23 = _0x5c896f.split('/'), _0x179b43 = _0x227b23[_0x227b23.length - 0x1]; _0x179b43.indexOf('?') > -0x1 && (_0x179b43 = _0x179b43.substr(0x0, _0x179b43.indexOf('?'))); _0x179b43.split('.').pop(); - _0x2591d9.innerHTML = _0xa88a13.localization('Download Game Data')+' (1/2)'; + _0x2591d9.innerHTML = _this.localization('Download Game Data')+' (1/2)'; _0x550f17.a.get(_0x5c896f, { 'onDownloadProgress': function(_0x3da9ab) { - _0x2591d9.innerHTML = _0xa88a13.localization('Download Game Data')+' (1/2) '; - var _0x17edbf = _0x3da9ab.total ? '' .concat(Math.floor(_0x3da9ab.loaded / _0x3da9ab.total * 0x64), '%') : ''; + _0x2591d9.innerHTML = _this.localization('Download Game Data')+' (1/2) '; + let _0x17edbf = _0x3da9ab.total ? '' .concat(Math.floor(_0x3da9ab.loaded / _0x3da9ab.total * 0x64), '%') : ''; _0x2591d9.innerHTML += _0x17edbf; }, 'responseType': 'arraybuffer' }).then(function(_0x159ae9) { - var _0x1097ca = new Uint8Array(_0x159ae9.data), + let _0x1097ca = new Uint8Array(_0x159ae9.data), _0xe531f0 = _0x179b43.split('.').pop(), _0xf6806b = _0x4d7024.loading.querySelector('.' .concat(_0x4fce24.p3)), _0x59c7c1 = function(_0x36004e) { if (_0x36004e.data) { if (0x1 === _0x36004e.data.t && (_0x36004e.target.terminate(), _0x5048db()), 0x2 === _0x36004e.data.t) { - var _0x17edbf = _0x36004e.data.file.split('/'), + let _0x17edbf = _0x36004e.data.file.split('/'), _0x2c1832 = _0x17edbf.pop(), _0x2b320e = _0x2c1832.split('.').pop(); _0x4d7024.FS.createPath('/', _0x17edbf.join('/'), true, true), _0x4d7024.FS.createDataFile('/' + _0x17edbf.join('/'), _0x2c1832, _0x36004e.data.data, true, !0x1), _0x468801 += _0x36004e.data.data.length, ['ips', 'bps', 'ups'].includes(_0x2b320e) && !_0x4d7024.gamePatch && (_0x4d7024.gamePatch = '/' + _0x17edbf.join('/') + '/' + _0x2c1832); } if (0x4 === _0x36004e.data.t && _0x36004e.data.total > 0x0) { - var _0x1097ca = Math.floor(_0x36004e.data.current / _0x36004e.data.total * 0x64), + let _0x1097ca = Math.floor(_0x36004e.data.current / _0x36004e.data.total * 0x64), _0x95ac83 = _0x36004e.data.name || ''; - _0x1097ca <= 0x64 && _0x1097ca > 0x0 && (_0xf6806b.innerHTML = _0xa88a13.localization('Decompress Game Patch')+' ' .concat(_0x95ac83, ' ').concat(_0x1097ca, '%')); + _0x1097ca <= 0x64 && _0x1097ca > 0x0 && (_0xf6806b.innerHTML = _this.localization('Decompress Game Patch')+' ' .concat(_0x95ac83, ' ').concat(_0x1097ca, '%')); } } }, @@ -1724,36 +1715,36 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x5048db(); } }).catch(function(_0x314293) { - renderErrorPage(_0x314293, _0x2c1832, _0xa88a13); + renderErrorPage(_0x314293, _0x2c1832, _this); }); } else _0x5048db(); }, _0x452592 = function() { - var _0x17edbf = _0xa88a13, + let _0x17edbf = _this, _0x2c1832 = _0x4d7024.loading.querySelector('.' .concat(_0x4fce24.p3)), - _0x5a21f7 = _0xa88a13.config.gameParentUrl; + _0x5a21f7 = _this.config.gameParentUrl; if (_0x5a21f7 && ['arcade', 'mame', 'mame2003', 'fba0.2.97.29'].includes(_0x17edbf.system)) { - var _0x71bb4d = _0x5a21f7.split('/'), + let _0x71bb4d = _0x5a21f7.split('/'), _0xa1889f = _0x71bb4d[_0x71bb4d.length - 0x1]; _0xa1889f.indexOf('?') > -0x1 && (_0xa1889f = _0xa1889f.substr(0x0, _0xa1889f.indexOf('?'))); _0xa1889f.split('.').pop(); - _0x2c1832.innerHTML = _0xa88a13.localization('Download Game Data')+' (1/2)', _0x17edbf.config.gamePatchUrl && (_0x2c1832.innerHTML = _0xa88a13.localization('Download Game Data')+' (1/3)'), _0x550f17.a.head(_0x5a21f7, {}).then(function(_0x35c23a) { - var _0x17edbf = _0x35c23a.headers['content-length'], + _0x2c1832.innerHTML = _this.localization('Download Game Data')+' (1/2)', _0x17edbf.config.gamePatchUrl && (_0x2c1832.innerHTML = _this.localization('Download Game Data')+' (1/3)'), _0x550f17.a.head(_0x5a21f7, {}).then(function(_0x35c23a) { + let _0x17edbf = _0x35c23a.headers['content-length'], _0x500ba1 = _0x35c23a.headers['content-type'], _0x316472 = (_0x35c23a.headers['last-modified'], '' .concat(_0x1143c5, '-').concat(_0xa1889f)), _0x31f098 = function() { _0x550f17.a.get(_0x5a21f7, { 'onDownloadProgress': function(_0x5e449f) { - var _0x17edbf = _0x5e449f.total ? '' .concat(Math.floor(_0x5e449f.loaded / _0x5e449f.total * 0x64), '%') : ''; - _0x2c1832.innerHTML = _0xa88a13.localization('Download Game Data')+' (1/2) ' .concat(_0x17edbf); + let _0x17edbf = _0x5e449f.total ? '' .concat(Math.floor(_0x5e449f.loaded / _0x5e449f.total * 0x64), '%') : ''; + _0x2c1832.innerHTML = _this.localization('Download Game Data')+' (1/2) ' .concat(_0x17edbf); }, 'responseType': 'arraybuffer' }).then(function(_0x191007) { - var _0x17edbf = new Uint8Array(_0x191007.data); + let _0x17edbf = new Uint8Array(_0x191007.data); if (_0x316472 && _0x4e171c.db) if (_0x17edbf.length > 0x6400000) - for (var _0x2c1832 = Math.ceil(_0x17edbf.length / 0x6400000), _0x3f44d7 = 0x0; _0x3f44d7 < _0x2c1832; _0x3f44d7 += 0x1) { - var _0x15a529 = _0x17edbf.slice ? _0x17edbf.slice(0x6400000 * _0x3f44d7, 0x6400000 * (_0x3f44d7 + 0x1)) : _0x17edbf.subarray(0x6400000 * _0x3f44d7, 0x6400000 * (_0x3f44d7 + 0x1)), + for (let _0x2c1832 = Math.ceil(_0x17edbf.length / 0x6400000), _0x3f44d7 = 0x0; _0x3f44d7 < _0x2c1832; _0x3f44d7 += 0x1) { + let _0x15a529 = _0x17edbf.slice ? _0x17edbf.slice(0x6400000 * _0x3f44d7, 0x6400000 * (_0x3f44d7 + 0x1)) : _0x17edbf.subarray(0x6400000 * _0x3f44d7, 0x6400000 * (_0x3f44d7 + 0x1)), _0x4a61f1 = '' .concat(_0x316472); _0x3f44d7 > 0x0 && (_0x4a61f1 = '' .concat(_0x316472, '-part-').concat(_0x3f44d7)), _0x4d7024.saveFilenames.push(_0x4a61f1), _0x4e171c.put(_0x4a61f1, { 'filename': _0xa1889f, @@ -1782,22 +1773,22 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'key': _0x316472, 'data': _0x17edbf }); - var _0x54d79 = _0xa1889f.replace(/\#/g, ''); + let _0x54d79 = _0xa1889f.replace(/\#/g, ''); try { _0x468801 += _0x17edbf.length, _0x4d7024.FS.createDataFile('/', _0x54d79, _0x17edbf, true, !0x1), _0x139f68(); } catch (_0x125736) { console.log(_0x125736); } }).catch(function(_0x516cc3) { - renderErrorPage(_0x516cc3, _0x2c1832, _0xa88a13); + renderErrorPage(_0x516cc3, _0x2c1832, _this); }); }; _0x1ffb98.db ? _0x1ffb98.get(_0x316472, function(_0x3e612b) { if (_0x3e612b && _0x3e612b.filename === _0xa1889f && _0x3e612b.filesize - _0x17edbf == 0x0 && _0x3e612b.filetype === _0x500ba1 && _0x3e612b.key) if (_0x3e612b.filesize > 0x6400000) { - var _0x2c1832 = new Uint8Array(_0x3e612b.filesize); + let _0x2c1832 = new Uint8Array(_0x3e612b.filesize); _0x2c1832.set(_0x3e612b.data); - for (var _0xa2197 = Math.ceil(_0x3e612b.filesize / 0x6400000), _0x6f30ae = [], _0x32aa3c = 0x1; _0x32aa3c < _0xa2197; _0x32aa3c += 0x1) _0x6f30ae.push('' .concat(_0x316472, '-part-').concat(_0x32aa3c)); + for (let _0xa2197 = Math.ceil(_0x3e612b.filesize / 0x6400000), _0x6f30ae = [], _0x32aa3c = 0x1; _0x32aa3c < _0xa2197; _0x32aa3c += 0x1) _0x6f30ae.push('' .concat(_0x316472, '-part-').concat(_0x32aa3c)); _0x1ffb98.getBatch(_0x6f30ae, function(_0x198a02) { _0x198a02.filter(function(_0x1c8a88) { return _0x1c8a88; @@ -1809,12 +1800,12 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { else _0x31f098(); }) : _0x31f098(); }).catch(function(_0x20f2e3) { - renderErrorPage(_0x20f2e3, _0x2c1832, _0xa88a13); + renderErrorPage(_0x20f2e3, _0x2c1832, _this); }); } else _0x139f68(); }, _0x57d85d = function(_0x5e7c8b, _0x3cff36) { - var _0x3ea97 = _0xa88a13, + let _0x3ea97 = _this, _0x50119 = _0x4d7024.loading.querySelector('.' .concat(_0x4fce24.p2)), _0x19a43e = (_0x5e7c8b.split('.').pop(), function(_0x1e8643) { if (_0x1e8643.data) { @@ -1824,7 +1815,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x452592(); } if (2 === _0x1e8643.data.t) { - var _0x17edbf = _0x1e8643.data.file.split('/'), + let _0x17edbf = _0x1e8643.data.file.split('/'), _0x2c1832 = _0x17edbf.pop(); _0x2c1832.split('.').pop(); _0x4d7024.FS.createPath('/', _0x17edbf.join('/'), true, true); @@ -1832,7 +1823,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x468801 += _0x1e8643.data.data.length; } if (4 === _0x1e8643.data.t && _0x1e8643.data.total > 0) { - var _0x149f09 = Math.floor(_0x1e8643.data.current / _0x1e8643.data.total * 0x64), + let _0x149f09 = Math.floor(_0x1e8643.data.current / _0x1e8643.data.total * 0x64), _0x5e7c8b = _0x1e8643.data.name || ''; _0x149f09 <= 0x64 && _0x149f09 > 0x0 && (_0x50119.innerHTML = 'Decompress BIOS ' .concat(_0x5e7c8b, ' ').concat(_0x149f09, '%')); } @@ -1864,17 +1855,16 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }, _0x10b71a = function() { _0x4d7024.loading.querySelector('.' .concat(_0x4fce24.p1)).innerHTML = 'Game Core ready'; - var _0x17edbf = _0xa88a13.config.biosUrl, - _0x2c1832 = _0xa88a13; - _0xdcec2a.bindFunction.call(_0xa88a13); - _0xdcec2a.setGamepadDialog.call(_0xa88a13); - _0xdcec2a.setCacheDialog.call(_0xa88a13); - _0xdcec2a.setLoadingDialog.call(_0xa88a13); - //_0xdcec2a.setNetplayDialog.call(_0xa88a13); - _0xdcec2a.setCheatDialog.call(_0xa88a13); - _0xdcec2a.initGamepad.call(_0xa88a13); - _0xdcec2a.initKeyboard.call(_0xa88a13); - _0xdcec2a.listeners.call(_0xa88a13); + let _0x17edbf = _this.config.biosUrl; + _0xdcec2a.bindFunction.call(_this); + _0xdcec2a.setGamepadDialog.call(_this); + _0xdcec2a.setCacheDialog.call(_this); + _0xdcec2a.setLoadingDialog.call(_this); + //_0xdcec2a.setNetplayDialog.call(_this); + _0xdcec2a.setCheatDialog.call(_this); + _0xdcec2a.initGamepad.call(_this); + _0xdcec2a.initKeyboard.call(_this); + _0xdcec2a.listeners.call(_this); _0x4d7024._FS.createFolder('/', 'etc', true, true); _0x4d7024.FS.mkdir('/data'); _0x4d7024.FS.mkdir('/data/saves'); @@ -1882,7 +1872,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x4d7024.FS.mkdir('/shader'); _0x4d7024.FS.syncfs(true, function(_0x1a8f12) {}); _0xdcec2a.initShaders(); - var _0x14d39f = ''; + let _0x14d39f = ''; _0x14d39f += 'savefile_directory = /data/saves\n'; _0x14d39f += 'video_vsync = true\n'; _0x14d39f += 'screenshot_directory = /\n'; @@ -1892,16 +1882,16 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x14d39f += 'video_scale = 1.0\n'; _0x14d39f += 'video_gpu_screenshot = false\n'; _0x14d39f += 'audio_latency = 96\n'; - var _0x36edb7 = _0x2593da.defaultCoreOptionsValues.call(_0xa88a13); - _0x2c1832.lightgun && ('nes' === _0xa88a13.system && (_0x14d39f += 'input_libretro_device_p2 = "258"\n'), 'segaMS' !== _0xa88a13.system && 'segaMD' !== _0xa88a13.system && 'segaCD' !== _0xa88a13.system || (_0x36edb7.genesis_plus_gx_gun_cursor = 'yes', _0x36edb7.genesis_plus_gx_invert_mouse = 'yes', _0x36edb7.genesis_plus_gx_bram = 'per game', _0x14d39f += 'input_libretro_device_p2 = "260"\n'), 'snes' === _0xa88a13.system && (_0x14d39f += 'input_libretro_device_p2 = "260"\n'), ['snes2002', 'snes2005', 'snes2010', 'snesnext'].includes(_0xa88a13.system) && (_0x14d39f += 'input_libretro_device_p2 = "260"\n')); - _0x2c1832.mouse && ('snes' === _0xa88a13.system && (_0x14d39f += 'input_libretro_device_p1 = 2\n'), ['snes2002', 'snes2005', 'snes2010', 'snesnext'].includes(_0xa88a13.system) && (_0x14d39f += 'input_libretro_device_p1 = 2\n')); - _0x2c1832.multitap && (['snes2002', 'snes2005', 'snes2010', 'snesnext', 'snes'].includes(_0xa88a13.system) && (_0x14d39f += 'input_libretro_device_p2 = 257\n')); - 'n64' === _0xa88a13.system && (_0x14d39f += 'input_libretro_device_p1 = 5\n'); + let _0x36edb7 = _0x2593da.defaultCoreOptionsValues.call(_this); + _this.lightgun && ('nes' === _this.system && (_0x14d39f += 'input_libretro_device_p2 = "258"\n'), 'segaMS' !== _this.system && 'segaMD' !== _this.system && 'segaCD' !== _this.system || (_0x36edb7.genesis_plus_gx_gun_cursor = 'yes', _0x36edb7.genesis_plus_gx_invert_mouse = 'yes', _0x36edb7.genesis_plus_gx_bram = 'per game', _0x14d39f += 'input_libretro_device_p2 = "260"\n'), 'snes' === _this.system && (_0x14d39f += 'input_libretro_device_p2 = "260"\n'), ['snes2002', 'snes2005', 'snes2010', 'snesnext'].includes(_this.system) && (_0x14d39f += 'input_libretro_device_p2 = "260"\n')); + _this.mouse && ('snes' === _this.system && (_0x14d39f += 'input_libretro_device_p1 = 2\n'), ['snes2002', 'snes2005', 'snes2010', 'snesnext'].includes(_this.system) && (_0x14d39f += 'input_libretro_device_p1 = 2\n')); + _this.multitap && (['snes2002', 'snes2005', 'snes2010', 'snesnext', 'snes'].includes(_this.system) && (_0x14d39f += 'input_libretro_device_p2 = 257\n')); + 'n64' === _this.system && (_0x14d39f += 'input_libretro_device_p1 = 5\n'); _0x14d39f += 'fastforward_ratio = 1.0\n'; _0x14d39f += 'video_smooth = false\n'; - var _0x55117c = _0x5dc0c0(_0x36edb7, _0x2593da.storage.get('core-options') || {}), + let _0x55117c = _0x5dc0c0(_0x36edb7, _0x2593da.storage.get('core-options') || {}), _0x32dd27 = ''; - if (_0x2c1832.coreVer === 2) { + if (_this.coreVer === 2) { _0x4d7024.FS.createDataFile('/etc', 'retroarch.cfg', _0x14d39f, true, true); _0x4d7024._FS.createFolder('/home/web_user', 'retroarch', true, true); _0x4d7024._FS.createFolder('/home/web_user/retroarch', 'userdata', true, true); @@ -1913,29 +1903,29 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x4d7024.FS.createDataFile('/home/web_user/.config/retroarch', 'retroarch-core-options.cfg', _0x32dd27, true, true); } if (_0x55117c && Object.keys(_0x55117c).forEach(function(_0x2950d3) { - if (_0x2c1832.lightgun && 'nes' === _0x2c1832.system && 'system_type' === _0x2950d3) return !0x1; - _0x32dd27 += '' .concat(_0x2950d3, ' = "').concat(_0x55117c[_0x2950d3], '"\n'), _0x1093f4.call(_0x2c1832, _0x2c1832.elements.container, 'start-game', function(_0x362c5c) { + if (_this.lightgun && 'nes' === _this.system && 'system_type' === _0x2950d3) return !0x1; + _0x32dd27 += '' .concat(_0x2950d3, ' = "').concat(_0x55117c[_0x2950d3], '"\n'), _0x1093f4.call(_this, _this.elements.container, 'start-game', function(_0x362c5c) { _0xdcec2a.setVariable(_0x2950d3, _0x55117c[_0x2950d3]); }); }), _0x17edbf) { - var _0x12e137 = _0x17edbf.split('/'), + let _0x12e137 = _0x17edbf.split('/'), _0x103241 = _0x12e137[_0x12e137.length - 0x1]; _0x103241.indexOf('?') > -0x1 && (_0x103241 = _0x103241.substr(0x0, _0x103241.indexOf('?'))); _0x103241.split('.').pop(); - var _0x1f8424 = _0x4d7024.loading.querySelector('.' .concat(_0x4fce24.p2)); + let _0x1f8424 = _0x4d7024.loading.querySelector('.' .concat(_0x4fce24.p2)); _0x550f17.a.head(_0x17edbf, {}).then(function(_0x4bd3bd) { - var _0x8e30bf = _0x4bd3bd.headers['content-length'], + let _0x8e30bf = _0x4bd3bd.headers['content-length'], _0x14309b = _0x4bd3bd.headers['content-type'], - _0x51bfef = (_0x4bd3bd.headers['last-modified'], _0x2c1832.system), + _0x51bfef = (_0x4bd3bd.headers['last-modified'], _this.system), _0x574747 = function() { _0x550f17.a.get(_0x17edbf, { 'onDownloadProgress': function(_0x107517) { - var _0x17edbf = _0x107517.total ? '' .concat(Math.floor(_0x107517.loaded / _0x107517.total * 0x64), '%') : ''; + let _0x17edbf = _0x107517.total ? '' .concat(Math.floor(_0x107517.loaded / _0x107517.total * 0x64), '%') : ''; _0x1f8424.innerHTML = 'Download BIOS ' .concat(_0x17edbf); }, 'responseType': 'arraybuffer' }).then(function(_0x4b0c1d) { - var _0x17edbf = new Uint8Array(_0x4b0c1d.data); + let _0x17edbf = new Uint8Array(_0x4b0c1d.data); _0xa884ea.db && _0xa884ea.put(_0x1143c5, { 'filename': _0x103241, 'filesize': _0x17edbf.length, @@ -1943,23 +1933,23 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'data': _0x17edbf }), _0x57d85d(_0x103241, _0x17edbf); }).catch(function(_0x58e374) { - renderErrorPage(_0x58e374, _0x1f8424, _0xa88a13); + renderErrorPage(_0x58e374, _0x1f8424, _this); }); }; _0xa884ea.db ? _0xa884ea.get(_0x51bfef, function(_0x5cac21) { _0x5cac21 && _0x5cac21.filename === _0x103241 && _0x5cac21.filesize - _0x8e30bf == 0x0 && _0x5cac21.filetype === _0x14309b ? _0x57d85d(_0x5cac21.filename, _0x5cac21.data) : _0x574747(); }) : _0x574747(); }).catch(function(_0x4f39c1) { - renderErrorPage(_0x4f39c1, _0x1f8424, _0xa88a13); + renderErrorPage(_0x4f39c1, _0x1f8424, _this); }); } else _0x452592(); }, _0x29b999 = function(_0x172278) { - var _0x17edbf; + let _0x17edbf; _0x17edbf = _0x172278.byteLength ? new Uint8Array(_0x172278) : _0x172278, 'undefined' != typeof GLOBAL_BASE ? _0x4d7024.Module.HEAPU8.set(_0x17edbf, GLOBAL_BASE) : 'undefined' != typeof Runtime && Runtime.GLOBAL_BASE ? _0x4d7024.Module.HEAPU8.set(_0x17edbf, Runtime.GLOBAL_BASE) : _0x4d7024.Module.HEAPU8.set(_0x17edbf, 0x8); }, _0x4f0fcc = function(_0x18cb26) { - var _0x2c1832 = _0x4d7024.loading.querySelector('.' .concat(_0x4fce24.p1)), + let _0x2c1832 = _0x4d7024.loading.querySelector('.' .concat(_0x4fce24.p1)), _0x247459 = '', _0x54d695 = function() { null !== _0x4d7024.wasmData ? (window.Module.wasmBinary = _0x4d7024.wasmData, _0x4bd781(), window.Module.monitorRunDependencies = function(_0x59580a) { @@ -1969,9 +1959,9 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }, window.Module.onRuntimeInitialized = function() { _0x4d7024.Module || (_0x4d7024.Module = window.Module), _0x4d7024.Module && _0x4d7024.Module.FS ? _0x4d7024.FS = _0x4d7024.Module.FS : _0x4d7024.FS = window.FS, console.log('onRuntimeInitialized'), _0x10b71a(); }); - var _0x18cb26 = window.Module; + let _0x18cb26 = window.Module; if (null !== _0x4d7024.wasmData && (_0x18cb26.wasmBinary = _0x4d7024.wasmData), _0x59aa33.isIos && null !== _0x4d7024.wasmData) { - var _0x17edbf = new Blob([_0x247459], { + let _0x17edbf = new Blob([_0x247459], { 'type': 'text/javascript' }), _0x2c1832 = _0x428003('script', { @@ -1985,8 +1975,9 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }; } else { _0x247459 = function(_0x3df03e) { - for (var _0x17edbf = [], _0x2c1832 = 0x0; _0x2c1832 < _0x3df03e.length; _0x2c1832 += 0x1) { - var _0xcf0289 = _0x3df03e[_0x2c1832]; + let _0x17edbf = []; + for (let _0x2c1832 = 0x0; _0x2c1832 < _0x3df03e.length; _0x2c1832 += 0x1) { + let _0xcf0289 = _0x3df03e[_0x2c1832]; _0xcf0289 > 0xff && (_0xcf0289 &= 0xff), _0x17edbf.push(String.fromCharCode(_0xcf0289)); } return _0x17edbf.join(''); @@ -2005,14 +1996,14 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x1093f4.call(_0xc6823, _0xc6823.elements.container, 'script-loaded', function(_0x467eee) { _0x54d695(); }); - var _0x21d6a1 = function(_0x3f49ec) { + let _0x21d6a1 = function(_0x3f49ec) { if (_0x3f49ec.data) { if (0x1 === _0x3f49ec.data.t && (_0xbae705.call(_0xc6823, _0xc6823.elements.container, 'script-loaded'), _0x3f49ec.target.terminate()), 0x2 === _0x3f49ec.data.t) { - var _0x17edbf = _0x3f49ec.data.file.split('/').pop(), + let _0x17edbf = _0x3f49ec.data.file.split('/').pop(), _0x58b5a7 = _0x17edbf.split('.').pop(); _0x4d7024.coreFileData[_0x17edbf] = _0x3f49ec.data.data, 'js' !== _0x58b5a7 || _0x17edbf.includes('.worker.js') || (_0x247459 = _0x3f49ec.data.data), 'mem' === _0x58b5a7 && (_0x4d7024.memData = _0x3f49ec.data.data), 'wasm' === _0x58b5a7 && (_0x4d7024.wasmData = _0x3f49ec.data.data); } - 0x4 === _0x3f49ec.data.t && _0x3f49ec.data.total > 0x0 && (_0x2c1832.innerHTML = _0xa88a13.localization('Decompress Game Core')+' ' .concat(Math.floor(_0x3f49ec.data.current / _0x3f49ec.data.total * 0x64), '%')); + 0x4 === _0x3f49ec.data.t && _0x3f49ec.data.total > 0x0 && (_0x2c1832.innerHTML = _this.localization('Decompress Game Core')+' ' .concat(Math.floor(_0x3f49ec.data.current / _0x3f49ec.data.total * 0x64), '%')); } }; extractFile(_0x17edbf).then(function(_0x48c633) { @@ -2020,11 +2011,10 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x48c633.postMessage(_0x18cb26); }); }, - _this = this, _0x26d6a1 = function(_0x3787ba) { _0x132da7(_0x4d7024.loading.querySelector('.' .concat(_0x4fce24['start-game'])), true); - var _0x3787ba = _0x4d7024.loading.querySelector('.' .concat(_0x4fce24.p1)); - _0x3787ba.innerHTML = _this.localization('Loading')+'...'; + let status = _0x4d7024.loading.querySelector('.' .concat(_0x4fce24.p1)); + status.innerHTML = _this.localization('Loading')+'...'; if (!(true === _0x528f2b && true === _0x547484 && true === _0x5e24fa)) { setTimeout(_0x26d6a1, 50); @@ -2050,10 +2040,10 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'totalDependencies': 0, 'monitorRunDependencies': function(_0x5d4b07) {}, 'locateFile': function(_0x3fe7ca) { - var _0x3787ba = null; + let _0x3787ba = null; if (_0x3fe7ca.includes('.worker.js')) { Object.keys(_0x4d7024.coreFileData).includes(_0x3fe7ca) && (_0x3787ba = _0x4d7024.coreFileData[_0x3fe7ca]); - var _0x2c1832 = new Blob([''], { + let _0x2c1832 = new Blob([''], { 'type': 'application/javascript' }); return window.URL.createObjectURL(_0x2c1832); @@ -2069,7 +2059,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x9d2de4(_0x20d016); }, 500); else { - var _0x164012 = new XMLHttpRequest(); + let _0x164012 = new XMLHttpRequest(); _0x164012.open('GET', _0x20d016, true); _0x164012.responseType = 'arraybuffer'; _0x164012.onload = function() { @@ -2084,16 +2074,16 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } } }; - var _0x3641d6 = function(_0x16049b, _0x55a075) { - var path = (_this.customPaths && typeof _this.customPaths[_0x16049b] == 'string') ? _this.customPaths[_0x16049b] : ((_this.coreVer === 2) ? (_this.dataPath+'cores/'+_0x16049b+'?v='+_0x55a075) : (_this.dataPath+'old/'+_0x16049b+'?v='+_0x55a075)); + let _0x3641d6 = function(_0x16049b, _0x55a075) { + let path = (_this.customPaths && typeof _this.customPaths[_0x16049b] == 'string') ? _this.customPaths[_0x16049b] : ((_this.coreVer === 2) ? (_this.dataPath+'cores/'+_0x16049b+'?v='+_0x55a075) : (_this.dataPath+'old/'+_0x16049b+'?v='+_0x55a075)); _0x550f17.a.get(path, { 'onDownloadProgress': function(e) { - var progress = e.total ? Math.floor(e.loaded / e.total * 100).toString()+'%' : ''; - _0x3787ba.innerHTML = _this.localization('Download Game Core')+_0x55a075; + let progress = e.total ? Math.floor(e.loaded / e.total * 100).toString()+'%' : ''; + status.innerHTML = _this.localization('Download Game Core')+_0x55a075; }, 'responseType': 'arraybuffer' }).then(function(e) { - var data = new Uint8Array(e.data); + let data = new Uint8Array(e.data); _0x24de8d.db && _0x24de8d.put(_0x16049b, { 'version': _0x55a075, 'data': data @@ -2101,30 +2091,30 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { if (_this.coreVer === 2) { _0x4f0fcc(data); } else { - var data1 = data.slice ? data.slice(12) : data.subarray(12); + let data1 = data.slice ? data.slice(12) : data.subarray(12); data1.set([55, 122, 188, 175, 39, 28, 0, 3], 0); data = null; _0x4f0fcc(data1); } }).catch(function(e) { - renderErrorPage(e, _0x3787ba, _this); + renderErrorPage(e, status, _this); }); }; - var _0xa88a13 = (_this.customPaths && typeof _this.customPaths['v.json'] == 'string') ? _this.customPaths['v.json'] : (_this.dataPath + 'v.json'); - _0x550f17.a.get(_0xa88a13, {}).then(function(e) { - var _0x2458d5, _0x5d075f = _0x29078e[_this.system], + let vJson = (_this.customPaths && typeof _this.customPaths['v.json'] == 'string') ? _this.customPaths['v.json'] : (_this.dataPath + 'v.json'); + _0x550f17.a.get(vJson, {}).then(function(e) { + let _0x2458d5, _0x5d075f = _0x29078e[_this.system], _0x28ee7f = e.data[_this.system]; + let status = _0x4d7024.loading.querySelector('.' .concat(_0x4fce24.p1)); if (!_0x28ee7f) { status.innerHTML = ''+_this.localization('Invalid System')+''; return; } - var _0x124167 = _0x28ee7f.version ? _0x28ee7f.version : 1, + let _0x124167 = _0x28ee7f.version ? _0x28ee7f.version : 1, //_0x254bc2 = Boolean(_0x28ee7f.netplay), _0x5b1dcd = Boolean(_0x28ee7f.state), _0x9a1f1 = Boolean(_0x28ee7f.asmjs), _0x3e4345 = Boolean(_0x28ee7f.wasm); - var status = _0x4d7024.loading.querySelector('.' .concat(_0x4fce24.p1)); if (!(_this.config.oldCores === true && _0x28ee7f.oldCores === 1) && _0x28ee7f.newCores === 1 && (_0x2d904a.wasm || _0x9a1f1) && !(_0x4d7024.isMobileDevice && _0x28ee7f.oldCores === 1)) { _this.coreVer = 2; delete Module.readAsync; @@ -2146,16 +2136,16 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }; _0x4d7024.coreFileVersion = _0x124167; _0x4d7024.coreFileName = _0x5d075f; - var _0x2eb141 = false; + let _0x2eb141 = false; ['webgl2', 'experimental-webgl2'].includes(_0x2d904a.webgl.WEBGL_CONTEXT) && (_0x2eb141 = true); 'undefined' != typeof EJS_N64_LEGACY && 0x1 == EJS_N64_LEGACY && (_0x2eb141 = !0x1); if ('mame' == _this.system) { - var data = _this.mameCore; + let data = _this.mameCore; if (! data || data === null || data.split('|').length !== 2) { status.innerHTML = ''+_this.localization('Missing mame config')+''; return; } - var _0x3787ba = data.split('|'); + let _0x3787ba = data.split('|'); _0x4d7024.coreFileName = ''.concat(_this.system, '-').concat(_0x3787ba[0x0]); _0x5b1dcd = '1' === _0x3787ba[1]; _0x1e2c68.element(_this.elements.buttons.saveState) && _0x132da7(_this.elements.buttons.saveState, !_0x5b1dcd); @@ -2172,7 +2162,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { if (_0xc6823.coreVer === 2) { _0x4f0fcc(_0x655c87.data); } else { - var _0x3787ba = _0x655c87.data.slice ? _0x655c87.data.slice(0xc) : _0x655c87.data.subarray(0xc); + let _0x3787ba = _0x655c87.data.slice ? _0x655c87.data.slice(0xc) : _0x655c87.data.subarray(0xc); _0x3787ba.set([55, 122, 188, 175, 39, 28, 0, 3], 0); _0x4f0fcc(_0x3787ba); } @@ -2180,7 +2170,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }) : _0x3641d6(_0x2458d5, _0x124167))) : status.innerHTML = ''+_this.localization('Unsupported Game')+''; } else { _0x2458d5 = false; - var type; + let type; if (_0x2d904a.wasm && _0x3e4345) { type = 'wasm'; _0x2458d5 = true; @@ -2211,7 +2201,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { if (_0xc6823.coreVer === 2) { _0x4f0fcc(_0x47a6fd.data); } else { - var _0x3787ba = _0x47a6fd.data.slice ? _0x47a6fd.data.slice(12) : _0x47a6fd.data.subarray(12); + let _0x3787ba = _0x47a6fd.data.slice ? _0x47a6fd.data.slice(12) : _0x47a6fd.data.subarray(12); _0x3787ba.set([55, 122, 188, 175, 39, 28, 0, 3], 0); _0x4f0fcc(_0x3787ba); } @@ -2223,7 +2213,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x1e2c68.element(_this.elements.buttons.loadState) && _0x132da7(_this.elements.buttons.loadState, !_0x5b1dcd); _0x132da7(_0x2593da.contextMenu.querySelectorAll('ul li').item(2), !_0x5b1dcd); _0x132da7(_0x2593da.contextMenu.querySelectorAll('ul li').item(3), !_0x5b1dcd); - _0xc6823.setStatesSupported(_0x5b1dcd); + _this.statesSupported = _0x5b1dcd; if (_this.config.buttons) { if (_this.config.buttons.playPause === false) { @@ -2278,20 +2268,18 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x4d7024.romdb = _0x4e171c; return false; }; - - _0x455c85(_0x4d7024.loading.querySelector('.' .concat(_0x4fce24['start-game'])), 'click touchstart', _0x26d6a1); if (_0xc6823.startOnLoad === true) { _0x4d7024.loading.querySelector('.' .concat(_0x4fce24['start-game'])).click(); } } - }, - _0x27f4c4 = _0x4d7024; + } + let _0x27f4c4 = _0x4d7024; function _0x3c0613(_0x3eef01) { return function(_0x3d9b1e) { if (Array.isArray(_0x3d9b1e)) { - for (var _0x17edbf = 0x0, _0x2c1832 = new Array(_0x3d9b1e.length); _0x17edbf < _0x3d9b1e.length; _0x17edbf++) _0x2c1832[_0x17edbf] = _0x3d9b1e[_0x17edbf]; + for (let _0x17edbf = 0x0, _0x2c1832 = new Array(_0x3d9b1e.length); _0x17edbf < _0x3d9b1e.length; _0x17edbf++) _0x2c1832[_0x17edbf] = _0x3d9b1e[_0x17edbf]; return _0x2c1832; } }(_0x3eef01) || function(_0x425c1a) { @@ -2302,14 +2290,14 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } function _0xa08ac0(_0x514af5, _0x4089be) { - for (var _0x2c1832 = 0x0; _0x2c1832 < _0x4089be.length; _0x2c1832++) { - var _0x3347c8 = _0x4089be[_0x2c1832]; + for (let _0x2c1832 = 0x0; _0x2c1832 < _0x4089be.length; _0x2c1832++) { + let _0x3347c8 = _0x4089be[_0x2c1832]; _0x3347c8.enumerable = _0x3347c8.enumerable || !0x1, _0x3347c8.configurable = true, 'value' in _0x3347c8 && (_0x3347c8.writable = true), Object.defineProperty(_0x514af5, _0x3347c8.key, _0x3347c8); } } - var _0x1eda08, _0x4fc27f, _0xf43a92, _0x214f42, _0x3a9bfc, _0x4d8495 = (_0x1eda08 = ['a[href]', 'area[href]', 'input:not([disabled]):not([type="hidden"]):not([aria-hidden])', 'select:not([disabled]):not([aria-hidden])', 'textarea:not([disabled]):not([aria-hidden])', 'button:not([disabled]):not([aria-hidden])', 'iframe', 'object', 'embed', '[contenteditable]', '[tabindex]:not([tabindex^="-"])'], _0x4fc27f = function() { + let _0x1eda08, _0x4fc27f, _0xf43a92, _0x214f42, _0x3a9bfc, _0x4d8495 = (_0x1eda08 = ['a[href]', 'area[href]', 'input:not([disabled]):not([type="hidden"]):not([aria-hidden])', 'select:not([disabled]):not([aria-hidden])', 'textarea:not([disabled]):not([aria-hidden])', 'button:not([disabled]):not([aria-hidden])', 'iframe', 'object', 'embed', '[contenteditable]', '[tabindex]:not([tabindex^="-"])'], _0x4fc27f = function() { function _0x5566a2(_0x1fcb21) { - var _0x2c1832 = _0x1fcb21.targetModal, + let _0x2c1832 = _0x1fcb21.targetModal, _0x29e6ab = _0x1fcb21.triggers, _0x114128 = void 0x0 === _0x29e6ab ? [] : _0x29e6ab, _0x5211ae = _0x1fcb21.onShow, @@ -2344,11 +2332,11 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'closeByEsckey': _0x54de6a }, _0x114128.length > 0x0 && this.registerTriggers.apply(this, _0x3c0613(_0x114128)), this.onClick = this.onClick.bind(this), this.onKeydown = this.onKeydown.bind(this); } - var _0x17edbf, _0x2c1832, _0x5021cc; + let _0x17edbf, _0x2c1832, _0x5021cc; return _0x17edbf = _0x5566a2, (_0x2c1832 = [{ 'key': 'registerTriggers', 'value': function() { - for (var _0x5566a2 = this, _0x17edbf = arguments.length, _0x2c1832 = new Array(_0x17edbf), _0x4e24fa = 0x0; _0x4e24fa < _0x17edbf; _0x4e24fa++) _0x2c1832[_0x4e24fa] = arguments[_0x4e24fa]; + for (let _0x5566a2 = this, _0x17edbf = arguments.length, _0x2c1832 = new Array(_0x17edbf), _0x4e24fa = 0x0; _0x4e24fa < _0x17edbf; _0x4e24fa++) _0x2c1832[_0x4e24fa] = arguments[_0x4e24fa]; _0x2c1832.forEach(function(_0x511ded) { _0x511ded.addEventListener('click', function() { return _0x5566a2.showModal(); @@ -2365,7 +2353,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }, { 'key': 'closeModal', 'value': function() { - var _0x5566a2 = this.modal; + let _0x5566a2 = this.modal; this.modal.setAttribute('aria-hidden', 'true'), this.removeEventListeners(), this.config.onClose(this.modal), this.config.awaitCloseAnimation ? this.modal.addEventListener('animationend', function _0x17edbf() { _0x5566a2.classList.remove(_0x449eac({ 'is-open': true @@ -2397,7 +2385,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }, { 'key': 'getFocusableNodes', 'value': function() { - var _0x5566a2 = this.modal.querySelectorAll(_0x1eda08); + let _0x5566a2 = this.modal.querySelectorAll(_0x1eda08); return Object.keys(_0x5566a2).map(function(_0x1bd160) { return _0x5566a2[_0x1bd160]; }); @@ -2406,16 +2394,16 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'key': 'setFocusToFirstNode', 'value': function() { if (!this.config.disableFocus) { - var _0x5566a2 = this.getFocusableNodes(); + let _0x5566a2 = this.getFocusableNodes(); _0x5566a2.length && _0x5566a2[0x0].focus(); } } }, { 'key': 'maintainFocus', 'value': function(_0x15092b) { - var _0x17edbf = this.getFocusableNodes(); + let _0x17edbf = this.getFocusableNodes(); if (this.modal.contains(document.activeElement)) { - var _0x2c1832 = _0x17edbf.indexOf(document.activeElement); + let _0x2c1832 = _0x17edbf.indexOf(document.activeElement); _0x15092b.shiftKey && 0x0 === _0x2c1832 && (_0x17edbf[_0x17edbf.length - 0x1].focus(), _0x15092b.preventDefault()), _0x15092b.shiftKey || _0x2c1832 !== _0x17edbf.length - 0x1 || (_0x17edbf[0x0].focus(), _0x15092b.preventDefault()); } else _0x17edbf[0x0].focus(); } @@ -2426,36 +2414,36 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { if (function(_0x28b4fb) { _0x28b4fb.length <= 0x0 && (console.warn('MicroModal v' .concat(version, ': ❗Please specify at least one %c\'micromodal-trigger\''), 'background-color: #f8f9fa;color: #50596c;font-weight: bold;', 'data attribute.'), console.warn('%cExample:', 'background-color: #f8f9fa;color: #50596c;font-weight: bold;', '')); }(_0x48c135), !_0x61240d) return true; - for (var _0x2c1832 in _0x61240d) _0x214f42(_0x2c1832); + for (let _0x2c1832 in _0x61240d) _0x214f42(_0x2c1832); return true; }, { 'init': function(_0x3f1b32) { - var _0x17edbf = Object.assign({}, { + let _0x17edbf = Object.assign({}, { 'openTrigger': 'data-micromodal-trigger' }, _0x3f1b32), _0x2c1832 = _0x3c0613(document.querySelectorAll('[' .concat(_0x17edbf.openTrigger, ']'))), _0x537e55 = function(_0x5e363a, _0x9390ce) { - var _0x2c1832 = []; + let _0x2c1832 = []; return _0x5e363a.forEach(function(_0x305145) { - var _0x13d441 = _0x305145.attributes[_0x9390ce].value; + let _0x13d441 = _0x305145.attributes[_0x9390ce].value; void 0x0 === _0x2c1832[_0x13d441] && (_0x2c1832[_0x13d441] = []), _0x2c1832[_0x13d441].push(_0x305145); }), _0x2c1832; }(_0x2c1832, _0x17edbf.openTrigger); if (true !== _0x17edbf.debugMode || !0x1 !== _0x3a9bfc(_0x2c1832, _0x537e55)) - for (var _0x383dff in _0x537e55) { - var _0x34a8e0 = _0x537e55[_0x383dff]; + for (let _0x383dff in _0x537e55) { + let _0x34a8e0 = _0x537e55[_0x383dff]; _0x17edbf.targetModal = _0x383dff, _0x17edbf.triggers = _0x3c0613(_0x34a8e0), new _0x4fc27f(_0x17edbf); } }, 'show': function(_0x2a3fcf, _0x472cd6) { - var _0x2c1832 = _0x472cd6 || {}; + let _0x2c1832 = _0x472cd6 || {}; return _0x2c1832.targetModal = _0x2a3fcf, true === _0x2c1832.debugMode && !0x1 === _0x214f42(_0x2a3fcf) ? _0xf43a92 = null : (_0xf43a92 = new _0x4fc27f(_0x2c1832)).showModal(), _0xf43a92; }, 'close': function() { _0xf43a92.closeModal(); } - }), - _0x378b5c = { + }); + var _0x378b5c = { 'defaultControllers': { 0: { 0: { @@ -2643,79 +2631,42 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 221: 'close braket', 222: 'single quote' }, - 'saveLoaddbDB': { - put: function(key, data) { - var openRequest = indexedDB.open("ejs-states", 1); - openRequest.onerror = function() {}; - openRequest.onsuccess = function() { - var db = openRequest.result; - var transaction = db.transaction(["states"], "readwrite"); - var objectStore = transaction.objectStore("states"); - var request = objectStore.put(data, key); - request.onerror = function() {}; - request.onsuccess = function() {}; - }; - openRequest.onupgradeneeded = function() { - var db = openRequest.result; - if (! db.objectStoreNames.contains('states')) { - db.createObjectStore('states'); - }; - }; - }, - get: function(key) { - return new Promise(function(resolve, reject) { - var openRequest = indexedDB.open("ejs-states", 1); - openRequest.onerror = function() {}; - openRequest.onsuccess = function() { - var db = openRequest.result; - var transaction = db.transaction(["states"], "readwrite"); - var objectStore = transaction.objectStore("states"); - var request = objectStore.get(key); - request.onsuccess = async function(e) { - var file = e.target.result; - if (file) { - resolve(file) - }; - }; - request.onerror = function() {}; - }; - openRequest.onupgradeneeded = function() { - var db = openRequest.result; - if (! db.objectStoreNames.contains('states')) { - db.createObjectStore('states'); - }; - }; + 'saveLoaddbDB': function() { + try { + return new IDBStore({ + 'dbVersion': 1, + 'storePrefix': 'ejs-', + 'storeName': 'states', + 'keyPath': null, + 'autoIncrement': false, + 'onStoreReady': function() {}, + 'onError': function() {} }); - }, - }, + } catch(e) { + console.log(e); + } + }(), 'saveLoadDB': function(type) { try { + if (!_0x378b5c.saveLoaddbDB.db) return false; if (_0x2593da && typeof _0x2593da.getCoreOptionsValues == 'function') { - if ((!this.gameName && typeof this.config.gameUrl == 'string' && this.config.gameUrl.startsWith('blob:')) || !window.indexedDB) { - return false; - } - var location = _0x2593da.getCoreOptionsValues()['save-state-location']; + let location = _0x2593da.getCoreOptionsValues()['save-state-location']; if (!location || location === 'download') { return false; } - var slot = _0x2593da.getCoreOptionsValues()['save-state-slot']; - var game; - if (typeof this.config.gameUrl == 'string') { - game = this.config.gameUrl.split('/').pop(); - } - if (this.gameName) { - game = this.gameName; - }; - if (!game) return false; - var key = game + '-' + slot; + if (!this.getStartName()) return false; + let slot = _0x2593da.getCoreOptionsValues()['save-state-slot']; + let game = this.getStartName(); + if (!slot) return false; + let key = game + '-' + slot; (async function() { if (type === 'save') { try { - var data = await _0x378b5c.saveState(); + let data = await _0x378b5c.saveState(); _0x378b5c.saveLoaddbDB.put(key, data); } catch(e) {return false;}; } else { - _0x378b5c.saveLoaddbDB.get(key).then(function(data) { + _0x378b5c.saveLoaddbDB.get(key, function(data) { EJS_loadState(data); }); } @@ -2744,13 +2695,6 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'icons': { 'lock': '' }, - 'disableInput': !0x1, - 'disableControl': function(_0x5459be) { - if (_0x5459be) { - for (var _0x17edbf = 0x0; _0x17edbf < 0x18; _0x17edbf += 0x1) _0x378b5c.simulateInputFn(0x0, _0x17edbf, 0x0), _0x378b5c.simulateInputFn(0x1, _0x17edbf, 0x0), _0x378b5c.simulateInputFn(0x2, _0x17edbf, 0x0), _0x378b5c.simulateInputFn(0x3, _0x17edbf, 0x0); - _0x378b5c.disableInput = true; - } else _0x378b5c.disableInput = !0x1; - }, 'isPaused': null, 'setVolume': null, 'setVariable': null, @@ -2905,16 +2849,16 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }) }, 'initShaders': function() { - for (var _0xa88a13 = _0x5032e6, _0x17edbf = Object.keys(_0xa88a13), _0x2c1832 = '', _0x26fb6a = 0x0; _0x26fb6a < _0x17edbf.length; _0x26fb6a += 0x1) _0x2c1832 = _0xa88a13[_0x17edbf[_0x26fb6a]], _0x27f4c4.FS.writeFile('/shader/' .concat(_0x17edbf[_0x26fb6a]), _0x2c1832), _0x2593da.storage.get('shader') === _0x17edbf[_0x26fb6a] && _0x27f4c4.FS.writeFile('/shader/shader.glslp', _0x2c1832); + for (let _0xa88a13 = _0x5032e6, _0x17edbf = Object.keys(_0xa88a13), _0x2c1832 = '', _0x26fb6a = 0x0; _0x26fb6a < _0x17edbf.length; _0x26fb6a += 0x1) _0x2c1832 = _0xa88a13[_0x17edbf[_0x26fb6a]], _0x27f4c4.FS.writeFile('/shader/' .concat(_0x17edbf[_0x26fb6a]), _0x2c1832), _0x2593da.storage.get('shader') === _0x17edbf[_0x26fb6a] && _0x27f4c4.FS.writeFile('/shader/shader.glslp', _0x2c1832); }, 'setGamepadDialog': function() { - var _0xa88a13 = this; - _0xa88a13.elements.dialogs.gamepad.innerHTML = '\n
\n
\n

'+_0xa88a13.localization('Control Settings')+'

\n
\n \n \n
\n
\n \n
\n
\n \n \n
\n '; + let _this = this; + _this.elements.dialogs.gamepad.innerHTML = '\n
\n
\n

'+_this.localization('Control Settings')+'

\n
\n \n \n
\n
\n \n
\n
\n \n \n
\n '; - var _0x17edbf = '\n '), - _0x2c1832 = '\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n '+_0xa88a13.localization('Set')+'\n
\n
\n
') - var _0x48ee51; - if ('nes' === _0xa88a13.system) { + let _0x17edbf = '\n '), + _0x2c1832 = '\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n '+_this.localization('Set')+'\n
\n
\n
') + let _0x48ee51; + if ('nes' === _this.system) { _0x48ee51 = { 0: 'B', 2: 'SELECT', @@ -2924,11 +2868,11 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 6: 'LEFT', 7: 'RIGHT', 8: 'A', - 24: _0xa88a13.localization('QUICK SAVE STATE'), - 25: _0xa88a13.localization('QUICK LOAD STATE'), - 26: _0xa88a13.localization('CHANGE STATE SLOT') + 24: _this.localization('QUICK SAVE STATE'), + 25: _this.localization('QUICK LOAD STATE'), + 26: _this.localization('CHANGE STATE SLOT') } - } else if ('snes' === _0xa88a13.system) { + } else if ('snes' === _this.system) { _0x48ee51 = { 0: 'B', 1: 'Y', @@ -2942,11 +2886,11 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 9: 'X', 10: 'L', 11: 'R', - 24: _0xa88a13.localization('QUICK SAVE STATE'), - 25: _0xa88a13.localization('QUICK LOAD STATE'), - 26: _0xa88a13.localization('CHANGE STATE SLOT') + 24: _this.localization('QUICK SAVE STATE'), + 25: _this.localization('QUICK LOAD STATE'), + 26: _this.localization('CHANGE STATE SLOT') }; - } else if ('n64' === _0xa88a13.system) { + } else if ('n64' === _this.system) { _0x48ee51 = { 0: 'B', 3: 'START', @@ -2966,16 +2910,17 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 22: 'R STICK DOWN', 21: 'R STICK LEFT', 20: 'R STICK RIGHT', - 24: _0xa88a13.localization('QUICK SAVE STATE'), - 25: _0xa88a13.localization('QUICK LOAD STATE'), - 26: _0xa88a13.localization('CHANGE STATE SLOT') + 24: _this.localization('QUICK SAVE STATE'), + 25: _this.localization('QUICK LOAD STATE'), + 26: _this.localization('CHANGE STATE SLOT') }; - if (_0xa88a13.coreVer === 2) { + // The new nintendo 64 core has new default buttons + if (_this.coreVer === 2) { _0x48ee51[0] = 'A'; _0x48ee51[1] = 'B'; delete _0x48ee51[8]; } - } else if ('nds' === _0xa88a13.system) { + } else if ('nds' === _this.system) { _0x48ee51 = { 0: 'B', 1: 'Y', @@ -2990,9 +2935,9 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 10: 'L', 11: 'R', 14: 'Microphone', - 24: _0xa88a13.localization('QUICK SAVE STATE'), - 25: _0xa88a13.localization('QUICK LOAD STATE'), - 26: _0xa88a13.localization('CHANGE STATE SLOT') + 24: _this.localization('QUICK SAVE STATE'), + 25: _this.localization('QUICK LOAD STATE'), + 26: _this.localization('CHANGE STATE SLOT') }; } else { _0x48ee51 = { @@ -3020,54 +2965,54 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 22: 'R STICK DOWN', 21: 'R STICK LEFT', 20: 'R STICK RIGHT', - 24: _0xa88a13.localization('QUICK SAVE STATE'), - 25: _0xa88a13.localization('QUICK LOAD STATE'), - 26: _0xa88a13.localization('CHANGE STATE SLOT') + 24: _this.localization('QUICK SAVE STATE'), + 25: _this.localization('QUICK LOAD STATE'), + 26: _this.localization('CHANGE STATE SLOT') }; } - if (['arcade', 'mame'].includes(_0xa88a13.system)) { - _0x48ee51[2] = _0xa88a13.localization('INSERT COIN'); + if (['arcade', 'mame'].includes(_this.system)) { + _0x48ee51[2] = _this.localization('INSERT COIN'); } - if (_0xa88a13.statesSupported === false) { + if (_this.statesSupported === false) { delete _0x48ee51[24]; delete _0x48ee51[25]; delete _0x48ee51[26]; } - for (var _0x501790 = [2, 3, 4, 5, 6, 7, 8, 0, 9, 1, 10, 11, 12, 13, 14, 15, 19, 18, 17, 16, 23, 22, 21, 20, 24, 25, 26], _0x50fd12 = function(_0x88827f) { - _0xa88a13.elements.dialogs.gamepad.querySelector('.' .concat(_0x378b5c.classNames['tabs-content'])).innerHTML += _0x17edbf.replace(/{index}/g, _0x88827f), _0x501790.forEach(function(_0x1bf162) { - _0x48ee51[_0x1bf162] && (_0xa88a13.elements.dialogs.gamepad.querySelector('#controls-' .concat(_0x88827f)).innerHTML += _0x2c1832.replace(/{index}/g, _0x88827f).replace(/{id}/g, _0x1bf162).replace(/{label}/g, _0x48ee51[_0x1bf162])); - }), _0xa88a13.elements.dialogs.gamepad.querySelector('[data-id="16"][data-index="' .concat(_0x88827f, '"][data-type="2"]')) && (_0xa88a13.elements.dialogs.gamepad.querySelector('[data-id="16"][data-index="' .concat(_0x88827f, '"][data-type="2"]')).style.backgroundColor = '#ccc'), _0xa88a13.elements.dialogs.gamepad.querySelector('[data-id="17"][data-index="' .concat(_0x88827f, '"][data-type="2"]')) && (_0xa88a13.elements.dialogs.gamepad.querySelector('[data-id="17"][data-index="' .concat(_0x88827f, '"][data-type="2"]')).style.backgroundColor = '#ccc'), _0xa88a13.elements.dialogs.gamepad.querySelector('[data-id="18"][data-index="' .concat(_0x88827f, '"][data-type="2"]')) && (_0xa88a13.elements.dialogs.gamepad.querySelector('[data-id="18"][data-index="' .concat(_0x88827f, '"][data-type="2"]')).style.backgroundColor = '#ccc'), _0xa88a13.elements.dialogs.gamepad.querySelector('[data-id="19"][data-index="' .concat(_0x88827f, '"][data-type="2"]')) && (_0xa88a13.elements.dialogs.gamepad.querySelector('[data-id="19"][data-index="' .concat(_0x88827f, '"][data-type="2"]')).style.backgroundColor = '#ccc'), _0xa88a13.elements.dialogs.gamepad.querySelector('[data-id="20"][data-index="' .concat(_0x88827f, '"][data-type="2"]')) && (_0xa88a13.elements.dialogs.gamepad.querySelector('[data-id="20"][data-index="' .concat(_0x88827f, '"][data-type="2"]')).style.backgroundColor = '#ccc'), _0xa88a13.elements.dialogs.gamepad.querySelector('[data-id="21"][data-index="' .concat(_0x88827f, '"][data-type="2"]')) && (_0xa88a13.elements.dialogs.gamepad.querySelector('[data-id="21"][data-index="' .concat(_0x88827f, '"][data-type="2"]')).style.backgroundColor = '#ccc'), _0xa88a13.elements.dialogs.gamepad.querySelector('[data-id="22"][data-index="' .concat(_0x88827f, '"][data-type="2"]')) && (_0xa88a13.elements.dialogs.gamepad.querySelector('[data-id="22"][data-index="' .concat(_0x88827f, '"][data-type="2"]')).style.backgroundColor = '#ccc'), _0xa88a13.elements.dialogs.gamepad.querySelector('[data-id="23"][data-index="' .concat(_0x88827f, '"][data-type="2"]')) && (_0xa88a13.elements.dialogs.gamepad.querySelector('[data-id="23"][data-index="' .concat(_0x88827f, '"][data-type="2"]')).style.backgroundColor = '#ccc'); + for (let _0x501790 = [2, 3, 4, 5, 6, 7, 8, 0, 9, 1, 10, 11, 12, 13, 14, 15, 19, 18, 17, 16, 23, 22, 21, 20, 24, 25, 26], _0x50fd12 = function(_0x88827f) { + _this.elements.dialogs.gamepad.querySelector('.' .concat(_0x378b5c.classNames['tabs-content'])).innerHTML += _0x17edbf.replace(/{index}/g, _0x88827f), _0x501790.forEach(function(_0x1bf162) { + _0x48ee51[_0x1bf162] && (_this.elements.dialogs.gamepad.querySelector('#controls-' .concat(_0x88827f)).innerHTML += _0x2c1832.replace(/{index}/g, _0x88827f).replace(/{id}/g, _0x1bf162).replace(/{label}/g, _0x48ee51[_0x1bf162])); + }), _this.elements.dialogs.gamepad.querySelector('[data-id="16"][data-index="' .concat(_0x88827f, '"][data-type="2"]')) && (_this.elements.dialogs.gamepad.querySelector('[data-id="16"][data-index="' .concat(_0x88827f, '"][data-type="2"]')).style.backgroundColor = '#ccc'), _this.elements.dialogs.gamepad.querySelector('[data-id="17"][data-index="' .concat(_0x88827f, '"][data-type="2"]')) && (_this.elements.dialogs.gamepad.querySelector('[data-id="17"][data-index="' .concat(_0x88827f, '"][data-type="2"]')).style.backgroundColor = '#ccc'), _this.elements.dialogs.gamepad.querySelector('[data-id="18"][data-index="' .concat(_0x88827f, '"][data-type="2"]')) && (_this.elements.dialogs.gamepad.querySelector('[data-id="18"][data-index="' .concat(_0x88827f, '"][data-type="2"]')).style.backgroundColor = '#ccc'), _this.elements.dialogs.gamepad.querySelector('[data-id="19"][data-index="' .concat(_0x88827f, '"][data-type="2"]')) && (_this.elements.dialogs.gamepad.querySelector('[data-id="19"][data-index="' .concat(_0x88827f, '"][data-type="2"]')).style.backgroundColor = '#ccc'), _this.elements.dialogs.gamepad.querySelector('[data-id="20"][data-index="' .concat(_0x88827f, '"][data-type="2"]')) && (_this.elements.dialogs.gamepad.querySelector('[data-id="20"][data-index="' .concat(_0x88827f, '"][data-type="2"]')).style.backgroundColor = '#ccc'), _this.elements.dialogs.gamepad.querySelector('[data-id="21"][data-index="' .concat(_0x88827f, '"][data-type="2"]')) && (_this.elements.dialogs.gamepad.querySelector('[data-id="21"][data-index="' .concat(_0x88827f, '"][data-type="2"]')).style.backgroundColor = '#ccc'), _this.elements.dialogs.gamepad.querySelector('[data-id="22"][data-index="' .concat(_0x88827f, '"][data-type="2"]')) && (_this.elements.dialogs.gamepad.querySelector('[data-id="22"][data-index="' .concat(_0x88827f, '"][data-type="2"]')).style.backgroundColor = '#ccc'), _this.elements.dialogs.gamepad.querySelector('[data-id="23"][data-index="' .concat(_0x88827f, '"][data-type="2"]')) && (_this.elements.dialogs.gamepad.querySelector('[data-id="23"][data-index="' .concat(_0x88827f, '"][data-type="2"]')).style.backgroundColor = '#ccc'); }, _0x3f0824 = 0x0; _0x3f0824 <= 0x3; _0x3f0824 += 0x1) _0x50fd12(_0x3f0824); Object.keys(_0x378b5c.controllers).forEach(function(_0x23d419) { _0x378b5c.controllers[_0x23d419] && Object.keys(_0x378b5c.controllers[_0x23d419]).forEach(function(_0x21e62d) { - var _0x294e35 = _0xa88a13.elements.dialogs.gamepad.querySelector('[data-id="' .concat(_0x21e62d, '"][data-index="').concat(_0x23d419, '"][data-type="1"]')), - _0x1849bc = _0xa88a13.elements.dialogs.gamepad.querySelector('[data-id="' .concat(_0x21e62d, '"][data-index="').concat(_0x23d419, '"][data-type="2"]')); + let _0x294e35 = _this.elements.dialogs.gamepad.querySelector('[data-id="' .concat(_0x21e62d, '"][data-index="').concat(_0x23d419, '"][data-type="1"]')), + _0x1849bc = _this.elements.dialogs.gamepad.querySelector('[data-id="' .concat(_0x21e62d, '"][data-index="').concat(_0x23d419, '"][data-type="2"]')); if (!_0x294e35 || !_0x1849bc) return !0x1; - var _0x19d43b = _0x378b5c.controllers[_0x23d419][_0x21e62d]; + let _0x19d43b = _0x378b5c.controllers[_0x23d419][_0x21e62d]; _0x19d43b && (_0x19d43b.type && 0x1 !== parseInt(_0x19d43b.type, 0xa) ? _0x1849bc.value = '' : _0x19d43b.value && (_0x294e35.value = _0x378b5c.keyMap[_0x19d43b.value] || '', _0x294e35.setAttribute('data-value', _0x19d43b.value)), _0x19d43b.value2 && (_0x1849bc.value = isNaN(_0x19d43b.value2) ? (_0x19d43b.value2) : ('button ' .concat(parseInt(_0x19d43b.value2, 0xa) + 0x1)), _0x1849bc.setAttribute('data-value', _0x19d43b.value2))); }); - }), _0x1093f4.call(this, _0xa88a13.elements.dialogs.gamepad.querySelector('.' .concat(_0x378b5c.classNames['btn-submit'])), 'click', function(_0x5f19bd) { - var _0x2c1832 = _0xa88a13.elements.dialogs.gamepad.querySelectorAll('input'), + }), _0x1093f4.call(this, _this.elements.dialogs.gamepad.querySelector('.' .concat(_0x378b5c.classNames['btn-submit'])), 'click', function(_0x5f19bd) { + let _0x2c1832 = _this.elements.dialogs.gamepad.querySelectorAll('input'), _0x2844f7 = {}; return Array.from(_0x2c1832).forEach(function(_0x33c024) { - var _0x5f19bd, _0x2c1832 = _0x33c024.getAttribute('data-index'), + let _0x5f19bd, _0x2c1832 = _0x33c024.getAttribute('data-index'), _0x124d0a = _0x33c024.getAttribute('data-value'); 0x2 === parseInt(_0x33c024.getAttribute('data-type'), 0xa) && (_0x5f19bd = _0x33c024.getAttribute('data-value')); - var _0x54b9af = _0x33c024.getAttribute('data-id'); + let _0x54b9af = _0x33c024.getAttribute('data-id'); _0x2844f7[_0x2c1832] || (_0x2844f7[_0x2c1832] = {}), _0x2844f7[_0x2c1832][_0x54b9af] || (_0x2844f7[_0x2c1832][_0x54b9af] = {}), _0x124d0a && (_0x2844f7[_0x2c1832][_0x54b9af].value = _0x124d0a), _0x5f19bd && (_0x2844f7[_0x2c1832][_0x54b9af].value2 = _0x5f19bd); }), _0x2593da.storage.set({ 'controllers': _0x2844f7 - }), _0x378b5c.controllers = _0x2844f7, _0x132da7(_0xa88a13.elements.dialogs.gamepad, true), _0xa88a13.elements.container.focus(), _0x5f19bd.stopPropagation(), !0x1; - }), _0x1093f4.call(this, _0xa88a13.elements.dialogs.gamepad.querySelector('.' .concat(_0x378b5c.classNames['btn-reset'])), 'click', function(_0x5f19bd) { + }), _0x378b5c.controllers = _0x2844f7, _0x132da7(_this.elements.dialogs.gamepad, true), _this.elements.container.focus(), _0x5f19bd.stopPropagation(), !0x1; + }), _0x1093f4.call(this, _this.elements.dialogs.gamepad.querySelector('.' .concat(_0x378b5c.classNames['btn-reset'])), 'click', function(_0x5f19bd) { _0x378b5c.controllers = JSON.parse(JSON.stringify(_0x378b5c.defaultControllers)) localStorage.removeItem(_0x2593da.storage.key) - var _0x2c1832 = _0xa88a13.elements.dialogs.gamepad.querySelectorAll('input') - for (var i=0; i<_0x2c1832.length; i++) { - var player = _0x2c1832[i].getAttribute('data-index') - var controlOrGamepad = _0x2c1832[i].getAttribute('data-type') - var buttonId = _0x2c1832[i].getAttribute('data-id') - var a = (controlOrGamepad == 1) ? 'value' : 'value2' + let _0x2c1832 = _this.elements.dialogs.gamepad.querySelectorAll('input') + for (let i=0; i<_0x2c1832.length; i++) { + let player = _0x2c1832[i].getAttribute('data-index') + let controlOrGamepad = _0x2c1832[i].getAttribute('data-type') + let buttonId = _0x2c1832[i].getAttribute('data-id') + let a = (controlOrGamepad == 1) ? 'value' : 'value2' if (_0x378b5c.defaultControllers[player] && _0x378b5c.defaultControllers[player][buttonId] && _0x378b5c.defaultControllers[player][buttonId][a]) { if (controlOrGamepad == 1) { _0x2c1832[i].value = _0x378b5c.keyMap[_0x378b5c.defaultControllers[player][buttonId][a]] @@ -3080,9 +3025,9 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x2c1832[i].setAttribute('data-value', '') } } - }), _0x1093f4.call(this, _0xa88a13.elements.dialogs.gamepad.querySelector('.' .concat(_0x378b5c.classNames['btn-clear'])), 'click', function(_0x5f19bd) { - var c = {0:{}, 1:{}, 2:{}, 3:{}}; - for (var k in _0x48ee51) { + }), _0x1093f4.call(this, _this.elements.dialogs.gamepad.querySelector('.' .concat(_0x378b5c.classNames['btn-clear'])), 'click', function(_0x5f19bd) { + let c = {0:{}, 1:{}, 2:{}, 3:{}}; + for (let k in _0x48ee51) { c[0][k] = {}; c[1][k] = {}; c[2][k] = {}; @@ -3090,52 +3035,52 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } _0x378b5c.controllers = c localStorage.setItem(_0x2593da.storage.key, JSON.stringify({controllers: _0x378b5c.controllers})) - var _0x2c1832 = _0xa88a13.elements.dialogs.gamepad.querySelectorAll('input') - for (var i=0; i<_0x2c1832.length; i++) { + let _0x2c1832 = _this.elements.dialogs.gamepad.querySelectorAll('input') + for (let i=0; i<_0x2c1832.length; i++) { _0x2c1832[i].value = ''; _0x2c1832[i].setAttribute('data-value', ''); } - }), _0x1093f4.call(this, _0xa88a13.elements.dialogs.gamepad.querySelector('.' .concat(_0x378b5c.classNames['btn-cancel'])), 'click', function(_0x16d598) { - return _0x132da7(_0xa88a13.elements.dialogs.gamepad, true), _0xa88a13.elements.container.focus(), _0x16d598.stopPropagation(), !0x1; - }), Array.from(_0xa88a13.elements.dialogs.gamepad.querySelectorAll('.' .concat(_0x378b5c.classNames.tabs, ' li'))).forEach(function(_0x523f7b) { - _0x1093f4.call(_0xa88a13, _0x523f7b, 'mousedown', function(_0xa99a78) { - _0x3a8e2f(_0xa88a13.elements.dialogs.gamepad.querySelectorAll('.' .concat(_0x378b5c.classNames.tabs, ' li')), _0x378b5c.classNames.active, false); + }), _0x1093f4.call(this, _this.elements.dialogs.gamepad.querySelector('.' .concat(_0x378b5c.classNames['btn-cancel'])), 'click', function(_0x16d598) { + return _0x132da7(_this.elements.dialogs.gamepad, true), _this.elements.container.focus(), _0x16d598.stopPropagation(), !0x1; + }), Array.from(_this.elements.dialogs.gamepad.querySelectorAll('.' .concat(_0x378b5c.classNames.tabs, ' li'))).forEach(function(_0x523f7b) { + _0x1093f4.call(_this, _0x523f7b, 'mousedown', function(_0xa99a78) { + _0x3a8e2f(_this.elements.dialogs.gamepad.querySelectorAll('.' .concat(_0x378b5c.classNames.tabs, ' li')), _0x378b5c.classNames.active, false); _0x3a8e2f(_0x523f7b, _0x378b5c.classNames.active, true); - var _0xb8a227 = _0x523f7b.querySelector('a').getAttribute('aria-controls'); - Array.from(_0xa88a13.elements.dialogs.gamepad.querySelectorAll('.' .concat(_0x378b5c.classNames['tabs-content'], ' .').concat(_0x378b5c.classNames['tabs-panel']))).forEach(function(_0x1c29a4) { + let _0xb8a227 = _0x523f7b.querySelector('a').getAttribute('aria-controls'); + Array.from(_this.elements.dialogs.gamepad.querySelectorAll('.' .concat(_0x378b5c.classNames['tabs-content'], ' .').concat(_0x378b5c.classNames['tabs-panel']))).forEach(function(_0x1c29a4) { _0x132da7(_0x1c29a4, true); }); - _0x132da7(_0xa88a13.elements.dialogs.gamepad.querySelector('.' .concat(_0x378b5c.classNames['tabs-content'], ' #').concat(_0xb8a227)), false); + _0x132da7(_this.elements.dialogs.gamepad.querySelector('.' .concat(_0x378b5c.classNames['tabs-content'], ' #').concat(_0xb8a227)), false); _0xa99a78.stopPropagation(); return false; }); - }), _0xbae705.call(_0xa88a13, _0xa88a13.elements.dialogs.gamepad.querySelector('[aria-controls="controls-0"]').parentNode, 'mousedown'); - var _0x11b11a = _0xa88a13.elements.dialogs.gamepad.querySelector('.' .concat(_0x378b5c.classNames.overlay)); - _0x1093f4.call(_0xa88a13, _0x11b11a, 'mousedown', function(_0x15c7de) { + }), _0xbae705.call(_this, _this.elements.dialogs.gamepad.querySelector('[aria-controls="controls-0"]').parentNode, 'mousedown'); + let _0x11b11a = _this.elements.dialogs.gamepad.querySelector('.' .concat(_0x378b5c.classNames.overlay)); + _0x1093f4.call(_this, _0x11b11a, 'mousedown', function(_0x15c7de) { _0x132da7(_0x11b11a, true), _0x15c7de.stopPropagation(); - }), Array.from(_0xa88a13.elements.dialogs.gamepad.querySelectorAll('.' .concat(_0x378b5c.classNames['button-container']))).forEach(function(_0x16f092) { - _0x1093f4.call(_0xa88a13, _0x16f092, 'mousedown', function(_0xdb1c93) { - _0xbae705.call(_0xa88a13, _0x16f092.querySelector('a.' .concat(_0x378b5c.classNames.set)), _0xdb1c93.type, true, {}); + }), Array.from(_this.elements.dialogs.gamepad.querySelectorAll('.' .concat(_0x378b5c.classNames['button-container']))).forEach(function(_0x16f092) { + _0x1093f4.call(_this, _0x16f092, 'mousedown', function(_0xdb1c93) { + _0xbae705.call(_this, _0x16f092.querySelector('a.' .concat(_0x378b5c.classNames.set)), _0xdb1c93.type, true, {}); }); - }), Array.from(_0xa88a13.elements.dialogs.gamepad.querySelectorAll('.' .concat(_0x378b5c.classNames['tabs-panel'], ' a.').concat(_0x378b5c.classNames.set))).forEach(function(_0x397818) { - _0x1093f4.call(_0xa88a13, _0x397818, 'mousedown', function(_0x1e1d79) { - var _0x2c1832 = _0x397818.parentNode.parentNode, + }), Array.from(_this.elements.dialogs.gamepad.querySelectorAll('.' .concat(_0x378b5c.classNames['tabs-panel'], ' a.').concat(_0x378b5c.classNames.set))).forEach(function(_0x397818) { + _0x1093f4.call(_this, _0x397818, 'mousedown', function(_0x1e1d79) { + let _0x2c1832 = _0x397818.parentNode.parentNode, _0x4e649c = _0x2c1832.getAttribute('data-id'), _0x431719 = _0x2c1832.getAttribute('data-index'), _0x4a6f6f = _0x2c1832.getAttribute('data-label'); _0x132da7(_0x11b11a, !0x1), _0x11b11a.setAttribute('data-id', _0x4e649c); _0x11b11a.setAttribute('data-index', _0x431719); - var _0x179623 = '[ ' .concat(_0x4a6f6f, ' ]'); - _0x378b5c.gamepad.gamepads[_0x431719] && _0x4e649c < 16 ? _0x179623 += '
Gamepad:' .concat(_0x378b5c.gamepad.gamepads[_0x431719].id, '
'+_0xa88a13.localization('Press keyboard or gamepad')+'
'+_0xa88a13.localization('Press escape (esc) to clear')) : _0x179623 += '
Press keyboard
'+_0xa88a13.localization('Press escape (esc) to clear'), _0x11b11a.querySelector('.' .concat(_0x378b5c.classNames['key-setting-popup'])).innerHTML = _0x179623, _0x1e1d79.stopPropagation(); + let _0x179623 = '[ ' .concat(_0x4a6f6f, ' ]'); + _0x378b5c.gamepad.gamepads[_0x431719] && _0x4e649c < 16 ? _0x179623 += '
Gamepad:' .concat(_0x378b5c.gamepad.gamepads[_0x431719].id, '
'+_this.localization('Press keyboard or gamepad')+'
'+_this.localization('Press escape (esc) to clear')) : _0x179623 += '
Press keyboard
'+_this.localization('Press escape (esc) to clear'), _0x11b11a.querySelector('.' .concat(_0x378b5c.classNames['key-setting-popup'])).innerHTML = _0x179623, _0x1e1d79.stopPropagation(); }); }); }, 'setCacheDialog': function() { - var _0xa88a13 = this; - _0xa88a13.elements.dialogs.cache.innerHTML = '\n
\n
\n

'+_0xa88a13.localization('Cache Manager')+'

\n
\n
\n\n
\n \n
\n '), _0x1093f4.call(this, _0xa88a13.elements.dialogs.cache.querySelector('.' .concat(_0x378b5c.classNames['btn-cancel'])), 'click', function(_0x5d6721) { - return _0x132da7(_0xa88a13.elements.dialogs.cache, true), _0xa88a13.elements.container.focus(), _0x5d6721.stopPropagation(), !0x1; - }), _0x1093f4.call(this, _0xa88a13.elements.dialogs.cache.querySelector('.' .concat(_0x378b5c.classNames['dialog-title'], ' a')), 'click', function(_0x46992d) { - return _0x27f4c4.romdb && (_0x27f4c4.romdb.clear(), _0xa88a13.elements.dialogs.cache.querySelector('.' .concat(_0x378b5c.classNames['dialog-content'])).innerHTML = '
'+_0xa88a13.localization('Empty')+'
'), _0x46992d.stopPropagation(), !0x1; + let _this = this; + _this.elements.dialogs.cache.innerHTML = '\n
\n
\n

'+_this.localization('Cache Manager')+'

\n
\n
\n\n
\n \n
\n '), _0x1093f4.call(this, _this.elements.dialogs.cache.querySelector('.' .concat(_0x378b5c.classNames['btn-cancel'])), 'click', function(_0x5d6721) { + return _0x132da7(_this.elements.dialogs.cache, true), _this.elements.container.focus(), _0x5d6721.stopPropagation(), !0x1; + }), _0x1093f4.call(this, _this.elements.dialogs.cache.querySelector('.' .concat(_0x378b5c.classNames['dialog-title'], ' a')), 'click', function(_0x46992d) { + return _0x27f4c4.romdb && (_0x27f4c4.romdb.clear(), _this.elements.dialogs.cache.querySelector('.' .concat(_0x378b5c.classNames['dialog-content'])).innerHTML = '
'+_this.localization('Empty')+'
'), _0x46992d.stopPropagation(), !0x1; }); }, 'showLoading': function(_0x108b55) { @@ -3150,51 +3095,58 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { this.elements.dialogs.loading && (this.elements.dialogs.loading.innerHTML = '\n ')); }, 'setCheatDialog': function() { - var _0xa88a13 = this; - if (_0xa88a13.elements.dialogs.cheat) { - _0xa88a13.elements.dialogs.cheat.innerHTML = '\n
\n
\n

Cheats

\n
\n
\n
\n \n
\n
\n \n
\n\n \n\n \n '); - var _0x17edbf = _0xa88a13.elements.dialogs.cheat.querySelector('#modal-85cd7a1c543a484b'); - _0x1093f4.call(this, _0xa88a13.elements.dialogs.cheat.querySelector('.' .concat(_0x378b5c.classNames['cheats-add'])), 'click', function(_0x2a74b5) { + let _this = this; + if (_this.elements.dialogs.cheat) { + _this.elements.dialogs.cheat.innerHTML = '\n
\n
\n

Cheats

\n
\n
\n
\n \n
\n
\n \n
\n\n \n\n \n '); + let _0x17edbf = _this.elements.dialogs.cheat.querySelector('#modal-85cd7a1c543a484b'); + _0x1093f4.call(this, _this.elements.dialogs.cheat.querySelector('.' .concat(_0x378b5c.classNames['cheats-add'])), 'click', function(_0x2a74b5) { return _0x4d8495.show('modal-85cd7a1c543a484b', { 'closeTrigger': 'data-modal-close' }), !0x1; }); - var _0x2c1832 = _0xa88a13.elements.dialogs.cheat.querySelector('.' .concat(_0x378b5c.classNames['cheats-list'])); + let _0x2c1832 = _this.elements.dialogs.cheat.querySelector('.' .concat(_0x378b5c.classNames['cheats-list'])); _0x1093f4.call(this, _0x17edbf.querySelector('.' .concat(_0x378b5c.classNames['modal__btn-primary'])), 'click', function(_0x1c01ce) { - var _0x184e2c = _0x17edbf.querySelector('.' .concat(_0x378b5c.classNames['cheat-name-input'])).value, + let _0x184e2c = _0x17edbf.querySelector('.' .concat(_0x378b5c.classNames['cheat-name-input'])).value, _0x15ccbb = _0x17edbf.querySelector('.' .concat(_0x378b5c.classNames['cheat-code-input'])).value; if (_0x184e2c && _0x15ccbb) { - var _0x2c3108 = _0x2c1832.querySelectorAll('input:checked'); + let _0x2c3108 = _0x2c1832.querySelectorAll('input:checked'); _0x17edbf.querySelector('.' .concat(_0x378b5c.classNames['cheat-name-input'])).value = '', _0x17edbf.querySelector('.' .concat(_0x378b5c.classNames['cheat-code-input'])).value = '', _0x4d8495.close(); - var _0x5b2cff = _0xa88a13.cheats.length; - _0xa88a13.cheats.push([_0x184e2c, _0x15ccbb]), _0x2c1832.innerHTML += '
\n \n \n ×\n
'), _0x2c3108.forEach(function(_0x1fb248, _0x7bb84b) { + let _0x5b2cff = _this.cheats.length; + _this.cheats.push([_0x184e2c, _0x15ccbb]), _0x2c1832.innerHTML += '
\n \n \n ×\n
'), _0x2c3108.forEach(function(_0x1fb248, _0x7bb84b) { _0x2c1832.querySelector('#ejs-cheat-switch-' .concat(_0x7bb84b)).setAttribute('checked', 'checked'); }); } - return 'localStorage' in window && localStorage.setItem('' .concat(_0xa88a13.system, '-').concat(_0xa88a13.startName, '-cheats'), JSON.stringify(_0xa88a13.cheats)), _0x1c01ce.stopPropagation(), !0x1; + if ('localStorage' in window && _this.getStartName()) { + localStorage.setItem('' .concat(_this.system, '-').concat(_this.getStartName(), '-cheats'), JSON.stringify(_this.cheats)); + _0x1c01ce.stopPropagation(); + } + return false; }); - var _0x257001 = function() { - if ('localStorage' in window) { - var _0x17edbf = localStorage.getItem('' .concat(_0xa88a13.system, '-').concat(_0xa88a13.startName, '-cheats')); + let _0x257001 = function() { + if ('localStorage' in window && _this.getStartName()) { + let _0x17edbf = localStorage.getItem('' .concat(_this.system, '-').concat(_this.getStartName(), '-cheats')); try { _0x17edbf = JSON.parse(_0x17edbf); } catch (_0x101b3e) {} - _0x17edbf && (_0xa88a13.cheats = _0x17edbf); + _0x17edbf && (_this.cheats = _0x17edbf); } _0x2c1832.innerHTML = ''; - if (_0xa88a13.cheats && Array.isArray(_0xa88a13.cheats)) { - _0xa88a13.cheats.forEach(function(_0x245035, _0x116996) { - var _0x4ac35a = _0x245035[0x0]; + if (_this.cheats && Array.isArray(_this.cheats)) { + _this.cheats.forEach(function(_0x245035, _0x116996) { + let _0x4ac35a = _0x245035[0x0]; _0x245035[0x1]; _0x2c1832.innerHTML += '
\n \n \n ×\n
'); }); } }; - _0x1093f4.call(_0xa88a13, _0x2c1832, 'click', function(_0x576733) { + _0x1093f4.call(_this, _0x2c1832, 'click', function(_0x576733) { if (_0x576733.target && _0x576733.target.classList.contains(_0x378b5c.classNames['ejs-delete-cheat']) && _0x576733.target.getAttribute('data-idx')) { - var _0x5b10b7 = _0x576733.target.getAttribute('data-idx'); - _0xa88a13.cheats.splice(_0x5b10b7, 0x1), 'localStorage' in window && localStorage.setItem('' .concat(_0xa88a13.system, '-').concat(_0xa88a13.startName, '-cheats'), JSON.stringify(_0xa88a13.cheats)); - var _0x557895 = []; + let _0x5b10b7 = _0x576733.target.getAttribute('data-idx'); + _this.cheats.splice(_0x5b10b7, 0x1); + if ('localStorage' in window && _this.getStartName()) { + localStorage.setItem('' .concat(_this.system, '-').concat(_this.getStartName(), '-cheats'), JSON.stringify(_this.cheats)); + } + let _0x557895 = []; _0x2c1832.querySelectorAll('input').forEach(function(_0xab0ba8, _0x1f3597) { _0x557895[_0x1f3597] = !!_0x2c1832.querySelector('#ejs-cheat-switch-' .concat(_0x1f3597, ':checked')); }), _0x557895.splice(_0x5b10b7, 0x1), _0x257001(), _0x557895.forEach(function(_0x2e22be, _0x2247c4) { @@ -3202,25 +3154,25 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }); } return _0x576733.stopPropagation(), !0x1; - }), _0x1093f4.call(_0xa88a13, _0xa88a13.elements.container, 'start-game', function(_0x4c266e) { + }), _0x1093f4.call(_this, _this.elements.container, 'start-game', function(_0x4c266e) { _0x257001(); - }), _0x1093f4.call(this, _0xa88a13.elements.dialogs.cheat.querySelector('.' .concat(_0x378b5c.classNames['btn-cancel'])), 'click', function(_0x4adb2c) { - return _0x132da7(_0xa88a13.elements.dialogs.cheat, true), _0x4adb2c.stopPropagation(), _0xa88a13.elements.container.focus(), !0x1; - }), _0x1093f4.call(this, _0xa88a13.elements.dialogs.cheat.querySelector('.' .concat(_0x378b5c.classNames['btn-submit'])), 'click', function(_0x5785f6) { + }), _0x1093f4.call(this, _this.elements.dialogs.cheat.querySelector('.' .concat(_0x378b5c.classNames['btn-cancel'])), 'click', function(_0x4adb2c) { + return _0x132da7(_this.elements.dialogs.cheat, true), _0x4adb2c.stopPropagation(), _this.elements.container.focus(), !0x1; + }), _0x1093f4.call(this, _this.elements.dialogs.cheat.querySelector('.' .concat(_0x378b5c.classNames['btn-submit'])), 'click', function(_0x5785f6) { _0x378b5c.resetCheat(); _0x2c1832.querySelectorAll('input:checked').forEach(function(_0xeb7426, _0x45b02d) { - var _0x27e2c1 = _0xa88a13.cheats[_0xeb7426.value]; + let _0x27e2c1 = _this.cheats[_0xeb7426.value]; _0x27e2c1 && _0x378b5c.setCheat(_0x45b02d, 1, _0x27e2c1[1]); }); - _0x132da7(_0xa88a13.elements.dialogs.cheat, true); - _0xa88a13.elements.container.focus(); + _0x132da7(_this.elements.dialogs.cheat, true); + _this.elements.container.focus(); return false; - }), 'arcade' !== _0xa88a13.system && 'mame' !== _0xa88a13.system && 'mame2003' !== _0xa88a13.system && 'mame2010' !== _0xa88a13.system || (_0x1e2c68.element(_0xa88a13.elements.buttons.cheat) && _0x132da7(_0xa88a13.elements.buttons.cheat, true), _0x378b5c.allowCheat = !0x1), _0x378b5c.setCheat || (_0x132da7(_0xa88a13.elements.buttons.cheat, true), _0x378b5c.allowCheat = !0x1); + }), 'arcade' !== _this.system && 'mame' !== _this.system && 'mame2003' !== _this.system && 'mame2010' !== _this.system || (_0x1e2c68.element(_this.elements.buttons.cheat) && _0x132da7(_this.elements.buttons.cheat, true), _0x378b5c.allowCheat = !0x1), _0x378b5c.setCheat || (_0x132da7(_this.elements.buttons.cheat, true), _0x378b5c.allowCheat = !0x1); } }, /* 'setNetplayDialog': function() { - var _0xa88a13 = this, + let _this = this, _0x17edbf = this; if (_0x17edbf.elements.dialogs.netplay) { _0x17edbf.elements.dialogs.netplay.innerHTML = '\n
\n
\n

'+_0x17edbf.localization('Netplay')+'

\n
\n
\n \n\n \n
\n \n
\n\n \n \n \n \n \n \n \n \n \n \n '); @@ -3231,16 +3183,16 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } },*/ 'initKeyboard': function() { - var _0xa88a13 = this, + let _this = this, _0x17edbf = this, _0x2c1832 = this.elements.dialogs.gamepad.querySelector('.' .concat(_0x378b5c.classNames.overlay)); _0x1093f4.call(this, document.body, 'keydown keyup', function(_0x459b32) { if (_0x459b32.which >= 0x70 && _0x459b32.which <= 0x7b); else { - var _0x335c01 = !_0xa88a13.elements.dialogs.gamepad.hidden && !_0x2c1832.hidden, + let _0x335c01 = !_this.elements.dialogs.gamepad.hidden && !_0x2c1832.hidden, _0x2eb03e = 'keydown' === _0x459b32.type; if (_0x2eb03e && _0x335c01) { - var _0x1a3a47 = _0x2c1832.getAttribute('data-index'), + let _0x1a3a47 = _0x2c1832.getAttribute('data-index'), _0x1394cb = _0x2c1832.getAttribute('data-id'), _0x2c8fd1 = null; if (_0x459b32.key && _0x378b5c.keyMap[_0x459b32.keyCode] === 'escape') { @@ -3251,9 +3203,9 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x132da7(_0x2c1832, true); return; }; - var _0x1a3a47 = _0x2c1832.getAttribute('data-index'), - _0x1394cb = _0x2c1832.getAttribute('data-id'), - _0x2c8fd1 = null; + _0x1a3a47 = _0x2c1832.getAttribute('data-index'); + _0x1394cb = _0x2c1832.getAttribute('data-id'); + _0x2c8fd1 = null; _0x459b32.key && ((_0x2c8fd1 = _0x17edbf.elements.dialogs.gamepad.querySelector('[data-id="' .concat(_0x1394cb, '"][data-index="').concat(_0x1a3a47, '"][data-type="1"]'))).setAttribute('data-value', _0x459b32.keyCode), _0x2c8fd1.value = _0x378b5c.keyMap[_0x459b32.keyCode]), _0x132da7(_0x2c1832, true); } else Object.keys(_0x378b5c.controllers).forEach(function(_0x3863d2) { Object.keys(_0x378b5c.controllers[_0x3863d2]).forEach(function(_0x509939) { @@ -3272,15 +3224,15 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }); } }), document.body.addEventListener('keydown', function(_0x14d612) { - var _0x2c1832 = _0x14d612.keyCode ? _0x14d612.keyCode : _0x14d612.which; + let _0x2c1832 = _0x14d612.keyCode ? _0x14d612.keyCode : _0x14d612.which; [0x20, 0x25, 0x26, 0x27, 0x28, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b].includes(_0x2c1832) && _0x14d612.srcElement === _0x17edbf.elements.container && _0x14d612.preventDefault(), _0x14d612.srcElement.className.split(/ +/).includes(_0x378b5c.classNames.set) && _0x14d612.preventDefault(); }); }, 'initGamepad': function() { - var _0xa88a13 = this, + let _this = this, _0x17edbf = this, _0x2c1832 = this.elements.dialogs.gamepad.querySelector('.' .concat(_0x378b5c.classNames.overlay)); - var gamepad; + let gamepad; try { gamepad = new _0x4ad1c6(); } catch(e) { @@ -3289,15 +3241,15 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } _0x378b5c.gamepad = gamepad; gamepad.on('buttondown', function(event) { - if (!_0xa88a13.elements.dialogs.gamepad.hidden && !_0x2c1832.hidden) { - var _0x387018, _0xdd4205 = parseInt(_0x2c1832.getAttribute('data-index'), 0xa), + if (!_this.elements.dialogs.gamepad.hidden && !_0x2c1832.hidden) { + let _0x387018, _0xdd4205 = parseInt(_0x2c1832.getAttribute('data-index'), 0xa), _0x1f4ee2 = _0x2c1832.getAttribute('data-id'); if (event.gamepadIndex === parseInt(_0xdd4205, 0xa)) { - var _0x126d2d = null; + let _0x126d2d = null; (_0x126d2d = _0x17edbf.elements.dialogs.gamepad.querySelector('[data-id="' .concat(_0x1f4ee2, '"][data-index="').concat(_0xdd4205, '"][data-type="2"]'))).setAttribute('data-value', event.index), _0x126d2d.value = 'button ' .concat(event.index + 0x1), _0x132da7(_0x2c1832, true); } } else Object.keys(_0x378b5c.controllers[event.gamepadIndex.toString()]).forEach(function(_0x3cf4d3) { - var _0x5cf388 = event.gamepadIndex.toString(); + let _0x5cf388 = event.gamepadIndex.toString(); if (parseInt(_0x378b5c.controllers[_0x5cf388][_0x3cf4d3].value2, 0xa) === parseInt(event.index, 0xa) && ['24', '25', '26'].includes(_0x3cf4d3)) { if (_0x3cf4d3 == '24') {//save _0x378b5c.quickSaveState() @@ -3318,18 +3270,18 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }); }); gamepad.on('axischanged', function(event) { - var value = function(value) { + let value = function(value) { if (value > 0.5 || value < -0.5) { return (value > 0) ? 1 : -1; } else { return 0; } }(event.value); - if (!_0xa88a13.elements.dialogs.gamepad.hidden && !_0x2c1832.hidden) { + if (!_this.elements.dialogs.gamepad.hidden && !_0x2c1832.hidden) { if (value !== 0) { - var _0x1f4ee2 = _0x2c1832.getAttribute('data-id'), + let _0x1f4ee2 = _0x2c1832.getAttribute('data-id'), _0xdd4205 = parseInt(_0x2c1832.getAttribute('data-index'), 0xa); - var _0x126d2d = _0xa88a13.elements.dialogs.gamepad.querySelector('[data-id="' .concat(_0x1f4ee2, '"][data-index="').concat(_0xdd4205, '"][data-type="2"]')) + let _0x126d2d = _this.elements.dialogs.gamepad.querySelector('[data-id="' .concat(_0x1f4ee2, '"][data-index="').concat(_0xdd4205, '"][data-type="2"]')) _0x126d2d.setAttribute('data-value', event.axis + ':' + value) _0x126d2d.value = event.axis + ':' + value _0x132da7(_0x2c1832, true) @@ -3338,8 +3290,8 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { if (! _0x378b5c.prevButtons) { _0x378b5c.prevButtons = {} } - var quit = false - var _0x5cf388 = event.gamepadIndex.toString(); + let quit = false + let _0x5cf388 = event.gamepadIndex.toString(); if (! _0x378b5c.prevButtons[_0x5cf388]) { _0x378b5c.prevButtons[_0x5cf388] = {} } @@ -3349,8 +3301,8 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { if (! _0x378b5c.prevButtons[_0x5cf388].buttonID) { _0x378b5c.prevButtons[_0x5cf388].buttonID = 0 } - for (var w=0; w 0) { _0x378b5c.simulateInput(_0x17edbf, 16, 0x7fff * event.value); @@ -3432,13 +3384,13 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }); gamepad.on('disconnected', function(event) { [0, 1, 2, 3].forEach(function(_0x429f30) { - var _0x2c1832 = gamepad.gamepads[_0x429f30]; + let _0x2c1832 = gamepad.gamepads[_0x429f30]; _0x17edbf.elements.dialogs.gamepad.querySelector('#controls-' .concat(_0x429f30, ' .gamepad-name')).innerHTML = _0x2c1832 ? _0x2c1832.id : 'n/a'; }); }); gamepad.on('connected', function(event) { Object.keys(gamepad.gamepads).forEach(function(_0x327c74) { - var _0x2c1832 = gamepad.gamepads[_0x327c74]; + let _0x2c1832 = gamepad.gamepads[_0x327c74]; _0x17edbf.elements.dialogs.gamepad.querySelector('#controls-' .concat(_0x327c74, ' .gamepad-name')).innerHTML = _0x2c1832 ? _0x2c1832.id : 'n/a'; }); }); @@ -3446,21 +3398,14 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'setShader': function(_0x4cbec3) { if ('disabled' === _0x4cbec3) _0x27f4c4.FS.unlink('/shader/shader.glslp', ''), _0x378b5c.toggleShader && _0x378b5c.toggleShader(0x0); else { - _0x378b5c.toggleShader && _0x378b5c.toggleShader(0x0); - var _0x17edbf = '/shader/' .concat(_0x4cbec3); - _0x27f4c4.FS.writeFile('/shader/shader.glslp', function(_0x52407e) { - if (!(_0x52407e instanceof Int32Array)) throw new Error('uintArrayToString: Only accepts Int32Array parameter'); - for (var _0x17edbf = '', _0x2c1832 = 0x0, _0x4d451e = _0x52407e.length; _0x2c1832 < _0x4d451e; _0x2c1832 += 0x1) { - var _0x37c7b6 = _0x52407e[_0x2c1832]; - if (_0x37c7b6 > 0xffff) throw new Error('Invalid value attempted to be serialised'); - _0x17edbf += String.fromCharCode(_0x37c7b6); - } - return _0x17edbf; - }(new Int32Array(_0x27f4c4.FS.readFile(_0x17edbf)))), _0x378b5c.toggleShader && _0x378b5c.toggleShader(0x1); + _0x378b5c.toggleShader && _0x378b5c.toggleShader(0); + let _0x17edbf = '/shader/' .concat(_0x4cbec3); + _0x27f4c4.FS.writeFile('/shader/shader.glslp', _0x27f4c4.FS.readFile(_0x17edbf)); + _0x378b5c.toggleShader && _0x378b5c.toggleShader(1); } }, 'toggleVirtualGamepad': function(_0x1ed80b) { - var _this = this; + let _this = this; if (null !== _0x378b5c.virtualGamepadContainer) { _0x132da7(_0x378b5c.virtualGamepadContainer, !_0x1ed80b); return @@ -3472,9 +3417,9 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'hidden': '' }); this.elements.container.appendChild(_0x378b5c.virtualGamepadContainer); - var blockCSS = 'height:31px;text-align:center;border:1px solid #ccc;border-radius:5px;line-height:31px;'; - var html = ''; - var info; + let blockCSS = 'height:31px;text-align:center;border:1px solid #ccc;border-radius:5px;line-height:31px;'; + let html = ''; + let info; if (_this.config.VirtualGamepadSettings && function(set) { if (!Array.isArray(set)) { @@ -3485,7 +3430,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { console.warn("Vritual gamepad settings is empty! Using default gamepad settings"); return false; } - for (var i=0; i'; html += '
'; - for (var i=0; i'; - for (var i=0; i'; - for (var i=0; i'; - for (var i=0; i= 0x1e && _0x2c1832 < 0x96 ? _0x378b5c.syncInput(0, inputs()[4], inputs().downVal) : window.setTimeout(function() { _0x378b5c.syncInput(0, inputs()[4], 0); }, 0x1e); @@ -3954,12 +3899,12 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }); } - var keys = []; - for (var i=0; i { - var element = _0x530042.call(_this, '.'.concat(_0x2c1832, ' .').concat(_0x449eac(a.id))); + let element = _0x530042.call(_this, '.'.concat(_0x2c1832, ' .').concat(_0x449eac(a.id))); if (!element) return; _0x1093f4.call(_this, element, 'touchstart touchend', function(e) { if (e.type === 'touchend') { @@ -3984,7 +3929,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }) }); - var menuButton = _0x428003('div', { + let menuButton = _0x428003('div', { 'class': _0x449eac({ 'ejs__widget': true, 'ejs__widget_controls_toggle': true @@ -3992,7 +3937,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }, ''); menuButton.innerHTML = ''; _0x530042.call(this, ".".concat(_0x449eac({ejs__widgets: true}))).appendChild(menuButton); - var hideTimeout; + let hideTimeout; _0x1093f4.call(this, menuButton, 'mousedown touchstart', function(e) { _0x3a8e2f(e.target, _0x2ec721, true); clearTimeout(hideTimeout); @@ -4003,23 +3948,23 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }); }, 'setup': function() { - var _0xa88a13 = this; + let _this = this; if (!this.game) { console.warn('No game element found!'); return; } - _0x378b5c.playerName = _0xa88a13.config.playerName; + _0x378b5c.playerName = _this.config.playerName; _0x3a8e2f(this.elements.container, this.config.classNames.type, true); this.elements.container.setAttribute('tabindex', '0'); if (this.color) { - var _0x17edbf = function(_0x175d8e) { - var _0x17edbf = _0x175d8e.toLowerCase(); + let _0x17edbf = function(_0x175d8e) { + let _0x17edbf = _0x175d8e.toLowerCase(); if (_0x17edbf && /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/ .test(_0x17edbf)) { if (0x4 === _0x17edbf.length) { - for (var _0x2c1832 = '#', _0x4c881f = 0x1; _0x4c881f < 0x4; _0x4c881f += 0x1) _0x2c1832 += _0x17edbf.slice(_0x4c881f, _0x4c881f + 0x1).concat(_0x17edbf.slice(_0x4c881f, _0x4c881f + 0x1)); + for (let _0x2c1832 = '#', _0x4c881f = 0x1; _0x4c881f < 0x4; _0x4c881f += 0x1) _0x2c1832 += _0x17edbf.slice(_0x4c881f, _0x4c881f + 0x1).concat(_0x17edbf.slice(_0x4c881f, _0x4c881f + 0x1)); _0x17edbf = _0x2c1832; } - for (var _0x5ac4ff = [], _0x324169 = 0x1; _0x324169 < 0x7; _0x324169 += 0x2) _0x5ac4ff.push(parseInt('0x' .concat(_0x17edbf.slice(_0x324169, _0x324169 + 0x2)), 0x10)); + for (let _0x5ac4ff = [], _0x324169 = 0x1; _0x324169 < 0x7; _0x324169 += 0x2) _0x5ac4ff.push(parseInt('0x' .concat(_0x17edbf.slice(_0x324169, _0x324169 + 0x2)), 0x10)); return _0x5ac4ff; } return null; @@ -4030,104 +3975,112 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'class': this.config.classNames.video }); _0x580edd(this.game, this.elements.wrapper); - if ('video' !== _0xa88a13.game.tagName.toLocaleLowerCase()) { - var _0x2c1832 = this.config.volume; - Object.defineProperty(_0xa88a13.game, 'volume', { + if ('video' !== _this.game.tagName.toLocaleLowerCase()) { + let _0x2c1832 = this.config.volume; + Object.defineProperty(_this.game, 'volume', { 'get': function() { return _0x2c1832; }, 'set': function(_0x4cca18) { - _0x2c1832 = _0x4cca18, _0xbae705.call(_0xa88a13, _0xa88a13.game, 'volumechange'); + _0x2c1832 = _0x4cca18, _0xbae705.call(_this, _this.game, 'volumechange'); } }); - var _0x541fe1 = _0xa88a13.storage.get('muted'); - Object.defineProperty(_0xa88a13.game, 'muted', { + let _0x541fe1 = _this.storage.get('muted'); + Object.defineProperty(_this.game, 'muted', { 'get': function() { return _0x541fe1; }, 'set': function(_0x54b6e0) { - var _0x2c1832 = !!_0x1e2c68.boolean(_0x54b6e0) && _0x54b6e0; - _0x541fe1 = _0x2c1832, _0xbae705.call(_0xa88a13, _0xa88a13.game, 'volumechange'); + let _0x2c1832 = !!_0x1e2c68.boolean(_0x54b6e0) && _0x54b6e0; + _0x541fe1 = _0x2c1832, _0xbae705.call(_this, _this.game, 'volumechange'); } }); } window.addEventListener('beforeunload', function(_0x34b11a) { - if (_0xa88a13.started) { + if (_this.started && _this.getStartName()) { _0x27f4c4.FS.syncfs(function() {}); _0x378b5c.saveSavFiles(); _0x27f4c4.FS.syncfs(function() {}); } }, true); + //Wille save savefiles to indexeddb + window.saveSaveFiles = function() { + if (!_this.getStartName()) return; + console.log('saving save files'); + _0x378b5c.saveSavFiles(); + _0x27f4c4.FS.syncfs(false, function() {}); + } setInterval(function() { - if (_0xa88a13.started) { - console.log('saving save files'); - _0x378b5c.saveSavFiles(); - _0x27f4c4.FS.syncfs(false, function() {}); + if (_this.started) { + saveSaveFiles(); } }, 300000) }, 'listeners': function() { - var _0xa88a13 = this; - _0xa88a13.elements.buttons.restart && _0x1093f4.call(_0xa88a13, _0xa88a13.elements.buttons.restart, 'click', function(_0x5cfc51) { + let _this = this; + _this.elements.buttons.restart && _0x1093f4.call(_this, _this.elements.buttons.restart, 'click', function(_0x5cfc51) { _0x378b5c.restartGame(); _0x378b5c.inputsData = {}; - }), _0xa88a13.elements.buttons.screenRecord && _0x1093f4.call(_0xa88a13, _0xa88a13.elements.buttons.screenRecord, 'click', function(_0x5cfc51) { - - if (! _0xa88a13.recordData) { - _0xa88a13.recordData = {started:false, data:[], stopped: false} + saveSaveFiles(); + }); + _this.elements.buttons.screenRecord && _0x1093f4.call(_this, _this.elements.buttons.screenRecord, 'click', function(_0x5cfc51) { + if (! _this.recordData) { + _this.recordData = {started:false, data:[], stopped: false}; } - if (! _0xa88a13.recordData.started) { //start recording + if (! _this.recordData.started) { //start recording + let options; if (MediaRecorder.isTypeSupported('video/webm; codecs=h264')) { - var options = {mimeType: 'video/webm; codecs=h264'}; + options = {mimeType: 'video/webm; codecs=h264'}; } else if (MediaRecorder.isTypeSupported('video/webm; codecs=H264')) { - var options = {mimeType: 'video/webm; codecs=H264'}; + options = {mimeType: 'video/webm; codecs=H264'}; } else if (MediaRecorder.isTypeSupported('video/webm; codecs=vp9')) { - var options = {mimeType: 'video/webm; codecs=vp9'}; + options = {mimeType: 'video/webm; codecs=vp9'}; } else if (MediaRecorder.isTypeSupported('video/webm; codecs=vp8')) { - var options = {mimeType: 'video/webm; codecs=vp8'}; + options = {mimeType: 'video/webm; codecs=vp8'}; } else if (MediaRecorder.isTypeSupported('video/webm; codecs=avc1')) { - var options = {mimeType: 'video/webm; codecs=avc1'}; + options = {mimeType: 'video/webm; codecs=avc1'}; } else if (MediaRecorder.isTypeSupported('video/webm; codecs=vp9.0')) { - var options = {mimeType: 'video/webm; codecs=vp9.0'}; + options = {mimeType: 'video/webm; codecs=vp9.0'}; } else if (MediaRecorder.isTypeSupported('video/webm; codecs=vp8.0')) { - var options = {mimeType: 'video/webm; codecs=vp8.0'}; + options = {mimeType: 'video/webm; codecs=vp8.0'}; } else { - var options = {}; + options = {}; } function gotStreams(stream) { - _0xa88a13.elements.buttons.screenRecord.querySelector('.'.concat(_0x449eac({ + _this.elements.buttons.screenRecord.querySelector('.'.concat(_0x449eac({ 'ejs__tooltip': true - }))).innerHTML = _0xa88a13.localization('Stop Screen Recording'); - _0xa88a13.recordData.stream = stream; - _0xa88a13.recordData.recorder = new MediaRecorder(_0xa88a13.recordData.stream, options); - _0xa88a13.recordData.recorder.ondataavailable = function(e) { + }))).innerHTML = _this.localization('Stop Screen Recording'); + _this.recordData.stream = stream; + _this.recordData.recorder = new MediaRecorder(_this.recordData.stream, options); + _this.recordData.recorder.ondataavailable = function(e) { if (e.data.size > 0) { - _0xa88a13.recordData.data.push(e.data) + _this.recordData.data.push(e.data) } - if (_0xa88a13.recordData.stopped) { - var a = document.createElement("a") - a.href = window.URL.createObjectURL(new Blob(_0xa88a13.recordData.data, {type: "video/webm"})) - if (typeof _0xa88a13.gameName == 'string') { - var aname = _0xa88a13.gameName + if (_this.recordData.stopped) { + let a = document.createElement("a") + a.href = window.URL.createObjectURL(new Blob(_this.recordData.data, {type: "video/webm"})) + let aname; + if (typeof _this.gameName == 'string') { + aname = _this.gameName } a.download = aname ? '' .concat(aname, '-recording.webm') : 'record.webm'; a.click() window.URL.revokeObjectURL(a.href) - delete _0xa88a13.recordData - _0xa88a13.elements.buttons.screenRecord.querySelector('.'.concat(_0x449eac({ + delete _this.recordData + _this.elements.buttons.screenRecord.querySelector('.'.concat(_0x449eac({ 'ejs__tooltip': true - }))).innerHTML = _0xa88a13.localization('Start Screen Recording'); + }))).innerHTML = _this.localization('Start Screen Recording'); } } - _0xa88a13.recordData.recorder.start() - _0xa88a13.recordData.started = true + _this.recordData.recorder.start() + _this.recordData.started = true } _0x27f4c4.Module.pauseMainLoop(); - _0xa88a13.playing = false; + _this.playing = false; alert('please check "share system audio" to have audio in the recording. We only need the audio stream so your entire screen will not be recorded'); - var canvasStream = _0x27f4c4.Module.canvas.captureStream(30); - var time = setTimeout(function() { - _0xa88a13.playing = true; + let canvasStream = _0x27f4c4.Module.canvas.captureStream(30); + let time = setTimeout(function() { + _this.playing = true; _0x27f4c4.Module.resumeMainLoop(); }, 20000); navigator.mediaDevices.getDisplayMedia({ @@ -4137,69 +4090,73 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { try { clearTimeout(time); }catch(e){} - var audio = stream.getAudioTracks(); - for (var i=0; i 0x0 && ((_0xfd246e = new FileReader()).file_name = _0x3fdd71[0x0].name, _0xfd246e.onload = function() { - var _0xa88a13 = new Uint8Array(_0xfd246e.result); - EJS_loadState(_0xa88a13); - }, _0xfd246e.readAsArrayBuffer(_0x3fdd71[0x0])), _0xa88a13.game.stateloadField = _0x428003('input'), _0xa88a13.game.stateloadField.type = 'file', _0xa88a13.game.stateloadField.onchange = _0x17edbf; - }, _0x1093f4.call(_0xa88a13, _0xa88a13.elements.container, 'loadstate', function(_0x13504c) { - if (_0x378b5c.saveLoadDB.call(_0xa88a13, 'load')) { + EJS_loadState(new Uint8Array(_0xfd246e.result)); + }, _0xfd246e.readAsArrayBuffer(_0x3fdd71[0x0])), _this.game.stateloadField = _0x428003('input'), _this.game.stateloadField.type = 'file', _this.game.stateloadField.onchange = _0x17edbf; + }; + _0x1093f4.call(_this, _this.elements.container, 'loadstate', function(_0x13504c) { + if (_0x378b5c.saveLoadDB.call(_this, 'load')) { return; } - _0x1e2c68.function(_0xa88a13.config.onloadstate) ? _0xa88a13.config.onloadstate.call(null, _0xa88a13.loadState) : _0xa88a13.game.stateloadField.click(), _0xa88a13.elements.container.focus(); - }), document.addEventListener('visibilitychange', function() { + _0x1e2c68.function(_this.config.onloadstate) ? _this.config.onloadstate.call(null, _this.loadState) : _this.game.stateloadField.click(), _this.elements.container.focus(); + }); + document.addEventListener('visibilitychange', function() { 'hidden' === document.visibilityState ? console.log('hidden') : console.log('active'); }); }, 'bindFunction': function() { - var _0xa88a13 = this, - _0x17edbf = _0xa88a13.system; + let _this = this, + _0x17edbf = _this.system; if (_0x27f4c4.Module && _0x27f4c4.Module._set_volume) { - var _0x2c1832 = _0x27f4c4.Module.cwrap('set_volume', 'null', ['number']); + let _0x2c1832 = _0x27f4c4.Module.cwrap('set_volume', 'null', ['number']); _0x378b5c.setVolume = function() { - var _0x17edbf = 0x0; - _0xa88a13.volume < 0x1 && (_0x17edbf = 0x0 === _0xa88a13.volume ? -0x50 : 0x1e * _0xa88a13.volume - 0x1e, _0x2c1832(_0x17edbf)), _0xa88a13.muted && (_0x17edbf = -0x50), _0x2c1832(_0x17edbf); + let _0x17edbf = 0x0; + _this.volume < 0x1 && (_0x17edbf = 0x0 === _this.volume ? -0x50 : 0x1e * _this.volume - 0x1e, _0x2c1832(_0x17edbf)), _this.muted && (_0x17edbf = -0x50), _0x2c1832(_0x17edbf); }; } _0x378b5c.setVariable = _0x27f4c4.Module.cwrap('set_variable', 'null', ['string', 'string']); _0x378b5c.simulateInputFn = _0x27f4c4.Module.cwrap('simulate_input', 'null', ['number', 'number', 'number']); _0x378b5c.simulateInput = function(_0x249751, _0x480d05, _0x50f784) { - _0x378b5c.disableInput || _0x378b5c.simulateInputFn(_0x249751, _0x480d05, _0x50f784); + _0x378b5c.simulateInputFn(_0x249751, _0x480d05, _0x50f784); }; _0x378b5c.syncInput = _0x378b5c.simulateInput; window.simulateInput = _0x378b5c.simulateInput; - var _0x762355 = _0x27f4c4.Module.cwrap('shader_enable', 'null', ['number']); + let _0x762355 = _0x27f4c4.Module.cwrap('shader_enable', 'null', ['number']); _0x378b5c.toggleShader = function(_0x433182) { return _0x762355(_0x433182); } - if (_0xa88a13.coreVer !== 2) { + if (_this.coreVer !== 2) { _0x378b5c.getStateInfo = _0x27f4c4.Module.cwrap('get_state_info', 'string', []); } else { _0x378b5c.getInfoOfState = _0x27f4c4.Module.cwrap('get_state_info', 'string', []); @@ -4207,12 +4164,12 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x378b5c.getStateInfo = function() { _0x378b5c.getStateInfo1(); return new Promise(function(resolve, reject) { - var a = _0x378b5c.getInfoOfState(); + let a = _0x378b5c.getInfoOfState(); if (a) { resolve(a); return; } - var b = setInterval(function() { + let b = setInterval(function() { a = _0x378b5c.getInfoOfState(); if (a) { clearInterval(b); @@ -4223,23 +4180,23 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } } _0x378b5c.saveState = async function() { - var _0xa88a14; - var _0x17edbf; - if (_0xa88a13.coreVer !== 2) { + let _0xa88a14; + let _0x17edbf; + if (_this.coreVer !== 2) { _0x17edbf = _0x378b5c.getStateInfo().split('|'); } else { _0x17edbf = (await _0x378b5c.getStateInfo()).split('|'); } - var _0x2c1832 = _0x17edbf[0x0] >> 0x0; + let _0x2c1832 = _0x17edbf[0x0] >> 0x0; if (_0x2c1832 > 0x0) { _0xa88a14 = new Uint8Array(_0x2c1832); - for (var _0x2ef6be = _0x17edbf[0x1] >> 0x0, _0x3cc34b = 0x0; _0x3cc34b < _0x2c1832; _0x3cc34b++) _0xa88a14[_0x3cc34b] = _0x27f4c4.Module.getValue(_0x2ef6be + _0x3cc34b); + for (let _0x2ef6be = _0x17edbf[0x1] >> 0x0, _0x3cc34b = 0x0; _0x3cc34b < _0x2c1832; _0x3cc34b++) _0xa88a14[_0x3cc34b] = _0x27f4c4.Module.getValue(_0x2ef6be + _0x3cc34b); } return _0xa88a14; }; - var _0x25a7a2 = _0x27f4c4.Module.cwrap('load_state', 'number', ['string', 'number']); + let _0x25a7a2 = _0x27f4c4.Module.cwrap('load_state', 'number', ['string', 'number']); _0x378b5c.loadState = function(_0x4389ae, _0x1d4918) { - var _0x91cd69; + let _0x91cd69; _0x91cd69 = _0x4389ae; try { _0x27f4c4.FS.unlink('game.state'); @@ -4258,71 +4215,74 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x27f4c4.FS.unlink('game.state'); }, 100) } - _0xa88a13.elements.container.focus(); + _this.elements.container.focus(); }; _0x27f4c4.Module._set_cheat && (_0x378b5c.setCheat = _0x27f4c4.Module.cwrap('set_cheat', 'number', ['number', 'number', 'string'])); _0x27f4c4.Module._reset_cheat && (_0x378b5c.resetCheat = _0x27f4c4.Module._reset_cheat); _0x378b5c.quickSaveState = async function() { - if (_0xa88a13.started) { - if (_0xa88a13.statesSupported === false) { - _0xa88a13.elements.widgets.stateInfoDiv.innerHTML = 'CANNOT CURRENTLY SAVE STATE'; + if (_this.started) { + if (_this.statesSupported === false) { + _this.elements.widgets.stateInfoDiv.innerHTML = 'CANNOT CURRENTLY SAVE STATE'; clearTimeout(_0x378b5c.saveMsgTransitions); _0x378b5c.saveMsgTransitions = setTimeout(function() { - _0xa88a13.elements.widgets.stateInfoDiv.innerHTML = ''; + _this.elements.widgets.stateInfoDiv.innerHTML = ''; }, 1500) return; } + let slot; if (_0x2593da && typeof _0x2593da.getCoreOptionsValues == 'function') { - var slot = _0x2593da.getCoreOptionsValues()['save-state-slot']; + slot = _0x2593da.getCoreOptionsValues()['save-state-slot']; if (! slot) { slot = 1; } } else { - var slot = 1; + slot = 1; } - var name = slot + '-quick.state'; + let name = slot + '-quick.state'; try { _0x27f4c4.FS.unlink(name); } catch (_0x4b4d4c) {} try { - var _0x17edbf = await _0x378b5c.saveState(); + let _0x17edbf = await _0x378b5c.saveState(); _0x27f4c4.FS.createDataFile('/', name, _0x17edbf, true, true); - _0xa88a13.elements.widgets.stateInfoDiv.innerHTML = 'STATE SAVED TO SLOT ' + slot; + _this.elements.widgets.stateInfoDiv.innerHTML = 'STATE SAVED TO SLOT ' + slot; clearTimeout(_0x378b5c.saveMsgTransitions); _0x378b5c.saveMsgTransitions = setTimeout(function() { - _0xa88a13.elements.widgets.stateInfoDiv.innerHTML = ''; + _this.elements.widgets.stateInfoDiv.innerHTML = ''; }, 1500) } catch(e) { console.warn(e); - _0xa88a13.elements.widgets.stateInfoDiv.innerHTML = 'FAILED TO SAVE STATE TO SLOT ' + slot; + _this.elements.widgets.stateInfoDiv.innerHTML = 'FAILED TO SAVE STATE TO SLOT ' + slot; clearTimeout(_0x378b5c.saveMsgTransitions); _0x378b5c.saveMsgTransitions = setTimeout(function() { - _0xa88a13.elements.widgets.stateInfoDiv.innerHTML = ''; + _this.elements.widgets.stateInfoDiv.innerHTML = ''; }, 1500) } + saveSaveFiles(); } }; _0x378b5c.saveMsgTransitions = null; _0x378b5c.quickLoadState = function() { - if (_0xa88a13.started) { - if (_0xa88a13.statesSupported === false) { - _0xa88a13.elements.widgets.stateInfoDiv.innerHTML = 'CANNOT CURRENTLY LOAD STATE'; + if (_this.started) { + if (_this.statesSupported === false) { + _this.elements.widgets.stateInfoDiv.innerHTML = 'CANNOT CURRENTLY LOAD STATE'; clearTimeout(_0x378b5c.saveMsgTransitions); _0x378b5c.saveMsgTransitions = setTimeout(function() { - _0xa88a13.elements.widgets.stateInfoDiv.innerHTML = ''; + _this.elements.widgets.stateInfoDiv.innerHTML = ''; }, 1500) return; } + let slot; if (_0x2593da && typeof _0x2593da.getCoreOptionsValues == 'function') { - var slot = _0x2593da.getCoreOptionsValues()['save-state-slot']; + slot = _0x2593da.getCoreOptionsValues()['save-state-slot']; if (! slot) { slot = 1; } } else { - var slot = 1; + slot = 1; } - var name = slot + '-quick.state'; - var success = true; + let name = slot + '-quick.state'; + let success = true; try { _0x25a7a2(name, 0); if ('arcade' === _0x17edbf) { @@ -4335,26 +4295,27 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { success = false; } if (! success) { - _0xa88a13.elements.widgets.stateInfoDiv.innerHTML = 'FAILED TO LOAD STATE FROM SLOT ' + slot; + _this.elements.widgets.stateInfoDiv.innerHTML = 'FAILED TO LOAD STATE FROM SLOT ' + slot; } else { - _0xa88a13.elements.widgets.stateInfoDiv.innerHTML = 'LOADED STATE FROM SLOT ' + slot; + _this.elements.widgets.stateInfoDiv.innerHTML = 'LOADED STATE FROM SLOT ' + slot; } clearTimeout(_0x378b5c.saveMsgTransitions); _0x378b5c.saveMsgTransitions = setTimeout(function() { - _0xa88a13.elements.widgets.stateInfoDiv.innerHTML = ''; + _this.elements.widgets.stateInfoDiv.innerHTML = ''; }, 1500) + saveSaveFiles(); } }; _0x378b5c.changeStateSlot = function(e) { if (_0x2593da && typeof _0x2593da.getCoreOptionsValues == 'function') { - var slot = _0x2593da.getCoreOptionsValues()['save-state-slot']; + let slot = _0x2593da.getCoreOptionsValues()['save-state-slot']; if (! slot) { slot = 1; } } else { - var slot = 1; + let slot = 1; } - var newSlot; + let newSlot; if (typeof e != 'number') { newSlot = slot + 1; } else { @@ -4363,21 +4324,19 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { if (newSlot > 9) { newSlot = 1; } - _0x7f9f36.updateCoreOptions.call(_0xa88a13, 'save-state-slot', newSlot) - _0xa88a13.elements.widgets.stateInfoDiv.innerHTML = 'SET SAVE STATE SLOT TO ' + newSlot; + _0x7f9f36.updateCoreOptions.call(_this, 'save-state-slot', newSlot) + _this.elements.widgets.stateInfoDiv.innerHTML = 'SET SAVE STATE SLOT TO ' + newSlot; clearTimeout(_0x378b5c.saveMsgTransitions); _0x378b5c.saveMsgTransitions = setTimeout(function() { - _0xa88a13.elements.widgets.stateInfoDiv.innerHTML = ''; + _this.elements.widgets.stateInfoDiv.innerHTML = ''; }, 1500) }; window.EJS_loadState = function(_0x4dd6a5) { _0x378b5c.loadState(_0x4dd6a5, 0); }; - var _0x840cf4 = _0x27f4c4.Module.cwrap('cmd_take_screenshot', '', []); + let _0x840cf4 = _0x27f4c4.Module.cwrap('cmd_take_screenshot', '', []); _0x378b5c.getScreenData = function() { - _0x378b5c.toggleShader(0x0); _0x840cf4(); - _0x378b5c.toggleShader(0x1); return _0x27f4c4.FS.readFile('screenshot.png'); }; _0x378b5c.restartGame = _0x27f4c4.Module.cwrap('system_restart', '', []); @@ -4387,19 +4346,19 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x378b5c.controllers = _0x2593da.storage.get('controllers'); _0x378b5c.controllers || (_0x378b5c.controllers = JSON.parse(JSON.stringify(_0x378b5c.defaultControllers))); } - }, - _0xdcec2a = _0x378b5c; + } + let _0xdcec2a = _0x378b5c; function _0x5005e6(_0x7f3270, _0x477158) { return function(_0x20890f) { if (Array.isArray(_0x20890f)) return _0x20890f; }(_0x7f3270) || function(_0x557107, _0x409476) { - var _0x2c1832 = [], + let _0x2c1832 = [], _0x488a47 = true, _0x34f76e = !0x1, _0x19606f = void 0x0; try { - for (var _0x328f4d, _0x4d9086 = _0x557107[Symbol.iterator](); !(_0x488a47 = (_0x328f4d = _0x4d9086.next()).done) && (_0x2c1832.push(_0x328f4d.value), !_0x409476 || _0x2c1832.length !== _0x409476); _0x488a47 = true); + for (let _0x328f4d, _0x4d9086 = _0x557107[Symbol.iterator](); !(_0x488a47 = (_0x328f4d = _0x4d9086.next()).done) && (_0x2c1832.push(_0x328f4d.value), !_0x409476 || _0x2c1832.length !== _0x409476); _0x488a47 = true); } catch (_0x13c09a) { _0x34f76e = true, _0x19606f = _0x13c09a; } finally { @@ -4441,7 +4400,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } }, 'defaultCoreOptionsValues': function() { - var _0xa88a13 = {}; + let _0xa88a13 = {}; switch (this.system) { case 'pce': _0xa88a13 = { @@ -4464,11 +4423,11 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { return _0xa88a13; }, 'getCoreOptionsValues': function() { - var _0xa88a13 = _0x7f9f36.storage.get('core-options'); + let _0xa88a13 = _0x7f9f36.storage.get('core-options'); return _0x1e2c68.empty(_0xa88a13) && (_0xa88a13 = {}), _0xa88a13; }, 'getCoreOptions': function() { - var _0xa88a13 = {}; + let _0xa88a13 = {}; switch (this.system) { case 'nes': _0xa88a13.fceumm_palette = { @@ -4981,8 +4940,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'default': 1 } } - if (this.statesSupported === true && window.indexedDB && - (typeof this.gameName == 'string' || (typeof this.config.gameUrl == 'string' && !this.config.gameUrl.startsWith('blob:')))) { + if (this.statesSupported === true && window.indexedDB && this.getStartName()) { _0xa88a13['save-state-location'] = { 'label': this.localization('Save State Location'), 'options': { @@ -4992,12 +4950,12 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'default': 'download' } } - var _this = this; + let _this = this; _0xdcec2a.getGameCoreOptions && _0xdcec2a.getGameCoreOptions().split('\n').forEach(function(_0x2bef5a, _0x49b64b) { - var _0x5995db = _0x2bef5a.split('; '), + let _0x5995db = _0x2bef5a.split('; '), _0x16274c = _0x5995db[0x0]; if (0x0 === _0x16274c.indexOf('fba-dipswitch-') || _this.coreVer === 2) { - var _0x757776 = _0x5995db[0x1].split('|'), + let _0x757776 = _0x5995db[0x1].split('|'), _0x1f895e = _0x16274c.split("|")[0].replace(/_/g, ' ').replace(/.+\-(.+)/, '$1'); _0x757776.slice(1, -1); if (_0x757776.length === 1) return; @@ -5014,7 +4972,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { /* 'supportNetPlay': function() { if (this.lightgun || this.mouse) return !0x1; - var _0xa88a13 = window.RTCPeerConnection || window.webkitPeerConnection00 || window.webkitRTCPeerConnection || window.mozRTCPeerConnection, + let _0xa88a13 = window.RTCPeerConnection || window.webkitPeerConnection00 || window.webkitRTCPeerConnection || window.mozRTCPeerConnection, _0x17edbf = window.mozRTCIceCandidate || window.RTCIceCandidate, _0x2c1832 = window.mozRTCSessionDescription || window.RTCSessionDescription; return !!(_0xa88a13 && _0x17edbf && _0x2c1832) && !!(_0xa88a13 && 'createDataChannel' in _0xa88a13.prototype); @@ -5043,29 +5001,29 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } }, 'createIcon': function(_0x43d42f, _0x42a597) { - var _0x2c1832 = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + let _0x2c1832 = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); _0x154f99(_0x2c1832, _0x5dc0c0(_0x42a597, { 'role': 'presentation', 'focusable': 'false' })); - var _0x50b7a7 = document.createElement('div'); + let _0x50b7a7 = document.createElement('div'); _0x50b7a7.innerHTML = '' .concat(this.icons[_0x43d42f], ''); - for (var _0x373099 = _0x50b7a7.childNodes[0x0].childNodes, _0x804f4d = 0x0; _0x804f4d < _0x373099.length; _0x804f4d += 0x1) _0x2c1832.appendChild(_0x373099[_0x804f4d]); + for (let _0x373099 = _0x50b7a7.childNodes[0x0].childNodes, _0x804f4d = 0x0; _0x804f4d < _0x373099.length; _0x804f4d += 0x1) _0x2c1832.appendChild(_0x373099[_0x804f4d]); return _0x2c1832; }, 'createLabel': function(_0x185043) { - var _0x17edbf = arguments.length > 0x1 && void 0x0 !== arguments[0x1] ? arguments[0x1] : {}, + let _0x17edbf = arguments.length > 0x1 && void 0x0 !== arguments[0x1] ? arguments[0x1] : {}, _0x2c1832 = _0xb9b2ff.get(_0x185043, this.config), _0x3d681f = {}; _0x3d681f[_0x17edbf.class] = true, _0x3d681f[this.config.classNames.hidden] = true; - var _0x58a1d4 = Object.assign({}, _0x17edbf, { + let _0x58a1d4 = Object.assign({}, _0x17edbf, { 'class': [_0x17edbf.class, this.config.classNames.tooltip].filter(Boolean).join(' ') }); return _0x428003('span', _0x58a1d4, _0x2c1832); }, 'createBadge': function(_0x415aef) { if (_0x1e2c68.empty(_0x415aef)) return null; - var _0x17edbf = _0x428003('span', { + let _0x17edbf = _0x428003('span', { 'class': this.config.classNames.menu.value }); return _0x17edbf.appendChild(_0x428003('span', { @@ -5073,12 +5031,12 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }, _0x415aef)), _0x17edbf; }, 'createButton': function(_0x427a85, _0x493eb2) { - var _0x2c1832, _0x325832, _0xcb618b, _0x25c678, _0x58309d = _0x428003('button'), + let _0x2c1832, _0x325832, _0xcb618b, _0x25c678, _0x58309d = _0x428003('button'), _0x183584 = Object.assign({}, _0x493eb2), _0x2345d2 = _0x9fdcea(_0x427a85), _0x2ca20d = !0x1; 'type' in _0x183584 || (_0x183584.type = 'button'); - var _0x34225b = _0x449eac({ + let _0x34225b = _0x449eac({ 'ejs__control': true }); switch ('class' in _0x183584 ? _0x183584.class.includes(_0x34225b) || (_0x183584.class += ' ' .concat(_0x34225b)) : _0x183584.class = _0x34225b, _0x427a85) { @@ -5113,7 +5071,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }))) : (_0x58309d.appendChild(_0x7f9f36.createIcon.call(this, _0x325832)), _0x58309d.appendChild(_0x7f9f36.createLabel.call(this, _0x2c1832))), _0x5dc0c0(_0x183584, _0xa949a8(this.config.selectors.buttons[_0x2345d2], _0x183584)), _0x154f99(_0x58309d, _0x183584), 'play' === _0x2345d2 ? (_0x1e2c68.array(this.elements.buttons[_0x2345d2]) || (this.elements.buttons[_0x2345d2] = []), this.elements.buttons[_0x2345d2].push(_0x58309d)) : this.elements.buttons[_0x2345d2] = _0x58309d, _0x58309d; }, 'createRange': function(_0x491b4a, _0x5f154a) { - var _0x2c1832 = _0x428003('input', _0x5dc0c0(_0xa949a8(this.config.selectors.inputs[_0x491b4a]), { + let _0x2c1832 = _0x428003('input', _0x5dc0c0(_0xa949a8(this.config.selectors.inputs[_0x491b4a]), { 'type': 'range', 'min': 0x0, 'max': 0x64, @@ -5129,10 +5087,10 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { return this.elements.inputs[_0x491b4a] = _0x2c1832, _0x7f9f36.updateRangeFill.call(this, _0x2c1832), _0x2c1832; }, 'bindMenuItemShortcuts': function(_0x1830d1, _0x2770c2) { - var _0x2c1832 = this; + let _0x2c1832 = this; _0x1093f4(_0x1830d1, 'keydown keyup', function(_0x4bb9d6) { if ([0x20, 0x26, 0x27, 0x28].includes(_0x4bb9d6.which) && (_0x4bb9d6.preventDefault(), _0x4bb9d6.stopPropagation(), 'keydown' !== _0x4bb9d6.type)) { - var _0x20ac7b, _0x51717d = _0x13f491(_0x1830d1, '[role="menuitemradio"]'); + let _0x20ac7b, _0x51717d = _0x13f491(_0x1830d1, '[role="menuitemradio"]'); if (!_0x51717d && [0x20, 0x27].includes(_0x4bb9d6.which)) _0x7f9f36.showMenuPanel.call(_0x2c1832, _0x2770c2, true); else 0x20 !== _0x4bb9d6.which && (0x28 === _0x4bb9d6.which || _0x51717d && 0x27 === _0x4bb9d6.which ? (_0x20ac7b = _0x1830d1.nextElementSibling, _0x1e2c68.element(_0x20ac7b) || (_0x20ac7b = _0x1830d1.parentNode.firstElementChild)) : (_0x20ac7b = _0x1830d1.previousElementSibling, _0x1e2c68.element(_0x20ac7b) || (_0x20ac7b = _0x1830d1.parentNode.lastElementChild)), _0x31cc23.call(_0x2c1832, _0x20ac7b, true)); } @@ -5141,7 +5099,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }); }, 'createMenuItem': function(_0x52a95b) { - var _0x17edbf = this, + let _0x17edbf = this, _0x2c1832 = _0x52a95b.value, _0x231912 = _0x52a95b.list, _0x57313b = _0x52a95b.type, @@ -5172,7 +5130,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }), _0xb8fbbd.setAttribute('aria-checked', _0x2da7f0 ? 'true' : 'false'); } }); - var _0x449ec7 = _0x7f9f36.getCoreOptions.call(this); + let _0x449ec7 = _0x7f9f36.getCoreOptions.call(this); this.listeners.bind(_0xb8fbbd, 'click keyup', function(_0x270d0d) { _0x1e2c68.keyboardEvent(_0x270d0d) && 0x20 !== _0x270d0d.which || (_0x270d0d.preventDefault(), _0x270d0d.stopPropagation(), _0xb8fbbd.checked = true, Object.keys(_0x7f9f36.normalOptions).includes(_0x57313b) && _0x7f9f36.updateNormalOptions.call(_0x17edbf, _0x57313b, _0x2c1832), Object.keys(_0x449ec7).includes(_0x57313b) && _0x7f9f36.updateCoreOptions.call(_0x17edbf, _0x57313b, _0x2c1832)), _0x7f9f36.showMenuPanel.call(_0x17edbf, 'home', _0x1e2c68.keyboardEvent(_0x270d0d)); }, _0x57313b, !0x1), _0x7f9f36.bindMenuItemShortcuts.call(this, _0xb8fbbd, _0x57313b), _0x231912.appendChild(_0xb8fbbd); @@ -5181,14 +5139,14 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x1e2c68.element(this.elements.inputs.volume) && _0x7f9f36.setRange.call(this, this.elements.inputs.volume, this.muted ? 0x0 : this.volume), _0x1e2c68.element(this.elements.buttons.mute) && (this.elements.buttons.mute.pressed = this.muted || 0x0 === this.volume); }, 'setRange': function(_0x1c075b) { - var _0x17edbf = arguments.length > 0x1 && void 0x0 !== arguments[0x1] ? arguments[0x1] : 0x0; + let _0x17edbf = arguments.length > 0x1 && void 0x0 !== arguments[0x1] ? arguments[0x1] : 0x0; _0x1e2c68.element(_0x1c075b) && (_0x1c075b.value = _0x17edbf, _0x7f9f36.updateRangeFill.call(this, _0x1c075b)); }, 'updateRangeFill': function(_0x2dbde1) { - var _0x17edbf = _0x1e2c68.event(_0x2dbde1) ? _0x2dbde1.target : _0x2dbde1; + let _0x17edbf = _0x1e2c68.event(_0x2dbde1) ? _0x2dbde1.target : _0x2dbde1; if (_0x1e2c68.element(_0x17edbf) && 'range' === _0x17edbf.getAttribute('type')) { if (_0x13f491(_0x17edbf, this.config.selectors.inputs.volume)) { - var _0x2c1832 = 0x64 * _0x17edbf.value; + let _0x2c1832 = 0x64 * _0x17edbf.value; _0x17edbf.setAttribute('aria-valuenow', _0x2c1832), _0x17edbf.setAttribute('aria-valuetext', '' .concat(_0x2c1832.toFixed(0x1), '%')); } else _0x17edbf.setAttribute('aria-valuenow', _0x17edbf.value); _0x59aa33.isWebkit && _0x17edbf.style.setProperty('--value', '' .concat(_0x17edbf.value / _0x17edbf.max * 0x64, '%')); @@ -5199,7 +5157,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }, 'updateNormalOptions': function(_0x255b79, _0x505484) { this.elements.settings.buttons[_0x255b79].querySelector('.' .concat(this.config.classNames.menu.value)).innerHTML = _0x7f9f36.normalOptions[_0x255b79].options[_0x505484]; - var _0x2c1832 = {}; + let _0x2c1832 = {}; _0x2c1832[_0x255b79] = _0x505484, _0x7f9f36.storage.set(_0x2c1832), 'shader' === _0x255b79 && _0xdcec2a.setShader(_0x505484), 'virtual-gamepad' === _0x255b79 && _0xdcec2a.toggleVirtualGamepad.call(this, 'enabled' === _0x505484); }, 'updateCoreOptions': function(_0x41c4ad, _0x15823e) { @@ -5209,7 +5167,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }, 0x64), setTimeout(function() { _0x27f4c4.Module.resumeMainLoop(); }, 0xc8)), 'nds' === this.system && _0x2d904a.wasm) { - var _0x2c1832 = this.elements.wrapper.querySelector('canvas'); + let _0x2c1832 = this.elements.wrapper.querySelector('canvas'); if ('screen_rotation' === _0x41c4ad) switch (_0x2c1832.style.transform = 'rotate(' + _0x15823e + 'deg)', _0x15823e) { case '0': _0xdcec2a.setVariable('desmume_input_rotation', '0'); @@ -5225,24 +5183,24 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } } if ('arcade' === this.system || 'fba0.2.97.29' === this.system) { - var _0x567ccc = this.elements.wrapper.querySelector('canvas'); + let _0x567ccc = this.elements.wrapper.querySelector('canvas'); _0x567ccc.height = 'fba-aspect' === _0x41c4ad && 'PAR' === _0x15823e ? _0x567ccc.width / 0x10 * 0x9 : _0x567ccc.width / 0x4 * 0x3; } - var _0x31bdec = _0x7f9f36.getCoreOptions.call(this), + let _0x31bdec = _0x7f9f36.getCoreOptions.call(this), _0x3efd0b = _0x7f9f36.storage.get('core-options'); if (_0x1e2c68.empty(_0x3efd0b) && (_0x3efd0b = {}), _0x3efd0b[_0x41c4ad] = _0x15823e, _0x7f9f36.storage.set({ 'core-options': _0x3efd0b }), this.elements.settings.buttons[_0x41c4ad]) { - var _0xe95e6a = this.elements.settings.buttons[_0x41c4ad].querySelector('.' .concat(this.config.classNames.menu.value)); + let _0xe95e6a = this.elements.settings.buttons[_0x41c4ad].querySelector('.' .concat(this.config.classNames.menu.value)); _0x1e2c68.object(_0x31bdec[_0x41c4ad].options) ? _0xe95e6a.innerHTML = _0x31bdec[_0x41c4ad].options[_0x15823e] : _0xe95e6a.innerHTML = _0x15823e; } }, 'setOptionMenuItem': function(_0x2f0e6a, _0x85969e) { - var _0x2c1832 = this, + let _0x2c1832 = this, _0x549dac = this.elements.settings.panels.home.querySelector('[role="menu"]'), _0x43777f = this.elements.settings.popup.children[0x0]; Object.keys(_0x2f0e6a).forEach(function(_0x4fcbcf) { - var _0x177975 = _0x4fcbcf, + let _0x177975 = _0x4fcbcf, _0x5f3e0f = _0x428003('button', _0x5dc0c0(_0xa949a8(_0x2c1832.config.selectors.buttons.settings), { 'type': 'button', 'class': _0x449eac({ @@ -5256,12 +5214,12 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x1093f4(_0x5f3e0f, 'click', function() { _0x7f9f36.showMenuPanel.call(_0x2c1832, _0x177975, !0x1); }); - var _0x1d5857, _0x1838f9 = _0x428003('span', null, _0x2f0e6a[_0x4fcbcf].label), + let _0x1d5857, _0x1838f9 = _0x428003('span', null, _0x2f0e6a[_0x4fcbcf].label), _0x455b20 = _0x428003('span', { 'class': _0x2c1832.config.classNames.menu.value }); _0x1e2c68.object(_0x85969e) && (_0x1d5857 = _0x85969e[_0x177975]), _0x1e2c68.empty(_0x1d5857) && (_0x1d5857 = _0x2f0e6a[_0x177975].default), _0x1e2c68.object(_0x2f0e6a[_0x177975].options) ? _0x455b20.innerHTML = _0x2f0e6a[_0x177975].options[_0x1d5857] : _0x455b20.innerHTML = _0x1d5857, _0x1838f9.appendChild(_0x455b20), _0x5f3e0f.appendChild(_0x1838f9), _0x549dac.appendChild(_0x5f3e0f); - var _0x3f3775 = _0x428003('div', { + let _0x3f3775 = _0x428003('div', { 'data-pane': escape(_0x177975), 'hidden': '' }), @@ -5285,10 +5243,10 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }), _0x3f3775.appendChild(_0x288440), _0x3f3775.appendChild(_0x428003('div', { 'role': 'menu' })), _0x43777f.appendChild(_0x3f3775), _0x2c1832.elements.settings.buttons[_0x177975] = _0x5f3e0f, _0x2c1832.elements.settings.panels[_0x177975] = _0x3f3775; - var _0x2c172f = _0x3f3775.querySelector('[role="menu"]'); + let _0x2c172f = _0x3f3775.querySelector('[role="menu"]'); ! function(_0x301c01) { if (_0x1e2c68.element(_0x301c01)) - for (var _0x85969e = _0x301c01.childNodes.length; _0x85969e > 0x0;) _0x301c01.removeChild(_0x301c01.lastChild), _0x85969e -= 0x1; + for (let _0x85969e = _0x301c01.childNodes.length; _0x85969e > 0x0;) _0x301c01.removeChild(_0x301c01.lastChild), _0x85969e -= 0x1; }(_0x2c172f), _0x1e2c68.object(_0x2f0e6a[_0x4fcbcf].options) ? Object.keys(_0x2f0e6a[_0x4fcbcf].options).forEach(function(_0x281296) { _0x7f9f36.createMenuItem.call(_0x2c1832, { 'value': _0x281296, @@ -5311,7 +5269,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }); }, 'setNormalOptionsMenu': function() { - var _0xa88a13 = this, + let _this = this, _0x17edbf = this, _0x2c1832 = {}; _0x2c1832.orientation = _0x7f9f36.storage.get('orientation'); @@ -5321,17 +5279,17 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { })) : delete _0x7f9f36.normalOptions['virtual-gamepad']; _0x7f9f36.setOptionMenuItem.call(this, _0x7f9f36.normalOptions, _0x2c1832); _0x1093f4.call(_0x17edbf, _0x17edbf.elements.container, 'start-game', function() { - var shader = _0x7f9f36.storage.get('shader'); + let shader = _0x7f9f36.storage.get('shader'); if (shader !== 'disabled') { _0xdcec2a.setShader(shader); } - var _0x2c1832 = _0xa88a13, + let _0x2c1832 = _this, _0x42a7b1 = {}; _0xdcec2a.getGameCoreOptions && _0xdcec2a.getGameCoreOptions().split('\n').forEach(function(_0x4a987e, _0x10bd7a) { - var _0x2c1832 = _0x4a987e.split('; '), + let _0x2c1832 = _0x4a987e.split('; '), _0x1ddc5f = _0x2c1832[0]; if (0 === _0x1ddc5f.indexOf('fba-dipswitch-') || _0x17edbf.coreVer === 2) { - var _0xbd808 = _0x2c1832[1].split('|'), + let _0xbd808 = _0x2c1832[1].split('|'), _0x3c4b1a = _0x1ddc5f.split("|")[0].replace(/_/g, ' ').replace(/.+\-(.+)/, '$1'); _0xbd808.slice(1, -1); if (_0xbd808.length === 1) return; @@ -5343,7 +5301,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }; } }); - var _0x27d859 = _0x7f9f36.storage.get('core-options'); + let _0x27d859 = _0x7f9f36.storage.get('core-options'); _0x7f9f36.coreOptionsValues = _0x27d859 || {}; _0x7f9f36.setOptionMenuItem.call(_0x17edbf, _0x42a7b1, _0x7f9f36.coreOptionsValues); Object.keys(_0x7f9f36.coreOptionsValues).forEach(function(_0x51fc4e, _0x4b3613) { @@ -5353,7 +5311,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }); }, 'updateCoreOptionMenuItems': function() { - var _0xa88a13 = this.elements.settings.panels.home.querySelector('[role="menu"]'), + let _0xa88a13 = this.elements.settings.panels.home.querySelector('[role="menu"]'), _0x17edbf = _0x7f9f36.getCoreOptions.call(this); Object.keys(_0x17edbf).forEach(function(_0x20e093) { _0xa88a13.querySelector('[item="' .concat(_0x20e093, '"]')).removeAttribute('disabled'); @@ -5361,38 +5319,38 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }, 'setCoreOptionsMenu': function() { this.elements.settings.panels.home.querySelector('[role="menu"]'), this.elements.settings.popup.children[0x0]; - var _0xa88a13 = _0x7f9f36.getCoreOptions.call(this), + let _0xa88a13 = _0x7f9f36.getCoreOptions.call(this), _0x17edbf = _0x7f9f36.storage.get('core-options'); _0x7f9f36.coreOptionsValues = _0x17edbf || {}, _0x7f9f36.setOptionMenuItem.call(this, _0xa88a13, _0x17edbf); }, 'checkMenu': function() { - var _0xa88a13 = this.elements.settings.buttons; + let _0xa88a13 = this.elements.settings.buttons; !_0x1e2c68.empty(_0xa88a13) && Object.values(_0xa88a13).some(function(_0x200331) { return !_0x200331.hidden; }); _0x132da7(this.elements.settings.menu, !0x1); }, 'focusFirstMenuItem': function(_0x303d68) { - var _0x17edbf = arguments.length > 0x1 && void 0x0 !== arguments[0x1] && arguments[0x1]; + let _0x17edbf = arguments.length > 0x1 && void 0x0 !== arguments[0x1] && arguments[0x1]; if (!this.elements.settings.popup.hidden) { - var _0x2c1832 = _0x303d68; + let _0x2c1832 = _0x303d68; _0x1e2c68.element(_0x2c1832) || (_0x2c1832 = Object.values(this.elements.settings.panels).find(function(_0xe94c5e) { return !_0xe94c5e.hidden; })); - var _0x2f3a13 = _0x2c1832.querySelector('[role^="menuitem"]'); + let _0x2f3a13 = _0x2c1832.querySelector('[role^="menuitem"]'); _0x31cc23.call(this, _0x2f3a13, _0x17edbf); } }, 'toggleMenu': function(_0x28d6c6) { - var _0x17edbf = this.elements.settings.popup, + let _0x17edbf = this.elements.settings.popup, _0x2c1832 = this.elements.buttons.settings; if (_0x1e2c68.element(_0x17edbf) && _0x1e2c68.element(_0x2c1832)) { - var _0x614270 = _0x17edbf.hidden, + let _0x614270 = _0x17edbf.hidden, _0x14f1b5 = _0x614270; if (_0x1e2c68.boolean(_0x28d6c6)) _0x14f1b5 = _0x28d6c6; else if (_0x1e2c68.keyboardEvent(_0x28d6c6) && 0x1b === _0x28d6c6.which) _0x14f1b5 = !0x1; else if (_0x1e2c68.event(_0x28d6c6)) { - var _0xcf75ac = _0x17edbf.contains(_0x28d6c6.target); + let _0xcf75ac = _0x17edbf.contains(_0x28d6c6.target); if (_0xcf75ac || !_0xcf75ac && _0x28d6c6.target !== _0x2c1832 && _0x14f1b5) return; } _0x2c1832.setAttribute('aria-expanded', _0x14f1b5); @@ -5402,12 +5360,12 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } }, 'getMenuSize': function(_0x55fe13) { - var _0x17edbf = _0x55fe13.cloneNode(true); + let _0x17edbf = _0x55fe13.cloneNode(true); _0x17edbf.style.position = 'absolute'; _0x17edbf.style.opacity = 0; _0x17edbf.removeAttribute('hidden'); _0x55fe13.parentNode.appendChild(_0x17edbf); - var _0x2c1832 = _0x17edbf.scrollWidth, + let _0x2c1832 = _0x17edbf.scrollWidth, _0x5edd1b = _0x17edbf.scrollHeight; return _0x12a55d(_0x17edbf), { 'width': _0x2c1832, @@ -5416,21 +5374,21 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }, 'showLoadStatePanel': function() {}, 'showMenuPanel': function() { - var _0xa88a13 = this, + let _this = this, _0x17edbf = arguments.length > 0x0 && void 0x0 !== arguments[0x0] ? arguments[0x0] : '', _0x2c1832 = arguments.length > 0x1 && void 0x0 !== arguments[0x1] && arguments[0x1], _0x7f4281 = _0x530042.call(this, '[data-pane="' .concat(escape(_0x17edbf), '"]')); if (_0x1e2c68.element(_0x7f4281)) { - var _0x3d6729 = _0x7f4281.parentNode, + let _0x3d6729 = _0x7f4281.parentNode, _0x381f57 = Array.from(_0x3d6729.children).find(function(_0x57c652) { return !_0x57c652.hidden; }); if (_0x2d904a.transitions && !_0x2d904a.reducedMotion) { _0x3d6729.style.width = '' .concat(_0x381f57.scrollWidth, 'px'); _0x3d6729.style.height = '' .concat(_0x381f57.scrollHeight, 'px'); - var _0x29dd37 = _0x7f9f36.getMenuSize.call(this, _0x7f4281), + let _0x29dd37 = _0x7f9f36.getMenuSize.call(this, _0x7f4281), _0x37447f = function _0x17edbf(_0x40854f) { - _0x40854f.target === _0x3d6729 && ['width', 'height'].includes(_0x40854f.propertyName) && (_0x3d6729.style.width = '', _0x3d6729.style.height = '', _0x20109b.call(_0xa88a13, _0x3d6729, _0x5a2767, _0x17edbf)); + _0x40854f.target === _0x3d6729 && ['width', 'height'].includes(_0x40854f.propertyName) && (_0x3d6729.style.width = '', _0x3d6729.style.height = '', _0x20109b.call(_this, _0x3d6729, _0x5a2767, _0x17edbf)); }; _0x1093f4.call(this, _0x3d6729, _0x5a2767, _0x37447f), _0x3d6729.style.width = '' .concat(_0x29dd37.width, 'px'), _0x3d6729.style.height = '' .concat(_0x29dd37.height, 'px'); } @@ -5444,7 +5402,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'aria-haspopup': true, 'aria-expanded': !0x1 })); - var _0x2c1832 = _0x428003('div', { + let _0x2c1832 = _0x428003('div', { 'class': _0x449eac({ 'ejs__dialog': true, 'ejs__load-state__container': true @@ -5462,13 +5420,13 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { if (! window.MediaRecorder) { return; }; - var _0x2c1832 = _0x7f9f36.createButton.call(this, 'screen-record', { + let _0x2c1832 = _0x7f9f36.createButton.call(this, 'screen-record', { 'aria-haspopup': true, 'aria-expanded': !0x1, 'style': 'margin-right:auto;' }); _0x4c3fdd.appendChild(_0x2c1832); - var _0x13c0e4 = _0x428003('div', { + let _0x13c0e4 = _0x428003('div', { 'class': _0x449eac({ 'ejs__dialog': true, 'ejs__screenRecord__container': true @@ -5483,13 +5441,13 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { this.elements.dialogs.screenRecord = _0x13c0e4; }, 'setGamepad': function(_0x4c3fdd, _0x289259) { - var _0x2c1832 = _0x7f9f36.createButton.call(this, 'gamepad', { + let _0x2c1832 = _0x7f9f36.createButton.call(this, 'gamepad', { 'aria-haspopup': true, 'aria-expanded': !0x1, 'style': 'margin-right:auto;' }); _0x4c3fdd.appendChild(_0x2c1832); - var _0x13c0e4 = _0x428003('div', { + let _0x13c0e4 = _0x428003('div', { 'class': _0x449eac({ 'ejs__dialog': true, 'ejs__gamepad__container': true @@ -5504,13 +5462,13 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { this.elements.dialogs.gamepad = _0x13c0e4; }, 'setCheat': function(_0x328075, _0x21ca37) { - var _0x2c1832 = _0x7f9f36.createButton.call(this, 'cheat', { + let _0x2c1832 = _0x7f9f36.createButton.call(this, 'cheat', { 'aria-haspopup': true, 'aria-expanded': !0x1, 'style': 'margin-right:auto;' }); _0x328075.appendChild(_0x2c1832); - var _0x173db3 = _0x428003('div', { + let _0x173db3 = _0x428003('div', { 'class': _0x449eac({ 'ejs__dialog': true, 'ejs__cheat__container': true @@ -5525,7 +5483,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { this.elements.dialogs.cheat = _0x173db3; }, 'setStateInfoBarWidget': function() { - var _0xa88a13 = _0x428003('div', { + let _0xa88a13 = _0x428003('div', { 'class': _0x449eac({ 'ejs__widget': true }) @@ -5540,7 +5498,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { this.elements.widgets.stateInfoDiv = _0x17edbf; },/* 'setNetplayWidgets': function() { - var _0xa88a13 = _0x428003('div', { + let _0xa88a13 = _0x428003('div', { 'class': _0x449eac({ 'ejs__widget': true, 'ejs__widget_netplay': true @@ -5558,7 +5516,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'aria-haspopup': true, 'aria-expanded': !0x1 })); - var _0x2c1832 = _0x428003('div', { + let _0x2c1832 = _0x428003('div', { 'class': _0x449eac({ 'ejs__dialog': true, 'ejs__netplay__container': true @@ -5577,20 +5535,20 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { if (_0x350d73(_0x24b1f3.target, _0x449eac({ 'ejs__dialogs': true }))) { - var _0x2c1832 = _0x7f9f36.contextMenu.timer; + let _0x2c1832 = _0x7f9f36.contextMenu.timer; if (this.started) { - var _0x2a1dda = _0x530042.call(this, '.' .concat(_0x449eac({ + let _0x2a1dda = _0x530042.call(this, '.' .concat(_0x449eac({ 'ejs__contextmenu': true }), ' ul')); if (_0x4b9d55) { _0x7f9f36.contextMenu.style.display = 'block'; _0x7f9f36.contextMenu.style.left = ''.concat(_0x24b1f3.layerX, 'px'); _0x7f9f36.contextMenu.style.top = ''.concat(_0x24b1f3.layerY, 'px'); - var _0x1b48e7 = _0x23ffa1.call(this, '.' .concat(_0x449eac({ + let _0x1b48e7 = _0x23ffa1.call(this, '.' .concat(_0x449eac({ 'ejs__contextmenu': true }), ' ul li')); if (null === _0x2a1dda.getAttribute('menu')) { - var _0x14264d = _0x428003('li', {}); + let _0x14264d = _0x428003('li', {}); _0x14264d.appendChild(_0x428003('a', { 'target': '_blank', 'href': 'https://github.com/ethanaobrien/emulatorjs' // Modifying this is against the terms of service @@ -5604,37 +5562,38 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } }, 'create': function(_0x42e40d) { - var _0xa88a13 = this; + let _this = this; _0x7f9f36.storage = new _0x2f61ba(this, 'ejs_' .concat(this.system, '_settings')); - var _0x17edbf = _0x428003('div', _0xa949a8(this.config.selectors.controls.wrapper)); + let _0x17edbf = _0x428003('div', _0xa949a8(this.config.selectors.controls.wrapper)); _0x7f9f36.contextMenu = _0x428003('div', { 'class': _0x449eac({ 'ejs__contextmenu': true }), 'style': 'position: absolute; display:none;z-index:9' }) - var contextHtml = ['
    ', '
'] - var contextFunctions = [] + let contextHtml = ['
    ', '
'] + let contextFunctions = [] function addContextHtml(title, hidden, functi0n) { if (typeof functi0n == 'function') { contextFunctions.push(functi0n) } else { contextFunctions.push(function(){}) } - var i = contextHtml.length - 1 + let i = contextHtml.length - 1 if (hidden) { contextHtml.splice(i, 0, '') } else { contextHtml.splice(i, 0, '
  • '+title+'
  • ') } } - addContextHtml(_0xa88a13.localization('Take Screenshot'), false, function(_0x20faaa) { - var _0x4e898a = _0x378b5c.getScreenData(); - if (typeof _0xa88a13.gameName == 'string') { - var gamep = _0xa88a13.gameName + addContextHtml(_this.localization('Take Screenshot'), false, function(_0x20faaa) { + let _0x4e898a = _0x378b5c.getScreenData(); + let gamep; + if (typeof _this.gameName == 'string') { + gamep = _this.gameName } - var gamepng = gamep ? '' .concat(gamep, '-screenshot.png') : 'game.png'; - var a = document.createElement('a'); + let gamepng = gamep ? '' .concat(gamep, '-screenshot.png') : 'game.png'; + let a = document.createElement('a'); a.href = URL.createObjectURL(new Blob([_0x4e898a])); a.download = gamepng; a.click(); @@ -5643,25 +5602,25 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }) return false; }) - addContextHtml(_0xa88a13.localization('Cache Manage'), true, function(_0x275730) { + addContextHtml(_this.localization('Cache Manage'), true, function(_0x275730) { if (_0x27f4c4.romdb) { - _0x132da7(_0xa88a13.elements.dialogs.cache, !0x1); - var _0x3360eb = _0xa88a13.elements.dialogs.cache.querySelector('.' .concat(_0x378b5c.classNames['dialog-content'])); - _0x3360eb.innerHTML = '
    '+_0xa88a13.localization('Loading')+'
    ', _0x27f4c4.romdb.getAll(function(_0x43586d) { + _0x132da7(_this.elements.dialogs.cache, !0x1); + let _0x3360eb = _this.elements.dialogs.cache.querySelector('.' .concat(_0x378b5c.classNames['dialog-content'])); + _0x3360eb.innerHTML = '
    '+_this.localization('Loading')+'
    ', _0x27f4c4.romdb.getAll(function(_0x43586d) { if (_0x43586d) { - var _0x275730 = _0x428003('table', { + let _0x275730 = _0x428003('table', { 'style': 'width:100%;padding-left:10px;text-align:left' }), _0x1ab9e9 = _0x428003('tbody'); _0x43586d.length > 0x0 ? (_0x3360eb.innerHTML = '', _0x43586d.forEach(function(_0x32b0b7, _0x2d0e11) { if (_0x32b0b7.key && !/-part-\d+$/ .test(_0x32b0b7.key)) { - for (var _0x3360eb = Math.ceil(_0x32b0b7.filesize / 0x6400000), _0x277c67 = [_0x32b0b7.key], _0x3edb35 = 0x1; _0x3edb35 < _0x3360eb; _0x3edb35 += 0x1) _0x277c67.push('' .concat(_0x32b0b7.key, '-part-').concat(_0x3edb35)); - var _0x3e31f6 = _0x428003('tr'), + for (let _0x3360eb = Math.ceil(_0x32b0b7.filesize / 0x6400000), _0x277c67 = [_0x32b0b7.key], _0x3edb35 = 0x1; _0x3edb35 < _0x3360eb; _0x3edb35 += 0x1) _0x277c67.push('' .concat(_0x32b0b7.key, '-part-').concat(_0x3edb35)); + let _0x3e31f6 = _0x428003('tr'), _0x5b75bd = _0x428003('td'), _0x227405 = _0x428003('td'), _0xac150b = _0x428003('td'); _0x5b75bd.innerHTML = _0x32b0b7.filename, _0x227405.innerHTML = function(_0x1858c1) { - var _0x2d0e11 = -0x1; + let _0x2d0e11 = -0x1; do { _0x1858c1 /= 0x400, _0x2d0e11++; } while (_0x1858c1 > 0x400); @@ -5674,31 +5633,31 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { return _0x16f22a.stopPropagation(), !0x1; }; } - }), _0x275730.appendChild(_0x1ab9e9), _0x3360eb.appendChild(_0x275730)) : _0x3360eb.innerHTML = '
    '+_0xa88a13.localization('Empty')+'
    '; - } else _0x3360eb.innerHTML = '
    '+_0xa88a13.localization('Empty')+'
    '; + }), _0x275730.appendChild(_0x1ab9e9), _0x3360eb.appendChild(_0x275730)) : _0x3360eb.innerHTML = '
    '+_this.localization('Empty')+'
    '; + } else _0x3360eb.innerHTML = '
    '+_this.localization('Empty')+'
    '; }, function() {}); } return false; }) - addContextHtml(_0xa88a13.localization('Quick Save')+' (F2)', false, function(_0x395c73) { + addContextHtml(_this.localization('Quick Save')+' (F2)', false, function(_0x395c73) { _0x378b5c.quickSaveState(); _0x2593da.contextMenu.style.display = 'none'; }) - addContextHtml(_0xa88a13.localization('Quick Load')+' (F4)', false, function(_0x124f69) { + addContextHtml(_this.localization('Quick Load')+' (F4)', false, function(_0x124f69) { _0x378b5c.quickLoadState(); _0x2593da.contextMenu.style.display = 'none'; }) _0x7f9f36.contextMenu.innerHTML = contextHtml.join('') - var a = _0x7f9f36.contextMenu.getElementsByTagName('li') - for (var i=0; i', 'exit-fullscreen': '', @@ -5806,9 +5765,9 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'volume': '\n \n ', 'cheat': '' }, this.id = Math.floor(0x2710 * Math.random()); - var _0x17edbf = null; + let _0x17edbf = null; this.elements.controls = null; - var _0x2c1832 = { + let _0x2c1832 = { 'id': this.id }, _0x270a9e = true; @@ -5818,25 +5777,25 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'speed': this.speed, 'quality': this.quality }), _0x270a9e = !0x1); - var _0x1e6644, _0x3ec218 = function(_0x406126) { - var _0x17edbf = _0x406126; + let _0x1e6644, _0x3ec218 = function(_0x406126) { + let _0x17edbf = _0x406126; return Object.entries(_0x2c1832).forEach(function(_0x3e992c) { - var _0x2c1832 = _0x5005e6(_0x3e992c, 0x2), + let _0x2c1832 = _0x5005e6(_0x3e992c, 0x2), _0x47c2ec = _0x2c1832[0x0], _0x547588 = _0x2c1832[0x1]; _0x17edbf = _0x1a0e98(_0x17edbf, '{' .concat(_0x47c2ec, '}'), _0x547588); }), _0x17edbf; }; if (_0x270a9e && (_0x1e2c68.string(this.config.controls) ? _0x17edbf = _0x3ec218(_0x17edbf) : _0x1e2c68.element(_0x17edbf) && (_0x17edbf.innerHTML = _0x3ec218(_0x17edbf.innerHTML))), _0x1e2c68.string(this.config.selectors.controls.container) && (_0x1e6644 = document.querySelector(this.config.selectors.controls.container)), _0x1e2c68.element(_0x1e6644) || (_0x1e6644 = this.elements.container), _0x1e6644[_0x1e2c68.element(_0x17edbf) ? 'insertAdjacentElement' : 'insertAdjacentHTML']('afterbegin', _0x17edbf), _0x1e2c68.element(this.elements.controls) || _0x7f9f36.findElements.call(this), !_0x1e2c68.empty(this.elements.buttons)) { - var _0xe8272c = function(_0x176a3e) { - var _0x2c1832 = _0xa88a13.config.classNames.controlPressed; + let _0xe8272c = function(_0x176a3e) { + let _0x2c1832 = _this.config.classNames.controlPressed; Object.defineProperty(_0x176a3e, 'pressed', { 'enumerable': true, 'get': function() { return _0x350d73(_0x176a3e, _0x2c1832); }, 'set': function() { - var _0xa88a13 = arguments.length > 0x0 && void 0x0 !== arguments[0x0] && arguments[0x0]; + let _0xa88a13 = arguments.length > 0x0 && void 0x0 !== arguments[0x0] && arguments[0x0]; _0x3a8e2f(_0x176a3e, _0x2c1832, _0xa88a13); } }); @@ -5851,29 +5810,29 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x2593da = _0x7f9f36; function _0x28bdca(_0x5c50c3, _0x217698) { - for (var _0x2c1832 = 0x0; _0x2c1832 < _0x217698.length; _0x2c1832++) { - var _0x172cdb = _0x217698[_0x2c1832]; + for (let _0x2c1832 = 0x0; _0x2c1832 < _0x217698.length; _0x2c1832++) { + let _0x172cdb = _0x217698[_0x2c1832]; _0x172cdb.enumerable = _0x172cdb.enumerable || !0x1, _0x172cdb.configurable = true, 'value' in _0x172cdb && (_0x172cdb.writable = true), Object.defineProperty(_0x5c50c3, _0x172cdb.key, _0x172cdb); } } function _0x238270() { if (this.enabled) { - var _0xa88a13 = this.player.elements.buttons.fullscreen; + let _0xa88a13 = this.player.elements.buttons.fullscreen; _0x1e2c68.element(_0xa88a13) && (_0xa88a13.pressed = this.active), _0xbae705.call(this.player, this.target, this.active ? 'enterfullscreen' : 'exitfullscreen', true), _0x59aa33.isIos || _0x5e0c7d.call(this.player, this.target, this.active); } } function _0x3c983f() { - var _0xa88a13 = arguments.length > 0x0 && void 0x0 !== arguments[0x0] && arguments[0x0]; + let _0xa88a13 = arguments.length > 0x0 && void 0x0 !== arguments[0x0] && arguments[0x0]; _0xa88a13 ? this.scrollPosition = { 'x': window.scrollX || 0x0, 'y': window.scrollY || 0x0 } : window.scrollTo(this.scrollPosition.x, this.scrollPosition.y), document.body.style.overflow = _0xa88a13 ? 'hidden' : '', _0x3a8e2f(this.target, this.player.config.classNames.fullscreen.fallback, _0xa88a13), _0x238270.call(this); } - var _0x335854 = function() { + let _0x335854 = function() { function _0x1339df(_0x5f19c6) { - var _0x2c1832 = this; + let _0x2c1832 = this; ! function(_0x143a8a, _0x32a0a1) { if (!(_0x143a8a instanceof _0x32a0a1)) throw new TypeError('Cannot call a class as a function'); }(this, _0x1339df), this.player = _0x5f19c6, this.prefix = _0x1339df.prefix, this.property = _0x1339df.property, this.scrollPosition = { @@ -5884,7 +5843,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }), this.update(); } - var _0x17edbf, _0x2c1832, _0x50d347; + let _0x17edbf, _0x2c1832, _0x50d347; _0x17edbf = _0x1339df @@ -5897,7 +5856,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'key': 'prefix', 'get': function() { if (_0x1e2c68.function(document.exitFullscreen)) return ''; - var _0x1339df = ''; + let _0x1339df = ''; return ['webkit', 'moz', 'ms'].some(function(_0xc1e0c3) { return !(!_0x1e2c68.function(document['' .concat(_0xc1e0c3, 'ExitFullscreen')]) && !_0x1e2c68.function(document['' .concat(_0xc1e0c3, 'CancelFullScreen')]) || (_0x1339df = _0xc1e0c3, 0x0)); }), _0x1339df; @@ -5926,7 +5885,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { if (_0x1339df.native) if (this.prefix) { if (!_0x1e2c68.empty(this.prefix)) { - var _0x17edbf = 'moz' === this.prefix ? 'Cancel' : 'Exit'; + let _0x17edbf = 'moz' === this.prefix ? 'Cancel' : 'Exit'; document['' .concat(this.prefix).concat(_0x17edbf).concat(this.property)](); } } else(document.cancelFullScreen || document.exitFullscreen).call(document); @@ -5962,12 +5921,12 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { function _0x42b437(_0x458e02, _0x5729e1) { if (Array.isArray(_0x458e02)) return _0x458e02; - var _0x2c1832 = [], + let _0x2c1832 = [], _0x2e7aa7 = true, _0x393a5f = false, _0x3b4eca = void 0x0; try { - for (var _0x1aca09, _0x1bb8de = _0x458e02[Symbol.iterator](); !(_0x2e7aa7 = (_0x1aca09 = _0x1bb8de.next()).done) && (_0x2c1832.push(_0x1aca09.value), !_0x5729e1 || _0x2c1832.length !== _0x5729e1); _0x2e7aa7 = true); + for (let _0x1aca09, _0x1bb8de = _0x458e02[Symbol.iterator](); !(_0x2e7aa7 = (_0x1aca09 = _0x1bb8de.next()).done) && (_0x2c1832.push(_0x1aca09.value), !_0x5729e1 || _0x2c1832.length !== _0x5729e1); _0x2e7aa7 = true); } catch (_0x190997) { _0x393a5f = true, _0x3b4eca = _0x190997; } finally { @@ -5980,7 +5939,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { return _0x2c1832; throw new TypeError('Invalid attempt to destructure non-iterable instance'); } - var _0x37093c = function() { + let _0x37093c = function() { function _0x31e271(_0x948a97) { ! function(_0x3adedc, _0x5952e9) { if (!(_0x3adedc instanceof _0x5952e9)) throw new TypeError('Cannot call a class as a function'); @@ -5991,25 +5950,25 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x2593da.toggleMenu.call(this.emulator, _0x3156ad); }, firstTouch: function() { - var _0x31e271 = this.emulator, + let _0x31e271 = this.emulator, _0x17edbf = _0x31e271.elements; _0x31e271.touch = true, _0x3a8e2f(_0x17edbf.container, _0x31e271.config.classNames.isTouch, true); }, setTabFocus: function(_0x20bf1f) { - var _0x17edbf = this.emulator, + let _0x17edbf = this.emulator, _0x2c1832 = _0x17edbf.elements, _0x48d087 = _0x17edbf; if (clearTimeout(this.focusTimer), 'keydown' !== _0x20bf1f.type || 0x9 === _0x20bf1f.which) { 'keydown' === _0x20bf1f.type && (this.lastKeyDown = _0x20bf1f.timeStamp); - var _0x27d4ad, _0x967a30 = _0x20bf1f.timeStamp - this.lastKeyDown <= 0x14; + let _0x27d4ad, _0x967a30 = _0x20bf1f.timeStamp - this.lastKeyDown <= 0x14; ('focus' !== _0x20bf1f.type || _0x967a30) && (_0x27d4ad = _0x48d087.config.classNames.tabFocus, _0x3a8e2f(_0x23ffa1.call(_0x48d087, '.' .concat(_0x27d4ad)), _0x27d4ad, !0x1), this.focusTimer = setTimeout(function() { - var _0x20bf1f = document.activeElement; + let _0x20bf1f = document.activeElement; _0x2c1832.container.contains(_0x20bf1f) && _0x3a8e2f(document.activeElement, _0x48d087.config.classNames.tabFocus, true); }, 0xa)); } }, global: function() { - var _0x31e271 = !(arguments.length > 0x0 && void 0x0 !== arguments[0x0]) || arguments[0x0], + let _0x31e271 = !(arguments.length > 0x0 && void 0x0 !== arguments[0x0]) || arguments[0x0], _0x17edbf = this.emulator, _0x2c1832 = _0x17edbf; _0x1ef215.call(_0x2c1832, document.body, 'click', this.toggleMenu, _0x31e271), _0x455c85.call(_0x2c1832, document.body, 'touchstart', this.firstTouch), _0x1ef215.call(_0x2c1832, document.body, 'keydown focus blur', this.setTabFocus, _0x31e271, !0x1, true), _0x1093f4.call(_0x2c1832, document.body, 'keyup', function(_0x4e289a) { @@ -6017,14 +5976,14 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }); }, container: function() { - var _0x31e271, _0x17edbf = this.emulator, + let _0x31e271, _0x17edbf = this.emulator, _0x2c1832 = _0x17edbf.elements, _0x45d275 = _0x17edbf, setFullscreenInterval = null; _0x1093f4.call(_0x45d275, _0x2c1832.container, 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen start-game', function(_0x1ac81c) { - var _0x3953b5 = _0x2c1832.controls; + let _0x3953b5 = _0x2c1832.controls; _0x3953b5 && 'enterfullscreen' === _0x1ac81c.type && (_0x3953b5.pressed = !0x1, _0x3953b5.hover = !0x1); - var _0x2c3de3 = 0x0; + let _0x2c3de3 = 0x0; if (['touchstart', 'touchmove', 'mousemove', 'start-game'].includes(_0x1ac81c.type)) { if (_0x17edbf.system == 'nds' && _0x1ac81c.type == 'mousemove' && _0x27f4c4 && _0x27f4c4.Module && _0x27f4c4.Module.canvas && (document.pointerLockElement === _0x27f4c4.Module.canvas || document.mozPointerLockElement === _0x27f4c4.Module.canvas)) { _0x5ab74d.toggleControls.call(_0x45d275, false); @@ -6041,7 +6000,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } }; }), _0x1093f4.call(_0x45d275, window, 'resize', function(_0x3e2cc5) { - var _0x17edbf = _0x45d275.elements.container.clientHeight, + let _0x17edbf = _0x45d275.elements.container.clientHeight, _0x2c1832 = _0x23ffa1.call(_0x45d275, '.' .concat(_0x449eac({ 'ejs__menu__container': true }), ' [role="menu"]')); @@ -6063,7 +6022,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }catch(e){} } if (_0x45d275.coreVer === 2 && _0x27f4c4.Module) { - var repeat = 50; + let repeat = 50; clearInterval(setFullscreenInterval); setFullscreenInterval = setInterval(function() { _0x27f4c4.Module.setCanvasSize(window.innerWidth, window.innerHeight); @@ -6094,24 +6053,24 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0xbae705.call(_0x45d275, window, 'resize'); }, 0x12c); }), _0x1093f4.call(_0x45d275, _0x45d275.elements.container, 'start-game', function(_0x5b0a00) { - var _0x17edbf = window.document.createEvent('UIEvents'); + let _0x17edbf = window.document.createEvent('UIEvents'); _0x17edbf.initUIEvent('resize', true, !0x1, window, 0x0), window.dispatchEvent(_0x17edbf), _0x3a8e2f(_0x45d275.elements.container, _0x449eac({ 'game-started': true }), true); }), _0x1093f4.call(_0x45d275, _0x45d275.elements.container, 'blur', function(_0x893c7a) { - var _0x17edbf = _0x893c7a.currentTarget; + let _0x17edbf = _0x893c7a.currentTarget; setTimeout(function() { _0x17edbf.contains(document.activeElement) || _0xbae705.call(_0x45d275, _0x45d275.elements, 'blurgame'); }, 0x0); }), _0x1093f4.call(_0x45d275, _0x45d275.elements.container, 'focus', function(_0xe0dee3) { - var _0x17edbf = _0xe0dee3.currentTarget; + let _0x17edbf = _0xe0dee3.currentTarget; setTimeout(function() { _0x17edbf.contains(document.activeElement) && _0xbae705.call(_0x45d275, _0x45d275.elements, 'focusgame'); }, 0x0); }); }, media: function() { - var _0x31e271 = this.emulator, + let _0x31e271 = this.emulator, _0x17edbf = _0x31e271.elements, _0x2c1832 = _0x31e271; _0x1093f4.call(_0x2c1832, _0x2c1832.game, 'volumechange', function(_0x3099fe) { @@ -6138,21 +6097,21 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'muted': _0x2c1832.muted }), _0xdcec2a.setVolume && _0xdcec2a.setVolume(); }); - var _0x38e17f = _0x2c1832.config.events.concat(['keyup', 'keydown']).join(' '); + let _0x38e17f = _0x2c1832.config.events.concat(['keyup', 'keydown']).join(' '); _0x1093f4.call(_0x2c1832, _0x2c1832.game, _0x38e17f, function(_0x38e438) { - var _0x2b4804 = _0x38e438.detail, + let _0x2b4804 = _0x38e438.detail, _0x1bfeb2 = void 0x0 === _0x2b4804 ? {} : _0x2b4804; 'error' === _0x38e438.type && (_0x1bfeb2 = _0x2c1832.game.error), _0xbae705.call(_0x2c1832, _0x17edbf.container, _0x38e438.type, true, _0x1bfeb2); }); }, proxy: function(_0x52d0c2, _0x500f90, _0x175ce5) { - var _0x4bb44e = this.emulator, + let _0x4bb44e = this.emulator, _0x584a64 = _0x4bb44e.config.listeners[_0x175ce5], _0x5269fd = true; _0x1e2c68.function(_0x584a64) && (_0x5269fd = _0x584a64.call(_0x4bb44e, _0x52d0c2)), _0x5269fd && _0x1e2c68.function(_0x500f90) && _0x500f90.call(_0x4bb44e, _0x52d0c2); }, bind: function(_0x4a8d46, _0x8f91ad, _0x2affda, _0x41dfb1) { - var _0x1363b1 = this, + let _0x1363b1 = this, _0x53b9a1 = !(arguments.length > 0x4 && void 0x0 !== arguments[0x4]) || arguments[0x4], _0x5209a5 = this.emulator, _0x27b738 = _0x5209a5, @@ -6163,7 +6122,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }, _0x53b9a1 && !_0x100c9f); }, controls: function() { - var _0x31e271 = this, + let _0x31e271 = this, _0x17edbf = this.emulator, _0x2c1832 = _0x17edbf.elements, _0x127f22 = _0x59aa33.isIE ? 'change' : 'input'; @@ -6174,9 +6133,10 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }, 'fullscreen'), this.bind(_0x2c1832.buttons.gamepad, 'click', function() { _0x5ab74d.toggleControls.call(_0x17edbf, !0x1), _0x132da7(_0x2c1832.dialogs.gamepad, !0x1); }, 'mute'), this.bind(_0x2c1832.buttons.saveState, 'click', function() { + saveSaveFiles(); (async function() { _0xbae705.call(_0x17edbf, _0x17edbf.elements.container, 'savestate-start', false, {}); - var _0x31e271 = await _0xdcec2a.saveState(), + let _0x31e271 = await _0xdcec2a.saveState(), _0x2c1832 = _0xdcec2a.getScreenData(); if (_0x378b5c.saveLoadDB.call(_0x17edbf, 'save')) { @@ -6187,16 +6147,18 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'state': _0x31e271 }); else { - var _0x2b5fc8 = new Blob([_0x31e271]), - _0x152605 = _0x17edbf.startName.split('/').pop().split('.'), - _0x51d471 = _0x152605.slice(0x0, _0x152605.length - 0x1).join('.'); - if (typeof _0x17edbf.gameName == 'string') { - var _0x51d471 = _0x17edbf.gameName + let name = _0x17edbf.getStartName(true, true).split('/').pop(); + let data = new Blob([_0x31e271]); + if (name.includes('.')) { + name = name.substring(0, name.length-name.split('.').pop().length-1); } - var _0x49f6b6 = _0x51d471 ? '' .concat(_0x51d471, '.state') : 'game.state'; - var a = document.createElement('a'); + if (typeof _0x17edbf.gameName == 'string') { + name = _0x17edbf.gameName + } + let _0x49f6b6 = name ? '' .concat(name, '.state') : 'game.state'; + let a = document.createElement('a'); a.download = _0x49f6b6; - a.href = URL.createObjectURL(_0x2b5fc8); + a.href = URL.createObjectURL(data); a.click(); setTimeout(function() { URL.revokeObjectURL(a.href); @@ -6209,12 +6171,12 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }, 'mute'), this.bind(_0x2c1832.buttons.settings, 'click', function(_0x1396ee) { _0x1396ee.stopPropagation(), _0x2593da.toggleMenu.call(_0x17edbf, _0x1396ee); }), this.bind(_0x2c1832.buttons.settings, 'keyup', function(_0x454936) { - var _0x2c1832 = _0x454936.which; + let _0x2c1832 = _0x454936.which; [0xd, 0x20].includes(_0x2c1832) && (0xd !== _0x2c1832 ? (_0x454936.preventDefault(), _0x454936.stopPropagation(), _0x2593da.toggleMenu.call(_0x17edbf, _0x454936)) : _0x2593da.focusFirstMenuItem.call(_0x17edbf, null, true)); }, null, !0x1), this.bind(_0x2c1832.settings.menu, 'keydown', function(_0x40072c) { 0x1b === _0x40072c.which && _0x2593da.toggleMenu.call(_0x17edbf, _0x40072c); }), _0x59aa33.isIos) { - var _0x4bd188 = _0x23ffa1.call(_0x17edbf, 'input[type="range"]'); + let _0x4bd188 = _0x23ffa1.call(_0x17edbf, 'input[type="range"]'); Array.from(_0x4bd188).forEach(function(_0x345e4c) { return _0x31e271.bind(_0x345e4c, _0x127f22, function(_0x58e6a9) { return _0x2b30e0(_0x58e6a9.target); @@ -6232,16 +6194,16 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }), this.bind(_0x2c1832.controls, 'mousedown mouseup touchstart touchend touchcancel', function(_0x4bfb22) { if (['mousedown', 'touchstart'].includes(_0x4bfb22.type)) { _0x2c1832.controls.pressed = true; - var _0x17edbf = _0x2c1832.controls.getAttribute('data-timer2'); + let _0x17edbf = _0x2c1832.controls.getAttribute('data-timer2'); clearTimeout(_0x17edbf); } else { - var _0x29ba04 = setTimeout(function() { + let _0x29ba04 = setTimeout(function() { _0x2c1832.controls.pressed = !0x1; }, 0xfa0); _0x2c1832.controls.setAttribute('data-timer2', _0x29ba04); } }), this.bind(_0x2c1832.controls, 'focusin focusout', function(_0x54e607) { - var _0x466a37 = _0x17edbf.config, + let _0x466a37 = _0x17edbf.config, _0x2ab6f3 = _0x17edbf.elements, _0x5f0669 = 'focusin' === _0x54e607.type, _0x11de96 = _0x2ab6f3.controls.getAttribute('data-timer'); @@ -6249,13 +6211,13 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { setTimeout(function() { _0x3a8e2f(_0x2ab6f3.controls, _0x466a37.classNames.noTransition, !0x1); }, 0x0); - var _0x314d11 = _0x31e271.touch ? 0xbb8 : 0xfa0; + let _0x314d11 = _0x31e271.touch ? 0xbb8 : 0xfa0; clearTimeout(_0x11de96), _0x11de96 = setTimeout(function() { return _0x5ab74d.toggleControls.call(_0x17edbf, !0x1); }, _0x314d11), _0x2ab6f3.controls.setAttribute('data-timer', _0x11de96); } }), this.bind(_0x2c1832.inputs.volume, 'wheel', function(_0x28b2d2) { - var _0x2c1832 = _0x28b2d2.webkitDirectionInvertedFromDevice, + let _0x2c1832 = _0x28b2d2.webkitDirectionInvertedFromDevice, _0x12883c = _0x42b437([_0x28b2d2.deltaX, -_0x28b2d2.deltaY].map(function(_0x1ce956) { return _0x2c1832 ? -_0x1ce956 : _0x1ce956; }), 0x2), @@ -6263,7 +6225,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x5dcee2 = _0x12883c[0x1], _0x5691ae = Math.sign(Math.abs(_0x247794) > Math.abs(_0x5dcee2) ? _0x247794 : _0x5dcee2); _0x17edbf.increaseVolume(_0x5691ae / 0x32); - var _0x47df17 = _0x17edbf.game.volume; + let _0x47df17 = _0x17edbf.game.volume; (0x1 === _0x5691ae && _0x47df17 < 0x1 || -0x1 === _0x5691ae && _0x47df17 > 0x0) && _0x28b2d2.preventDefault(); }, 'volume', !0x1), this.bind(_0x2c1832.controls, 'contextmenu', function(_0x1db0c5) { _0x1db0c5.stopPropagation(); @@ -6277,32 +6239,32 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }(); function _0x1a3a6c(_0x5a5a15, _0x4e2d69) { - for (var _0x2c1832 = 0x0; _0x2c1832 < _0x4e2d69.length; _0x2c1832++) { - var _0x2e1c57 = _0x4e2d69[_0x2c1832]; + for (let _0x2c1832 = 0x0; _0x2c1832 < _0x4e2d69.length; _0x2c1832++) { + let _0x2e1c57 = _0x4e2d69[_0x2c1832]; _0x2e1c57.enumerable = _0x2e1c57.enumerable || false, _0x2e1c57.configurable = true, 'value' in _0x2e1c57 && (_0x2e1c57.writable = true), Object.defineProperty(_0x5a5a15, _0x2e1c57.key, _0x2e1c57); } } - var _0x3dbc76 = function() { + let _0x3dbc76 = function() { function _0x6954aa(_0x28cce1, _0x2ba0e6) { return new Promise(async function(resolve, reject) { - var _0x5938bc = this; - var _0x2136bc = function(path, isDirectory) { - var finpath = window.location.pathname.split('/').pop(); - var finalpath = window.location.pathname.substring(0, window.location.pathname.length - finpath.length); - var split3 = finalpath.split('/') - var split2 = path.split('/') - var split1 = [ ] - for (var i=0; i 0) { - var split1 = function(origpath) { + let split1 = function(origpath) { if (origpath === '/') { return '/' } else { @@ -6314,9 +6276,9 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { split1.push(split2[w]); } } - var path = split1.join('/') + path = split1.join('/') if (! path.startsWith('/')) { - var path = '/' + path; + path = '/' + path; } path = window.location.protocol + '//' + window.location.host + path; } @@ -6328,7 +6290,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { } return path } - this.version = '2.3.0'; + this.version = '2.3.5'; this.system = ''; this.adUrl = null; this.gameName = null; @@ -6358,13 +6320,13 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { this.lightgun = this.config.lightgun; this.loadStateOnStart = this.config.loadStateOnStart || false; this.adUrl = this.config.adUrl || null; - this.gameName = this.config.gameName || null; + _0x1e2c68.string(this.config.gameName) && (this.gameName = this.config.gameName || null); this.mouse = this.config.mouse; this.multitap = this.config.multitap; this.cheats = this.config.cheats; this.cheats || (this.cheats = []); /* - var u = function(a, b) { + let u = function(a, b) { if (typeof b === 'string') { return b; } else if (a === true) { @@ -6382,8 +6344,8 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { this.statesSupported = this.config.statesSupported || true; this.customPaths = function(paths) { if (! paths) return {}; - var newPaths = {}; - for (var k in paths) { + let newPaths = {}; + for (let k in paths) { if (typeof paths[k] == 'string') { newPaths[k] = _0x2136bc(paths[k]); } @@ -6393,9 +6355,9 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { this.dataPath = function(path) { if (typeof path != 'string') { return function(origpath) { - var fullrequestpath = origpath - var finpath = fullrequestpath.split('/').pop() - var finalpath = fullrequestpath.substring(0, fullrequestpath.length - finpath.length) + let fullrequestpath = origpath + let finpath = fullrequestpath.split('/').pop() + let finalpath = fullrequestpath.substring(0, fullrequestpath.length - finpath.length) if (origpath == '/') { return window.location.protocol + '//' + window.location.host + '/'; } else { @@ -6412,13 +6374,13 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { return _0x2136bc(path, true); }(this.config.dataPath); this.localization = await (async function(dataPath, customPath, lang) { - var localJson = {}; + let localJson = {}; if (lang && typeof lang == 'string' && lang !== 'en-US') { - var url = (customPath && typeof customPath[lang+'.json'] == 'string') ? customPath[lang+'.json'] : dataPath+'localization/'+lang+'.json'; + let url = (customPath && typeof customPath[lang+'.json'] == 'string') ? customPath[lang+'.json'] : dataPath+'localization/'+lang+'.json'; try { - var res = await fetch(url); - var text = await res.text(); - var localJson = JSON.parse(text); + let res = await fetch(url); + let text = await res.text(); + let localJson = JSON.parse(text); _0x39ca5e.i18n = localJson.i18n; _0x7f9f36.normalOptions = localJson.normalOptions; } catch(e) { @@ -6437,13 +6399,13 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }(this.dataPath, this.customPaths, this.config.lang)); this.config = _0x5dc0c0({}, _0x39ca5e, _0x6954aa.defaults, _0x2ba0e6 || {}); Object.keys(this.config.classNames).forEach(function(_0x1d6b41) { - var _0x28cce1 = _0x5938bc; + let _0x28cce1 = _0x5938bc; if (_0x1e2c68.object(_0x28cce1.config.classNames[_0x1d6b41])) Object.keys(_0x28cce1.config.classNames[_0x1d6b41]).forEach(function(_0x42f7f2) { - var _0x2ba0e6 = {}; + let _0x2ba0e6 = {}; _0x2ba0e6[_0x5938bc.config.classNames[_0x1d6b41][_0x42f7f2]] = true, _0x5938bc.config.classNames[_0x1d6b41][_0x42f7f2] = _0x449eac(_0x2ba0e6); }); else { - var _0x2ba0e6 = {}; + let _0x2ba0e6 = {}; _0x2ba0e6[_0x5938bc.config.classNames[_0x1d6b41]] = true, _0x5938bc.config.classNames[_0x1d6b41] = _0x449eac(_0x2ba0e6); } }); @@ -6481,13 +6443,13 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { this.storage = new _0x2f61ba(this, 'ejs_settings'); this.game.emulator = this; _0x1e2c68.element(this.elements.container) || (this.elements.container = _0x428003('div'), _0x580edd(this.game, this.elements.container)); - var _0x5e63f0 = _0x428003('div', { + let _0x5e63f0 = _0x428003('div', { 'class': _0x449eac({ 'ejs__widgets': true }) }); this.elements.container.appendChild(_0x5e63f0); - var _0x32c8af = _0x428003('div', { + let _0x32c8af = _0x428003('div', { 'class': _0x449eac({ 'ejs__dialogs': true }) @@ -6503,11 +6465,11 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { resolve(this); }.bind(this)) } - var _0x17edbf, _0x2c1832, _0x423c42; + let _0x17edbf, _0x2c1832, _0x423c42; _0x17edbf = _0x6954aa, _0x423c42 = [{ 'key': 'setup', 'value': function(_0x3bb461) { - var _0x2c1832 = arguments.length > 0x1 && void 0x0 !== arguments[0x1] ? arguments[0x1] : {}, + let _0x2c1832 = arguments.length > 0x1 && void 0x0 !== arguments[0x1] ? arguments[0x1] : {}, _0x3eda14 = null; return _0x1e2c68.string(_0x3bb461) ? _0x3eda14 = Array.from(document.querySelectorAll(_0x3bb461)) : _0x1e2c68.nodeList(_0x3bb461) ? _0x3eda14 = Array.from(_0x3bb461) : _0x1e2c68.array(_0x3bb461) && (_0x3eda14 = _0x3bb461.filter(_0x1e2c68.element)), _0x1e2c68.empty(_0x3eda14) ? null : _0x3eda14.map(function(_0x176f95) { return new _0x6954aa(_0x176f95, _0x2c1832); @@ -6521,7 +6483,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }, { 'key': 'increaseVolume', 'value': function(_0x2881c7) { - var _0x17edbf = this.game.muted ? 0x0 : this.volume; + let _0x17edbf = this.game.muted ? 0x0 : this.volume; this.volume = _0x17edbf + (_0x1e2c68.number(_0x2881c7) ? _0x2881c7 : 0x0); } }, { @@ -6533,16 +6495,28 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { 'key': 'toggleControls', 'value': function(_0x1c82b4) { if (this.started) { - var _0x17edbf = void 0x0 === _0x1c82b4 ? void 0x0 : !_0x1c82b4, + let _0x17edbf = void 0x0 === _0x1c82b4 ? void 0x0 : !_0x1c82b4, _0x2c1832 = _0x3a8e2f(this.elements.container, this.config.classNames.hideControls, _0x17edbf); return _0x2c1832 && _0x2593da.toggleMenu.call(this, !0x1), !_0x2c1832; } return !0x1; } }, { - 'key': 'setStatesSupported', - 'value': function(newValue) { - this.statesSupported = newValue; + 'key': 'getStartName', + 'value': function(force, noSystem) { + let rv; + if (this.startName && (force === true || this.startName !== 'rom')) { + rv = this.startName; + } else if (!this.config.gameUrl.startsWith('blob:')) { + rv = this.config.gameUrl.split('/').pop().replace(/[^a-z0-9 ,.]/ig, ''); + } else if (this.gameName) { + rv = (noSystem===true?'':this.system+'-')+this.gameName.replace(/\#/g, ''); + } else if (this.config.gameId) { + rv = (noSystem===true?'':this.system+'-')+this.config.gameId; + } else if (force === true) { + rv = this.config.gameUrl.split('/').pop().replace(/[^a-z0-9 ,.]/ig, ''); + } + return rv; } }, { 'key': 'loadState', @@ -6567,7 +6541,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }, { 'key': 'playing', 'set': function() { - var _0x6954aa = !(arguments.length > 0x0 && void 0x0 !== arguments[0x0]) || arguments[0x0]; + let _0x6954aa = !(arguments.length > 0x0 && void 0x0 !== arguments[0x0]) || arguments[0x0]; Array.from(this.elements.buttons.play || []).forEach(function(_0x4a27d3) { _0x4a27d3.pressed = _0x6954aa; }), this.paused = !_0x6954aa; @@ -6578,7 +6552,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }, { 'key': 'volume', 'set': function(_0x52441c) { - var _0x17edbf = _0x52441c; + let _0x17edbf = _0x52441c; _0x1e2c68.string(_0x17edbf) && (_0x17edbf = Number(_0x17edbf)), _0x1e2c68.number(_0x17edbf) || (_0x17edbf = this.storage.get('volume')), _0x1e2c68.number(_0x17edbf) || (_0x17edbf = this.config.volume), _0x17edbf > 0x1 && (_0x17edbf = 0x1), _0x17edbf < 0x0 && (_0x17edbf = 0x0), this.config.volume = _0x17edbf, this.game.volume = _0x17edbf, !_0x1e2c68.empty(_0x52441c) && this.muted && _0x17edbf > 0x0 && (this.muted = !0x1); }, 'get': function() { @@ -6587,7 +6561,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { }, { 'key': 'muted', 'set': function(_0x218306) { - var _0x17edbf = _0x218306; + let _0x17edbf = _0x218306; _0x1e2c68.boolean(_0x17edbf) || (_0x17edbf = this.storage.get('muted')), _0x1e2c68.boolean(_0x17edbf) || (_0x17edbf = this.config.muted), this.config.muted = _0x17edbf, this.game.muted = _0x17edbf; }, 'get': function() { @@ -6598,6 +6572,7 @@ window.EJS_main = function(_0xa88a13, _0x17edbf, _0x2c1832) { _0x423c42 && _0x1a3a6c(_0x17edbf, _0x423c42) return _0x6954aa; }(); + _0x3dbc76.defaults = {}; _0x17edbf.default = _0x3dbc76; } diff --git a/data/emulator.js b/data/emulator.js index fa3440e..eeb852f 100644 --- a/data/emulator.js +++ b/data/emulator.js @@ -255,98 +255,7 @@ var EJS = function(_0x574f5e) { } } } -}, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, function(_0x4f4230, _0x181c20) { - var _0x4b3a38, _0x30dbdf, _0x40240d = _0x4f4230.exports = {}; - - function _0x508793() { - throw new Error('setTimeout has not been defined'); - } - - function _0x1e140b() { - throw new Error('clearTimeout has not been defined'); - } - - function _0x58e592(_0x1e83f0) { - if (_0x4b3a38 === setTimeout) return setTimeout(_0x1e83f0, 0x0); - if ((_0x4b3a38 === _0x508793 || !_0x4b3a38) && setTimeout) return _0x4b3a38 = setTimeout, setTimeout(_0x1e83f0, 0x0); - try { - return _0x4b3a38(_0x1e83f0, 0x0); - } catch (_0x4743cf) { - try { - return _0x4b3a38.call(null, _0x1e83f0, 0x0); - } catch (_0x53620e) { - return _0x4b3a38.call(this, _0x1e83f0, 0x0); - } - } - }! function() { - try { - _0x4b3a38 = 'function' == typeof setTimeout ? setTimeout : _0x508793; - } catch (_0x2ba20e) { - _0x4b3a38 = _0x508793; - } - try { - _0x30dbdf = 'function' == typeof clearTimeout ? clearTimeout : _0x1e140b; - } catch (_0x5202a1) { - _0x30dbdf = _0x1e140b; - } - }(); - var _0x493e74, _0x501f0f = [], - _0x3ba731 = !0x1, - _0x21c3e3 = -0x1; - - function _0x21e6b7() { - _0x3ba731 && _0x493e74 && (_0x3ba731 = !0x1, _0x493e74.length ? _0x501f0f = _0x493e74.concat(_0x501f0f) : _0x21c3e3 = -0x1, _0x501f0f.length && _0x30d6c8()); - } - - function _0x30d6c8() { - if (!_0x3ba731) { - var _0x4f4230 = _0x58e592(_0x21e6b7); - _0x3ba731 = true; - for (var _0x181c20 = _0x501f0f.length; _0x181c20;) { - for (_0x493e74 = _0x501f0f, _0x501f0f = []; ++_0x21c3e3 < _0x181c20;) _0x493e74 && _0x493e74[_0x21c3e3].run(); - _0x21c3e3 = -0x1, _0x181c20 = _0x501f0f.length; - } - _0x493e74 = null, _0x3ba731 = !0x1, - function(_0x294b98) { - if (_0x30dbdf === clearTimeout) return clearTimeout(_0x294b98); - if ((_0x30dbdf === _0x1e140b || !_0x30dbdf) && clearTimeout) return _0x30dbdf = clearTimeout, clearTimeout(_0x294b98); - try { - _0x30dbdf(_0x294b98); - } catch (_0x353086) { - try { - return _0x30dbdf.call(null, _0x294b98); - } catch (_0x430227) { - return _0x30dbdf.call(this, _0x294b98); - } - } - }(_0x4f4230); - } - } - - function _0x5b9c05(_0x1d5ae2, _0x5b9ff8) { - this.fun = _0x1d5ae2, this.array = _0x5b9ff8; - } - - function _0x11873d() {} - _0x40240d.nextTick = function(_0x14ed62) { - var _0x181c20 = new Array(arguments.length - 0x1); - if (arguments.length > 0x1) - for (var _0x1c0f88 = 0x1; _0x1c0f88 < arguments.length; _0x1c0f88++) _0x181c20[_0x1c0f88 - 0x1] = arguments[_0x1c0f88]; - _0x501f0f.push(new _0x5b9c05(_0x14ed62, _0x181c20)), 0x1 !== _0x501f0f.length || _0x3ba731 || _0x58e592(_0x30d6c8); - }, _0x5b9c05.prototype.run = function() { - this.fun.apply(null, this.array); - }, _0x40240d.title = 'browser', _0x40240d.browser = true, _0x40240d.env = {}, _0x40240d.argv = [], _0x40240d.version = '', _0x40240d.versions = {}, _0x40240d.on = _0x11873d, _0x40240d.addListener = _0x11873d, _0x40240d.once = _0x11873d, _0x40240d.off = _0x11873d, _0x40240d.removeListener = _0x11873d, _0x40240d.removeAllListeners = _0x11873d, _0x40240d.emit = _0x11873d, _0x40240d.prependListener = _0x11873d, _0x40240d.prependOnceListener = _0x11873d, _0x40240d.listeners = function(_0x4a7ed5) { - return []; - }, _0x40240d.binding = function(_0x4fe55f) { - throw new Error('process.binding is not supported'); - }, _0x40240d.cwd = function() { - return '/'; - }, _0x40240d.chdir = function(_0x33049c) { - throw new Error('process.chdir is not supported'); - }, _0x40240d.umask = function() { - return 0x0; - }; -}, null, null, null, null, null, null, null, function(_0x2e240f, _0x5b82af, _0x39b24a) { +}, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, function(_0x2e240f, _0x5b82af, _0x39b24a) { var _0xafdfe, _0x133983; ! function(_0xcb4965, _0x3924c5, _0x2b6d6d) { 'use strict'; @@ -762,25 +671,7 @@ var EJS = function(_0x574f5e) { return _0x2b9783.prototype = _0x28a590, _0x2b9783.version = _0x28a590.version, _0x2b9783; }) ? _0xafdfe.call(_0x5b82af, _0x39b24a, _0x5b82af, _0x2e240f) : _0xafdfe) || (_0x2e240f.exports = _0x133983); }(); -}, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, function(_0x5e1357, _0x334b04) { - _0x5e1357.exports = function(_0x1bfcef) { - return _0x1bfcef.webpackPolyfill || (_0x1bfcef.deprecate = function() {}, _0x1bfcef.paths = [], _0x1bfcef.children || (_0x1bfcef.children = []), Object.defineProperty(_0x1bfcef, 'loaded', { - 'enumerable': true, - 'get': function() { - return _0x1bfcef.l; - } - }), Object.defineProperty(_0x1bfcef, 'id', { - 'enumerable': true, - 'get': function() { - return _0x1bfcef.i; - } - }), _0x1bfcef.webpackPolyfill = 0x1), _0x1bfcef; - }; -}, function(_0xac5f55, _0x6036c7) { - (function(_0x5be4df) { - _0xac5f55.exports = _0x5be4df; - }.call(this, {})); -}, null, null, null, null, null, null, null, null, null, null, null, null, function(_0xc6a4b0, _0x7437ff, _0x459722) { +}, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, function(_0xc6a4b0, _0x7437ff, _0x459722) { var _0x4bddd8; ! function() { 'use strict'; @@ -1479,141 +1370,4 @@ var EJS = function(_0x574f5e) { 'factory': _0x5c2a4b }; }); -}, function(_0x58785f, _0x269d2d, _0x36e800) { - (function(_0x514d66, _0x179a8a) { - var _0x1e876b; - - function _0x37ea03(_0xc47df6) { - return (_0x37ea03 = 'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator ? function(_0x3452dd) { - return typeof _0x3452dd; - } : function(_0xf9423c) { - return _0xf9423c && 'function' == typeof Symbol && _0xf9423c.constructor === Symbol && _0xf9423c !== Symbol.prototype ? 'symbol' : typeof _0xf9423c; - })(_0xc47df6); - }! function() { - 'use strict'; - var _0x497ce1 = 'input is invalid type', - _0x22b8cf = 'object' === ('undefined' == typeof window ? 'undefined' : _0x37ea03(window)), - _0x149fcb = _0x22b8cf ? window : {}; - _0x149fcb.JS_MD5_NO_WINDOW && (_0x22b8cf = !0x1); - var _0x5a9bb1 = !_0x22b8cf && 'object' === ('undefined' == typeof self ? 'undefined' : _0x37ea03(self)), - _0x9c7cc0 = !_0x149fcb.JS_MD5_NO_NODE_JS && 'object' === (void 0x0 === _0x514d66 ? 'undefined' : _0x37ea03(_0x514d66)) && _0x514d66.versions && _0x514d66.versions.node; - _0x9c7cc0 ? _0x149fcb = window : _0x5a9bb1 && (_0x149fcb = self); - var _0x178f75 = !_0x149fcb.JS_MD5_NO_COMMON_JS && 'object' === _0x37ea03(_0x179a8a) && _0x179a8a.exports, - _0x256e04 = _0x36e800(0x90), - _0x3204dd = !_0x149fcb.JS_MD5_NO_ARRAY_BUFFER && 'undefined' != typeof ArrayBuffer, - _0x13a835 = '0123456789abcdef' .split(''), - _0x48470a = [0x80, 0x8000, 0x800000, -0x80000000], - _0x349fda = [0x0, 0x8, 0x10, 0x18], - _0x41150a = ['hex', 'array', 'digest', 'buffer', 'arrayBuffer', 'base64'], - _0x41cf2e = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' .split(''), - _0x232b50 = [], - _0x42d3ec; - if (_0x3204dd) { - var _0x7a5fbb = new ArrayBuffer(0x44); - _0x42d3ec = new Uint8Array(_0x7a5fbb), _0x232b50 = new Uint32Array(_0x7a5fbb); - }!_0x149fcb.JS_MD5_NO_NODE_JS && Array.isArray || (Array.isArray = function(_0x4ac178) { - return '[object Array]' === Object.prototype.toString.call(_0x4ac178); - }), !_0x3204dd || !_0x149fcb.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW && ArrayBuffer.isView || (ArrayBuffer.isView = function(_0x27f298) { - return 'object' === _0x37ea03(_0x27f298) && _0x27f298.buffer && _0x27f298.buffer.constructor === ArrayBuffer; - }); - var _0x23df61 = function(_0x3b5d61) { - return function(_0x2f213a) { - return new _0x52468b(true).update(_0x2f213a)[_0x3b5d61](); - }; - }, - _0x3a7f83 = function() { - var _0x5c6b67 = _0x23df61('hex'); - _0x9c7cc0 && (_0x5c6b67 = _0x2c5426(_0x5c6b67)), _0x5c6b67.create = function() { - return new _0x52468b(); - }, _0x5c6b67.update = function(_0x3df208) { - return _0x5c6b67.create().update(_0x3df208); - }; - for (var _0x2f6a43 = 0x0; _0x2f6a43 < _0x41150a.length; ++_0x2f6a43) { - var _0x31f7a7 = _0x41150a[_0x2f6a43]; - _0x5c6b67[_0x31f7a7] = _0x23df61(_0x31f7a7); - } - return _0x5c6b67; - }, - _0x2c5426 = function _0x2c5426(_0x4a1bfd) { - var _0x4bbc7e = require('crypto'), - _0x5a9763 = require('buffer').Buffer, - _0x27c8cc = function(_0x4bb699) { - if ('string' == typeof _0x4bb699) return _0x4bbc7e.createHash('md5').update(_0x4bb699, 'utf8').digest('hex'); - if (null == _0x4bb699) throw _0x497ce1; - return _0x4bb699.constructor === ArrayBuffer && (_0x4bb699 = new Uint8Array(_0x4bb699)), Array.isArray(_0x4bb699) || ArrayBuffer.isView(_0x4bb699) || _0x4bb699.constructor === _0x5a9763 ? _0x4bbc7e.createHash('md5').update(new _0x5a9763(_0x4bb699)).digest('hex') : _0x4a1bfd(_0x4bb699); - }; - return _0x27c8cc; - }; - - function _0x52468b(_0x49f6ae) { - if (_0x49f6ae) _0x232b50[0x0] = _0x232b50[0x10] = _0x232b50[0x1] = _0x232b50[0x2] = _0x232b50[0x3] = _0x232b50[0x4] = _0x232b50[0x5] = _0x232b50[0x6] = _0x232b50[0x7] = _0x232b50[0x8] = _0x232b50[0x9] = _0x232b50[0xa] = _0x232b50[0xb] = _0x232b50[0xc] = _0x232b50[0xd] = _0x232b50[0xe] = _0x232b50[0xf] = 0x0, this.blocks = _0x232b50, this.buffer8 = _0x42d3ec; - else if (_0x3204dd) { - var _0x47c30c = new ArrayBuffer(0x44); - this.buffer8 = new Uint8Array(_0x47c30c), this.blocks = new Uint32Array(_0x47c30c); - } else this.blocks = [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]; - this.h0 = this.h1 = this.h2 = this.h3 = this.start = this.bytes = this.hBytes = 0x0, this.finalized = this.hashed = !0x1, this.first = true; - } - _0x52468b.prototype.update = function(_0x4b25f7) { - if (!this.finalized) { - var _0x560880, _0x34611f = _0x37ea03(_0x4b25f7); - if ('string' !== _0x34611f) { - if ('object' !== _0x34611f) throw _0x497ce1; - if (null === _0x4b25f7) throw _0x497ce1; - if (_0x3204dd && _0x4b25f7.constructor === ArrayBuffer) _0x4b25f7 = new Uint8Array(_0x4b25f7); - else if (!(Array.isArray(_0x4b25f7) || _0x3204dd && ArrayBuffer.isView(_0x4b25f7))) throw _0x497ce1; - _0x560880 = true; - } - for (var _0x419f10, _0x3a9793, _0x39ee4a = 0x0, _0x5506c6 = _0x4b25f7.length, _0xe0faf3 = this.blocks, _0x1d2007 = this.buffer8; _0x39ee4a < _0x5506c6;) { - if (this.hashed && (this.hashed = !0x1, _0xe0faf3[0x0] = _0xe0faf3[0x10], _0xe0faf3[0x10] = _0xe0faf3[0x1] = _0xe0faf3[0x2] = _0xe0faf3[0x3] = _0xe0faf3[0x4] = _0xe0faf3[0x5] = _0xe0faf3[0x6] = _0xe0faf3[0x7] = _0xe0faf3[0x8] = _0xe0faf3[0x9] = _0xe0faf3[0xa] = _0xe0faf3[0xb] = _0xe0faf3[0xc] = _0xe0faf3[0xd] = _0xe0faf3[0xe] = _0xe0faf3[0xf] = 0x0), _0x560880) - if (_0x3204dd) - for (_0x3a9793 = this.start; _0x39ee4a < _0x5506c6 && _0x3a9793 < 0x40; ++_0x39ee4a) _0x1d2007[_0x3a9793++] = _0x4b25f7[_0x39ee4a]; - else - for (_0x3a9793 = this.start; _0x39ee4a < _0x5506c6 && _0x3a9793 < 0x40; ++_0x39ee4a) _0xe0faf3[_0x3a9793 >> 0x2] |= _0x4b25f7[_0x39ee4a] << _0x349fda[0x3 & _0x3a9793++]; - else if (_0x3204dd) - for (_0x3a9793 = this.start; _0x39ee4a < _0x5506c6 && _0x3a9793 < 0x40; ++_0x39ee4a)(_0x419f10 = _0x4b25f7.charCodeAt(_0x39ee4a)) < 0x80 ? _0x1d2007[_0x3a9793++] = _0x419f10 : _0x419f10 < 0x800 ? (_0x1d2007[_0x3a9793++] = 0xc0 | _0x419f10 >> 0x6, _0x1d2007[_0x3a9793++] = 0x80 | 0x3f & _0x419f10) : _0x419f10 < 0xd800 || _0x419f10 >= 0xe000 ? (_0x1d2007[_0x3a9793++] = 0xe0 | _0x419f10 >> 0xc, _0x1d2007[_0x3a9793++] = 0x80 | _0x419f10 >> 0x6 & 0x3f, _0x1d2007[_0x3a9793++] = 0x80 | 0x3f & _0x419f10) : (_0x419f10 = 0x10000 + ((0x3ff & _0x419f10) << 0xa | 0x3ff & _0x4b25f7.charCodeAt(++_0x39ee4a)), _0x1d2007[_0x3a9793++] = 0xf0 | _0x419f10 >> 0x12, _0x1d2007[_0x3a9793++] = 0x80 | _0x419f10 >> 0xc & 0x3f, _0x1d2007[_0x3a9793++] = 0x80 | _0x419f10 >> 0x6 & 0x3f, _0x1d2007[_0x3a9793++] = 0x80 | 0x3f & _0x419f10); - else - for (_0x3a9793 = this.start; _0x39ee4a < _0x5506c6 && _0x3a9793 < 0x40; ++_0x39ee4a)(_0x419f10 = _0x4b25f7.charCodeAt(_0x39ee4a)) < 0x80 ? _0xe0faf3[_0x3a9793 >> 0x2] |= _0x419f10 << _0x349fda[0x3 & _0x3a9793++] : _0x419f10 < 0x800 ? (_0xe0faf3[_0x3a9793 >> 0x2] |= (0xc0 | _0x419f10 >> 0x6) << _0x349fda[0x3 & _0x3a9793++], _0xe0faf3[_0x3a9793 >> 0x2] |= (0x80 | 0x3f & _0x419f10) << _0x349fda[0x3 & _0x3a9793++]) : _0x419f10 < 0xd800 || _0x419f10 >= 0xe000 ? (_0xe0faf3[_0x3a9793 >> 0x2] |= (0xe0 | _0x419f10 >> 0xc) << _0x349fda[0x3 & _0x3a9793++], _0xe0faf3[_0x3a9793 >> 0x2] |= (0x80 | _0x419f10 >> 0x6 & 0x3f) << _0x349fda[0x3 & _0x3a9793++], _0xe0faf3[_0x3a9793 >> 0x2] |= (0x80 | 0x3f & _0x419f10) << _0x349fda[0x3 & _0x3a9793++]) : (_0x419f10 = 0x10000 + ((0x3ff & _0x419f10) << 0xa | 0x3ff & _0x4b25f7.charCodeAt(++_0x39ee4a)), _0xe0faf3[_0x3a9793 >> 0x2] |= (0xf0 | _0x419f10 >> 0x12) << _0x349fda[0x3 & _0x3a9793++], _0xe0faf3[_0x3a9793 >> 0x2] |= (0x80 | _0x419f10 >> 0xc & 0x3f) << _0x349fda[0x3 & _0x3a9793++], _0xe0faf3[_0x3a9793 >> 0x2] |= (0x80 | _0x419f10 >> 0x6 & 0x3f) << _0x349fda[0x3 & _0x3a9793++], _0xe0faf3[_0x3a9793 >> 0x2] |= (0x80 | 0x3f & _0x419f10) << _0x349fda[0x3 & _0x3a9793++]); - this.lastByteIndex = _0x3a9793, this.bytes += _0x3a9793 - this.start, _0x3a9793 >= 0x40 ? (this.start = _0x3a9793 - 0x40, this.hash(), this.hashed = true) : this.start = _0x3a9793; - } - return this.bytes > 0xffffffff && (this.hBytes += this.bytes / 0x100000000 << 0x0, this.bytes = this.bytes % 0x100000000), this; - } - }, _0x52468b.prototype.finalize = function() { - if (!this.finalized) { - this.finalized = true; - var _0x1173a3 = this.blocks, - _0x5660dd = this.lastByteIndex; - _0x1173a3[_0x5660dd >> 0x2] |= _0x48470a[0x3 & _0x5660dd], _0x5660dd >= 0x38 && (this.hashed || this.hash(), _0x1173a3[0x0] = _0x1173a3[0x10], _0x1173a3[0x10] = _0x1173a3[0x1] = _0x1173a3[0x2] = _0x1173a3[0x3] = _0x1173a3[0x4] = _0x1173a3[0x5] = _0x1173a3[0x6] = _0x1173a3[0x7] = _0x1173a3[0x8] = _0x1173a3[0x9] = _0x1173a3[0xa] = _0x1173a3[0xb] = _0x1173a3[0xc] = _0x1173a3[0xd] = _0x1173a3[0xe] = _0x1173a3[0xf] = 0x0), _0x1173a3[0xe] = this.bytes << 0x3, _0x1173a3[0xf] = this.hBytes << 0x3 | this.bytes >>> 0x1d, this.hash(); - } - }, _0x52468b.prototype.hash = function() { - var _0x300239, _0x465f5a, _0x1c9d0, _0x58f351, _0x5c6cd7, _0xb38ae4, _0x2e1661 = this.blocks; - this.first ? _0x465f5a = ((_0x465f5a = ((_0x300239 = ((_0x300239 = _0x2e1661[0x0] - 0x28955b89) << 0x7 | _0x300239 >>> 0x19) - 0x10325477 << 0x0) ^ (_0x1c9d0 = ((_0x1c9d0 = (-0x10325477 ^ (_0x58f351 = ((_0x58f351 = (-0x67452302 ^ 0x77777777 & _0x300239) + _0x2e1661[0x1] - 0x705f434) << 0xc | _0x58f351 >>> 0x14) + _0x300239 << 0x0) & (-0x10325477 ^ _0x300239)) + _0x2e1661[0x2] - 0x4324b227) << 0x11 | _0x1c9d0 >>> 0xf) + _0x58f351 << 0x0) & (_0x58f351 ^ _0x300239)) + _0x2e1661[0x3] - 0x4e748589) << 0x16 | _0x465f5a >>> 0xa) + _0x1c9d0 << 0x0 : (_0x300239 = this.h0, _0x465f5a = this.h1, _0x1c9d0 = this.h2, _0x465f5a = ((_0x465f5a += ((_0x300239 = ((_0x300239 += ((_0x58f351 = this.h3) ^ _0x465f5a & (_0x1c9d0 ^ _0x58f351)) + _0x2e1661[0x0] - 0x28955b88) << 0x7 | _0x300239 >>> 0x19) + _0x465f5a << 0x0) ^ (_0x1c9d0 = ((_0x1c9d0 += (_0x465f5a ^ (_0x58f351 = ((_0x58f351 += (_0x1c9d0 ^ _0x300239 & (_0x465f5a ^ _0x1c9d0)) + _0x2e1661[0x1] - 0x173848aa) << 0xc | _0x58f351 >>> 0x14) + _0x300239 << 0x0) & (_0x300239 ^ _0x465f5a)) + _0x2e1661[0x2] + 0x242070db) << 0x11 | _0x1c9d0 >>> 0xf) + _0x58f351 << 0x0) & (_0x58f351 ^ _0x300239)) + _0x2e1661[0x3] - 0x3e423112) << 0x16 | _0x465f5a >>> 0xa) + _0x1c9d0 << 0x0), _0x465f5a = ((_0x465f5a += ((_0x300239 = ((_0x300239 += (_0x58f351 ^ _0x465f5a & (_0x1c9d0 ^ _0x58f351)) + _0x2e1661[0x4] - 0xa83f051) << 0x7 | _0x300239 >>> 0x19) + _0x465f5a << 0x0) ^ (_0x1c9d0 = ((_0x1c9d0 += (_0x465f5a ^ (_0x58f351 = ((_0x58f351 += (_0x1c9d0 ^ _0x300239 & (_0x465f5a ^ _0x1c9d0)) + _0x2e1661[0x5] + 0x4787c62a) << 0xc | _0x58f351 >>> 0x14) + _0x300239 << 0x0) & (_0x300239 ^ _0x465f5a)) + _0x2e1661[0x6] - 0x57cfb9ed) << 0x11 | _0x1c9d0 >>> 0xf) + _0x58f351 << 0x0) & (_0x58f351 ^ _0x300239)) + _0x2e1661[0x7] - 0x2b96aff) << 0x16 | _0x465f5a >>> 0xa) + _0x1c9d0 << 0x0, _0x465f5a = ((_0x465f5a += ((_0x300239 = ((_0x300239 += (_0x58f351 ^ _0x465f5a & (_0x1c9d0 ^ _0x58f351)) + _0x2e1661[0x8] + 0x698098d8) << 0x7 | _0x300239 >>> 0x19) + _0x465f5a << 0x0) ^ (_0x1c9d0 = ((_0x1c9d0 += (_0x465f5a ^ (_0x58f351 = ((_0x58f351 += (_0x1c9d0 ^ _0x300239 & (_0x465f5a ^ _0x1c9d0)) + _0x2e1661[0x9] - 0x74bb0851) << 0xc | _0x58f351 >>> 0x14) + _0x300239 << 0x0) & (_0x300239 ^ _0x465f5a)) + _0x2e1661[0xa] - 0xa44f) << 0x11 | _0x1c9d0 >>> 0xf) + _0x58f351 << 0x0) & (_0x58f351 ^ _0x300239)) + _0x2e1661[0xb] - 0x76a32842) << 0x16 | _0x465f5a >>> 0xa) + _0x1c9d0 << 0x0, _0x465f5a = ((_0x465f5a += ((_0x300239 = ((_0x300239 += (_0x58f351 ^ _0x465f5a & (_0x1c9d0 ^ _0x58f351)) + _0x2e1661[0xc] + 0x6b901122) << 0x7 | _0x300239 >>> 0x19) + _0x465f5a << 0x0) ^ (_0x1c9d0 = ((_0x1c9d0 += (_0x465f5a ^ (_0x58f351 = ((_0x58f351 += (_0x1c9d0 ^ _0x300239 & (_0x465f5a ^ _0x1c9d0)) + _0x2e1661[0xd] - 0x2678e6d) << 0xc | _0x58f351 >>> 0x14) + _0x300239 << 0x0) & (_0x300239 ^ _0x465f5a)) + _0x2e1661[0xe] - 0x5986bc72) << 0x11 | _0x1c9d0 >>> 0xf) + _0x58f351 << 0x0) & (_0x58f351 ^ _0x300239)) + _0x2e1661[0xf] + 0x49b40821) << 0x16 | _0x465f5a >>> 0xa) + _0x1c9d0 << 0x0, _0x465f5a = ((_0x465f5a += ((_0x58f351 = ((_0x58f351 += (_0x465f5a ^ _0x1c9d0 & ((_0x300239 = ((_0x300239 += (_0x1c9d0 ^ _0x58f351 & (_0x465f5a ^ _0x1c9d0)) + _0x2e1661[0x1] - 0x9e1da9e) << 0x5 | _0x300239 >>> 0x1b) + _0x465f5a << 0x0) ^ _0x465f5a)) + _0x2e1661[0x6] - 0x3fbf4cc0) << 0x9 | _0x58f351 >>> 0x17) + _0x300239 << 0x0) ^ _0x300239 & ((_0x1c9d0 = ((_0x1c9d0 += (_0x300239 ^ _0x465f5a & (_0x58f351 ^ _0x300239)) + _0x2e1661[0xb] + 0x265e5a51) << 0xe | _0x1c9d0 >>> 0x12) + _0x58f351 << 0x0) ^ _0x58f351)) + _0x2e1661[0x0] - 0x16493856) << 0x14 | _0x465f5a >>> 0xc) + _0x1c9d0 << 0x0, _0x465f5a = ((_0x465f5a += ((_0x58f351 = ((_0x58f351 += (_0x465f5a ^ _0x1c9d0 & ((_0x300239 = ((_0x300239 += (_0x1c9d0 ^ _0x58f351 & (_0x465f5a ^ _0x1c9d0)) + _0x2e1661[0x5] - 0x29d0efa3) << 0x5 | _0x300239 >>> 0x1b) + _0x465f5a << 0x0) ^ _0x465f5a)) + _0x2e1661[0xa] + 0x2441453) << 0x9 | _0x58f351 >>> 0x17) + _0x300239 << 0x0) ^ _0x300239 & ((_0x1c9d0 = ((_0x1c9d0 += (_0x300239 ^ _0x465f5a & (_0x58f351 ^ _0x300239)) + _0x2e1661[0xf] - 0x275e197f) << 0xe | _0x1c9d0 >>> 0x12) + _0x58f351 << 0x0) ^ _0x58f351)) + _0x2e1661[0x4] - 0x182c0438) << 0x14 | _0x465f5a >>> 0xc) + _0x1c9d0 << 0x0, _0x465f5a = ((_0x465f5a += ((_0x58f351 = ((_0x58f351 += (_0x465f5a ^ _0x1c9d0 & ((_0x300239 = ((_0x300239 += (_0x1c9d0 ^ _0x58f351 & (_0x465f5a ^ _0x1c9d0)) + _0x2e1661[0x9] + 0x21e1cde6) << 0x5 | _0x300239 >>> 0x1b) + _0x465f5a << 0x0) ^ _0x465f5a)) + _0x2e1661[0xe] - 0x3cc8f82a) << 0x9 | _0x58f351 >>> 0x17) + _0x300239 << 0x0) ^ _0x300239 & ((_0x1c9d0 = ((_0x1c9d0 += (_0x300239 ^ _0x465f5a & (_0x58f351 ^ _0x300239)) + _0x2e1661[0x3] - 0xb2af279) << 0xe | _0x1c9d0 >>> 0x12) + _0x58f351 << 0x0) ^ _0x58f351)) + _0x2e1661[0x8] + 0x455a14ed) << 0x14 | _0x465f5a >>> 0xc) + _0x1c9d0 << 0x0, _0x465f5a = ((_0x465f5a += ((_0x58f351 = ((_0x58f351 += (_0x465f5a ^ _0x1c9d0 & ((_0x300239 = ((_0x300239 += (_0x1c9d0 ^ _0x58f351 & (_0x465f5a ^ _0x1c9d0)) + _0x2e1661[0xd] - 0x561c16fb) << 0x5 | _0x300239 >>> 0x1b) + _0x465f5a << 0x0) ^ _0x465f5a)) + _0x2e1661[0x2] - 0x3105c08) << 0x9 | _0x58f351 >>> 0x17) + _0x300239 << 0x0) ^ _0x300239 & ((_0x1c9d0 = ((_0x1c9d0 += (_0x300239 ^ _0x465f5a & (_0x58f351 ^ _0x300239)) + _0x2e1661[0x7] + 0x676f02d9) << 0xe | _0x1c9d0 >>> 0x12) + _0x58f351 << 0x0) ^ _0x58f351)) + _0x2e1661[0xc] - 0x72d5b376) << 0x14 | _0x465f5a >>> 0xc) + _0x1c9d0 << 0x0, _0x465f5a = ((_0x465f5a += ((_0xb38ae4 = (_0x58f351 = ((_0x58f351 += ((_0x5c6cd7 = _0x465f5a ^ _0x1c9d0) ^ (_0x300239 = ((_0x300239 += (_0x5c6cd7 ^ _0x58f351) + _0x2e1661[0x5] - 0x5c6be) << 0x4 | _0x300239 >>> 0x1c) + _0x465f5a << 0x0)) + _0x2e1661[0x8] - 0x788e097f) << 0xb | _0x58f351 >>> 0x15) + _0x300239 << 0x0) ^ _0x300239) ^ (_0x1c9d0 = ((_0x1c9d0 += (_0xb38ae4 ^ _0x465f5a) + _0x2e1661[0xb] + 0x6d9d6122) << 0x10 | _0x1c9d0 >>> 0x10) + _0x58f351 << 0x0)) + _0x2e1661[0xe] - 0x21ac7f4) << 0x17 | _0x465f5a >>> 0x9) + _0x1c9d0 << 0x0, _0x465f5a = ((_0x465f5a += ((_0xb38ae4 = (_0x58f351 = ((_0x58f351 += ((_0x5c6cd7 = _0x465f5a ^ _0x1c9d0) ^ (_0x300239 = ((_0x300239 += (_0x5c6cd7 ^ _0x58f351) + _0x2e1661[0x1] - 0x5b4115bc) << 0x4 | _0x300239 >>> 0x1c) + _0x465f5a << 0x0)) + _0x2e1661[0x4] + 0x4bdecfa9) << 0xb | _0x58f351 >>> 0x15) + _0x300239 << 0x0) ^ _0x300239) ^ (_0x1c9d0 = ((_0x1c9d0 += (_0xb38ae4 ^ _0x465f5a) + _0x2e1661[0x7] - 0x944b4a0) << 0x10 | _0x1c9d0 >>> 0x10) + _0x58f351 << 0x0)) + _0x2e1661[0xa] - 0x41404390) << 0x17 | _0x465f5a >>> 0x9) + _0x1c9d0 << 0x0, _0x465f5a = ((_0x465f5a += ((_0xb38ae4 = (_0x58f351 = ((_0x58f351 += ((_0x5c6cd7 = _0x465f5a ^ _0x1c9d0) ^ (_0x300239 = ((_0x300239 += (_0x5c6cd7 ^ _0x58f351) + _0x2e1661[0xd] + 0x289b7ec6) << 0x4 | _0x300239 >>> 0x1c) + _0x465f5a << 0x0)) + _0x2e1661[0x0] - 0x155ed806) << 0xb | _0x58f351 >>> 0x15) + _0x300239 << 0x0) ^ _0x300239) ^ (_0x1c9d0 = ((_0x1c9d0 += (_0xb38ae4 ^ _0x465f5a) + _0x2e1661[0x3] - 0x2b10cf7b) << 0x10 | _0x1c9d0 >>> 0x10) + _0x58f351 << 0x0)) + _0x2e1661[0x6] + 0x4881d05) << 0x17 | _0x465f5a >>> 0x9) + _0x1c9d0 << 0x0, _0x465f5a = ((_0x465f5a += ((_0xb38ae4 = (_0x58f351 = ((_0x58f351 += ((_0x5c6cd7 = _0x465f5a ^ _0x1c9d0) ^ (_0x300239 = ((_0x300239 += (_0x5c6cd7 ^ _0x58f351) + _0x2e1661[0x9] - 0x262b2fc7) << 0x4 | _0x300239 >>> 0x1c) + _0x465f5a << 0x0)) + _0x2e1661[0xc] - 0x1924661b) << 0xb | _0x58f351 >>> 0x15) + _0x300239 << 0x0) ^ _0x300239) ^ (_0x1c9d0 = ((_0x1c9d0 += (_0xb38ae4 ^ _0x465f5a) + _0x2e1661[0xf] + 0x1fa27cf8) << 0x10 | _0x1c9d0 >>> 0x10) + _0x58f351 << 0x0)) + _0x2e1661[0x2] - 0x3b53a99b) << 0x17 | _0x465f5a >>> 0x9) + _0x1c9d0 << 0x0, _0x465f5a = ((_0x465f5a += ((_0x58f351 = ((_0x58f351 += (_0x465f5a ^ ((_0x300239 = ((_0x300239 += (_0x1c9d0 ^ (_0x465f5a | ~_0x58f351)) + _0x2e1661[0x0] - 0xbd6ddbc) << 0x6 | _0x300239 >>> 0x1a) + _0x465f5a << 0x0) | ~_0x1c9d0)) + _0x2e1661[0x7] + 0x432aff97) << 0xa | _0x58f351 >>> 0x16) + _0x300239 << 0x0) ^ ((_0x1c9d0 = ((_0x1c9d0 += (_0x300239 ^ (_0x58f351 | ~_0x465f5a)) + _0x2e1661[0xe] - 0x546bdc59) << 0xf | _0x1c9d0 >>> 0x11) + _0x58f351 << 0x0) | ~_0x300239)) + _0x2e1661[0x5] - 0x36c5fc7) << 0x15 | _0x465f5a >>> 0xb) + _0x1c9d0 << 0x0, _0x465f5a = ((_0x465f5a += ((_0x58f351 = ((_0x58f351 += (_0x465f5a ^ ((_0x300239 = ((_0x300239 += (_0x1c9d0 ^ (_0x465f5a | ~_0x58f351)) + _0x2e1661[0xc] + 0x655b59c3) << 0x6 | _0x300239 >>> 0x1a) + _0x465f5a << 0x0) | ~_0x1c9d0)) + _0x2e1661[0x3] - 0x70f3336e) << 0xa | _0x58f351 >>> 0x16) + _0x300239 << 0x0) ^ ((_0x1c9d0 = ((_0x1c9d0 += (_0x300239 ^ (_0x58f351 | ~_0x465f5a)) + _0x2e1661[0xa] - 0x100b83) << 0xf | _0x1c9d0 >>> 0x11) + _0x58f351 << 0x0) | ~_0x300239)) + _0x2e1661[0x1] - 0x7a7ba22f) << 0x15 | _0x465f5a >>> 0xb) + _0x1c9d0 << 0x0, _0x465f5a = ((_0x465f5a += ((_0x58f351 = ((_0x58f351 += (_0x465f5a ^ ((_0x300239 = ((_0x300239 += (_0x1c9d0 ^ (_0x465f5a | ~_0x58f351)) + _0x2e1661[0x8] + 0x6fa87e4f) << 0x6 | _0x300239 >>> 0x1a) + _0x465f5a << 0x0) | ~_0x1c9d0)) + _0x2e1661[0xf] - 0x1d31920) << 0xa | _0x58f351 >>> 0x16) + _0x300239 << 0x0) ^ ((_0x1c9d0 = ((_0x1c9d0 += (_0x300239 ^ (_0x58f351 | ~_0x465f5a)) + _0x2e1661[0x6] - 0x5cfebcec) << 0xf | _0x1c9d0 >>> 0x11) + _0x58f351 << 0x0) | ~_0x300239)) + _0x2e1661[0xd] + 0x4e0811a1) << 0x15 | _0x465f5a >>> 0xb) + _0x1c9d0 << 0x0, _0x465f5a = ((_0x465f5a += ((_0x58f351 = ((_0x58f351 += (_0x465f5a ^ ((_0x300239 = ((_0x300239 += (_0x1c9d0 ^ (_0x465f5a | ~_0x58f351)) + _0x2e1661[0x4] - 0x8ac817e) << 0x6 | _0x300239 >>> 0x1a) + _0x465f5a << 0x0) | ~_0x1c9d0)) + _0x2e1661[0xb] - 0x42c50dcb) << 0xa | _0x58f351 >>> 0x16) + _0x300239 << 0x0) ^ ((_0x1c9d0 = ((_0x1c9d0 += (_0x300239 ^ (_0x58f351 | ~_0x465f5a)) + _0x2e1661[0x2] + 0x2ad7d2bb) << 0xf | _0x1c9d0 >>> 0x11) + _0x58f351 << 0x0) | ~_0x300239)) + _0x2e1661[0x9] - 0x14792c6f) << 0x15 | _0x465f5a >>> 0xb) + _0x1c9d0 << 0x0, this.first ? (this.h0 = _0x300239 + 0x67452301 << 0x0, this.h1 = _0x465f5a - 0x10325477 << 0x0, this.h2 = _0x1c9d0 - 0x67452302 << 0x0, this.h3 = _0x58f351 + 0x10325476 << 0x0, this.first = !0x1) : (this.h0 = this.h0 + _0x300239 << 0x0, this.h1 = this.h1 + _0x465f5a << 0x0, this.h2 = this.h2 + _0x1c9d0 << 0x0, this.h3 = this.h3 + _0x58f351 << 0x0); - }, _0x52468b.prototype.hex = function() { - this.finalize(); - var _0x4dad8a = this.h0, - _0x2c4342 = this.h1, - _0xb03471 = this.h2, - _0x321760 = this.h3; - return _0x13a835[_0x4dad8a >> 0x4 & 0xf] + _0x13a835[0xf & _0x4dad8a] + _0x13a835[_0x4dad8a >> 0xc & 0xf] + _0x13a835[_0x4dad8a >> 0x8 & 0xf] + _0x13a835[_0x4dad8a >> 0x14 & 0xf] + _0x13a835[_0x4dad8a >> 0x10 & 0xf] + _0x13a835[_0x4dad8a >> 0x1c & 0xf] + _0x13a835[_0x4dad8a >> 0x18 & 0xf] + _0x13a835[_0x2c4342 >> 0x4 & 0xf] + _0x13a835[0xf & _0x2c4342] + _0x13a835[_0x2c4342 >> 0xc & 0xf] + _0x13a835[_0x2c4342 >> 0x8 & 0xf] + _0x13a835[_0x2c4342 >> 0x14 & 0xf] + _0x13a835[_0x2c4342 >> 0x10 & 0xf] + _0x13a835[_0x2c4342 >> 0x1c & 0xf] + _0x13a835[_0x2c4342 >> 0x18 & 0xf] + _0x13a835[_0xb03471 >> 0x4 & 0xf] + _0x13a835[0xf & _0xb03471] + _0x13a835[_0xb03471 >> 0xc & 0xf] + _0x13a835[_0xb03471 >> 0x8 & 0xf] + _0x13a835[_0xb03471 >> 0x14 & 0xf] + _0x13a835[_0xb03471 >> 0x10 & 0xf] + _0x13a835[_0xb03471 >> 0x1c & 0xf] + _0x13a835[_0xb03471 >> 0x18 & 0xf] + _0x13a835[_0x321760 >> 0x4 & 0xf] + _0x13a835[0xf & _0x321760] + _0x13a835[_0x321760 >> 0xc & 0xf] + _0x13a835[_0x321760 >> 0x8 & 0xf] + _0x13a835[_0x321760 >> 0x14 & 0xf] + _0x13a835[_0x321760 >> 0x10 & 0xf] + _0x13a835[_0x321760 >> 0x1c & 0xf] + _0x13a835[_0x321760 >> 0x18 & 0xf]; - }, _0x52468b.prototype.toString = _0x52468b.prototype.hex, _0x52468b.prototype.digest = function() { - this.finalize(); - var _0x499395 = this.h0, - _0x56399c = this.h1, - _0x742cc9 = this.h2, - _0x23afbe = this.h3; - return [0xff & _0x499395, _0x499395 >> 0x8 & 0xff, _0x499395 >> 0x10 & 0xff, _0x499395 >> 0x18 & 0xff, 0xff & _0x56399c, _0x56399c >> 0x8 & 0xff, _0x56399c >> 0x10 & 0xff, _0x56399c >> 0x18 & 0xff, 0xff & _0x742cc9, _0x742cc9 >> 0x8 & 0xff, _0x742cc9 >> 0x10 & 0xff, _0x742cc9 >> 0x18 & 0xff, 0xff & _0x23afbe, _0x23afbe >> 0x8 & 0xff, _0x23afbe >> 0x10 & 0xff, _0x23afbe >> 0x18 & 0xff]; - }, _0x52468b.prototype.array = _0x52468b.prototype.digest, _0x52468b.prototype.arrayBuffer = function() { - this.finalize(); - var _0x15f454 = new ArrayBuffer(0x10), - _0x15cf0e = new Uint32Array(_0x15f454); - return _0x15cf0e[0x0] = this.h0, _0x15cf0e[0x1] = this.h1, _0x15cf0e[0x2] = this.h2, _0x15cf0e[0x3] = this.h3, _0x15f454; - }, _0x52468b.prototype.buffer = _0x52468b.prototype.arrayBuffer, _0x52468b.prototype.base64 = function() { - for (var _0x205cc3, _0x5abd40, _0x213dac, _0x501a73 = '', _0x56610d = this.array(), _0x3a9ef2 = 0x0; _0x3a9ef2 < 0xf;) _0x205cc3 = _0x56610d[_0x3a9ef2++], _0x5abd40 = _0x56610d[_0x3a9ef2++], _0x213dac = _0x56610d[_0x3a9ef2++], _0x501a73 += _0x41cf2e[_0x205cc3 >>> 0x2] + _0x41cf2e[0x3f & (_0x205cc3 << 0x4 | _0x5abd40 >>> 0x4)] + _0x41cf2e[0x3f & (_0x5abd40 << 0x2 | _0x213dac >>> 0x6)] + _0x41cf2e[0x3f & _0x213dac]; - return _0x205cc3 = _0x56610d[_0x3a9ef2], _0x501a73 += _0x41cf2e[_0x205cc3 >>> 0x2] + _0x41cf2e[_0x205cc3 << 0x4 & 0x3f] + '=='; - }; - var _0x269d2d = _0x3a7f83(); - _0x178f75 ? _0x179a8a.exports = _0x269d2d : (_0x149fcb.md5 = _0x269d2d, _0x256e04 && (_0x1e876b = function() { - return _0x269d2d; - }.call(_0x269d2d, _0x36e800, _0x269d2d, _0x179a8a), void 0x0 === _0x1e876b || (_0x179a8a.exports = _0x1e876b))); - }(); - }.call(this, _0x36e800(0x31), _0x36e800(0x8f)(_0x58785f))); -}, window.EJS_main]).default; +}, null, window.EJS_main]).default; diff --git a/data/emulator.min.js b/data/emulator.min.js index f42ce34..5df84ce 100644 --- a/data/emulator.min.js +++ b/data/emulator.min.js @@ -1 +1 @@ -var EJS=function(a){window.EJS_MODULES=a;var n={},o=[];function i(e){if(n[e])return n[e].exports;o.push(e);var t=n[e]={i:e,l:!1,exports:{}};return a[e].call(t.exports,t,t.exports,i),t.l=!0,t.exports}return window.getUsedModules=function(){return o.sort(function(e,t){return t'+n.localization("CORS Error")+"":t.innerHTML=''+n.localization("Network Error")+""}},null,null,null,null,null,function(e){function t(){if(!(navigator.getGamepads||navigator.webkitGetGamepads))throw new Error("get gamepads not found!");if(this.rAF=window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.requestAnimationFrame,!this.rAF)throw new Error("request animation frame was not found!");this.loop()}t.prototype={gamepads:[],rAF:null,getGamepads:function(){return navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():[]},loop:async function(){this.updateGamepadState(),this.rAF.call(null,this.loop.bind(this))},updateGamepadState:function(){for(var n=this.getGamepads(),a=0;athis.options.threshold){var r={};for(l in this.direction)this.direction.hasOwnProperty(l)&&(r[l]=this.direction[l]);var l,c={};for(l in this.direction={x:n,y:a,angle:t},e.direction=this.direction,r)r[l]===this.direction[l]&&(c[l]=!0);if(c.x&&c.y&&c.angle)return e;c.x&&c.y||this.trigger("plain",e),c.x||this.trigger("plain:"+n,e),c.y||this.trigger("plain:"+a,e),c.angle||this.trigger("dir dir:"+t,e)}return e},a.prototype=new e,(a.constructor=a).id=0,a.prototype.prepareNipples=function(){var e=this,a=e.nipples;a.on=e.on.bind(e),a.off=e.off.bind(e),a.options=e.options,a.destroy=e.destroy.bind(e),a.ids=e.ids,a.id=e.id,a.processOnMove=e.processOnMove.bind(e),a.processOnEnd=e.processOnEnd.bind(e),a.get=function(e){if(void 0===e)return a[0];for(var t=0,n=a.length;t
    \n
    \n
    \n
    \n
    \n
    \n
    \n '+le("playNow",g.config)+"\n
    \n ",e=V("iframe",{src:g.adUrl,scrolling:"no",frameborder:"no",style:"width:300px !important;height:250px !important;display: block !important;"}),ee.loading.querySelector(".".concat(w.ad)).removeChild(ee.loading.querySelector(".".concat(w.ad," iframe"))),ee.loading.querySelector(".".concat(w.ad)).appendChild(e),W.webgl.DETECTED||(B(ee.loading.querySelector(".".concat(w["start-game"])),!0),ee.loading.querySelector(".".concat(w.p3)).innerHTML='Failed to initialize WebGL.'),ee.loading.querySelector(".".concat(w.ad," iframe")).style.setProperty("display","block","important"),ee.loading.querySelector(".".concat(w.ad," iframe")).style.setProperty("visibility","visible","important"),ee.loading.querySelector(".".concat(w.ad)).style.setProperty("display","block","important"),ee.loading.querySelector(".".concat(w.ad)).style.setProperty("visibility","visible","important")):(ee.loading.innerHTML='\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n ').concat(le("playNow",g.config),"\n
    \n
    "),W.webgl.DETECTED||(B(ee.loading.querySelector(".".concat(w["start-game"])),!0),ee.loading.querySelector(".".concat(w.p3)).innerHTML='Failed to initialize WebGL.')),window.URL||window.webkitURL),x=function(e){return 80===e[0]&&75===e[1]&&(3===e[2]&&4===e[3]||5===e[2]&&6===e[3]||7===e[2]&&8===e[3])?"zip":55===e[0]&&122===e[1]&&188===e[2]&&175===e[3]&&39===e[4]&&28===e[5]?"7z":82===e[0]&&97===e[1]&&114===e[2]&&33===e[3]&&26===e[4]&&7===e[5]&&(0===e[6]||1===e[6]&&0==e[7])?"rar":void 0},S=async function(e){e=await(await fetch(e)).text(),e=new Blob([e],{type:"application/javascript"}),e=window.URL.createObjectURL(e);return new Worker(e)},E=async function(e){var t=await(await fetch(e)).text(),e=new Blob(["\nvar dataToPass = [];\nModule = {\n monitorRunDependencies: function(left) {\n if (left == 0) {\n setTimeout(function() {\n unrar(dataToPass, null);\n }, 100);\n }\n },\n onRuntimeInitialized: function() {\n },\n locateFile: function(file) {\n return '"+e+".mem';\n }\n};\n"+t+'\nvar unrar = function(data, password) {\n var cb = function(fileName, fileSize, progress) {\n postMessage({"t":4,"current":progress,"total":fileSize, "name": fileName});\n };\n\n var rarContent = readRARContent(data.map(function(d) {\n return {\n name: d.name,\n content: new Uint8Array(d.content)\n }\n }), password, cb)\n var rec = function(entry) {\n if (entry.type === \'file\') {\n postMessage({"t":2,"file":entry.fullFileName,"size":entry.fileSize,"data":entry.fileContent});\n } else if (entry.type === \'dir\') {\n Object.keys(entry.ls).forEach(function(k) {\n rec(entry.ls[k]);\n })\n } else {\n throw "Unknown type";\n }\n }\n rec(rarContent);\n postMessage({"t":1});\n return rarContent;\n};\nonmessage = function(data) {\n dataToPass.push({name: \'test.rar\', content: data.data});\n};\n '],{type:"application/javascript"}),t=window.URL.createObjectURL(e);return new Worker(t)},M=null,C=null,l=null,d=null;try{M=new me({dbVersion:1,storePrefix:"ejs-",storeName:"system",keyPath:null,autoIncrement:!1,onStoreReady:function(){n=!0},onError:function(){n=!0}}),C=new me({dbVersion:1,storePrefix:"ejs-",storeName:"roms",keyPath:null,autoIncrement:!1,onStoreReady:function(){a=!0},onError:function(){a=!0}}),l=new me({dbVersion:1,storePrefix:"ejs-",storeName:"bios",keyPath:null,autoIncrement:!1,onStoreReady:function(){o=!0},onError:function(){o=!0}}),d=new me({dbVersion:1,storePrefix:"ejs-",storeName:"romsdata",keyPath:null,autoIncrement:!1,onStoreReady:function(){},onError:function(){}})}catch(e){o=a=n=!0,console.log(e)}G.call(g,g.elements.container,"start-game",function(e){g.started=!0,g.playing=!0,B(ee.loading.querySelector(".".concat(w["loading-info"])),!0),!te||"undefined"!=te.virtualGamepadContainer&&null!==te.virtualGamepadContainer||Q.toggleControls.call(g,!0);var t,n,a,o,i,s,r,l,c=X({"ejs__tooltip--visible":!0}),d=g.elements.buttons.gamepad.querySelector(".".concat(X({ejs__tooltip:!0}))),u=(H(d,c,!0),setTimeout(function(){H(d,c,!1)},5e3),"string"==typeof g.adUrl&&(B(ee.loading.querySelector(".".concat(w["close-ad"])),!1),!0!==g.config.noAutoAdClose&&setTimeout(function(){g.started&&ee.loading.querySelector(".".concat(w.ad))&&ee.loading.querySelector(".".concat(w.ad)).parentNode.removeChild(ee.loading.querySelector(".".concat(w.ad)))},1e4)),B(ee.loading.querySelector(".".concat(w["start-game"])),!0),K(ae.defaultCoreOptionsValues.call(p),ae.storage.get("core-options")||{})),f=("n64"===g.system&&u&&Object.keys(u).forEach(function(e){"glupen64-aspect"===e&&"16:9"===u[e]&&(T.height=T.width/16*9,ee.aspectRatio=16/9)}),"arcade"!==p.system&&"fba0.2.97.29"!==p.system||u&&Object.keys(u).forEach(function(e){"fba-aspect"===e&&"PAR"===u[e]&&(T.height=T.width/16*9,ee.aspectRatio=16/9)}),"gba"===g.system&&(T.height=T.width/1.5,ee.aspectRatio=1.5),window.setTimeout(function(){},150),f=p,"undefined"!=typeof RI?(document.removeEventListener("mousemove",RI.eventHandler,!1),T.removeEventListener("mousedown",RI.canvasEventHandler,!1),T.removeEventListener("mouseup",RI.canvasEventHandler,!1),f.elements.container.addEventListener("mousemove",function(e){var t=0,n=0,a=e.offsetX-ee.Module.canvas.offsetLeft,o=e.offsetY-ee.Module.canvas.offsetTop;if("mousemove"===e.type){t=a<0?(a=0,-ee.Module.canvas.offsetWidth):a>ee.Module.canvas.offsetWidth?(a=ee.Module.canvas.offsetWidth,ee.Module.canvas.offsetWidth):a-RI.currentX,n=o<0?(o=0,-ee.Module.canvas.offsetHeight):o>ee.Module.canvas.offsetHeight?(o=ee.Module.canvas.offsetHeight,ee.Module.canvas.offsetHeight):o-RI.currentY,RI.currentX=a,RI.currentY=o;for(var i=0;i>2]=t,HEAP32[RI.contexts[i].state+36>>2]=n}},!1),f.elements.container.addEventListener("mousedown",RI.canvasEventHandler,!1),f.elements.container.addEventListener("mouseup",RI.canvasEventHandler,!1),f.elements.container.addEventListener("touchstart",t=function(e){if(e.targetTouches[0]){var t,n=0,a=0,o=e.target.getBoundingClientRect(),i=e.targetTouches[0].clientX-o.left,o=e.targetTouches[0].clientY-o.top,n=i<0?(i=0,-ee.Module.canvas.offsetWidth):i>ee.Module.canvas.offsetWidth?(i=ee.Module.canvas.offsetWidth,ee.Module.canvas.offsetWidth):i-RI.currentX,a=o<0?(o=0,-ee.Module.canvas.offsetHeight):o>ee.Module.canvas.offsetHeight?(o=ee.Module.canvas.offsetHeight,ee.Module.canvas.offsetHeight):o-RI.currentY;RI.currentX=i,RI.currentY=o;for(var s=0;s>2]=n,HEAP32[RI.contexts[s].state+36>>2]=a;switch(e.type){case"touchend":case"touchstart":if(0===e.button)t=40;else{if(2!==e.button)break;t=41}for(var r="touchend"===e.type?0:1,l=0;l>0]=r}}},!1),f.elements.container.addEventListener("touchend",t,!1)):(f=function(e){e=new MouseEvent(e.type,e);ee.Module.canvas.dispatchEvent(e)},q.call(p,".".concat(X({ejs__dialogs:!0}))).addEventListener("mousemove",f,!1),q.call(p,".".concat(X({ejs__dialogs:!0}))).addEventListener("mousedown",f,!1),q.call(p,".".concat(X({ejs__dialogs:!0}))).addEventListener("mouseup",f,!1)),"msx"===g.system&&"undefined"!=typeof RI&&(document.removeEventListener("keydown",RI.eventHandler,!1),document.removeEventListener("keyup",RI.eventHandler,!1),t=function(e){var t=e.keyCode,n=t>>3,a=1<<(7&t);switch(e.type){case"keyup":case"keydown":if(32<=n)throw"key code error! bad code: "+t;for(var o=0;o>0];"keyup"===e.type?i&=~a:i|=a,HEAP8[RI.contexts[o].state+n>>0]=i}}},document.addEventListener("keydown",t,!1),document.addEventListener("keyup",t,!1)),setTimeout(function(){var o=Y.info();null===te.setVolume&&"undefined"!=typeof RA?(RA.queueAudio=function(){var e=g.volume,t=RA.bufIndex,n=RA.bufIndex?RA.buffers[RA.bufIndex-1].endTime:RA.context.currentTime,a=(RA.buffers[t].endTime=n+RA.buffers[t].duration,RA.context.createBufferSource());a.buffer=RA.buffers[t],1===(e=g.muted?0:e)?a.connect(RA.context.destination):(t=RA.context.createGain(),a.connect(t),t.connect(RA.context.destination),Y.isEdge||"chrome"===o.name&&parseInt(o.version,10)<=60||"firefox"===o.name&&parseInt(o.version,10)<=56||"opera"===o.name&&parseInt(o.version,10)<=44?t.gain.value=e:"firefox"===o.name?t.gain.setValueAtTime(e,RA.context.currentTime):t.gain.setValueAtTime(e,RA.context.currentTime,0)),a.start(n),RA.bufIndex+=1,RA.bufOffset=0},Y.isIos&&window.addEventListener("touchstart",function(){var e;RA.context&&(RA.context.resume(),(e=RA.context.createBufferSource()).connect(RA.context.destination),e.start())},!1)):te.setVolume()},500),setTimeout(function(){g.elements.container.focus()},30),void 0===window.addRunDependency&&(window.Module=void 0),ee.FS.readFile(g.startName));f.length<=33554432&&".cue"!=g.startName.substr(-4)&&(a="snes"===g.system||["snes2002","snes2005","snes2010"].includes(g.system)?(n=f.length%1024,new Z(n?f.slice?f.slice(n):f.subarray(n):f)):new Z(f),o=Re.a.create(),i=new FileReader,s=0,r=a._u8array.length,l=function(){var e;sDoesn\'t look like your browser is supported'}else l.innerHTML='Invalid Rom'}function n(e){if(e.data){if(1===e.data.t&&(!r.startName&&u&&(r.startName=u),e.target.terminate(),s(r.startName)),2===e.data.t){var t=e.data.file.split("/"),n=(a=t.pop()).split(".").pop(),a=a.replace(/\#/g,"");ee.FS.createPath("/",t.join("/"),!0,!0);for(var o=h[c].length-1;0<=o;--o)h[c][o]===n.toLowerCase()&&d");r=r.split("|");ee.coreFileName="".concat(z.system,"-").concat(r[0]),a="1"===r[1],F.element(z.elements.buttons.saveState)&&B(z.elements.buttons.saveState,!a),F.element(z.elements.buttons.loadState)&&B(z.elements.buttons.loadState,!a),B(ae.contextMenu.querySelectorAll("ul li").item(2),!a),B(ae.contextMenu.querySelectorAll("ul li").item(3),!a),c=2===z.coreVer?"":z.system.concat("-old-").concat(r[0],"-wasm.data"),r[0]?(W.wasm&&i?u=!0:(s.innerHTML=''+z.localization("Webassembly support is not detected in this browser")+"",c=""),c&&(M.db?M.get(c,function(e){e&&e.version===n?2===g.coreVer?k(e.data):((e=e.data.slice?e.data.slice(12):e.data.subarray(12)).set([55,122,188,175,39,28,0,3],0),k(e)):d(c,n)}):d(c,n))):s.innerHTML=''+z.localization("Unsupported Game")+""}else{var l,c=!1;if(W.wasm&&i?(l="wasm",c=!0,"n64"!==z.system||e||2===z.coreVer||(l="legacy-wasm"),u=!0):o&&(c=!0,l="asmjs","n64"!==z.system||e||2===z.coreVer||(l="legacy-asmjs")),!0!==(c="undefined"!=typeof EJS_CUSTOM_COREFILE?EJS_CUSTOM_COREFILE:c))return void(s.innerHTML=''+z.localization("Please upgrade your browser to the latest version")+"");c=2===z.coreVer?t+"-"+l+".data":t+"-old-"+l+".data","undefined"!=typeof EJS_CUSTOM_COREFILE&&(c=EJS_CUSTOM_COREFILE),M.db?M.get(c,function(e){!e||e.version!==n||"undefined"!=typeof EJS_DEBUG_XX&&!0===EJS_DEBUG_XX?d(c,n):2===g.coreVer?k(e.data):((e=e.data.slice?e.data.slice(12):e.data.subarray(12)).set([55,122,188,175,39,28,0,3],0),k(e))}):d(c,n)}F.element(z.elements.buttons.saveState)&&B(z.elements.buttons.saveState,!a),F.element(z.elements.buttons.loadState)&&B(z.elements.buttons.loadState,!a),B(ae.contextMenu.querySelectorAll("ul li").item(2),!a),B(ae.contextMenu.querySelectorAll("ul li").item(3),!a),g.setStatesSupported(a),z.config.buttons&&(!1===z.config.buttons.playPause&&F.element(z.elements.buttons.play[0])&&B(z.elements.buttons.play[0],!0),!1===z.config.buttons.restart&&F.element(z.elements.buttons.restart)&&B(z.elements.buttons.restart,!0),!1===z.config.buttons.mute&&F.element(z.elements.buttons.mute)&&B(z.elements.buttons.mute,!0),!1===z.config.buttons.settings&&F.element(z.elements.buttons.settings)&&B(z.elements.buttons.settings,!0),!1===z.config.buttons.fullscreen&&F.element(z.elements.buttons.fullscreen)&&B(z.elements.buttons.fullscreen,!0),!1===z.config.buttons.saveState&&F.element(z.elements.buttons.saveState)&&B(z.elements.buttons.saveState,!0),!1===z.config.buttons.loadState&&F.element(z.elements.buttons.loadState)&&B(z.elements.buttons.loadState,!0),!1===z.config.buttons.screenRecord&&F.element(z.elements.buttons.screenRecord)&&B(z.elements.buttons.screenRecord,!0),!1===z.config.buttons.gamepad&&F.element(z.elements.buttons.gamepad)&&B(z.elements.buttons.gamepad,!0),!1===z.config.buttons.cheat&&F.element(z.elements.buttons.cheat)&&B(z.elements.buttons.cheat,!0),!1===z.config.buttons.volume&&F.element(z.elements.inputs.volume)&&B(z.elements.inputs.volume,!0),!1===z.config.buttons.screenshot&&B(ae.contextMenu.querySelectorAll("ul li").item(0),!0),!0===z.config.buttons.cacheManage&&B(ae.contextMenu.querySelectorAll("ul li").item(1),!1),!1===z.config.buttons.quickSave&&B(ae.contextMenu.querySelectorAll("ul li").item(2),!0),!1===z.config.buttons.quickLoad&&B(ae.contextMenu.querySelectorAll("ul li").item(3),!0))}else s.innerHTML=''+z.localization("Invalid System")+""}).catch(function(e){D(e,t,g)}),ee.romdb=C,!1;setTimeout(L,50)}};oe(ee.loading.querySelector(".".concat(w["start-game"])),"click touchstart",L),!0===g.startOnLoad&&ee.loading.querySelector(".".concat(w["start-game"])).click()}},p=ee;function Ne(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t')),!t)return!0;for(var n in t)De(n);return!0}),playerName:"",players:[],waitingList:{},roomMaster:null,inputsData:{},coreOptionData:{},currentFrame:0,wait:!(De=function(e){if(!document.getElementById(e))return!1}),progressHelper:{},icons:{lock:''},disableInput:!1,disableControl:function(e){if(e){for(var t=0;t<24;t+=1)m.simulateInputFn(0,t,0),m.simulateInputFn(1,t,0),m.simulateInputFn(2,t,0),m.simulateInputFn(3,t,0);m.disableInput=!0}else m.disableInput=!1},isPaused:null,setVolume:null,setVariable:null,simulateInput:null,simulateInputFn:null,toggleShader:null,saveState:null,screenRecord:null,loadState:null,quickSaveState:null,quickLoadState:null,changeStateSlot:null,getScreenData:null,getStateInfo:null,setCheat:null,resetCheat:null,getGameCoreOptions:null,classNames:{"dialog-container":X({"dialog-container":!0}),tabs:X({tabs:!0}),"dialog-title":X({"dialog-title":!0}),"dialog-content":X({"dialog-content":!0}),"dialog-buttons":X({"dialog-buttons":!0}),overlay:X({overlay:!0}),"key-setting-popup":X({"key-setting-popup":!0}),"tabs-panel":X({"tabs-panel":!0}),"tabs-content":X({"tabs-content":!0}),"button-container":X({"button-container":!0}),set:X({set:!0}),active:X({active:!0}),"btn-cancel":X({"btn-cancel":!0}),"btn-reset":X({"btn-reset":!0}),"btn-clear":X({"btn-clear":!0}),"btn-create":X({"btn-create":!0}),"btn-submit":X({"btn-submit":!0}),"btn-join-room":X({"btn-join-room":!0}),"btn-quit":X({"btn-quit":!0}),"btn-create-room":X({"btn-create-room":!0}),modal:X({modal:!0}),modal__overlay:X({modal__overlay:!0}),modal__container:X({modal__container:!0}),modal__header:X({modal__header:!0}),modal__title:X({modal__title:!0}),modal__close:X({modal__close:!0}),modal__content:X({modal__content:!0}),modal__btn:X({modal__btn:!0}),"modal__btn-primary":X({"modal__btn-primary":!0}),"micromodal-slide":X({"micromodal-slide":!0}),modal__errmsg:X({modal__errmsg:!0}),modal__footer:X({modal__footer:!0}),"cheats-add":X({"cheats-add":!0}),"cheats-list":X({"cheats-list":!0}),"cheat-code-input":X({"cheat-code-input":!0}),"cheat-name-input":X({"cheat-name-input":!0}),"ejs-switch":X({"ejs-switch":!0}),"ejs-delete-cheat":X({"ejs-delete-cheat":!0})},initShaders:function(){for(var e,t=he,n=Object.keys(t),a=0;a\n
    \n

    '+r.localization("Control Settings")+'

    \n
    \n \n \n
    \n
    \n \n
    \n
    \n \n \n \n ",'\n ')),n='\n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    ');"nes"===r.system?i={0:"B",2:"SELECT",3:"START",4:"UP",5:"DOWN",6:"LEFT",7:"RIGHT",8:"A",24:r.localization("QUICK SAVE STATE"),25:r.localization("QUICK LOAD STATE"),26:r.localization("CHANGE STATE SLOT")}:"snes"===r.system?i={0:"B",1:"Y",2:"SELECT",3:"START",4:"UP",5:"DOWN",6:"LEFT",7:"RIGHT",8:"A",9:"X",10:"L",11:"R",24:r.localization("QUICK SAVE STATE"),25:r.localization("QUICK LOAD STATE"),26:r.localization("CHANGE STATE SLOT")}:"n64"===r.system?(i={0:"B",3:"START",4:"UP",5:"DOWN",6:"LEFT",7:"RIGHT",8:"A",10:"L",11:"R",12:"Z",19:"L STICK UP",18:"L STICK DOWN",17:"L STICK LEFT",16:"L STICK RIGHT",23:"R STICK UP",22:"R STICK DOWN",21:"R STICK LEFT",20:"R STICK RIGHT",24:r.localization("QUICK SAVE STATE"),25:r.localization("QUICK LOAD STATE"),26:r.localization("CHANGE STATE SLOT")},2===r.coreVer&&(i[0]="A",i[1]="B",delete i[8])):i="nds"===r.system?{0:"B",1:"Y",2:"SELECT",3:"START",4:"UP",5:"DOWN",6:"LEFT",7:"RIGHT",8:"A",9:"X",10:"L",11:"R",14:"Microphone",24:r.localization("QUICK SAVE STATE"),25:r.localization("QUICK LOAD STATE"),26:r.localization("CHANGE STATE SLOT")}:{0:"B",1:"Y",2:"SELECT",3:"START",4:"UP",5:"DOWN",6:"LEFT",7:"RIGHT",8:"A",9:"X",10:"L",11:"R",12:"L2",13:"R2",14:"L3",15:"R3",19:"L STICK UP",18:"L STICK DOWN",17:"L STICK LEFT",16:"L STICK RIGHT",23:"R STICK UP",22:"R STICK DOWN",21:"R STICK LEFT",20:"R STICK RIGHT",24:r.localization("QUICK SAVE STATE"),25:r.localization("QUICK LOAD STATE"),26:r.localization("CHANGE STATE SLOT")},["arcade","mame"].includes(r.system)&&(i[2]=r.localization("INSERT COIN")),!1===r.statesSupported&&(delete i[24],delete i[25],delete i[26]);for(var a=[2,3,4,5,6,7,8,0,9,1,10,11,12,13,14,15,19,18,17,16,23,22,21,20,24,25,26],t=0;t<=3;t+=1)!function(t){r.elements.dialogs.gamepad.querySelector(".".concat(m.classNames["tabs-content"])).innerHTML+=e.replace(/{index}/g,t),a.forEach(function(e){i[e]&&(r.elements.dialogs.gamepad.querySelector("#controls-".concat(t)).innerHTML+=n.replace(/{index}/g,t).replace(/{id}/g,e).replace(/{label}/g,i[e]))}),r.elements.dialogs.gamepad.querySelector('[data-id="16"][data-index="'.concat(t,'"][data-type="2"]'))&&(r.elements.dialogs.gamepad.querySelector('[data-id="16"][data-index="'.concat(t,'"][data-type="2"]')).style.backgroundColor="#ccc"),r.elements.dialogs.gamepad.querySelector('[data-id="17"][data-index="'.concat(t,'"][data-type="2"]'))&&(r.elements.dialogs.gamepad.querySelector('[data-id="17"][data-index="'.concat(t,'"][data-type="2"]')).style.backgroundColor="#ccc"),r.elements.dialogs.gamepad.querySelector('[data-id="18"][data-index="'.concat(t,'"][data-type="2"]'))&&(r.elements.dialogs.gamepad.querySelector('[data-id="18"][data-index="'.concat(t,'"][data-type="2"]')).style.backgroundColor="#ccc"),r.elements.dialogs.gamepad.querySelector('[data-id="19"][data-index="'.concat(t,'"][data-type="2"]'))&&(r.elements.dialogs.gamepad.querySelector('[data-id="19"][data-index="'.concat(t,'"][data-type="2"]')).style.backgroundColor="#ccc"),r.elements.dialogs.gamepad.querySelector('[data-id="20"][data-index="'.concat(t,'"][data-type="2"]'))&&(r.elements.dialogs.gamepad.querySelector('[data-id="20"][data-index="'.concat(t,'"][data-type="2"]')).style.backgroundColor="#ccc"),r.elements.dialogs.gamepad.querySelector('[data-id="21"][data-index="'.concat(t,'"][data-type="2"]'))&&(r.elements.dialogs.gamepad.querySelector('[data-id="21"][data-index="'.concat(t,'"][data-type="2"]')).style.backgroundColor="#ccc"),r.elements.dialogs.gamepad.querySelector('[data-id="22"][data-index="'.concat(t,'"][data-type="2"]'))&&(r.elements.dialogs.gamepad.querySelector('[data-id="22"][data-index="'.concat(t,'"][data-type="2"]')).style.backgroundColor="#ccc"),r.elements.dialogs.gamepad.querySelector('[data-id="23"][data-index="'.concat(t,'"][data-type="2"]'))&&(r.elements.dialogs.gamepad.querySelector('[data-id="23"][data-index="'.concat(t,'"][data-type="2"]')).style.backgroundColor="#ccc")}(t);Object.keys(m.controllers).forEach(function(a){m.controllers[a]&&Object.keys(m.controllers[a]).forEach(function(e){var t=r.elements.dialogs.gamepad.querySelector('[data-id="'.concat(e,'"][data-index="').concat(a,'"][data-type="1"]')),n=r.elements.dialogs.gamepad.querySelector('[data-id="'.concat(e,'"][data-index="').concat(a,'"][data-type="2"]'));if(!t||!n)return!1;e=m.controllers[a][e];e&&(e.type&&1!==parseInt(e.type,10)?n.value="":e.value&&(t.value=m.keyMap[e.value]||"",t.setAttribute("data-value",e.value)),e.value2&&(n.value=isNaN(e.value2)?e.value2:"button ".concat(parseInt(e.value2,10)+1),n.setAttribute("data-value",e.value2)))})}),G.call(this,r.elements.dialogs.gamepad.querySelector(".".concat(m.classNames["btn-submit"])),"click",function(e){var t=r.elements.dialogs.gamepad.querySelectorAll("input"),o={};return Array.from(t).forEach(function(e){var t,n=e.getAttribute("data-index"),a=e.getAttribute("data-value"),e=(2===parseInt(e.getAttribute("data-type"),10)&&(t=e.getAttribute("data-value")),e.getAttribute("data-id"));o[n]||(o[n]={}),o[n][e]||(o[n][e]={}),a&&(o[n][e].value=a),t&&(o[n][e].value2=t)}),ae.storage.set({controllers:o}),m.controllers=o,B(r.elements.dialogs.gamepad,!0),r.elements.container.focus(),e.stopPropagation(),!1}),G.call(this,r.elements.dialogs.gamepad.querySelector(".".concat(m.classNames["btn-reset"])),"click",function(e){m.controllers=JSON.parse(JSON.stringify(m.defaultControllers)),localStorage.removeItem(ae.storage.key);for(var t=r.elements.dialogs.gamepad.querySelectorAll("input"),n=0;n
    "+r.localization("Press keyboard or gamepad")+"
    "+r.localization("Press escape (esc) to clear")):t+="
    Press keyboard
    "+r.localization("Press escape (esc) to clear"),s.querySelector(".".concat(m.classNames["key-setting-popup"])).innerHTML=t,e.stopPropagation()})})},setCacheDialog:function(){var t=this;t.elements.dialogs.cache.innerHTML='\n
    \n
    \n

    '+t.localization("Cache Manager")+'

    \n
    \n
    \n\n
    \n \n
    \n "),G.call(this,t.elements.dialogs.cache.querySelector(".".concat(m.classNames["btn-cancel"])),"click",function(e){return B(t.elements.dialogs.cache,!0),t.elements.container.focus(),e.stopPropagation(),!1}),G.call(this,t.elements.dialogs.cache.querySelector(".".concat(m.classNames["dialog-title"]," a")),"click",function(e){return p.romdb&&(p.romdb.clear(),t.elements.dialogs.cache.querySelector(".".concat(m.classNames["dialog-content"])).innerHTML='
    '+t.localization("Empty")+"
    "),e.stopPropagation(),!1})},showLoading:function(e){Ge.show("modal-6ed698f3d04061f5",{closeByEsckey:!1}),e&&console.log(""),B(this.elements.dialogs.loading,!1)},hideLoading:function(){Ge.close(),B(this.elements.dialogs.loading,!0)},setLoadingDialog:function(){this.elements.dialogs.loading&&(this.elements.dialogs.loading.innerHTML='\n "))},setCheatDialog:function(){var i,s,a,r=this;r.elements.dialogs.cheat&&(r.elements.dialogs.cheat.innerHTML='\n
    \n
    \n

    Cheats

    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n\n \n\n \n "),i=r.elements.dialogs.cheat.querySelector("#modal-85cd7a1c543a484b"),G.call(this,r.elements.dialogs.cheat.querySelector(".".concat(m.classNames["cheats-add"])),"click",function(e){return Ge.show("modal-85cd7a1c543a484b",{closeTrigger:"data-modal-close"}),!1}),s=r.elements.dialogs.cheat.querySelector(".".concat(m.classNames["cheats-list"])),G.call(this,i.querySelector(".".concat(m.classNames["modal__btn-primary"])),"click",function(e){var t,n,a=i.querySelector(".".concat(m.classNames["cheat-name-input"])).value,o=i.querySelector(".".concat(m.classNames["cheat-code-input"])).value;return a&&o&&(t=s.querySelectorAll("input:checked"),i.querySelector(".".concat(m.classNames["cheat-name-input"])).value="",i.querySelector(".".concat(m.classNames["cheat-code-input"])).value="",Ge.close(),n=r.cheats.length,r.cheats.push([a,o]),s.innerHTML+='
    \n \n \n ×\n
    '),t.forEach(function(e,t){s.querySelector("#ejs-cheat-switch-".concat(t)).setAttribute("checked","checked")})),"localStorage"in window&&localStorage.setItem("".concat(r.system,"-").concat(r.startName,"-cheats"),JSON.stringify(r.cheats)),e.stopPropagation(),!1}),a=function(){if("localStorage"in window){var e=localStorage.getItem("".concat(r.system,"-").concat(r.startName,"-cheats"));try{e=JSON.parse(e)}catch(e){}e&&(r.cheats=e)}s.innerHTML="",r.cheats&&Array.isArray(r.cheats)&&r.cheats.forEach(function(e,t){var n=e[0];e[1],s.innerHTML+='
    \n \n \n ×\n
    ')})},G.call(r,s,"click",function(e){var t,n;return e.target&&e.target.classList.contains(m.classNames["ejs-delete-cheat"])&&e.target.getAttribute("data-idx")&&(t=e.target.getAttribute("data-idx"),r.cheats.splice(t,1),"localStorage"in window&&localStorage.setItem("".concat(r.system,"-").concat(r.startName,"-cheats"),JSON.stringify(r.cheats)),n=[],s.querySelectorAll("input").forEach(function(e,t){n[t]=!!s.querySelector("#ejs-cheat-switch-".concat(t,":checked"))}),n.splice(t,1),a(),n.forEach(function(e,t){e&&s.querySelector("#ejs-cheat-switch-".concat(t)).setAttribute("checked","checked")})),e.stopPropagation(),!1}),G.call(r,r.elements.container,"start-game",function(e){a()}),G.call(this,r.elements.dialogs.cheat.querySelector(".".concat(m.classNames["btn-cancel"])),"click",function(e){return B(r.elements.dialogs.cheat,!0),e.stopPropagation(),r.elements.container.focus(),!1}),G.call(this,r.elements.dialogs.cheat.querySelector(".".concat(m.classNames["btn-submit"])),"click",function(e){return m.resetCheat(),s.querySelectorAll("input:checked").forEach(function(e,t){e=r.cheats[e.value];e&&m.setCheat(t,1,e[1])}),B(r.elements.dialogs.cheat,!0),r.elements.container.focus(),!1}),"arcade"!==r.system&&"mame"!==r.system&&"mame2003"!==r.system&&"mame2010"!==r.system||(F.element(r.elements.buttons.cheat)&&B(r.elements.buttons.cheat,!0),m.allowCheat=!1),m.setCheat||(B(r.elements.buttons.cheat,!0),m.allowCheat=!1))},initKeyboard:function(){var i=this,s=this,r=this.elements.dialogs.gamepad.querySelector(".".concat(m.classNames.overlay));G.call(this,document.body,"keydown keyup",function(n){if(!(112<=n.which&&n.which<=123)){var e=!i.elements.dialogs.gamepad.hidden&&!r.hidden,a="keydown"===n.type;if(a&&e){var e=r.getAttribute("data-index"),t=r.getAttribute("data-id"),o=null;if(n.key&&"escape"===m.keyMap[n.keyCode])return(o=s.elements.dialogs.gamepad.querySelector('[data-id="'.concat(t,'"][data-index="').concat(e,'"][data-type="1"]'))).setAttribute("data-value",""),o.value=""(o=s.elements.dialogs.gamepad.querySelector('[data-id="'.concat(t,'"][data-index="').concat(e,'"][data-type="2"]'))).setAttribute("data-value",""),o.value="",void B(r,!0);e=r.getAttribute("data-index"),t=r.getAttribute("data-id"),o=null;n.key&&((o=s.elements.dialogs.gamepad.querySelector('[data-id="'.concat(t,'"][data-index="').concat(e,'"][data-type="1"]'))).setAttribute("data-value",n.keyCode),o.value=m.keyMap[n.keyCode]),B(r,!0)}else Object.keys(m.controllers).forEach(function(t){Object.keys(m.controllers[t]).forEach(function(e){parseInt(m.controllers[t][e].value,10)===n.keyCode&&["24","25","26"].includes(e)&&"keydown"==n.type&&!n.repeat&&("24"==e?m.quickSaveState():"25"==e?m.quickLoadState():"26"==e&&m.changeStateSlot()),parseInt(m.controllers[t][e].value,10)===n.keyCode&&(a?16<=e&&e<=23?m.simulateInput(t,e,32767):m.simulateInput(t,e,1):m.simulateInput(t,e,0))})})}}),document.body.addEventListener("keydown",function(e){var t=e.keyCode||e.which;[32,37,38,39,40,112,113,114,115,116,117,118,119,120,121,122,123].includes(t)&&e.srcElement===s.elements.container&&e.preventDefault(),e.srcElement.className.split(/ +/).includes(m.classNames.set)&&e.preventDefault()})},initGamepad:function(){var n,l=this,o=this,c=this.elements.dialogs.gamepad.querySelector(".".concat(m.classNames.overlay));try{n=new fe}catch(e){return void console.warn("gamepad not supported")}(m.gamepad=n).on("buttondown",function(n){var e,t,a;l.elements.dialogs.gamepad.hidden||c.hidden?Object.keys(m.controllers[n.gamepadIndex.toString()]).forEach(function(e){var t=n.gamepadIndex.toString();parseInt(m.controllers[t][e].value2,10)===parseInt(n.index,10)&&["24","25","26"].includes(e)&&("24"==e?m.quickSaveState():"25"==e?m.quickLoadState():"26"==e&&m.changeStateSlot()),parseInt(m.controllers[t][e].value2,10)===parseInt(n.index,10)&&parseInt(t,10)===parseInt(n.gamepadIndex,10)&&m.simulateInput(t,e,1)}):(e=parseInt(c.getAttribute("data-index"),10),t=c.getAttribute("data-id"),n.gamepadIndex===parseInt(e,10)&&(a=null,(a=o.elements.dialogs.gamepad.querySelector('[data-id="'.concat(t,'"][data-index="').concat(e,'"][data-type="2"]'))).setAttribute("data-value",n.index),a.value="button ".concat(n.index+1),B(c,!0)))}),n.on("buttonup",function(n){Object.keys(m.controllers).forEach(function(t){Object.keys(m.controllers[t]).forEach(function(e){parseInt(m.controllers[t][e].value2,10)===parseInt(n.index,10)&&parseInt(t,10)===parseInt(n.gamepadIndex,10)&&m.simulateInput(t,e,0)})})}),n.on("axischanged",function(e){var t,n=.5<(t=e.value)||t<-.5?0')+('
    '),i=0;i'+t[i].text+"
    ");o=(o+="")+('
    ');for(i=0;i'+t[i].text+"
    ");o=(o+="")+('
    ');for(i=0;i'+t[i].text+"
    ");o=(o+="")+('
    ');for(var s,i=0;i'+t[i].text+"
    ");m.virtualGamepadContainer.innerHTML=o+="",B(m.virtualGamepadContainer,!e);var r,l=X({"virtual-gamepad":!0}),c=X({touch:!0});Y.isIos||G.call(this,q.call(this,".".concat(l)),"touchmove",function(e){e.stopPropagation()});for(i=0;i{var e=q.call(n,".".concat(l," .").concat(X(t.id)));e&&G.call(n,e,"touchstart touchend",function(e){"touchend"===e.type?(H(e.target,c,!1),window.setTimeout(function(){m.syncInput(0,t.number,0)},30)):(H(e.target,c,!0),m.syncInput(0,t.number,1)),e.stopPropagation()})});var p,e=V("div",{class:X({ejs__widget:!0,ejs__widget_controls_toggle:!0})},"");e.innerHTML='',q.call(this,".".concat(X({ejs__widgets:!0}))).appendChild(e),G.call(this,e,"mousedown touchstart",function(e){H(e.target,c,!0),clearTimeout(p),Q.toggleControls.call(n,!0),p=setTimeout(function(){Q.toggleControls.call(n,!1)},5e3)})}function h(){var e;return"n64"!==n.system||"d-pad"===(e=ae&&"function"==typeof ae.getCoreOptionsValues?ae.getCoreOptionsValues()["joystick-input"]:e)?{downVal:1,4:4,5:5,6:6,7:7}:{downVal:32767,4:19,5:18,6:17,7:16}}},setup:function(){var e,t,n,a=this;this.game?(m.playerName=a.config.playerName,H(this.elements.container,this.config.classNames.type,!0),this.elements.container.setAttribute("tabindex","0"),this.color&&(e=function(e){var t=e.toLowerCase();if(t&&/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(t)){if(4===t.length){for(var n="#",a=1;a<4;a+=1)n+=t.slice(a,a+1).concat(t.slice(a,a+1));t=n}for(var o=[],i=1;i<7;i+=2)o.push(parseInt("0x".concat(t.slice(i,i+2)),16));return o}return null}(this.color))&&this.elements.container.setAttribute("style","--ejs-primary-color: ".concat(e[0],", ").concat(e[1],", ").concat(e[2])),this.elements.wrapper=V("div",{class:this.config.classNames.video}),O(this.game,this.elements.wrapper),"video"!==a.game.tagName.toLocaleLowerCase()&&(t=this.config.volume,Object.defineProperty(a.game,"volume",{get:function(){return t},set:function(e){t=e,U.call(a,a.game,"volumechange")}}),n=a.storage.get("muted"),Object.defineProperty(a.game,"muted",{get:function(){return n},set:function(e){e=!!F.boolean(e)&&e;n=e,U.call(a,a.game,"volumechange")}})),window.addEventListener("beforeunload",function(e){a.started&&(p.FS.syncfs(function(){}),m.saveSavFiles(),p.FS.syncfs(function(){}))},!0),setInterval(function(){a.started&&(console.log("saving save files"),m.saveSavFiles(),p.FS.syncfs(!1,function(){}))},3e5)):console.warn("No game element found!")},listeners:function(){var s=this;s.elements.buttons.restart&&G.call(s,s.elements.buttons.restart,"click",function(e){m.restartGame(),m.inputsData={}}),s.elements.buttons.screenRecord&&G.call(s,s.elements.buttons.screenRecord,"click",function(e){var a,o,i;s.recordData||(s.recordData={started:!1,data:[],stopped:!1}),s.recordData.started?s.recordData.started&&(s.recordData.recorder.stop(),s.recordData.stopped=!0):(a=MediaRecorder.isTypeSupported("video/webm; codecs=h264")?{mimeType:"video/webm; codecs=h264"}:MediaRecorder.isTypeSupported("video/webm; codecs=H264")?{mimeType:"video/webm; codecs=H264"}:MediaRecorder.isTypeSupported("video/webm; codecs=vp9")?{mimeType:"video/webm; codecs=vp9"}:MediaRecorder.isTypeSupported("video/webm; codecs=vp8")?{mimeType:"video/webm; codecs=vp8"}:MediaRecorder.isTypeSupported("video/webm; codecs=avc1")?{mimeType:"video/webm; codecs=avc1"}:MediaRecorder.isTypeSupported("video/webm; codecs=vp9.0")?{mimeType:"video/webm; codecs=vp9.0"}:MediaRecorder.isTypeSupported("video/webm; codecs=vp8.0")?{mimeType:"video/webm; codecs=vp8.0"}:{},p.Module.pauseMainLoop(),s.playing=!1,alert('please check "share system audio" to have audio in the recording. We only need the audio stream so your entire screen will not be recorded'),o=p.Module.canvas.captureStream(30),i=setTimeout(function(){s.playing=!0,p.Module.resumeMainLoop()},2e4),navigator.mediaDevices.getDisplayMedia({audio:!0,video:{mediaSource:"screen"}}).then(function(e){try{clearTimeout(i)}catch(e){}for(var t=e.getAudioTracks(),n=0;n>0;if(0>0,o=0;o".concat(this.icons[e],"");for(var a=t.childNodes[0].childNodes,o=0;o",""]),i=[];function n(e,t,n){"function"==typeof n?i.push(n):i.push(function(){});n=a.length-1;t?a.splice(n,0,'"):a.splice(n,0,'
  • '+e+"
  • ")}n(o.localization("Take Screenshot"),!1,function(e){var t=m.getScreenData(),n=(n="string"==typeof o.gameName?o.gameName:n)?"".concat(n,"-screenshot.png"):"game.png",a=document.createElement("a");return a.href=URL.createObjectURL(new Blob([t])),a.download=n,a.click(),setTimeout(function(){URL.revokeObjectURL(a.src)}),!1}),n(o.localization("Cache Manage"),!0,function(e){var n;return p.romdb&&(B(o.elements.dialogs.cache,!1),(n=o.elements.dialogs.cache.querySelector(".".concat(m.classNames["dialog-content"]))).innerHTML="
    "+o.localization("Loading")+"
    ",p.romdb.getAll(function(e){var t,c;e?(t=V("table",{style:"width:100%;padding-left:10px;text-align:left"}),c=V("tbody"),0"):n.innerHTML='
    '+o.localization("Empty")+"
    "},function(){})),!1}),n(o.localization("Quick Save")+" (F2)",!1,function(e){m.quickSaveState(),ae.contextMenu.style.display="none"}),n(o.localization("Quick Load")+" (F4)",!1,function(e){m.quickLoadState(),ae.contextMenu.style.display="none"}),ne.contextMenu.innerHTML=a.join("");for(var s=ne.contextMenu.getElementsByTagName("li"),r=0;r',"exit-fullscreen":'',gamepad:'',"load-state":'',muted:'',pause:'',play:'',restart:'',"save-state":'',"screen-record":'',settings:'',volume:'\n \n ',cheat:''},this.id=Math.floor(1e4*Math.random()),null),t=(this.elements.controls=null,{id:this.id}),a=!0;F.function(this.config.controls)&&(this.config.controls=this.config.controls.call(this.props)),this.config.controls||(this.config.controls=[]),F.element(this.config.controls)||F.string(this.config.controls)?e=this.config.controls:(e=ne.create.call(this,{id:this.id,seektime:this.config.seekTime,speed:this.speed,quality:this.quality}),a=!1);function o(e){var n=e;return Object.entries(t).forEach(function(e){t=2;var e=function(e){if(Array.isArray(e))return e}(e=e)||function(e,t){var n=[],a=!0,o=!1,i=void 0;try{for(var s,r=e[Symbol.iterator]();!(a=(s=r.next()).done)&&(n.push(s.value),!t||n.length!==t);a=!0);}catch(e){o=!0,i=e}finally{try{a||null==r.return||r.return()}finally{if(o)throw i}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}(),t=e[0],e=e[1];n=d(n,"{".concat(t,"}"),e)}),n}var i,s;a&&(F.string(this.config.controls)?e=o(e):F.element(e)&&(e.innerHTML=o(e.innerHTML))),F.string(this.config.selectors.controls.container)&&(i=document.querySelector(this.config.selectors.controls.container)),(i=F.element(i)?i:this.elements.container)[F.element(e)?"insertAdjacentElement":"insertAdjacentHTML"]("afterbegin",e),F.element(this.elements.controls)||ne.findElements.call(this),F.empty(this.elements.buttons)||(s=function(e){var t=n.config.classNames.controlPressed;Object.defineProperty(e,"pressed",{enumerable:!0,get:function(){return k(e,t)},set:function(){H(e,t,0Math.abs(n)?a:n),n=(i.increaseVolume(a/50),i.game.volume);(1===a&&n<1||-1===a&&0'+n.localization("CORS Error")+"":t.innerHTML=''+n.localization("Network Error")+""}},null,null,null,null,null,function(e){function t(){if(!(navigator.getGamepads||navigator.webkitGetGamepads))throw new Error("get gamepads not found!");if(this.rAF=window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.requestAnimationFrame,!this.rAF)throw new Error("request animation frame was not found!");this.loop()}t.prototype={gamepads:[],rAF:null,getGamepads:function(){return navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():[]},loop:async function(){this.updateGamepadState(),this.rAF.call(null,this.loop.bind(this))},updateGamepadState:function(){for(var n=this.getGamepads(),a=0;athis.options.threshold){var l={};for(r in this.direction)this.direction.hasOwnProperty(r)&&(l[r]=this.direction[r]);var r,c={};for(r in this.direction={x:n,y:a,angle:t},e.direction=this.direction,l)l[r]===this.direction[r]&&(c[r]=!0);if(c.x&&c.y&&c.angle)return e;c.x&&c.y||this.trigger("plain",e),c.x||this.trigger("plain:"+n,e),c.y||this.trigger("plain:"+a,e),c.angle||this.trigger("dir dir:"+t,e)}return e},a.prototype=new e,(a.constructor=a).id=0,a.prototype.prepareNipples=function(){var e=this,a=e.nipples;a.on=e.on.bind(e),a.off=e.off.bind(e),a.options=e.options,a.destroy=e.destroy.bind(e),a.ids=e.ids,a.id=e.id,a.processOnMove=e.processOnMove.bind(e),a.processOnEnd=e.processOnEnd.bind(e),a.get=function(e){if(void 0===e)return a[0];for(var t=0,n=a.length;t