From 14b1288aaa167035203cfaf779ce3d315eb14730 Mon Sep 17 00:00:00 2001 From: DavidAlexanderKelly <72560815+DavidAlexanderKelly@users.noreply.github.com> Date: Mon, 23 Nov 2020 16:24:51 +0000 Subject: [PATCH] Add files via upload --- .../game/Entities/Behaviors/Node.class | Bin 0 -> 730 bytes .../game/Entities/Behaviors/Pathfinding.class | Bin 0 -> 4556 bytes .../game/Entities/Enemy$State.class | Bin 0 -> 1216 bytes .../game/Entities/Enemy.class | Bin 7805 -> 8504 bytes .../game/Entities/Player$State.class | Bin 0 -> 1224 bytes .../game/Entities/Player.class | Bin 5335 -> 5831 bytes .../TileObjects/InteractiveTileObject.class | Bin 0 -> 3148 bytes .../game/Entities/TileObjects/Task.class | Bin 0 -> 1510 bytes .../Entities/TileObjects/Teleporter.class | Bin 0 -> 2179 bytes .../davidalexanderkelly/game/Scenes/Hud.class | Bin 724 -> 2524 bytes .../game/Screens/PlayScreen.class | Bin 8167 -> 8264 bytes .../game/SpaceGamePrototype.class | Bin 1039 -> 1182 bytes .../game/Tools/BinarySearch.class | Bin 0 -> 1986 bytes .../game/Tools/Box2DWorldCreator.class | Bin 3207 -> 5044 bytes .../game/Tools/EnemyUpdater.class | Bin 0 -> 686 bytes .../game/Tools/PathfindingWorldCreator.class | Bin 0 -> 4300 bytes .../game/Tools/QuickSort.class | Bin 0 -> 1907 bytes .../game/Tools/WorldContactListener.class | Bin 0 -> 2250 bytes .../game/Entities/Behaviors/Node.java | 54 +- .../game/Entities/Behaviors/Pathfinding.java | 206 +- .../game/Entities/Enemy.java | 35 +- .../game/Entities/Player.java | 19 +- .../TileObjects/InteractiveTileObject.java | 59 + .../game/Entities/TileObjects/Task.java | 32 + .../game/Entities/TileObjects/Teleporter.java | 42 + .../davidalexanderkelly/game/Scenes/Hud.java | 26 + .../game/Screens/PlayScreen.java | 64 +- .../game/SpaceGamePrototype.java | 11 +- .../game/Tools/BinarySearch.java | 126 +- .../game/Tools/Box2DWorldCreator.java | 92 +- .../game/Tools/EnemyUpdater.java | 37 +- .../game/Tools/PathfindingWorldCreator.java | 84 + .../game/Tools/QuickSort.java | 120 +- .../game/Tools/WorldContactListener.java | 47 + .../desktop/assets/Maps/Background.tsx | 8 +- .../desktop/assets/Maps/SpaceStation.tmx | 4635 +++++++++-------- 36 files changed, 3029 insertions(+), 2668 deletions(-) create mode 100644 SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Entities/Behaviors/Node.class create mode 100644 SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Entities/Behaviors/Pathfinding.class create mode 100644 SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Entities/Enemy$State.class create mode 100644 SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Entities/Player$State.class create mode 100644 SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Entities/TileObjects/InteractiveTileObject.class create mode 100644 SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Entities/TileObjects/Task.class create mode 100644 SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Entities/TileObjects/Teleporter.class create mode 100644 SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Tools/BinarySearch.class create mode 100644 SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Tools/EnemyUpdater.class create mode 100644 SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Tools/PathfindingWorldCreator.class create mode 100644 SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Tools/QuickSort.class create mode 100644 SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Tools/WorldContactListener.class create mode 100644 SpaceGameFolder/core/src/com/davidalexanderkelly/game/Entities/TileObjects/InteractiveTileObject.java create mode 100644 SpaceGameFolder/core/src/com/davidalexanderkelly/game/Entities/TileObjects/Task.java create mode 100644 SpaceGameFolder/core/src/com/davidalexanderkelly/game/Entities/TileObjects/Teleporter.java create mode 100644 SpaceGameFolder/core/src/com/davidalexanderkelly/game/Tools/PathfindingWorldCreator.java create mode 100644 SpaceGameFolder/core/src/com/davidalexanderkelly/game/Tools/WorldContactListener.java diff --git a/SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Entities/Behaviors/Node.class b/SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Entities/Behaviors/Node.class new file mode 100644 index 0000000000000000000000000000000000000000..28a1d25f04247ac0f775a148cd40e5527992d139 GIT binary patch literal 730 zcmb7B%Wl&^6g`t?W1OUd-<@D#%~Y682VUCKzEm`El1Or?>|KIkO*BxAMI z@?~0>!suMS&qqKD$wZ~Gd=(t&un_2;+AN7)+ngku3hd0BdZ41j z#wL_;bS9UoSjaiiHhZ!s(2NgkPNtaBUsQhUqsny3x}t;e zT%d8lkv!C~?!(7*f%<4X??7O~M-wf9{>-HM@OT;M?5zqCEijnbP$hGf85ggTjbdSP z{!6TjcYpuGa5TQ64^IESnx4g{uJ~OaZLB%(zK;&p1iUx)I1BaExDGmQ50BjnFeIkV zl{Qdw{n8VTT3QlI>){%0oi9GRynBqM#MfxO$q)1=kG^B@l~E0wynCf$mzq5m@8bq@ zTNRqtX^~e}_QZZK+S|PV_mN#92 zgMI6sHt0CTH3tkkZZY5Enuh1NX@ST=%eK5j0#z-oLjp>VlQ-k2LbV1Jae>W!mTeA9 zPmY@IpfOrB1?u{ooKYMyTuXkJnTj`Vl>{DN-&3fSp5wql3$ z@jfYW=X&dql-Q|Z7n-Q9WO`Y8P519<>Fq7+`;<|>&IdI#<00l~Oj z9n%*!XpJ~r3CJ(!= zG1q66Jf>I8S_Rwird_)J@&C6s|Do(Y1L=M)4y9EH?9mWKOj7$agb|72F@Y^UM%TtH zj!slZ(Irq@S$)bVjb}|SjsvKc0%;8g@iZjrLpDQK!WA>DU6hT3UT*j~e-+Q?PQ$ zLVh;sSI`h!rsM8qtcNiY#d88Xq)T@d)NouHDQ4qL$u~6AVT;`QyoM7#e@^lZ4Wq~j zBwW*TS-n9~zWjy4__GTu4imgM#spI9W^Uc0)i4fApqgPc+%0hrjfp2U04!+Ce()}ZBR)#Ixv$H|xH`Z}mGqMn-rGYPL z_#V!(8m0`_wCUgejj5CoJg4FNI4=+#H%bG3uy`FEXQt_;>s880D>z26@~QgEvT1Rv zY3Iw7GiBOrKI|W>GPb72=Za3r%=_pR7H@$>ZrYVz1sVlG7iURLyLM1fs=W+9 zUbeP*x}WV}lHxK|gU$*z<(;`^5Sg1=9!C0C9lK)Mh8woP)2sBA-S`~ZsC0}aZMq`mPNq~{z1ktk{30e&@dem={Ey(2Al+4Y z9v$^AA+msD()iP~PqNO8b|o4Tx=IdRucm!uzHk|j>S_byd0OWQspI8V9P`9ID@4qXz)=TI$SQ--mmet@$Q+N6F+D&$kLMye1KZ{kPf zDM(PqE2P5E#aX-YEI#T`-l=~MR3@x$#){|Yna)h6t!Zf@cH| zaiEpy?hN!Vr<=V+CX_KIB@-H=hMo8&6IDe$JNz^%etKlT3)bejCR3pybQ_zZVA#8> zxypHoPuT(gLWoE|vb!r4%+9x5*khT1?^kcY_sOv?rMW?22BlekP;Hf8Mce!%PB3vNv4_FzVmLF%uW~cH;%1h$6S$ehuYETgiOt^-XI0$W Ygx``b``bByZ9G-6#8B)G2ZbJ=m_2TZ&)n__=cBN! zX`#;tqENM6(>2A2I$|(Q87_B)iU7mP5ufma#qB;#jRy>Y+RJ*CVY_~5z7m7_rrBuJ z8v6{()kgCm)p}8HRt<({?-rs9m%El}o9-@ylFqb9+}^M!!U$?$Sk)25RfbS`wj`de z&&?RFW7_>vEz^q7+G{$32!)}_BCbP4NcL{%2qQvNb<-A&@t`A|x4dHshFE>rPt5^|X!$$S^$jbM9GuG%ERoTx>Eo zC1XX=(2U{O>55mTJYLOsiNSocQcC`Ek6T_hz^i<-@Co?_$QAl)NS zu_;B8z?--=gYS?536CEm(SEID&)a3G_S3>uKnSRBTIs$KrP0y dXL$4z?Eg3gS&uV^Ew6oyyhIY7p@3o~`3GCBBo+Vw literal 0 HcmV?d00001 diff --git a/SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Entities/Enemy.class b/SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Entities/Enemy.class index 0a1fe32cee3572f584a98f6769a880c71fbbf53e..46ef36f913d5f305b38ed5e08ea7db608397d4b2 100644 GIT binary patch literal 8504 zcmbVS3tUv!ng4$blWD{ZrZfFrAgaVjf@Z4#5R3xcemYb)9r4z-S@M*+wOMXYq#$IyLWgDAZYP7 zbI(1G?|hH{_c&+#<}a?i3ShlFZXiprIu!4#30ub_VJm8%uwr4`Ic7(rgEc)?pIx&v zmW(7Lc7hGNZ_t2GP_7HQtZ+2m6A9JygiqA;I97jeB$TM>Sr@Kp?RO$cTVRF;9LJ6& zTa%W)u5Y@9eahWMwSqbQj(t25A4sIB$O(Z2`56@W`=i#N?KFm?Bwy*0zcE+aW05{9 z8HvY8G`}^{6SI;74%a8f=Ork{oWHuHQ4j>_8pgvn3w3T}$Nl#gDsu=dfW@Rri*+b~Ls% z?0&dydwtVR1$6l|gv-?f%14D^gC5`^Q;>D2k!ITxiA9oif(I*RQ=_N*nbkIpb%Vjm zcB-p^lK8O-6$aiUsF~4|rcyCciGU!l$4+ifMy-TkO~q{fl7_Q8zcvq5M2)TTtGD^F z25Sw}2m&*Qf{8>-+=X>?1jUf&B!Z?2&(KjT)>G4(bZDd6TVbr+WiRb=eq>{Vi89t1X(u#KKNqY*|y zc12~of&0=i{l>vCLwY|MXf@G>`)M6QBt6K`Fe6CP(`xwT~`ngG zvVG9RAv{R7tuTFZ!9+0Z>pE(OlC>(%VZocGC?La_W3k;=$GqmpL$H*gE{fA8yz*LsHP4uWHb3#$ua&#f_E=k1d;u^dH$c}-m3GSJs$J8f2%rmv!=c*u&jTTVpZ z)1AI#Z-f-8XO0?~P-FDW?RFTqxNzCbvNQEW_+cC?$=rRgf0Tpf87bU)N}R(q9y-=+ z^}7-pc*k_r#575ZLJjnX-8#ZoL1n74pEU6+_*E*H%GT^cqg5!f)M)QAu@H;=cn{uZ z;Jt#CQvj5?i6%J{@5j@$E?r=MJi($T&V0OLIv-#m(Oc6_e8!!1wfT4kwFW*QxP8hd z6DKOmA2jhHeAtV`9g(o|OqUHRiLE+*+Qb1;1h9d3=oQskCG4 z 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 p`qPYN{o(&3x9LJTEJyfUjY4?Pl;0we!Q+lO{^ z?D*`Da{M-8$%B0;dC2D5{m$8QvS)w&{&oW3AvRSkFl=@P{d|{?jV?FEXKre;TU3=e{J%Ku#>vO9ihUBC48UiTbGD7WP}-HU&ehHt2A( z$!$Z{?qnDWmPms0!5Gr6V{VQFeLPL2=W-Xu4ct<3lOgI+JsCQpui-Y53?XjYe9{?w znlNO%-uBx2qT>{+9=rdh$S)m(t8MQ+!%Hu0`b*ODoP{)>(r^c9I!!O>w#kRXqDRT; zE;Cm$T9l5kJ{Z{@v17;|9Qm8Yoa`d2y3w<^GqP!A$3rHOrFryj(SBOhvV`pl6hjpc z7_#R{HG|*1DCGhrMWM^4loK*V0F4wNAi65!Ln}TS!-!CyMpd0^`Q*NXwPF{PBP<>w z<`$QIZn5nDK}*U3VtUJWfMxvz zy@`kas%I|>eI<%Y4;Hj|DM(Q~Xnnt5_5Ey}Z3Vr|%*V`p-^a}Dit7pe#?+-@04u1Z zUq3DMg66h%$FvAb4HK5}iCVhDCwqwEa zgun-ECIoEL*>0Owt>GAIRoB&1F5zc^FDPP_HoM;Jv@@366g;0I6xcI}8;;p-W;2$f z){Fu=y4Wrec{nj&gJpEu%^9nMHmrzhR{J*Iw9$_*)Ko;9*{ z#d+@OKI1ThXv{N4mf|atZr(9H1)a4HW(_~1pJ&Vr$QBfiBwe$hV0*1-bu7aaleWE7 zP6$Uqf1t1|N|S+@r%%{MA>2!4H-KxIz?cf-4?&`^I%CcI`J7PD-6*!vP*Qq0WI2|9 zM8Snn=}F?N^%B6l6jOYfaE-X8h@lzlG_1vQtW9@(x)lo6YgmQVa<@^#N<1CIW^7fl zMS=cEI@JQDp%c$5Xh{n{AOHdAj@JfPU7nCC()~6KQLK>ecWBs&Zh}Hf%wickL6Q$~ zNZLtgP|>2ISHbQYo(4)`HN7P|RiKKY2fH-r*sVaL_X^<@bk)n{Ay!KFdo;8nrs4$> zzs7xa?vk3v#Y~JBc%6#<3gQhE%6tiQ2BglQf}RFC6RurIyUt|B$g=(iv91+|@uCWH zEhz9Ku5mfOZE~F|WQB&KIHn*r=^MV4lBbK;=?RPswKCli4acRah)=WfU{u3NoFaL$ zuE#Fr@}h33rA`3%G@F2%+cOlyX^g9QiIO!CRM$nr8Jwjv7W7g;{86bpq2XnD9PrgL z{Y+%|A3**xrQyP&!ex1IQNty9&`JxZgq6`l7y>Qb(4 zTPA_%Z!oqh*~+;pazkt=68uhR*Vlcc?UK(kraR_1A~#|io+p@YizI+-)sar}wwZ53 zzUAatP1uJiKuyX1LE8hXZO0sipriHb5hM&&@%0$`9{lq=ACwhzMNc0r3 zA<I&ro*!mE?-RWq^qxlH;WJ*(TYk%gQDD*knV_dM2om4yh{$2JUNJ4W~jIgM_-jRbC?7r&wp zzhM{dVK?S!=SYC+eH17m|L)7z6VZ}8iDVNk-Nrk3mq-rceZ0s22(9MXB5xqdC-w*U zkkSf1!p9-XxI!&iwe|(vBv!Z1^lm8PHuK2$mhkyf4sEmq>|;F#=yg9UbRdXnYp7j` ksU6?q4sEwEvhVOctvBHZYBu3V{KPfJ-wt#9{(Q9Ke_Tg=V*mgE literal 0 HcmV?d00001 diff --git a/SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Entities/TileObjects/Task.class b/SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Entities/TileObjects/Task.class new file mode 100644 index 0000000000000000000000000000000000000000..ab4eb2f0d768cb525c559a390acc063c148b293b GIT binary patch literal 1510 zcmcIk>rN9v6#fPZy|8L2H$ko{*cN035s@NZ&>9mIl0uC?r`xd%YfPyeeEdWaZAZV(Sl@PHCkC(b%yRW z=}5KC@GiO8HbBnugm8Rw+vfF#oe3NYylA^6X_=*B%`EeZZ@%G`2Kh`jo60kUHr%3! zp%aFI2(B>f{)bShd=w1V48+mP5dI)*s_F@bMyN9+D|>ZcTE1CuYl}rQ+qjvDp$`LL z^fS!pI$Z8yU=TwLJ-$%8zVKdf#Tf>YoBRBbn>Ke!X0r;Ze2l0K8yLY2hF-eA!Idbv zUOg*qY7kW@nQQPLGth-@oymlOFuEzDP3efY)p9|2JG@|1Mu|<=;&z^UQlFcDhSZ+) z8CKf&@UH^PkP!T!!3+!SF)q*nIlF;c8Ky4P1U1KUZCe&8m4!=$aLQMUPIwtzq*>ez zV~!!-s&lUHD^WHu50jzOtt#q6qYctEw>{~oobm)OXChc&=-4`l(Lg>3V~L?JKskHO zz%m{Z&5HK4opVhkDCv}l3T0ghXfe#UFWLDtNHis(wq2j5-6i~~Wa^@_sXa4Kp8(fe z%!KinVeAiGmU-(=3~P9z2ka?BSF$mAv7B4=EI~4(Vn_9tWM1csDH2#GeU>`tM|uk^ zQX4%x=}iP$fH69Kq;nTNC)2ZYC+JCk#ntpN66tv47}wL&M;J{Hg^n=(IY5}CeI!7M z)831#NT8plYMAy33{X^Hsey-^xJ4&I#%)YfG;Ph`4)M{J=A`*e>KQ@e{0n aqEH<~07QV%J{BMvfgNumG9sgIJ^u}cTZ1J4 literal 0 HcmV?d00001 diff --git a/SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Entities/TileObjects/Teleporter.class b/SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Entities/TileObjects/Teleporter.class new file mode 100644 index 0000000000000000000000000000000000000000..f24a00e0bed6588af8c98a4dbf907ec01549df01 GIT binary patch literal 2179 zcmcIlT~ixX7=8{3EF=pBT1ssRlxo`~L{=zP+aTIPQ_;|(K(Jb8JS4}kbjfCR7bM=< z(Ldm&ciz}rooVS*XB@BnPkuaSm-4B>UO35~J?Fe1=Y8JyIq&}d=g+?axPng&vga)RwGOl=nb6PQ$9ob!FYE1$JO7-&(XCb$4Y=l>^R|qw1~~D9=D#;P#7q zn61%RmIHfJ?Ku_@TYL(98Uk&TcFhi^1eVjqrUxvPJ*8^CHSfqqG|z_yE3)FaRl96e zD_hpOtozoStVa;?g+itz5TAA{DuEbG6Yb~}So$B1%9J`FaKc14dIXHm?X6(LQv%UZ z2ZF4xHhjD6TPyC?c*QD2n)w7yqR+r7flE3M$6J^-g49a%N`P^_VV2n&Z9Y8W^ugQK zs6W4P^M`CE|6>Syjd*{D&rdO^&V@jhAFzFfmpZ{reylqtQ<7M4H@vc9zaaJ#dqf%4 z9KbN^8soR7g+I2BaK`4rcZ`yD=zfym>Km?G`5wxSEYOmF80ThIE6Fl!ysGVFy#}GJ6yoaT+y+EqgB6-iB#?xiUQyN^{qx7$9awym@l z?I4Pj23&nblp1|DihLLSL(Jm?;!5HRe24|2@1*`BmWaMYeREf~OxZ`_PW%sa8@ML& zms=?1&5ZJb>tUXN?q4u{kBJ%JGx!wuexy}P7-btZ!5r&Iv}fw>L?ZA>sCEBuP(49d literal 0 HcmV?d00001 diff --git a/SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Scenes/Hud.class b/SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Scenes/Hud.class index d638b6ce2cbb899e01592438595474443f54cb86..e92cf3f7512bf8febf42cd7c447a5e5083c67556 100644 GIT binary patch literal 2524 zcma)8i&EQ06g_J@$S6ue9GWH#1@a)+h9C-Q+SKWT7(389Kx1lR(%0HrY!M+jl1!jK z(O>8K>DI9g7sY!@23~cgkt{U8|smqm3QFSHsG2HY_RJdkXHNC3V zv>mnS>V~7v>rTURc*PJ5=Ny;UXdN$vgq^^LzszWA(G$!t#J6?vx?$NaLprP!csLMI zOC4F#>#GZHxOIjrg`;Q}O;^-}O~>bh;{vY;qo?JraGJX6%aZD)Ky}TswT^n9 zuNbD1;Sg&!Z`Adwqt?8v8n*6=$K0*fGpQ0oENf{(Mihez2JitxG?^;N_z>46Tw}N# z3SGfRxWOQ8bE7GiHyExa7gIel><7cg3eH23FhYTa;O;^$x8n*^JHRhCe;<%=i(xXP zc$m+!?bfZ%Tb5X2a~U@=C}S97UN(2B%*lNI6hs0o0>Xs@O`qos6K87}-(75O6!3i373kQctQ%Zg z4cab$_NeJ@FX*ONYHn48?Kd++qF`0IQR24lHFsw-=GJwGA+UUgsYz2K;t&`UVE|9i z==gXbuDZd{>@oMk82XWsA4&7aEnPz?G!;1BP?3vP)2<4-MF`K z!5v3XI`UB~(nU_}p#M4gkx|6yTOs0I(Edteg;sbZ^H-u3tr3zOz-4+S05(KAQQCc* zZsSUNKzom?dl*XZW4N3cO^oj2X1R^qZQR+zIPIp&>30~PXk%gzQ~Q{v! z##;D{Br@g1m$APPEk{XmsQ4aV?;}^<#}g7=e2Z_}SZSlUhf*N>y!Yw)Bx$d=@M824~+dfiMnE)v~pp}tSoC29@!9DUXlO!-n_}}yGDuGh8+vs$gR zBgy){oqOlbJ?EZ#9{)M_>XlzU{{nz@@{oZFK{%4?4@a$|@u-!s2d!k(&K$85iJ@@J z>bJvPk&JC8v*FH!HRSaT1O#($w~kujgq4hi_x9dyM;rrHf=iTDuN6(CV(~~g79A{* z3j)eau(o6R#nM*9-pQGrnUs@qhSGMkpt9F;B7K5YF6{*Fv5b}Oi$}8ISW`6ImCnQ+ zdz(&HD$7Y&S;6WVsP@}~&OpZAs z;qF35chol!9TRdIE4u>k8ih+_}0GKMAfX zm#&mV2}z_o%Gl~`y3Dp|X~yPd!=7eRNh`6xz-M292l-VVOJx$=tB(NbzM-u8NpEV9 z_Bf#PNH8ywN+jahcq%!@MX;`1l8MCI$YT3;yLTWqMnp~qqr`Gj+{p%)eo95}Po-!l zmxn7wt4Bu`!L;S{9geF;1e-2|OJ{)~o{UZ6Rb^$fwnOjtVrB+uwz`ukLRFeUuFHGQ zIVIVSq!V}IbZ`X)JEN4F;>ozvB3NHHz2sfx5nkWTP-;y@?I31hjfr|R(v|A!yA51J z2P}h>Vwh;qmxk|bGzpe^TQ8tNw$O6bBaJR11QEu1UF2FpZC%GWjCDB~Dzdr0yBdP) zOw_>C-g`|Lm~DWYTs^fY1_OpU~$0#h%st? zCX_D6av0-{PXC}195itY-cO%Xj1z41bAoa$mr5`OVQStFn79n@F>sq;%XDI22!;hV zt^6LjDp&s`Hyv|O6Dbhz=frHs1)u}*sKZ3f*lkm8853Fke$m+XU3NUy=L9i; zV+M{2miQ=aTp|;L7$P?!ncxb#ew$CG?I#8nw-9LQc=emQ{X0#32zSxM$5Sb8NZJhC zLmp+zO+P_Fv!AnwNfI`RN(2Va{NrEF?G=o#xl6H9Qp zfnOzPs$f&1?Gz~^h==g&y5`3&0CmfXxB||7!o+f{Fz_kH!3790MaBu@lXzG~`3wsU z-|dfA3}dn5DdBS_R^ke!KV{|^;Fk5*-4&t;23y+ytie(0V zlX8`DnUF_HipL-x_o#`5UnmgHU>q-l264tC{B09g;wpXpqGC;BHG5B+_!54Pl|sLj zv|^fMeae&qbh+$yd-E8V&*1kBJnQGbKJ!hCs2b<6l89&fv@~N@GmtN&feDE0U#13; z^R{u;#KoAa>z_062lzwAA|si}(FZY05@{1=a-$%uDC;7)RQ(ZoymBUU?BG`i1@ z5t&$}gnfKwf^|x>JU!RIR|?s9O1n%dQG$3GUsVtNn&6<%YCb^F?BeB=3zVOW3L*6; zCay-Efmf)g3kWH%a!Vy0E8=v-v&{c?CWvofjbh3-O?(S~CI~SoS|`q7r8?t2CXrA; z!Nnc%q`haLzt_&}w|WyilZ71T}p;N+#^~ zWO{%;6R2}@)c5fN1Ai@8P!^3lqk|^?27gOPje8`QmM1KiS#u5k9&BtR(5@?g> z@)ICp!e?f#z>6x#3lu~JeAmSPxdO7VdK2eOf#$?{3gMGBTphI&j29l6l3TKf?fd_1X$*yV>I z7kOsK`&o@rCxSK8W9!7t=<(94p4H^@s_}h!uPGaa;}x-lU|D(S7Dd_F(R2;fzgccD zgs0QX%c6F|OjEYVR^mo1(VAemwx$w#qBpekBzh^ER#Udi4vrP3c&I`byH$3YvO!b* zMrk+YM&T)HHdpIq91we^D!zAHJarDPC$OBB-DDtp1iO56I}u#moH13fjjhD{E2}z-Wuv^!)wOZOF|;#xkAx5twp7c=)QOH+jcUE!llAuBh+A zVYQkV&~C^rG-KI1ljgE6lS8I_KyGC?(i3?{s27hcA-pXMR`_Vn1+a0Q=)NpddbLIh zL^IYgVAJVv%o`TBHC)`lU#*fp|m31EYC1iksEJV4=W8V2p+BvPyJ&SQL zZ4GE{V2EW06rBTo@hBT38qYFZ?V#Kx_ZV`wU-{`Hw<&jem~oE+G9Rb)u~Q#8eLOBa zi0RJU3s=1;@X^Nv4Ns{3h}&JMflS11<2i!G%=oQzqarJo^F%(2ze?V@ROrPG@44xf z2(qovD;@WJ4lZ)vS>3uV?`PbW7bb4YdkDAXm4e&yfbX_ET)QpLZEnl61zTowtZ-W% zW!!NV|8C1VknJ4Ks7C{zt2p`Fl&XSlOT#EuH=IMbC$x4H>vGu8uqub^IkK^56q|C` z%F0#qJzB`MQsj_vdhP11H@aI*>Y=c|mcz%{|D?-!6raxFvn2d%9w#|^nqoYX!=vmz&hBsJ@C3VO*nKjGr#SDaJbp); z5&Ui*U*@+Qzm4Yb90&EMA3|$G;XIyy34Ff5DKG0%!(950bNIS;&*2-S`qMmKea6-A zpYwT`*Dt_k1b9z24_j!tZM4UBtVbJK(T+X5)Vc*X@j7A;9>iXJiZ?({p^K-aZhQp? z@CpvHhB$=RcsHv4~DvMY_nd_}<+4XYqFx*sR?JZns6d3*GL9 zfc9&>e&ynm*hJlYeFXoM$B#zv)6lK9KY{<#nFvc*dt!=eJqB4EmHV`o}=JA zsREpPqG4rTs=2q}`BF2tsxmL8Zj^&_*?v4Pp}Z{I^CUuR&dOrJOR{43YJR+euU86A zoqvn73aH?EkJQt4Ia%#9{L`GQ(c!!_vT@-gFV~E#v5^V{9;OF>j!=4%aCr(%ywACg z?G`-3Fng3C^cXA4GgRsqTy-s@8n}rub>T!oT}@QQdbyVWnN)>@P;s6p8c>D6kR>2= zi)Wr0^U^gUJ$ZS5@%^^KguF!9Qw-ASc{$A9xPmV&QE+ied`!)+7l&>iSJ*~3 z1AURgKTQw(67$M4SV>H}7I}1Fl-TqfvFI$7_B_4r96rJJ6kfm+c(FuzXNt-@BmJ(g z-A8Ymq`W&zmA8P(OG>KXNny5%Rh1O+(3jb%aD&3btCvggsHhShP4Vj_Sr+KBy>*SDCfHRkGJ$aj!u+D#u*8gEGio1@|;GGyZ<3 zL?kKh=lINoKky~IV`jqFd`b3 U2{uf&<2xn9<4!QFwvq?`ALjlj*8l(j literal 8167 zcma)B3wT`BasEeM=~}BRuw`UkGWY>llEI7RS3pMCk|kRp*{WsBmU&+7Ua!_#?QV9j zY>7aV<^`lp8ka(NhsF&gO-X=iS2a#aNYkd!kcL2jhBkerq-oPf(pP8_=s)+aR=e6O z$$ZwH$2~J=&YYQlW)3gD^Xzi~Hp(3aDg>c$ax@gNj>RHY+#a_Q5j#C%$Kw;Bs5NSb z`on44PGmxTacjcs8wd!N9JP*Fp}3WZhV~8}wZo2qD#5wRYRHPjlhIf>6pf7M$pryr zCfLw3|7IyGZ13XAzI4(_Iuj|oRZux(IpJZ!I+wPDdo*pOhGXGODB2PU^{3J?$8Oif zN@Y25DxHFcvcj#)8EsBjs1#9LZ$`f#HATtt62%5?lXTo;E&V<~Cl8wbe z{amUf-8*|a1=203?MNmvj+Jl*toWF{h!+BZvG2g1J>7eD=}o!TRz|3WwjD zc7~JrQ3naq7I#{#qBWNzC9dlywOz2q5KAz%|&_KSU3K$-XOrL2Uqj1l+dn`hV z>QO5dPg*n^->vvH6XJGuB(#5Yyw^(gxNCJQeiB?(E?qH+5|T(yl(yA2b({8iX{Og@ zLY`)l2`j!o&u3qr2l-VVPp0EMtB(Mw;faiz)lhPr*LP6Ykzi>!8IQ*@v1DSJi(q59 zB&EddWU+InJv0`bCL*U`%5sK}#Pm3VZ7z#Bb-h2C|ylP_! zhgTkUtf9C~gTLlX*mW1t%;HyNWiqxyMxMVdAlD9eF~z7#5g_z9o~6!7)|qf(PK?f> zfMV+bDrrlj6M`$|7ra2&smpc8ZLvhmX%lQ}oS(A4995bI=!+f6h#kZtY&Nk0TWF7s zO#=qrLn|(Wv4XED&=f<)Vq7h_*i%^^fin4)yN;}PQ7DM5*ruCYBdBlenSsuJC(R3O zZ5pVi?_X=82B!9Qm@u%|KnLM#Zc)nJK8SW~Rt8-r&c%5KcJn&Q7|inh&T)r6F^vF$ z?Qb1962vZCuk!W?);4x^x$5-?-aOuTC)i`+d|Y6lk7V=XyoZm(k8140egpjrhM}@M zG*OLU5PLD8k{;wqJu~o^b9R961RgYTAsP(aAZRSpQ!xq^0ap-*Jtg04Vg)W*j9Uc_ zc>^F&>FqO!^*feBpjhvWjw`{Ci7<#Y0R>9I)qX}$uH|A0rg2cO_lSv$vC;s8;`aH( zJ`*4eY+Lg>)fmNysxeOE_feytAYGmc6DC$+bu}$7W#YXc04z==Gj#DJL*vDMXL5!^ z156l_>5Z*HI5=it%uoHZ%yim7O&rHKQ7>vcE^r-;MI7pZzT2hTZZq*d{eIT;_uY0Z zI_v~-2i|YsR|PA46gDG~i4Wk{$c+dnxP+$P@@ISA6fRAZ1JI zVehhj%fuR7V&Jz0tt!}@DD4HExuQf6_uxL=`cuple7Bwn`O|jm3Gjf4CNwMkLna

r09jiw%fz3qm$`O zXb*GC);4Yw$P6cs3u=a0SjX+|L~4vC7-)2(=a29&2L4%aPMLG>ij151G5(ccAM;4g zD-WeEv(_5?JAPu|KX|4xHtq@&KgE9%Xk(e{?TNm$&5T_$k;d+(!_~B$|2FYI_+OTB zZn4vzj4&0yw0yHtBhqDbh_~@`1OLbPQ?_&YaudJ6FIhy<2leu;^ne{thGP!5Th%y! zlx=CPX83#86lj2ziNLiRH*O5Ho&Ugt6hQ)}R4V5}$nUVVy3tRDDT}3=#$}~aak`jp z+dY~Zi)UzY?LMwj6xv%nA1OhclFy8(fv>0_&ruKxD7B`XIP%2JKiOEtjF zI&gKwjyu-=m_CVAjV6!T2U0xOVdhRc*qJ=e+^Jf-`!spUPxshI*sWz|86IJxnYY)f zu~fuzSjUK5XyPsWFtF{eyY6OkAQzc(v8+@JbZoM(YV7Ln*0kYeS#8Ss_@N<}ER=P7 zX@Kj(2i$GaL0Kc05o=^E-O^LwoG4Oo3$J3+oQ2d)rZg+WSMu>AO~`v&E;r>0y}%lp zMqfU6ti~Nu%OAYUqDD5Tz+0H5%0^Q*$!5kOYE@Ihf)pk9R6yVI8i_#0oouZky(29M zFXc+0TUU9xwW^)T?~kO_lx@QDt|H15dS$u$6eQZ!({g2Nja(}`4B0NYsLXRpR+`c- ztOCtwydzHA?MTLx484XXrc|f0=`^KFc5yDh#Pe)kb5y!bd5=c#cDde^9_ghWaknAb zBK?1^)V$YXO*+1b&V5q$l7aLIcKdirse`)-&s+{O%~Fl;N!e#gzwBoK(JC5!_!Km&#h~|2s3N@~gDTg} zrre?|7qJ?qb-EtPd!|j&*_5F#MwKVJ)G}#Yh0H+j z*gSJr}hr6o5Zh7 z;XoFLI6Tb7H)e5DGZ)=dcS{ad7B=UjgPgGIVpBMp#i(+aM3PN!4w>47*O{nI)Z}pc zLH%0y!7M&Rx;qC?3tVo)}2p~{VQ3##_=1|KT!{}7K|dn98PyMw%lEnOO7DV6_qQDJs$GK>u3Lq_ z!{5{J{(;jb`r1jMwq+LBpMwsrNDrQ9i-ANO#5WjOLP`1fR#FER;Wu7w{Qg+DXxehemvs*7LaR z!xM58UvRIu&AY~e1&v4@KFUk3ky~Y%CRlRgl>w;`{s*)*{2bf)?;=_rlRM97SWgDjUJ-9zlamX0z7xx&VM$eGPFCn)Il1bz ztWghpbIp`o+Ix9U8ac@0iEA{nj@Oly_2tueCo3VH&dHT*Tp-Fx%Zy<+yAb{~4R?~@ zoTbz`!s--#;1nOsp2Z-(j9Xb%kKk)FzC|C+`xaj#JPhsf>9f5;z7;&% zaXs5r&&bs^H8tibX{+S3$JI->vPdj4TX)KQ0nU z3g?M0O!!k@!qJ5Zf96ZbOen8}aki@d7FB;vG{Dl7GHg!d#9{MzPR7_A%E>V{U(d;L zHc#bbd`4NT-DKvMj1liJeR&u4WY|D=T_ZG2#+nUMRU}1A;oK8)TV9G{BWRm-k5XMk NJYxj!Q&W-K{~t115~~0J diff --git a/SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/SpaceGamePrototype.class b/SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/SpaceGamePrototype.class index dad1e7ace3dcbd5d099d670173fbb82a2dca24ed..d2989266c8519e8d7ff090895aae920dc511e4bb 100644 GIT binary patch delta 584 zcmZ9IJx{_=6o%hhpp;TjL4^t;MfvoDFF#{qg0UtlMgnzUa*rs?M3;O1gt zqL66f=HjpLXE+&88>EfPJ?B05zRx}9+z59*@$={P9Y7UZx_Eo+-&6N%r*-XY_dsJ{ zEf-xe2C-4EwbiCsH7guLP*dw_zCnJC$k-cV*7=w&)hn^rEa_BJWNr#>yCpAP~H)Yf{oin706d6TN zVSw0^g`TC8w~AgQD3`3f=fND3BpH;E`_Q5R(ZU;2?Ew~Ekft=-CR)CaB^wx|kw88_ z{Te~c0gjHivd$1WY+#(g;S&8^WqXm^tE_4H0RJ RK!zYW2f&_kgKjx&{sLLFx-x$qrK6cSC` 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 O{+^`MCAEFHJNO5wbM!m_ diff --git a/SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Tools/EnemyUpdater.class b/SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Tools/EnemyUpdater.class new file mode 100644 index 0000000000000000000000000000000000000000..6ec20b49c1e4f046a598c40695ce5da5f00a3566 GIT binary patch literal 686 zcmb7B$xZ@65Pb~;$S`c+Ij5cw<<(8Plu;71v& z2NF$8NI3LMz3!@d^{T(VKRyARqm)97!Rq?1W%H4=xg%bNLA&v7p(Bp0fi!Xq@p7e|1`TW=fuxE|11YR9@d`pSc`!@?9(cS(aOnI zIdZ4p`NNOXKq_Tu!lF*@Xy5XviIj9${v2{XhVh^xGO^&LjFHl^Tr zisEaOxJqb3Bh(2qRAwNDEY|3zG%Le8Hi%J!NQOm`5>hgols%KVh&V`MLJAWU->~(o Yq0=i+AO$n(ZBP~E&U-T)5R2jP2kaV{RR910 literal 0 HcmV?d00001 diff --git a/SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Tools/PathfindingWorldCreator.class b/SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Tools/PathfindingWorldCreator.class new file mode 100644 index 0000000000000000000000000000000000000000..a04d9d56e4a1ecad81263dd21dbd5788598decf4 GIT binary patch literal 4300 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 E08;jva{vGU literal 0 HcmV?d00001 diff --git a/SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Tools/WorldContactListener.class b/SpaceGameFolder/core/bin/main/com/davidalexanderkelly/game/Tools/WorldContactListener.class new file mode 100644 index 0000000000000000000000000000000000000000..dbcee2ac2b9166577cdf9cccf5b7037a803e92ab GIT binary patch literal 2250 zcmb_dTXWk~5dKc=M2(}8kW1Up6xu?HorEYYy--|2b7@MzNdtCWXnB$46Zf>T)t@ha{{z5>_*TP^zzxf- z8&&f_RZUyAOs6Wnr_#3DM$N2CqvX1_Z#-~4ySm{zfoTN=CkXOV7#Clx!bH)q*pR4wiK8wxRz;`O;3gUnh-P6U9+vv7jM$B(aKZCR|;|B9@pSZZi;=DMWdvTw~8uPEZUyY1SE!IV|fi zuo4ILzTagsO(wmWO7Rq~=&XaQ0w+j)!!~_-F?B>XI;7}ze5Bz9Gw~26y3%nI9}8&I z-(|fB95qGHlvAVrEv#zzgy_dOuH#eOCPpLVVmqXlea+hhB3IV1E^zl>Q~Qn+s6a{I zC@EXU1?d~x4kOOORR{9$Si`2k(qLeFw%L|m25Z>TaTlM_Rm-()RVCfaae@3}|9It5 z48k&rw4+WUFmQFTC+w>h%cHMGw>V-AMl5Y@%6%r+HWR$a2KIEvY$W|6Bb{znV+u4p zS#<3Kk}CDJk~D~Xzf#>X9kuV;)rj{P7u^F^*TA|0qYc*&66YTNZ_Xtow(E_i?aTPn zsCXk_^mDIATOd<(o1P_E;SAyIalee^F!^x-EMtyg{)C44W{2lI%ALWt2u~NDBl8Ov zL(n;oM29*~a;?V#cmw0yu}|Pl&Qum-lnx<(SnObOhtrwer4G*ih6^9WuV>fOGwGix z0azR($(Z^T?^A-$3FjiUxjC( findPath(Node startPosition,Node goalPosition, PathfindingWorldCreator pathfinder) { - this.pathfinder = pathfinder; - Node startNode = startPosition; - Node endNode = goalPosition; - depth = 0f; - - ArrayList openSet = new ArrayList(); - HashSet closedSet = new HashSet(); - openSet.add(startNode); - while(openSet.size() > 0) { - Node currentNode = openSet.get(0); - for(int i = 1; i < openSet.size(); i++) { - if((openSet.get(i).fCost() < currentNode.fCost() || (openSet.get(i).fCost() == currentNode.fCost() && openSet.get(i).hCost < currentNode.hCost)) && depth > currentNode.fCost()) { - currentNode = openSet.get(i); - depth = currentNode.fCost(); - - - - } - } - openSet.remove(currentNode); - closedSet.add(currentNode); - if(round(currentNode.getWorldPosition().x,2) == round(endNode.getWorldPosition().x,2) && round(currentNode.getWorldPosition().y,2) == round(endNode.getWorldPosition().y,2)) { - ArrayList returnPath = new ArrayList(); - returnPath = retracePath(startNode,currentNode); - - return returnPath; - - } - - for(Node neighbour : pathfinder.getNeighbours(currentNode)){ - if(closedSet.contains(neighbour)) { - - continue; - - } - - float newMovementCostToNeighbour = currentNode.gCost + getDistance(currentNode,neighbour); - if(newMovementCostToNeighbour < neighbour.gCost || !openSet.contains(neighbour)) { - neighbour.gCost = newMovementCostToNeighbour; - neighbour.hCost = getDistance(neighbour,endNode); - neighbour.parent = currentNode; - - if(!openSet.contains(neighbour)) { - openSet.add(neighbour); - - - } - } - - } - - } - - return openSet; - - } - - public ArrayList retracePath(Node startNode, Node endNode) { - - ArrayList path = new ArrayList(); - Node currentNode = endNode; - while(currentNode != startNode) { - path.add(currentNode); - currentNode = currentNode.parent; - } - - Collections.reverse(path); - return path; - } - - public float getDistance(Node nodeA, Node nodeB) { - - float distanceX = round(nodeA.getWorldPosition().x,2) - round(nodeB.getWorldPosition().x,2); - float distanceY = round(nodeA.getWorldPosition().y,2) - round(nodeB.getWorldPosition().y,2); - - if(distanceX > distanceY) - return 14*distanceY + 10*(distanceX-distanceY); - return 14*distanceX + 10*(distanceY-distanceX); - } -} +package com.davidalexanderkelly.game.Entities.Behaviors; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import com.davidalexanderkelly.game.Tools.PathfindingWorldCreator; + +public class Pathfinding { + + private float depth; + PathfindingWorldCreator pathfinder; + + public static float round(float d, int decimalPlace) { + BigDecimal bd = new BigDecimal(Float.toString(d)); + bd = bd.setScale(decimalPlace, BigDecimal.ROUND_HALF_UP); + return bd.floatValue(); + } + + public ArrayList findPath(Node startPosition,Node goalPosition, PathfindingWorldCreator pathfinder) { + this.pathfinder = pathfinder; + + Node startNode = startPosition; + Node endNode = goalPosition; + depth = 0f; + + ArrayList openSet = new ArrayList(); + HashSet closedSet = new HashSet(); + openSet.add(startNode); + while(openSet.size() > 0) { + Node currentNode = openSet.get(0); + for(int i = 1; i < openSet.size(); i++) { + if((openSet.get(i).fCost() < currentNode.fCost() || (openSet.get(i).fCost() == currentNode.fCost() && openSet.get(i).hCost < currentNode.hCost)) && depth > currentNode.fCost()) { + currentNode = openSet.get(i); + depth = currentNode.fCost(); + + + + } + } + openSet.remove(currentNode); + closedSet.add(currentNode); + if(round(currentNode.getWorldPosition().x,2) == round(endNode.getWorldPosition().x,2) && round(currentNode.getWorldPosition().y,2) == round(endNode.getWorldPosition().y,2)) { + ArrayList returnPath = new ArrayList(); + returnPath = retracePath(startNode,currentNode); + + return returnPath; + + } + + for(Node neighbour : pathfinder.getNeighbours(currentNode)){ + + if(closedSet.contains(neighbour)) { + + continue; + + } + + float newMovementCostToNeighbour = currentNode.gCost + getDistance(currentNode,neighbour); + if(newMovementCostToNeighbour < neighbour.gCost || !openSet.contains(neighbour)) { + neighbour.gCost = newMovementCostToNeighbour; + neighbour.hCost = getDistance(neighbour,endNode); + neighbour.parent = currentNode; + + if(!openSet.contains(neighbour)) { + openSet.add(neighbour); + + + } + } + + } + + } + + return openSet; + + } + + public ArrayList retracePath(Node startNode, Node endNode) { + + ArrayList path = new ArrayList(); + Node currentNode = endNode; + while(currentNode != startNode) { + path.add(currentNode); + currentNode = currentNode.parent; + } + + Collections.reverse(path); + return path; + } + + public float getDistance(Node nodeA, Node nodeB) { + + float distanceX = round(nodeA.getWorldPosition().x,2) - round(nodeB.getWorldPosition().x,2); + float distanceY = round(nodeA.getWorldPosition().y,2) - round(nodeB.getWorldPosition().y,2); + + if(distanceX > distanceY) + return 14*distanceY + 10*(distanceX-distanceY); + return 14*distanceX + 10*(distanceY-distanceX); + } +} diff --git a/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Entities/Enemy.java b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Entities/Enemy.java index 8c6d420..015995f 100644 --- a/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Entities/Enemy.java +++ b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Entities/Enemy.java @@ -7,7 +7,6 @@ import com.badlogic.gdx.graphics.g2d.Animation; import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.graphics.g2d.TextureRegion; -import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.physics.box2d.Body; import com.badlogic.gdx.physics.box2d.BodyDef; import com.badlogic.gdx.physics.box2d.CircleShape; @@ -17,17 +16,17 @@ import com.davidalexanderkelly.game.SpaceGamePrototype; import com.davidalexanderkelly.game.Entities.Behaviors.Node; import com.davidalexanderkelly.game.Entities.Behaviors.Pathfinding; +import com.davidalexanderkelly.game.Entities.TileObjects.Task; import com.davidalexanderkelly.game.Screens.PlayScreen; -import com.davidalexanderkelly.game.Tools.InteractableWorldCreator; -import com.davidalexanderkelly.game.Tools.PathfindingWorldCreator; public class Enemy extends Sprite{ public enum State{IDLE,RUNNING}; public State currentState; public State previousState; + + private float x; + private float y; - - private InteractableWorldCreator interactables; private Animation playerIdle; private Animation playerRun; private float stateTimer; @@ -42,14 +41,18 @@ public enum State{IDLE,RUNNING}; private ArrayList path; private boolean moving; + private boolean moved; - public Enemy(World world,PlayScreen screen) { + public Enemy(World world,PlayScreen screen, float x, float y) { super(screen.getAtlas().findRegion("enemyIdle")); this.screen = screen; this.world = world; + this.x = x; + this.y = y; + currentState = State.IDLE; previousState = State.IDLE; stateTimer = 0; @@ -70,11 +73,16 @@ public Enemy(World world,PlayScreen screen) { defineEnemy(); setBounds(0,0,19 / SpaceGamePrototype.PixelsPerMetre, 23 / SpaceGamePrototype.PixelsPerMetre); - setPath(0,1); + + moved = false; } public void update(float deltaTime) { + if(moved == false) { + setPath(0,1); + moved = true; + } setPosition((box2dBody.getPosition().x - getWidth()/2),(box2dBody.getPosition().y - getHeight()/4) ); setRegion(getFrame(deltaTime)); @@ -163,21 +171,28 @@ public State getState() { } public void setPath(int start, int end) { + System.out.println("Ok"); moving = false; pathfinding = new Pathfinding(); - List interactables = screen.interactables.getLocations(); + List interactables = new ArrayList(); + interactables.add(new Node(box2dBody.getPosition())); + for(Task task : screen.creator.getTasks()) { + interactables.add(new Node(task.getPosition())); + } + path = pathfinding.findPath(interactables.get(start),interactables.get(end),screen.pathfinder); + } public void defineEnemy() { BodyDef bodyDefinition = new BodyDef(); - bodyDefinition.position.set(screen.interactables.getLocations().get(0).getWorldPosition().x,screen.interactables.getLocations().get(0).getWorldPosition().y); + bodyDefinition.position.set(x,y); bodyDefinition.type = BodyDef.BodyType.DynamicBody; box2dBody = world.createBody(bodyDefinition); FixtureDef fixtureDefinition = new FixtureDef(); CircleShape shape = new CircleShape(); - shape.setRadius(0 / SpaceGamePrototype.PixelsPerMetre); + shape.setRadius(2 / SpaceGamePrototype.PixelsPerMetre); fixtureDefinition.shape = shape; diff --git a/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Entities/Player.java b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Entities/Player.java index 97b9c47..0b77beb 100644 --- a/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Entities/Player.java +++ b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Entities/Player.java @@ -109,10 +109,25 @@ public void definePlayer() { FixtureDef fixtureDefinition = new FixtureDef(); CircleShape shape = new CircleShape(); shape.setRadius(5 / SpaceGamePrototype.PixelsPerMetre); + fixtureDefinition.filter.categoryBits = SpaceGamePrototype.PLAYER_BIT; + fixtureDefinition.filter.maskBits = SpaceGamePrototype.DEFAULT_BIT | + SpaceGamePrototype.TELEPORTER_BIT; + fixtureDefinition.shape = shape; - - box2dBody.createFixture(fixtureDefinition); + + box2dBody.createFixture(fixtureDefinition).setUserData(this); + + CircleShape sensor = new CircleShape(); + sensor.setRadius(6 / SpaceGamePrototype.PixelsPerMetre); + fixtureDefinition.shape = sensor; + fixtureDefinition.isSensor = true; + box2dBody.createFixture(fixtureDefinition).setUserData(this); + + } + + public void teleport(float x, float y) { + box2dBody.setTransform(100f,100f,0); } diff --git a/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Entities/TileObjects/InteractiveTileObject.java b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Entities/TileObjects/InteractiveTileObject.java new file mode 100644 index 0000000..da6d85a --- /dev/null +++ b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Entities/TileObjects/InteractiveTileObject.java @@ -0,0 +1,59 @@ +package com.davidalexanderkelly.game.Entities.TileObjects; + +import com.badlogic.gdx.maps.MapObject; +import com.badlogic.gdx.maps.objects.RectangleMapObject; +import com.badlogic.gdx.maps.tiled.TiledMap; +import com.badlogic.gdx.math.Rectangle; +import com.badlogic.gdx.physics.box2d.Body; +import com.badlogic.gdx.physics.box2d.BodyDef; +import com.badlogic.gdx.physics.box2d.Filter; +import com.badlogic.gdx.physics.box2d.Fixture; +import com.badlogic.gdx.physics.box2d.FixtureDef; +import com.badlogic.gdx.physics.box2d.PolygonShape; +import com.badlogic.gdx.physics.box2d.World; +import com.davidalexanderkelly.game.SpaceGamePrototype; +import com.davidalexanderkelly.game.Screens.PlayScreen; +import com.davidalexanderkelly.game.Entities.Player; + +public abstract class InteractiveTileObject { + protected World world; + protected TiledMap map; + protected Rectangle bounds; + protected Body body; + protected PlayScreen screen; + protected MapObject object; + + protected Fixture fixture; + + public InteractiveTileObject(PlayScreen screen, MapObject object){ + this.object = object; + this.screen = screen; + this.world = screen.getWorld(); + this.map = screen.getMap(); + this.bounds = ((RectangleMapObject) object).getRectangle(); + + BodyDef bdef = new BodyDef(); + FixtureDef fdef = new FixtureDef(); + PolygonShape shape = new PolygonShape(); + + bdef.type = BodyDef.BodyType.StaticBody; + bdef.position.set((bounds.getX() + bounds.getWidth() / 2) / SpaceGamePrototype.PixelsPerMetre, (bounds.getY() + bounds.getHeight() / 2) / SpaceGamePrototype.PixelsPerMetre); + + body = world.createBody(bdef); + + shape.setAsBox(bounds.getWidth() / 2 / SpaceGamePrototype.PixelsPerMetre, bounds.getHeight() / 2 / SpaceGamePrototype.PixelsPerMetre); + fdef.shape = shape; + fixture = body.createFixture(fdef); + + } + + public abstract void collide(Player player); + + public void setCategoryFilter(short filterBit){ + Filter filter = new Filter(); + filter.categoryBits = filterBit; + fixture.setFilterData(filter); + } + + +} diff --git a/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Entities/TileObjects/Task.java b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Entities/TileObjects/Task.java new file mode 100644 index 0000000..66a5285 --- /dev/null +++ b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Entities/TileObjects/Task.java @@ -0,0 +1,32 @@ +package com.davidalexanderkelly.game.Entities.TileObjects; + +import com.badlogic.gdx.maps.MapObject; +import com.badlogic.gdx.math.Vector2; +import com.davidalexanderkelly.game.SpaceGamePrototype; +import com.davidalexanderkelly.game.Screens.PlayScreen; +import com.davidalexanderkelly.game.Entities.Player; + + +public class Task extends InteractiveTileObject { + + private float x; + private float y; + + public Task(PlayScreen screen, MapObject object, float x, float y){ + super(screen, object); + fixture.setUserData(this); + setCategoryFilter(SpaceGamePrototype.TASK_BIT); + this.x = x; + this.y = y; + } + + @Override + public void collide(Player player) { + System.out.println("Ok"); + } + + public Vector2 getPosition() { + return new Vector2(x,y); + } + +} \ No newline at end of file diff --git a/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Entities/TileObjects/Teleporter.java b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Entities/TileObjects/Teleporter.java new file mode 100644 index 0000000..863ea70 --- /dev/null +++ b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Entities/TileObjects/Teleporter.java @@ -0,0 +1,42 @@ +package com.davidalexanderkelly.game.Entities.TileObjects; + +import java.util.List; +import com.badlogic.gdx.maps.MapObject; +import com.badlogic.gdx.math.Vector2; +import com.davidalexanderkelly.game.SpaceGamePrototype; +import com.davidalexanderkelly.game.Screens.PlayScreen; +import com.davidalexanderkelly.game.Entities.Player; + + +public class Teleporter extends InteractiveTileObject { + + private float x; + private float y; + + public Teleporter(PlayScreen screen, MapObject object,float x,float y){ + super(screen, object); + fixture.setUserData(this); + setCategoryFilter(SpaceGamePrototype.TELEPORTER_BIT); + this.x = x; + this.y = y; + } + + @Override + public void collide(Player player) { + List teleporters = screen.creator.getTeleporters(); + for(int i = 0; i < teleporters.size(); i++) { + if(teleporters.get(i) == this) { + if(i % 2 == 0 ) + player.teleport(teleporters.get(i+1).getPosition().x,teleporters.get(i+1).getPosition().y); + else + player.teleport(teleporters.get(i-1).getPosition().x,teleporters.get(i-1).getPosition().y); + + } + } + } + + public Vector2 getPosition() { + return new Vector2(x,y); + } + +} diff --git a/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Scenes/Hud.java b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Scenes/Hud.java index cff19e0..df594ce 100644 --- a/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Scenes/Hud.java +++ b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Scenes/Hud.java @@ -1,16 +1,42 @@ package com.davidalexanderkelly.game.Scenes; +import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.graphics.OrthographicCamera; +import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.scenes.scene2d.Stage; +import com.badlogic.gdx.scenes.scene2d.ui.Label; +import com.badlogic.gdx.scenes.scene2d.ui.Table; import com.badlogic.gdx.utils.Disposable; +import com.badlogic.gdx.utils.viewport.ExtendViewport; import com.badlogic.gdx.utils.viewport.Viewport; +import com.davidalexanderkelly.game.SpaceGamePrototype; public class Hud implements Disposable{ public Stage stage; private Viewport viewport; + private Integer health; + + Label healthLabel; + Label healthWordLabel; + public Hud(SpriteBatch sb) { + health = 100; + + viewport = new ExtendViewport(SpaceGamePrototype.V_WIDTH,SpaceGamePrototype.V_HEIGHT, new OrthographicCamera()); + stage = new Stage(viewport, sb); + + Table table = new Table(); + table.top(); + table.setFillParent(true); + + healthLabel = new Label(String.format("%3d", health), new Label.LabelStyle(new BitmapFont(), Color.WHITE)); + healthWordLabel = new Label("HEALTH", new Label.LabelStyle(new BitmapFont(), Color.WHITE)); + table.add(healthWordLabel).expandX().padTop(10); + table.add(healthLabel).expandX().padTop(10); + } @Override diff --git a/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Screens/PlayScreen.java b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Screens/PlayScreen.java index 97bfd92..3701e3c 100644 --- a/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Screens/PlayScreen.java +++ b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Screens/PlayScreen.java @@ -1,49 +1,31 @@ package com.davidalexanderkelly.game.Screens; - - -import java.util.ArrayList; -import java.util.List; -import java.util.Vector; - import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; import com.badlogic.gdx.Screen; -import com.badlogic.gdx.audio.Sound; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.TextureAtlas; -import com.badlogic.gdx.maps.MapObject; -import com.badlogic.gdx.maps.objects.RectangleMapObject; import com.badlogic.gdx.maps.tiled.TiledMap; import com.badlogic.gdx.maps.tiled.TmxMapLoader; import com.badlogic.gdx.maps.tiled.renderers.OrthogonalTiledMapRenderer; -import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Vector2; -import com.badlogic.gdx.physics.box2d.Body; -import com.badlogic.gdx.physics.box2d.BodyDef; import com.badlogic.gdx.physics.box2d.Box2DDebugRenderer; -import com.badlogic.gdx.physics.box2d.FixtureDef; -import com.badlogic.gdx.physics.box2d.PolygonShape; import com.badlogic.gdx.physics.box2d.World; import com.badlogic.gdx.scenes.scene2d.ui.Skin; -import com.badlogic.gdx.utils.Timer.Task; import com.badlogic.gdx.utils.viewport.ExtendViewport; -import com.badlogic.gdx.utils.viewport.FitViewport; import com.badlogic.gdx.utils.viewport.Viewport; import com.davidalexanderkelly.game.SpaceGamePrototype; import com.davidalexanderkelly.game.Entities.Enemy; import com.davidalexanderkelly.game.Entities.Player; -import com.davidalexanderkelly.game.Entities.Behaviors.Node; -import com.davidalexanderkelly.game.Entities.Behaviors.Pathfinding; import com.davidalexanderkelly.game.Scenes.Hud; import com.davidalexanderkelly.game.Tools.Assets; import com.davidalexanderkelly.game.Tools.Box2DWorldCreator; -import com.davidalexanderkelly.game.Tools.InteractableWorldCreator; -import com.davidalexanderkelly.game.Tools.PathfindingWorldCreator; import com.davidalexanderkelly.game.Tools.EnemyUpdater; +import com.davidalexanderkelly.game.Tools.PathfindingWorldCreator; +import com.davidalexanderkelly.game.Tools.WorldContactListener; public class PlayScreen implements Screen { //Reference to Game, used to set screen @@ -54,11 +36,7 @@ public class PlayScreen implements Screen { private TextureAtlas atlas; public Texture img; private Skin skin; - - private static final int IDLE = 0; - private static final int RUNNING = 1; - - + //Camera and Camera manipulation variables private OrthographicCamera gamecam; private Viewport gamePort; @@ -72,15 +50,13 @@ public class PlayScreen implements Screen { //Box2d variables private World world; private Box2DDebugRenderer collisionRenderer; + public Box2DWorldCreator creator; public PathfindingWorldCreator pathfinder; - public InteractableWorldCreator interactables; + private Assets assets; private Player player; - private Enemy enemy; - - public PlayScreen(SpaceGamePrototype game) { @@ -104,19 +80,15 @@ public PlayScreen(SpaceGamePrototype game) { //Creates the collision world world = new World(new Vector2(0,0), true); + creator = new Box2DWorldCreator(this); - interactables = new InteractableWorldCreator(map); - interactables.setLocations(); pathfinder = new PathfindingWorldCreator(map); pathfinder.setLocations(); - - - + //allows the rendering of collision boxes collisionRenderer = new Box2DDebugRenderer(); - new Box2DWorldCreator(this); batch = new SpriteBatch(); @@ -126,12 +98,12 @@ public PlayScreen(SpaceGamePrototype game) { skin = new Skin(); skin.addRegions(assets.manager.get("assets/Sprites/Spritepack.atlas", TextureAtlas.class)); - - ArrayList path = new ArrayList(); - + //creates Player in the world player = new Player(world,this ); - enemy = new Enemy(world,this); + + + world.setContactListener(new WorldContactListener()); @@ -179,12 +151,12 @@ public void update(float deltaTime) { //updates physics 60 times per second world.step(1/60f,6,2); player.update(deltaTime); - EnemyUpdater enemyUpdate = new EnemyUpdater(enemy,deltaTime); - enemyUpdate.start(); + for(Enemy imposter : creator.getEnemies()) { + imposter.update(deltaTime); + } //Game camera follows the player gamecam.position.x = player.box2dBody.getPosition().x; gamecam.position.y = player.box2dBody.getPosition().y; - //System.out.println(player.box2dBody.getPosition()); gamecam.update(); @@ -207,10 +179,14 @@ public void render(float delta) { //renderer for the collision boxes collisionRenderer.render(world, gamecam.combined); - game.batch.setProjectionMatrix(gamecam.combined); + game.batch.setProjectionMatrix(hud.stage.getCamera().combined); + hud.stage.draw(); game.batch.begin(); player.draw(game.batch); - enemy.draw(game.batch); + for(Enemy imposter : creator.getEnemies()) { + imposter.draw(game.batch); + } + game.batch.end(); } diff --git a/SpaceGameFolder/core/src/com/davidalexanderkelly/game/SpaceGamePrototype.java b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/SpaceGamePrototype.java index aef8de3..a8fa356 100644 --- a/SpaceGameFolder/core/src/com/davidalexanderkelly/game/SpaceGamePrototype.java +++ b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/SpaceGamePrototype.java @@ -1,12 +1,6 @@ package com.davidalexanderkelly.game; - - -import com.badlogic.gdx.ApplicationAdapter; import com.badlogic.gdx.Game; -import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.graphics.GL20; -import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.davidalexanderkelly.game.Screens.PlayScreen; @@ -17,6 +11,11 @@ public class SpaceGamePrototype extends Game { public static final int V_HEIGHT = 720; public static final float PixelsPerMetre = 100; + public static final short DEFAULT_BIT = 1; + public static final short PLAYER_BIT =2; + public static final short TELEPORTER_BIT = 4; + public static final short TASK_BIT = 8; + public SpriteBatch batch; diff --git a/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Tools/BinarySearch.java b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Tools/BinarySearch.java index 9c54822..a4a13fe 100644 --- a/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Tools/BinarySearch.java +++ b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Tools/BinarySearch.java @@ -1,63 +1,63 @@ -package com.davidalexanderkelly.game.Tools; - -import java.math.BigDecimal; -import java.util.List; - -import com.davidalexanderkelly.game.Entities.Behaviors.Node; - -class BinarySearch { - - public int binarySearch(List locations, Node x) - { - int lowerBound = 0, upperBound = (locations.size() - 1); - boolean foundX = false; - int mid = 0; - while (lowerBound <= upperBound) { - if(foundX == false) { - mid = (lowerBound + upperBound) / 2; - } - - - if (round(locations.get(mid).getWorldPosition().x,2) == round(x.getWorldPosition().x,2) ) { - foundX = true; - if(round(locations.get(mid).getWorldPosition().y,2) == round(x.getWorldPosition().y,2) ) { - - return mid; - } - - if(round(locations.get(mid).getWorldPosition().y,2) < round(x.getWorldPosition().y,2)) { - mid +=1; - lowerBound +=1; - } - else { - mid -=1; - upperBound -=1; - } - - } - else if(foundX == true) { - return -1; - } - - - if (round(locations.get(mid).getWorldPosition().x,2) < round(x.getWorldPosition().x,2)) { - lowerBound = mid + 1; - - } - else { - upperBound = mid - 1; - } - - } - - return -1; - } - - public static float round(float d, int decimalPlace) { - BigDecimal bd = new BigDecimal(Float.toString(d)); - bd = bd.setScale(decimalPlace, BigDecimal.ROUND_HALF_UP); - return bd.floatValue(); - } - - -} +package com.davidalexanderkelly.game.Tools; + +import java.math.BigDecimal; +import java.util.List; + +import com.davidalexanderkelly.game.Entities.Behaviors.Node; + +class BinarySearch { + + public int binarySearch(List locations, Node x) + { + int lowerBound = 0, upperBound = (locations.size() - 1); + boolean foundX = false; + int mid = 0; + while (lowerBound <= upperBound) { + if(foundX == false) { + mid = (lowerBound + upperBound) / 2; + } + + + if (round(locations.get(mid).getWorldPosition().x,2) == round(x.getWorldPosition().x,2) ) { + foundX = true; + if(round(locations.get(mid).getWorldPosition().y,2) == round(x.getWorldPosition().y,2) ) { + + return mid; + } + + if(round(locations.get(mid).getWorldPosition().y,2) < round(x.getWorldPosition().y,2)) { + mid +=1; + lowerBound +=1; + } + else { + mid -=1; + upperBound -=1; + } + + } + else if(foundX == true) { + return -1; + } + + + if (round(locations.get(mid).getWorldPosition().x,2) < round(x.getWorldPosition().x,2)) { + lowerBound = mid + 1; + + } + else { + upperBound = mid - 1; + } + + } + + return -1; + } + + public static float round(float d, int decimalPlace) { + BigDecimal bd = new BigDecimal(Float.toString(d)); + bd = bd.setScale(decimalPlace, BigDecimal.ROUND_HALF_UP); + return bd.floatValue(); + } + + +} diff --git a/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Tools/Box2DWorldCreator.java b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Tools/Box2DWorldCreator.java index d68e96e..af4fbf8 100644 --- a/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Tools/Box2DWorldCreator.java +++ b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Tools/Box2DWorldCreator.java @@ -1,5 +1,7 @@ package com.davidalexanderkelly.game.Tools; +import java.util.ArrayList; + import com.badlogic.gdx.maps.MapObject; import com.badlogic.gdx.maps.objects.RectangleMapObject; import com.badlogic.gdx.maps.tiled.TiledMap; @@ -11,27 +13,75 @@ import com.badlogic.gdx.physics.box2d.World; import com.davidalexanderkelly.game.SpaceGamePrototype; import com.davidalexanderkelly.game.Screens.PlayScreen; +import com.davidalexanderkelly.game.Entities.Enemy; +import com.davidalexanderkelly.game.Entities.TileObjects.Task; +import com.davidalexanderkelly.game.Entities.TileObjects.Teleporter; + + public class Box2DWorldCreator { - public Box2DWorldCreator(PlayScreen screen) { - World world = screen.getWorld(); - TiledMap map = screen.getMap(); - - BodyDef bodyDefinition = new BodyDef(); - PolygonShape shape = new PolygonShape(); - FixtureDef fixtureDefinition = new FixtureDef(); - Body body; - - for(MapObject object : map.getLayers().get("Collision").getObjects().getByType(RectangleMapObject.class)){ - Rectangle rect = ((RectangleMapObject) object).getRectangle(); - - bodyDefinition.type = BodyDef.BodyType.StaticBody; - bodyDefinition.position.set((rect.getX() + rect.getWidth() / 2) / SpaceGamePrototype.PixelsPerMetre, (rect.getY() + rect.getHeight() / 2) / SpaceGamePrototype.PixelsPerMetre); - - body = world.createBody(bodyDefinition); - shape.setAsBox(rect.getWidth() / 2 / SpaceGamePrototype.PixelsPerMetre, rect.getHeight() /2 / SpaceGamePrototype.PixelsPerMetre); - fixtureDefinition.shape = shape; - body.createFixture(fixtureDefinition); - }; - } + private ArrayList enemies; + private ArrayList teleporters; + private ArrayList tasks; + + public Box2DWorldCreator(PlayScreen screen){ + World world = screen.getWorld(); + TiledMap map = screen.getMap(); + //create body and fixture variables + BodyDef bdef = new BodyDef(); + PolygonShape shape = new PolygonShape(); + FixtureDef fdef = new FixtureDef(); + Body body; + + //create collision bodies/fixtures + for(MapObject object : map.getLayers().get("Collision").getObjects().getByType(RectangleMapObject.class)){ + Rectangle rect = ((RectangleMapObject) object).getRectangle(); + + bdef.type = BodyDef.BodyType.StaticBody; + bdef.position.set((rect.getX() + rect.getWidth() / 2) / SpaceGamePrototype.PixelsPerMetre, (rect.getY() + rect.getHeight() / 2) / SpaceGamePrototype.PixelsPerMetre); + + body = world.createBody(bdef); + + shape.setAsBox(rect.getWidth() / 2 / SpaceGamePrototype.PixelsPerMetre, rect.getHeight() / 2 / SpaceGamePrototype.PixelsPerMetre); + fdef.shape = shape; + body.createFixture(fdef); + } + + //create Teleporter bodies/fixtures + teleporters = new ArrayList(); + for(MapObject object : map.getLayers().get("Teleporters").getObjects().getByType(RectangleMapObject.class)){ + Rectangle rect = ((RectangleMapObject) object).getRectangle(); + teleporters.add(new Teleporter(screen, object,(rect.getX() / SpaceGamePrototype.PixelsPerMetre) - 0.08f,(rect.getY() / SpaceGamePrototype.PixelsPerMetre) - 0.08f)); + } + + //create Task bodies/fixtures + tasks = new ArrayList(); + for(MapObject object : map.getLayers().get("Tasks").getObjects().getByType(RectangleMapObject.class)){ + Rectangle rect = ((RectangleMapObject) object).getRectangle(); + tasks.add(new Task(screen, object,(rect.getX() / SpaceGamePrototype.PixelsPerMetre) - 0.08f,(rect.getY() / SpaceGamePrototype.PixelsPerMetre) - 0.08f)); + + } + + //create all imposters + enemies = new ArrayList(); + for(MapObject object : map.getLayers().get("Imposters").getObjects().getByType(RectangleMapObject.class)){ + Rectangle rect = ((RectangleMapObject) object).getRectangle(); + enemies.add(new Enemy(world,screen,(rect.getX() / SpaceGamePrototype.PixelsPerMetre) - 0.08f,(rect.getY() / SpaceGamePrototype.PixelsPerMetre) - 0.08f)); + + } + + + } + + public ArrayList getEnemies() { + return enemies; + } + + public ArrayList getTeleporters(){ + return teleporters; + } + + public ArrayList getTasks(){ + return tasks; + } } diff --git a/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Tools/EnemyUpdater.java b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Tools/EnemyUpdater.java index 365dc6d..df7fdf2 100644 --- a/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Tools/EnemyUpdater.java +++ b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Tools/EnemyUpdater.java @@ -1,18 +1,19 @@ -package com.davidalexanderkelly.game.Tools; - -import com.davidalexanderkelly.game.Entities.Enemy; - -public class EnemyUpdater extends Thread { - - Enemy enemy; - float deltaTime; - - public EnemyUpdater(Enemy enemy, float deltaTime) { - this.enemy = enemy; - this.deltaTime = deltaTime; - } - - public void run() { - enemy.update(deltaTime); - } -} +package com.davidalexanderkelly.game.Tools; + +import com.davidalexanderkelly.game.Entities.Enemy; + +public class EnemyUpdater extends Thread { + + Enemy enemy; + float deltaTime; + + public EnemyUpdater(Enemy enemy, float deltaTime) { + this.enemy = enemy; + this.deltaTime = deltaTime; + } + + public void run() { + enemy.update(deltaTime); + + } +} diff --git a/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Tools/PathfindingWorldCreator.java b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Tools/PathfindingWorldCreator.java new file mode 100644 index 0000000..5c57b61 --- /dev/null +++ b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Tools/PathfindingWorldCreator.java @@ -0,0 +1,84 @@ +package com.davidalexanderkelly.game.Tools; + +import com.badlogic.gdx.maps.MapObject; +import com.badlogic.gdx.maps.objects.RectangleMapObject; +import com.badlogic.gdx.maps.tiled.TiledMap; +import com.badlogic.gdx.math.Rectangle; +import com.badlogic.gdx.math.Vector2; +import com.davidalexanderkelly.game.SpaceGamePrototype; +import com.davidalexanderkelly.game.Entities.Behaviors.Node; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + + + +public class PathfindingWorldCreator { + + private List locations; + private TiledMap map; + + + public PathfindingWorldCreator(TiledMap map) { + + this.map = map; + } + + public void setLocations() { + + this.locations = new ArrayList(); + + for(MapObject object : map.getLayers().get("Ai Pathing").getObjects().getByType(RectangleMapObject.class)){ + Rectangle rect = ((RectangleMapObject) object).getRectangle(); + Vector2 vPosition = new Vector2((rect.getX() + rect.getWidth() / 2) / SpaceGamePrototype.PixelsPerMetre,(rect.getY() + rect.getHeight() / 2) / SpaceGamePrototype.PixelsPerMetre); + Node newNode = new Node(vPosition); + locations.add(newNode); + + } + QuickSort ob = new QuickSort(locations); + ob.sort(0, (locations.size())-1); + locations = ob.path; + + + } + + + + public List getLocations() { + + return locations; + } + + public static float round(float d, int decimalPlace) { + BigDecimal bd = new BigDecimal(Float.toString(d)); + bd = bd.setScale(decimalPlace, BigDecimal.ROUND_HALF_UP); + return bd.floatValue(); + } + + public ArrayList getNeighbours(Node node){ + ArrayList neighbours = new ArrayList(); + for(int x = -1; x<= 1; x++) { + for(int y = -1; y<= 1; y++) { + if(x == y || (x+y) == 0) + continue; + + float checkX = node.getWorldPosition().x + (x*0.16f); + float checkY = node.getWorldPosition().y + (y*0.16f); + Vector2 checkV = new Vector2(checkX,checkY); + Node checkN = new Node(checkV); + BinarySearch ob = new BinarySearch(); + int result = ob.binarySearch(locations,checkN); + + if(result != -1) { + neighbours.add(locations.get(result)); + + } + + } + } + return neighbours; + } + + +} diff --git a/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Tools/QuickSort.java b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Tools/QuickSort.java index 8871f71..683377a 100644 --- a/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Tools/QuickSort.java +++ b/SpaceGameFolder/core/src/com/davidalexanderkelly/game/Tools/QuickSort.java @@ -1,61 +1,61 @@ -package com.davidalexanderkelly.game.Tools; - -import java.util.List; - -import com.davidalexanderkelly.game.Entities.Behaviors.Node; - -class QuickSort { - - public List path; - - public QuickSort(List path) { - this.path = path; - } - - public int partition(int low, int high) - { - float pivot = path.get(high).getWorldPosition().x; - float pivotY = path.get(high).getWorldPosition().y; - int i = (low-1); - for (int j=low; j path; + + public QuickSort(List path) { + this.path = path; + } + + public int partition(int low, int high) + { + float pivot = path.get(high).getWorldPosition().x; + float pivotY = path.get(high).getWorldPosition().y; + int i = (low-1); + for (int j=low; j - - - + + + + diff --git a/SpaceGameFolder/desktop/assets/Maps/SpaceStation.tmx b/SpaceGameFolder/desktop/assets/Maps/SpaceStation.tmx index 371fef8..86efafb 100644 --- a/SpaceGameFolder/desktop/assets/Maps/SpaceStation.tmx +++ b/SpaceGameFolder/desktop/assets/Maps/SpaceStation.tmx @@ -1,2309 +1,2326 @@ - - - - - -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,3221225488,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741840,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483652,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,31,31,34,23,36,31,9,9,9,31,36,23,29,31,31,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,2147483679,2147483679,2147483677,2147483671,2147483684,2147483679,2147483657,2147483657,2147483657,2147483679,2147483684,2147483682,2147483671,2147483679,2147483679,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,3221225505,3221225505,3221225505,3221225505,3221225505,3221225505,3221225505,3221225505,21,21,21,21,21,21,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,1073741857,1073741857,1073741857,1073741857,1073741857,1073741857,1073741857,1073741857,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,91,92,93,3221225505,91,92,93,3221225505,21,21,121,124,125,21,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,2147483669,2147483773,2147483772,2147483769,2147483669,2147483669,1073741857,2147483735,2147483734,2147483733,1073741857,85,86,87,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,103,104,105,3221225505,103,104,105,3221225505,21,21,133,136,137,21,2147483655,0,0,0,0,0,0,0,0,0,0,0,1073741840,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,3221225488,0,0,0,0,0,0,0,0,0,0,0,7,2147483669,2147483785,2147483784,2147483781,2147483669,2147483669,1073741857,2147483747,2147483746,2147483745,1073741857,97,98,99,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,115,116,117,3221225505,115,116,117,3221225505,21,21,21,21,21,21,2147483655,0,0,0,0,0,0,0,0,0,0,0,1073741831,31,31,29,29,29,31,9,10,10,31,29,29,29,31,31,3221225479,0,0,0,0,0,0,0,0,0,0,0,7,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,1073741857,2147483759,2147483758,2147483757,1073741857,109,110,111,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,3221225505,3221225505,3221225505,3221225505,3221225505,3221225505,3221225505,3221225505,21,21,123,124,125,21,2147483665,3221225478,6,2147483654,2147483654,2147483654,2147483654,2147483654,5,0,0,0,1073741831,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,3221225479,0,0,0,2147483653,6,6,6,6,6,2147483654,1073741830,17,2147483669,2147483773,2147483772,2147483771,2147483669,2147483669,1073741857,1073741857,1073741857,1073741857,1073741857,1073741857,1073741857,1073741857,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,91,92,93,3221225505,91,92,93,3221225505,21,21,135,136,137,21,2147483679,2147483677,2147483677,2147483677,2147483677,2147483677,2147483677,2147483679,3221225479,0,0,0,1073741831,21,65,21,21,65,21,21,21,21,21,65,21,21,65,21,3221225479,0,0,0,1073741831,31,29,29,29,29,29,29,31,2147483669,2147483785,2147483784,2147483783,2147483669,2147483669,1073741857,2147483735,2147483734,2147483733,1073741857,94,95,96,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,103,104,105,3221225505,103,104,105,3221225505,21,21,21,21,21,21,3758096417,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225479,0,0,0,1073741831,21,77,21,21,77,21,21,21,21,21,77,21,21,77,21,3221225479,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1610612769,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,1073741857,2147483747,2147483746,2147483745,1073741857,106,107,108,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,115,116,117,3221225505,115,116,117,3221225505,21,21,21,21,21,21,3758096417,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225479,0,0,0,1073741831,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,3221225479,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1610612769,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,1073741857,2147483759,2147483758,2147483757,1073741857,118,119,120,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,3221225505,3221225505,3221225505,3221225505,3221225505,3221225505,3221225505,3221225505,21,21,21,21,21,21,1073741840,3221225478,3221225478,3221225478,5,3221225493,3221225493,3221225493,3221225477,6,6,6,1073741829,21,65,21,21,65,21,21,21,21,21,65,21,21,65,21,3221225477,2147483654,2147483654,2147483654,1073741829,1073741845,1073741845,1073741845,2147483653,1073741830,1073741830,1073741830,3221225488,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,1073741857,1073741857,1073741857,1073741857,1073741857,1073741857,1073741857,1073741857,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,94,95,96,3221225505,21,21,21,21,21,21,21,21,21,2147483773,2147483655,0,0,0,3221225479,3221225493,3221225493,3221225493,2147483679,2147483677,2147483677,2147483677,2147483679,21,77,21,21,77,21,21,21,21,21,77,21,21,77,21,31,29,29,29,31,1073741845,1073741845,1073741845,1073741831,0,0,0,7,125,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,1073741857,85,86,87,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,106,107,108,3221225505,21,21,21,21,21,21,21,21,21,2147483785,2147483655,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,21,536870945,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,2684354593,2147483669,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741831,0,0,0,7,137,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,1073741857,97,98,99,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,118,119,120,3221225505,21,21,21,21,21,21,21,21,21,2147483773,2147483655,0,0,0,3221225479,3221225493,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,3758096417,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,1610612769,21,21,21,21,21,21,1073741845,1073741831,0,0,0,7,125,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,1073741857,109,110,111,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,3221225505,3221225505,3221225505,3221225505,21,21,21,21,21,21,21,21,21,2147483785,2147483655,0,0,0,1073741828,6,6,6,6,6,6,6,1073741841,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,3221225489,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,3221225476,0,0,0,7,137,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,1073741857,1073741857,1073741857,1073741857,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,16,6,6,6,6,6,3221225488,33,33,33,3221225489,6,6,6,6,6,2147483664,0,0,0,0,0,0,0,0,0,0,0,1073741831,125,44,45,2147483773,125,21,21,21,21,21,2147483773,125,2147483689,2147483688,2147483773,3221225479,0,0,0,0,0,0,0,0,0,0,0,16,2147483654,2147483654,2147483654,2147483654,2147483654,1073741841,2147483681,2147483681,2147483681,1073741840,2147483654,2147483654,2147483654,2147483654,2147483654,2147483664,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3221225479,21,21,21,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,137,56,57,2147483785,137,21,21,21,21,21,2147483785,137,2147483701,2147483700,2147483785,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741831,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,125,44,45,2147483773,125,21,21,21,21,21,2147483773,125,2147483689,2147483688,2147483773,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2147483655,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,137,56,57,2147483785,137,21,21,21,21,21,2147483785,137,2147483701,2147483700,2147483785,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2147483655,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,6,6,6,6,6,3221225488,33,33,33,3221225489,6,6,6,6,6,3221225476,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2147483655,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,3221225477,6,6,6,6,6,6,6,6,6,6,6,6,6,5,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,0,0,0,0,0,0,2147483653,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,1073741829,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,2147483679,2147483679,29,29,29,29,29,29,29,29,29,29,2147483679,2147483679,7,0,0,0,0,0,0,0,0,0,7,21,21,21,7,0,0,0,0,0,0,0,0,0,2147483655,31,31,2147483677,2147483677,2147483677,2147483677,2147483677,2147483677,2147483677,2147483677,2147483677,2147483677,31,31,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,7,0,0,0,0,0,0,0,0,0,7,21,21,21,7,0,0,0,0,0,0,0,0,0,2147483655,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,7,0,0,0,0,0,0,0,0,0,7,21,21,21,7,0,0,0,0,0,0,0,0,0,2147483655,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,3221225478,1073741830,1073741830,1073741830,1073741830,1073741830,5,21,21,21,7,0,0,0,0,0,0,0,0,0,7,21,21,21,7,0,0,0,0,0,0,0,0,0,2147483655,2147483669,2147483669,2147483669,2147483653,3221225478,3221225478,3221225478,3221225478,3221225478,1073741830,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,2147483664,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,21,21,21,7,0,0,0,0,0,0,0,0,0,7,21,21,21,7,0,0,0,0,0,0,0,0,0,2147483655,2147483669,2147483669,2147483669,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,21,21,21,7,0,0,0,0,0,0,0,0,0,7,21,21,21,7,0,0,0,0,0,0,0,0,0,2147483655,2147483669,2147483669,2147483669,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,21,21,21,7,0,0,0,0,0,0,0,0,0,7,21,21,21,7,0,0,0,0,0,0,0,0,0,2147483655,2147483669,2147483669,2147483669,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,3221225488,0,0,0,1073741831,21,21,21,7,0,0,0,4,6,6,6,6,6,17,21,21,21,16,6,6,6,6,6,3221225488,0,0,0,2147483655,2147483669,2147483669,2147483669,3221225479,0,0,0,1073741840,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483652,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,31,31,29,29,29,31,29,29,29,31,29,29,29,31,31,3221225479,0,0,0,1073741831,21,21,21,7,0,0,0,7,31,31,29,29,29,31,33,33,33,31,29,29,29,31,31,3221225479,0,0,0,2147483655,2147483669,2147483669,2147483669,3221225479,0,0,0,1073741831,2147483679,2147483679,2147483677,2147483677,2147483677,2147483679,29,29,29,2147483679,2147483677,2147483677,2147483677,2147483679,2147483679,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,125,21,21,21,21,21,21,21,21,21,21,21,21,21,2147483773,3221225479,0,0,0,1073741831,21,21,21,7,0,0,0,7,125,21,21,21,21,21,21,21,21,21,21,21,21,21,2147483773,3221225479,0,0,0,2147483655,2147483669,2147483669,2147483669,3221225479,0,0,0,1073741831,125,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483773,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,137,94,95,96,21,21,21,21,21,21,21,94,95,96,2147483785,3221225479,0,0,0,1073741831,21,21,21,7,0,0,0,7,137,94,95,96,21,21,21,21,21,21,21,94,95,96,2147483785,3221225479,0,0,0,2147483655,2147483669,2147483669,2147483669,3221225479,0,0,0,1073741831,137,2147483744,2147483743,2147483742,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483744,2147483743,2147483742,2147483785,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,21,106,107,108,21,21,21,21,21,21,21,106,107,108,21,3221225479,0,0,0,1073741831,21,21,21,7,0,0,0,7,21,106,107,108,21,21,21,21,21,21,21,106,107,108,21,3221225479,0,0,0,2147483655,2147483669,2147483669,2147483669,3221225479,0,0,0,1073741831,2147483669,2147483756,2147483755,2147483754,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483756,2147483755,2147483754,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,21,118,119,120,21,21,21,21,21,21,21,118,119,120,21,3221225477,2147483654,6,6,17,21,21,21,3221225477,2147483654,6,6,17,21,118,119,120,21,21,21,21,21,21,21,118,119,120,21,3221225477,2147483654,6,6,17,2147483669,2147483669,2147483669,3221225477,2147483654,6,6,17,2147483669,2147483768,2147483767,2147483766,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483768,2147483767,2147483766,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,31,29,29,29,31,21,1073741845,21,31,29,29,29,31,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,31,29,29,29,31,2147483669,3221225493,2147483669,31,29,29,29,31,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,1610612769,21,21,21,1610612769,21,21,21,1610612769,21,21,21,1610612769,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,1610612769,21,21,21,1610612769,2147483669,2147483669,2147483669,1610612769,21,21,21,1610612769,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,1610612769,21,21,21,1610612769,21,21,21,1610612769,21,21,21,1610612769,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,1610612769,21,21,21,1610612769,2147483669,2147483669,2147483669,1610612769,21,21,21,1610612769,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,1610612769,21,21,21,1610612769,1073741845,1073741845,1073741845,1610612769,21,21,21,1610612769,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,1610612769,21,21,21,1610612769,3221225493,3221225493,3221225493,1610612769,21,21,21,1610612769,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,2147483653,3221225478,1073741830,1073741830,5,1073741845,1073741845,1073741845,2147483653,3221225478,1073741830,1073741830,5,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,2147483653,3221225478,1073741830,1073741830,5,3221225493,3221225493,3221225493,2147483653,3221225478,1073741830,1073741830,5,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,21,94,95,96,21,21,21,21,21,21,21,94,95,96,21,3221225479,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741831,0,0,0,7,21,94,95,96,21,21,21,21,21,21,21,94,95,96,21,3221225479,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,1073741831,2147483669,2147483744,2147483743,2147483742,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483744,2147483743,2147483742,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,21,106,107,108,21,21,21,21,21,21,21,106,107,108,21,3221225479,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741831,0,0,0,7,21,106,107,108,21,21,21,21,21,21,21,106,107,108,21,3221225479,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,1073741831,2147483669,2147483756,2147483755,2147483754,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483756,2147483755,2147483754,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,125,118,119,120,21,21,21,21,21,21,21,118,119,120,2147483773,3221225479,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741831,0,0,0,7,125,118,119,120,21,21,21,21,21,21,21,118,119,120,2147483773,3221225479,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,1073741831,125,2147483768,2147483767,2147483766,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483768,2147483767,2147483766,2147483773,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,137,21,21,21,21,21,21,21,21,21,21,21,21,21,2147483785,3221225479,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741831,0,0,0,7,137,21,21,21,21,21,21,21,21,21,21,21,21,21,2147483785,3221225479,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,1073741831,137,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483785,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,16,6,6,6,6,6,1073741830,1073741830,1073741830,1073741830,1073741830,6,6,6,6,6,3221225476,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741831,0,0,0,16,6,6,6,6,6,3221225488,33,33,33,3221225489,6,6,6,6,6,3221225476,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,1073741828,2147483654,2147483654,2147483654,2147483654,2147483654,3221225478,3221225478,3221225478,3221225478,3221225478,2147483654,2147483654,2147483654,2147483654,2147483654,2147483664,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741831,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741831,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741831,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2147483653,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741829,1073741845,1073741845,1073741845,1073741831,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225477,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,2147483679,2147483679,29,29,29,29,29,29,29,29,29,29,2147483679,2147483679,1073741845,1073741845,1073741845,1073741831,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,31,31,2147483677,2147483677,2147483677,2147483677,2147483677,2147483677,2147483677,2147483677,2147483677,2147483677,31,31,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741831,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741831,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,2147483653,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741829,0,0,0,0,0,0,0,0,0,7,21,21,21,7,0,0,0,0,0,0,0,0,0,3221225477,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,5,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,1073741831,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,6,6,6,6,6,17,21,21,21,16,6,6,6,6,6,3221225488,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3221225479,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,1073741831,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,31,31,29,29,29,31,33,33,33,31,29,29,29,31,31,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3221225479,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,1073741831,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,125,21,21,21,21,21,21,21,21,21,21,21,21,21,2147483773,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3221225479,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,137,94,95,96,21,21,21,21,21,21,21,94,95,96,2147483785,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,4,6,6,6,6,6,17,21,21,21,16,6,6,6,6,6,3221225488,0,0,0,0,0,0,0,0,0,0,0,7,21,106,107,108,21,21,21,21,21,21,21,106,107,108,21,2147483655,0,0,0,0,0,0,0,0,0,0,0,1073741840,2147483654,2147483654,2147483654,2147483654,2147483654,2147483664,2147483669,2147483669,2147483669,2147483665,2147483654,2147483654,2147483654,2147483654,2147483654,2147483652,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,31,31,29,29,29,31,33,33,33,31,29,29,29,31,31,3221225479,0,0,0,0,0,0,0,0,0,0,0,7,21,118,119,120,21,21,21,21,21,21,21,118,119,120,21,2147483655,0,0,0,0,0,0,0,0,0,0,0,1073741831,2147483679,2147483679,2147483677,2147483677,2147483677,2147483679,2147483681,2147483681,2147483681,2147483679,2147483677,2147483677,2147483677,2147483679,2147483679,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,125,21,21,21,21,21,21,21,21,21,21,21,21,21,2147483773,3221225479,0,0,0,2147483653,6,6,6,6,6,2147483654,1073741830,17,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,2147483665,3221225478,6,2147483654,2147483654,2147483654,2147483654,2147483654,5,0,0,0,1073741831,125,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483773,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,137,94,95,96,21,21,21,21,21,21,21,94,95,96,2147483785,3221225479,0,0,0,1073741831,31,29,29,29,29,29,29,31,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,2147483679,2147483677,2147483677,2147483677,2147483677,2147483677,2147483677,2147483679,3221225479,0,0,0,1073741831,137,2147483744,2147483743,2147483742,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483744,2147483743,2147483742,2147483785,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,21,106,107,108,21,21,21,21,21,21,21,106,107,108,21,3221225479,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1610612769,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,3758096417,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225479,0,0,0,1073741831,2147483669,2147483756,2147483755,2147483754,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483756,2147483755,2147483754,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,21,118,119,120,21,21,21,21,21,21,21,118,119,120,21,3221225479,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1610612769,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,3758096417,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225479,0,0,0,1073741831,2147483669,2147483768,2147483767,2147483766,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483768,2147483767,2147483766,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,3221225477,2147483654,2147483654,2147483654,1073741829,1073741845,1073741845,1073741845,2147483653,1073741830,1073741830,1073741830,3221225488,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,1073741840,3221225478,3221225478,3221225478,5,3221225493,3221225493,3221225493,3221225477,6,6,6,1073741829,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,31,29,29,29,31,1073741845,1073741845,1073741845,1073741831,0,0,0,7,21,94,95,96,21,21,21,21,21,21,21,94,95,96,21,2147483655,0,0,0,3221225479,3221225493,3221225493,3221225493,2147483679,2147483677,2147483677,2147483677,2147483679,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,2684354593,2147483669,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741831,0,0,0,7,21,106,107,108,21,21,21,21,21,21,21,106,107,108,21,2147483655,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,21,536870945,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,1610612769,21,21,21,21,21,21,1073741845,1073741831,0,0,0,7,125,118,119,120,21,21,21,21,21,21,21,118,119,120,2147483773,2147483655,0,0,0,3221225479,3221225493,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,3758096417,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,3221225489,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,3221225476,0,0,0,7,137,21,21,21,21,21,21,21,21,21,21,21,21,21,2147483785,2147483655,0,0,0,1073741828,6,6,6,6,6,6,6,1073741841,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,3221225479,0,0,0,0,0,0,0,0,0,0,0,16,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,2147483664,0,0,0,0,0,0,0,0,0,0,0,2147483655,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,21,94,95,96,21,21,21,21,21,21,21,94,95,96,21,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,2147483669,2147483744,2147483743,2147483742,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483744,2147483743,2147483742,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,21,106,107,108,21,21,21,21,21,21,21,106,107,108,21,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,2147483669,2147483756,2147483755,2147483754,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483756,2147483755,2147483754,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,125,118,119,120,21,21,21,21,21,21,21,118,119,120,2147483773,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,125,2147483768,2147483767,2147483766,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483768,2147483767,2147483766,2147483773,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,7,137,21,21,21,21,21,21,21,21,21,21,21,21,21,2147483785,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,137,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483785,2147483655,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,16,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,1073741829,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3221225477,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483664,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,3221225488,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741840,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483652,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,31,31,34,23,36,31,9,9,9,31,36,23,29,31,31,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,2147483679,2147483679,2147483677,2147483671,2147483684,2147483679,2147483657,2147483657,2147483657,2147483679,2147483684,2147483682,2147483671,2147483679,2147483679,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,3221225505,3221225505,3221225505,3221225505,3221225505,3221225505,3221225505,3221225505,21,21,21,21,21,21,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,1073741857,1073741857,1073741857,1073741857,1073741857,1073741857,1073741857,1073741857,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,91,92,93,3221225505,91,92,93,3221225505,21,21,121,124,125,21,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,2147483669,2147483773,2147483772,2147483769,2147483669,2147483669,1073741857,2147483735,2147483734,2147483733,1073741857,85,86,87,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,103,104,105,3221225505,103,104,105,3221225505,21,21,133,136,137,21,2147483655,0,0,0,0,0,0,0,0,0,0,0,1073741840,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,3221225488,0,0,0,0,0,0,0,0,0,0,0,7,2147483669,2147483785,2147483784,2147483781,2147483669,2147483669,1073741857,2147483747,2147483746,2147483745,1073741857,97,98,99,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,115,116,117,3221225505,115,116,117,3221225505,21,21,21,21,21,21,2147483655,0,0,0,0,0,0,0,0,0,0,0,1073741831,31,31,29,29,29,31,9,10,10,31,29,29,29,31,31,3221225479,0,0,0,0,0,0,0,0,0,0,0,7,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,1073741857,2147483759,2147483758,2147483757,1073741857,109,110,111,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,3221225505,3221225505,3221225505,3221225505,3221225505,3221225505,3221225505,3221225505,21,21,123,124,125,21,2147483665,3221225478,6,2147483654,2147483654,2147483654,2147483654,2147483654,5,0,0,0,1073741831,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,3221225479,0,0,0,2147483653,6,6,6,6,6,2147483654,1073741830,17,2147483669,2147483773,2147483772,2147483771,2147483669,2147483669,1073741857,1073741857,1073741857,1073741857,1073741857,1073741857,1073741857,1073741857,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,91,92,93,3221225505,91,92,93,3221225505,21,21,135,136,137,21,2147483679,2147483677,2147483677,2147483677,2147483677,2147483677,2147483677,2147483679,3221225479,0,0,0,1073741831,21,65,21,21,65,21,21,21,21,21,65,21,21,65,21,3221225479,0,0,0,1073741831,31,29,29,29,29,29,29,31,2147483669,2147483785,2147483784,2147483783,2147483669,2147483669,1073741857,2147483735,2147483734,2147483733,1073741857,94,95,96,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,103,104,105,3221225505,103,104,105,3221225505,21,21,21,21,21,21,3758096417,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225479,0,0,0,1073741831,21,77,21,21,77,21,21,21,21,21,77,21,21,77,21,3221225479,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1610612769,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,1073741857,2147483747,2147483746,2147483745,1073741857,106,107,108,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,115,116,117,3221225505,115,116,117,3221225505,21,21,21,21,21,21,3758096417,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225479,0,0,0,1073741831,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,3221225479,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1610612769,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,1073741857,2147483759,2147483758,2147483757,1073741857,118,119,120,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,3221225505,3221225505,3221225505,3221225505,3221225505,3221225505,3221225505,3221225505,21,21,21,21,21,21,1073741840,3221225478,3221225478,3221225478,5,3221225493,3221225493,3221225493,3221225477,6,6,6,1073741829,21,65,21,21,65,21,21,21,21,21,65,21,21,65,21,3221225477,2147483654,2147483654,2147483654,1073741829,1073741845,1073741845,1073741845,2147483653,1073741830,1073741830,1073741830,3221225488,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,1073741857,1073741857,1073741857,1073741857,1073741857,1073741857,1073741857,1073741857,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,94,95,96,3221225505,21,21,21,21,21,21,21,21,21,2147483773,2147483655,0,0,0,3221225479,3221225493,3221225493,3221225493,2147483679,2147483677,2147483677,2147483677,2147483679,21,77,21,21,77,21,21,21,21,21,77,21,21,77,21,31,29,29,29,31,1073741845,1073741845,1073741845,1073741831,0,0,0,7,125,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,1073741857,85,86,87,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,106,107,108,3221225505,21,21,21,21,21,21,21,21,21,2147483785,2147483655,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,21,536870945,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,2684354593,2147483669,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741831,0,0,0,7,137,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,1073741857,97,98,99,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,118,119,120,3221225505,21,21,21,21,21,21,21,21,21,2147483773,2147483655,0,0,0,3221225479,3221225493,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,3758096417,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,1610612769,21,21,21,21,21,21,1073741845,1073741831,0,0,0,7,125,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,1073741857,109,110,111,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,3221225505,3221225505,3221225505,3221225505,3221225505,21,21,21,21,21,21,21,21,21,2147483785,2147483655,0,0,0,1073741828,6,6,6,6,6,6,6,1073741841,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,3221225489,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,3221225476,0,0,0,7,137,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,1073741857,1073741857,1073741857,1073741857,1073741857,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,16,6,6,6,6,6,3221225488,33,33,33,3221225489,6,6,6,6,6,2147483664,0,0,0,0,0,0,0,0,0,0,0,1073741831,125,44,45,2147483773,125,21,21,21,21,21,2147483773,125,2147483689,2147483688,2147483773,3221225479,0,0,0,0,0,0,0,0,0,0,0,16,2147483654,2147483654,2147483654,2147483654,2147483654,1073741841,2147483681,2147483681,2147483681,1073741840,2147483654,2147483654,2147483654,2147483654,2147483654,2147483664,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3221225479,21,21,21,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,137,56,57,2147483785,137,21,21,21,21,21,2147483785,137,2147483701,2147483700,2147483785,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741831,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,125,44,45,2147483773,125,21,21,21,21,21,2147483773,125,2147483689,2147483688,2147483773,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2147483655,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,137,56,57,2147483785,137,21,21,21,21,21,2147483785,137,2147483701,2147483700,2147483785,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2147483655,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,6,6,6,6,6,3221225488,33,33,33,3221225489,6,6,6,6,6,3221225476,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2147483655,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,3221225477,6,6,6,6,6,6,6,6,6,6,6,6,6,5,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,0,0,0,0,0,0,2147483653,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,1073741829,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,2147483679,2147483679,29,29,29,29,29,29,29,29,29,29,2147483679,2147483679,7,0,0,0,0,0,0,0,0,0,7,21,21,21,7,0,0,0,0,0,0,0,0,0,2147483655,31,31,2147483677,2147483677,2147483677,2147483677,2147483677,2147483677,2147483677,2147483677,2147483677,2147483677,31,31,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,7,0,0,0,0,0,0,0,0,0,7,21,21,21,7,0,0,0,0,0,0,0,0,0,2147483655,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,7,0,0,0,0,0,0,0,0,0,7,21,21,21,7,0,0,0,0,0,0,0,0,0,2147483655,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,3221225478,1073741830,1073741830,1073741830,1073741830,1073741830,5,21,21,21,7,0,0,0,0,0,0,0,0,0,7,21,21,21,7,0,0,0,0,0,0,0,0,0,2147483655,2147483669,2147483669,2147483669,2147483653,3221225478,3221225478,3221225478,3221225478,3221225478,1073741830,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,2147483664,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,21,21,21,7,0,0,0,0,0,0,0,0,0,7,21,21,21,7,0,0,0,0,0,0,0,0,0,2147483655,2147483669,2147483669,2147483669,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,21,21,21,7,0,0,0,0,0,0,0,0,0,7,21,21,21,7,0,0,0,0,0,0,0,0,0,2147483655,2147483669,2147483669,2147483669,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,21,21,21,7,0,0,0,0,0,0,0,0,0,7,21,21,21,7,0,0,0,0,0,0,0,0,0,2147483655,2147483669,2147483669,2147483669,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,3221225488,0,0,0,1073741831,21,21,21,7,0,0,0,4,6,6,6,6,6,17,21,21,21,16,6,6,6,6,6,3221225488,0,0,0,2147483655,2147483669,2147483669,2147483669,3221225479,0,0,0,1073741840,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483652,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,31,31,29,29,29,31,29,29,29,31,29,29,29,31,31,3221225479,0,0,0,1073741831,21,21,21,7,0,0,0,7,31,31,29,29,29,31,33,33,33,31,29,29,29,31,31,3221225479,0,0,0,2147483655,2147483669,2147483669,2147483669,3221225479,0,0,0,1073741831,2147483679,2147483679,2147483677,2147483677,2147483677,2147483679,29,29,29,2147483679,2147483677,2147483677,2147483677,2147483679,2147483679,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,125,21,21,21,21,21,21,21,21,21,21,21,21,21,2147483773,3221225479,0,0,0,1073741831,21,21,21,7,0,0,0,7,125,21,21,21,21,21,21,21,21,21,21,21,21,21,2147483773,3221225479,0,0,0,2147483655,2147483669,2147483669,2147483669,3221225479,0,0,0,1073741831,125,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483773,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,137,94,95,96,21,21,21,21,21,21,21,94,95,96,2147483785,3221225479,0,0,0,1073741831,21,21,21,7,0,0,0,7,137,94,95,96,21,21,21,21,21,21,21,94,95,96,2147483785,3221225479,0,0,0,2147483655,2147483669,2147483669,2147483669,3221225479,0,0,0,1073741831,137,2147483744,2147483743,2147483742,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483744,2147483743,2147483742,2147483785,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,21,106,107,108,21,21,21,21,21,21,21,106,107,108,21,3221225479,0,0,0,1073741831,21,21,21,7,0,0,0,7,21,106,107,108,21,21,21,21,21,21,21,106,107,108,21,3221225479,0,0,0,2147483655,2147483669,2147483669,2147483669,3221225479,0,0,0,1073741831,2147483669,2147483756,2147483755,2147483754,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483756,2147483755,2147483754,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,21,118,119,120,21,21,21,21,21,21,21,118,119,120,21,3221225477,2147483654,6,6,17,21,21,21,3221225477,2147483654,6,6,17,21,118,119,120,21,21,21,21,21,21,21,118,119,120,21,3221225477,2147483654,6,6,17,2147483669,2147483669,2147483669,3221225477,2147483654,6,6,17,2147483669,2147483768,2147483767,2147483766,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483768,2147483767,2147483766,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,31,29,29,29,31,21,1073741845,21,31,29,29,29,31,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,31,29,29,29,31,2147483669,3221225493,2147483669,31,29,29,29,31,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,1610612769,21,21,21,1610612769,21,21,21,1610612769,21,21,21,1610612769,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,1610612769,21,21,21,1610612769,2147483669,2147483669,2147483669,1610612769,21,21,21,1610612769,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,1610612769,21,21,21,1610612769,21,21,21,1610612769,21,21,21,1610612769,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,1610612769,21,21,21,1610612769,2147483669,2147483669,2147483669,1610612769,21,21,21,1610612769,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,1610612769,21,21,21,1610612769,1073741845,1073741845,1073741845,1610612769,21,21,21,1610612769,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,1610612769,21,21,21,1610612769,3221225493,3221225493,3221225493,1610612769,21,21,21,1610612769,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,2147483653,3221225478,1073741830,1073741830,5,1073741845,1073741845,1073741845,2147483653,3221225478,1073741830,1073741830,5,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,2147483653,3221225478,1073741830,1073741830,5,3221225493,3221225493,3221225493,2147483653,3221225478,1073741830,1073741830,5,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,21,94,95,96,21,21,21,21,21,21,21,94,95,96,21,3221225479,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741831,0,0,0,7,21,94,95,96,21,21,21,21,21,21,21,94,95,96,21,3221225479,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,1073741831,2147483669,2147483744,2147483743,2147483742,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483744,2147483743,2147483742,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,21,106,107,108,21,21,21,21,21,21,21,106,107,108,21,3221225479,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741831,0,0,0,7,21,106,107,108,21,21,21,21,21,21,21,106,107,108,21,3221225479,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,1073741831,2147483669,2147483756,2147483755,2147483754,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483756,2147483755,2147483754,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,125,118,119,120,21,21,21,21,21,21,21,118,119,120,2147483773,3221225479,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741831,0,0,0,7,125,118,119,120,21,21,21,21,21,21,21,118,119,120,2147483773,3221225479,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,1073741831,125,2147483768,2147483767,2147483766,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483768,2147483767,2147483766,2147483773,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,137,21,21,21,21,21,21,21,21,21,21,21,21,21,2147483785,3221225479,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741831,0,0,0,7,137,21,21,21,21,21,21,21,21,21,21,21,21,21,2147483785,3221225479,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,1073741831,137,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483785,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,16,6,6,6,6,6,1073741830,1073741830,1073741830,1073741830,1073741830,6,6,6,6,6,3221225476,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741831,0,0,0,16,6,6,6,6,6,3221225488,33,33,33,3221225489,6,6,6,6,6,3221225476,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,1073741828,2147483654,2147483654,2147483654,2147483654,2147483654,3221225478,3221225478,3221225478,3221225478,3221225478,2147483654,2147483654,2147483654,2147483654,2147483654,2147483664,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741831,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741831,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741831,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2147483653,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741829,1073741845,1073741845,1073741845,1073741831,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225477,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,2147483679,2147483679,29,29,29,29,29,29,29,29,29,29,2147483679,2147483679,1073741845,1073741845,1073741845,1073741831,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,31,31,2147483677,2147483677,2147483677,2147483677,2147483677,2147483677,2147483677,2147483677,2147483677,2147483677,31,31,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741831,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741831,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225479,0,0,0,0,0,0,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,2147483653,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741830,1073741829,0,0,0,0,0,0,0,0,0,7,21,21,21,7,0,0,0,0,0,0,0,0,0,3221225477,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,3221225478,5,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,1073741831,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,6,6,6,6,6,17,21,21,21,16,6,6,6,6,6,3221225488,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3221225479,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,1073741831,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,31,31,29,29,29,31,33,33,33,31,29,29,29,31,31,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3221225479,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,1073741831,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,125,21,21,21,21,21,21,21,21,21,21,21,21,21,2147483773,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3221225479,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,137,94,95,96,21,21,21,21,21,21,21,94,95,96,2147483785,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,4,6,6,6,6,6,17,21,21,21,16,6,6,6,6,6,3221225488,0,0,0,0,0,0,0,0,0,0,0,7,21,106,107,108,21,21,21,21,21,21,21,106,107,108,21,2147483655,0,0,0,0,0,0,0,0,0,0,0,1073741840,2147483654,2147483654,2147483654,2147483654,2147483654,2147483664,2147483669,2147483669,2147483669,2147483665,2147483654,2147483654,2147483654,2147483654,2147483654,2147483652,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,31,31,29,29,29,31,33,33,33,31,29,29,29,31,31,3221225479,0,0,0,0,0,0,0,0,0,0,0,7,21,118,119,120,21,21,21,21,21,21,21,118,119,120,21,2147483655,0,0,0,0,0,0,0,0,0,0,0,1073741831,2147483679,2147483679,2147483677,2147483677,2147483677,2147483679,2147483681,2147483681,2147483681,2147483679,2147483677,2147483677,2147483677,2147483679,2147483679,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,125,21,21,21,21,21,21,21,21,21,21,21,21,21,2147483773,3221225479,0,0,0,2147483653,6,6,6,6,6,2147483654,1073741830,17,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,2147483665,3221225478,6,2147483654,2147483654,2147483654,2147483654,2147483654,5,0,0,0,1073741831,125,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483773,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,137,94,95,96,21,21,21,21,21,21,21,94,95,96,2147483785,3221225479,0,0,0,1073741831,31,29,29,29,29,29,29,31,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,2147483679,2147483677,2147483677,2147483677,2147483677,2147483677,2147483677,2147483679,3221225479,0,0,0,1073741831,137,2147483744,2147483743,2147483742,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483744,2147483743,2147483742,2147483785,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,21,106,107,108,21,21,21,21,21,21,21,106,107,108,21,3221225479,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1610612769,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,3758096417,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225479,0,0,0,1073741831,2147483669,2147483756,2147483755,2147483754,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483756,2147483755,2147483754,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,21,118,119,120,21,21,21,21,21,21,21,118,119,120,21,3221225479,0,0,0,1073741831,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1610612769,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,3758096417,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,3221225479,0,0,0,1073741831,2147483669,2147483768,2147483767,2147483766,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483768,2147483767,2147483766,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,3221225477,2147483654,2147483654,2147483654,1073741829,1073741845,1073741845,1073741845,2147483653,1073741830,1073741830,1073741830,3221225488,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,1073741840,3221225478,3221225478,3221225478,5,3221225493,3221225493,3221225493,3221225477,6,6,6,1073741829,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,31,29,29,29,31,1073741845,1073741845,1073741845,1073741831,0,0,0,7,21,94,95,96,21,21,21,21,21,21,21,94,95,96,21,2147483655,0,0,0,3221225479,3221225493,3221225493,3221225493,2147483679,2147483677,2147483677,2147483677,2147483679,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,2684354593,2147483669,1073741845,1073741845,1073741845,1073741845,1073741845,1073741845,1073741831,0,0,0,7,21,106,107,108,21,21,21,21,21,21,21,106,107,108,21,2147483655,0,0,0,3221225479,3221225493,3221225493,3221225493,3221225493,3221225493,3221225493,21,536870945,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,1610612769,21,21,21,21,21,21,1073741845,1073741831,0,0,0,7,125,118,119,120,21,21,21,21,21,21,21,118,119,120,2147483773,2147483655,0,0,0,3221225479,3221225493,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,3758096417,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,3221225489,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,3221225476,0,0,0,7,137,21,21,21,21,21,21,21,21,21,21,21,21,21,2147483785,2147483655,0,0,0,1073741828,6,6,6,6,6,6,6,1073741841,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,3221225479,0,0,0,0,0,0,0,0,0,0,0,16,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,2147483664,0,0,0,0,0,0,0,0,0,0,0,2147483655,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,21,94,95,96,21,21,21,21,21,21,21,94,95,96,21,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,2147483669,2147483744,2147483743,2147483742,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483744,2147483743,2147483742,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,21,106,107,108,21,21,21,21,21,21,21,106,107,108,21,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,2147483669,2147483756,2147483755,2147483754,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483756,2147483755,2147483754,2147483669,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,125,118,119,120,21,21,21,21,21,21,21,118,119,120,2147483773,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,125,2147483768,2147483767,2147483766,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483768,2147483767,2147483766,2147483773,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,7,137,21,21,21,21,21,21,21,21,21,21,21,21,21,2147483785,3221225479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1073741831,137,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483669,2147483785,2147483655,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,16,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,1073741829,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3221225477,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483654,2147483664,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +