aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/develop/lang_duplicates.php
blob: 02852798b641ad36ae61da27b90861556ccdfee2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<html>
	<head>
		<title>Duplicate Language Keys</title>
	</head>
	<body>
<?php
//
// Security message:
//
// This script is potentially dangerous.
// Remove or comment the next line (die(".... ) to enable this script.
// Do NOT FORGET to either remove this script or disable it after you have used it.
//
die("Please read the first lines of this script for instructions on how to enable it");

// -------------------------------------------------------------
//
// @copyright (c) 2005 phpBB Group 
// @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
// 
// -------------------------------------------------------------
// Thanks to arod-1

define('IN_PHPBB', 1);
$phpEx = substr(strrchr(__FILE__, '.'), 1);
$phpbb_root_path='./../';
include($phpbb_root_path . 'common.'.$phpEx);

$mode = request_var('mode', '');

$modules = find_modules($phpbb_root_path . 'language/en');

$kkeys = $keys = array();
$langdir = dirname(__FILE__);

if (isset($lang))
{
	unset($lang);
}

foreach($modules as $module)
{
	require_once("$langdir$module");
	if (isset($lang))
	{
		$kkeys[$module] = $lang;
		$keys[] = $module;
		unset($lang);
	}
}

$equal = $case = $diff = 0;
$output = array();

while ($module = array_shift($keys))
{
	$keys_1 = array_keys($kkeys[$module]);

	foreach ($keys as $other_module)
	{
		$keys_2 = array_keys($kkeys[$other_module]);

		foreach(array_intersect($keys_1, $keys_2) as $dup)
		{
			if ($kkeys[$module][$dup] == $kkeys[$other_module][$dup])
			{
				$compare = "Equal";
				$equal++;
			}
			else if (strcasecmp($kkeys[$module][$dup], $kkeys[$other_module][$dup]) == 0)
			{
				$compare = "Differ in case";
				$case++;
			}
			else
			{
				$compare = "'{$kkeys[$module][$dup]}' - '{$kkeys[$other_module][$dup]}'";
				$diff++;
			}

			$color = '';
			if ((basename($module) == "common.$phpEx") || (basename($other_module) == "common.$phpEx"))
			{
				$color = ' style="color:#B00000;"';
			}

			switch ($mode)
			{
				case 'module':
					$output[$module][] = "<tr$color><td>" . ((isset($output[$module])) ? '&nbsp;' : "<b>$module</b>" ) . "</td><td>$dup</td><td>$other_module</td><td>$compare</td></tr>";
				break;

				default:
					$output[$dup][] = "<tr$color><td><b>$dup</b></td><td>$module</td><td>$other_module</td><td>$compare</td></tr>";
				break;
			}
		}
	}
}//var_dump($output);

echo "<p><a href=\"lang_duplicates.php\">By Key</a> <a href=\"lang_duplicates.php?mode=module\">By Module</a></p><p>Equal: <b>$equal</b>, Differ in case only: $case, differ in content: $diff</p>";
switch ($mode)
{
	case 'module':
		echo "<table cellpadding=\"4\"><tr><th>Key</th><th>First File</th><th>Second File</th><th>Difference</th></tr>";
		foreach ($output as $module => $html)
		{
			echo implode('', $html);
		}
	break;

	default:
		ksort($output);
		echo "<table cellpadding=\"4\"><tr><th>File</th><th>Key</th><th>Conflicting File</th><th>Difference</th></tr>";
		foreach ($output as $dup)
		{
			echo implode('', $dup);
		}
	break;
}

echo "</table>";


function find_modules($dirname)
{
	$list = glob("$dirname/*.php");

	foreach(glob("$dirname/*", GLOB_ONLYDIR) as $name)
	{
		$list =  array_merge($list, find_modules($name));
	}
	return $list;
}

?>
	</body>
</html>
r8FZf:NM-\ l/Uu ]VFfOa%ke8@;%*|̋]*s*R1$Wk2__ ScbXYZ{dCIئčհ=g˳ [d)1\㨆wsG4tf=YҤlL7׻#!rДw:ILT牳 \ /BhlWhaDE<]^S0Ƃ;Lk,ixi&:gkhY5B4\T֣lI ֔` 0D+_@J;ٞ˦%z17;HMs[r+P6v'.I#c=9YmԄ  s埁M H2D#>GtQ{7#۠w@DE@v dھG I tPF-Eeyp?67/}V_.C=ws%9} u$"a:of\Թ@C$l  7a)Rvb[#ؘ֤bn;Rv6 VAYrMK.p5:y# Ɤ="j0Ni8p;|(?.oxXw,P}\W [gvh PS~ez7'A1'HZ_V>= kF0h$(05MDY|Y zqp(ϛ2ja>4ign>%Uo/?x Q͋OF/j%vge;E@!`,NUSٙjg*eCqgPC ?g/s~C˳ānډgUu./ebLe|4eJ@ZiZyWɕ]#i-I1˼\X_]Ð2ފI=4Ok)'?9?L͠ }5(h *%f.456 4bp Xi!uU|Jß]_w]kY6-K6߉Pfev&&ݸnr\X*盡PJf61{`+LU&U?^}0_p5t0t>4VWq6CNy1y`XrV>Zb}壱t Dx eJ-C?/Pb_Hn5x+"-8b_5JLZ/Ad4Wj.eL T}0<ſfmЕ[Y?3-\aFwThf֙Tf,~:淪`Z`\?{`]=VQS)j,.<m$/YM+DNbH,It/y~;V?$ݠHTP Nw ]TU'#Rf>RkP: gBzK ~h !-XKЍQ$ cf E0ǎE #Qscn(q{ 9e6ajt:B3N`@Re!y4'0˫lSГ Rkaai&֨ uL9f`1BMP!x ӚF8<_1;@6ggCO3Zf{)ﰿ vV"fa1#tk:i/-Al2x\qIo8j @Z 6>3r'Wn7U;CJT1tYIC[dFvD);x)枎˖"=fX/nR(-JBes56̀ (ea'$:NhN=T߈OW=]z Aƚa!}?{ҫ'esEF0Op$mv9_U,B:'TGE̽i:ٳ|~s'Eϴr U /.רI ٭Eh;dXTNX 8rRaPD, :"PW`/D1/ꡂ2RrD^=ܾ9r# ]ό'%(5x][x5t}/]y|N"lWE b) Z(y11cQ{T>薚xnBLULw"ؙ\Ym%J y&>-<} |_fJ-)y{"))}N3\ S⇃"F>Y  !Y|qxyw»KbWonZR֞*gDr[Blb屶+S\4C~`5qW[F:9dQL=.$8B>FIp8Fb /0'Ph!rƂ֚t]VY{>($2jn$<:.- o2w)S _-Rm,?B|4A9MG3L0,5J|ױ}%QAtM`(g݉@DMu\F?Vt#}?}b'q1Nv!hlPlsޝkqNC{p . ⃶ `/ ,_0Q^6^N@quܖk 획9T6 n ˃ <}wrEfnX}pҹo_2ji,|N"G ~9WDa"n]-T*SziA="DHl9>]p(~ 8b<ԟڕɧEY2kFk{{Nk4(IF&Xx&1MR:buZ424T(xP #'XD'fY`p5SK66mP3-;}u^1uT{IkYx}مu|T"=)B֡gAwq!OFsqIy,TDI"JHD.9#ٸL)^v#Zn+ [1kI>. tMOePtn&gY5gN )= SeaugNvTcVU0Blg#ڍeC 9p<;K>9٩pD/"Gd<$)W]Zߠ&N4e=>^/`9:".0U(]U2gt'!߂UӮ3fRxaȯj?\=qEZ}#. ƜiBw6Qߨ: (Ν3Я X8UjMɯm:2QG3 X1i/Ž 5m-/%_}<^iSM2kI"~g0B9'4}ҦSs?@d9)[@şROtn*q]60%hM?nB6is_E5Xu!lFݓA {L6δ[ s הMRۅݘ@TՊgw/E tJh `{ފN4 sޘAsFi쒮Mg"40-+j?NcAd ƧBmԑi5`;U?CR?1s9^J* $Pγ!j+wqc! 70( j.$a~~݊pyW\}Z" SYur;Y d8Ӽ4Ы\Q =z~`W2A#YmIRN?XTeߤ'cn{ k"ƃp_Mw`E--Bua23Q_.ci~P (6h2OiԹpzn9J1B֢fӾ5Q mtHVH_ XG5akz haiɓ-;XR+orB7TPsm3\̉" 誤AIRMч]<=8JT./X›= kSjL*GGI>~yE/QO9dSF6s}{X>3KA}P1).M OPllpي3f]F;\;+ J7僜wVxCyj=_C y\U=,TD;`UEwL8~E(ɇ T=B.%|[6SD,-]!N֬fWPSRLtNR ܷZR$wQP(0Sm\(-VI⯾t#P_;鼠#_Vo Y9͗S*8dI=WFвZ5B$BuIҎK|!qBcNR:%U 14޳ ˯Ejeفv4I PȖwñ\4#F[$7ޖmg<&9օWAB 0h"i:eu?GA' %EQ+ Fci6FO?TL*y ub~9QޖY%^wqqq{7߆Պ}]E)G2}B~ͺ.%Vq{ףWFToɹHC؝a6%?JMXK<9b~S]tZUc0S'jNu{@p(-`3 Pp|f=6qHSwV>=eνb]j-?z+&5Odg/f5xK#1ξZʔmġl/CMuT4Fq%a珺|?z' -MwiC#Td:Fz$@ckAMCR>:?%mfj)&Do?fzh?o4U.0$ g:l9Y! 9-"Q  Q>Q"l't*-C5Q=)<g(aE1v+I3\wAImW^U 0224G-]nXq}H'V5O䉒4v+[%k4Zt2(XQY\!݆\LǽS5?8~[}yAVuBV%wF0 \**fDT6!_rdXt,9a 9}'p nq+[@{kk gJ}i$ZI@1@[f"CmKL< n*,@QP0we?ޢ)mw&S?\⨇5&5KD`agJ.92iX{2=؛c㈾OͩXvZ GX 1YU0BưqRFC+͐^e;UDA qQ,N|:[k;Dǐiz՟*]`!q&أ᎙;i\Ԟl%fQDnHTT;ux8+gYCŸgq;;!y~}iQuRj#*F-}mgb'q/>Z lƟhBڧHpL FE W"kAGL9Oyp@~`9Fo:qbFU|w(X׾:)<1w#KKTnܷI ,! *49wRnkCw m$aPʏ4:P;2KRRlp~\?1RZZtP 2 a2E:ר@嗚^1&^e..]S(8or= wݒ&"kW Q%5'hhm^o Z-ϪBl(MHQA.T*g0 \c.{Q`OCXp# ٿ3B]0k[I[Ay'B pVե/ ~Dqa6`r(#Pb;XY7ob;*le9azXVuȺ'T_Q?Tsw]c\Fk =`3O^;}{_ٻ66 /Tߎ?7k>sc,[=_UTF)&WhQI @L-.>G ۅ"A4uCe[SNy#,xoؾZD␎,E.+KXC^RFm798yD4"^ڱ\y;qpռa ٔ;\0?iI$fPa\ՐZmgNV͚* QN-'D&٠t`U|! 'nPc&"=JKA7c>6Yݲ Q^& f$Wiq(\ÒDQ,ֿ3yWm(.Z@:w"toncs,Llq0[.N흣8"&FfIm}Z#.fu'MY8 !jl$ţf|{myP.D[!O({*gЁ3ռfx;#lAIKgRtBV0otJهD`;t@Q_wnX? , lG"lq%p| co<lĝD-Ph¡K![\OX2@ >/zz`)Is]ѣ媠왚|M5tb޺N(',3@imXہS1!{'sտŜ`-۱ }sD:z] API̟4Kw$ \qߴ"z* -T|!V 062i+P;D* `s?ʢXVBr|wMkţ\@H';֛tA2[^GNn8~5O@qǞk ť)oS@jG,Yy.#?xTQSjcqQD`7"1|{RB=)-jlb-vhXc)z犻Ui"z;SV4CjX6ǻ 6SOϣt5YS.m."Fu A-z|!csbI Л׬ k쁚U/F+SS-͊^CɐE)3-B/_m5NO&&yX|m7 F 3?Mh-i*k PU4$ߜ+XmҹAr)gN !!qo{2z脒a Uijx-,F<ŧ OCqES5[oƼ\3C ,ZLKYUb5sQnGBuA1kwޅ[<,iز~&C? eErŚ͡c7O$YpD3uF8,$VcR,5)} 'rD(T&QA1oқ.}w.2pn4-"Ggqn6Ӿ}@/$$i̭^H{ڭ_@Z@T:ƚ|u~V`'q 컒x<%/HX1K@zE>I'9ǔy!”& &AE 6l&%ttaBI=鿕DN,?rIoAeÒBʿ 38BL2G}P"L򺲗/襇puQ, o9)Ti| ^ AK}"'uwe}9*zRveMdis/z]@.=yV<"AqLt05<#zs EwL;~XQZ% "afEuB'˫pDgZW@p1N:}wD! u3A[+`]"7.^`{XRGj*^ݷX#P2Ve ]RtXA땇:F݆Y~ިڒhv,%ՄJE={d_tA_Q A3yRF7@RsaiKshfsͣ jc vWsotJ &˭Ž)&7 &]]qJ!ou EScTC>E&\sW*|p*PP`g т&55(+ڮ }IWWncPAIõD) Ow-dOKZ%s/}ӨfEk q#io}6QW$͑6{ |Bπ&*"!eڱ-}t7.b¡ vY_`gЅx9dW&vo]a¯Ģ>G14=Hd3x@ *qiV|CvL"F/cU: N}&ٍUel:\;$NڇqS%{٠wòX#s6+ p r8)iAs#w#y,?m9>$r?QqF {%2fB^ `ES留')QRfl&kI 'MFC0&P'+*R)M %.)`a?y]/d9?dՏ-QMghŕa݇=!Mg)]ip>_Lϟݬ s> 19  W8+W4~RS~"`K6r[:jj,s2֠#V<oY?'@'DфQ<$bؗ-w)]+˃{ "3whz-*US=j oZb6[ᚳ~ĠxhX0MKʠ_/-YKmBkR½'*B2Z Eħ\CJZ B,% zگ+Laघ6~禠8 yS[L{|+W%VWyW*w7:Y()2`P-0Lڣ UT+%bDSy5 iM4X6Bxƻn[7 ͨx P7ʺ 'tFdWϓxg/2/lb s Pջ(YI$zFV8a܋6m͈D&ȕ N4fm{'Hm)--ҾlGAYnO tiG$Hu8?# y7S!]QĽw%_}]#N\Q騨2 Z EWY5څ%[׎Pz6Ox- Xs~aR׽6D7.x N+[NU*_6rlIqXV`^8(耍4r-mS.ZX:]4nv ` ZXI{EY'iE3Xw?כX T^w ˌY`õe4`Ӳ,HpfȰ=,ΐd(8ctZïAS=~RM7š; d•M6á}D$_\OO~FK@8J"uA+bFqWn ;=?1 @Hf kM[x%ف۾^thu aۂC<}boLkq{nҠ"mwE#)?Fydtel׳ ;Rd؜+le#N_ $~3NC|0y㿹wr=z|{#q&aFMȫ?c萘Wvq01[ͦw`[и*s&9=foNWpOe&@Y޾4|?K}.=9>)xqΤjaV-F(R^nYj.bhxˣLc6W$ /N,pi3 B@R" ZҟiJS[xrP{ˠՑ5dZ]\%#>;UjBdV*g #$J+J 9SOus$0j^FJwT/7/gPFJ;hˆRG -X? ]Wzy9O<,ҮG}|+:uBV0T.3!ҙ6YY3ȋjbIU6:8%OfV$X腬78w}uf!>_9GЉ;4eY8KLƗ%lBY:Hӗ]B6-ϿUk悙u@NmfjC~oY}Kp6O]?39ZZ0 HB@7u}S.H zA$x.PjP~kus- >$>*ۯXO_;i̷}Y;"Jr< hkm]nZx>n&旄$!>f1?v' npФBM3V'+&]ߞ ֝IeTK qfjZ: Gǹ󡅰 `[.Dje"np|ҝ!Xչ֭}6'f8"Y2ְ0@jW C_t)( ͷ]Siuj&ħ2hj,oѶQLĎ{LDq;>ڪBF$j[+{#Ꮳ|KL ئMs&Ȝo2ä5螃7$ o^X31c%ɄR Ox%n;?hR{QD%y]=U&,6\K:XLfUF~v[3QˇKMv(bos ʉFrTZ5R\qu7M*a!ĒRSVY䋞NJ V{Nf~e镧'UЀ9? -:䪃M \_IQkfa־5T^L╶_)/DqD!w$R|;ȍQM.U9.kD 9O^[ zjNzqD$ADZFw! (F9f哭@Egpp>ͩ0ZEW"*&*z0 [9'"hQO898Uwu,{l[Jޭ%"6m5^(Ħ?PZn@l]&d$x'Ϊ7y %y6dq ˣ$AC04'SKEZ^l 9WR#eʓaK T~ά:_v9dc<kNmQ:e|5aRj8KZ VuKiCיp8coҢW6^0n2eqI}σ#)kj*W A#` ̯ߛ1C=uZָr ;+rta':+߾r)kt5int 缁![uYISnIrPDE~ {m?E.qOIe'^$a@}q vk6gvDn,NwW~SG9ϴYtI{zG~G˺kqJ?OGS2ĥџSڙR\IҞMRjxI)87(l B K*YQƴL_*B'b$3˫ib+r|)2u6bۇ 4I_ʗJ>NC/z;BwZ t(W|d]bG ۛOUnV);=IK؉of4f[_Ǘ<ga0 cNS~ ^> .0o|e՛f(cf#z#XRhX̲* }W U צ;񬲉KA7S T+4V@3UZQq"K )ÛLi6Y qN5lu/'f#} ܪsͳ EaVU>@zH\3o"U5WZ:@i-*CzLc«ʡAsnJZʣpx9̖ÀQ-igcp ^KC?]O%%P)UtDdlbehԙ"v ,erv=Y[:n3X*F;}RbmtWV?p$Ev@K͘0|az'F1 j.Օ shDLב1\=0H4c'[ʛJVDWYIwH;{sg/kSy9{nOf1;PnjD :9]e?ݿK? Zl '誝 g- @^Zv/+Wo= $8jӍp >j\-pP[ cǐL `IɎhGP,g#cJE8e~b܍<9;IP7砍L^(DR Q O ~J+ϟnuEU`I10m H%"cxk7~ EgHhؓZuyX.J)'NkwPWqc1xp4yY-MVPЁ^{,& ;乕T-mDU~hpM͇Fn'B#\Fnbzl32DT5.]JõUT<&5pa,ŏUC5o+'g;`sEEv-p+2c-.8# ́CS0x>7iCy`)cvY…m\$¶=ޚ$S* ONBp(b|PW8 C=&t& l^Aq Ce^\}v7EPlܑgdٱ} n,͞9d aBDhSUStE,`RkGBfՊH?5IgljU\ɖtZ8w+-")]^,J7>x|3'/*1#ϸ.ksyJOۄw))8I@KTSlbA_FCmUi~iX ^v%h3ы~6_G120 )BmF !Ц31@i2ÅችL M5@&cgF-mG 3ۜ-g\ V9Qޤh^WI:A>UT*s0^jMVmjOLEjW%9S ,J< !#Q"d߸2J㙮ĪdrtJsOgwNU%D 7zZAfCSH( I+pH̿[B^Vc- ڋTG twESb~ .#X4}_2j3PxkoJI_@T ;U>MKN}'C8;3ʕ{GOclNWmXJgBUkf%!+O{Su^}"'׃sHwl' þVX8n-_A-9ݷúk "`j1&㞁a>#"BeaR'2O+Al`6 svvos }i}IJW8RAC ɞ!' ֽ10c5`5LSdDsȠzx[W`=0/UW{ ${{t 4nz3ai!H}"App n@,{l~ԫrXm̡C U/5VvZ)^8[!.\D="bxqAUDn_z}\X?&u64x3C Ϊ(B<ҟW@H⎕:<\=ҿCG@`ċDwhTI z)P!lUlԵ2nDTy>َ(b.6AU3Nd}8` ^uvFXolξgc^[/엽 Tyz~>BVh@ dv0ln2 c!/ϊ/o2>Dͧ)MP2Lx7 '۟. u2ͯT4D6;0 @3Tw7++y~9\<2{ +%To{*'Ίr9d|O:aoQh ~@PdA[L*4λV"]}D'2]ųOHs@TQ8'Έ6RٴQv q|l(jcu0oUH:=VaǵЕ޷B,fiSV4Ҟf+ESp\yEhU61E .~ħ ^Yޥ-I+(ěgQWS5A!;O3`Ez҃_-J*)@Eq\ ^z9N*ɇZAZҝA1۰Rl5sT[>l;{UtA4kxމw{WTJĺQW(r϶y%]mK(*ny]ęEQ?"/Bޠ 8$Oh{ƭ=v̧ǦÅ@lv#4=|pL9N˓:0?w5Pe ~"}LB~,XT@q&;En !鋴Sߛ*,ܬO3 Df?_':ܿ-Vd& [`W_JcY|޸68Y}ǞeL G;C,g/낁ejJN?Q40xHl/LPG`Bz9'ѩƢ&[y#_fGatx~O Dֱ$2mF,Tnw!J#$)"64XE_Wkɟ̹; Xa$HeJVxd<[T:|/un-·ȶȈ9LV/3f ThbR8{7Da}})cWUAaYG(>†TםHX,2Ey>S'^k‘jq~oU#+Sʛ΁l!E.O|æGu̮w0ށlw1{F"L>ĤtK`@a鍑 ̸k?RH w旳}CN*ߎG Z>`طrCjFm\NU"qd+qWOH_@s/ȭ<8r%lj>,\Eax-Ne_qӒ Q'7.C;폳 nѳxʩmoEmp_YE ~7A{$A?؜|Y%[v_Ub9d4F-Q"Fk]GnJNR% oʯy7CF.7PBv`֜Y{%)xǴB&{vsLudn[V;m#6j3T.B8o:4@@1=\I)흂8gi}v{E:%FXJ~2am)s m+__s zKoXA`%FY AA. ]٘I[ir&be^R1(t=_қ%Kk3!-)Q.p(4(|f5̿mG=׵ӟFH7SVN|ygH)hSXrHhxI@RNa \UImPÓOXEµzWPE 0f+ b=ZKaM}9  ۑFU%}lf?ty5&7N)ڇ$ 7T4Ec|Q{V FL=IQ#PWVNѸ%-[)0V/9ebhD0$rg7w\n0xRzkٔm1q7\;5:PzS슡jYpW-k˵K3-%5!*˸># BYb)޿:oA3]R{Z.剂o9٥; T낤+v g~ Fn#7z9ˮ۰6H~w;G_A>*떺먬[dFsm<`0iM:ȯK1M{o>4V A٦9A-B+a zCA84у3ΑIN;I`% (;\u]`ӋJX3Ƙ,ֿ|"xO[Y*t-HfXu*>~"*Gꂶ74$3aF_Z6xBN 5DnI֜T+wo2zi7935^ӥN:>a;l.hćBbn\6cfZ_B:'cDƽK _FaП,;oGH Jɱ&FxS !DM^uhr ٱ4$Ue1Wk;:Yr@$iad]_̯?V-谙ֻ@9U`S.nL3&3yB`z]=^LO9W۠[tRA&X azz:շyUr㦶M(%)sxec(-QH(ߧB%$"~Gy qT]2kњ=Y}Z6ηCT!ӛ8c |wN^C~B/F+M:{1>j6+@#(boȘc({PI$ثwJ]+z.w4;-n3g}EaO{Cr^MSGڝ=u@c2ϳ21bAE0z&)odu\q,!b4X,&+9eDN :MQ`m&ժ滤.?LlҙF R;SVg.`; P2 {mьE6{! ) `$F^ijsaIbN,QF ?tV=ueqO7 M ٝAm|N lq=ZR+[i.t"~ҁV= ZU 0 7 IZi$N]grh zх"Oz.o@iz14Xөju]W r[#⾭0XOkE4TxxmnJC7 Z Dx~AǖɖH-Y8cǻpԡ7ob(~yx ͗Бk̈'#+D74Fgby{GἿDZ`W($si>kaP= ԋ*w}4V݊G*^ ~2%]Ѫ_PBAu2I{*c$Ŗ 2.j.Sω ݡߵ `)xŋ/|%;iJBFٜnh A{Z֯ɇEݷێzFjZuH~d:Q|B硌s&:rڅQUh N gFN#o"83HuCw~ 7W\Redr5LBqp n\3ϤYm ڬ\qm`6l6rAHOv|CV|xbq$,5f6LUܐ0A{Bg3 1w7'aGp$D 1u2{ L|.<&A"ĐO͚uiKf l:DZClyFaySX7f {u6Gy0&T* fbD;T>ۯ+κb>$Zhd%~ vR> 8M⥗ wOvWeK0nz[L#LzF;Kg,8 .wҁX' W8V$z?dH*1 1Z9HUӛꞤKk4SyIҎ:xޣNj%N . >SV m<,o e,W~ħ|?.]t9m.TK,#LGr/2RP=0oZx3]t]FR73O A/JMrIkA-fkEV2sh#'yX3bw^-h( ~v.~;0P+mgUөl3qge%bAѫXΞf L w$f! Yxv4׮ȩ|].#$OaVXxVV,\1Vb2[d`s0EPD}]zb~[7<Smnli$@M%NvՆ'˭ ~OGfWrPUvurVn;=Xv)adt}j='=NaO01n2Ҝlg#_`A:Cm."y̼Z:kbA({ҙ-DmmGPZQ>}So;:Dי~h5͡ V0E>W+(|P<[EF]0O΄"WH4tk!uknDl0'/oAlAWЀ~JU |3w%+76^<0~03b,೓yGˣ1tmdELf\G)$^OrQ,PC +"BuvO*%~dF*q* Lk*,5f-]0(; AS2G Q$V[ݑz|| n$8)"Obk9rV].QʋюK#N0mY .ɢEIzɳw#DPl CdAjL_jn6[w'*n<904[z/?EglCZZ>q,zƠԥ9wR?4TeBS@6ȻcB|PgQ,Np4Nt)g2k+#(HT 8|^H* F6sNs:hwR_ּwR!J^Iz0惴x ӣ0!ځ3׶{^E肒0AZ@c;޴?'=?i{h}fG [33qnAbvIb쿪6yy.Ҥ0w*뭔[ Z`fY=oEl+msk%@2N_wL_VT?GH8WfM >d3;ƥftJud[>e٢VR?EOZqF}uK壒gId8DD%-+e9 s*- JFYVV8a:.<6x l| )1,Ӎ(CJCЃPv\fjkmv&MC &ڗx2vy>0AhK ?B|M~;9 ݙV/ B(iGax+4@46 G7T_Z5wi1C,l޺ücYL"zojm^u)`8:Ub+?y?E wֿvP"bǍ+#']3J1r_yI852n`נJ2M8(}D^@Ld(Gd#†l*>C6GڧSJr9=S ޲ZѴi޽9uZL݇~7@k]NKhxOzjkozqqFJdbr,Na #5՗v8$7Y߼ BƋ̴2dx4; 3n}np4F7W|a>y9PIG(wǓPR0,GN|lը8uN]wq |N֣㲊4~~F@˲S­ + ++ wNĈ;p[_5-TDU"l{w*t$d3t P36oSޚʃK`>pM\q'J|LNTt VZK^Z,ڦ]T?@{qQ݁_;+I٭&V:\u$+zLڏ ca\D{i)p(~xrŹ'1:QIaW=@׿*'DQJG4q'klPXHRWr~V.PvD!䅉_ymf}qD =ɽII{LWPma1E+&pFs(t뤴-⊎bV#̙IS#6EA- s!)P "t>LrM2gA\׳:SjmƠI1R<ﳺ-&<ނ +Z3v>$Ŕ :6!v"Ԣɱ!G9=jDb$>ufm!^Qw%VM_"$sAEҴ`4K1XwC6 {7u5H4`7D!G[KfRpN딦-t-B(IܵiUɽ;/QχT{##e(Z֡%(L=}7'a,~$U`3 ȮNsX!xX@Zm|ES _󬌫Ǭ-(a" {ZduZ9\$pP}q0 өW3BY] &4]]vP^ꡨj "9d*L%*rE:uKQawڨ}Wݗ5A_* b mhFk1-d{yzz~`y;QjJؑ;q! tJ P-O_ jy:0wxZ];̴zV穸4>NWA6K}EמrfbiU?LԴqEMGe >]5-:z*/cހ[yЦ@Rn{춅|cK*sC{'y28`_-2w}OE _\aB$B/>gI~t2JÁFlK(\A&vvAkw嶙c݀Qt}eJT[?Xb