From 55bc9e8da79e742376d71cdde4cecf8da8d8d515 Mon Sep 17 00:00:00 2001 From: VladimirMangos Date: Wed, 3 Feb 2010 14:40:53 +0300 Subject: [PATCH] Include build in to .map files data. This let not update map fiels format version at switch to new build for prevent use wrong .map files. Build checked at loading. --- contrib/extractor/System.cpp | 30 ++++++++++++++++-------------- contrib/extractor/ad.exe | Bin 165888 -> 165888 bytes src/game/Map.cpp | 8 +++++--- src/game/Map.h | 1 + src/game/Unit.cpp | 6 ++++++ 5 files changed, 28 insertions(+), 17 deletions(-) diff --git a/contrib/extractor/System.cpp b/contrib/extractor/System.cpp index 11a47baa2..5f2885f1b 100644 --- a/contrib/extractor/System.cpp +++ b/contrib/extractor/System.cpp @@ -275,16 +275,17 @@ void ReadLiquidTypeTableDBC() // // Map file format data -#define MAP_MAGIC 'SPAM' -#define MAP_VERSION_MAGIC '0.1w' -#define MAP_AREA_MAGIC 'AERA' -#define MAP_HEIGHT_MAGIC 'TGHM' -#define MAP_LIQUID_MAGIC 'QILM' +static char const* MAP_MAGIC = "MAPS"; +static char const* MAP_VERSION_MAGIC = "v1.1"; +static char const* MAP_AREA_MAGIC = "AREA"; +static char const* MAP_HEIGHT_MAGIC = "MHGT"; +static char const* MAP_LIQUID_MAGIC = "MLIQ"; struct map_fileheader { uint32 mapMagic; uint32 versionMagic; + uint32 buildMagic; uint32 areaMapOffset; uint32 areaMapSize; uint32 heightMapOffset; @@ -362,7 +363,7 @@ uint8 liquid_type[ADT_CELLS_PER_GRID][ADT_CELLS_PER_GRID]; bool liquid_show[ADT_GRID_SIZE][ADT_GRID_SIZE]; float liquid_height[ADT_GRID_SIZE+1][ADT_GRID_SIZE+1]; -bool ConvertADT(char *filename, char *filename2, int cell_y, int cell_x) +bool ConvertADT(char *filename, char *filename2, int cell_y, int cell_x, uint32 build) { ADT_file adt; @@ -381,8 +382,9 @@ bool ConvertADT(char *filename, char *filename2, int cell_y, int cell_x) // Prepare map header map_fileheader map; - map.mapMagic = MAP_MAGIC; - map.versionMagic = MAP_VERSION_MAGIC; + map.mapMagic = *(uint32 const*)MAP_MAGIC; + map.versionMagic = *(uint32 const*)MAP_VERSION_MAGIC; + map.buildMagic = build; // Get area flags data for (int i=0;ifHe3W$R7}JXFQI`^k$?jQ9x!Zc zhssRz@=#GxV-A%W2zeP*O9fq-Ic!WOHEY^37e|yoUoFL>{#HvYDrmWCZD^i^()zIfuSUCXlD; z_hb|~Y#hjc#5=ZMi{`R-a(Hw}X*=tTUn++3yz>G2v)u_2L-!A;AKLs8#|g0}MZBR^ zQQlN=HC=kwSfI2cB-&Us(4CM+=$1jDZtpjNYg3>r{=TRn9G9MyEO~uOza6x7=wr={ zr~)y$^4TD8NDJt*_MtrANDtVn-S&RUS~7ZHOQ(az%l6|4Swy`Y0?3C{>+lMBjb3o@ zCAaAvhfE*w`|75Fy{u6OI#jA0xGM zx=aqxYfk6L_w@LXKvGA4A2Qip{VvBDTBBNo=Yyd?C8;`96Pzq{(izSH?w=jxIFuo* z0Xd<)I#!dVlXe@+oFfR?WIQ-@3~_z5-qL>lqL8MALZT)-|ZKMgVA3H05yEh<)E1I-)jESooPsj?Y zcCT^y5naYO7}l$u)~bZriX_SXV_M?jOE0*mkk@IjI#8|ukmK|&b7Q#bM2#Zp2&BuZ zj?g^yF!B$&Q9XiuMH|$!$$V;7PaGQDU!N+4DWubf)err-k!f-=6w8_(fu_%?(j%6X z(^($guE(K7?ugZrc!f?%p~W6yDTtU8|KlrRBD~(CM9}u#a z4)E8Kr8L1mfILB0`p+iI>Bs&L@#ELhEB+7i{95W2FmL2f1x&jt@<>4dx}nU4`k_x? z6jC)Bp$8-3q^oq37SnA3!~Fx_;J93s&@TC~j9TcH+>p`dKa3KWBJ@b#(+dG}9Ddu* zacR;O{7sR5qLVe#_)%}r=QK|Z6Xh6CELylAq-j2Mwixd6MMLID$Ee4Mr`7ItvLP(M zDg*J?rMxMBpiX+i`1XjSgiJH88};e{=ZyY7bdp^-;-LihF?(2BWoId77n-VdmGMf6 z+e6D9T0l(nhlifx$L*#IgToR(-z_t?$kCxolDcH2N=rGH%eBen^no@poWA2l1kIWq zjN7G=6~JP+5}Yz8EnT01(3fnt(eHxYlt*4b=Y7%7JHZd~6YJ^NaW9aMY123tUQ4;XX-p*f~SqZaiy(F$Y@!J=`mlZ(lCLT zA)R!|ga^Gp+IX)XRcv`!G(Y5c<88CqEN!RnOis-o{qoXt;oiQb(UK$@w4xIaIj zlE#Op1Sh{E4=o0if8ryIk4h&MW5m*=HLwih)@!vAieR;Y9t-#MT2^sSH?ta5_l!<_ zA;MR+8iS(`#aN|D*J)6MH`z*OM2sP;=(>n7vW(V8jOB;FL(fN4l27Tv*KhOUiF9kk#%W|JaKN~LX)Ii%S*F=`><-D{{gX(`!E?@XFX zl4xm4?1cODD&;okVX#nnI2V)4gmG)Dejqm$kOiNA&FE zaioyiPg%|TY^6_688!Ci7P<3_778u%4=K1beJwg8b=*%q%BY{ylT%#B?z_J(NP)WT z_fxYNwSo@Oy3SjBf89}5mw7)`X$xxn{ZuWZ2H#IDVpNYUv_!j{yg@H(M-T&biq63z z_e6A{+7I#kH)~=EHAPQH0FxLOYz}TQ&ylz3_L#ZkN7@rJW>iJrtY%xIA%+WS)nV;X zW$!|Sal*CAe2r4dp);mF<>`Q+!|;SO9f{XCqOvmHw<6w2II*zvUHaYBRHxeC`>pD+ z2!JThI)kA90TpT3OTp{J&gBQH~%8RJxX%L3Wu zlO{=2J7c8B4{yRZRhmFd4NNL8tf*L8F-fH3v}A^x-GosEJBTl2*}%nUVac?ev$K9yr)2 z6QA@*l-sJxn;gq)?wZX)zQzlyCZ^y!^p!+E@;v<{vBB|od5Bbo9&R9LnWcYL$xi4dBJfX_nlfV0=?&r8D!ImhFLh zbuC($A7=zCmLP;LjpwARAPBCRr7@hq3l3RGE6X%k-8f+gbaxZN96D~=Ytj}OZPNd1Y5jbuZ>LTL> zhiqs-pciSt0)tDCC;?$eNE4)I=TydO^kwJsT|$oKR3>V2ds%pn>vH@Ec5^wEsq|Of z@PQ$}RL2ppxKQ6D6R|V4Cq2TuUBSL_*0vRc^Z?CS?sRnfq((9JA)t)YV$~=z#^orKBpH4Ls?5o%IaX z_9OCLy89@K&Zogf8|HaCvS7t|UZ<~RqxvSjFmJKlah9D*r_LYalP0Xxggfq!cd&`o z_=X&_ITSv7@Y+zJZTXj_XjnsQ=1(N=7>~|xA$HxYRgZD=0&k+JLS^LvO%0OH(->dN z=rx*AW-4<)mwL_+meDl4=)whrEaN033P_Q&k_1 zNS0m$#n9?&I3RnBb1Y-y!c?ScVso96rD9sO*wcH7%;kia2`yg`A7U;k(oEylO{#tc z%p7f6JhIpq9FF@FHR;n}OysSiV`R5$+AXXEkleo)fv!T@sOXWmM z%WOJ(i68kV&07*OzG4A8rKzC^OE%0|+}|9g-?~P_8cZ<`yF2}QNud8}=tzNe`=@7rQRvu*UGVzF4f3Oy8;oUl3r*xn-?u?Ab2lv z>f3zKp-=jEh>b{JhcL|6ZHN{w9Z%NMx0Y(itF&#Y`>=8^rbGP+n=BDn#@0IEg(@~# zdjEx-kwl=Q@b@)3J7=Uyf$>22V_&r2N=tGkjLbQ2Hp3#9!)5Y3v6F1SF`IJ-rs#u| zIKx!Q>!##KFXX6sp^z93o+|= zE2&oRQhf9*Op3+pD4e6kYF36?Ddk;+O%YB&@Ky;3Jp2sbB}otEGK<*IM&axjh&^3% z7&{RsMZe89{Q?*L0jBIEmI<)I`)BYThrVUv*xvq8EJXeBgJVteA7|~4;(ZNV^eeq5 zSxA4?dy#0WT0WjUOs6b&TR!R?95Pywod=Ssx zjWRWv%xjVtP0IC%`(rsf4Nl;b^lZ1#?F#)dj+49)4wxn(H_Okji>RK?rC|<-C!DA>_yWG`lV?7%Dt^0h^=-?He z6IT4syj8)vuC}7Tj}98W*E3fX_b}i6tt+Zi|1FX%3;!E^ zjw!v8pz6Oc#iDfI`8X3K>okkPCM!L+Ozy38{ZA`qo^^O;UpU8TuWU=P}Y+9WAw2{XeNx_qUw(cE~PnX9*GGQq&&DG<||=_k^# zW_b);8DmA6CYu@cHBQW(C+IJ$hI?mQbVIRXG*oQS=#@}W4;9H$7Y$tP6?;_9AAJ;N zmT9)3xh^dorm#1KB=FaQKUp$#uw5uN-q4~n+|{nFz=Gh?EZOPwm(UuAhmzI9Qs&^y z$*h2B%nD8#1T*j+#LjqL!ePT_v5`j{H@wYWjvUx*Ns?Y(3IqxwfT>Pc zt8j+UNe5}y>VRUGWVXhpLS*lPVcqDlj*jSir!Bp56iR!S(lSjeO7{)*1(2*m9m+Pp z0kTfEUc0l!)0550KxxDfh*9BvMR0Y(U;6B0&g66Y(qkh6c0a>$k$?5O*PtLo;7!l5 z>;#56S0Odi?;jgCd1IUG34M~FlqLtrPRNhU*A%X^mBP>hXH`9XQW#OB$p^`wN$twF ziv*e7l~7%tOYz+zc2yFY=Y$)Q-;mE$ptm|0Eu4^oFeE}xWLH79^i4muFOV0~Tnv{L zk$)CwP(4Fx>{nfnd>Xo%#kv|OeS^IbJY%FS{dg*nHyrlre1!fhZyK&f$E*n;DfE#w zo+BqNhH&{+S`pb&5F|-B0m@f7NnSQObp(zoF!U>0vnGA?2=qSJR-XZ55l2<{Yu7{sL8|p zt3bJOo4nK?j@9II($gmqS}vb-*de&l(Uq*D2}w}i4Niqr4*~jYv}e>7a)mA4?vm-H%Tk9=F$QhKft59)wf8m-N7s@}TO~1-8;~8kaxTWd?>4Rl}v9 z3o#t4S;a;AY`!ml^H*Az?}zt}&+`L9p0|~Q#*0m+&L1#=QuIaWhqPpoWzHOs-{75O zW0+TT(gx~V5XvjPXj*|!@!pwi0-Z)hOX(GM*6f=k97=Q2a2ddkkm>pkCbe}T{M5s8 zA0dbSd7&;%CpF=?h0V?IPjiSl?$+t_J4)n%QR|)X{+lEXn~yO})%Ye$ z5yf&lHBPYedfD|sV3IN+K23Vy3KOfkY3l_Ee11&%FVFa=30EcOU)lPbuFqnusW`F6`XW^0dtfJq8;@` zOx_PNLD3azQA_g22&%VPPm=UoSp6Z?&yi}naGB8s`_iQ!f0sKiIY5_yOINsr-PRuu zX_BVTVD4ppZ8=U)th>Uy%%umOpkx-+6~5)P^DDV~>`qBIDYa~;_D@z3TVw5$&+z;= z+l=l-53%nN)1GM`xats0R!Tn|q=DWZ+$ad@l9bb30v2PkS+As`e3qz z{<&U{E21UE&kneb#z*Xq)9&Ku#{Bpa1RY*D_mJw}UWw$l5PhFOcA-dLFDV^y|Ha_F z<7a|pvCMVWpLU=bv0h%aP4c-x!Df~Q7b)0%vCcn=El6KTOG-x$J=G`PaK-v1=fl!@ zWIA=(Fy+7WhHn+=%Nt@y3B9;solD@&erLc~%K}c98GOe}7#FDZg4$5F6kr1l#=Q6C zr1=MBt6Z2>p&(~Vqd#R989y|U4=kO>4gf9p_}{5wsv=5rHDbRQ6uf5FH;}>`fK!KI*#Pg zU#On^!rEQdGBbsUx7>S;=<#7E%%RoTJ9DwbHA2r0XCSl+*?3(qm~Q% zP|HmLY5@*yU4i(wwLCZ9_})9K6v0aL<_PBrj|fs%kdUa+9f?*4vM#FYeDen$iR0{1 z*X7It2X58U*+yJR8$U3fC;r{Tp}@&;};q z-_7W=K{yxk*?-tzwcs-$NVWm(Lp}>>5oplI4#muH)@#T87eZX*J_+spJTUD4;DA2O zA?SU-hH#y1$lvuIx~x5KE@qDC9RZ;|+!0gL~?7J}pvV77n#AH&dR1?zvG70eSB z0|YON`#)m>S`1fxA8{-DdBQ-o5W`^)b_k_O%`U3&N|fA$cqItNHO)^F#C6x9GKEtEc0Vp( z+K3z4&m9j|HW-VKXnAtf*mSIv5Xl(xg_`in#m3Czj}u;Vo}T)ryLb3GEoatLho0AR zHAov#tVzJ1e4v)vo(N=&51r7&Xc$Mpsf~6O0}O{rb0=>&LJYT*Yb&nrF>AK6THG0U zB2fYy&;tqGfCO{^?R4vj=|dT#U}ox~fCM0uUOTZgv*`k(|8W*Jc$1TYzoAZoovxwM`#tv8N5?c0dBK<+lCiTJ`qFYWq;>&7;frcz4SDBz#a7c;n^m4J^t5i{&FH?sxru>2CH414%x7j?m zMTlm<39@b6V$A!}iI9D?^s98YWj)cHRPTWs5eS*wb+?yZV(k!a;R9g%4az z7oUC$1&6QQNrG|2*AWU77M+bJ$LZd)t1;rP=Pue1z47`*Ear8_>hDGjAQeXAPxh?z z>CZnQDCpkHPZNpycWpq^JzbBX!u84&o>x9f)2`m)ci(2=F}(3F+2Q+cTf!rprAI-# z0jO_NyAz`rC*ou3ZdUbQ+3SwO~Z`r?U%p^Q^7Gld6$qre5a zrh93m_U^p^>Av${10)tz2oT0xlZt#Hu!9b{=F4mEQsc=$mRvj;Jc2R6o*SsX4Jc4l z0WN?SpaCY{rQ_QYhFbLMK*#{}K#|emxAT}t0=<0w8I~-+v6l~gln(jbKoaQI-?t*x z#@q}fO~%xlpYUUv%5Wy<-SA#wMmU?>aF$DVM}A! zrf6}Kq7wh8#_RUVC8B64kIET=P z;%-AOiN*G0q2h(X#DmvFiamo#(Cq(#fZJ99uqUl|6btOrq(|}9 zgN>P5uM^igk_UKYxwzet_zaQtyH>$CcJ_p6;t5Bh4rV5rcd|-m=wO}MwFWE(2bsMy z4v~|q(g$WE8nXTIr7l!-b0WhvJ7RFqFi)#o&wf#*(Q9CZPVmlWJ^!lmS=KqI&u}9C z#7TVGi9Afy;(jL*$3yEKClbigQA5Z=q7$DTLY^c$UUViwU>)mBCR(-|mr}DGyXtTWih^D))LRN!FAgO$)F(WnxyrBxkaq23bk_g?%Wvj~rkTTFs;vu&B84J; zXEKx2iknbs>X^ihUQWEN{p6>z(!Dx2_1NDpBD^YS5XjZfI3!`qGV566Z$d zK^Ls5k{R#bLeI`nag~}xJS6X?6QIfiqqqa6VnKE+z3YVW$RCg<4afcM+?|Z6a++QU z3m3mulX_AoZWxB2f@;MNhY=HexWsk#9f-ieogR<)5a>bH!>9!;T5dzCvzB6cF&ZdvhGP1b97QP?q%jy zdWVZ|dXbS3e#(nvk__=dZ_*0KT=yoUNx0}eoV@Wfdk5{U?L^(C|YN*#ZB?gAaS*Z_`B3pVYkEw^%f}!HxY2G zUE>zhZVg#U?02Jz6b!Fc{Jul<97#sI?f?PTa$VO1bBf^Iih)QwxI>&flK96pRmWhv zKFBy033iD0frj-8QedMqe`PqVEWIn&|Fm$vWmy&Cl;+US7_-^+D8wvi!TeD#6`MvP zYIcY>N0KdMhe;Skt`6dTr-)CFC!QEjaXguiZm{6td5ljGtS5r~81V%o!`8NsWL z#F|%Y`Yw{ZO?YmTxM>mz8+IH^HgPQTLV-ASL4Y$yi=c95981lH;bRDP(|x_?lv;qD!R7lodZD2rZG&c))TD-1HI1(!v;2wTtnvCUC4;x4qg!7 zT0?vWG+ttbORS*5+SIm&G^+JE_%W>SlztaDO8MihxMMB(5TQEnaZ)&PCAuR_%42^| z+1!f!<{8b3V=7^NrXf25hucYVwRfJ_^Ef$yCP(tI)>fDl1y~53SY73;3xb2(+I6KE zypA-$vEQ#Fojk9eDjt6lJA9o<{}h>PivUF$ApTfPM9`ioA#KDyaB2*9aY6S*Ti>Z- z#s>0$Qz8gvR~50Im4d|=HekYDHeKC7igEfCS3ifXu3p^y9LaEEL-xm+%CLH*3m45l zCI(fIVc;2BLB=DAuON}~wt;ugxZ5{vi^S>*G%gYwDu{$*#!HnX+u_RAeqI*`Z6r@< z7^%QXNKy&Os)!^dj_sJKTuVyQ$0g`*mp#jfdp2TSt`m=MBz`=W%3n8;EWC7s1Us}(pG-w zbP`-cO;OL2TDFXQU4w9}GY#KNz9;19eu_}xm8s&#Tgb4i+bQzl06!rtbAeZMQsa}j za8zinF#4{*Ja$;nNxLk>c9|GtC2q1156Hw|EAdGX=k5we36s}FzuOeLl^nJqlK59G zImIiNi6>qnFR1F#fyzlc@K>L2TKO`$#Sbo_Y$$}o%^keZkSIR>DtT2^#%KeDIF(SM z6TP;R$U!pK03q~)L~-$U65z9&338~rC$4Knb=++oPBAilpSWu~85Oz@g(sa$ZCT1? zjgI_+ZXSIbWJH%$oB z%Ig(=^la$4n~z=f%+5y9=S|{@`5g8p8E=QNcX|)UgOUdFJOTju09;d;LXD)wmK+s- z`ILBy=?BTVfvu1y93A6uRDAeT^1h|&d+dNGn@H_|CRXWiTwL8ucDh>%r$MUrk}pGE zVawZTapWQLn)*1%U;Rs%b>)wRPpv_Os}+%6TG?`+=kAq%DDQ- zLyl#gJdSb>f3$z7GnF33Lj3T>lhNF`wrK7-;3L2cOgt6M%>?!Wn*paUqd8k(AM*0s zk>N`IPMj$|C+Bc_?D(9xJGEiNx*Q_A3*;ZK;#4r;3o-@~5b_0CM7l-#1)@o3GJQet z_ETrdJxh)duexP8wMpc3>Dn4_b%s`ipo+l&Z zRSK7)1GCQH!dvRVFW2-PP+L8#U8-Do*KAmNo2!m%*HzDIkcOeGmw$F0*PxR=xO&%o zJU6ycZdb?Jbz9pd-Pdl-%V?J&uKAG!xYy0NYsMwCvO1bsQ&J%-v z!s#Scoc|Mg+b#+}kzvEzy{)1*Wa3MkurULF(L%>sDCUcYe!}7wF53T0B15z1L(#G` zcg@w++2HCtGalJlC7mbabX(_PmR6^-s<+0ns>V*E_|(rN(5-^Cv}Y}6Rdqfivp06` z5gUId{%*Hf-B({*>f)?*tHf?r7oLf_SFCjo*19k;P$K@$`K)dUtE)bJ9V)*ZCuU0W zM)tf!Mg^@K$0U|?u4ZX9>s99xnRL2yzMM98rdU~Kia$ss5cAQ#6MoT&k)3dPdvLGI z4+t|F;gP-YaAT3UqLU0y2uMZ%v?^OH1E#V#c@<;0umDyKI&B#Y#7bx3Jvr^djMI=4 z&)Ags7S;K$uf*t1GSoZa9!tG2qYf-?j3tz@7-be0w|g9Q!i?SE_zAwm_>Z|vhDR(( z`Ws{3W(>EPh#6n?8q?O<$O0p-RVU19N|MHi8!nRob@n1KDP^YWS#6z#V5y$9uQN~l zhX#WGo+)C91lJnkdB)UBq9Lk%cxnUqaZd?oKJT*HhNW-HSnKEE89B5f4q) z5^x5BllkK12YWf;vU+qw&p3~ZZ**bYbmE0BypQLY+^>)~NOAsho+|-rfNjA0z(Jr5 zxBy%Q>~eX|7nlsp1~LIXPzY=UYJuIrN5JR61>iDp7jRy|a}NTEKo*b>6akxnZ7cX< zt^t`tKpSuYxD4C?R4aMT3m6Z~0MdXgU?s2~*aU0`>Vc1dFM-PdzY0nL4G;>%18KlY zpaiG|_5%BXad}i;cnhyfB&z(mdZ+8M{B4`vJuJADwCEuf&}UY?~9q1^eN< zmDt>k!>7*VeT@kGknFS=PFtnrf@f>F29`H{c%95wjG7g#OJSncjeBq$OQVzHWZAP4 zrpX_lXC+Qg0@*aQhg93xa_ML(?)i(P57Z%BvkTXxCfnO&#h{VF_&B8j0su9j1a9Nw zp#-!8O+dgf(~EZeA-^Hp&^YiIKC&U*_boGac_6=R*dApx_e`+`@lMfP52}*}M|1x$ zbq4a^ITT+?h~X{(Z9pr~2-E{RfLfpmC;^xatvHL<0b784AOk2wT^^v0is4ow)dSf; z7LW;K0Es{X5DRF5C?FgNO^6x91tSv#1d5|4^7D&Zr@;oG0oV;x0VTjnAQ1=xRKS(^ z816Vw2UG!iAOY|N6u^x*Twnqc&<^Ya>VX|V4Ui9{0zrTRxDX4Su`yoU7G&~(M8Frg zfljsqaDcHC|4=HLN8?20|@&edXmnW`{<=t?;xdut|!mVUh#Uv&4V`a47 zCp-`S>?fMh%Zf2>{n|5i6)10!Wr#Vk{P0Qr>sg!KXw%xS4f{rO8s$s(+F8tGe7v|O zmLEE)KRXkVhyOcpLHPAPOoRsIP{5+vQpfl#A|~`_XU+2A@a%pfnC1B>mjK(Wz05br zjvCjWkF~8q+lGE^nb(?7K5C`ah&$tW_v!svShH3*u)nhz?NS+nFr%+0%nUD-1A*T0 zx+Ic#-o3a#8*3W$Imb=-g5!Lr5H7Tka96exuKgO}l)n)!7{~xBfJQ(9MqDS{V&D_t zFCgRw;Z^`|03&|KKRW=mz$u^y2)qdyz-HjsO`^tcp9vQZ=z&_m2%PzYh_5}(yE?XA z!;OtC9maeiWyEaua}_({c_#}e8r&g6&Mw}Q;78y3Wf-%Ur< zcK4IXEtI2HJCj#B`rhnQA7r5;nw4_=xNpH(kqOuJW71ogvJ!da+})^`MJHv4{mPs|#La5jd)S+rJxUk1}Jn1JeyKGeyV2{Mu8z ztGHtpuX3#gm8oW6BAK`fv3VBnKDHYgSp)X;rp&S)&{-P%N1v-T;<(uu>8ySvorP4> zk5t4+o?_u_UQM16H=_mlReX;n)#53ZT$B^P@b9&sQCh-BT zK}%xf0b%}(LY}!hQH)OF9~xZeY!ReJ>gO!3PvYI|pLdDoD1b-&PRF}W3UtM}6<|+1 zj&SU`4LMAnG8-$RHFDYR#2$1;_Mi&+Z^dg#yw6~Fe1+@n>_~5Mcrx!X`0VgL+KiH54C_<$m;*YsG6! z>Sl3BDw0ldTq@Mf#2I&yn8YaWh-(;SGCp6=5jTV47qY`5xmUvd68|ZlVhtO_Yb?nY zhs;5;M^60w8vgff6T~%hcu&t)eval$0CW0@eqrCbtan#cIH>h(s4P#T_)j$Z|NSj6 z{r}NhplMP%Pwie@$orBq(QhH|jwE6s{}_@t7V@6>TJ+gM{?oxImaoE4mznmg;!VWW z1^;L31!#aEAQUJQ7d*!Mm`WbwFA?uD{5XR>4^D|rOOH)ml(T&0Qmqy<9P~0%=^Dri zV|j+&hy7Hepcenf2M`eZ*D)ST+ppL1DGGep9sLCV2gw)x3i)Nx;T!v;FwXyRSv*#V zQ&jAE&i$@NM8JHA*KjaN<3G)VC|kn7RLaQOEI zE(6fnXpA2m~~MFW?2J0T)08a6nHo-cOTb66FRG3LQW@a2#j_8i9JC4%iLU0%brU zFc7;n8#VT@QG5_->I*UABPG0_m{o!!b6yFr#P0*1Ea5-3JNg2~lbR-%@*8YOo~gNv NpGZu~XZarTzW`xDn+E^@ delta 19140 zcmd^ndt6l2`uAR&0Y@EVxQ_w~I4b5P6i^V<0lA5w!$rVEyrGVW<^__90vt?miw9fg z<|LJ*6&V&M%ppSs@mgk7W_YQrqqPxFVVYu@^M2Q!K{%ey`@X+F-oM`c`FvSxJ?mM| z^Q>n*>$2A#Evo2ORMD?OvKh58VOxh6e^EvIk+C+P+S|}jGK@6Qg(QZ*l0x^A2_%$$ zPeza(^?mt+yhG*9a4xHw!=q13t*)&9LgCEwUwlM=vO7z7dZ16ObMZlr6CzEDXyY-( z#-_ZV)1)Ws^OSakkotnY?u0nd?fnAX);57_tDh_W?obepOG`|WE+3}f_It_s@n%L; zftXbG!f0?vUi5|jf&5VuZS1dcTY7}GWb~evt%vHb_a8^d5b9|^lsrv!_B+XZdfDEa zG}1rqi;0#N4jAFJy^-U}HhMy^5UJG~kEw;1nCfJGl63cAeanD;guF)2I!xfdd!O2= zuag3LQ+<(C(=(2Kq>}#TIK{o~U5+yz3u_Vn<`4bJiRCF;|0L;c8s{|BedA${Lm9$W zBPX<#M`{=7rL6iArw~GB)*p5rMO=MrE$!#d4`|91;xKKu~JvErFj;pRy@Mv|OCx)Z5YlH9(jQXGwS{mAK5&wv}I?YVtLCu^n*d6WDvbMD4T@WXLxK>5P|+MWEB}*pXmJoAxmi= zUmY1nV||B`i8RM|CK*XT@_n5Dbq&4YJC;AXhI$TtV)&bROuH)dWZqD8LzxZrUp|FV zNYQGAE{ud)U*;zH(5j(>eWe%3b zs#J@=$_4J^r?Sp#4CNAG`~KaM8+Fx*@eR%k9F_Z!`dp_i!r;z7UK>7{0=q`lB5`xe}PRVy)>= z0;BnJJE?b&5Bd-h6il|!XM;RZQ5iIw*wUYahLX3a(}W2gEt@&6_?QwhS~4*`<_cT1 zOdw{++jQ}Sv0l&g)T4?m5A){+oN2gkHk+kP`tAgc-HAGmLo}Y5FbdJ%HNlg=TSna` zW{(xhm}He2l2Z--Xeg;)g1wz=fx6>R@;A6!CTC;7TLt>=#F_k^O8Q{pP*O~NgMImv zr8GJ?+22W?{3;A6zy2V`N2QmhzQKZI94v$TyRBA25v-m@PX~K=jwpSon^}#jheoSj z4DnWt#o!nMF;=NkJsln5MP}2ukWpj|eJUh~jG(n4WB70P(Mus^q>wI|G!oT+o3z%w zdfP+$b8{cszJzK*=a6x9ZD>kAuT9J*MXKaNTSJ$U;`)hUnS}rPZ&aMTge1~GCr=|z zGM!Pl<5*8|VQ|0jGuOo;IN_0lr^(gfeqi&|3O?4fU`)J*01?n;% zr7mF9Sn8;AePaBhb*EUJ=c81mEvR;nQgw{lNguJYfKe|}TBKV}mecFHVPqOrhcCq< zw?5oY^F3nXFV;jIHHA+{0Fww8Yz}S_o5)J~YQ!A!2JMO%H6pfWR^PpBVduyhv-=BJJ0}Ixrh{%8P*IPqx{R-`fbR%@3_m_p(AI6llHEB**$Ik=T}l z=?_t(h>8w~p2B~+h0cr~NnWS<(S!Lv1X>wwVEv6rB6Da;%xIEBi(>{6M_LsVM)K)} zm}}%!dL-7}?f}+FSa~@%7`w0Q^bni{W=+@d?R)9+>C4C=`uX&6_N;%Cx^qSBsxjDSwk1jnBsWoO^h7}Y31?Su+&6p46U0H%K!8V{nv~^q>d`% zpB|)=+hQg=Y^-=-HVe60Ppq1lf~)Axcpoy09*VDX_yE3zF~%-)E@t{_T9DwaYJ5Sa zWfQ4oAFWAv6^DbEnSSuZ>X}PP5&e4Rkit^?2<}3LR&gOxtFSD{-2;Ttsp%P=;u{qh zceWBg9HbI0)^*M@PUTy)tX}H#0qona-H&`WNd>hMxsxR_0Xa^3^E{WXd#e+|^~p$c*N+?P-=NV<b`AT)1=}hN&WB-3quB_#T(GUIPe@Vl*esG#pPc>?gne`I!fCk*8~26N z2*-j8DcXz+r;SbC$Sf!;(H4R0LQ}xME*ymu;ZzoA+{Jbnm68w}lTwzWO{b1&OI%mp zg}w}S%4CtC=?MC!tv#L!X@fBh_NI+gR=|>j!Aqm*==4zPmcEpf(C5;9NCkZ@{f%TM z*NG?GH*FmbRy8gPp6lShxnLdUZ`wi({thMk;0GbrzdRBHj=2+h+@a)UkYI%$;B9PD zcG#8ggfxy;%=u+yl3Dvo;3}PbxWE$NQnV$Q4J~PZ4IJ#m(Tm7;Bs@Yte7Nq@+Ek({G>^L3s@pnr1_j$&@SaN4FBLl=voV`6Cg{Ks4lvoR~%FAK!Lg(bvK zPo&NZbU0t8EC?uMdTRJQXNLn{I2>qkc(1iwwWDl{%q=u(Sp*wyz`8UkLV(wBicoI6 zlh;4Z&iNXk~~B@K$kW8OHz8%UljDhwQk%fP0P zbRP>H4$!Hi!5**8$W|vx*FoA0UXW`@-U{&7@VSEx{07!$5Zauk6Bhd5{FJ`XYjGKv zWr>)y21FJot(PTw8yn@WbGhr8B`Mm-Y;}?}*P;!U=(;U|XDu^*YEK=X7ZG4CD$vGo zPlX6(dS&78LJqYK2jaD9F)%CiUcu>9=?%CRf&Le(%iFJ;&2_h%VD;5WgH_T(FHw_eFDTg^ew;pcG#W$FK>)H)#Fh4o$`t-NOe!jKPktqF= z105+^&m?J9JJaFPqhlSNn&rcLUZRV##*Y#+m=YIR2_~4rm@mIV=@gjKiuUt=hi{uK z`H$(5tWkZg_GeukKyPNb*-6MtIn;j1K;G^G^;_bV+>8wZ1Cu7L-e?(=c&$o$zs+o( zpIJxnzM}5gl+dB)dUt3SMx>`hYieXAvji~ViE@@ zp;e^x`Cj;g6Y^E5DEcSLv_rHt+rz0DHOYn?XxtsPGzQz>a=Ku-tLNTYH26#RnP=0n zD?BEQy8UoP`M-&wQr4wE476~?u$2ugiXVoI)m_t|@Gsr<-O~T!u5qwj4w++2w$-a} z*9$oRK6Fwf=o@?SYRbYI z8iP&8WpWnQT!#(w@P5E7f|<-BPWsgkthw?r(Nj2KJRTW((qY2~c!Tn*W-~`G8JR5E zPl?icQrolE`<_Hk8@(n3=N1^+LYvm4jhv0% zXWJV5VJu>53tW$gxPin*+S?B^$8yrvODm~v?S#UmAmLye+`}y;GcL>Co+!Ef%A!$` zJ>U@A0S%FiFJ8MEbFma=5YaXb$UWY$B9*f<+-!L4Y9) z?b(!Q1t|$tL+&GED;1*-M-=&}j{#*zlt^u)UV4|htb2?Y>C|=O@nK`_y2l5F-emSD zL-xx@`?YGp@*1wk>*+`9CXiP8>$)*yG4;-!I5_W3vl%L`LPI~C`8}mUPs@X9(B#?T zK$e#~#$^(Q5>e2 zxrP)*`A()NIsz;zN$z8UN{*F8Lk_Dyg8DRRUx#d#Wcx2%c5rv_r#}=4TjbY=`I!M{ z0-B`QIOb30$QC+a{SE$VI=#Q1l5$#+|Bm|mFJ%GjqDlBnvU!cpczO$os&9MxIi7ca zr9Q3TaYBBio1SayyYDE%6*qiGsNwlwl0mDV_jPLMeUay#%-#^bdOiSes(lOn$!(*=sms(g95dlP#egmJ~mH(%yVxX{|?Jm zxiG5&LC%tvA7K{N-!r~UTr_uj9g$+Y1#TP$Cw{td;IJKya$^l^9E`>WDeDj#`(?`7 zg4tzh*q-|SFFeopSqxU@7n@@#ttKYNj7ZT%l zw^!Fjch6$n?*7|$hj(<#IARIY3-=727Ds9mh0m~CYo&kEi*yJdu#5gd$Ki%^%yt9$ zseZ@yy@YTyd`Ar~Ca>>!X51;!Yz}BDi&mFKyOc$1PTFw;u=$+GWP32^;p(z*m$Gn8 zJNI|oUNKkQGgW4u?{csI z^fgScJ@n6AgB_Hx_vEzrz6hO@(_)qMvFc#{syof9&LPL@Kd+ucNGTn)I}CpfyHg!& z+#y#3W~<1O`picFKiKi>y)RVya!*8A=L{m>|{?42? zX748cid+4Gy)6U__cOH%NnQQr+U=yU<4qkGQlsNO1}40%<6Z_7dv%-vI1fyDN5?e- z!)kS05-<-4-KXRB0{-vnxc7iP@8Ra-eI2)KzmEG5=zl=R8G#6sj#~jFH0ZeB05g#O zp^j^UjIRK@eL9}=sK5E{N`?OwH@JlJfJX$WW3&*j)t?O4aIA}(8t>e`C!@IjsOxZI zfdjW{=+^qBq_Y0E`b)(3)IhYw+)xg}IW|Q*x+A0^7NjvemO+G7a6@VRuOB2SNGy#y zII=L-Hv+dlUkENQ#SX?v>MNlQJnH5SjWGI^SV$1&C<4A3#@?a=TsFoI2g{ej(Pl~Q zaNt|Uf!4-mg~Nd+L9tO5a9p?urH=?WUi^bBLGh9-p#@EZ*5>OFQh3=a<$q`clko3m z^w=O=3^@KDHdrkL8>0WAW}`N+PI8P0m`aNu%)i`*xnt(OM|{vRCBqd5S* z@6`~llMVT+-b0tQ=go!85#1vov;}bk~Z#S)a5&%V`Z#3Y~Zme-fJ4d z-#ASNHBUq#sd++Qr4Yek54P9RZOtw!zcQ5EglHuQ_5WyonvneZQ7t73^)BpwT&}bk z_qQKA94^~cf8?YN^4|Zrn2?704WDQT-?pH>>dZRAU%f~j&$@ecUBE2Umfyap<0_Em zvs8&cfj~NqI_t+6pFFFLxXNmVe!khRw2$!wX>R9@CyDW%a&76YH_Y0XSS_v#E+IJu zGyx4j9Z&=80ah`PCXG=1QE;IVw3$Vc-S@uQce6 zD&rNKQK!t>jV0g*2V<_-j(h`f1=t*IGxYP)7#riyvSq)>mc9SytvBw&wj%oLXCtu@ zc(#tyvX+n?h$IY%1mb}dAOpw(*3&hu)158$RG?f5)Buh2)7D>IvnJt(1cDhiKFPv7 zWonvm?_{4WdhYXC-mFIGYh0k@%3>Asjw;ceZZ7s4mMl8$ig&Exv&Fvo%QUwUUE!QmI|#SMspSc`rI#YHrQ=vO_M8`b5q~b3?^-~s z&%J}tNchSfEB2DFLKG;xb|D%9e!Q@X?5dxA@f#ZwTp#c)*7C~wPrn=1hoslv`msNY z6!T9%vKagE`m>~gF6!8T{I!lJ!8ZHGRGx2JNO$~vkI%Z#!eem$AF{)9?_0v73&o03 z{Miq*{XwJ8j$oXKk7-$q<-f)UtA*d^B8dfbKrrAB_yOL4<~}`tHrAPO3TCFT04N2j z=s!A_gmMoa21wnX|204qs6v1+<_Z_&gMkG!@uoM=J)pNf^J9rutN$>@0DJbMx)C@A zoB_@Omw~Im-9PEt)>vnYUN!hNfFBT6pYZD?!gp<^kKKNbC2!w;lkZwc6Mr)j4gKo3 zmv9bQamNq)<@P&=_)&EwIFIvgcn>inoXxE`$j`Gxkf8z5V0O*nA~>9|T@5v~;NB+B zRuH+|fd-aJwfTqw_94-nr!>2^(jmVO!FSiGzeizkH~zklJZbEMSa}m4FpbBwyP2xY zmWJQT!@1po+pxvi2IKGLl5ph0kgJe$I^<5vxk%*3Bey#inUl8h_`4EqPul8{n<=xT zAXjH(v~=Vq*H_=)LI`5A^qo{r8Od7Wwm~CbEoFn*0cHCcal;I!;&f@SBK} zgcaI#c#W3lgZz80tCPfeJUKxcOj;W?EYfrMp!ZdM!nrQr)iRNln$qXH! zH@jAV#b__Hw?`p#vQ>tz#R!KiUyg&pscJGC}dG<3at>Herq8Ge!SMPa6mvG`oYBGr^#XD*e#Y5|4N8-oQWsW41c#9_-$UL_Eo8@$4WHLjpxN53-rmh}9mX z2v+!d5-rh+F`nd!>E4?nI9*3OUOS?$PG&zccuu`}i^dC?(o(-tR`;Vhh$(w$inFYH zvc(*|6poviIb~jc;&o3l9Ks#FNCq6U%8MK$rDDKfGLra-^9GY0NQ5D<#cv2%WXUgq zxi^OpH>Xp~6E#>iB#J8_p%b1M=uJWqBeT89Odt6>x~e5Pr2lqQk-Wj>ir*^4xx>jw*9s7DQP^=)FeeLM$1o77hbzRt z4=27+b>$IU!R5n@W4>UAi0^BBUP1C~^yV*(CzQnx8FoJ9+6{b%{ke~bUSEh&`jVB%$&acOlxkv&6$OYfam`z-+w}GY7 z?kQ|}#YUa$Ak4=1yd<;hw89lSng$C_NO5p20LEjO-(PXSsNGG6@>khx68%5Q^-(~E_zJG`hsH2R1!!UO$Ad)9|cjHN~WPp zq|US}lHixUmEt>5q?*);3DIP?e?vGHmn#kdcRCaScLJIm4wp2yft1~+xl1vpY~ywu zcSD;UHtoavBaU3>GfdtwWV#Kh6|>{exf;_GGccD(ym&R9jD-cx35e|!Q*Z+LfuPo7 z7WspCeV-D}{g4#SIVFd4tAR$~Bw!DEs2Gq4XVr;gl1SRnx~+I)v#nOGiQ&prys_Ea zcvMk*&mWsj!S(D1nE_vX*d)G{MEtQ%wIz|j{)|7gbFFXj1GR|X@hB?G*uXo2>BI_xbKFkxiyY$5cP%j~Rw59I#^kYz#M!{DOV^M& zcD3md+~HcWV+|S7r(r)U>}LfnmIL)#(x3@m%6=j{rPmdVQvPx)URg^%#QOU3I+8y; z1KklOFJON^x49Sk^>f-4r&Yr98OE#-9B(Jf)m{t4;9PPRP5R_vsZBRU=3yOFv%0c` z%Ywb!+BHL5{S>Jq`6i$Bq@CwGBSh6R*y1ZqHP4Vawg^z9L&af5LsnG)LIbCt}0?ZEh)t>HekZ;HH|frLY#lacQ;|Ls}euoMAFr4$nKsm z3#vkzIe+eHF{hLa1W$4)8IRN^G=+83Zwar+TD@Bz+e0Z#sj|=1} zn_;mpvb{tvJr#(>TZmSK+QwTcSu*7*WoVFI{CF$zDNM0e_*+=jp|N!Tno!#XR?6=IvI5Ug+bkBAsj1BncK+sD4KK>vBFD zxJ55DJdGX_#yMs}}>~%2|m~vkt zCu~TA82WeeIp4Na9Pl!EQB{Q=lufR{Uqig9_GNO9AF!ITu@Fu)U*UziFtPp>@`@^# z(fSHeDxpXxX1q#5`^j8=guoBN#Ohbc&>`EIAp6RP;yPB8N8Q(#1?`gQd&GafN=5|k zLE&kqVq2DS8N+SO_N=;NU;`_J$m9amNI5mz$}J~XiBn!9(S4bPd8$y?DpUDuSh?+( zy6Roxfn7xJ#gsa{(%jKM;B=_m)}g9dXztjbtu%Bk6^B-n1fmhwRFf50MZT#f!I@8wDNVb9zS$7UE57&*^R15VUws6%hPVQ zfVEV!zo|kH?%w3nr_$KR{$ApW37xl>jJLz!>;C~On(7E*!G!!!yhNIE z>q(0(hGa|=@esws{G`o?Hk2+n@P31rEmg>WG7qSj)_Z;lGikiAbqc|3m&J7zei0`{|kbBljzk##)x)@NgiqKrS*(e zYpX@8T=hL(7-X%dWUc2cS}ldkk7&JY(R%K$wYD*>kHZBCEo2M-$ycUJE#xe(xdLuu z`+~Bl+R&p8CG9+pa`t!IKGd0-PhcgU^vY-9+)W^+HJp0}I0D=S`hOnIEd>&RR^T|0 z3&`(B#v8fSI8=O0E@F_qKOyew8jM(neQ0N%{F_!B3t~PYqhQOrPsn_7Mf~y;M3c^R z_Y?BIJqBd&1#*&j<}bssWl9>m^bWDrZHVD=Q}0A6b-A%2w)@5MOX$mf@z5m_2QkXa zWSG26T_(PL7wo{5w{!(RTr)I4ZFxeQbUO2a*|_9BS02@-FHfkG=Adkle~legrZ+U;0cp2Dg+#;~e}_FLk?pNOAZI&0aVwM^L3erUX< z?wZ*36Y+IB!|J~L%2Kz{TDMR1mr$q7K;2GjU4pePPc)#;DU#JKW_9J~Zb7Bfc(F>t zPL?lzCXo@N4~%0Hi`w61X?Z#`YPU=}*S=Fu8``OrMG$@4i66Gf8SUipKHl>ncilNL z{5o-Q1BYc$8ilw9xaCc_xglPBr=1LrU7Um{z`wGwFsLk^Udb40nTUSpEF*$|X>aiF zmeVH0or9cc#@5Ez{`sX?+)kXmN*}V+3UM`HabqkBe6?z?x3IXUKV+#9;`V^$M|c!b zu;Mxy9I`v{FRa@)7sv}!XxUKUPx$4lvapGualvg!1-WO%1q@6t?dn9 zDNoqnUMK!}9fz-c(W`@u;qT8E<2#53r}iZs#8>OL0Bx3j0bvQ9?S4_+U9`sUn;4pg z6!D!7GDz#c7@U6KWX`xawwn_^t3@{qjI&B?@4)D(Mb8^}FMrdNc7wc4Xa%n;j9kuh zdSC&N18e}c0=s}(;4p9==mZ92^W0!yG!P8L0#5)2AQ#vSybRO=2Z6J|55NP!a|O@& z1Cc;HkO}0h;0w7TWL^Yz0kyzE;23ZjxB>7vJU0j!4)_CMz)T<$SOpXSn}OGXgTNQS z55R3ev6AQ9fZ;$Gpa%@VQ@{&A)yhIBMWz8b1#|+6Rp=!!0nh{4KnbuN*b5v3&I1zg zJK*vp&uM`PKpc<(tOB~9CaiGXkN5Am=JN~Z6cJdd=Y?}Ov|D>B6$iq(*E4&{-HrTA z)xQvT(zj-I1n2LAZ&+e;C(faMCa;@B;2pzKaWdF~tIe6Xy<~aQhquUFg(<9yY_YLz zV-)ezKS)|%zcgIf?ACEQ)0q2YMZe)ne1N)-4}yOHoxl~~9MA;R0hPcX8q;Ar{-}>* zE*eXxaCwO|_giMfHa~vZz$MCXZgQaoc4}-dsCFC>&Mh-Jj^w|yk86yL;PwMGKow8{ zlmPj_Y9I?p2bc|2IBpjKIY2z%59m=B3v`BxPfX+oi3Jn+^ujYS5!@-@7|;YX0u8`^ zpbn@7YJe)B0w@IvfGi*#hy=8N0=OCtIlvyE2*?6-fH%+;g}Y4P3~&l)0_vh7BDpQd zlmPjF0f+}i0}9}BBn$ycfgB(f&;niP%^9E$KyOWJCh^Y1v>}8)+Bb;3Jb0%^aK7C` zZcV*cM{r>n_3np9CLZNb1* z(|G5g-t0_77Q7z@_U?z78;^22(Cx!4u{er%AK#meu@|9fX|JZtIh82yveJr-;;Ykm zH{7XwAH_R|^!6ibey#)o*sD3ye4CXK3*G)@JVZ9Uu$%S9X?(!{nB%TYA>8ftgsXjt zaFsU+cM9kPG`|uq7RU!`fNOxyEy6tqd<5JAM%^ada^M=^_Z#8Tfo(toAOV^?gi8d< zfF_{p4pDP{cfkm(19sdc;(O2Xt_~G9!#Q7DI*|3fAw6Q7kE^JT;nnuH(FxWe4ksv2 zaZC(9(f#%}_*jCcsaKQWIdYSV7(Tvl30PT^Q{uH4e(0!N6uTc54@^TAXiS6}|5l+} zYo|rT>KVM!Ue}B6DUOTfJ;bJGc!gLH%PSqzpNQa?AOq48z*BrFmY-_Bx>uWBtj!Sn zUA;(WWRmM?keKGLtyRp>E(^EwtsY}Wi{aCGkG{+{{Pc+{V8tP`XMuw~PatL8SY$1; zlnG_20`zR8__-RFXQjV`ls)y@-SvssNEbV6Lw6J*Gwn!O@lxbsW zHw)~IkDSJv`3NSQI-zx6mzGfxf%Hj)ndUi3%{9YLZVHess{QY_KHtYq$7jl&+3#pvw8 zt>p~fx&L;MS#{C82+<)9v0B$lW@|59S9;O!Tj+>kr5rV`SvcY`;p#g*h6am{@w~@8 z)~{St%fV!gR<_cxr`sMs~#UVL!->ZC7T5 z__rCn*NmVYI+?)QG5xHv)7o}5OzeIbJ-=6(4LBPg7aT@e9XH=1a71O*zZ>_-PMsVb zcHlV%W~QhL%`r!{qZ_zWDVHUoia}}fX>oRq|6f5 zVmK0? zvwS#Xd8pykBN}Fl#f*EASgq$hY^zk^T%Fj=C^N+Gk=XBYu(V%7;A9ch<`~X>?dmXx*n%Yq91?GCzy!64Xb=p+=j$HXS&5^W?PMT2uyvNR`p06nYgZ}-V6Ee zamLqQxgXu-bkQdTQWM2+mb@)4Oo6)oIJgcGiy38=Sj{L8HiUDoVlyZ{w_dYI?w0VV z#B!0$M#I&j4@C-hsWHX!nySTbNbd^!M=T2_b#fimzJ@i zvOJ~YpJ?{~`zu@8|D#tn)5 zfa1oL814+y8!LGeL2=EK{16P3Y3q~xkHjkjAMw~Tc4~NPT4c)nrOR`c=yV(x3wnlW z+Zr?tVtIz{hyAW1uae`|0R+U}b&SW-_S#xL8UIm-7_y$fi!Wm1^7&=qew%xwFwXyR zS-gKNzL0abr$op)F4q@GBhL8?N^K5r_Kvc;e)6mMWK zy3ur~fZxOqzjQF1`#(d>F64(7GKa(^Ku34ql=4qyPXfCWH0pa)`sFu))113Uo@ z-~y-t6`%wZ00-Pp!rLKm8|VaX09S!FpcOck6cH~sXhNX@r~~!@RX_z$0u%uSz-k}^ z&;xz3H?vV=4;#g?NF!g25a$>1KH};koQjKzcqJ~J%8K|Sb`3AWj2BHai}?*UB-ZqK R2|tn0B7E9azQA{p{{=*glo9{{ diff --git a/src/game/Map.cpp b/src/game/Map.cpp index ac9562de9..dc450fc4c 100644 --- a/src/game/Map.cpp +++ b/src/game/Map.cpp @@ -45,7 +45,7 @@ GridState* si_GridStates[MAX_GRID_STATE]; static char const* MAP_MAGIC = "MAPS"; -static char const* MAP_VERSION_MAGIC = "w1.0"; +static char const* MAP_VERSION_MAGIC = "v1.1"; static char const* MAP_AREA_MAGIC = "AREA"; static char const* MAP_HEIGHT_MAGIC = "MHGT"; static char const* MAP_LIQUID_MAGIC = "MLIQ"; @@ -85,7 +85,8 @@ bool Map::ExistMap(uint32 mapid,int gx,int gy) map_fileheader header; fread(&header, sizeof(header), 1, pf); if (header.mapMagic != *((uint32 const*)(MAP_MAGIC)) || - header.versionMagic != *((uint32 const*)(MAP_VERSION_MAGIC))) + header.versionMagic != *((uint32 const*)(MAP_VERSION_MAGIC)) || + !IsAcceptableClientBuild(header.buildMagic)) { sLog.outError("Map file '%s' is non-compatible version (outdated?). Please, create new using ad.exe program.",tmp); delete [] tmp; @@ -1193,7 +1194,8 @@ bool GridMap::loadData(char *filename) return true; fread(&header, sizeof(header),1,in); if (header.mapMagic == *((uint32 const*)(MAP_MAGIC)) && - header.versionMagic == *((uint32 const*)(MAP_VERSION_MAGIC))) + header.versionMagic == *((uint32 const*)(MAP_VERSION_MAGIC)) || + !IsAcceptableClientBuild(header.buildMagic)) { // loadup area data if (header.areaMapOffset && !loadAreaData(in, header.areaMapOffset, header.areaMapSize)) diff --git a/src/game/Map.h b/src/game/Map.h index 6e6852954..d29e3a11e 100644 --- a/src/game/Map.h +++ b/src/game/Map.h @@ -54,6 +54,7 @@ struct map_fileheader { uint32 mapMagic; uint32 versionMagic; + uint32 buildMagic; uint32 areaMapOffset; uint32 areaMapSize; uint32 heightMapOffset; diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index d7cd861ba..72a63a290 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -6140,6 +6140,12 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu } break; } + // Glyph of Mend Pet + if(dummySpell->Id == 57870) + { + pVictim->CastSpell(pVictim, 57894, true, NULL, NULL, GetGUID()); + return true; + } break; } case SPELLFAMILY_PALADIN: