IX; foreach ($messages as $id => $message) { unset($this->messages[$altDomain][$id]); $this->messages[$domain][$id] = $message; } if ([] === ($this->messages[$altDomain] ?? null)) { unset($this->messages[$altDomain]); } } public function addCatalogue(MessageCatalogueInterface $catalogue): void { if ($catalogue->getLocale() !== $this->locale) { throw new LogicException(\sprintf('Cannot add a catalogue for locale "%s" as the current locale for this catalogue is "%s".', $catalogue->getLocale(), $this->locale)); } foreach ($catalogue->all() as $domain => $messages) { if ($intlMessages = $catalogue->all($domain.self::INTL_DOMAIN_SUFFIX)) { $this->add($intlMessages, $domain.self::INTL_DOMAIN_SUFFIX); $messages = array_diff_key($messages, $intlMessages); } $this->add($messages, $domain); } foreach ($catalogue->getResources() as $resource) { $this->addResource($resource); } if ($catalogue instanceof MetadataAwareInterface) { $metadata = $catalogue->getMetadata('', ''); $this->addMetadata($metadata); } if ($catalogue instanceof CatalogueMetadataAwareInterface) { $catalogueMetadata = $catalogue->getCatalogueMetadata('', ''); $this->addCatalogueMetadata($catalogueMetadata); } } public function addFallbackCatalogue(MessageCatalogueInterface $catalogue): void { // detect circular references $c = $catalogue; while ($c = $c->getFallbackCatalogue()) { if ($c->getLocale() === $this->getLocale()) { throw new LogicException(\sprintf('Circular reference detected when adding a fallback catalogue for locale "%s".', $catalogue->getLocale())); } } $c = $this; do { if ($c->getLocale() === $catalogue->getLocale()) { throw new LogicException(\sprintf('Circular reference detected when adding a fallback catalogue for locale "%s".', $catalogue->getLocale())); } foreach ($catalogue->getResources() as $resource) { $c->addResource($resource); } } while ($c = $c->parent); $catalogue->parent = $this; $this->fallbackCatalogue = $catalogue; foreach ($catalogue->getResources() as $resource) { $this->addResource($resource); } } public function getFallbackCatalogue(): ?MessageCatalogueInterface { return $this->fallbackCatalogue; } public function getResources(): array { return array_values($this->resources); } public function addResource(ResourceInterface $resource): void { $this->resources[$resource->__toString()] = $resource; } public function getMetadata(string $key = '', string $domain = 'messages'): mixed { if ('' == $domain) { return $this->metadata; } if (isset($this->metadata[$domain.self::INTL_DOMAIN_SUFFIX])) { if ('' === $key) { return $this->metadata[$domain.self::INTL_DOMAIN_SUFFIX]; } if (isset($this->metadata[$domain.self::INTL_DOMAIN_SUFFIX][$key])) { return $this->metadata[$domain.self::INTL_DOMAIN_SUFFIX][$key]; } } if (isset($this->metadata[$domain])) { if ('' == $key) { return $this->metadata[$domain]; } if (isset($this->metadata[$domain][$key])) { return $this->metadata[$domain][$key]; } } return null; } public function setMetadata(string $key, mixed $value, string $domain = 'messages'): void { $this->metadata[$domain][$key] = $value; } public function deleteMetadata(string $key = '', string $domain = 'messages'): void { if ('' == $domain) { $this->metadata = []; } elseif ('' == $key) { unset($this->metadata[$domain]); } else { unset($this->metadata[$domain][$key]); } } public function getCatalogueMetadata(string $key = '', string $domain = 'messages'): mixed { if (!$domain) { return $this->catalogueMetadata; } if (isset($this->catalogueMetadata[$domain])) { if (!$key) { return $this->catalogueMetadata[$domain]; } if (isset($this->catalogueMetadata[$domain][$key])) { return $this->catalogueMetadata[$domain][$key]; } } return null; } public function setCatalogueMetadata(string $key, mixed $value, string $domain = 'messages'): void { $this->catalogueMetadata[$domain][$key] = $value; } public function deleteCatalogueMetadata(string $key = '', string $domain = 'messages'): void { if (!$domain) { $this->catalogueMetadata = []; } elseif (!$key) { unset($this->catalogueMetadata[$domain]); } else { unset($this->catalogueMetadata[$domain][$key]); } } /** * Adds current values with the new values. * * @param array $values Values to add */ private function addMetadata(array $values): void { foreach ($values as $domain => $keys) { foreach ($keys as $key => $value) { $this->setMetadata($key, $value, $domain); } } } private function addCatalogueMetadata(array $values): void { foreach ($values as $domain => $keys) { foreach ($keys as $key => $value) { $this->setCatalogueMetadata($key, $value, $domain); } } } } JFIF``;CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 90 C     C   " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?S)h8)(4ҔE/CI@(=$QsKPdx4f@ ݞ֍d>)F3r(OȦ: _4g7Z@}hJyIE(=)tI=(j]PϥqҌ{уcڗA@ph=:Rށ&}(hN3ҊLs'Kj0Ah#ړ(h#GK1@ ӵ.3Iv3ހz;RcRs@ QQJFZLgKA@Is@ I7ҜP6{S!9P;M=: ( Bpi=)(QE֖nzHi@1mbGZ@pzӈ)6wp* &);m(.JTݼHO(2) vb ֗hɥN(28操iy ϵ!##]&ѷ]“#4d)4W;##␺֤j8@8J)@hH4qKHPh uncG&HH{R uQJKWd}g\?,̝*ھWk7׮t-/N-C|g+ȯ7o}CERn D[:z_~Q<]ZY3bI"P~|#/,.:HG^Ct 7(•٭S qB4 OJ)v\ ` S=)Hz4)1h(1yQI@ EP~4R@Q@ iR~R@ <C 8 iw`RoPr)h((-u<@4@R}iPsi)Xf8L@<ilS@$AwvN WV ,exЋg>"M}C7DEذ$?/VKꍨD2*~ktyr`ݒLvy4 ^-.RPJ* _szXHLl&sS'di\L* a=O(GF;/8-^4AOZ=.bB=^M99_f5Z~X /Fg&hOzDŖi#tYD_70}0䪓3u_mƕd >N{_eKC6*^D|AOH$ ?J g$|KjӨGas+@F bxN=,&S8ёe-5OzR"vΞ֓v ┞j9FPc.KkMxJ;kOi7$Q]3@| ƶpX>UQN9]xc_ӵ{) W3N:V*lVs,%c:zw?z21̰˴n햱'þY5;Mڧy}>keF;58Bnf?ÿ|[0rO-smW^9٨ibn1"y]H?ZFpf= ~"hX/4V0?W=c_no\g-YU%\=JH3 ɶEGS2#-(SJM6xڗ|C}jiY4-# }sqcmWSvr/f/:$wGFrȫG\gd:h!*g^Aǣ)XY,&bI{|SN |m>Z=I+Vz( (nq_{Iz4OJm;|UΟi$3A%7U/__#`> d*/w^&5 Z^3k8RGW:xV[|ú߉ " ,(q_~-uxv8$#.ܜk5[Tl0ZʳE"V Gh <Ъ\|櫇>i~8K % [ ~|+%_ilhʩD_)pϮkdf#0na@+<-+&ٶ};2@a8#/~~ ]fN!71)p@*vsqYf9l*oFMkQg*tnz^|nA'}k?f_ TgNk_šW/Eoi%am圓屟j1'?*rtm ha<|)'vi• ARO}V\T lr_R)ia9d }n}qh)gPg4/oZ2)3◠:P4;ޓAa@l Pr())0vuѠfR3W6+gk*/keQI?zYl"Ҕ|0&񝵵JfI! r*gE!;h/b2Ѱeot`ew5ؙ-e m<ݘV U1e[c&JEG~} ƾӣƥl䈠@ ׌J塞6V0 _ZZ\36&yl3a:6Sg\I軑,4|-Ϛg4?$4\[Ԓ0)w Ὶ9 ór@ *^Lk5ݤi0a{}+7_5=F ,n-t-@ #y;.i{쏄g0ެڸG]OOƿ]|14J좾s>.mO2Y}{k].8el=+<9Z[{k֗4 )9=ϩ2FچɔQ4b_:}k-,Btח_u_M*?)ï__kOxZ/uvKɞiX!+> >xfmAHxK.#mX\wd3%^M[W#Ğ𦿨i,h$S3_O_#@hnEPw44RgQڌ EQEQEQE>`{PIzVI@cOg#1@ ҅Mc@SC gm;E48@]4f90(9#RqHFq@G&# {PiXf@ 8W&:WOS٣qp}*8N+8LU=ŻQ=Ԙh҅F9@$Qz(KI߭"߭/4R~4~4RP:REQERm=)I@zQ&)GN(R0;u#>y5t/EzmS7gj!@1sExyd{v-7q\q3qj@21i$ @!s^VZ榔VB x>OφCMt^ta@g^uvԍ9N&T nYC9=j8dl썝%pW^z]l54xG]R@NԿ'RP ? N撀Rc)_Š?(h((cbO8fH-;ڌ jM)y@ FzPApygѸPwr(@ E!8q@ ڐ:A҃Ҁ1HOZilcYԿ|輞] L 'i ^ʥڲ+Ep%5ݼ7mha$Tk yMwZtB+XөmiFȚ}ɇ̲ FǟarZ쪷>|xf-Fn􈢼R|&[~y;xAҮɨj!wZ>.9Sr8?dxT9ݖNI`H(^N}i? 9)Pj? O€h€}ړ(h()h((|ԇ9?|S5sRzѶ9&ΚyR=s@ ҅ӱր49Ө55%Pd9R`Pg҃i1NhiGJB:#4+]RQ(ZͼW7L 砬LNĊhrmܵBx# ]T`*~.\3VyX R+ckN\]䍵Iq7Oi9yn&#TS ^{u&r}ƟuPMwN.3ZnZcyVm-E4:QTMԙ&M(G֓SON4 P0Oچ8)hRt4€ƛ){P)) _€Ɠ((h€ƏƏ€Ҋ? (h((i>7\PM)~N @ ҍԩ ┞}8E@K(:QSHM74Zq\W&pE#T7r{)݄ -w{a%>3x<qSҫ//ǚGͼ`h[ewd,jD2nG5D;ܴ*,ҽi+-qS`Ϊ6G3X@#5rqSb:!e'@cq5M77RFM/^fQz]zV;V;^6?آP;ٸg:?Lķʼ䷸qֱ#DgrMkj+>fќm-->T[wAp5 rj7s6 RH}2ixmc&@Kq@ n(4@ <ө-QE5zө9~sHz.yPns@94QϵPEPEPIږa54(0iA>MQ@ 3=)ԄdPcғQGN&(ގ=sOJ(SX⃌PNnUa:s^=fk%~SB{R,p1SysV_+q fQGJiEhCv6pۉ8Z;V֛s$D :S[ݍq= /;=~4~4҃OƒF(z_Əƀړ9/AT~&==9) ??Z)J()h ( ()ރ()'NQE&E-1AZUKL4Ҁݩ4`F842)6Rv&@ Ƴuѝ2auG&jdNSLV/~ŤF2:U(ιl?FAۚ$THsڮTqZP'j7sypƕOn+Q#uDԵe}*KܰKq<tf+|4*֧=€bz/J$ҍ9OYl;h)֚:皏95cpf*x!.T;ԑW`%U9_ZJwGIP ? m/@ QGE-NȥFy-Q@Fh' RRg.}i:sGjoRE.FM=l@ ) ֫.*qd$d8;GedKM rǜU픎ӵ+J0r8W}3R;qQ }JrF{T$޻֦@Oh8!TɅz S%ս,DkeVҙix@[ҡ-+rNI&hqVc⚱abze+%2=yOjf}N*NkhAKH'CzM8RNhGJn1ޟM=4^"iM;"):)M)tP{E'@iR~r) %>(Zu5zӨ;QsGjZ(ksznJ~ZCZP3Fy hR:P(c7HFy(M9drAZ> 囦6heuu<ʚm5"Z4(.=(iўG`h&ڝ@Q@5өbzu'AK@ == N(ԟ-'@ I~SGEPE'E"SW:-'jZ("~(Hܵx~4HE-'&9v(4Fy rB1Hz4a 3E)SvE!9 Nh+A1T[ Rq皂n#&{ҭ7mخ~׹Dg*3qTom:Pr*[*;$?%$VЌ2KJc'#_ †߸ZɞI_6l2zFt5@^ć*|r{w'r4 pH"3.IZqir lS'Rҹ]8 }[paqPAiTkR\#Rdg{ fI/Q8swЬ`zmqtn^v *)#u)wR's\éJnz3@Niz(^PL^s.:FBfLLSNG4QOE.u54(QNiNKIږ CҖkΛ88ڝJzR`Rg49@qF@K@zLiR`f Rn)2 IP{҃qNҌ/k@h}+Sqnƥ5?#$z95ժakԡKim{xϧ5aP\\ş"Qd%]|:ܩ) FiԦVe1:dz[+X'qgS٫Jp>\?QPhȈ ǽ=>#ڱ+uJk:EL/J]BU\zWYVݘ؊mnd+zV#$d%q2D'>o^ ^գp Rvaˡu DSԏ^3xn;i䌼wwd0[޸8kY%ԊP\YF9p*+vZK)7n(x}uw3iF\z b4ȯ&3;{WMxXpd+M֛;[irHc5kKrhCȑy* FDGC?rъѤۖnmHr[Oo XW^ƃDVV{ն~v +j[B zt/4&(&Ӣچ4ʤ`xRݏA^ڎH@#)ig(Sc4E SqP1@nPESXfM cQP? mO›E>kuh )8ޑzӨ;Rv<(7ߣ8JÊn p'8#`E(@ \HI{Ph&}($HsJlP1K@ 4?*Ą0jWyO[e<;Ӽa66eƝ9ԟ#ViŒOҾeNn܈u{cK!_}N҈nwk1xN)jX\B)6iRKxG9^xѐ*+Wb33&]+`s:b;#\TbJQl2#P$*X2MsN}/$B$ay5ՈsVi^r6+y@12 'ޟ^æZurTgUF Ͳ\nm {M';)N7К)`\+|Im[C#KrጂcެOh5 f2ǢV'u ak+Csj=Nk7ڴVp8y碓VBPM$w\j"㧽kOm8jrb#:7L<;j+,E.d=+p}ڮjcmR6p.@0 nx>{+?nZ-WA!}ײ km8 9Js FrWVgx*4i_Np{@5xO;H@MĶ9]u5wIz @IO(ifA9 @ ($Ѻ:VIOPSq@g%>j@)(QIPE'@ EPEPW:i9--֣u#}U;ޔ@2qNviNviGޥ@ ތv4hw{Q3Ph$M—uM¡]=NF*)15}ih>)|qdXgޭޫ$o¾ԼIel]4ms_<#kZFڛLoIǡ+kGEd0Ϥk"tc*\nP= bjU< H#>V^o 2Rm9 Bú$Rgi2@Xzv>!KUB'a"vw෋.>"zS{]B{\Eu1>ؒː (TqXڙC9.vY}j"n+dus#FvtdWI3׋BdK AA0)P.B8=Hy'R b@5iPEP~4!@ii? ZOƖ(zө֝@ ږ-QE5RqV=1JJ:N挃" CJv6 Z]֗`ҝM N2iq:m+qOGEvm'SV*N1n8/xmc+Hʾ s'̍fjO1A}mK&_4^-a ?fi$u"hn%v+"߮:t'F1*2,к`<zf_>_xt0brC# \'+ү*e\.q~:I}F{9iVݟ,W?xN0jgs<=_j׋ =JO Uۯ9"*)RrӯF<½I;#3Kx/5fO v=V*clup+ *_**4zZFy8ֹjϭ~ C,Q{}+kʨOsхU'4(YOPi:vPDiqhhEPw֟E2}2i)P(NRu2)PW:ii;P:Z(G͚u5P/& :J3KIIڏJ;PE&EL(ݩiEc:_'m"H#Av`)DfpUk;VXU<Xڷ&_ڝpwۧ^b[/BOx_+\3`<&ZFn./c|SּIŨAK5p㞄^B&f*|.3  ּk+w9hV6.eeIlW@pJprUBܑ^?]6PWI$#P:v=?*,n89bZ+V;=i>6q so"DJʪr1E'+FZ=JptO Ny|CnlD:>wb.鵆1O5b Hf7JDijʏysʱ C;m4*ݢFN J^GĒ䪹ǯR{}=清<*pHq8GMM[Z(ypU(I^d3,." ꭻن?3|cox<5oudR} ^[-5tHѷpvד^[ܗ*$,Y,yX_X|S\1A=!.rOf_a62z@|'>( &HF9JF}kqc֌"(ϭ# U@<zPѿޓ(s@ zRsGw@sH84r0O4c}'KI&?uQ@Q@ ^jPs֗ގԴ-PXPiI-!8Q@ 'Өp"L;PzSz}Sȣ 8`7U{i0PҬc7uWV<ŭN2C|R#IWZYKD!"A}9zv2*G?ާvsKM4OJi$R :fNi8L>VT۞q@΂aN*wh"4)"ak>M,X,uHxɌ3 TssYٕ5Oֲ.tA=+WڸH8x5+uI^T+í*;i?-*T+N7>dcHUV2B"˟⍕~(fc@A)hIq< +$g ګ&aK#[|rxO 2h#pI?V9`->.ws]I 03:dս@<(ңV/$:(~Hk{fNgE7bxHl5i/|ǵd = 5c4Q z~5 D$w‡~_Ҝa[і#8?;#+k("uV[* ?*thqZ[v/Ω4 vAOV c1ʱJ̧+&yOOjrB$~ĺTWVs8iQ懇6 885XlHֹ?-pټv(auCHE 0h#"LϽ>G4a)@0iZuE)q.@&r1NsMZ/Zv*1 }'KIPmii? OƎiPE'E"SW:-'j3(hkR=@l fހ=i@/-Ƞ'4E?<▘@2@ 3HN{~tsNϖj)Q 2,N[916M"#RlWw2vf-Xh'i`Ď1UnC3=jW" Wiqu<)J OgerHj3jjjP@e Cձ*2: Weϗ}:Rv2;)UޟU@"Xq{Th41̑4*;ulWF45֣NoZMӑ֮*ƞAP>CX8[ZMO"sGBk1SsJ7J 9cMn#Mޢ7(9N(-JRg&NZԣ;SQJ3N*u7)PW:tF9-QE! 2)@4wM8(fp(=hG@ IڏNhhh֓ZuԴ n\5?Lw+gҎbZ)ǭI$K]ڰL&K@/e}R04 H DLIǥatڝ-pqNQXm%7pyj@@H55מvC[r%k]9<ʹ~sHqe6]22vʽ7=w[Ew<UuII( R^tީ9RI _U$Q[4 )QU'+\&>؉6FiFj D~ir12+;JH%H~bIW-Gy3H!GjSQQT%(h 1@i jUAP(a'Q@ Ji/4hO"]l84)v{RmR-(@ IR@ )RzEQER~-'G@KHzh~cݼh ? LISpJ8~~;PNi@u7#֌Z_“J>_Z?_šޗ#֐@JגȄmnFMeо#hKȭS$eP]R0ps.bPe#3]ʙʺ)=WC9s-êFz5:oF?S&εRgޗ8㚑;wQMQu8z2hou'ZNNGZLҨ4֐hϽ8uEZ@?:rwrhޏZ;OFJZOJ=i?@RR EƀHI-4RgPHG' ȥ@ S? CP) O€y() O€0)y(}(a/@ d֪`/[) c\bUiu=u6$ߠFGm\泦ѼgzקJ<ԬqO2c'j])GY(rNճ4A6 -* A Ga84V#s>zT6kRZ!w#R\*t5h#(AVbഇw^( sxH^H;[4ͩei"*qn81m 9nҮnS򹴲:mqzө: F{RP)oJG4œ3@n`3J^h{sF}H9IIP+՜ѓKd5bTU{ qPE#m&hɣ& ZS{Rn#$Pmn'KRn#'~`/>~gBM$`6siH[hq@Җ Q:R&6OJ^;R;RsPhGh)=hր(AҖ OƖOƏƖktZS҂3M8tFqҀt4uƂpiFhSjOƒi7PR)7QJ_ƍJ)A{zsi7 P:B2hԇjޑh/^Խ7P7 sI@ Fy@8n;֘@;4gu3pOzR(RF4@#:ր1Mȥj[ J8a@w(ҏZ? (ht)=h(MPn84wEE( P ( (Ӱ( OZ((hQ@j=hzE:4Q@ KESWP}ihMu4(^Q@ EwJwP4(Gz(EzQEQE