Building a JavaScript Game
Table of Contents
Overview #
I recently decided to undertake the challenge of building a JavaScript game. I’ve never really played around with JavaScript before I started this project however through out my time playing around and developing the game I learnt that JavaScript is quite a nice language similar to python. Although this project may not be perfect in regards to tidy code and its lack of comments I think it was a good project that really helped me learn JavaScript.
Before you continue I recommend that you give the ctf a try.
JavaScript Capture The Flag GamePreliminary Research #
Before loading up vs code and going for it I decided to poke around on the internet and see what type of learning resource were already available and if anyone had done roughly the same thing I was trying to achieve.
This research was extremely successful and lead me to the following video:
Although the video is quite long I found it really useful to just jump around and get help on any of the elements that I was struggling on. This was made extra easy due to each segment being titled on the timeline.
Getting Started #
The first thing I need to work on was getting my development environment all setup:
- For my IDE I decided to use Visual Studio Code.
- For creating the assets and map I made use of Tiled.
- I also made use of MS Paint to make some small changes to the assets.
- I was able to find most of my assets at Itch.io
Feature Planning #
Before writing the code I need to have a bit of a good idea of what exactly I was going to be making.
Challenges #
Due to the theme of this ctf being the rainbow I decided that i would have 6 rooms one for each of the colours on a typical rainbow flag. This meant that I would need 6 challenges.
- Challenge One: Steganography
- Challenge Two: Cryptography
- Challenge Three: Password Crack
- Challenge Four: Reverse Engineering
- Challenge Five: Forensics
- Challenge Six: Binary Exploit
Base Game #
After coming up with the challenge ideas I came up with an idea for a javascript game to tie them together.
Player is a cat that enters an office, there are around 6 characters in the office located in different rooms. Each character has a bit of dialogue and then provides the player with a download of the challenge. Once the player has collected all the flags they can go to a device to enter them in.
Designing the Map #
For my map design I made use of a couple office asset packs. And ended up with the following:
Coding the Logic #
The Logic of the game was split into a few sections.
Creating a Game Canvas #
Creating a graphical game is quite simple in javascript thanks to the canvas object.
By adding the following code to the index.html
file:
<style>
canvas {
padding-left: 0;
padding-right: 0;
margin-left: auto;
margin-right: auto;
display: block;
width: 800px;
box-shadow: 0 0 10px 0 rgb(0, 0, 0);
}
</style>
<body>
<canvas id="gameCanvas" style="display:none"></canvas>
</body>
And the following to index.js
const canvas = document.querySelector('canvas');
canvas.width = 1024
canvas.height = 576
const c = canvas.getContext('2d');
c.fillStyle = '#FFFFFF';
c.fillRect(0, 0, canvas.width, canvas.height)
This code allowed my to create my games canvas which would enable me to render sprites and the map on.
Creating map boundaries #
The map boundaries are created via Tiled’s export json feature. This allows for the maps layers to be exported as an array containing 0
for empty sections and numerical values such as 1023
where a block has been placed. After saving the map boundaries array the javascript I could import it and carry out rectangular collision on it. The logic used for this was taken from the video from the Preliminary Research section. Here is the code used to create a collision zone:
const collisionsMap = []
const boundaries = []
let isColliding = false
function rectangularCollision({rectangle1, rectangle2}) {
return(
rectangle1.position.x + rectangle1.width +10 >= rectangle2.position.x &&
rectangle1.position.x +35 <= rectangle2.position.x + rectangle2.width &&
rectangle1.position.y + 50 <= rectangle2.position.y + rectangle2.height &&
rectangle1.position.y + rectangle1.height -125 >= rectangle2.position.y
)
}
function collisionSetup(){
for (let i = 0; i < collisions.length; i += 80) {
collisionsMap.push(collisions.slice(i, 80 + i))
}
collisionsMap.forEach((row, i) => {
row.forEach((symbol, j) => {
if (symbol === 4258)
boundaries.push(
new Boundary({
position: {
x: j * Boundary.width + offset.x,
y: i * Boundary.height + offset.y,
}
})
)
})
})
}
Creating Character Movement #
Getting the character to move worked via having the map move around the character. This was carried out by adding values to the x & y position of the background depending on the key the player has used.
The following is a snippet of code from the character movement script for what happens if the player uses the w key:
if (keys.w.pressed && lastkey == 'w') {
player.moving = true
player.frames.level = 1
for (let i = 0; i < boundaries.length; i++) {
const boundary = boundaries[i]
if (rectangularCollision({
rectangle1: player,
rectangle2: {...boundary, position: {
x: boundary.position.x,
y: boundary.position.y + 3
}}
})
){
moving = false
break
}
}
if (moving){
movables.forEach((movable) =>{
movable.position.y += 3
})
}
}
The code makes use of the rectangular collision and checks against the boundaries added in the map boundaries section. This function also uses a moveables array that contains elements such as the background and other characters that need to be moved around when the character is walking.
Interacting with Characters #
Interacting with the characters follows a same pattern as the code used to move the character. However instead of moving if not colliding the following code will execute if the player is in the collision zone:
for (let i = 0; i < orangeBoundaries.length; i++) {
const boundary = orangeBoundaries[i]
if (rectangularCollision({
rectangle1: player,
rectangle2: {...boundary, position: {
x: boundary.position.x,
y: boundary.position.y
}}
})
){
player.lastCharacter = 1
talkCheck.isTalking = true
msgOne()
keys.f.pressed = false
break
}
}
Creating a Terminal #
One of the other important parts to the game was having the characters talk. For this I wanted it to look like an 80’s hacker movie like wargame
I was able to achieve the styling via css and used the following code to get the type out feature.
Obfuscating The critical logic #
Javascript is a client side tool. This basically means that the players can access this source code. Normally a server can make use of something like php to get around showing the users source code however i’m hosting this on a github page and only have access to javascript. But even with that said their is a useful method called obfuscation which try’s to make the code very difficult to read and reverse engineer, even with this method someone that is dedicated could probably make sense of the obfuscated code and exploit it.
Simple Hello World Source Code:
console.log("Hellow, World!")
obfuscated version:
(function(_0xdf2453,_0x2ea48e){function _0x5d13d9(_0x379cb1,_0x4e582c,_0x17bc13,_0x49d6e2,_0x4cf7cc){return _0x3430(_0x379cb1- -0x3bc,_0x49d6e2);}function _0x5850f1(_0x42373e,_0x5166dc,_0x1843f9,_0x209c98,_0xa6b9d6){return _0x3430(_0x42373e-0x92,_0x209c98);}function _0x18581c(_0x180fa7,_0x333344,_0x182a5d,_0x533a83,_0x107846){return _0x3430(_0x180fa7-0x3cb,_0x182a5d);}function _0x4d98e3(_0x7fd0dc,_0x429ed1,_0x456e4d,_0x87e4e0,_0x5b6ebf){return _0x3430(_0x7fd0dc-0x39f,_0x429ed1);}function _0x1733df(_0x5bb20e,_0x48c741,_0x2b76d4,_0x3107cb,_0x5e52f2){return _0x3430(_0x48c741-0x208,_0x2b76d4);}var _0x212b14=_0xdf2453();while(!![]){try{var _0x2ec5e4=parseInt(_0x18581c(0x5a3,0x5d0,'5RNm',0x563,0x5fb))/(0x1de1*-0x1+-0x69d+-0x1*-0x247f)+parseInt(_0x1733df(0x379,0x3d8,'JemE',0x369,0x368))/(-0x1f46+0x26*0xde+-0x1ac)*(-parseInt(_0x1733df(0x3c7,0x3b5,'9)uo',0x3dd,0x409))/(-0x1e48+-0x4d9*-0x3+0xfc0))+-parseInt(_0x18581c(0x5f6,0x590,'HW65',0x5ba,0x614))/(-0x6e6+-0x88e+0xf78)*(-parseInt(_0x18581c(0x5d7,0x590,'klmv',0x61f,0x644))/(0x22bf*0x1+-0x3*-0x869+0x1*-0x3bf5))+parseInt(_0x1733df(0x4bf,0x452,'yo(X',0x46a,0x4a4))/(0x1*0x101f+-0x1c87+-0x637*-0x2)*(parseInt(_0x18581c(0x5b7,0x5a2,'fnAx',0x565,0x550))/(0x25c7+-0x377*0x9+0x1*-0x691))+-parseInt(_0x5850f1(0x21d,0x267,0x200,'9)uo',0x236))/(-0x3d7*-0x2+-0x218c+0x19e6)*(parseInt(_0x4d98e3(0x5ec,'yel$',0x601,0x5d2,0x5ac))/(-0x1228+-0x47c+0x16ad))+parseInt(_0x5850f1(0x24c,0x214,0x283,'klmv',0x275))/(0x863+0xf38+-0x1791)*(-parseInt(_0x4d98e3(0x5ad,'XTre',0x563,0x612,0x607))/(-0x12e3+-0xc83+0xa7b*0x3))+-parseInt(_0x18581c(0x5dc,0x616,'xByU',0x5ec,0x57c))/(-0x549*0x1+-0x2*0x5ba+-0x1*-0x10c9);if(_0x2ec5e4===_0x2ea48e)break;else _0x212b14['push'](_0x212b14['shift']());}catch(_0x29103a){_0x212b14['push'](_0x212b14['shift']());}}}(_0x577c,0x60af7+-0x1911e+-0xa208));function _0x3f6c0d(_0x525872,_0x5d5f74,_0x404a72,_0x15d775,_0x45b9af){return _0x3430(_0x525872- -0x28d,_0x404a72);}var _0x44508a=(function(){function _0x2eca53(_0x58846c,_0xb7c344,_0x25d7f1,_0x485b97,_0x327025){return _0x3430(_0x327025-0xc2,_0x58846c);}var _0x24569f={'Qmyfr':_0x582eae(0x483,0x40f,0x443,0x45e,'Xhow')+_0x582eae(0x490,0x478,0x43b,0x46e,'WUL)')+'1','pZhVL':_0x30cd16(0x132,0x199,0x119,'jTpc',0x169)+_0x582eae(0x423,0x368,0x3d6,0x3a9,'hMOA'),'mEskq':function(_0x1c289b,_0x1f5a3f){return _0x1c289b(_0x1f5a3f);},'ZqGHW':function(_0x3ee281,_0x3d19a4){return _0x3ee281+_0x3d19a4;},'azZWF':_0x1b4fa2(0x3de,0x412,0x431,'o@5^',0x403)+_0x30cd16(0xe8,0x189,0x144,'fyuv',0x12c)+_0x1b4fa2(0x35d,0x349,0x36c,'o@5^',0x34d)+_0x582eae(0x476,0x47d,0x442,0x45a,'%agy'),'SkaIp':_0x582eae(0x417,0x458,0x405,0x450,'%t%C')+_0x1b4fa2(0x372,0x36a,0x3a8,'YMbP',0x354)+_0x9fd6b(0x2cb,0x2f5,0x2f2,'xy[M',0x320)+_0x9fd6b(0x3b5,0x36a,0x3ba,')Rb8',0x3aa)+_0x2eca53('yel$',0x2a2,0x2e5,0x2a5,0x2a9)+_0x582eae(0x3f6,0x467,0x42a,0x475,'fnAx')+'\x20)','kgGLb':function(_0x43799e){return _0x43799e();},'XJMki':_0x582eae(0x41d,0x406,0x3cd,0x382,'fyuv'),'hRHVq':_0x1b4fa2(0x391,0x304,0x34c,'&&l4',0x33f),'qYhIP':_0x9fd6b(0x3d7,0x33a,0x38d,'fyuv',0x378),'TGNXq':_0x30cd16(0xe5,0x133,0xdc,'jTpc',0x104),'hFHRP':_0x2eca53('YMbP',0x387,0x36c,0x37d,0x322)+_0x9fd6b(0x319,0x3a3,0x3a8,'J15K',0x350),'QjWVn':_0x2eca53('PzMX',0x2da,0x342,0x2e6,0x2dd),'ppqKW':_0x582eae(0x3f8,0x43e,0x424,0x44f,'jTpc'),'WhzUu':function(_0x44ab37,_0x12f2fa){return _0x44ab37<_0x12f2fa;},'IRHaj':_0x2eca53('Xhow',0x273,0x231,0x2a9,0x288)+_0x582eae(0x39c,0x43b,0x3ee,0x3f8,'xy[M')+'3','MJpPw':function(_0x3fd31f,_0x55e700){return _0x3fd31f===_0x55e700;},'AMwct':_0x30cd16(0x1e4,0x15c,0x170,'Tu)N',0x1c5),'NFcgp':_0x30cd16(0x1a6,0x1d6,0x1ef,'xy[M',0x1d0),'WMzWy':function(_0x2e94d7,_0x374d7a){return _0x2e94d7===_0x374d7a;},'FHaSc':_0x582eae(0x3ea,0x390,0x3e7,0x445,'m)Px'),'FnxDr':_0x30cd16(0x15e,0x13b,0xd0,'PzMX',0x115),'LvxvU':function(_0x2a9f11,_0x44d15e){return _0x2a9f11!==_0x44d15e;},'UMKMr':_0x582eae(0x4ac,0x4a8,0x45c,0x418,'fnAx'),'WaNsW':_0x1b4fa2(0x41a,0x3ca,0x3b4,'8BD6',0x3ed)};function _0x9fd6b(_0x262105,_0x2d5f4f,_0x16198c,_0x45b735,_0x1071df){return _0x3430(_0x1071df-0x185,_0x45b735);}function _0x30cd16(_0x1c353a,_0x2516ae,_0x1d47a5,_0x4c08ba,_0x4ac3d1){return _0x3430(_0x4ac3d1- -0x96,_0x4c08ba);}var _0x1f4172=!![];function _0x1b4fa2(_0xb568d3,_0x45856a,_0x508774,_0x5210fc,_0x2d5379){return _0x3430(_0x2d5379-0x1ad,_0x5210fc);}function _0x582eae(_0x6aca4a,_0x5b330f,_0x1adba9,_0x3501b4,_0x15311f){return _0x3430(_0x1adba9-0x204,_0x15311f);}return function(_0x164228,_0x2098e4){function _0x24b6fc(_0x155f8d,_0x4e01f8,_0x26c6c5,_0x3db4fc,_0x1b049f){return _0x2eca53(_0x1b049f,_0x4e01f8-0x1c7,_0x26c6c5-0x6c,_0x3db4fc-0x1f2,_0x3db4fc-0x31c);}function _0x3a4b3b(_0xc2a6d4,_0x477a01,_0x1b4bea,_0x30ccb0,_0x3836d5){return _0x582eae(_0xc2a6d4-0x59,_0x477a01-0x19e,_0xc2a6d4- -0x1d5,_0x30ccb0-0x13c,_0x3836d5);}function _0x31194a(_0x315e10,_0x4c4731,_0x99ea2d,_0x35ef05,_0xe4b6c3){return _0x2eca53(_0xe4b6c3,_0x4c4731-0xe9,_0x99ea2d-0x1a2,_0x35ef05-0x1d2,_0x4c4731-0x2aa);}function _0x26a793(_0x547972,_0x5b8a48,_0x571dd2,_0x466617,_0x39c85b){return _0x582eae(_0x547972-0x1ea,_0x5b8a48-0x48,_0x5b8a48- -0x351,_0x466617-0x170,_0x571dd2);}function _0xeebd(_0x57ac25,_0x26b3ec,_0x234a9d,_0x2348bd,_0x267dcd){return _0x1b4fa2(_0x57ac25-0x128,_0x26b3ec-0x15e,_0x234a9d-0x127,_0x57ac25,_0x2348bd- -0x50a);}var _0x4968c1={'IzmNV':_0x24569f[_0x3a4b3b(0x1f4,0x247,0x203,0x1c2,'zfU*')],'YZoux':_0x24569f[_0xeebd('%agy',-0x173,-0x138,-0x17c,-0x1d9)],'AjJIN':function(_0x48115d,_0x13417b){function _0x1f8b4e(_0x4243a9,_0x3a2f7e,_0x35bf14,_0x4e335a,_0x34c84b){return _0xeebd(_0x34c84b,_0x3a2f7e-0x138,_0x35bf14-0x8e,_0x4e335a-0x3e4,_0x34c84b-0x10);}return _0x24569f[_0x1f8b4e(0x23a,0x2c2,0x21e,0x279,'XTre')](_0x48115d,_0x13417b);},'qsbGe':function(_0x1e8b04,_0x568ecc){function _0x1455b4(_0x682516,_0x258554,_0x484d26,_0x2d2583,_0x403dcb){return _0xeebd(_0x2d2583,_0x258554-0x1d8,_0x484d26-0x6e,_0x484d26-0x43d,_0x403dcb-0x194);}return _0x24569f[_0x1455b4(0x32e,0x324,0x330,'&9A2',0x326)](_0x1e8b04,_0x568ecc);},'SRXhP':_0x24569f[_0xeebd('Z!u0',-0x122,-0x15b,-0x183,-0x112)],'wqZtR':_0x24569f[_0xeebd('YMbP',-0x14c,-0xc5,-0x10b,-0x9b)],'YeZxK':function(_0x37cd72){function _0x47e554(_0x49dfbd,_0x203fd4,_0x4c0612,_0x490546,_0x2ff16e){return _0x24b6fc(_0x49dfbd-0x6a,_0x203fd4-0x89,_0x4c0612-0x6e,_0x4c0612- -0xf4,_0x49dfbd);}return _0x24569f[_0x47e554('RRWC',0x56b,0x507,0x4fd,0x4be)](_0x37cd72);},'yWgPs':_0x24569f[_0x24b6fc(0x5be,0x5d0,0x59b,0x57f,'hMOA')],'VSEyP':_0x24569f[_0x3a4b3b(0x28e,0x2e2,0x2e4,0x228,'Tu)N')],'xfRFE':_0x24569f[_0x24b6fc(0x51d,0x58f,0x52a,0x587,'xByU')],'YEunV':_0x24569f[_0x3a4b3b(0x21d,0x1e4,0x217,0x1f8,'WUL)')],'Ozytx':_0x24569f[_0xeebd('WJCE',-0x179,-0x12e,-0x13e,-0x121)],'UnUpc':_0x24569f[_0x24b6fc(0x611,0x644,0x61a,0x5d9,'d2(W')],'rFtXu':_0x24569f[_0xeebd(')Rb8',-0x146,-0x199,-0x144,-0x195)],'vGZtG':function(_0x59dc22,_0x3c3944){function _0x416dca(_0x2155a9,_0x3aebe1,_0xd2f867,_0x4776c5,_0x56e2fb){return _0xeebd(_0xd2f867,_0x3aebe1-0x51,_0xd2f867-0xcd,_0x4776c5-0x59f,_0x56e2fb-0x7d);}return _0x24569f[_0x416dca(0x446,0x440,'JemE',0x3d9,0x3e5)](_0x59dc22,_0x3c3944);},'oNkjM':_0x24569f[_0x26a793(0x152,0xf7,')]gK',0x15c,0xe1)],'hQrZH':function(_0x339efb,_0x24814b){function _0x2da960(_0x3d25da,_0x1331bb,_0x2b2007,_0x463201,_0x2a5623){return _0x31194a(_0x3d25da-0x17e,_0x463201- -0x310,_0x2b2007-0x191,_0x463201-0xf7,_0x1331bb);}return _0x24569f[_0x2da960(0x2c8,'WJCE',0x252,0x295,0x29b)](_0x339efb,_0x24814b);},'SLPSr':_0x24569f[_0x31194a(0x4cc,0x50f,0x500,0x543,'PzMX')],'ZsboQ':_0x24569f[_0x24b6fc(0x597,0x554,0x56b,0x592,'^#m6')],'NvlIg':function(_0xb378e3,_0x5d152a){function _0x1bb403(_0x1b0c8e,_0x4def11,_0xc2843a,_0x1992b1,_0x5da5e3){return _0xeebd(_0x1992b1,_0x4def11-0xc3,_0xc2843a-0x94,_0x5da5e3-0x431,_0x5da5e3-0x173);}return _0x24569f[_0x1bb403(0x348,0x36f,0x368,'m)Px',0x308)](_0xb378e3,_0x5d152a);},'tyjuh':_0x24569f[_0xeebd('JemE',-0x14d,-0x1e8,-0x1a1,-0x203)],'aHWUY':_0x24569f[_0x26a793(0xdc,0xda,'XTre',0xc9,0x144)]};if(_0x24569f[_0xeebd('fnAx',-0x10a,-0x148,-0x164,-0x177)](_0x24569f[_0x24b6fc(0x623,0x5d6,0x5ec,0x5b2,'xByU')],_0x24569f[_0xeebd('PzMX',-0x18d,-0x148,-0x1a5,-0x1df)])){var _0x4e87fc=_0x1f4172?function(){function _0x41c937(_0x2a8c1c,_0x5bc0d3,_0x1c9d11,_0x4a5b55,_0x5d5c52){return _0x3a4b3b(_0x5bc0d3-0x1b0,_0x5bc0d3-0x178,_0x1c9d11-0xc3,_0x4a5b55-0x140,_0x1c9d11);}function _0x4d187a(_0x46d1f7,_0x580a6a,_0x144154,_0xd627a9,_0x20be15){return _0xeebd(_0x580a6a,_0x580a6a-0x119,_0x144154-0x131,_0x46d1f7-0x326,_0x20be15-0x166);}function _0x51ec93(_0x274eec,_0x18f0a7,_0x59f323,_0x4fec71,_0x5e9709){return _0x24b6fc(_0x274eec-0x68,_0x18f0a7-0xfb,_0x59f323-0x31,_0x59f323- -0x477,_0x274eec);}function _0x18894b(_0x44d69f,_0x2a5b16,_0x355453,_0x9ce328,_0x3d24d2){return _0x3a4b3b(_0x2a5b16- -0x36,_0x2a5b16-0xa4,_0x355453-0x1e6,_0x9ce328-0x1ea,_0x355453);}var _0x1a2d79={'fdfrR':_0x4968c1[_0x44039c(0x359,0x305,0x3bd,0x324,'%t%C')],'DkUCB':function(_0x3316da,_0x4eb7b1){function _0x8b0696(_0x3fcb03,_0x534f80,_0x184625,_0x11e759,_0x88f46e){return _0x44039c(_0x88f46e- -0x2fa,_0x534f80-0x15e,_0x184625-0x132,_0x11e759-0x53,_0x184625);}return _0x4968c1[_0x8b0696(0xe0,0xc8,'WUL)',0xe5,0x7f)](_0x3316da,_0x4eb7b1);},'boQAw':function(_0x4f8c0e,_0x148035){function _0xa3994f(_0x349b28,_0x506976,_0x65e280,_0x5c7a1d,_0xc1294b){return _0x44039c(_0x349b28- -0x560,_0x506976-0xfc,_0x65e280-0x64,_0x5c7a1d-0x151,_0xc1294b);}return _0x4968c1[_0xa3994f(-0x1e2,-0x20a,-0x177,-0x24e,'t@aB')](_0x4f8c0e,_0x148035);},'dXdXq':function(_0x5ad022,_0x3077d5){function _0x2fa456(_0x1b7212,_0x3b0ac7,_0x897618,_0x34a924,_0x6e8271){return _0x44039c(_0x34a924-0x85,_0x3b0ac7-0x1e0,_0x897618-0xe8,_0x34a924-0x29,_0x3b0ac7);}return _0x4968c1[_0x2fa456(0x489,'PzMX',0x441,0x444,0x3eb)](_0x5ad022,_0x3077d5);},'TeHiI':_0x4968c1[_0x44039c(0x3e6,0x44a,0x3dd,0x3f2,'J15K')],'CesHN':_0x4968c1[_0x44039c(0x36d,0x38d,0x313,0x398,'XTre')],'NEbRG':function(_0x2cf87d){function _0x36e3a3(_0x5115da,_0x2a737d,_0x143b64,_0x297bd5,_0xc74903){return _0x44039c(_0x2a737d- -0x473,_0x2a737d-0xb3,_0x143b64-0x105,_0x297bd5-0x1a6,_0x5115da);}return _0x4968c1[_0x36e3a3('t@aB',-0xfe,-0xb1,-0x11f,-0x165)](_0x2cf87d);},'fdnCy':_0x4968c1[_0x44039c(0x393,0x353,0x35a,0x382,'WUL)')],'oRfir':_0x4968c1[_0x51ec93('^#m6',0x157,0xef,0x12b,0xdb)],'aJOci':_0x4968c1[_0x18894b(0x206,0x206,'HW65',0x1a9,0x1b3)],'tQnQZ':_0x4968c1[_0x51ec93('HW65',0x150,0x128,0xca,0x170)],'hLgxw':_0x4968c1[_0x44039c(0x332,0x2fe,0x2cc,0x310,'t@aB')],'lWYWE':_0x4968c1[_0x44039c(0x3b2,0x38a,0x3b5,0x376,'&jDr')],'JrDKB':_0x4968c1[_0x44039c(0x317,0x341,0x344,0x2f5,'Z!u0')],'zJMlQ':function(_0x1cd69e,_0x38f107){function _0x52a94a(_0x4d3656,_0x1fdd90,_0x306eb2,_0x2cbd68,_0x4c3294){return _0x51ec93(_0x2cbd68,_0x1fdd90-0x1f4,_0x4d3656- -0x1ea,_0x2cbd68-0x95,_0x4c3294-0x118);}return _0x4968c1[_0x52a94a(-0xb4,-0x105,-0xca,'&&l4',-0x94)](_0x1cd69e,_0x38f107);},'XAywg':_0x4968c1[_0x41c937(0x3fc,0x40c,'JemE',0x44c,0x456)]};function _0x44039c(_0x4978e3,_0x27d462,_0x4e71a5,_0x53a2de,_0xfd285b){return _0x24b6fc(_0x4978e3-0x1bf,_0x27d462-0x17c,_0x4e71a5-0xb1,_0x4978e3- -0x25a,_0xfd285b);}if(_0x4968c1[_0x51ec93('d2(W',0x197,0x17d,0x1a3,0x1ac)](_0x4968c1[_0x51ec93('m)Px',0x1bf,0x19a,0x195,0x176)],_0x4968c1[_0x4d187a(0x1eb,'zfU*',0x1da,0x20f,0x257)])){var _0x13e682=_0x4968c1[_0x51ec93('K156',0x141,0x138,0x163,0x1a4)][_0x18894b(0x25e,0x225,'Nt8V',0x20c,0x24f)]('|'),_0x349ec2=0x1*0xc46+-0x36d+-0x8d9;while(!![]){switch(_0x13e682[_0x349ec2++]){case'0':var _0x273ae7=_0x18f5e4[_0x4fee1b]||_0x1dafdc;continue;case'1':_0x1fcfc2[_0x4fee1b]=_0x1dafdc;continue;case'2':_0x1dafdc[_0x41c937(0x3ad,0x36d,'gT#s',0x324,0x3a7)+_0x4d187a(0x16e,')Rb8',0x100,0x1a0,0x1ca)]=_0x273ae7[_0x41c937(0x3ae,0x383,'zfU*',0x36f,0x3a4)+_0x44039c(0x32c,0x36b,0x2c6,0x2d9,'m)Px')][_0x4d187a(0x187,'D@Bw',0x16d,0x1bd,0x1e2)](_0x273ae7);continue;case'3':_0x1dafdc[_0x41c937(0x3d6,0x444,'%t%C',0x41b,0x48e)+_0x44039c(0x3dd,0x3fa,0x443,0x3a2,'u[fp')]=_0x2a85d9[_0x41c937(0x385,0x3a7,'yel$',0x3aa,0x3ec)](_0x4a4cf6);continue;case'4':var _0x4fee1b=_0x4fd68f[_0x200f08];continue;case'5':var _0x1dafdc=_0x51ea19[_0x18894b(0x1e3,0x1e4,'K156',0x1ab,0x1b6)+_0x41c937(0x3b4,0x3f6,'XTre',0x3e3,0x3d8)+'r'][_0x44039c(0x3b3,0x3ae,0x3b4,0x3fa,'Tu)N')+_0x18894b(0x16b,0x1a5,'9)uo',0x20e,0x14a)][_0x18894b(0x1f8,0x1b0,'fyuv',0x213,0x178)](_0x330e84);continue;}break;}}else{if(_0x2098e4){if(_0x4968c1[_0x51ec93(')]gK',0x191,0x1ae,0x144,0x160)](_0x4968c1[_0x18894b(0x2c8,0x257,'JII3',0x21a,0x24e)],_0x4968c1[_0x18894b(0x18c,0x1d5,'yel$',0x219,0x1a2)])){var _0x41ac1c=_0x1a2d79[_0x44039c(0x320,0x2f5,0x38b,0x336,'hMOA')][_0x18894b(0x212,0x204,'9)uo',0x23a,0x1ba)]('|'),_0x979baa=0x81*0x17+-0xbec+0x55;while(!![]){switch(_0x41ac1c[_0x979baa++]){case'0':var _0x1e0241=_0x122f87[_0x44039c(0x38a,0x339,0x39d,0x3cb,'gT#s')+'le']=_0x122f87[_0x44039c(0x371,0x362,0x33b,0x33f,'(L3G')+'le']||{};continue;case'1':var _0x122f87;continue;case'2':try{var _0x5559ec=_0x1a2d79[_0x4d187a(0x1f9,'fyuv',0x223,0x1ed,0x1ea)](_0x51d096,_0x1a2d79[_0x41c937(0x428,0x414,'cHqK',0x3e2,0x46d)](_0x1a2d79[_0x4d187a(0x206,'klmv',0x1b5,0x231,0x225)](_0x1a2d79[_0x4d187a(0x1d1,'o@5^',0x1a2,0x218,0x161)],_0x1a2d79[_0x18894b(0x22f,0x200,'gT#s',0x229,0x213)]),');'));_0x122f87=_0x1a2d79[_0x41c937(0x3ce,0x373,'PzMX',0x391,0x372)](_0x5559ec);}catch(_0xe2f5fd){_0x122f87=_0x394d4b;}continue;case'3':var _0x1d32d9=[_0x1a2d79[_0x41c937(0x41f,0x425,'gT#s',0x3de,0x485)],_0x1a2d79[_0x4d187a(0x223,'xy[M',0x24e,0x23a,0x1e0)],_0x1a2d79[_0x41c937(0x3de,0x428,'RRWC',0x491,0x3be)],_0x1a2d79[_0x51ec93('Z!u0',0x14a,0x144,0x1a4,0x107)],_0x1a2d79[_0x51ec93(')Rb8',0x167,0x1bc,0x14d,0x173)],_0x1a2d79[_0x4d187a(0x150,'%t%C',0x189,0x1a5,0x138)],_0x1a2d79[_0x44039c(0x337,0x32b,0x31c,0x330,'&&l4')]];continue;case'4':for(var _0x1dd5e0=0x1338+0x1*0x1ba9+0x1*-0x2ee1;_0x1a2d79[_0x51ec93('9)uo',0x15f,0x13d,0x15e,0x19e)](_0x1dd5e0,_0x1d32d9[_0x18894b(0x226,0x1d4,'m)Px',0x192,0x240)+'h']);_0x1dd5e0++){var _0x264ef4=_0x1a2d79[_0x44039c(0x3cf,0x41f,0x40d,0x41d,')]gK')][_0x4d187a(0x225,'t@aB',0x21b,0x1b9,0x223)]('|'),_0x18991a=0x1805+-0x4*-0x829+-0x38a9;while(!![]){switch(_0x264ef4[_0x18991a++]){case'0':var _0x2a15be=_0x1d32d9[_0x1dd5e0];continue;case'1':var _0x534c40=_0x1e0241[_0x2a15be]||_0x13fc4d;continue;case'2':_0x13fc4d[_0x18894b(0x196,0x1f6,'RRWC',0x1a6,0x233)+_0x44039c(0x32e,0x2ef,0x308,0x390,'u[fp')]=_0x534c40[_0x18894b(0x188,0x1ef,'Nt8V',0x1ee,0x213)+_0x18894b(0x22b,0x22b,'Z!u0',0x220,0x291)][_0x51ec93('fyuv',0x100,0x11e,0x11d,0x139)](_0x534c40);continue;case'3':_0x1e0241[_0x2a15be]=_0x13fc4d;continue;case'4':var _0x13fc4d=_0x5097a4[_0x51ec93('gT#s',0x166,0x1ce,0x222,0x212)+_0x44039c(0x3c6,0x432,0x386,0x415,'yel$')+'r'][_0x4d187a(0x1cd,'K156',0x23a,0x201,0x198)+_0x18894b(0x172,0x185,'(XAR',0x186,0x18f)][_0x18894b(0x159,0x1af,'JemE',0x150,0x149)](_0xf3426f);continue;case'5':_0x13fc4d[_0x41c937(0x3bd,0x42d,'Xhow',0x456,0x3e6)+_0x4d187a(0x1b1,'&jDr',0x184,0x1c7,0x169)]=_0x327b8a[_0x18894b(0x245,0x20d,'K156',0x238,0x1a5)](_0x2d4bc9);continue;}break;}}continue;}break;}}else{var _0x1990f6=_0x2098e4[_0x51ec93('PzMX',0xd8,0xf7,0x96,0xcc)](_0x164228,arguments);return _0x2098e4=null,_0x1990f6;}}}}:function(){};return _0x1f4172=![],_0x4e87fc;}else{if(_0x12d895){var _0x50ea66=_0x195e9b[_0x3a4b3b(0x292,0x28b,0x2e5,0x2f0,'d2(W')](_0x4096cf,arguments);return _0x18216e=null,_0x50ea66;}}};}());function _0x20d0e8(_0x4a953e,_0x43137,_0x2544d6,_0x192701,_0x335769){return _0x3430(_0x43137-0x12c,_0x2544d6);}var _0x36914d=_0x44508a(this,function(){function _0x5d7778(_0x4922d6,_0x38cffb,_0x31f066,_0x102290,_0x4756dd){return _0x3430(_0x4756dd- -0x19e,_0x38cffb);}function _0xf787af(_0x33421c,_0xa03ca3,_0x2ab5d4,_0x44084b,_0xb13a65){return _0x3430(_0x33421c-0x3d,_0x2ab5d4);}function _0x243309(_0x4d5137,_0x2d2884,_0x1c26dd,_0x52c5bb,_0x4b7302){return _0x3430(_0x4d5137-0x189,_0x2d2884);}var _0x3ff1eb={'EpCKp':function(_0x124431,_0x52af28){return _0x124431(_0x52af28);},'ZIVlj':function(_0x175644,_0x21d69f){return _0x175644+_0x21d69f;},'BCCwf':_0x5d7778(0x68,'J15K',-0x5b,0x18,-0x5)+_0x243309(0x350,'YMbP',0x373,0x38c,0x321)+_0x5d7778(-0x62,'u[fp',-0x34,-0x56,-0x6)+_0x243309(0x3c7,'%agy',0x3c0,0x376,0x387),'BhuIE':_0xf787af(0x1f6,0x21d,'WJCE',0x1a9,0x206)+_0x7a3b11(0x230,0x2a5,0x26c,'hMOA',0x28d)+_0x1d1a50('&&l4',0x1e7,0x220,0x206,0x24f)+_0x1d1a50('d2(W',0x297,0x28b,0x2d9,0x230)+_0x1d1a50('&9A2',0x25b,0x23f,0x299,0x21c)+_0x7a3b11(0x307,0x2fb,0x2f5,'%agy',0x2b9)+'\x20)','bBzOp':function(_0x4454b8){return _0x4454b8();},'CdUBV':function(_0x3b4fa9,_0x5be590){return _0x3b4fa9===_0x5be590;},'HWAQK':_0xf787af(0x285,0x253,'Z!u0',0x28b,0x29a),'MutNY':_0x5d7778(-0x3a,'u[fp',0x3,0x53,0x1),'PcXBA':function(_0x651067,_0x2e1bec){return _0x651067(_0x2e1bec);},'SascJ':function(_0xb76d38){return _0xb76d38();},'HHcWE':function(_0x442648,_0x5b520d){return _0x442648===_0x5b520d;},'ehTMS':_0x243309(0x355,'Xhow',0x328,0x365,0x309),'iDGNW':_0x1d1a50('Tu)N',0x237,0x255,0x2a4,0x218),'XWYRF':_0x243309(0x37d,')]gK',0x30d,0x30e,0x3ac),'ubDAH':_0x7a3b11(0x2bc,0x317,0x27d,'&jDr',0x2b7),'kGJtS':_0xf787af(0x279,0x2da,'LTbH',0x212,0x2d2),'ZYEQt':_0x1d1a50('4b$z',0x28e,0x256,0x298,0x296),'WCRDK':_0x5d7778(0x26,'JII3',0x9a,0x7,0x72)+_0xf787af(0x291,0x248,'(XAR',0x2a3,0x231),'WmjFo':_0x5d7778(0x64,'(L3G',-0x29,0x15,0x26),'LlaOz':_0x7a3b11(0x291,0x2b9,0x2a7,'yo(X',0x271),'HVkAY':function(_0x2bbc35,_0x3eea50){return _0x2bbc35<_0x3eea50;},'LXNyS':function(_0x42a9dd,_0x65f653){return _0x42a9dd===_0x65f653;},'vjdiT':_0x243309(0x3ce,'9)uo',0x3d1,0x3a2,0x428),'CgICU':_0x7a3b11(0x354,0x2e2,0x2a0,'&jDr',0x300),'LFgsV':_0x7a3b11(0x2be,0x2a2,0x35a,'xy[M',0x305)+_0x5d7778(-0x10,'HW65',0x35,-0x1f,0x35)+'3'},_0x3816ee;function _0x1d1a50(_0x2e1e2b,_0x40392b,_0x1bc227,_0x693486,_0x1d6ecd){return _0x3430(_0x1bc227-0x71,_0x2e1e2b);}try{if(_0x3ff1eb[_0x7a3b11(0x2c9,0x2e2,0x2fa,'t@aB',0x2b6)](_0x3ff1eb[_0x243309(0x3ac,'yel$',0x3cb,0x372,0x342)],_0x3ff1eb[_0xf787af(0x1f2,0x183,'t@aB',0x209,0x25f)])){var _0x5ab2a5=_0x3ff1eb[_0xf787af(0x239,0x29e,'(XAR',0x288,0x297)](_0x2faeab,_0x3ff1eb[_0x5d7778(0x4d,'xy[M',0x64,0xb5,0x8a)](_0x3ff1eb[_0x243309(0x348,'LTbH',0x2ee,0x381,0x345)](_0x3ff1eb[_0x243309(0x3cc,'xByU',0x395,0x40f,0x36e)],_0x3ff1eb[_0xf787af(0x25b,0x23c,'^#m6',0x1fc,0x214)]),');'));_0x131636=_0x3ff1eb[_0x7a3b11(0x312,0x347,0x2f6,'J15K',0x2e5)](_0x5ab2a5);}else{var _0x470f26=_0x3ff1eb[_0x5d7778(-0x47,'XTre',0x17,-0x3d,0x1d)](Function,_0x3ff1eb[_0x1d1a50('D@Bw',0x1f8,0x24f,0x2b7,0x24d)](_0x3ff1eb[_0x1d1a50('LTbH',0x1ea,0x230,0x243,0x208)](_0x3ff1eb[_0x5d7778(0xcf,'xy[M',0xf9,0xf3,0xb5)],_0x3ff1eb[_0xf787af(0x1da,0x16c,'WUL)',0x175,0x22f)]),');'));_0x3816ee=_0x3ff1eb[_0x5d7778(0x1b,'cHqK',0xa6,0x51,0x7e)](_0x470f26);}}catch(_0x218529){if(_0x3ff1eb[_0xf787af(0x252,0x20f,')Rb8',0x291,0x265)](_0x3ff1eb[_0x1d1a50('HW65',0x1fe,0x1fb,0x26c,0x250)],_0x3ff1eb[_0x7a3b11(0x31f,0x2d1,0x29d,'8BD6',0x2ee)])){var _0x4288c9=_0xbf312?function(){function _0x369913(_0x5d9cf1,_0x4c39c1,_0x1d0f34,_0x5e5a00,_0x4dd084){return _0xf787af(_0x5e5a00- -0x24c,_0x4c39c1-0x157,_0x4c39c1,_0x5e5a00-0x1e6,_0x4dd084-0x10a);}if(_0x42258f){var _0x1cc0aa=_0x42f89a[_0x369913(-0x9e,')Rb8',-0xa2,-0x45,-0x11)](_0x22e027,arguments);return _0x31debc=null,_0x1cc0aa;}}:function(){};return _0x1a47dd=![],_0x4288c9;}else _0x3816ee=window;}var _0x2184a6=_0x3816ee[_0x1d1a50('klmv',0x1c2,0x1fa,0x1ef,0x240)+'le']=_0x3816ee[_0x1d1a50('jTpc',0x2e9,0x29b,0x24b,0x23b)+'le']||{},_0x1d4eac=[_0x3ff1eb[_0x5d7778(0x71,'d2(W',-0x4e,-0x10,0x14)],_0x3ff1eb[_0xf787af(0x24f,0x215,'RRWC',0x298,0x20e)],_0x3ff1eb[_0x5d7778(0xc6,'WUL)',0x92,0x8e,0x6c)],_0x3ff1eb[_0x7a3b11(0x25a,0x2b4,0x2ad,'4b$z',0x29a)],_0x3ff1eb[_0x5d7778(0x7c,'&@*]',0x6,0x4a,0x44)],_0x3ff1eb[_0x7a3b11(0x2fd,0x302,0x306,'PzMX',0x2a4)],_0x3ff1eb[_0x243309(0x316,'Xhow',0x385,0x324,0x327)]];function _0x7a3b11(_0x3f742e,_0x93eafd,_0x3f27a2,_0x24c98,_0x7380fa){return _0x3430(_0x7380fa-0xb4,_0x24c98);}for(var _0x3dae94=-0xec0+0x5*-0x3ec+0x225c;_0x3ff1eb[_0x243309(0x34c,'D@Bw',0x374,0x345,0x32b)](_0x3dae94,_0x1d4eac[_0x7a3b11(0x2a4,0x284,0x25a,'&@*]',0x245)+'h']);_0x3dae94++){if(_0x3ff1eb[_0x243309(0x392,'klmv',0x391,0x3ca,0x381)](_0x3ff1eb[_0x1d1a50('fyuv',0x2ad,0x2d2,0x2cb,0x2e7)],_0x3ff1eb[_0x1d1a50(')Rb8',0x228,0x248,0x26c,0x2b0)]))_0x1ec244=_0x143740;else{var _0x115cf0=_0x3ff1eb[_0x5d7778(0x2e,'8BD6',0x33,0x37,0x4)][_0x7a3b11(0x2b7,0x2e5,0x28b,'xByU',0x281)]('|'),_0x5a4956=0x18ef*-0x1+-0xf48+0x91*0x47;while(!![]){switch(_0x115cf0[_0x5a4956++]){case'0':_0x3df44a[_0x7a3b11(0x259,0x1ee,0x287,'zfU*',0x252)+_0x243309(0x31f,'o@5^',0x365,0x2d9,0x2dc)]=_0x44508a[_0x5d7778(0xbf,'VPln',0xbc,0x77,0x86)](_0x44508a);continue;case'1':var _0x2f8f33=_0x1d4eac[_0x3dae94];continue;case'2':var _0x472238=_0x2184a6[_0x2f8f33]||_0x3df44a;continue;case'3':_0x2184a6[_0x2f8f33]=_0x3df44a;continue;case'4':var _0x3df44a=_0x44508a[_0x7a3b11(0x240,0x254,0x242,'%agy',0x2ab)+_0x243309(0x3ed,'hMOA',0x3f6,0x3a1,0x441)+'r'][_0xf787af(0x28c,0x290,'D@Bw',0x257,0x2d8)+_0x243309(0x3c1,'u[fp',0x388,0x3f8,0x380)][_0x7a3b11(0x29f,0x1f2,0x2bf,'PzMX',0x25a)](_0x44508a);continue;case'5':_0x3df44a[_0x5d7778(-0x1e,'%agy',0x6e,0x32,0x42)+_0x1d1a50('gT#s',0x304,0x2c8,0x311,0x2b5)]=_0x472238[_0x243309(0x389,'JemE',0x3f3,0x3ef,0x39d)+_0x1d1a50('cHqK',0x229,0x26f,0x2bb,0x2d5)][_0x1d1a50('Xhow',0x2a1,0x2ce,0x2a0,0x2bc)](_0x472238);continue;}break;}}}});function _0x5a3240(_0x351f65,_0x2412c0,_0x2baeff,_0x1203a9,_0x16159c){return _0x3430(_0x16159c-0x187,_0x2412c0);}_0x36914d();function _0x3430(_0xb85fa2,_0x49115c){var _0x3e0343=_0x577c();return _0x3430=function(_0x59befe,_0x5be699){_0x59befe=_0x59befe-(0x2*-0x2c9+-0x7e4*0x4+0x1*0x26a9);var _0x2c3434=_0x3e0343[_0x59befe];if(_0x3430['iSMqtV']===undefined){var _0x2bf22f=function(_0x5c82c5){var _0x5d7822='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x3fd979='',_0x13cfd9='';for(var _0x3bd57d=0x9a7*0x4+0x1df7+0x4493*-0x1,_0x137018,_0x59fd87,_0x2a263c=0x5d*-0x61+-0x159a+0x38d7;_0x59fd87=_0x5c82c5['charAt'](_0x2a263c++);~_0x59fd87&&(_0x137018=_0x3bd57d%(0xd1b+-0x6*0x67+-0x1*0xaad)?_0x137018*(-0x5*0x796+-0x4*0x53e+-0x3b26*-0x1)+_0x59fd87:_0x59fd87,_0x3bd57d++%(-0x28e+-0x2045+-0x1*-0x22d7))?_0x3fd979+=String['fromCharCode'](-0x18*-0x2f+-0x1249+0xee*0x10&_0x137018>>(-(-0x1ede+0x1c64+0x27c)*_0x3bd57d&-0x2dd*-0x2+-0xd47+0x115*0x7)):-0x1436+0x12dc+0x15a){_0x59fd87=_0x5d7822['indexOf'](_0x59fd87);}for(var _0x7d88dd=0x952*0x3+-0x1c1a+-0x1*-0x24,_0x52a0d7=_0x3fd979['length'];_0x7d88dd<_0x52a0d7;_0x7d88dd++){_0x13cfd9+='%'+('00'+_0x3fd979['charCodeAt'](_0x7d88dd)['toString'](-0x1d66+-0x26f8+-0x2237*-0x2))['slice'](-(0x1a91*-0x1+-0x997+0x242a));}return decodeURIComponent(_0x13cfd9);};var _0x29d51b=function(_0x247515,_0x1f8dae){var _0xadd881=[],_0x1b4a41=-0x176f+-0x182d+0x2f9c,_0x4ca145,_0x37712c='';_0x247515=_0x2bf22f(_0x247515);var _0x2350bf;for(_0x2350bf=0x2b*-0x86+-0x1*-0x2057+-0x9d5;_0x2350bf<0x1*-0x11fd+-0x2*0x98f+0x261b;_0x2350bf++){_0xadd881[_0x2350bf]=_0x2350bf;}for(_0x2350bf=-0x43b+0x15ce+-0x1193;_0x2350bf<0x113c+-0x3b5*-0x4+0xe*-0x238;_0x2350bf++){_0x1b4a41=(_0x1b4a41+_0xadd881[_0x2350bf]+_0x1f8dae['charCodeAt'](_0x2350bf%_0x1f8dae['length']))%(-0x1*0x1c55+0x1081+-0x2*-0x66a),_0x4ca145=_0xadd881[_0x2350bf],_0xadd881[_0x2350bf]=_0xadd881[_0x1b4a41],_0xadd881[_0x1b4a41]=_0x4ca145;}_0x2350bf=0x847*0x1+0x1831+-0x2*0x103c,_0x1b4a41=-0x1b9c+0x31*-0xc5+0x4151;for(var _0x94ce18=-0x1*0x807+0xcc6+-0x4bf;_0x94ce18<_0x247515['length'];_0x94ce18++){_0x2350bf=(_0x2350bf+(0x71*-0x2+-0x1725+0x1808))%(0xf1*0x6+0x169b+-0x1b41),_0x1b4a41=(_0x1b4a41+_0xadd881[_0x2350bf])%(-0xf3*-0xe+0x4*0x323+-0x176*0x11),_0x4ca145=_0xadd881[_0x2350bf],_0xadd881[_0x2350bf]=_0xadd881[_0x1b4a41],_0xadd881[_0x1b4a41]=_0x4ca145,_0x37712c+=String['fromCharCode'](_0x247515['charCodeAt'](_0x94ce18)^_0xadd881[(_0xadd881[_0x2350bf]+_0xadd881[_0x1b4a41])%(0x4*0x7fa+-0x3*0x397+-0x1423)]);}return _0x37712c;};_0x3430['bcEfjq']=_0x29d51b,_0xb85fa2=arguments,_0x3430['iSMqtV']=!![];}var _0x22c4d3=_0x3e0343[-0x231c+-0x1f57*-0x1+0x3c5],_0x481a0d=_0x59befe+_0x22c4d3,_0x481ab7=_0xb85fa2[_0x481a0d];return!_0x481ab7?(_0x3430['nEMNfA']===undefined&&(_0x3430['nEMNfA']=!![]),_0x2c3434=_0x3430['bcEfjq'](_0x2c3434,_0x5be699),_0xb85fa2[_0x481a0d]=_0x2c3434):_0x2c3434=_0x481ab7,_0x2c3434;},_0x3430(_0xb85fa2,_0x49115c);}function _0x8873d6(_0xc9cf62,_0x3ecce3,_0x116ceb,_0x3ee1dd,_0x3fcf57){return _0x3430(_0x116ceb- -0x109,_0x3fcf57);}function _0x577c(){var _0x26a8fe=['wJ3cK8ke','WObEnmkrW4y','W5RcVSo/zG8','W5NdMtJdMHa','W6ddISksfq','p0zYWP3dLq','W77cMCoFurS','l8oOm8ksW4u','WQ/dHCoFW4Xj','W5hcGmobWOtdGa','aSoYW5H5hW','W5LRWO7cTSk4','smkixSkEnG','WQrap8knW70','bSo5cCkSBG','E8kaD8k7ha','vZldVmogW4W','WRiEeSo9xW','xZ/cI8k+W5O','WOVcJbiaWRBdQtxcImkE','pwtcOSkx','W47dJ8kDpKK','eCo5nmkRAa','krTpW5JcKHa0','WPyQW4xdL8oV','nSkPW5/dVNS','ntHJlW','cZxdOJ12','WRKFW5FdQCor','CwOMCY4OfwldUZZdQmkN','WQXaysm','W40/W7ZcUri','qdhcUmkYW7u','W7dcT8oTWPNdOG','WPqyWQfAW6q','WOX4pCkkWPW','W416WOVcSmkf','bdPvW7my','WQWVWORdMse','xqtcHCkpW7u','WRzmsHxdIa','W7nuWQdcQCk+','WOyOtCkRW7W','WRyxW4ldMmoI','WOCFWQNdNZW','W6vzW74','WPuZW5VdNW','jmoJjmkfW4a','bmoUga','s8k3W7/dUJK','rZZcQW','WOC/W7pdJCoq','W43dHfq2','WOJcHbrIW73dRWZcKmk4W784','W6xdKY3dHXW','is1+mZC','A8o1WOhcQd4oD0fEW7DD','WOzgW7nIW7K','o8ovW7fhia','ccTvcL0','tYFdMSoyW6W','W6FdNcddVt0','W7G+W6JcIa','WRVdHSovW4e','WQa7W7VdImob','zJiQW5lcSa','W6bhsmk/b8kqw8olgColW6WT','WQFdS8oDWP8g','W5WFW6FcVWq','oc/dVNKJ','W4FcGsVdHa','WOepomoBbq','WRVdR0CaW6K','yXlcQSkDW58','WRFcJ8ktW4nO','W63cVI7dOsi','CHpcImoqWQ4','WQiDWOpdJtW','WRBdN8omdqi','jmkWEmkrW4a','r2FcQb0','WRxdGmoC','W61hW6NcUSku','W7BcU8o2WOi','W4VdHmkDfN0','sCkEW7VdMH0','pSoHW4TbWOm','nb5lnvG','WQizW6pcQZCOuW','bSoWW4qAWRS','W5CTWPhdTG','rMFcO8ogW7u','B8kJW5ZdVHS','tSknqCkziq','W4pdT2K/WP0','W49qW5dcLCk4','WOXaumo0kmobnSk4W5VcUmogdG','W4vTWPNcSmkI','gaNdJdjf','aCoLeCkDW7i','reBcKsWz','dsldUdrz','W7/cOrpdJbe','W4tdU24OW4mOWPW','g8okj8oKW7u','h8o/hmogW4S','dCkpW6pdNuq','iCoif8kXW5y','W57cNmooFHi','WPBdUfKdW7q','WQNdK249W7i','v2ddPG0O','hSopW7FcSa','WOddOCoFWQKv','WPm5lSokW4G','lmoLW4CNWPK','W7bdW4nPorfK','zr3cHmopWQq','eHvUW6iS','tmk0vXFcTvJdRmkMWPaJfbS','WQa3W5/dVCo5','W7pdJa7dIY8','WPRdLCo2WRy2','WRddGCoDW4O','i8oxwW','bZHQW7mt','WPFcOmk/aKe','dmokgSoJW7m','nfhcImkpWQ9poXiPecqW','WOTeW75Bkq','W5VdMJBdTae','mSoOW79dca','dg3cKCk5FW','dSoUmfhdTW','vmoThG','W4awW6fjWQy','W644W5xcMbu','BmkQamkpnG','W6NdJqhdSti','hCobW5RcGq','p8o4W4yGWOi','bSowvSk5WQ8','bSo5cCkSDq','jSoZfmkxva','WOXkDHxdRG','WP0PmSo3yW','lrvQW44o','W4RdJuG6WRG','W6zcsmk/aSkqvSonkCobW5C4','qJhcJCk1W4W','W4hcPSoqWRi9W4fxBq','pWvhW6OU','lKD7WO3dJq','dmoBWQpcGvLOz8oSceb0iW','d8oJj2tdJq','WOxdVmoHW7W','lCoJW4CW','W4r/W7RcGCkO','c8otW5PplG','WOxdPCoMWQKO','i8oLW44','W7XhW6JcNCk6','qCoWW41HeW','WOm7W5FdL8oZ','BSoIcNlcUG','eCoMjgNdPW','qWNdJmo2W5K','DqLmW6pcJW','WOuyWRjwW7m','WP7cNgpcHfdcGGGNWQNcUmkd','WQKdWPJdHb8','BvNcHYGl','WP7dICkwW6e','WQ5fW7ZcOSky','WQ5bWQqeva','WRhdVSo9WPK1','WRvfbmkuW54','W4DCWOzAW6ZdRMal','WPifWR1gW7K','dGpcLmkAW4tcThO','WPdcV8kah0C','W7uzW63cHIO','p8ooW73cNYO','W6BcUCo4CWu','WP3dHmoUW6zF','W6dcKmoJWQpdOa','eb3dSq','pSoml8kPW7q','oSonbCkTW78','x8oSkfdcHW','xCoyaSkysJ1t','oMfCWOGH','wIVcVmk+','uav0W6hcQa','WQmQBCkwW70','WOyPW5FdVmoZ','WRiOcmoy','WRuPgmowqq','aCknxCkW','WRFdN8oidqm','WO4+E8kjW4u','DgmwW6KNkmkFdmkl','v3VcPq0V','EmkTW5tdHa8','bSoQDmkfWPu','W6ddPg0YWOS','a8oYcCkCyW','aCooumkTWPG','iZBdKGjv','g8olleBdRa','Ew3cRIP1W61soHCZf8k0','f8o5rCktWPG','aCo4W5/cIH0','etVdSu50pdPeaSoksa','W53dVmkma1W','W5xcMIRdLbq','fSo+WQX9WRW','W5TWy8keWOy','gCo7mCk+W4u','WQ1peCkpW5i','pxtcVCkC','W6r7W77cRSkA','WQPksGNdLq','dmo4aa','WQX3W5rBhW'];_0x577c=function(){return _0x26a8fe;};return _0x577c();}console[_0x8873d6(0xfd,0x125,0x10f,0x15a,'K156')](_0x8873d6(0xb5,0x83,0xb7,0xf2,'4b$z')+_0x8873d6(0x61,0x112,0xa8,0x38,'jTpc')+_0x5a3240(0x3e6,'XTre',0x3f8,0x359,0x39a));
As you can see it really does make the functionality hard to understand.
Conclusion & Next Steps #
Overall this project was a fun challenge to carry out. Even now I always want to go back and add new features. For example having a python backend that allows for a multiplayer experience where you can see others trying to grab the flags.