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 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (Ph ( ( ( ( ( ( ( Z}P@P@P@P@P@P@P@#t@P@P@P@P@P@P@P@( ( ( ( ( ( ( F@  ( ( ( (!$z3hω4P q}i]۲)M28ݑm|'++Pf mHk/jZ6Iĝ&b|++Q qװ.h.糝\'viPA5OPW gnOS)(\d"i#RfLvkubK)-OGҭGGW ˖'iLL!UNpkx˙U rYP: ( ( ( ( ( ( (6 ( ( ( (wž3ķO[os+9˕\֕?k.Sǵϊz;JWUsx]r:Y~˩,!k `"Mp&IXew'=9%9w:z$~R~|~*lzG|mnMҊu]b2<=0Wn~Uad7{Kt{j<u@P@P@P@P@P@P@P7JmP@P@P: KxyC\ b,,.gYt#ҦO\j9;jB/@Hu;hwGJ*u?ɴ C`\5cvFnfW3]6< S-*zRZm9LdHf%|}p9!P^mX: ڂ=c-)l \YJnQyW64֤qJc~W~b䶣ӎm,WPv*+/}^m,DŹM ?ұ{kJ*b],@ɓ˖kQv;YMYοs.1VUeT'w0jssw3pyd9'fzCsF .dc#Ԅo gFs&iMWc>ڧڭA· z!8 6INFkֆu@P@P@P@P@P@P@P7JmP@P@ bLPgUD?%sWQBd;cU=5|Gr@D?c\1n<[5ޚG?A Wr֋6]AE/n$@U%f,P>EI f 2Rtɗ*OOTK`V;c =艢 wM.;Q9eج-qδghjX-^N8NlbucKVpjIdI:c=˹#|e VN-C_$kj[X[hPvUAd U80*>e`6/N1׽dRY뿮OԆMQ@ ==_#}h-ErXn ?rjvݙ݂I=rؙ>Usb9Vn1YFY葬rʲL~hܟM㚉tmJNʒWoUX?0W?MݎV>e?-iZ`̒\.ӏJZۭNb!VwFULMtԚIn!H೶")@1  _ɭ~$0--8R^k_n$SxvB@sTܪ7Z\<ӏ2Wm$$vOʝ";|IZTwoM18 \) qzz=9LW,2MbKqz4n|d;1ִ0@P@P@P@P@P@P@P@(P@X"8ZxIio!N Ǐ0{Vs(Sw8yȕE3O㿨Ylw[C[IOO*zcֱ\ihEc5;3n;ǰcpy''J дBp[={GpԙJOݫg :eff^~?D)l`t at4PyG'@-m &Kcb4%w]pA/6F"bba$qʂWs*V|*gc: -} ᫬*ّĬ2TwKjY]qUW522taKopQC%X ЗCBƥ[q2P$jZ"ЊlB9*yᾞݫlv/tt>/[i|P30Oc&Һ6kRύu8A 6s8Up(k^.գk|rP|=U)2^&KĒ;XK!J?JRmS@}:stJm"dGcҳnWs[㢵cɸ3Һ/ͩrZN';xnCbUdMTw+R(C1ʓi*R}N9.$;If#@ě^i.UjІȓS_P- M *> J'c*zjtIrN}+S>N]EYOWcm?+qA3صb;į hkC+iE˩\,(~*%KBnWrն_-# !G8GY#Ԧy':8֧{ȉE>9O.10;Jal.c@3.Rr@ ( ( ( ( ( ( (n(!I!cK1=ݵWv>yvֱ=Ąܢ^:ʮsMp.<;my!i㓟Y[Hm7N;@y`5e'{"O!ڱȪ2eΒ. fOc^HnU2D[Gs@ Z}P@P@P@P@P@P@P@#t@# nǞ_)ҴlXV,.wa+{H=+̔KB8"l*$TsIBΕ0sF؄ Ҵ9lgY6=kP cM+#}*ɖ;I@Ā! ==is>n]FOj|mޞaY μDi`~})Kb]fgnAҦ;Уs E SbCx @C" n9(fjQ\λ#:m>9ȵW{qJ82iu䠕}-qdžuC4c!F3)ad\t'ND (u@P@P@P@P@P@P@P7JmP1sҦ[|/[mWw 4PUڼ`{jpmyC<rEEF_ dDJ>,lv Gs#[X6 i_zaR} MU8$[Gs-Y %fB ; Y+r)6H")H@79u6 Ɛ3{-m0獿'xCW7_{4ksI5gcExc\<68UXeSYi] =;ָ9o.cUn* dtZ~I1ۡ2+ʰ_TdZD (u@P@P@P@P@P@P@P7JmP=bz]&oҥUr๤2\ I;ǩ>iXpeP`݅NzT)rU*ʑqA3s$j(x2x㰠=n+h巘FߞUrWrѸMleyf^չ#/REfbF6g> fCr}coݪe;@U3Rvd:4,NlTcJt͡xA_t};V$nhN7;\8:Ta*:(FܫEf=ӺXdAo\qW\#Ȭ|)N敏ٚb~]nȯ̖qU-5fkqYVi>cו2QGp2LdjV vQ^稬[k#XFXiObZĈnfEnAy:+sc⟉VRPÂ=x՟I$4tẄp+iEIU{LJ>"@4L(-q=kѧ^QWgV( ^팶NOQ֯J7NVflf( ( ( ( ( ( ( F@  $닧1 y׭y 9'ƲQFxvS*9⼉n}}$JȦncQ >I-Y S)3Q@]遒m\N)r]+AY1R}y5)36|Xs@-ʶvV># `gԩ'%dYʅ;p@*]] Jv7ݰdCZsԡzሴ>J'vԥg)E+21)fٙJQjilc<Hk0W8%>gaךh+ix@x$w?N3غKFBA9.y)N$;Ty8%ķLϼk"ɥ,9npT;PRظTIYijoilvG OJ ~}+ H'6l (v ?ֹeKS4.hO(#A*vw:!>h4/<`{n"J! >` trS=o:iZI@xׁ5R|;bv%I$gr05|rKV hP@P@P@P@P@P@P@Ҁ@yW$iLük#&όWyB3Cȯ2{UFF.n)Csy!qq%rbB胎zLwVxu2<.B=鏥vR6VEÚ @IuSvGsèizJ$$jiTF%`+LՒoC> #f\2^-ʌrkdK&1w.qTI88$z l5+#Bex>6iS8\n +"+`C>Kcj)qr̙-\V.!3O@.WsZ`c@2YCS)rCJFGƲ+i6]؜-My=L^#ME޻(;ǧ^ ypLeV8v6rGl>ZGCiW!PK8 SkHrZ\9HH>N]FZɮ^qwTw3-ϙi,V犳̔ncJVWR"w12qY;Y:OcOh Nc&{Qd15i)k+_Xrҳ5%M'')s=z5(A `Sd=vSv4*|[-oIoy+m{y(1pGoΊ= k1v㍤֔9U}i/2DgsJkm~Tp}khpJw;/0J@jq‎"Q-$,i{jXDHy7v4[@羄I끜wb((e^15s+:GW}+B |kgSI Qiҩ'$^mJ%4q:TU;w߃g. l_u5<=Dxm/w J^Ʀ:ARbr)zstFn: BGhZա3rgcss]ƛG%l®"ntp> ( ( ( ( ( ( (Ph+EݞƋ_@ө?0ET @gCX𸺔%~-otm`tT8f^@pzGB`U-~N]L1[0±_lSӆ;:z/zRFM0F0@{ 68U@Rڞq^=Ű7E epNfwҫchǁuX/ <9Sv; #]'Iⴆ⨹cҵKa0k;}ϵtsȕ=OEuA# V]M Q&,_@Ǽ3ڀ.[f r?(؂9.ʪGu3F]Kaź1^]V曲;?yKgmzfti:KHخ|$κxUFWC&5lcڂ@@ ( ( ( ( ( ( (n(RxzPRxH>Q*捏O YМg!U\}+gsHf+R\^-,>ÏzyQ5dw>A-F%*6dӎRΥ2 :zVCc Va-|0dܴf07cLZX)q@ cTetg9fp*e/&VRCnMe%̬tF ju^*㹗!ռqxndu;k&@SZr5u_*8˯y~7\U+8F[lty[Uߓo1ŏM9yg_Ft\mf}Wg[7v=wIFǸNa<:ʕN Hҷ89Krj (u@P@P@P@P@P@P@P7JmP@Ptc`˒h|e=T1Xb p獏B&Tݢxֱ-,Hi{W*w=bW{j" ~( }ҝap. ֩CR-չߕY/$r,)# 30 I=-nEи/lt{X^dYߠXc#< *\o%FI,vFR?\ŶKHn-3U]T|9~K2DX{Tʖs_}]goS~Ú%ȕi#/.]iYu5mx#k|<R1ӎ1wGW4/t+ÖZBmP=Vтʬ;W ( (hP@P@P@P@P@P@P@Ҁ@P@2XRa *}4#|"KaX2*\SVg]([HT'47NP@P@P: ( ( ( ( ( ( (6 ( ( Fֱ7T }'p~QQ۩?Jtj#\@ ( ( (ր@P@P@P@P@P@P@P@(P@P@P@P@P@Hxo_PI94P@P@P: ( ( ( ( ( ( (hvmmh@6 mmh@6 mmh,ph6J6JPrrh@6 m@ @P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@