From 74c61ca76a3c032760c0b08190a6599b68ed4127 Mon Sep 17 00:00:00 2001 From: Gang Zhuo Date: Thu, 8 Jan 2015 00:24:34 -0500 Subject: [PATCH] remove unuse code and resources --- shadowsocks-csharp/Controller/GfwListUpdater.cs | 174 --------------------- shadowsocks-csharp/Data/builtin.txt.gz | Bin 104 -> 0 bytes shadowsocks-csharp/Data/tld.txt.gz | Bin 26403 -> 0 bytes .../Properties/Resources.Designer.cs | 20 --- shadowsocks-csharp/Properties/Resources.resx | 6 - shadowsocks-csharp/shadowsocks-csharp.csproj | 14 +- 6 files changed, 6 insertions(+), 208 deletions(-) delete mode 100644 shadowsocks-csharp/Data/builtin.txt.gz delete mode 100644 shadowsocks-csharp/Data/tld.txt.gz diff --git a/shadowsocks-csharp/Controller/GfwListUpdater.cs b/shadowsocks-csharp/Controller/GfwListUpdater.cs index c377efd2..2bebdcbf 100644 --- a/shadowsocks-csharp/Controller/GfwListUpdater.cs +++ b/shadowsocks-csharp/Controller/GfwListUpdater.cs @@ -90,180 +90,6 @@ namespace Shadowsocks.Controller return valid_lines.ToArray(); } - /* refer https://github.com/clowwindy/gfwlist2pac/blob/master/gfwlist2pac/main.py */ - public string[] GetDomains() - { - List lines = new List(GetValidLines()); - lines.AddRange(GetBuildIn()); - List domains = new List(lines.Count); - for (int i = 0; i < lines.Count; i++) - { - string line = lines[i]; - if (line.IndexOf(".*") >= 0) - continue; - if (line.StartsWith("http://")) - line = line.Substring(7); - else if (line.StartsWith("https://")) - line = line.Substring(8); - if (line.IndexOf("*") >= 0) - line = line.Replace("*", "/"); - if (line.StartsWith("||")) - while (line.StartsWith("||")) - line = line.Substring(2); - else if (line.StartsWith("|")) - line = line.TrimStart('|'); - else if (line.StartsWith(".")) - line = line.TrimStart('.'); - if (line.StartsWith("!")) - continue; - else if (line.StartsWith("[")) - continue; - else if (line.StartsWith("@")) - continue; /*ignore white list*/ - int pos = line.IndexOfAny(new char[] { '/' }); - if (pos >= 0) - line = line.Substring(0, pos); - if (line.Length > 0) - domains.Add(line); - } - return RemoveDuplicate(domains.ToArray()); - } - - /* refer https://github.com/clowwindy/gfwlist2pac/blob/master/gfwlist2pac/main.py */ - public string[] GetReducedDomains() - { - string[] domains = GetDomains(); - List new_domains = new List(domains.Length); - TldIndex tldIndex = GetTldIndex(); - - foreach (string domain in domains) - { - string last_root_domain = null; - int pos; - pos = domain.LastIndexOf('.'); - last_root_domain = domain.Substring(pos + 1); - if (!tldIndex.Contains(last_root_domain)) - continue; - while (pos > 0) - { - pos = domain.LastIndexOf('.', pos - 1); - last_root_domain = domain.Substring(pos + 1); - if (tldIndex.Contains(last_root_domain)) - continue; - else - break; - } - if (last_root_domain != null) - new_domains.Add(last_root_domain); - } - - return RemoveDuplicate(new_domains.ToArray()); - } - - private string[] RemoveDuplicate(string[] src) - { - List list = new List(src.Length); - Dictionary dic = new Dictionary(src.Length); - foreach (string s in src) - { - if (!dic.ContainsKey(s)) - { - dic.Add(s, s); - list.Add(s); - } - } - return list.ToArray(); - } - - private string[] GetTlds() - { - string[] tlds = null; - byte[] pacGZ = Resources.tld_txt; - byte[] buffer = new byte[1024]; - int n; - using (MemoryStream sb = new MemoryStream()) - { - using (GZipStream input = new GZipStream(new MemoryStream(pacGZ), - CompressionMode.Decompress, false)) - { - while ((n = input.Read(buffer, 0, buffer.Length)) > 0) - { - sb.Write(buffer, 0, n); - } - } - tlds = System.Text.Encoding.UTF8.GetString(sb.ToArray()) - .Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); - } - return tlds; - } - - private TldIndex GetTldIndex() - { - string[] tlds = GetTlds(); - TldIndex index = new TldIndex(); - foreach (string tld in tlds) - { - index.Add(tld); - } - return index; - } - - private string[] GetBuildIn() - { - string[] buildin = null; - byte[] builtinGZ = Resources.builtin_txt; - byte[] buffer = new byte[1024]; - int n; - using (MemoryStream sb = new MemoryStream()) - { - using (GZipStream input = new GZipStream(new MemoryStream(builtinGZ), - CompressionMode.Decompress, false)) - { - while ((n = input.Read(buffer, 0, buffer.Length)) > 0) - { - sb.Write(buffer, 0, n); - } - } - buildin = System.Text.Encoding.UTF8.GetString(sb.ToArray()) - .Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); - } - return buildin; - } - - public class TldIndex - { - List patterns = new List(); - IDictionary dic = new Dictionary(); - - public void Add(string tld) - { - if (string.IsNullOrEmpty(tld)) - return; - if (tld.IndexOfAny(new char[] { '*', '?' }) >= 0) - { - patterns.Add("^" + Regex.Escape(tld).Replace("\\*", ".*").Replace("\\?", ".") + "$"); - } - else if (!dic.ContainsKey(tld)) - { - dic.Add(tld, tld); - } - } - - public bool Contains(string tld) - { - if (dic.ContainsKey(tld)) - return true; - foreach (string pattern in patterns) - { - if (Regex.IsMatch(tld, pattern)) - return true; - } - return false; - } - - } - - } } diff --git a/shadowsocks-csharp/Data/builtin.txt.gz b/shadowsocks-csharp/Data/builtin.txt.gz deleted file mode 100644 index c846e6448a7ec005ee03576b0d40e751c51f85f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 KcmV+b0RR6000031 literal 104 zcmV-u0GIzCiwFp_d973c17dY)Y;2Z^2uw|s`?Jy! zbT$SQ)V{IPa`w~Jro}t6_%OX3%jRgWz`X#ZLdAL)>tU^Ssfl5|*0qyS8!hm`>4o-I;NQlsZ3enz(Fz`l}zzwVcjw zNi3?h(QXTYoYrA6c_k|E!|s-^*!XF;u6@1J{x9g-Smc2iOZ%AynHs3T>mGi7gEId!TF zp!Uk5y>irES!%EBZ7Vl7vCZvd-cIHr!b1%8kbQiJg&tzIhnVf5mU*1!nJ8~H+8K)3 z4{`zom47f8ZVRA(0n`P6`UOy1z&c^tjFl(EMlu}y=fbv>&DYD7}v|yk1*saOYLKddT|*W4NCCJ-koG}N0NgBBtl%6PbU<)raFIcD@l{}9SOP)C#0!sL z$~ZOzwdZE_a#r~hYbdi7Va`M zygasi#I+TOtejIV!0UQV+%rW$E=33@NCP)Xk!R0glhAUVMdqYQ+4C>eiPO0RNbZOUF>z2 zZtjSuL@V)lm3X{Ld|V|yt`f&bRS;gP7tpFEIx;^AZJ7>C6Vrw1N)&kl=xm9;a@*7s zy)$*JsVQdR)zTNV4}bBmKm6TqiTm+C|Nh7Ce#zXw|K`VU{)sr#5v?xV=PS{cdDk#aOdm|&h<1i) z#ndwOOnIzsB6?x|!fh|yYGD1uQ=VA!%Ht+pOX9JTXt-wLIt$O_O(@Ud&ZQ65bUiOJ zaLt?8ggh076{lE>Qv|d=vdCr%61i&ejqaheBi9Hej@1M!vW-d0pvKX zd`YqLvBk>A7KVyzV!l##vR10d_Y*+$z9$@fMZld}8Q-FBPhjxexAGMR(0WT?<-Gvl z4gu>#!2LQI(@7p?cox63 zQlNIL{S3Vry(XFK016N_TT-;%Mjz%91Vv5sp6LP%Z8lz8y&^Ji2VDlihc+`%bph z$wxE*Z4zL;=-M{a3?O@iSKse$whf`v(%hLIiqi+>_BcfON&{K1JJ#~)Y3w-D<_GH zlVrq6LPUV$Cvo0MoOcVKM*t;B0A8a+eJ4>L@ae_DXWdTj&SsMk58zsNcx6@qs7nBi z2Jp=_f9nKLUjPkF;Qsd?{_+3*>^H*wZRURQUq5{NORo2)fBpM!za{SXzx@~Ge*E>% zGlyXI9oN$UN8ERR{^NiAB9|i6X{mB3{qElaCkBHd31?{-Bdh0CZwyK3+2X4>6eDa2xsL)=|j3u_D@jFx+plZwzc%;5vB5hv=8^NR1_KUCcvzyZXk8EgHIs zp!CcIz(SynMcDR~AQGjmCb$!&?ExUTgVKk30L4Op7k2~r^x_A+Hn{7N`;@2*ARi$L z?n&Y^U><7KFRVr;59%jwJ;`zLa{9cSMSz1>1khcjGWd1Rp2f?d1&|l@;#s^LTCU%6 z=7T`TrNyfhzsj($GKtrd=M2bm2IR%30DMD~tBAV+u$|)R`(ORf z-+cdX-~Z}&e<{-M{%V)JJV(4lNiPA>%X7p_umn)LMj+1-FJ~TLD(uJd6T9sYBp9|pfV#=$%?dfBMKyNqkL_YlU6 zm5I%+B}uk#SnF*kMiVpEc#<$1hKxRmYWB7n105j|h}V*F5?o!zJnzI^6ErsODG5H0 zo#@&L`eE1kL8iGFQ7s{5#Jp7(DW96c*_`q8clJs7k#1PRhjpR&_i~7u(o|d%I-pRhMW0f%&qCnP?WM<$ZMkw?3B?i>QtRV^z<9CDhCC; zJMd=7=6KrC<4&4Mp$>W(q~#eGe6R~V_Y!fv%Mw;>bVR1zr_a zKWG&VEzxd~CDm{$=NT`Tsni@4i_S#6jkzlDkAp$uj>3@C8knokOksp`VbsG~OFcSX zbH~`P>$W?UjmW&hPehRYt8^HTR@z?nu+oWW(=deW^T0n$9w0pQXlUH6kZ06+CU}@N zKIsS=V#NxTxc)lFRC2PqVno{oE5h@1+2Zgx`vyavDfbIU-BA@P&VfaYRe)vA-r+cU z4e?p~tVC*S&LbL|Qd24t{aCL2vc((bABgiJi6^M7Lb8)NBkdi0p(x}|!CO5fwSp!d zV%l0e4`XJ~%|pkJ3KYY#DlB2rDd+;l>h(HV?LzENzfhk889(6|ZK|V2H`q?ve=AY0 zwF*(E1&(YcyqvDqE5M09wEhs}k0Mx**xm-`a&kb%Ig6oo#U>-25N!U!sLnxt?IQSaf9q0utg@L^S`>zp3d^k*AcfM>X79w+^*$9~rw6^qTRobyqp zI%=LpH}Sk(%w6}aN-3{(^a_LeJ?6BYYE%kMJ`p(R4@3vpK3@XSAS99#dtb71?~3eu z4R>--%jS+^Qk}$PX8O#fY|t&ysng+8OHHdnP!|!LLV3l)P*GU3^v6cKqLib8N4(Ne zf~K!Vp~-s*cFo+dUC)_5pDB0MV>inN&W(Vkz&5V=I?j0i#&BL^m1C7?j*2?3cGjfX zE8w(cE6zS`%o1|=MWh?&tTg{xPu zmGUbC+c;$vuBDEW%r!fGjk3wxO%Y9<*RLTl1xgc?mn{SlyRh9C( z&b+U)I#ydk0->hVG7I^DTvg+%K%YWrt!C3aDfU}?_1HJf0k5(zS6TN}F5p!bec``f zy~r2!i+pCk(C4qqc)G|(rHlM2#Ut z^Agd9C=Em(yooyI5zs*gM-)cC(06dI?~z(D(|eo*Vvs{cR-vR~mF@hi4>B`4bQqjj)a=cT>-rmf)`!w)qwfxr9jUXfXg$&O4hI>EqQ6iTV+T3JyWE*r z7WZ<6cf}2B#qlfK@Y7|N$hj=#`e^vn@gGwbDvIK}Vlmy5+?(SpIrt%ExH#+zRUMejypbCU<6LZDkyU5sn4njQ}2ozE4X_GL?~#9wV<-LZo$>1gfj;trbrT^$WqyABC(F_cg1ScpBRBxQYQ!g1uDCVNzH zo>R(cUCXKUcq$%N)Z-vUiod%iaA4Tw^@0rb(Cz(b=8=YJ3QLa2QOgDz+6tM>ScO!! z3Dv=fe4rnP^-_izpJjVLbWNEj9ldZ+(OuqUc#K^Nm)*(Rum z-ZU8QZps65CvP{J(x9xm7mX;kdXY*UUB1fD-6#(S!Yqwnlr%d*+kdc?;@ok z|KHfVG|Q44=YjkB7u?e9Tr+WG`ae;XQCU&>i0q8as#~=p9wIQHI5f@hVI)8eThrZW zVF;ib6v+#KXe{n%-{il>?^JPmp}kL?W^8pIA)Jf(5;8-PnULlEgYVKn+VRbKpEMN6jl zS%pZ7N+%oL2c?oVR0bEA{)+P|$*}f1<#)ZBI@>oA=f%_svh)&GSMs>jx|5~idQ}Zn z73(@njVH5RE`|)nwyt;-%tJ)f+O;o#Qjt&xTbMwVYc&h&FSFU2EC~9HRsk631;s-> z+=Pz<$o-m<76BCH+WH6R^a!0FAyGeD^dXA1^3#wxjhYMn=?USB1vbSH*`^yb8H(kSi3mMl2h{8u6P@NYgBKgZS2Mkaej1 zh;-G+4QgZ(118Fy<3#^WT$7&TIrl>+ZkBK#afV(YJ$K*H9 zhjkO^*lu`VODN`a6iZ5Io0&kZ1$$#E4948LMc7j3F;Mk@m9<8E(isU@t2$iJeUQAk z8r-I9d8i8NzkJPeUs6HTgVsex;(e+@S?lz#VXb(`PM!Rlsb%n%X3{i95ENo^`4h1tL}nQ)`uq6?|t8iNhIjaq9V z1dM z%Mbpx73!CVtOaT_?L)n>RlE&O?BW;v`Ul8AM6)X8Tqc5zij_$JMFD*(_L54CVxAJcBe3F`4xS{T6ETV5o9TNs$knZtR&vY2o# z3~QyK1j1wYpq{%%Kjd~@sw6#dd+9ea&vs$rI%qBOz{BDKj!rRQ`!qyFSCFfrjv}*e zkvaMV46w2^g8{Mv7R&(__P(;EkOArlRb<@HhqcO+=iWGR(6}eqBN?z=&1~}fSZE6@ za;Mn10#Sf@RgZnA84NBmdo`n9wOHg8i~@LFm^Z8mB*u)$?yJ1U#G|)H0hp@v+DDWF zL=m7A@&mH!c%)Q-MMl0E=nz}Q)=w9i&D78peNN$dsiCkmh~}InU@%r@Z3<#BD^ggQ zjZi$>YYLG?EUCSMQBq+%DP$Zla4f*eokQk5cRGsK;d$*71L0L19O8d`<8y+sqRu`h&6h8DNIT_PCivo zppLzUMCEB{@Ak%R5W5AA7+lxTLv+XzPuXgaN_d*q$K)O`*b277*uK|*eSFUjFJPnF z6p@`t|I`R}3U7dIaUYYxwE?36Q=>Dtjv87YYV~CH+hRJ=i2fm`C$_f6$GpLU*%W=E<-Pg7mA|)D+K0!!WGTbsR0VzYQ42Ya7tZ#PBx3tBhQ0Y{5lmHO7mh8W~s? z?FM57v;iGYYSz&BazY-_)i zCNi+hHsEpE3f^dL50FJNYsgUvZL4v_Tu=?L&EltN6R#&7^g@pjEj|tTy?dx^|De=- zXE)OKLaZJGfDN)$4}=`o?g4X;GV9l21Kj;4Rg>GkL{;7Stys)i;SQc!*dzEDAW6oiR2lORAr6LTgtzEcWw7b~ z&~k!ojv4(62^g_aZ3|M_Z%qb9AJa9v2gMm)P?0aH=f!Lr0gofrE%ewE0Hk4OU2=<+ zes$yZh14wmG;Dog;ceKchedWR)X;7FCQtHjAkTBrTX5UsQ@UPA9L78Cwr#I*0KdW3 z&C3sF!5Rm(bz-h$uRe6eS6G~zhDv!`H@4W#yKRjd2f;|YKussMS>e56hO{@cKr*{g z_+VQ7M&L!V!eceDux#N~@AJ-54WNY%Dg-P!>LBtaiGn0)&4BddiS4jTTY2DFCN`fn z(rx@;kE3R>e5Lqn8tNoysPZA*>L&mEM%>U*gV(B5Fo4cX;9ZZJ#f+We;}V@hZu)gu zgQ<8wVpUB;LBFx`Uf#^hJgDY7Q*+n}vc+n_5GA1bVPCx<3*`l%7U*@5Hy&RVE}BXi zs6G3-G9eFYzq4%rQ2>@eyar@J)>fVx!)G4~z&rCe84AQc#zP%?gm_&32#YklfG-uA zNDYl&L#fyDjBVqGS7w3X&XvNemw5Eo!TC4bh1_U*~)I2Y6 zXk=SzBd-Y5W#f4jPy^iFH89Awa0ShnHV>O3m2CnwKv~)b$2~WXEVrNx`fGHSF@y&F zCcG6>tO}6*39YL!HtBg!m4^K$$<&*{`m2y}!_Tg%kpRnJQ+XWOzJk`YX-#90x+?W) zV^0OeiRKEsZi2e4b#?HzxjXLICFLV9>pR;?D0HyviQV3X}m` zg~>!O>a_w#vq4~6)W9g6at&?*VzNfoO+mmQF`I3dyKn$G<00C44lt@ z$i8EgPC|GWBR80gkeMly*BV0amHE8IbA#|QNWre#aD>S0nMPJ;^%%?B+$$+$w5dTC zY+eUb0oRJvZuZDX+%}^4`&yS8R2n*`42+xd;C+Re^Vm+hs1Q9) zaTHEkY5`{1BNUgGGt4GM#on=zsVXsOZ2iu{iy0MCRppIT(%xvEw>V^;%n(+T<>XMA zKdW)HoRJDzA=CgMO$r*YVYuS4L2IxYavJfQp^W+Xm_7@FR-^7V&5$--J^u{}N>IxAZsE@Yss;;Y{8}__wTd_Boj9>yXId30rLmk<0s*p6$ z(IBb1>ozd&Hf*R%CGg&xhx}sr`;ZSdS?cg^+-EK30bJ^6c%$*Qpk-^tCg!^|1_khp zXeBFfKH-p2!t1zBfqvxy%K zPn9XYlLcXgjM!4TPFMoHz{%X>YPXq_GqCbu4K5 zv@M$G3z4QFT7@~;7+hg~`(mOsIK+`*% zp;%!?#hh6#Zl$U%3`q^>$E@QDhcddAO5H>Xf~R0=WUTTaP^%&tV5ZM1QyR!<=el(+6yVWjnHV8n!e=2?Y_1(Kjp2SI9A7uYs`Y^f<`iMl>PSDDtz ze9YEZL06;8U8a`e(RatuB_?DNHObYH`74FP=v^LK8VrIf+@h@FEAJyU?y=Xfc`|H0Sr_ zbwy1+2W2x&Wi>8YzH}=8Zyl z6sGuS)F@<=6|B-JHrN45OaVBZRV5>wWEP)Bwp9jrs5oqV`t|{e$65;p^XKdH=lM6lVycpY)U&ED(A{Xx#P`z;7j`dlS&)`AT(A{%f`M5fIDVT8ynxrV zC9Z8ZwJieUvoo~T)-e5j$@T*YjeR+Yb28&Q8Y>?x9HH6s_-VV8i?@5R<=w~_6 zSE0Od4C@^=h}i8W`PdTUH?QM5kUDO9)9uX`8Xs~fGqCge07ji&gAch8LsBEWDp0OH zF|Cy;2L&OYip7+GV!3BgJO=+n79^fE>((ts6;&bCTNs=UI$%tv?o9>E73*-eQvnWJ zzctHKiyGiALj%}VtpVP=q(%4nz@)U%jWX+a6W*T1%cS#Du<;a+p zs37bgDS*tz*NG^z9}2_u7!}Xs>N-LJxud+}AxdJhAq0%XQqAxmADo)voG z<>YnEcN-7uhCS(w@_J9Glfl;E_>g#XV`o=Kzj<-J*8&f%(z*@6);AA7T$AF!rOu2r9fE3db8W_;Qm99HXX8JlmKxAA7BYU}a1iR6?$%=3?hj0NLM> z5kKEbsje^#&gvAn^CqMtQ@;X&-sB4o!-C!Toqf=<26o#Zo%HH@e>e($~%*j7p~ zFQaaSi(OX%Ab6t&$nKM)W*Q@tNp2}o;Mw!8E`{*CO2yBv4k+HBvJFc5>(%qPuEH0- z2TemO_f{I1qXa4pbJ7}!(Lj^P_D1p#fRu zKuK#Xu*_@7?Hyl)p|N$q=df#Nj`P+EB%5TD{vj4;L16b*yu%2o0w`P)F9ED>rW8^^ zn3BOdvWBRW-xgTZ$`#^k-k+<0Wq=y$U>3HyDkNUCqM$2!Car4+JQd7*~8 zMci1k3$<-b9c(}z0HJkM8G`JcMYa_-x^`0*(my-|jP7+`1vp~wWW}FM&A*fkLP_h4 zH6&71fV{+_Z&7VsozO&TXsk<&jf->j7AqJ(Y_QqX1q0=tTBQQXD1FG#;>S&eqeVk8 zYGkd$zZqOqtO4HqH`WkOT(4VfEB1HUs-Y0G$Klm{?JRGHyBRrAYc#$pU$Mp$iy0T! zVEQUUCtOhHbjT;!=397aG`@}}9kgH5Nzm<+y#A^l%rYIAk+k8i06ZO2Sl(t*vpf*0 zp>7kRKb9W|S3*hE_%9`M`MQZ$>e=T$XyP zbiK1&$(J}x<~2|_31~4kDJ&oLL;+@i&6319J}{EFPNv$d0!B9Q3(s3|6fXu%=F?3R z8aUO!O{b>wGFzMZn+#DCFIGmCW3L{^S*FacnqxOJdC4RpxNSi(bMed9TO=lq!dhKU zCLV54H*JgZQ^0{2c=oHt;ym*MLRDX3JQ1jn6K?~of!kUGye*?bFvGPCC+>OCnC!%< z5LTNnWk4?!J_N*_N(0x}ToeWg6kWRkx8==y^r5XP43p7&TVt}WyoI8q zRN&bSn>g-u_@MkIPR}-3UCt!cqsUN!wi#XHC8Y`zmAr;JWdl#A*2p&Jm}-&D1~urn zVfpz%0MM5#zJ7H~cMfTcDy9N_yGfVdzT$ZE!&!Dj_zqYQfkj2-n5jWCobI$WZyi!o1atUM7s~IP~SbKz_ zu&jJPtZ>PA!z%^j&7PU> zxLgZ|j$X0YL8#b8g`Tdq$-rP_WLx6jh72%6qRpNXV zIrUdMar12@J1Vn_$=#-gqAtvkpA9BWG!jqZXN0ep&77>3aLDqdhnTm-wkeSbK<1mu zOROZGB&_i+mVrXtP{sD}64sJN-&LN5*iUJM=Y2HdQZ5q`_d@4FOSnJPVPTN+g0F6U zNLwNm1S!5%<+EUcYOLN{$0(BthzCw9g!c+nh%D;ss+mQ|@|QRaAK26gpZnedRx(^+ zscI@PZal7Gz74&?NG2?{z-jDMnvTM7pgYP>L9@72u#?&=Jns*yknJ0|9Us#L6-okR z+im9fQmkR?k?P5k0rG%u;=%UM#}IwkRK~!Pd)gKP7l7Eq8kNmro0!r?gB9j+u9poD zg|cvOU&j>g1|nP6K19xuY-A$D{k>bvKl&580@vWjy83Qr8(Quov;c>Am|cBSW{-BP z_|xXOY=LqWbTz!ERzaPSE9$PMMtPdMLS_@qQjPK#0IFojR^A$dp{sf1s^S;hRtX)U zdpCSYmso1tb#+vu%-AipFJFf)ThJ;X?#$HKHm~vO^a>fP$U{7!+1U+>qcQqxKzwh` zeN*O%)DWKuR{$nLS0rhs_(t@;cRPmfecyc)g67Rh9F`>1<(H6CCT zzIu}I)^6}epRxgMgNd14gKN7%^1hJ`I zGs~ve*>3>M!YX8tR*?930#9zh-ogW4(?2}=kK5iAJZ`wg*8IunXdN%16n2SU$jC?+ z#jaB?b7)T<>EIlP{Hw5Nrm{ToZ`Xf0+<=X ztv?OO2saarwtnv`KyForR;o~$maL)KKLjWBRUubHidiGk8mJ+hn;thQE?cB3RAy*v zC>o?S7`GW!APlP-xIY39*}|m$V_54;B^8gZ)DVxLH8hH{i97Z5lOUJlY@pdZgi4Zk zb{m9uf@>(#)kh*%H1`_Wq(Yi^-a;80FVh-KpK!AkilxK~h&Nr-5NeU5tKoQieGR6a zZyM$6fJFi;SekSNrEX1w$c@_|-Amp^((VAd>;~z!l@ZeTyaHtx#|FY7oNnupudCFM?C03TvRLe{tPuZ@Z=N;vn;0^^1^MRC z3iNTXQ-L(ruK--X#C-b3DPK=hBXYH9jlue@5dL=NxbcSbQ!>R;!O&A1NM`J7EZPPY z#@ZrYGqQQWo5m`P%u{SnuQ4C*jNYKUv%bRC{pQu%x=A!!{apCzqp*!nEi6OF)gIUG z0X!G+e?Z&#^`?i1X_BIPfSn4DVa2;>D=b~I7IkU$tTUS=cBzULf;&sL(AwG>lL6(E z>8J4U!0$H!$ldFQZJ~*Awt;53f~7|JQ*GPgP4f{U>4p3x?mw+DnWnBVxm>-17GCup zwkTR@4dEhmHc=~77~ER-68<1Izx%4QyRPLgSd)V(?yO0?<;;}@(a{S#W$sZ+oqoiS! z@_KYuk z)9=Le%)fyH+VkyH2$57zyI;FZll+5j42>uwakifQ(%81WMv^+@_RJpI8$C`z2!mTn z5*@>HMvuYzm9w$-F^MD_*Ijp$g1SjT-K6wxQeHPH>f5fn3vd_D zcfs%S&Rq)VF0bBqy`fYsugHNf=18*0#k=I-C2}S^!@*1BAb4{6y#Rahycf@V3286B z_PhQdz7B$e!!JKQ$eRaw^RVmPuJ45D_$%+^@LQdvvXh`XdApOh$qR`AUhoGvSG$MP zFAW@$=n-x^PjF6tu{}SYC9GKjnI+a)LY^hodDjO{ZV)(7pyF@Y_3N&`NDvnZ;v$bO z;`hP@O^$2u%i&!pHRCIOZ9Ky5r3!ngyI$&*oT)#+;b3o45I3|$I2`(ogCz`g@@kOU z8>G4hsUUKwz0fbWWe~#wnt*<}m6JO(6etH^B>*dLT8^0<1YjjlyQ6U|oN0E<4x-w~ zfzBC3nUMpXL(ak&ha(DZ5akE%1YkEvZ4OeKgVgjOl{$zN45;@bKf@Mta)(}C>cv|x zs)k*5IE-FG?2{TJ>UUoaq{~F}45Ehy(MseDUIO*Xh*$pBt z1N4l%8pLxDJV-zyHslP8_*%r*B99k&ypU-wk5|E0!B+`u&v#J00Lto?#dR3ymFifmVd%87h$_~cVzLsz(AZ)e4ytl z?wyrX^%kF(0tMmSjZhTLKgRq?8P%rx+98XH_YD(qm#MU~{dP;crLOY(3qi}U)O*7UudRm4ls zG(~fm%~62?+v!wNLZJVc^U~oG5}e}v!EHP&xFJx9)6(N&kIb%NaiivD(>wJT_ggOR zQVQp?iQu)%N#2{roc+D9?Wr+MVNYYBd#mV$Mh~+B=7a5h5xhOl;8F2uUNOr_rC_yl ziN%`rwJzwrwS8m9*7mC_>9SNYm$gK1=a#}zY-f9WQ+)4K6e>EmSGjWi-gw281UqUN zrCy0$PE&76L)??aQ0TCD#gRB_iOxVvI>2uIy#SVMPz!8sS2x-V1XJU|mGEar@oRP= z8-Bwce7_F+A~gHio8~~0SAca?6-EPw@W2MezebG|V0C@t#UQtygT{%tb5`A0B{O zd=8iton~{;Nj!O~eC&VD00hRFF`$+*N+z-!p}7=dOD}bB^P$w@!ChRBp|H|2g54jn zt0^Va<6?>Oxc7(L#TaWzS9rblp zX6YFYLQg1{qDHojM0k~JKMX6HavhHXw_X>O-eFp`tVI5V#ye|o9N63MzWqBTbe_a) zm?+KKXTh{c`|(0TS=b5E*D4wDGhV8*FwfTc@MNFJMz_By4Ks~3l^BuM!wPC<*KwI| zHY{4y0G1S2eJ61vX(3X|lG8cV&uD-W?}&8#H_E*$(t z86^!#dPxZ;^p+yA%{nVpW6_9?u=_N^Z7Ty?D<}h{;B9-Gpf56ydsnrkV0+!TY)=A6 z%Bl3GmQ=XM`JS8!YSlMt{F7~pqM|;(S0*UcGMP2n4z%M1S1AulycI-(fh#uVOP!s` z^>zv+4C=>T7e))KT~1>i-)pM`&AvXlz0+YI4GpGlg_{RW+jmws>9jI92hEZJUTm+U zBg3aKEm=vW^&K5lm9qK>DAAFoRw^K}>fKQn>=BGkNbh;EF0pSDF-$C622~Berq7fc2KSV3sBn<=jNK9bs-l7<0e~r zll0)^i4PkT6E_dY*4HMen?D9js}||Ur`mK4b5xnZ?SiBaN~mOL@Yqb3E0tVpxe`<< zxUo^{R5-I?X>eTzZGxdgu}i^7AM~!(2?oa2Ul|L!*}PL|m9WrTe;i6O&RE+h&(HRF zBqgB%EF$!FD8SYBr4Wf#!w%t;QaT@VQ#w-%rtZas5)>}lFTE78H)@?)X`NTw)OC1X zT^?WXK{Ts4tYDNrv{TKg^L7u5=rSs#FU&fY&XJj5hM`}}(1yWvJK@mdTZ@`m6?djC z+Z2{mBi2BzLYk5<;tKutJ;j(gsQTzp!qfrvMS+rWO(yH8*n6QbYIr8xrWKGaZu$po zY*dsU7pzz{?(6+}Q5o?!RBJB3em#)BDvxQoOoPZQJ|6cioa<=Wd5`&Q*R*2G@4P`3+&yEFX^Dc>i&JO z*bc5=42G<}rlboieQjy3*gVG5M8$w2VIbvNDsNB|8aT&Ux_si4G!Qr1;LC&)dVJSg z&1wT+@QtoDKd2{T>70le{93vZ;wiDDv%E&g=r4)%Wb0lFM`Z>xu_R=*sQ6Lyl@zRf zrJ`vVLkhic!4~x?PCb?ohl<^fuGIy!hEmGo#yU>?kyY$kF?!(*FG z^Q%z-H_u|16)MdbDcxX0%tbKc-5# z5k@_SvRMci>}yx%VhNxD>7v*$nW@wY0XJWUQlqm|>G4KCAAR2`wg}ufXIUCyIAPMT z05iVktAJan;ai!4^9Sm^J=tK>sfd6E-zk%l)DTX&VEov-qWVbCNw4HAV^FRZ2>fi@ zqP&D7JEBbSQQIt&L;f`xRaqZRWbz(M(k4S~le(g@0D9VzIO`QNglQ&04+R?4%EUxz zR*!;Q5|VgXhrSh_hA1==CfB@#(RjJW$$U{Sduns96}w3J79XznWk@r*W#Ji}T-g)p zLc3He4inF!Yio>=ptyTU5=l-Gb8uSgGvDJjq=JxX@I+qHl*tQ|Kv)FZ4oHEyriemZ zBTS4x+e3+C-S?_$*L|7gC9&Jv{0Opw30=*r!3>gtMHI!8O3>>{B%6&rWAk`f>27Tv5AKjw!^wFg6nD47ODcq+q@n2TvhhSiJ=VRx-`u-4*i5qjczP>Ih@`@?*QA3@Fv{z86 zG2*V)m2}lZjmT22H(fw^K!X4bFSbwWF02B>27Mw$p=B|`FUPojIY`f$#%d7`)nI=254ls%t7yV4br(SWL4hrr#@bp7^>Ks^*`V@yG4tVyIOZ zri=!~I6Lc!#;~0INqMFwd-A<{VZxkNH5pE$nPq8J!w%GNixCybt0kp&Qj2?p&80^V z7k9r~)dsItw}M-vjKW2&DKCeduEicUlW)+fooLmrDgZpF>u<5I%R~e*i?UsplQpV& zXiFb-XYHg6y=Ake4YO(Vg@PajKr+dM14hFHe52n>8owLa+1(0jqH;Jui+n z*Tv+rTrZ`Ut5-TN(B3&HWZF2bfiAcssx2Iivx}vDaWh%*B_+f!Yw6>eEo+>Y-tfF= z$=QVrOFMQb{RCZ&iu{UU>FCtMxsbe%9%l*;1>+CbH`SsSgKS3BFn7G8W{(tg0jM>q zj9*>f^se-BFRgi9ssGR;!YkR-;pC^pYa9E<&y*F9gJ*+V6t4z$cfXw(6(rZ*&y4_$l<))Vh(QDL3Q8#4)k8b zpA)##6UqK)I78&HUvi_(F=8hgejEN>1Ad3s_&wl?S$du61Adnaey`%k?;St!@;gXS zZHi+z#!YM^b`>HQyYVRgj+`fQFm@wnCi|2eYzicYRS3B>OlH55{v!=-PU0Qf!Ez|F zU2T*-Y~)DZWFzk=d*8^x6z?c|-$vQz28WZ64ZWk=js0#<4|^IF?v5vl-R~|fJI5Qf z?0~%>%%PnpCe|-eu9?YP0mU2d@XWCn=uNndo#03>WkFI_$OtEbbQXS3_}#A@35R*& z08UJkx&1Vl8!qXkplAG!{CMQh{gHne@uBx{XNmtPso>uWOpKW$T{zfD*vTR_3dHY6jotvp|vOxrpS{(I+OwXR*|l|IC6yk=6of9NAjA@*FjCpA4Yp(T zQqXHRi!z06DsE~7L{fn56UopPdHbe7WJ=`(U<93-7X%|Fhp3ny?0Uo^UepNKD3a=& z7*YIts*ShrE)fg4{`cl|IGD@om#B5#zPka;uotm}&f`ki+d?@r$B53Ps^%C(p^Yo3 zYu>&qG{%$Bjp?*=pW3|8vCShc%)OjCr&vm4#CK2Wsd%JwZgNPRT*W&o!6i|tvi%?}g?uNA2! zq+L57Nf$aXnQU{G$D;6$F3AI^SR_ZcoTX75&!)GLvXaeXZ*uQT^pa)k*xRnNxx|Rg zC5Gj5A$EB<8%5n8e?fsbs)9e%yjgoGBcf7xEsYs%=qe`mSFMZn z(w^-Qvq$9IL@5ECik0Xb;@PLkRW=yV4#Kk477!vL5h8ztk1FjzG z4ambu($|pzQMh(q#a*NIaxx7zF*Aid<&l!I#ew!Y6Czh9vmZo2PH*4Mq?rbnz)Yge z&POYTEI31)iM31~hk^97LU8MMBw~{#DqDso#NsmD==;@o$r$MV(;q4x`-@q)Q}@h= zDi#@gkRg#xixcWC6CqL|HQp061BuuRkGPPEjy$DKQ$cQ##&bI3 z#6^7bjQx?>i{FbJ5JA1PP)BhhCpsPTmZ~d;p_t54(6FQ;Gmp9FI-xiOUX%7Ztx;}I zm!u(1H_RgC(r+#H@JH_L2Ng?=Gii+z+Gl1w?+XysgeQuNLcn^%?Q=v9^GhOWOhy&v zF2%^Vm(fH6O006BdR~Vac@&UozTxcbJ4K(Q!FMEkP{Rc`$l95D-bu#4z1c_P?FW&f#+nr>GnfI4sh%km83+g| zhC-J%rKbT-;@8CcCgkxoHT*Z4rHV}+X>>uVeKr>{EoPWE#J_zv0_1lP*Ns_qff-eB zZm}UYQ!ugUm`tT}DMNtn^7ezww9cLu^z$Zm^yG8QIt^Y6H!6F8`pv?0DsVNxXpJj= zsQwg33O=fk-jrbqXwv3Pdb1ac22`|YdP~wN1DwWOE;h)Q3wd~0MsXM`<}^^x8GUp~ zY4zBK8>y-zBDU&?sLh=taVep@;)>GhF~=(!HnT}CdbFI>=Ylbrio=rL58_NyESb|Z zao0>ndnTi_kUPd$*4Q+Oh;@wZeDUFJY@?`vl)`nFc8x`!o@I-PnnET$PR7LgAh9is z#|e&To%K+;h4V{(AyNaG>T$eoqC5_iA{Aq`eTtMCObV7-*!zk0)W=DeJa`&QCYtQeSn5PB)WN_mN%43!=g^3{ z9(>=#P(mJ#3~`=>+*}+qa_=v(Knjh~8nusUaPsKgiXY8@VSjAo#-3+qBOZK6RNyPs zgfr9|opA_lh(6!GPlN0l>kSo1P=0WbGO7PDH&Lcyn;0=Bjio@=H5CgrJt;_J83i0- z6@cHvW}eq3@=}3a0P;%tOwuN-lU`{yi6HeBl6N*n)=Q3RDcMc7+ej@g$|XHt zY=+-}iBIS?4$^md+Tl$mNnykYV6vv^M5fbxqMy6uCC@@o!%d{0Qv)V2kvJA&5+)Q0 z*vU3&C<=}zrcx+zBFcxH3no(@a31YxNgCqqo0`XA5vDbjWRz>x-x7RFKwR1r zurU6{afBXo;_>MQnRrYTReEIBMDutgb1mZ=9Jcg#5l%WOq*<>}X1xL{Q+Ya+*;4e;_N8G(eDK1kLZ0AI z0*$YmjAUygP6H=W$}N-$%wXmz?7av?Fsn3gBC;_TM}Pr`lp-Os3LsJ}F7@ug^=A`H zBdI?cB(Hi3T1Xe2G&}94Ru7Z(Ph=DgzHSFyL4-kn=g( zn4|}QP>-IVz#DN>atqBzOGC<^VtgEw0~KnC>b|iwbmF$k+jZC-+cb4av@Fw{$w@mc5%oJo^ z>|&*|;m%lEjSQJ|g@bX>M{lVi5fx`D(LKdgK%!z{f~+i{2xLPHJdM76ei6$sQL-+U z^h2ueSd`>Qg*bm4Lh$WDj#%aR77=C8<9uA_yGkI^4+nFXS;aR~gZwr~^0;kDJByy`0Ig@OTA%`Cy zC4?j8bE5Q}kj^FA~_Yk~&{*9l!9e_V`v2 z3S;JE42kD*?sx0;RicJWwV9&yCmOqgsnK111`0JNYRcGT62*c+1w3hQ`{8clJHCg)q_;Tk z{jDL{p~u23Qeg+Ya^vU@cM7PvM>23Sn|^IQ&n7~6`aQ-^OmWn0?_0@2O9F8py_D_T zyMq+-Y|i#71(4EsHdjAKuVfwAQDyy{hz>^-??T<(K*Dx^YJ5N51ezyvh)?Hby+<_M z*L@_ZU}F+GJ4sxfUFMk4uJ;WI6_b9Cz;Dqr^?LjHZd+kSsRkm*)W1d{?AApB?9Ifn z^>&Y4nM}1fULxe(oP(hFf{>TY_kOrXf)dDC=-0hO)32SB_DfrP)cBO@0&5W@Z=v!ddr&^&pK1hl9zFVc}Dc<`cB}R!j z#5zNII0cyE@Dd!8NlKVWLMP0%@3=)zPRekKl{@+7WF#~qdqaa;q5CdZ;6yrRz84aM zGEpg>^iTFRuh0`$q3|D(xhJ%8)*`YX%aJP5;KY%6arirJ(HMRQ#85oCN|E( zb6BFMBV5=-%;6ftS8(?Kgg>vsb6L(_GC%X45OycIba9eP7s&}Izd#m)hrPfa(PqMdqlI_=%Y`-Sw9kC7H5o_=rxy_Rtcz!2tu6{>s#CODg ze22GM!02wC7Gjv)rJ&O@rm(e$_voyk$sT^t`A zRekg*j*nqr!86qlE?nXGaYA|II43*aBQdkoQYR?EPRkw6JhEhw6ve_05JOz`$n=1N zpiIqVrtyox4LLEG9JMh;VcN5^m-L zM7YVrh^-<-3yCbd7t2zy+*a)MBWi7i=&W;W6S(X3X>GVJE@Use&Rj^YGCN3%V*29Q zNC)ew&9#{A7RI9&V{*oK3{FhX9OvbhBo`m5jIrYG^j-)WhxFzm44GVfvv{hn+j>8Z z{wbAs)C5Bkx4m(l1ala!aE>_e9TsU{F@|mk>^$+!1yO`itfFqZ^}ff=NFuVMi)kHh ziwh!l-N`osj@@14ZFVsvkAt8rEKoA7j|rRC{Ss2s3nRZ3ZueR0^3wR2m3u0}R;nDj z9~EXL53?Kun&sTjET@BJK1MXl$su;|%S!et0bJ#pWO9S_F+sYKAl*oit|rJ-13A?H z!9n0bx)?Ze-FJ}dzJpx%9pt+2AlH496Xd$@Aa{BPx%E59ecwUu`z9we;;WIzjXZAT zaU;oSa3qL+Ih;m1DRKjKajyd3O-;Xh{%QD^rz(ly2TWP~9Qo%Yzf{WXUf{I&;Rg;s z{D|}&Zi|ZKu;NaQczcvUm-RKMo`1}^ckFk-&&WSGpuC^gF0{9S5zjv}$2Rc~^{^b{ zBrG4kCt}7AQz4xA)rEgJ@D)E-{BZm?{M^~EoKy;OG%3i@q#$RKf*fBW2gjkv2{PFe zWU?p7EKiU*pCHpakwry#;8{>7LKqsUzl z6O)_?mpOsJ;Ze9j%#$EjZwIkb$O$tkLP&BDD~z2HDzfEhju*P)GP}`Iq{Y1vP_T zM6sZ@@VlJZ_n8fDa`4ib<0S`4Bd7K9dw~O$Kn@Z}4%?G(Eu%CbgM*Zj!wQF7OxuC& zc8k>dg2^d~gy%;Wnetp@0(6ltP%JV{y2#fi7MVLGXA$ur2e-(Qb42E3G(wJ}M#j$4 z!=;wQj%9~q8AS~&Ns@?2lVl6aT=YDTb993^E1Us0Q?XB6l^(tF?XLKs;mG61QNomT z%H8ja2<(Y^2dJy>hnMSgD>9yKB$G| zd|{bi?kt4&_~`{AB&+uwLYD7Qz~P+XV-@&?fZy?%4*I2DfPPo$xK`-m zXSPab29GB@!?wLCCevis%A3NRoMJ9ZaGCSO$y*)&azuw&e%)XVQ~Y)_%CDu`n{bmV zI(kOj7QrL|$qADqo5mm~&dQO0F*tbQt14Z5sXNIp4S*!IO!`R5{di0cwkLZfbnaI8 z8}T>JRp+d{0xMr^HE>+0-7LR1;R64P@0-NgbJ6x(&KQP_lD2-0dFaL0MSKs8(a42{ zF@lT^w4}f{@@s=hgiuq@zu07bVPJL_k_Zs~GI}OBgs|sdOO_g6mmu6lbDWc~4qO(C zm0zmX$?@~`F25%kDiV#|x0scRBo&+!hD(=h+8Yx$J|suP9rujT0FH)mH7l=?OWll{ zg~oLBO=zy{I~U}EvotZXw#=gc#xFIX73Yib+cJ)VkiLGEPJYD^Zg=J2ErnL1}`$kZiMIi)_o;d6=mT+UNY{gkmer#a-b zEIIX3t0Ah)RR6htCiDL?| zO>arn6CrJn2$vp-1b|3yN&OSirDSv|&3$@n$V7U5NU;woiXnwFq%;pHz#%1mOo<;; zIAaP&DjdW)5kn#_iAV|a$+J(T>QiA(DXCLJ=9I#aVh<_yC8b#^n}{_f^^)GYWF&=r z%|!BZO(~S>CKVm)o2foibEZP3?un90XUb=4NtDz(Q#Mh@9CDlAmAVHdl@H40r&9e) z<#$B@Ky^7)UCu|J-yI5-Lm6^fh8)|F!y9rwh8*&cb2R20jXAtAhbQvD)Hzc_rY@Pv zDfRgcpUd9o5}$JFr;N=x%^{~Ho{P-# zTx6E#B2z!)Akd4<`H*wrPmNtT_>AaF7lBva(HZTk=-m8*}rm;$rExg7$xV@ zQjf`D$p;Y05nU?Y+X8oU1gE!DyvIZSrEC(8pu`FMaa1=yU)J+tAG93cR%}>{=T<+{@`z( zKltSNgRee+@FOC2zkc)m&%gaMcE0n6@cQ-7{^qkEk=GAC`*=t1{T(^~IMGe}FW7tB_yk*nUXN|M#cg`G5cJ`@8@9+n;{)=|AkA z|NdvsfB)6zzyHhUfB0hw^GDA=_zMp9PoIDIO@5WK^Amdc!`-L<_~|E~{*1Cm*tb6W zTl)L%?z11GlqlR^eT5?V+t2>tSKlJ$7hn0s?|=I7?iauRi?8o~_0`Y*fl7lD@wept zo0N=iefA$JfKt5${`1#1ul(v8JBst0pM5NEC-S?yFaGSK&%gE8pa0dnl!3qGvPc>D z!S|S;->*LZ;3J}U&p-b9^P4|^e)I2lpMCFF-~81deD=4y&;R(NFTe7C!1?0GpX~nY zH+}-{7hn7IC%^c8$^N$}!+)@Q{rWZ8>^Dn4cY~h+Ki3_KH@kK8=^F>?LcQI8`}QAv{_TIio9)F} zG?CRccK5|M|LvFG{P@>D`|Dl2+cxkl-!iX!LnN-R-Tl*7e*RBi{onrSE8p8S4xdPB zFub_B9p5cE%`Q+57vGrM?zk>{-|K5zcZ-{7AmL_<#NO~Vbllv$`|`U#{rp=W;v?$2 z|Nhl~{O@1?7?(hsa3T#u*>q#Ko7WRQ5PHAkdrj6NqbE->QT=_Br0~ZPmQT+bl+>?( z{_d`I#|5jXZnDV9@n|jX8(%4E8u%MG21y)9Rka zt`n~F+cmf&6(3lpddy$!!R~}Heqs!tB%*LEHn)*Jp!Ny%@i9K2YTS%EcPJmZj&m1o zVX*^77x;jz^>SZ-8V>TFdS3OP%y=swV!@OX-`AbKIw+_4SmOBG9hgM*{mNI*%9pq( z;IO!bQY$=4ai#*^_bX+`jc0@JaN+zb26#Q+nn?~{o(=Jyc5cA5P>-DAXr6qs0wqN9 z%(B~=^+*r#6_efP|N3vf{PwqYU;N3>KmXRdJW)lG&*@uycf(mdv;o{r9?~XP_CgW{lF3g$Ar)Rb4Sc-+@gT?w26*V;)7)@rzDUcnjv|TXr(TCm5cOKU=U^xu^&)0tO737(V8xpi@ z#)-6N!wnT5VDL`%87w|D>o0N#IJHW&vFpwq@$rbGm2YzH!sIB)ef~ZmwrJ1;+zeqU znEg7dYc=_+Yc1O6|NMv4M0Z!*CU~M$ulJSo;q~ML{ZaDv=_@un+@9?YRAl@633pVZ z&s`fFXjxw2>cOazUm0v)BmoaJ-olNePgr?=`WG8K`hLLgg#6}bzxNxTndyn|n~#yb zoEY-NR|)@*d-}cK;K{B}xCit%1`^EEZ;gbCh0NpM9tQdOAA0^9(@2_Nafdyr9c)(Y zBDmis^?!N*o=VWa@zJ&d=us(@hew-||LxCTh;>uF56??^zm#BA)DMr3WE=f+eyD*4 zM?&|Tgt_+en@Vo$<+p_LTS_u{`R7XXMSs5~RsUQGCx5@Cq*VrgV`=W~LKcVF``6Og z>?<4&F|#}r=P)J}@ru-EV`GbBr`;z9I;WKvPHS=io~P(YFrD}rJv;9l*qPVZOvSOu z!HcW36mpnLjg1q!-b540dk6j+Jk%hM1<+|U@<3rYhA-K9b&$JUd;TQ_x=shv*;k~~ zo7tM-#3#!ozUDSIV|X&l6FRUBgsx6Qd(!2a$H&_=zYW4on&ZPDiYJ2|n`spS^H1|L zS?NpV1D%7NHG)|R&61g2@pTqn?cF_*n081s$~=@;j>hjw<|7<$XLU`mE?d(HBMEO8UKe*Q@&Ss*Wa=$4TL{%2!b73@V+A z%J1^J(5uShMTLJ+_*LOo71vee}et&ynt;;=pVG#kV5tR(^nx>pfz>!Y4D{$||^>qw8arLwG(u!{)C6CM`f6Ty} z!`|B7M7eh(^3FXLdv(-zKbet7Yf%F;1ohL#&Qk!7)A4qyFdD{>;Yhs|N5s(D_te*$ zvG_XRw0mP>@kEHKTZbecO|OGGoa|Bg0GCtDT=AK|>wB^4jo1u?S@({{)=${Jto)>@ zJ&oY2jXG_O$J|5VN&VwHL#8+QOpJa)Bld2?2dhzlA%QxnWyGr{c8o zS9~(xjhF!{A!1r2986U|IDJ;}ZqK(c*8skWrR$3&jO=9`_0FLe0RlVVdw11KqoK&> zs@}(S4yvdpJ3vuW~@OiO3d>PV}(4lMZ)H#2JF~U z3E8=Vph2sG+w&qM5eH1;9bFs;5Wus1DZ{NFb5^K|JcZ_l8lkEUTVU~itU+k$jP&@F zVxp5CCwlbDV|wr@%bcD-b(ovc%J);3pzxt{(q7p!^Y%g(fd*RdYab&94;lzpYjc{e zZaJY2Su09JRb#H&a@CZnU6O>^+qk9_hJlKP@<%rO&8J3<8*BJ2>e(>!ODxEaGD?*f z#3C&m!p6{m`V@Rqi8~#%@27wHgzu#BBD38uZb-dlZ{4zvEv^Lv=Q@k=k<=k`(81F2 z;tS&z$9cw;zxgR{AQgI~CNHHn+;B1o1~5^)D1u&hv^3ONXHg$A9((fKopADnMhXjOc)CYYf*oViE$akkO!_vziph~LO$Z>gKlOn$=q zc9}bwL&pOPK87?=_mqm4za{oWZE8-6h?LUtm;`{|)&NO_D5>yt^U<7MPV>rRKqP~7 zs$GYrwS2)>!wdGf^8lq7NiMob8-A_%{pLC5wKIQFw2HG)nQK(!N2h2NZmZ~%@_$lk zaVktVDq5Aqc`9_L!W=aHy3nI4w$T@QQen<2-dXtx3J xc?OPez_g2ePj - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] builtin_txt { - get { - object obj = ResourceManager.GetObject("builtin_txt", resourceCulture); - return ((byte[])(obj)); - } - } - - /// /// Looks up a localized string similar to Shadowsocks=Shadowsocks ///Enable=启用代理 ///Mode=代理模式 @@ -205,15 +195,5 @@ namespace Shadowsocks.Properties { return ((System.Drawing.Bitmap)(obj)); } } - - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] tld_txt { - get { - object obj = ResourceManager.GetObject("tld_txt", resourceCulture); - return ((byte[])(obj)); - } - } } } diff --git a/shadowsocks-csharp/Properties/Resources.resx b/shadowsocks-csharp/Properties/Resources.resx index 24d1b168..ee5f98ea 100755 --- a/shadowsocks-csharp/Properties/Resources.resx +++ b/shadowsocks-csharp/Properties/Resources.resx @@ -121,9 +121,6 @@ ..\Data\abp.js.gz;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\Data\builtin.txt.gz;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - ..\data\cn.txt;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8 @@ -151,7 +148,4 @@ ..\Resources\ssw128.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Data\tld.txt.gz;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - \ No newline at end of file diff --git a/shadowsocks-csharp/shadowsocks-csharp.csproj b/shadowsocks-csharp/shadowsocks-csharp.csproj index 314ea6a3..1848edd9 100755 --- a/shadowsocks-csharp/shadowsocks-csharp.csproj +++ b/shadowsocks-csharp/shadowsocks-csharp.csproj @@ -102,6 +102,11 @@ + + True + True + Resources.resx + Form @@ -128,14 +133,9 @@ ResXFileCodeGenerator - Resources.Designer.cs Designer + Resources.Designer.cs - - True - Resources.resx - True - QRCodeForm.cs @@ -144,13 +144,11 @@ Designer - -