From 61b246553b8cb4d3357a4d04d4b0770716c6510d Mon Sep 17 00:00:00 2001 From: nishikawa_takeshi Date: Wed, 10 Dec 2008 09:55:47 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=9E=E3=82=B9=E3=82=BF=E3=82=A8=E3=83=87?= =?UTF-8?q?=E3=82=A3=E3=82=BF:=E3=83=91=E3=82=BF=E3=83=BC=E3=83=B3?= =?UTF-8?q?=E3=83=9E=E3=83=83=E3=83=81=E3=83=B3=E3=82=B0=E3=82=92BM?= =?UTF-8?q?=E6=B3=95=E3=81=AB=E3=81=97=E3=82=88=E3=81=86=E3=81=A8=E6=80=9D?= =?UTF-8?q?=E3=81=A3=E3=81=9F=E3=81=8C=E3=80=81=E3=81=9F=E3=81=84=E3=81=97?= =?UTF-8?q?=E3=81=A6=E9=80=9F=E5=BA=A6=E3=81=8C=E5=A4=89=E3=82=8F=E3=82=89?= =?UTF-8?q?=E3=81=AA=E3=81=8B=E3=81=A3=E3=81=9F=E3=81=AE=E3=81=A7=E5=8D=B4?= =?UTF-8?q?=E4=B8=8B=E3=80=82=E4=B8=80=E5=BF=9C=E3=80=81=E3=82=BD=E3=83=BC?= =?UTF-8?q?=E3=82=B9=E3=81=A0=E3=81=91=E6=AE=8B=E3=81=97=E3=81=A6=E3=81=8A?= =?UTF-8?q?=E3=81=8F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlToolsRED@69 7061adef-622a-194b-ae81-725974e89856 --- .../MasterEditorTWL/MasterEditorTWL.ncb | Bin 11340800 -> 11340800 bytes .../MasterEditorTWL/MasterEditorTWL.suo | Bin 64000 -> 68096 bytes .../MasterEditorTWL/Debug/BuildLog.htm | Bin 20262 -> 20262 bytes .../MasterEditorTWL/utility.cpp | 57 ++++ .../MasterEditorTWL/MasterEditorTWL/utility.h | 25 ++ .../MasterEditorTWL/resource/append_ini.xml | 4 + .../resource/sheet_templete.xml | 267 ++++++++++-------- 7 files changed, 232 insertions(+), 121 deletions(-) diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL.ncb b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL.ncb index 302b561225e2d6a4c20ef96685ebc324ce8ee0f8..6cbc770776a90f57e5393236075ea77a1550625a 100644 GIT binary patch delta 14730 zcmbt*3s{sz`}fT5a$aFMAC|)^EW67=KtX{;1AY$SnMJ1&mqX*DU!2@F+ z@z6?Tg=ssbW^{V9va+&XGc7xxFfp}!%jEmb^E{CCUf*|p*ZIc_Ge>Q3!VN^f=gHRkoA(T#Z_K{sx6cKV&o61~;GKQt@w>ZSI{$r=PiJWB~W7Z23*Q#vmD}WY9HQ^r zfTRzU^g)t7Ski|``cO$9Ch5Z^eT1YpO8Q7iA0_FdC4G#fH%a=QlD?Ouk9FzeN`B%c z+grx#*u{M=|G}rK&)A5xt z&TH{HXOhLheowWSxM_;zqSkrCtanbccsliXH48K>Ugs*c6u9$(Uh(^>D>ME^B)^dx z@2Pc_TekV~ZIj|lsN8s3e3IOFT6~>5uUj8qL0t~>NpF5~TYM&UZ8bkZwW)M5f9jBB z1og?Lb#F%!iYYE)ozGgL=sXs6*wWXpgwCf)CnAXkZ-&vS?C!&s;HqJC-^)h1s(}>J zqK}Nk1FuiuX(O+Y5;_mh^_P?uHDoGnM+?E=52B;<1}n@=q#yMd5=peE??qxsCOvRm zdDD;fryf5lZ!VC}$yemoi%S0(l0mP3WYo*dI>>)W>)=S~vn zrnV{U#?e9+b;J_h!%lPPqc1A2v)Pa%mJM1lqmPbQuFlS;XGSO^ZX%5ACFv`a&Q_8` z6V|xNiWyFRI-$t1hzzAs36UfSgJw`6Z#EU&bLmhzj1H%x=omVV-a)6*JLz;Bs`&KFY(+GOud86F5gp`tjG)gs39huHv;+8z^PF`2n`7bsU(|VDN)LxhhI`e5d7U2#KO)Y5-)27U9G(rh?1rUPp+#YmD$t1&H6 zE+B=Z?X*&Uo6M)joQedI#I8E0==rSbC-X@zd+w-Z5Y&AAsO1hioQ*kV$&$5Qd(09W zJBCK6evnJIscs@1z34WVdFPlVw8uDlud2!Qq<~#HW|@pBO+TW@QA2j{iO1tRbv*xN z%TYJx{YLz+uG5wZH(v2hd|fZ+DT_|5XV)zIuay7#pZL96zV#E!nE+m9ux!@4IxP8= z<-ciJI;Mtf#}p6#5=jPwc6O3#cThs66A^aXJN~NolIw?(J3xQDt-W5ZHJRic-k0_bMebxq^1WaDk-eg9ur%o5&VYTx^tUQ%Up!A7a3JBZ`Su9 za6AQgW|2AYtWq+cNO+tN8;Ou{C>aMSSCSgiNSa!VM960%aaAOp6$ zNhI;aD+@^^$)q<)A*m#r*vTGDO;~p*sV5V!L=rcYYf%O>@+kQNHA2`~W=$DS#+2Ui(oZ3^LHA$F>) z)uEWO(Ch?^GyNa>T}CWeg&3LC->ILcJ01DwgX_maEE&AgbiUrF;`29V!Bw= z+-|<_RDG0@1~M-FBou=PlQj~qmTE|^BqG~m0$SaNd3A+#a~1re ztzA*D5M`ijMd2^W*fEq&MyN~}#rSWn%s87&s#J#PPXg2#Nf4%ytbr=T{QAmX*bB=< zsA~>9@dBt2Du7gDvO+V$(M_Z(_HT0&elOf}ICMOMjDn9BK-V+jh_hujb7jq}B-=F# zYf--r!wA;XN%&h`tLd&Ux=O|GD{rI88MG6^8Nqih`Ta$CYpH@;JUbym_W!PhH=itp zjKY1pY6hr7EF=r2C?=jm#@rPl8_g)YlUS%?k-Dob=a7Vc?&^9`v?mNCJ7-CkpJ|k~5TKp;B+ZONg z_x3Sz{huTp^*<%uHgGTb#WHdOv7QC}KN(*`J!@lWDGm74c4xUgF$@{Lk8 z&l*EMC96>17xmk)q3j?#A?9wuXZ=4f&RQN4_UNlAlOBxkP>@mq`cqj;rL_-)7S52QS&@m(s5=FtkmU zk&wsy<WK@644)0=DD71 zCU2l-9N>oy${#B@5ZRX!TEz-Zz>-`hD|;1KR3lC}$dlwCd73XAdn=;8Vaz8ma&p@cy^z*3*$9X83;3i7w zt&*MXe`nkOw`mD<5=E=}WB&Q@=b7;6GWc{?DxVJ*=}P5i!YjlcAPiL@?*L+1&nFAW zDkO*jGzbb!gH~2`C;YwPlwApbCYyHH&I+eWZFZajVVYlh3$)xD0W%BYeVrT9qSZf^YA|ZW2HO`Yvw1T zl7qNY4?JFU-MUE92LmRMMD~TdC6skUSl#_{$Uu^dcr-+gJ0sZaFl*1Me}*5igThYIT>{38l`ttc3Uo8b{-4BJD%Fjz*&pRHCjc z#+rkOAvP#w6N{3U=K|y;LZ~=wL_fWtlpjN2bE+bw;{f>vGO`azmDsx?(bR~Qt*mGv zj9AOUJi_wP@_H2p67DLNXxHKt1`_+6&{c-4R7Ff7d^v^{drGFf$qyidu+ApP8~b{) z0g+}4;c(6&RXE6v#ffV=ok6>fViOS}H`FU$|0_w^sgx|F>m+tJ;$-)pNxIHtc?dzA zbe+j2BgEc+QrX&P!dt|_BXgm`DUNPMBo!;^NiySUDE?U}K9lCrA+j);s$z=}h`+s0 zN!JG9t$2pONrzLBm1fIG8Q3wJjq91IEhRqQ*dsXO70XwVa`WxDLX}3_gQlSHlZKk zsB#2cO&?UZim}+CrhTq#nhu=2@03rX!imOX-wIr&sIGy0_>JOrh1jmTQhI}&(u=fK z*@8t#7n|@~D(^|y@p{4-BKO!s_K_Cy9C?8ZIze8-Qg|7@_!fB^3*sFxeDI9ot<$k9 zic_sna~j&ch8Cw`Uy){uBg+3!z5h%kx)T0CGP+5z^nT*PdVLKm^j}ya;us);Zwy)c zvLe_W*tWkJuIS)SY~Ld17cJ(I!|Db+2>$f*QmkxI-9*+S2NESC`2qh5uM2?RJ&i^} zS(&P;hN-F=jbtHIy%xC(xxw59#UvuEuAtRkN}P*DL=Z7y{2Pi;Sx7Z%!1?x|HA3vj zB5H};Uc3-1{Pq+n^1}c*Xeh#DQjx9apq)6Hh{K7pBPRS$ym%g>P=!blRFw?CY{kWb zux5Waz<#7lEyVPRvOe?G_5UeWrHEp=bOaqu$IBNDqQ?-piwh2Ol;oZck#!kCMItYs zgR2na|DO7Zj9&Py$X7nVx)kMXD16fUN?8QLg=!$|3-|jM9Pb0N`U%C3#Z(;Rg}y{~ zLlOOQ5c6gu(urgJf158rarLLvOk^YyJ{CX1(uYfvEsa3}* zFiV_<$Mv(GU)Ypu-OKl;TJtshmw{Ga+%j6HYT48$txvdetR0khJY_X#T)EciK5Y7A ztJ5{sI@N=<2BkgWnqp1Y@${3{Q(9Mnb#ENs+hHx#Hq}_CYj=@dY-Wu$bapeO6*mIH z^>jqDL?}xy$6X?))m`->jnWiUuZMt|j| zI)-u()Ttaqi#4T+`JDx+x+aJ9JU@Ta8mDzREE}n|g&t;G9_|_{bTTuqx4h^jR=2pGGqBGa z&B-imgXL@8qcr5-O*btG10`B3KlOA_w8EjBY$fkpjUYbYBDVGSkq#%wx1|Gc<2f85 z<{fo2oGw>+h}mE)QbW6}wM4$461)m=rz-aPrL>&ZP>D9-*+D;6dF9X* z_bW;Zm#?M7Tz1l3?CMQR3T3VDoL8`Ayee-PCy~^cshL`-jV2&xQ>HNhZCmg>NgqQG;di3FnOf*| zWNJd(kC4%gp^qVS31jS(BYgxL(rHNj#nTlX6IPIW+s?O>_ z!ZpsW@VAhe2vI`3Cb-GM3rblyt;lFaza}<@T8&!RlFg@9+ZZv17^Ma>3#mo=DMtdh zb3MJLxJ!ED8|E=2kZj1CfmeOqXga|R>X2j@mg#- ziD;~>ovtX=#QJKiJ&kd&S*q;9b}C|&uw@~ZNIAS{F&b1Yr-AB$4M!MUbc(@VB}=JD zU3`HcT!IZIOAvAt4;2#t~=A*vsBFG4~(!GIUi{orFC7jo(pB?ifr*sH>}tA z*-L3w4U3#-``UHW>gd58%We4fu)toa;gzdwu*$5|^?ZG$ZK>8(oLU^si+9;}P-ji5 z&e@V0$(ns^dal2idQHn3Jk#D{)lX;Y_`ABaK4ZAyv5Yv%;~vX6@5?%d*gRS8t5#pO zOPA)!qaB%F2C{6oGy^vr%skVJ&wA*dNa{SDnd?l-@^ofq>78S<^sdsZ&4bwH-xA7P zEm`M-dH#v4R>~ZHiRDdgS#_=f3o5j(*RsCV@xoyXBD77XvciHt9H4w(fZMh}~Q&}M z)@>|&(Xxx(Z`YI-VdOisP}+vx_I^+|SFd-n%xN9njY!uE;@Mp?b(cnVl~^*m#r)^C z(G$8}k-=RhHu0S-ThD!Jqh7f76ABR`nu(PJb~meqLTn-(3P*}7l#z;@bQJC&7a>c< zsTb%$%-zlDR|$dq{OAQcsOxmr#eV$a)I<|?d1f2DxM6l;hsGI{JzmT*;P zr@Qg=_Y+TPTy@!2Eo;`6opm{~PrLEc7ZOu7uFct*$-FhI>?GVYdz*#_3@R(3O{cPx zcv4W(8LjJd_E;U$eU)I~1(8YnwXU<-BSTqRQQ7lNbykzlayeoO88@@UI%}evoKLYC zbykZ7xgQbxi&&V$@JuA)ydV@%jW=TZ5dGG&$Lp*UQ?_(xd)3{|@5YVjJ^%MkV+JXl z??x`wwO3S=jm9XMZ=syOi54P%E4(dR+l-@!EHO_kDZ4`1etS|uQ+f8(ba7CfhO6H~ zG7FFR7Hgh-xwQb_nbaVlAEhtSV{`$oyUIvCa;%r=E0nLzNm`+G>1|)R^RI>{MbV}u z_Wdk!d08ZH8<~`=Z7R11X(}^VNV$E1&Cei?oW8`*AVRMns7TlhpyF!FA5^3{0mP3z zQEqS1R%Q%j!@TT+vn+V8!A4*~dxiR{)K8@bl_Ck0+XaAjc3Sx9<#yOOKgrEgM5|b~ zbEUnMHB{KQ>%n{!2E!Sida=A!b~EdUv>C>na}UEoMoZ4Qhl1)rLqOd?gF)Rv#X+aD z^PEVRTB(<~3BV0W z3Q1$Fv9?uJF_>K_)_V+Qr%-p5dVtzc@2OHRm3o6Fpx#HNdX@G7O+>w~O8r!708K)@ zze)pCD(0SCg%?4h02-{)5YXQE9IDbVm4<_+pguySMwLc_rlLMdrO}{i_#C5B6KEfN z?y1sVDvbp#>Wdd~CJJl+c-vVTz#q5RdQb|twA!+@ImLt6l85c( z+8-Vo#J+pjUKo`o5)JupP=pWs$rFAqu6FR-2du--Y_{?A96Kc0!(|74N3#E-g{!lH ziMB~meY^X9XY|1;(aLw#U47H)>}7JN<~nVKTeu4fg57G7Pq5p#Llg zonbJ6dV$7(dV@xT`hY5vBjk$)A6$HjFGmSNoHD%^H`t4znnitW%VpNv8tikX2o?hn zo&<{l2u~SsfdN>l8HPyEKu{xS5NHHwFlbLuF{7@b2LHZs9+Ne zD%b>p3O0eDf=vXdtn!WwTbST;0(@j~a#eA1RdI4vadK60a#eA1RdI4CLLcwr{r2$?j{g;`&NY`eN-3L0Zw* z5D)4LY6kTKjRQ4+#)A5TCV+N!_BFU{_BiU*y=gF-Z5t_^v9rk@)?FRIOw2x5cAyIh z_DLGJcG?itSxt6ZB^!DHwrI9^t33iL49ESk;t*q13yf7QFjlp| zSb3sBXeTCW1if8_-=6c4zvLG`)AGZ91QlM`YM+-UT8@)BM}P{Wgo6sBgnh2n93wGm;PnG?oX&P&Lnk~K3JCF}J zR5nOUn>o$5Ee_-5r|dJQXsZe3XO7#N&8&QM&IfcH8!;y553Pv=vc`5>C@&bBvxI8> ziHU9a#ul#Ck(f=5Ug2CfKIdjI^VA~!+W&{G+Ko3X%qiC#sM98-yDE}(I_~J7u%?Kw zedC^024_byK0ld|=~bKa#XZ0R-gZ3cq&u7BX~;X2e^GZR|8tF77I`!{fIWCRDU|Pj zHRAZ-$r>_!%_|_50?J-VW+E}i;v2bG^ z>wV4U?o|l)=>caAW?vji4&}$Q77fkj)!!vod-7_>qUu0a?a^E3`aaFmlRG?m-_Sa* zrHyUO*YgIS-lo{v)Wi4k)Wb_XUuNm2(t`N$%PHq6d+k=b!LtpvpwK^Wy^>N!S>=h| z-YouVN{Lcxx|$NeBG0CJ^JlN7oS<@%t-78PqP*UA9k1msuInl5S-XF#Hyi(J$~{Wm zE5D{JQcBssfuUf-p7;%K7MR!ZCc)6MTcDZeZ2j{c4wg0prE31Mk} zq>NG8N`Iuh!pfGWd$RnSDfx08&wg;(*FCAJHfG;49<#6fni7HU=#T8d!+k0M96sgYQ_QVC*VT^u*u)!sLV0!F@`3(p&&B?I8+El)b}i>qcC9$I z)+<8rBmVy3EN^!@+`2g(zbMTdzVg(APDf@Cjb&GIGeUXgpp5T*oChDDOrMF}cR*H(V*Ax@fJ2mN&9DPS;5TZtEOH&9 zLay43@3qcT+13L(LxrdFW_H1Wf=wAZoRoF5_$-!j6Bp68x(Hr(&R#M9K*9D59ou{| zH;4y~%xO0sDA$1X80;Wcl*NPp4N(8Pf-)^oYikk82{x`g|(NPi9E2)oppYh z5X@_~_bb6J*^uP!m51-T2$aa!7f=qVj`5OXg5=1T z91|tSB*`&Za!ipNcSw$@lH*RvF->yZB{`-`jv11pKyu8K9EFnOZpkrAa?F+-bDWN% zQ#^m_@bl~W#Sb2yg$3MU^W-D5q~{ZO&WaKFv9Jvv6i=JsT!k4xNm{MnLoKF-X0 zf}CHM=%s1*NYfTLr09 zTk2iA_)IBZd}e-QtTS$7uG6qE>;U3roYT5cC$-)ywJw!fmr1SVQtNW5b%oTrQfjS` zTJMuuS4pj_rPfNR^?s@K0jaf0YOR)9ACy|xNUaY^tu@ZphmSbRHpMwlFElyZHWf(i zi=6F?!=#Qa&W@&P=Z<=vvsh{ta@Pjst_9Ws4&V`BJ+J|202+Bv?#A|5r>?ej(?sJu zX8JzPmoE?6w9aSKgTc8x_egD93Tt#O3Sk|A3lp1G+~LJ4(--R5<>j@WywI?4Zz5YV zyi`}KtK0-^2DSiA0OPvKtv5ZKU)SoSx~)>(qf*^AscySex5HVtGu`=pZKU(;&IYHh zu7bUMIj$e?cX8KST4!aQ!Fg?$j!kT=i({$UdLP!YuFj7Sbkx1F*jc*U;JR7&#=ZQF z;O#BcZ^+`Zvbm;d3(LkYE}m;DWbdWd&t{AK>U*#b-+CYSWeesnnK84w*4Hp&rj4vv zJioZB3wwVm3zmNkYl@Pa ziORo^dRvq30py{4wP@KrOq7S(l`jh2{*Aw;@H0kDYvcK9+jfVBg{H5KQ!Vf)@t)>z(*{~b}@{H2!P{d4`TP-jE4j?Z*o`>dApSGSKc z@M#fi7i+Z}F8J`bqSnqgX+J^fvp=@)3DG`^(z%L_uSaWBKlfpy$L;u8^O+CN9>3#l zH>c+waM`u7myTPe?fAsVr=8ds>Y+W4_YqY)2Doc?qcr{D9rYURYDhKk-HmtoYu`rQ zw$C>v`)k54utQ7gL-^+%8;c|OPbYU2#AtuQXrsU15$vbk{Fx6sI&9O++V?QE2ZnF@ z(@l3Qmk_?o+xZ#w(O?^WImVlujPd3^t$VI(eQsU8byT9(k<@_=TNhCk8VQbOZ(iG;WT?tlm233vhCfDfPt7Fv1l zTX7*#ygJ%!(6ENGgVR`p$vlmvmp?v|#hrS5TGg@yLdt>VzzSd`PyyTrtO8a8mB9VL z13(o}4Lk^}0UiQsfQJDIs0HePdSETE4sZaE0PBGbKm*VSY!p8)*o4AnU<=R$Fkmb2 zD6kFK4(tGS0=t0SKr^rh*bD3f_5+UrPT&C00z3{p0XzvD1fBw(2A%<0fkVKv3HYhr zVHA!4&jBug1J46507rpiz;WP3-~{jz&<4B=yaK!myav1u{0n#kI0?K7yal`soC4kf z-UZ$RP6O`)9|(1R2%G^v0zL-*4V(o&0nP!R0_TAXz-Pecz(wE-;7i~u;A`L;;9KB3 z;CtW);78ympdGjb{0v+MI)E#{#9#2wRp1(M9rzXa4Y&dP2lyTM1GowN3EToY0bJh^ z3TOZ=AZ~m8fj~C#kAs0MDb5_^))Sw5@riNf{yy|${&0%f$EfKU&zFz zV$otQODi`AvbGNn7O;-dX1zP^R!E^Y4;f=V8plo_JE#vC%hmrzk#!SR8R9h%2H#^v%LM#_zEh2@n(yDKNu3Q9_joB zpaJNM`gCu0Vwt&@+d!1>WWDyWaGUP0A0SU4y z86`+gf(j~0L;(p(ka)kRs%K~9@p<3p{_g#KKKGB8{xn;2PIqE_{{CiX9=bYKu$UVJr z3qESgw??AFU+l%2Y?~T~bN$&%{M%AcKkLXft8g*i=4|iU898G|hkY4!Y{Q8vsTD6J z_x&sOY0a3ixjgUX@^G9EoC2qYQ^)DV>B8y8Y2Y+*S~%%?FV3*ET%HV99&K}nSK}@` zErzkjX-)L-jgFb&PM5!_7G5H)gccsoU3i;IFJHQ5#=7#Pb=1RWIVO0*CwMYW@MN0c z$vnZ6Wr8PSf+y<)Pqqo3>=QgWCU_zzc%mkFq9=HAPVnTK;E9>w$vwdnJHeA@f+z1b zPrmLqW80(7wK$zPMa`#Q`<65~T>aT;U#=b%r+Od%`SLygs>k^f(#}23cgW${9Kl#a zTuA@YHoVC9E-&91#XX?&m^>0H|Es<|54(yAo9AULLT7Br%_!y@=Vcp!Jv5xLDInlk z?l1o=Uw(ZFU`PGEp5+_KQ~f_b%ja`!_WHX&&lm5{QY-FlfB1`h`FQ`dQZMpl%b7O7 zms(Od`zA8>Mq*msW~rGR{;e%iTj|wI#;W_L??_G1o1oa#e|cSM0so&nQXl&puSxyH zzhiA`S$~yXsagE)wW+QARd%OlaX!R_k4(RFb!urtxA6WrUH&HPQllcmP|Scc9A`$H znQ&(IH+hK~UStOg$52xnuQvGHk+0dd_Ou~QAkKEyc<=X9JiaL&Xz z3+G2T4}wamdHn-YQ#Jo5gW_r%R{?y9lll4JxNOC{px6~>H=G@CcEs5UXJ?$t!x&qE z(~Act;mnV-fa$M0I4+mB7|O+QmcUukKYU$kTYuvnAXxKVso^!k0BnzU`~;P3!nqme z$2eEwT!nKz&J8#>;_QyI2hN^2d*R%Ia|g~{{^Vz=naeLlaT(6#I9K5O66aSq_v1W( zvmhQ-2xnoOMR0CKdq2fl)buYK5*P2-73SafEH!`Hts!ySTxrXO#YJ-e4sU$+w6jCw ze&bmVWy;CGSF9L!N2t=9+`sFsxT2Y#oQ;<3J(`c_@AD7%bpDZla`yPVe2;%)_V}Ot zk#EJVNZTy-iBI;HbnIEJFj1iQ$0_l# zHNMKCTHK0nZWJjiOJw)ws%n?>;`3B#6>oYlv5(jc8U4Z|G)@(R1*(1OEsIWI^vBe6GLJ^0;g{=1H`l`++_Z zf}ZbxgU|~kdM=*}bk;t>yBGQw5_*wD&*$@jo*Q!aV*fFq#S%!Pm-FM-@u-5l4=(Yn zie^=D%gdK+6b(Mcvaxvo{)O=`eLGoKo0>ydS9Bb8&?GjW?GB4(bm>yIjICp-?9dmA zh^6_&BdXM!XI&EoHel>?ww)bj->^&UCVR*@_wa1I3(r_HTGkc|7MYGR+QFh(?NzGB zBH37i`2dV!;&XLrXWoq$+@;FNyeUu3rr4kqo3cwattU(7%lE4CWY&gv`6i0dEbzH( z#7@>35AMPr>{eI!SW|urSI|p6WG`8ds;cfNR-C)4MKi(h{G2QoE6G>wP^jX(1b2a9 z1aA43eb0VmFLtU5A~BL4*p=O6f3i>P%A#2b9&S^oA}_i})l-MJ;jPOn8dhM*tU9a7 z{=!w%lrp?5pSx31#K%hW&+W%W@@Sr$zh|>~FLuy=*d_KWt2$EMT9H*|dF<=2vY&z3 zXVa(*`vFxGku$PI>$AxRm11StG}K2A9mVFb#^+Qy8=h12+bDD}-oFKF!#c38Y~6PC z2qOGk@C4oTKAXqpu8U$cDMq5BqCu_PESBYAd09NmFNc3IR)UperC4cJ29GPp0&iQ7 zHDb+Cdu!C+9#80kXY^#fSYI}P4Pt}Y5cU=uSsX1G#m2Jt@Tf^_GMma~Fh5#47Z0A# z7O;hE1zU}Iax>e)K4m-EUUtBLYEnY6v}Nxnw0HEV!kh4CXdAtD7S;}bDy6rS+L@Q- zLpu}EQq`K)Xo+fvYDu6SKD!x#MiAGpmV8f-KH%q*5|VsH_A8>i!y56!5I01i5_s*= z;5KT&VAcxa2!b2!JOjr06-@GynLGm2ZuJvU8}c4UDvm!2ssYiNXST)FTWls+km@PM zx9nE6)9ao2S(VW%CNE)ky~dsRHPi0;66`o`qg%sSuWPz2738DQhs4E1+_~(qJtRi4 zCVccUg;|l-X?nt9$Lt;PPFEgKDv_1*ADNU;##@lLu|3uBIDtlzre4B(OI*x9ma#aVIuoE366wI#*hM4?NAJ3)lm z!DrK(r1(cGba_@DKc9db0!<@2r1&=}bR{{MY99}xvqks*J8Esv&P9FI+sMB zQs_FY4t|~tLFbleK1VjK9;5+dZ4L(SrY=H%D|BPl7(f3!9Yp7o=uQg#A^Q+N_h48C zUMyasrz`YyHXT1FhTKgZoZ{cB&@_%lkkBW8S-r69`v_DpJXTTvnr%qpz@LueOaMz zv)lNY6XGg>Cgw`LVLLv=pVKO(Jdu9<3icA3_JtS{*W$dCDF+Worz}x`VMrYK;>;DdZ0o_ zU{+)-ETn1eBzmbr=f;!?{VU{d(m+!DrxZF5&ja)-%)x=mJ4!TPB%2n;>XL(sh? z`kq1;gRKOuA*AxY5*@o(w!9=S3G}SAVCDTJx`{%U;bnk!h0uI}M2}YJa=aYSQ`ZLX z9wgD56uJVh0Q9awL8=Xr=*tS-nzsfz5^8aPsBcPi#wD_8ZFyUuhlHSqNp!M8r|=Y@ zn^zCsJwl=fDs%_l0q6#A2GMUz^iqZH&-(+NwPz6hu0)?w=z)A7(A7iGqa>Oyl}#JW z2LnAQ1U*Kgiz)O_J{0Kb-Gh~nlju$g{SJQz=)EE62@*YBp?%y3^t}-DM2X(3(4%4c zGB&weu<}U~eNUms@o_+3C>KOek?7cEvgH%_1faXW6+};!=q3t1g_CD!Y5yR4nnaHV zI!g+liUVS=ZxEf9+CIKH=P7=^Le{^OFU1v0LRv>N0A@OcUe1>TeIf+CLZUk<^vC>T zpeu&dzfz*7EA(2v7U)YMWM3`Odlh;;Uk^0z9cDz(= z;wy>nq|lf7WkQEM`+!7GSLhr32GDJf1uH)!(R&s8H~t&Y`Hu(Dhb8)+Lf_)IfSweB zJ}S|%t7Xd{^T$A!+#1a?156H-;}YFOp`Y+4KyM5|pOom)3avRb2V~BZ9~v!CHk^LhdaW79v*@|C(#+#$fiX(qJU0I3s(NEL?}U+M|IZ-$ zH;KNd&`ljpflhc3MBkF=*mbhy%^l5wu7M5>%r?JEbQ6Vc<7fkPzYz3Yi5{)c?HuiZ z-W`IzFVUM6y1k=4(APuIe@gUah3@F+2=s{%tLdRcXH1n%>+I+Zbl1qBN%mNxlNGwF zqbtyfA{FFNN=PI0a+J!L51Sl95NfAT;-g9DwJX7#w?~H>U7N5efKR_#Fd; zAp1Rq=MuR9e;EQNMKXoQh#0^xq8zy1A>j!kf!tZY6T*J5CJ}|jBNIbsV6-&IFtSED zC0tkn&O1Fr&U83wiz(b`k?TJ?1n!Y=!!iJ0P$gJT1_}3A9>CX0INV9}fXot+!J?qS znOngdvPpO*ivkE^tl)zqB|O540DNH>=x)D2w1j83D6sI`{a`&Y5}wb>2ly@UXEG>B z&&@+qbqY_g5`Z`!f*^e`h3B{O1D+aEQKEzwvI+tIfhYLj{1RT&ssQ-x?}85?)h~rt zv#J4p6Js{nesECmuC ztrj?`OT{2!kVK?eX}ICjVL>=4Rw?`o>kGhRFexS5^cW%GJFVS-{}pn*>YshqSAZAD zAH06Ny#9!F1n^Z7ZgbKH5^>5posLjF{gH$pw@v`g3k548hj5c_dM0I^EmaNGI=aPN=7iq=W^Q|l?< z&!J)`+YeqZ;V-NgfX5CF!b$l_Ay>Hv;lAfVIB7j8T=V!eAO?AZEV)%8Tpknf-$Ph+ zn}l1QFu-eW3s&@*ghzNH0B;il|3bpEda?o@5dz;K;W<1x057~P+L!(YyCfpg6A8qo zqrnI4mGGRNoPdWxDM+^8_$vv|<;ey3+b4r?(y3B-tS1)m#YckhLlU0oNd$anI^5?N zbyy+_cnSc~`C{;fqY_@&QyB2yAVmUl@R)>`_LK&EcZhU3Dd8176#$O_<&y1&o|W)q zPcq=mLg3#L+{bHpY5hyqxAL?H{0Gv> zZ07n!!aI3}0-l8?DI0!M!iRZw0`6N*>WGcFBN2N%^$~bG19239{~_UxysraZ>_QO! zNW$BAI|E+mUJ(9N!n=6~1D+ZJe<|T_dJ&RlSw6r_cjfK)aNvoIIn z_rY`lI4NT(+ziW@9f(BI%Iq78NJN&foM}5hjZ4wf@@$VQuKA~xH8g+6-EqzRJ9ftv zbtYzo2^{YKZFk%}f4(-k!_$`RiR&wTjyQz*;lM)VpPg`=a70>taAbwp0^QkJD=S77 zg$;^{JVst4pAl~)7>P!bk>AMrr@H11>m`gdC$4#$ZxxkYyxSOJ6mpnH-cRVj}IJ^bC6uyHh!3^Vq z*Bf>UFH6m-Z;f5AN|F9`U&TfFYKhlHE74lC5p6{~ks>;YI+zE(uy$JeAZESSGf8jy zDgHq8ovPZ{-jPFVV0Jfqm_5y*Q26Q5w|NGQnWkx(9@A@{x|~&pLw>P-weDK?t+NN< zjmK3*MNx66M>xxY@=11!#ql=&8vElizV@2vC_0Ok;tO$9923XIH{zTSnx-|d5^k$t zT^^&MIm#^BHyVK;#@6ujqL5bAUCmwHUBg||ADb&av#)`1+B{?C!2Cilnr7v|kfEo3 z`5zeg6D-b>e+03tq`tC{Y$?hwV*i?t+$pJ2>zDwXs zM3VNW^MUiB^DE%0EVzkM3*rwRWagHUUN> zb@EYuM||!6-hIJ+(LDkB5LI)=an|vzBZJ6puBm zj=A0~-ZXF4up?h)lkAn-sBgY&PWU3qC%ZgJE3Q@6Uel6$DWVo~d@HKDo4K32qw!7{ zZ7gub5%Yq1-~7XT|I08*wc%#}k5r^Bw|4?6r+%*QXy9lKTcIrsf)r@|9iZAj7JrHC zS`IBzi_&sxxwIH9w^pKeH1iQ@7x2SkgX^yAp6kAA3uZ0i&ENP-QQPQg^fG!IeT*%b zI%rr_@O1aI^Ok^>Ks-{I{pdK3zYxuc_auN%i=w~Ps{|Sv4LyOb{n0w>iN@>E^Jega zVx8-f>$2-gc2{)zaE?Z=(nFloZ~g*@;s3MX@HBnvE6m>;C(NHuNO+-`C zOf(lQL`%_LbP!!dH_=`66ura%F-Qy+L&Q+=rWhuMixFa^cw3AU6U2LBqIh3S5>v&8 zV!l`)7K%k;u~;gWiI2r9u|}*D8^lKOiP$7Ii!EZi*eQ1V#2&F%d@1&e1LBbQTAUQ8 z#98sJ_)c6DKZ>8k6>(KO7l!81yjp~oRg2Z~XuF``eF!rgK1cz1&PXJ}ZEt1QxrvU1{xvF3T^dzONU9(deOJ+&A10+|S*nG1n++mNOe7C`C2->a#}T zo_1f`Wf-tDsWFXNSS>huxTlmFXF;8UHvS{_K+`jMB+cvPC zqHn21jE@k1>5Q|M7^x+1KJQ{7C9M42at(MW;XkoN8 zUN>49t&JbepUfGEJQ7{1u*#yj_P#bro2(T&r7|w!4ZB&n)oaY~j)WmijjE$f^=|8- zUTFZ|Aj-Pxx$3)0V+N+~8evkDDyM^``Hse2;5j2>CWZuweCaiTka?BoJNe1+sK1Cy_`|U ztY_9Y8=5W5LFP#F9mvK}=6mJ}GtDG19gxv#hNS_vPY$uOuq>u}XM5KpbU;GV&BqFd zvzD{A&-tnMQwZFcDT?U}8*R-G%%_jC%GdphUl%>WK=1&ty!^Aq91MP}G;CsXh*LK$q*S$~F znIIklqg9sOy;36VERI|>1&5eOMiMVnG_;M%2P7XZ^+?fyjSp*zf4m?^7 zTv{J|+7g^PKqs*@(K*RE+4%vumY8FpxEItImX42!qz zfiW5anvSuMGULq&7%1K8c?G?>E$VB!9gBG$-5M=N=B^3c)6GfW;M zJwBzOZS(Ar$KN%z?A{XIM)GLlZ6l9%-fr?B{q0S8kQO&p9%VCLb>}XA@^r=O*ta=&Y1h zNLAiveZ&NPyS_u;=Y4^ACN;GKUndH?inx9?-W{SKTlrP-p?jJ;lW}iTxD*`Ip!-ho zA(NFVQ5v^Wx2M2FAjvXPPxT%|Lr4ICJ&~0|jV;d_h!fg%?HBEa7Vk~)CVDC1kRFr1~jW?*fcA9-qQ7+*ARUQ#Xbn^Iyq2C*!Z@Zy4X}-WCWp7b0y+G%f=#Ups zqhTi_SFeu9rybRfX~(q_+DYw{c3R6~>^1k9pBGV+Nnh&?9G`>O)aci(a+sd!Rdz$^ zqx3|2fu*dSsH@k5JZYpiE~#%cI$C3FWA$TxPGoUcbXRg$b~|jVGKa@;U6JrZ)Xn~(m{vj44KS$bFomg^y6H4;nYYcG;9O!17at?Iv#PV2(_!nrf3ZR01N}$+C%q4v zp9$AQLQAQx)zE5cwKS=rn1f)yZH4WY71r7?@5ivvZensH4eN>nH1hq+{C2^+a-iyN zT?lLCo61=FoG%xeOLyHc?tB08uEdz5ZqOW$aAednLeA$hW6a#p%X!xM7bcQY=1}WR%lEeRjy2jEW6iS+PZLj5%!6$`8@wC6UwaRG zfA`+;-u2$|-uM3D{qTL&sIArwZw9auJ$@l;CGzNb@d}B0lD@|1YW)C9fiQ*nEHU4? z*167^iaCwy%ATg~FKTLGbJCq2D}Cdmkm3rqlM@6@30+_S_VD!c41!AC)Y}qfZi=@P z1Z965?|Mh!m<#c^6r_xYsV_%8t1pggm$b{;740(ASL&?Jj_0Dekz%wrGT07*TCA=( zs-4r$Ylq=tC(W#sRo3#Aw@7veE$hRR)fg;dv@@rgb!}VqSN=p~z{HwtR5hv@XJB!X z)*tYroXM|-RvA8DTyS1=9x~39Q-X3l-y!C>=DOy&B8)S(xw4-BC~CWhxQDvW9EZh| z0Tn&r;aWw_X=F4rnVHQjW`vp5%w}dcbC|!IcTCDfC8923twkZdFw}|SdI^1l(Z!Cx1z15D&=ek6m}9VeJvlQaFLRk zk&z^Q3sAb5vq0ib$HopizIKfDjPo4z9P`9`cX)StcX@Yv_jvbu_j$kc z9`#=FKER_Mc^`vC$79gaz?=llW_({opK1I{vC4JCb<{N;#tdOA7lmdr9!i-U5S(eH zv^qwAV}LQx7-S4Kh8UO3%jS67*OU`V{7C=EOK~}TwY09V#|FT|5_t=|W! zmw92e^ZX7vQ(Ej_JR07XtmcSxt!g54s7dBzJm3Q`)*oiSN9r!06&<$2)_lF{V*jfch~W6v$syl)+uL_g#%5_T4A zDYEDh`nrxrKTJc^fnRFhd4K;_4f=mI$JP{84=CkLTBfSI?D)lz^x5CvC&{)*i#sle z8tyLcuI_IB_pijo`hF2N#BbuJxFv3jJL0amC+daL90Zph^=yW59F8WEkF==94Tk|gilG}$!)3S)!!V66%x_I^SaF-Z5{zb0c8kNJ zC+Z}7s`!uxORrsxRTND%pEgR{16e{!OkGx69MleJ3*0|=FN5vp+k}kpMA?q3M7H0t zIVIE}+6?`In5Ph*DdsspcCLh2JnBt4q(<-zP5CHDTfeqc(aOL2YFwC)+}79NCZ&6S z^8DiY9qyXv(vy76ZmQ*Z4K1cdCy6IJm51{IB!88YS>@0sCuv=amh`-;BQ^Ld8Y>$} zui2^XlE-e1jyOi{3$s=B;BS9WT^rG@8rqfXlM|pWv&?~^osis%AkNVJ0 z8pxxezVhujPost~ep>3U%cB*HpaJ?oc|;*XPll}0r~a-^P4muxN;T)7lq&zRYY6`j z5g+O|^k4Os_TX8@&xnlf0`7ts`R8n}!yx{NDDP_FYUw)nHwoVoBZx>h-0a#_bvLYA zsedJUuh}Z(dgnp!ZhO?6vUVe+ORT@iiVAz}1IT#4H6vYTp#g^iH?ObqR-|Z8y#v-x|~5XQfIa ztWURa+00;UWW+`_YaQXY#B%sh4!e)IM_{TT)=O}lbmY-Kff2ab{LFlUa2O4Qf(~69 z?lWc^eq#=7&J=3|ruJ94Y()Aa^ZaVaho5n{D=Yayj_Ydna2~}!6IETKU1K1^tAR5M zqn$-X4XvHl84kF9+7LL@eA+lToj%lNYxA`w+DdJm_KD`(2KIfGf%j?$pR?V@~pXK~`@Fr970+ zTkGxhE_%-pejlU{(`V>&{EP3$#R=0H?%(@MToK><@DeSCY*-5?YnpSX^PuyX^NjO? z^OEyt=WotC&Oe<`oG+c4%W#FcGP@#OF|K^BBv)Zq30Dm`)Ea}m+qgQox*|~3-!&A1 zakT3_*9Wedt~stnu20}o+V0xp+K&nNr0X2qmzP}EVF%uYr}df3;dZ+teC{Z?QR6Uj ziec)h=x%@jK`VC(L~<{8KWHq&-S5I-ILZB?dzO2l`(yWd_h$EJ?w#&0!6zr(=MXr# z?EVG5q(9xy+%6-VQNSo+l!wmL5dOmyqcc4HgN(P0amFNL8dzqL@u_hNJo$rh7cahW?3m=P9U6o^80}Q(F+s@ZRmK+BcIQ70+DHT`yb% zjk_Qc4aWKi&g4d4l!WG!s~_4(5-Y~aZS_DlHdP+a7mGX2yUu+^YcznwLzMMhP1Tg& zS$8p7U#2hDd(2X=8w0u}f@;5DHYC-NJnW{Cr@y*>Ex#ygf?;~Qmq8FwT^p=Cugv(B zmf2D_r)RRQWrg!e!f^I>_Hj%cW99?M+)m@^{Oz9Tj>4u)|ZvcEMd*Eoq!pvESM%pF<8t`h=N*} zJA*siozb1io!Onm9pTRE&gQOfoHS3FS&)oH?`K%+J>lMqL&Kz{k_*9Ngo=HL6_cYa z;ASHiTV1n}?NWOkuC&p%^Xz@d%mJ7F9(i4cXgqPs4DF=%d8#7ZHR~5d0qMhGl24;NAHb$SYo?@(?s;}1%*i+s>zEPBeRA}O=X~zjx zdg3+T19v0O0XtZ*#oftM(~cG2;-_->0bL58SX$400N+{e#7Aitqx9(UjkJnSm zyAjPK{(Q`1wRL8y`MDW~2yQk&^1*%hPrAZCH_h6hR%TLoAmSaUTtxeZaQKydLs9yH z|D)UBDNP#-(KOwdVYG#9{0_|G19mXX;uD1KZ0UU6Ny{Cn1t%T%;qH1UE$~;3eC68O zf(QY{2q-LDB)@tn1=wgsBXR33)>#bGhwCHY2<8w58-3p2Y^#aP_udFw(#tn-{0@op z4dg2=c_fJ7?~3PoVP_F%U_s+qYq0GzOW|uoK3AOUwlTPkdbir1!N-&VSzI&(hc-@k z`?fSkpH)p+#!^Ic-PZ!MR%^YDzSihq#o3x{0rrDqD*Ay&f(qSDg%gMfc*?!UGZl&e zm8)4Ty;JY0@(uT!-rj4oNfw^rjf4AyJc=dw9FeH)cOJm3cF6g)^MLWSdDzSb{{~?z z@GFi^KG6?Dc7Q%e9}MsK$3}ZA8|*}S<0yw$yM{U9nUQUZYKrn9WrMmwkDqH~32Tau zp;410{#dQLn>;Wbrz#nk;>fPm$8^#OmR?7QdvX9!n5Kxf95dNU_YQNX={skhH#?qC z#40I9VF-^&_kd3{r$X4$kZ2Ew-7MYXT~0Nlzr=^P4kFnC8OaIoItALCkBK8pdx_7&+WL~f= z@AmbI#0U5=q8c~9UW0fVi|-Pe+Z26aj>iCiLb+UeiMndRF1Stcu!-g4oz$&`CPFdI?{3H z31?taf(zc;{S?zI=VwJGs4~UfZ`fY6?Rj|PITJ4<8bCko0*AyyTka0wn?*(F zVI5r$d#kJF@?*l`7H-Ym-*`AswQeMwg5(m+8usv%x~dqKl^$>$a^yr3-@|9oa%JB? zXutJeQGd5-|DCRz6aKm4dPOLyjWE2GD*8VP=szf+?f!EGRI{A}$*huS2BT!W)?s+G z^Z}pd4@EKf8^VkXM!1pD$Yf+TvKSG@%IuhYvqCM-Zsah&Gru=~f`BL4*VN(A%4oxk zF~(RZ$KxSEu9-iZ9pE1#aW=yGW}M1p_}BUFpTZ2cp<0m0tjMZ~*07LPX{+t2p*8>5 zC&FAAT(^uw2z2s#pW|FBtqEh8G29qojD&Xnj`6N>#k^{2Ym^M7XvR;Slp{m=kKVM6 z*>$YFXs>tBR~p4CDV7dqs1>WB25wf@E$=2w_M~nJM>efdWi28-64?@Q$5v)*IN#cu z?T~ZS!B(GZYqPx_?1#)?&4sC3`c@-yk*boy&-2zP+NAjxKfr*b=yx5_MZ6_uh&f`t z*dQPb0_o6zCruJ|;*0+s@ zMvi-!!mq1Cmi2bA17mUgHPHe?dzv;KVtk$ziMfMhTxC{Ow1Ta> z6pqesjwl+Kh8fnqtw%OV$Dyt>7Ydc_T@74Ap!adJ@ z!F$2G3*K;Y-Q2d`@x13*=vnF6==t1p&~wsr&hrR)OPRb;-aOty-U{9--WuLs-hti` z-Z9>V-pU)5*gMQ`igoUNup+;5SGL{vrPyJ|Th`k?geHbxQZ8xA!;?XI$p87?eS1`7 zClGE5#HH)o22pj5b{ZiTZ^KuL%&si12v=6u&qioS!&OVME$45Gr+PkToYU1uLHvBb zSOXi`ciuJ4w#ahxsp4Iy&w0!Ux7`)*@K42SFti82?;MV?PlI)*6`tS76_|{+bYu)cQJt^9{JNhr>HannqCsI4*h`t<&ZF`oO7T;uH&iYE6Uv zM}}2^dQ~xBk?feo4~bNG2YkP{s%}v2RXH``whOAXcN$hG)1_g2qHsAoIy*Vn!T6>r z{727q&uwItJ%f>5%3A<-3sJ_f{z8n5LOr|9y|8}wn+MIW&7DBP8h?JDNCt6~Bw?w(>BTZxR*Y#%b&7-YYt-OP=_J+(&uI|72^bG!B)- z@j4PX$mUdu8!BysEYG(=e4_tjbL)$Yk~DdEUOr7s7mch|?UY=XffcjWDJA#Fr+30O zdpvxkc;eGzoVlGR>C}b2iiWnEn%&?MasBPwG=<%lc=J5#`Wy4D*OTq;r`KgYyy!g<~q z;rbBn7Y$imWf6hTfpqY9(eX3jAw6R_5z{MzfO#y8P_iXjTWzeiR*Kc$>R@%WI$52q zE>>5oo3#M}Sc)x>yz;3S>@zqp=qtCM?v+OgjvfE>t-pmjZ_G(G)xbNkl1iuyNIal zFK|oWhu8a=#&sv=@^FNZav@+`La(IP)EmRz?0}Kl3r62?eI_y#7s1!G8h(t;Xxa|s zbopCa@mYlB%;lMZz6Uy#x>D36@I3<7{Qy6cDDlp^#Ed& zr(EZe;d$Bh3sPn7AsO|#OCVJ*s}C-?Smf0fgk4bvITj6(L){v)eOGwA`Xi`2!tFy& zWhtS#%Z|ie>CnPDEG|J%|;#shGUSDQwX^iuOZyf8a8bYi2NZ4F3v;} z&tf=JQsJfFWoEW@o~LZEn5tjZujv~mD`~DYxnI$pxzgS_8utT_QMqnO|4(II(n2~C z9%+a{@6Q5RMFz4Gt#8|tNnS0V7N^B)30k6-Un`&$)Cy^ZwIW(kt(aCqD~Wh=Y3SBv zVaAn5dPha%G*!`R*vgxej~2{X$ywQ%20e`)lphYpQHGkzvBnLGD-DV;M}(Fc{^-i4 z?=|z;W|d#B=I^xa*`+JzUqhe2!dRy9w$JKi3$}y&hFA+`*o@4+UZ#>xk=7t+;xbM2 zZxX%{r1@y`zU?K=<+%?>0Ys;d6>)qgs=+DW+C6Hu8qoQyQBYE;okjUikG?k zWB3=MI>HK5A?9k^N=6N=Px#X_8yXC$9A}}Z&G*)ZW=U!11^En-pv`m6cP?-)bS^@G zV+mX*Um6F^LuPqMZfaa{{tsXyuPc(HREUFy77x~!}!(s&A4gY zGHx5c8+X!knnKe{D6#J|I8?tdx0^dm+PaUFsmE-fn4*8Df3I&re#b4_2%FBD2_2$) zlR?}1k?V3XYa`0Q&0Y>(g-ZHnqqDUtr_JzRSP#%I=W)>$$N%&U97g|#J!4aR32Q5o z5!R>%FHTK;i_yuVoe)W#%FHK={>}l;y~dAr;JF-MD1OFlc-;6ATjNF2ik%zW1t~c4 z?<^Ek=eqfeIoFm?$M|h=2vgKaWE^+CrNqZ_tFtW}5{>3a1g;0An_PL9xdnl`6MMhf zJm=pV6Q3>OH}j@h&o<#ovm=gSt#!VmvIy&1 zl?JGpB2-DQ*IHroSxzWdGDbg?ZxNLcp6%vx+J5aFe3^I&ZRNUgr>5%7yR4TOr*DGt zbLS5wxKBEIS&tJ{nKGvzL!eW?m*oq@C1^cIjK^@3666}z_1(t0z8W4UqBrCl-h-^t zuVBF+N`$Zdn0W$Gtus&y&%^ul0~T{!hNI_au)weAx7)}xyJtS|$L5L8tWjoL+M#0c zWgXk{#XpYrKVA^O`G0mb{cmcd{uAz_Z6m6p`)KD_njVqf z!D*#9ZLSc2Q-@QcWevb-bAaw~RP4VZ~Qb-T+5uPTCPYtq!(WolP0*G?5-;N7w~+6~2DjTGYd{a!TK! zhHPL>;2fe}E{4r)wrnDfx$>9~=AmN?2t*_zG9P9~K}sUkEgVFyN8nWfl7$j2 zJ9e5YjDy-ud$(1RZ%<@wjtzc0`>-XY)tMh;M_q7f2Eda-_N9D5zxvQ6d-Ir%P0xz7zsDH_cOHK-?>^C{o}a*Kb3 z8Wb0(&gjP92zj~LJfVnEe-DFGjwf8*xrKsw|2won$)KVr1J?as5UChoS zLBM=`BA*1hEa0^KfqHQ%I)k!DT=F_1awU*+BCerj5yasDx8O`#N zqYg02ZJXr z6?m*YbjM?}yX5Z_583=9+2=C5!j@uwpsu^+LwNqO&CmwtE=A@B>=}^MqzJjoGx1GD z&?8t)U}^XmHVJo=47tRp;;W3DgESSr%J{7wDKSJZ5O5CWX5}|A@&(eP2J*n-@3&ZY zejE^jW@O~Nqg?rD3~Q1;HKe?m%hD!JjUUE+pYYQ*w*>}JCcGT=Oi_%F3cPD!AuDRm z$#9MZoJ7(=2&CZKD8WSS{~ZGP4)#uc0BP>TVL&)r5YJ(d=vhJF1{iUj`Fw{WAFwTW zAP4wEMmfOr;21a?ORzOl6{~DvUDG?gE1F6S@ecat0}x^vzxJ(q`<`qZ7F|-GNX*59 z3E8F59hhJ;;jx480z~QnjAGG5qjQX6%Tzilw|%8jW;X7$%KNRvUxUh^2V#rw zvi0i~=a5+J%zCh%*uc3oJOFfW4^|ptK_-h$#0*GlKxv?*;1c5MVB>q*b7vZ(<(wpi zib{z)7ZPU`M$je*y)<-ORbc-2RT^wn{(nKI`TwrcwEMrJ)8N%X0n$iT;r#zWrD?qF zS^QdFuQVHlzN0;l0@PNDVnMK?+9N3dr_qcnF+Zw3l>%_3C}xLe@WJ!=DDHD{+VO-K zq9G?I5S6_0D+Ht=HfFE0-k9_TVqf_Ym>I`l-}6b3hSS+>NYF*>WAr_Fg6OWF8SPa< zr9qs$I#j|;eq5D0@xXp06<7sE`ICg-=40fXpyF4I91>LO%E%ExFGds1Sj@QZ$*&9$ z?k7emlT=FJAD{o?O#Hr{G8G#sT9L0d6G)LdYtTP zD&A$3FiEBRj4W#^wdRy4Nu|#jS<+Oh!YLV&N<}#BYeJ=?jP^63QYlXRn2>-djb(^y z+1<&irbtG)kaWcljO=VGL5=Vs9g>P+eAO0}Q!CBOP|2?B_I2a(XJ%~ECAW1)ED|J!Z7|W4%#WUVHY)XmS>b(M^}EzD1DAf z$vp6-fK!Z;Q|H`X0ezZX6gF&rc7eKrl>gjfP0 zz6{Ozlx>3${|s#Y1$bo#+nLr@OBl#~v~>fGu}tVp+9rW07>7?(oMV(CLv5+SC^d#k zbvWg`P^memJQXU{W3*EOm98<$RH4#iMmr=>DVEc|2vo|%DQSgD&3Irhgz~Jk53>>h zD>KSVq0$mYJ04IeGpF1WD)r*D=K+;!aN4gyZQ>q1({$i9;L8TLEFW1HKEIvx8px;r_!k|)n`DGU>U1F45 zL8Z%#aw@3g=9E7{r8SHeUH_fd0YXrw1YOgB(VA*1wPBPfL8S;z=@C@Q!iQJ2$Hic2 zq!2K>{Jsml+%!y4GthUl8LgWpToR}J2P);@v|5@Vm3JRbl5^LtT}16@;}(UNB>U1gN!Aivl1lu>R20hcn$X`s?e zM)?X<>cVItGnG1WTChw#91k_@8%B$j3BI3Ex&oELIVC1gsfDzWX!KSBXVJoBGJ=|* z%jp&AGc6;*!GBu-%6wzC4 zVbG8@%CEF$65X_tn5a4c`U5@gEw&JOC3OEqMr(UPAh_mY{Q{)Q4jf8Al+dEr!~QJ>t03) z15`?8v?iEJ&lx2QP^ql^q8Rmj1SaoC_)E~tjF$Qmb2b473_{&w(eX2wZyx%b@&@Rl zos6;ts8p2G%3dmE<+O;GN=-RMovCzy(F$5BeaUF$ER~iqS}aSYSVl`_snnbQivI&s z2nA;edX~{rSSrDh>9eI;4^9hJ3D};~qEssNV6?WBN^2N}TB%fl)0$E$73Q>9lu9P2 z1))@`%_*EprGlJdr&RitRk1s`I-^yd1Z&M`%_fy5xtvcj& zQGA2b!a)LdV6;Y%N^Lo<|D)1toL2o&sV{%>ohrS~X_+3uEKZB_3ZYmbs8rOUdE!+H z&^M_5D>WlXp#d2C0U9+3ONi<)8Z-)}())j-(=^a2lu~p4Myr6v5~SI`(Om>qk)<`+ z5&u$4Yn(H|?e_JC^Ke7DbLNokoFVm%d^6PP)mSS?(tv+vJ>SH)VblAa>HZmVYtS(l zPPJv&=bw&`)BQ7dpxHQiUO18}^W-y%oTJh`H4}aKE?~e_a|)vSJSOPxpif?d%E@tsVU8Twcw>}2%~KqtHx{c zfUAbyCE%)wVO!HZHA7zU&M22_Vaz%U;Jqe~b}`+A2|)M83MUX;&J;TD4ZMcC{j7qcc!w2yo;hpPx#xYYI1PB2Z9HLSQaV7h*Kx9 z!*G?5WVz1_-VFq&^80)mA6!hi4?UdHn&{e}*&nNY>f*=HsKadMQ5K$^=a2%5F3QZZ z**aTgPB|k4E5^I+iHDn^1(rubDZvssVEVTcC(Xx7y+@&R@iON;%Rc82@TOokg z*qI?Qm{loni@XMfCEF2E;V+bAZOEg}Z%a&A%hT2#i*K37R~8QPdb~dTQVpfiOAXsA zOn&xQg;M2t3*b7(U66v`rvb^UlH{hLL>a{ntJtSyqx;9 zqYt0iBR4Qr0;d|(M=I6j0nMs;`j_-Jqr$+tz*rX0vKsP0z&TgQ_w)i=(v*WnOk2`W zosIZS`)iV3Ze><8b{6itX@9wL7Pu$yE&(&R3v1qAIq21g?q=g7cZ)C+t%NY0byV>L z1t$WkR0Dq2encHs(*9uO0!Be$azkB)PId#90C@)=VmQk!MJX>S4VIC^R!kGwPPl)m zy<6E%yRup=#jb1#BTb92r&*sLRjCkjHc)p|V`Nm59!8{Y1uLy1CJ}P4jKn-opOu@8 zgT9^=4rgRGaOaTE!MHSO7eh{C9c)fePksTgGdynre{>vcl%%T9#c3TLS(tTr-E^L5 z!~_27oiJNyAs)T!CFowi!w32TUeFBid)`^6m^TqS7?$J7yb=EppUlIH_+Y1zDo5|s zkbh{u@w0SotvZ_n7_m?Q(0$+IvYmF0m@`sA6@-xaarTflcG9ix! z)mDcGG{XYvE{z(DWHQyY8_(V=+xyHORL!LjCI*X;*tmjpIz|dSHumFG)>CUJ|M&7GI6Z29+n2 zXuk7cQv$^Cf|zIP@VAaADz@abT?$cPKYPo5*lRS21$4_goVEd_I|`<2 znH70p)n0R{Wl}R}d?wj7*6^{f?JB20g$YO_lIGN?9B__Ygxe|Vyjspil%QQh=^=$! zKw0g^n%V+nH=~U|RiiK1^-fFIMk{jK&XcevUtu>O?b%=P3xt18jf70TZkQp}rxB{+ z8uGo4Nl$g+M)&$xj}ZBCo(zRR1B|HSlm147nkX zyrG}`;v9Y4Ay84AglA`c(puC^7|VUd;iygqwk6yStwKCiRn9n zf5G@DiK(wOLTeO|CoLpWs^$qWD+jg8vK!a%CV+>3FbrAu@hqzCZx&XJlmjf~n?LOg1+mNhl;0`X+(BH2QE_ z$OLM`C6V>xjI#8Q1(GTINaqzbu`F9JeNym%0Q8~BUu#&+HT+IGkDh`vLm4eGj=qSulA)!keoS79=D2ey3kN0hjx9pMr9pwfP6oKz3w*enez+buo2D3o4zdHhUL!la2 zSoV;}^MfjbdEj%)1;B^ubIXW1fd9Ufv40Zr-EohF>j&~cq(48nHt?0@)?hjcjS!6r zf|F?#6Rk0Lh@qC5`~J1Pw23>7scz_&A=1-E520SCelE)cUsP@deqJ^_n$fC>ksz** zjmG$W4~OCs#Tmp4m82@$81!g^Op4B+iR$zpDD*@9l~G1bsDa^T8_zh+Hf^sF=G?s*qfA5p{%;YQ&_q{5H$X!l4 zCW)U=hNtX+&!UtH+$TL$(~?uDhT2&iu5|M1QMoEKQ1a^$nF>K|+=U70uypDXqzK&W zdobdTvMd*15)o(>M%6lus*Q|xG^8qs(v*Kl*vvd9kKy@v0qOZ8Y)uFk^6^o*10)CK zNDxtI?9!N}%m~88B6>!;D3zChVC1}`8jHcnvyXxn%ty*-G(g!g+(`j_Pd0`IICUDa zZ#FQn+SQtvmB~mc}Dp;_0ialGC=nsM)YQI zY(*cU)-~`w=4OapQ*en|+7P0Wwj(4)xF?lWD&=FOffBwQ;72F>PZ%;_{Hu>~(-a*0FO`>s zQd|Y%F`xu1L!kkv*(lx7-yBUPO3+dlC`1*EzxFKkB3Mqev$dDS*pbpeZat#oH z--EZZvGi*arXD;O0e|LXsmKzvEhe)-N{9MtHc?MaYb5?@iVl1;yAkF?QeR0kA&wOuIs`r?&6cWv9djo6I*Is&5vSUXD~?F*wE`d!|0&Vge?s$Db&tPm z!t`2;p$P9n8}>+bms}A<(`e~PrPeluF-d_$DmRB&`GWgTx1g z3+b-X&`!qTZ>W6p(Tq+4j+9tJkT3|`EZE~N`i3~!`NTWa(}0MGIeZeasgwU z+FVZN7S`hA>!mxYfXz06(LQCge;$!LGpD`t$o|Rc!#whLg_4qS=%G1*p=~LsTn2qY z+fh(?3B)RGKS5O&m4@9R=zt?_=WGh6lpP`|N!BMU8z#R7nDlyb3akEW54ToBgyO7J zc@3zMs)VG?kjH$9QE>uuK;SXG(jW64lsWQ1CPPSfhZv^EkdrBse|}72;W9`_e1?{` zwC&DYj1pjJ@(*a`uf~g&CcZ6qV!p7nd{YxH^4ZY|%hHy$OKhKE<+Zr*ZG97$W%2hN zl2|$K7uekS8g^ea@oATA&N9yaaybxf+n9*@+afTy!hgAQVqX8E)aio%Q^kh9)-1u}l97n{x&-sE#^TKp&xgYv4aP zG;w^f4f;m?6J*rWs}QA2W4D01Sam?(`1lqpU0%zjs%`~x?1twfyZ@ax6SGzLR{vJd z;LPBR#8C)GRUAuj?4nHoE~|Y1s#uEA02{iu#R|sVS5-AzwQK$}Zzd*i!~gWn#2Bk7 zwz_VHqlL4jKklu>5@{2fB}A7?TQ)7Ry;wOdq3^a?iJHr=HA`&jqt^9DP-iLl=Tl6; zCm|rdT%ne+*Td}C8b^OM9d@D2?YM8ULr`ExPa~6DyS?t!vs# z0sVdDf<$d)*~Grv!jrx?)4t!37?18x8k07re*C*)TkfP=?zCHv6SIhI1(R}ff2O)g z`O+4hPTJwvRy3)KC#}k;q&;F=m81pk9H;Tr-0%jK!`}sMRYn?&)jenY$EGA@%W+ns zv&xkx!$Q#C_@4vK&!t6tkYqXhi616C-c~>9`)vO2S0%;I?wa&x+MlbFJYrkVq$%FC z+-XU(xIg#yq)XeX6uj#6-z$+n#$R`T(hFYS&ubTKq}9h${GDnStmYq3yP%P_q)Ne# z|EsJkfotm6`k5?*um%Z)O#y+*k|+o$nuN^_6ct=rRIK7ssDcm)1_TupF4(3O)W=al z4N7m=Y-6j8&!s|bpZ2*_Uu|oPKGC|h(h9HkwS8Lo&dsI$z3=U|7ecmAvcWtu7yXE-HI6%;4LgEgmQ?$^A|f)YD!!*W5& z{m9D|DW_98Qf?i&A+@bHq|lM3iXiUrRhnuR_{cPVe$HsO94D^jxQn_}B)IYj*MS3E z8yOZjnp^cYCywzgf6L1eJ%L29%!_*(#L&<(FWMv1BnV-Xqb3vTGF3rP;GkJf-}4L0 z5Yh5-%|SZ{)=q__#FTfz%JFJ5pby3Zy9U5xjM6i95|K^C^n!A~g zK_Tt{+Fx{#QLkAsnQIbnW9^NUW9@~MW35EWvGzpDvGzd9vF4th%CUw)y~@j`ET{FV z6$>_E!vtis5gR5Tqm9@w0U2$?h6%`Mqn!e&0;xMv52QXwhlV!(DP!t+UPjKOZlW(6 zL*T=mnw5)!cJ&`JqdLZ>c>W6e_C`isZ#D(M)jtDLy z_duj-#JgxsQUB4w<|5UKNt{xXY#QKRzsG5Sd;cG&0bit?27Him8t_KSX&?Y8Y5?9! z2=f+=MQe%Lty!KJghw21ibf;lxCA2QxC9{OxcDRGxQs%|apC^?!xL#RQky=n?bd8U zX+rUf4=2nYgVY)6OGsUih9Gsd)t_SPCkU^(e!`J*(hP-a-lG#5G$#qn5qv&*P*hvv=E>X#bMXwzey>?ji+F{XahefX)7QJ>@^x9$3 zYwZ9<_Y%2(p~Za+HCj77hT7pV)DDlKc6bb2Lv9SUcKjG>hsRKB8w21NHi%YqYT>;G z%^WBW*Ng^#&`gnGmd!atLV;102IC?$8Bp<4SVdQr%0oguQo|k#8%(Nq>AO{`c_PwG zNu8>|ixytec)8Hp4Phmu>!#+01OC^{*AFyfh!My`O$0dw>W7+1zGs$hd;aZr-(9{k zu;uE|^FhU?vPVmwXSe*6@Hm`SKGZxQ;+}-g2XyUsnqsNz_tirm`DLArI{o6rgS#VV z(M+7GGoo&Pwehs0`4$+Xrx=OQL|#Y^4^N;RT_yytTzr zXYRq-6#;n7ZQt~AfHpdaKKEA}gwmB*vPiHD%4TZoNdP#{($2;I16n#uyKEe1L)^S` zHpST+XKS3%b2iA?6{lApyg|qLNA#7u>LuPZF<6~PT)8(oIH2yik3yh;v$M7N5IIMC z-Ie=SCaLXU$Gz0R7hK1vUm+`@V6OIvE9bq1+z{|16UZPUUF$E57eIQt_Ngo9xJ5Px z&20tFFgHvcfrH-?ral7J@oy?%>O8Hd&_@8v=V?1_IYb0W;c5?Dg|{FoP_2aY2z9Wn z#G8*tC!za_NB3Ymli*l%f)62M6jtn>uMPe`(m24A2(`b+2Y*tQv_z|f$OYOgzF+eK zt*2;cs0W(;)Jl4Nf!0YX;-tSF%?U_dv$XjlFsD~5z%)^vM*AkJJ7xU!0XMZBwC8K5 zqgx-GjQu(#t1t0I{mEE0af-S-22>l=PSmMfy>X=|Sx^IkH?U&M`8C1NH>CEo<5u<1 z5bZm^ra>Z2#^G#tSP0p7QIg%4*R;A59o5}g<4QdE_c!1X1wULY5Rcv^nP%TzbC8gD zO75*W97B?6bIjNeLM6-5M&`k_C1aJeaOv1YDT$&-SB>qJkZ4*zXYEQM8BYiE#(G4O zWN@rpy8}sMds`3BW2>lZX7r~*d;z5tS#uwLIv=;MzvE6a=;aUB7l_C_s{3fY)Qilg zNpD0OMPvazb8Ee?A0)mJEhZ14rzskzsV&-UN2bzxYxELArqMxCG)5>%Mgv#@gGZy4 z5F;+yL#EKn;-Y6#$qLN>H@Llr4f{?P zA5C`_(LJ?AH~ishO_TzvT8je69;lxiqom!LG1td*Er^uI(AKL(1O9AFm>(F9MJs6M zKvBOh+Z`sh>~S&#upft|kq(IZCPr!LyczQ{JP&2$(7n}glT4=jw;419t}>-!k^zH} zu}XMaWf*{gP{yxeLTrpA5XJoqBxz!mbOB??B;+5^Q)N){EhdBBWI#bC#wNOuR7$4D zUKEm<^x7W7d7*^+3gDRmFs=Ak5oYD57AHvfEbE-&e+e<`pvQzyVx;~8E+$E)1x&HG9dz#-uaJ3R zhBuDBAFfS9uHB|$lbF0rXV(|I+mY2Y8;Y~J_Ggz)s24kO>%orygJlPb1HFB*r9Xmu z<=RMuA0hxz1R1X)w_^v2%~Ik+GuBLS6_ZzJ_PPna9%L4+JX@R-AkkvQDG+!7D~kJy zQ#?sI^t_K375^^Q647rtBVdO-!h;U{QfzRAy7j9RP$J!sLSBcYD_E;fx}k5fEB}?9 zZ3W>D<_Mo9Z}26K^hxpt^%)Xze5BD`L{v0NWPCzks+~~*=36?k=u4rH=birPMDF0z zfClJBf3P#oN`M8^jb1k0L5xG(aH?>+Q9G>9=|(>X8xwjp-Dn`TBsmOjZgDts^Nf!O z)WxqB6HhvOfzeke@xTf5p!qKw%fymQ94`U4K&&ZVVw@_paU=wKUc#JJON~?cX(Wq) zjEciOEI4ifU*#?YdSFIOw$Z>#(V1<`6G|2#zd`8n#@3Ocah=0Pa4*N0KAemh7xyv0 zyt?v@Eqsc$jF0P-@M4dHj96@(7Z=welqpbBC31Wnj&3$0M@`(zLNveI&=ZYy%(}RK zR8*f%Ocb;}Aud~iWi`;V2+N!n#1#@UnpV~u4^AUNH1I294S|Y!qgd48%q!Z`t(YVv zA+*PH(m6L;+i&b9Xv+e@*HGy_2?zh9QR~B2#EPlezNAhD@+dWi10zZz$(PW)3M=d$ zQKIl<<>7KN8tRL*Xs4kii2)>mlGKuO+hoZY!=&Q;`$4u+r=<5TmAC|=d_HtAR_7~% zI(dXb>VV(uxuETjo1}XM6!flYt`)#k~uWHLw8C{=F-62(g+dpqO;eQ zeqcwEC|O^6QAE<|<>FFYMB(&SY3X@F5^3`}-4uny9j9ywkefPX*A1PYorL@H*qH|Y zQ|C|6ha}zB-In=cmJ3$Pfjd|Y68m(2#})0mw{&~BZ4ws4QRjFiSRLcFm_K-~^sE#$ zlPCzKN8RHSWDszCssil4C=Dh1A#g-I`l2sNP2rHYdYuz}G*r3(!w9O2+-M1e;CJFZ z@nR@r<0Kym_fPh}K~f9X;8?u9lqA3)#f!S4jp!vW!nG54QFta^j7#Rj_N~HLX51MKf#=ebMa0L8xXFr)R8i$u9)z9qv^dXaehgbI_EM!c2Bsy zr7o;Y%$mcUAZAjkf|`pHPD`L}gBE8sx-6KQqsx9JY-hL=8G`z?2};_zDM2Ac9raWt z{N(#bM9W22+)2#;&k#ibpH(Lufj;d-g<}9(0$-902bqLVajf|XWtE)IeUe;uMA&sA ze0M_4Zp$RP+cG&X077S~ocJxZb6Qy)r>5y;%S7y@$)UKDU8_bRj-{48lCsYyXLXf? zjVJI?X_yZ@Ee)%M>!o3>wET*uigaaZ#LKBUqwKke?Z)d1P(-`bpj`Kpq5893ipOQ}3p`&3HJOUvq3pa4%-jMGV85?Ag%?;jz&SRe-9^_#rOE;zb& z6VCDaO%)Q7MXwn*Jrqlp;^a>T(u+;6UP@|-gsa9)VsacZ1~I4Z_oOO2G`)DiX~_N$ zW<-jU_elBpu)xt?@Ly`CPaKn%E<(XGJT|WkC(G#39mzG}{(nr@=eFAaYq|sts~zEq zkJ^J4uG!qVf{(ydBd4U%ijh;S5)n3qiJxx{!v67h8g$v`n-`AyuZYJ@M2`(_zJ!KB zD}UR3)EDWv)l-ZEH}WkD7v8ZK6O&dtk=1dAwZL4{b{$av<&7lvMk8hUylX zMDr`Ec8N$BB~?}PrI2=ajT2;jo??%VB~bo71fEM#LdEAPendl?->e#AFNr}_zYaZL zq~M;|n{wJ-5{nrVX!E@kjT_2&=SbBUU&%x+53c>K3g_7^)f&w2BiCb7F9pEONVPqR z$HnBR5jgsCsyn2u|1*z^t)uL!(FRdN%HL6&Kp6G?|V<5w%YCaf+L*_M|x zFT)gU=_7ay`iZO2nnRciB8fMyNLRWkj8PH{Sn&P{j>a7Vr*jqJS7%|gMBQSUCu8Yz zYs7mhx=COKL8WySlO3I4Y z$RYb!fjgMT>wOv~>*Z7zr$6V;hOQAq_8fg6)XmaM=u2t(ZyedUH3~>tt5?A0np_2> zf3(h?MrP`-Ix?ASn9Q|oW?mhx-a>ckzDoath&%PMx%vP$cb9_I=F3?FgNMR=Qbqf>}##qZ4>n6s!nXztRtQCy4 zlCf@OtlJoC6>F_N#+tXAS-(BG?4_M4?9Dxi?1lYuwtR0Id+dOUmG3KLGY`tUTK1jS z(*k8#pLSvuMcI`5$ai0_0v|UVFr!}5(u;pb(n%{DwKV>xr+u5#t zRyIEHf@e$2EBWFqbCioMweLXV$PioV_#UVw593RRCs1=er)UY#|up-?RRDP=0LzB{4%OovFlAo+Ip?2OeH#)D4>DK z&09rK{~_ZE14a6Xh7Aj4P@cy)!ILj`+S6AH^@o&9?k*;GH$Sz#$xurV!%utEwOx6M{| zds+MM8~M~X?Vn6ywTJC38Li@7&!$e1qsk+(g_${1b5-(TBK$xQn=tcz}3>_zv+s;xP>g47nIW z?JspUiAFudoNX9LFo*^OAod{kBKFDP(9Dn(cHB+rFI{N(w$77ym#iQ};runW`WA5y zv5u0$kR0L2FR;azh_4Vg5MLv{LG&VSLiPHPUEcUkEy4GQ$B6rg2Z)D=M>MJ^WCoG^ z3)4SAu_0tWRhPCUiXigk&T`uG=$#swZ9-=K>zzq_>b)IpZBDklB~5L2c)Lw7x2b)& zJSaHXcEncbf2!@iqb+rNJS!V%D||ecy=+UIN@us*$_nnc-QrDp?!z``sV#5Wk8Rg@ zSL3*posNr3K+B%D>816_iY{^cuM%6OXR`KKzM-R$J7A?7+=Q8UK`#WE4*0-#hcXVZgtecQ)aH*!bS&mnP<|QZMh@n+rDNg{(5&s2a^Cg# z9<*fe4t`v_g@|ziXkK!Mf!F7$GnS=%q3;FD8Cwc^|6z&cx&=*6$IrI@9j{xw`Tpk? zbf|f2*|NUlEnZI7(vH2noE@7weje7`ua;|k>D(d9G-rMk<_>SZUT;f>2QTqO-_~n9 zzk~j*5?=qG9qagkw~w%k z>C>sbB4nx*2BwFk(0<<#v4ry`nNbQ1K0FXvh^2^E5z7$E5xI!h5&4L9i1mmfSiQK@ ze?&PZJ@5-%PlOWTmN zAJZQojv4)HPK6U5&T=Uw1RQOIQPFERax|Kfbe vpFRwJ4hV^Gw+7if~_D$iprvrFJuXnFbmcm_Hyz4iWCfOS_oFFNee~x zXf{n5?pQIEg?r0hnt$dvTKOW!oXkmWMy(jJqM5XE`_ArS*kBjFx!?Wnx#!+{?!D(< zUx&fBUR#%$p(=_ZfN-%X3b&2Gl~5=Y5f$YLkZta_g*swI0^C0dbrEnoPz(&9^q3)HG`VA*w>uF$j*l1Mc|S#4UW~ar#w2)UR*FAA zgsOU#8spG8m|LcgV4@0nxz|2%bDSd3vH*jDzOXs)*2skRD;GknA42;y;GiS%y+sfD zJHChtEm@{T(8`j@n^0^L7Vy}x-#%a&f-WZ%)90Gg$j(~niQdnOL>``!gf^G16FAYH z1q_f*dqWQsAJq(n4#p>@oCoC?cD2qzn`1OkUP|dB$bQ}?9XH-1L?JD6)CsTr-O)?c zc-PXLR-|JI5}!p4=m>&)AyAKV!oLit=ZsjRtCV;~7z{Orl?Y$ds9rzcPwM zd8y~P1a(s^Q~pr!>DN zK22O{bdMnM*>QQ?Gex7UdEW)*s5G@~71`!FXbZKWw$P^ei9(}o>wl-$E9`W1=U*a* zw#}bNsh;iBQfZf8EUMK+&&X9;Qco+>wj22ln|X+AsVr4vIqFsP0lJYV5 zC%_J1C(yY6kI+{rNEgv)H2s3SG45`zqiml27cKQd4{J_mS&cf-K*G~^ zcuURv^shCkE};U8Gqwnh{hUBhwz=OGjWgVVS_`%I*~Gh)%{BLnz$(>Wzfa^woYj}~ zP)5V}T5oIW{m&(fKS-qhOqr9dl)CmJwGBuX@wA!R!=92Gk_=Rymw=!hda<3_#wHl> zyeKdCUfD!85gck2!rW<1uWv|{tuLy0P$UKnr+_C%=DajnkiNwie7QiF!qbnBME8{v zlgPn}#&WY~2be3eA)48+i-rxi8*q0iZ`_{(FMD;n)Hk_AAYdlfYd-S5sgwSiOT=QD zI?{K$r2eHY0`F)&|8v{uL~*(-Juw?g_|!^w7T-ZLPwgPbx@390DMQ@SgfQYiTsDL7 z0^W#f!@--Qo$t{t+Z*OqL1BUMIKUT!lU}E`GODfaqSZ$=>Y{CoYOh2!P9J7~%VwGK zL7M2lOsPWtE(fZR^M)Z6&r%jCaf(GLpkF-usXX0g{a53GG;_y@$-iL(>`6^fQc-oy zC|(@f3jlAcQ|D~ZC1B{eTIfrAe;PFArr^iAAm45mm3}`k9uM#ubCtd*&WVKAHqT5A z^1i|Bpts^OWogKkq0o5sYJ69XyLLDy16ic66BxIEX1?#BjmP?RlQ87h$0lM42VCT< z)q|hAgumHG`W~Hp%`Z{Ey*H7ocCcKu_XXkKqS4b^Yy7)?w6vjBw(h?m$W^ENxA+1F zM8Yyr}jYchUy46@UakV%YU zEpm5TOO5=HZsV5hXpI&A_o|7$UEa;|)n5hW-}AFyPw%Ev4mq((g!58zgN@F8)|V!n zo_1Zkb?f{6pG}eek-+#|$~~BTT_2GgXrq*)72VmqdsJ1s)4x7u=~fRN?^dVkgNteD zPZ#N~4=wVO3q}zB3f+t_teISq1@Hp+bsP%E(qHS4ChDv z6fhQuWZL||S(Rq&EDk60lAnTt=2SXpZIYFieA9;X*^dr<*IjU_?BrNVoxc>{vshWz Hwj%Byo%icC delta 3567 zcmZu!dr;KZ8U5Ye-!3bPEU*<&2w|%lc6ljA|mFsEC+}UJPL=y5v{r8jFL~B9oP6Tyva8Ao&A&lc*;^eGR$`=6ke&*# ze0O(efX@U{kv|K5HZTV$1YVJ>sL`raN}_6gJCNVq*2~D_F!cSXg;8?B&XLO4`7(3R zks5K9|FFUpsYoE%A8*0rCHkH7cmZkQ1{&{oTT;%2-0gY}iT&quqT2Kzcu zs^SY-tveCP2bMgHFLbMD@E8WUSlJ5Mk+4^#vU1l*q(?;<2jbN^zJq=GWP@^?8Ig=7 zk)B*1mljI(DzS&B=rL(?l$s%1(gUhOf0Z8VuogP8xAGdg2tfWi0?Q5!`byxqU6``v9$5=Rkd^HCyRN<0dLQGG)2rJ8Zf6?l5V{ zjdzZ-^7Ye`lA|3P+`4MUUR%e_nWCiTZht9mUm))n4(wlCYSv|7oD za*urd{t|hw(34r>#Jq;XlO5lF3H$Q@zfE;Nw4}xD$w5DI0lBi`q>H23CR#bDP*SiltK6niLhyr=vr%V|#|gK8`P=&Bz9&`V z&gjPd4ms4|6aRHvWyw$K?@4iClB6E;s0X4l{}imdq9#YG>#Qqwt6Y@M>#F@gom6b{ zamB@V@E=&fXq|F6$tfLq@vazzeS_k6WW!Xi6X%yqEm*8i)MKAF)psyfetl$sKHCtl z#Gn6AT94b>|CmF$`j~>Z<#bWJN|d}GJr@u;Gf2k^+E)dSse4d9GBVl?PF{NtI*tyuGTH%oCw+Clo(} zG0u!t=XJ{ozmkg9KS*}4pKkl*2-Vo=37kf55%3FujSwFIJf^RiG|$#I0op7CFlG}_ z0pfw@#-%m_m_q{NHX`L@a4XR+7>)cQIQk}mQ|G5$GCIRPz|R2qYer)`ZQvZoEu&?D zUk0ar3ExjtY9PQ~2C$}#d=;JnM2yR_xPGzlOlJTyz;QBJbBvY-KG$f)J+u;|Eiu|) z#61bl+hT>$cs5^lSphi9y3s>yGl92^mWBKs=osyR(bB;mg42r7BX*E+Pq25eSB%C% z9RU9he9&l&JqjKN|CSr=Q{YJUK%}*sK=QvBEjg;|1EFq3BIrs7A!mv=S3W9zdw4=S9R<$X3{k1w*8TJwS*RZHi(6LRlwUit9T zir$Xuvd^ZCEJN*VfL0E|iZ>W-Ecix~SuG>a9bC&70tKQJ;G(QEX=>|@_F@l>-x=fh z4CpSq(`dVm#ygYSnzm05{?!nrTf!|W^qUqHY_juN>#-aYMo6!o~Lj zPno=DdgMK8wDm^gC-MVu{8<}~#*N~q0NZag@>+1p2aLu(G=OvJju?%7ItGqD4YV4K z$WAqNiPqcHB>B?tkt|MJf-)TbvWe#Ke+W)%rKZ>;fLSoWTSC5GQk-kJaF`pwY<1#MK)u3EB~GzJr^LmI>YfPCMzu%VN{v5A}_!ca`>^Zo#IzRwHlS zDv+PHr}VZltK0UdVC&H2+bGRhW<^mT%iulm3b*1t-r3rJ-Kn~sx;N&#{K%fpdr5cR z=%?gx*oD0v zz-Dp-uhryV&O(#@1eGTD@pElHARxemRr`7i>COLy!We}u84PfkUB|RpLVN-%Ruw?) zlm7`hZI+PrVgo8L#A?I}We={&#|%9tf6(=q%x9!Dd4Z0?W<9+;=FJ91W+0m}v~8|5 zE(A#!p_{k)ugQF7tP<-jJV82)(RBa=$a1rbl^GK@$<6C6tQjYtu;l|vnxO04{L=O% yqbwE)20ex(hD3%E2Bpb{O0t`I9Q>Fz&vJ5MoE+n%H2I#h+~hhZna#hPb+`e6t79Ah delta 450 zcmZ2Bk8#;N#tmj{!ln!^3`PuQ3?f!+*-n6K^8omb{*4Z3GoT6SXBVE zPyQ$5v{^#d3*l{9h1oc`dpjO=%p}EHqh6a{6W`aa)X}IW&}^hWE2K@7|q+8|C-Ea#wxMi!V{#!5M2i_pe#4LSeY?llia-C!kTgN30pp( zq!GH#%`a_VGRk6+V9;YoVn}2tVNjZEs3g0Y$H9+j@*HQC$@iRPHb*(RFit+;EVucO Hvlcf1QITa8 diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.cpp b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.cpp index 5ff8380..f4ccdfa 100644 --- a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.cpp +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.cpp @@ -223,6 +223,63 @@ System::Collections::Generic::List^ MasterEditorTWL::patternMatch( return list; } // MasterEditorTWL::patternMatch +//// +//// バイト列に特定のパターンが含まれるかどうかマッチングする (Boyer-Moore法) +//// +//// @arg [in] テキスト +//// [in] テキストの長さ +//// [in] パターン +//// [in] パターンの長さ +//// [in] skipマップ(あらかじめ生成しておく) +//// +//// @ret マッチしたテキストのインデックスをリストで返す。 +//// +//System::Collections::Generic::List^ MasterEditorTWL::patternMatchBM( +// const u8 *text, const int textLen, const u8 *pattern, const int patternLen, const int skip[] ) +//{ +// System::Collections::Generic::List ^list = gcnew System::Collections::Generic::List(); +// list->Clear(); +// +// if( textLen < patternLen ) +// { +// return list; +// } +// +// int pos = patternLen-1; +// while( pos < textLen ) // イメージとしてはパターンを固定してテキストの方をずらしていく感じ +// { +// int first = pos - (patternLen-1); +// if( memcmp( text+first, pattern, patternLen ) == 0 ) // 本来は末尾から探索するがめんどうなので先頭からmemcmp +// { +// list->Add( first ); +// } +// pos = pos + skip[ (int)text[pos] ]; // パターンの末尾と照合するテキスト位置をずらす +// } +// return list; +//} +// +//// +//// Boyer-Moore法のskipマップの生成 +//// +//// @arg [in] パターン +//// [in] パターンの長さ +//// [out] skipマップの格納先 +//// +//// @ret なし +//// +//void MasterEditorTWL::makeSkipBM( const u8 *pattern, const int patternLen, int skip[] ) +//{ +// int i; +// for( i=0; i < 256; i++ ) // すべての文字(出現しうるデータ)についてマップを初期化 +// { +// skip[i] = patternLen; // パターンにない文字なのでパターンを丸ごとスキップできる +// } +// for( i=0; i < (patternLen-1); i++ ) // 末尾を除くすべてのパターン出現文字について(最後の)出現位置を登録 +// { +// skip[ (int)pattern[i] ] = patternLen - 1 - i; +// } +//} + // // ファイルにバイト列のパターンが含まれるかどうかマッチングする // diff --git a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.h b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.h index 1af73bf..99c4628 100644 --- a/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.h +++ b/build/tools/MasterEditor/MasterEditorTWL/MasterEditorTWL/utility.h @@ -81,6 +81,31 @@ namespace MasterEditorTWL // System::Collections::Generic::List^ patternMatch( FILE *fp, const u8 *pattern, const u32 patternLen ); + //// + //// バイト列に特定のパターンが含まれるかどうかマッチングする (Boyer-Moore法) + //// + //// @arg [in] テキスト + //// [in] テキストの長さ + //// [in] パターン + //// [in] パターンの長さ + //// [in] skipマップ(あらかじめ生成しておく) + //// + //// @ret マッチしたテキストのインデックスをリストで返す。 + //// + //System::Collections::Generic::List^ patternMatchBM( + // const u8 *text, const int textLen, const u8 *pattern, const int patternLen, const int skip[] ); + + //// + //// Boyer-Moore法のskipマップの生成 + //// + //// @arg [in] パターン + //// [in] パターンの長さ + //// [out] skipマップの格納先 + //// + //// @ret なし + //// + //void makeSkipBM( const u8 *pattern, const int patternLen, int skip[] ); + // // XMLのルートノードから指定した名前のタグを検索して返す // diff --git a/build/tools/MasterEditor/MasterEditorTWL/resource/append_ini.xml b/build/tools/MasterEditor/MasterEditorTWL/resource/append_ini.xml index 535b053..9641e05 100644 --- a/build/tools/MasterEditor/MasterEditorTWL/resource/append_ini.xml +++ b/build/tools/MasterEditor/MasterEditorTWL/resource/append_ini.xml @@ -1,12 +1,16 @@ + ON + ON + 5 0 20200 + 0 0 diff --git a/build/tools/MasterEditor/MasterEditorTWL/resource/sheet_templete.xml b/build/tools/MasterEditor/MasterEditorTWL/resource/sheet_templete.xml index 916697a..039557d 100644 --- a/build/tools/MasterEditor/MasterEditorTWL/resource/sheet_templete.xml +++ b/build/tools/MasterEditor/MasterEditorTWL/resource/sheet_templete.xml @@ -1728,7 +1728,18 @@ - + + + + - + + + + - - - - - - - - - - - @@ -2261,7 +2273,7 @@ - + @@ -2364,7 +2376,7 @@ - @@ -3780,9 +3792,9 @@ - 繝ゥ繧、繝悶Λ繝ェ - TagLibrary @@ -3791,6 +3803,11 @@ + + + + + @@ -8586,8 +8603,8 @@ - - + + @@ -11776,6 +11793,14 @@ 100 + + + 3 + 43 + 12 + R44C13:R46C100 + + False False @@ -11903,12 +11928,12 @@ - 繝ェ繝ァ繧ヲ繧、繧ュTWL繝弱シ繝槭Ν鬆伜沺ROM繧ェ繝輔そ繝繝 - TagNormalRomOffsetTagNormalRomOffset - 繧ュ繝ァ繧ォ繝弱シ繝槭Ν繧ク繝」繝ウ繝苓ィア蜿ッ TagIsNormalJump - 繧キ繝ィ繧ヲShared2繝輔ぃ繧、繝ォ菴ソ逕ィ - TagIsShared2TagIsShared2 - NAND繧「繝励Μ縺九i縺ョ繧イ繝シ繝繧ォ繝シ繝峨い繧ッ繧サ繧ケ - TagIsGameCardOnNAND繧「繝励Μ縺九i縺ョ繧イ繝シ繝繧ォ繝シ繝峨い繧ッ繧サ繧ケ + TagIsGameCardOn @@ -12139,23 +12164,23 @@ - File0 - TagShared2Size0File0 + TagShared2Size0 - File1 - TagShared2Size1File1 + TagShared2Size1 - File2 - TagShared2Size2File2 + TagShared2Size2 - File3 - TagShared2Size3File3 + TagShared2Size3 - File4 - TagShared2Size4File4 + TagShared2Size4 - File5 - TagShared2Size5File5 + TagShared2Size5