python312-doc-3.12.4-150600.3.3.1<>, ,fwp9|ua>t?dd $ G  9Ze {CC BC #C 4C BWC FCWClCF|C#(?8H9$:F G CH1CIBCXFYF\G$C]X0C^MbcCdefluCvz`Cpython312-doc3.12.4150600.3.3.1Package Documentation for Python 3Tutorial, Global Module Index, Language Reference, Library Reference, Extending and Embedding Reference, Python/C API Reference, Documenting Python, and Macintosh Module Reference in HTML format.fwh04-armsrv1],SUSE Linux Enterprise 15SUSE LLC Python-2.0https://www.suse.com/Unspecifiedhttps://www.python.org/linuxaarch64xT??M- z6N|$Aq"{+>U:I tV[P$7D"*) @m&^'W0cw^#YW)g1xM/ Uy] + _+ ER, BVHbFKrw? eb1` >^Z*xO  {S20}$tf<WbyO\`:z-Wz{Y%"Ik1|`|$A01; @1 X*P+ !B9 -%uAV.0 *i $+;T$2RO1]<s%7/ F 5Vn]!Q Xq# C9~10c8Itw$Y#$ d{6#H1 -7"iT2%9y!h_"O # )Rmcnq@.5a" *Ly6,@,"YZo#)R4IS =:&v/ VJp<| n$!CrW<'K9* ItYs?, t~V GLQ2MFJZ"O &6'E"1BvU zb' e&0_4 7!-o}# #Ej*>\LXb Vih'?Iybw H-0{OACx` TMyޒH,5fV nVZe )Xc }1C'VT  +0gRe#U%d~ +|bA/]"ZtA<6kI7>ґ(=+@OR 9=aZB2 RPP qgJ(c,;a }tk}j]aHiZg-+4NmRhjr K/9.}6 4%dF.c]*fTZ8Z)A] DLJ9M@^P5MbkTR(-cH,CD Y>qd@L+DeU7aVP0vja k<7W}A_NM J3нV*LMh;xV]b 2q.S2L3QR]Xd xrŹN5~A.^UՀO( h+hi>lv@$?4XhU[2=(r/ux@-N6_~݈T6nHQku3<KFF+z[(dW Tx]6>Oآm]9os h, R8TDe:cW:x $O+Uc@1UnΚS TsunB/xBOsa6QFJ;vGL\^}QKʻkFZF t9Ӌ~9h@;/bTRR5n7;lV|/=cF<OSrO6X$FU^drkmo7:iOt@w[]P_’[=0@ 8% #Bi[Z<fMbB_6(^l;N~mVuU uT6TvkO6+I" )PJ]iP:l l(nb)"K<D^u7 5K% tY0NQͷ)}{DOcDO;V&_3iXW-R2w?uZA ZH>[dTw1u2HO[e<W5Q/Nx`E{~7%+-Em,qES5pbKnj'ay<hTT&Z&E ƜdG'$AA큤AAA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤fwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwb7aad8d464d172bd60b15c06b94298f2b66bbab11e81ae1142ef52d586c43fb9a3816faa9daabf9d398ad67eb13a6c437ef4437458cf033ce21849a28a9bbef8cd5ffabe14bc71bdcd2a7a775e0edd66b778e2c4d659ec7f72f6cbdca39c4050667ed7b6f1f4e599516465fc9617d3adb40c60087558155e03eaa6aa3303b7a337350d047b868ceaf02fe43184fde22c0cdd9166605d457919365f3cf067ef179e03c96a6816979d7643add104aaf2e333990622483c4c38845c1e1e6124005670b6daeb77665a0bd536593baf7830c947cb3811119986ed726500defa48a11075e141401abd39e62cc17a9ee32232d59613a2d8e16df88018435b50bf9c98adee06f52723b9bad40e39994b5f2dc69248b00fece45c385dc564978faef193191635cca79e8e951655bf7da9b92bac09d5821e6c81d8f7dba252b8a6b51483f7e0812dac74d45c6290f97c7d6a0415bc73f2c8c016dc9b872ff9a65c27916cf8f9ca92803ad69092eac297677b077823eed2d9a76966e4f5009def52609402d84380fc5c67e3b79e62e3b0b24beedb11fccb1a08e2c5f65c060c57422cdaf178239e8e726e704c04d3a4d1e48cdd96b99342d172e1eb7e64493b6430c494588ea873f4b72c962d4081f47ab3f4a992d9de7ab19a367795c95fedd5603cb293a7dc5cc49cf1ca3f8dd099dc72916e94505a79e7859ca4473a080e96789cf49a480f3f7b4002bc7a7254e9783aafcb29dd78ad4efd0b07b34cf91cabd7f661936c157a3f24f66b92827537efb086fab1e3dd13ab08f91d1a19c9e39dcbf4307035e1cae1ee5536e97f2d823023a7e141d92b3f33711b0d6bf57a967efdc3d6fdc11decdb5b7893d8032946d74b2308a24a58b5000de00aff80c5b3ec34f6dbc5337ff436bbe3656eb6fc0e3c076bb4b6b4b3eaf2e94a8d4821653223a7cfee467bd488b23208c21fe601bd6b2d4ba6c44d334bb075babbf7f0f751318903b6c5d4382828d64e88644e47e695d717ea8432ec1ef79a17f2d209b11aef4fdbfa4bf5b669bed8b4b1d4672f6772c0b63c2c70678dd330c4e7db576c55bcb319b8865b70d752f336a9ee7af4a56b8e5b3696b962b69793b274f76439165823c69cf5e04bd5db0b21f178fd8b16f7d999d0da20a00ca8d271cd556cfb1d26dea91aac88b21a9ea9ad785299a282cccc4b9a93cf9b1f028f65b0e90c0c41deea019953beb5528a56a8b0f2e5da3d6f20f47057cc0325273ff152816c202f8a114cd07138ba9abf87cadffa7027ca298ba11ceb6418f3a9abb32ac988c8d342e7c2b3fb2edcc0e6549fdb1ea3414f47ea41c509c75d881e7b70b48c7f8f756212139ccd331e0ec95ac1dd6b660606c580980d763c3a1fe19416636b4be45e83f0028bf35ff1f559a308d4bb0215d25df449f0adfa6089248cfbd0a2a62e811c8c72bae01b1a692fce8313c81195681b3b9faf02a7bfb07977693c1aeecce5614f261ed3c1ef23fbcb9469cff3e56a6c81a6d720d61d5b96369a94493748f781d25931e9195f1e1fe0796d2289874b5fe6cf9b0bfa28df9cbfc820376fa66c94f3074ae4c9b02840f4c0e474a98217f02a717a9b738c6f06a45e42affe1ca5aca571e6ece1cc35cb274b6c87f256cde11d4ddb18351595f245b631be21485d98eb49e254d024ee55954846befab6e063682d9206328bee45f2b399b8c9f526acda8ebcb6c0c8d131b9dd0dc5677b11393cffa27371622263e53f75428c38102386caf87f4fbdbc743fd639494039e1935d363483bbcb87c7fbdb15733276c4344b624e93ef4478f1fcab5ebff38fa5462e696067256304f55da4a241c94318e306d723a62c1a962624d624953dd11331f1b624bd34587122b2f37b1b963f0027fa17238f13ec5acec273930fb5bc98fff62e018513e5bd8ce8def18ca6e11e829977e20bef837b291c5a7963aa1d83a3efd9f7ea892ad33b2c4e4cee5cc43c43069a1f7aa7920882674968ac38f34bba3b1bcc03271a553be35b64a7fbd1d55d844aa8576acb1438d204ad551a95010e0879d01270000432f6ce434c270a1ce43a8a0e1e653ff51ed85ae7a57224d73390f88a75ab16e012b3223ee636ecfcc25f702cb0010aa87567df32a5606357404825873a5eaf2d0141edad8c9fd7ad103dc79a58d83609a7e5c15cddb3d7f3fa42a15ff6e70fa7ebd8dbac361958e8570df60ee9981d04969407a7366b358c3b8fead7e45b2ef5af67d258c46706fd705c8bdb9e8dfb38cbd6ef4eb9569fb86a4acaa3a463b3f0b5bb7c94e3514d2d2735f817a7847e974a3e036dacbb9a200f4af88db388de0c099689894f5c47bd3b6317972c4eeb10befea87c22cf0c85dc2e3666311704c2a7568b30377fbaccf8b07020947911db48bb19c9dc88599e32579f774d2af2f452496bade9c524d33630e5663bc6908b1515d6e057f6ae4c84e32c8550f4189c75183bd893d360b4bc5054d011ca7518d239dfdc4f458b860a67bb0145fa18e49646b32fa7e53c4507558e971f60f4ef624f05663febbc234573996d4b6198499eb3678b596b05932d193856d34cd684d142c56caf4d9bcaa0a7b8742f7672a95fe9832201f14f360c30c4aad3cce63110c59578bfab41b26d8a26d5a531a656c752ad1438f5e3fb859d79eefe3da37e4c3c7ec54ec9eff1d9f84f65b257e69be64b2faeb5c57660ab13c6f18e0af3ca7be19ef2c78123cb23ffd5d462311842b72291adf4937f8652de7423459416572aa3e614d05551872c0f9832ba1761fc5b57e79cfbdf44866a980874f7714bd3e95991e38972c412dc2edd31f4cd7443a3e27c9113edc50663f12a0a56b295e93e8afd08c87c5108ab2694841b65bf215d809a86b8dfd5a3a0bed95ae67622a9baddc03fe00cbdeb9a9ac551f139e896d9111b1404ec3b5a3730d1976c9fbddf66490fca89a54e0e66dbf33eb8f00f4b7822ae62dbfa23057456ce4c8f1fda35aa2ac970356fea620a6752830eb1af114b7671fb3c0d7afe8c58ea5adac2e059068dbe8ea0b5ddeab9069302b9478d1bafc6d75883bc3975b96daf9e67f3f9272f1088fc3460d92904985a549b17422fd0260bf526cc59d6a52494cf46657b975d5584e191717e162b1ca7ce9f818464cd1914b2bd13d30735d51f579031ab6c0b8f3ceff542209e2fac8ef80394a5ada3d3b46e8571407aa37a7edea87bc53eb003684feb59110f6a28d8ae003c05d5661fd85da02bd6fd21704ea73f87747942cc3d83eda108cea2316affc201a2e68af0d728c72766a5a5cf727d110b5877545fe391eb30bd571f728a24d8adb3018cad6967d6193ffd04651b9c38ef3184dbc38a64ac92d84490fc9d105f0a970535c31c2cddd3f9de34a4405ae0d3855d2a1f0f4d1f3565aaad4d083151df14c9e7634f24187b631fd7143303e893a42a1901004fc1dc3b45a5c535cd5ec2bfea1f1830158ab687d1ed8e263a7b83380ae6087500824ab962102a9435aaa5c4bfa290d00667cca63cf5ecab8bb1a07ea51312545cf041da0d4671c3dbbcc4d63715532a4ad07d73134f7bdd572021ed0283f56545f15e96c70c2ba956c396bdce78b890f1dca9d9b6640e7722efa53fc27b010ea5f9094159eb9225a07350a55dfb7c4ef1282d1fc8f20fdc8863e7afa98305954fe4c52ab6dd86b28dd903874b19b6c3f6119b1b2ff166d4be776d8cbecc490dfafdce3797729602ec495959653883a067a506697cd30e088df091ae80c2c151faa41f993598e9b50eb766fc6b1c97e64ff1db7552a4e9d249d33c88a119bbf017bdf83aba7119690d3bdc9512cfae416d9090fabde012926e0ae1447bc49b8296e64d73c47d7c1fa20d91c2097e3c31445423af3037a3e0a57c251ff8b16b83318ce03b11f2a753aa0f6db98c9ee639b77e1d5d4022e6f0facc126272bd2895da9a572662932215fcf56bbb71e36c637801a9d4e0d16a82d3d85ac0985bfc614fe38ced18bcfc84998398342aa3cf30de47a77e96b830d6968e65734d1241da1bae88cd31ef4bee32fbed6cd85e1abaa40696279b43f74bc747cdf57fc00e689b7a0e0eeb16f6d5adf28f0a183c2b3dd7d07de3de2f1bedfb5bc039119f12a294cb651382d4a424f8b4874bce2d6376b3e292ef2c2564772aaa40bf2e7b6c4b95371314ce268f771d589b67954421d50f4b18b8667d4c575d37ba2626e0c23a0af93574ab46d29fe7e1015ff84aab6730e1991bfc4822670178cfe8e4259544f663f787eb0e8f64d36ace2bb0241414c9e69fa196b5a2d9ac1914517662fb29e91b189b676fd79342e645f26e4cc70875f18db422ef88ed019312ee203c9150ef6de23f853a94b5a4cf07dfd4aaae0748a9b2910c96d437e5cf0ebab633216324e14d1a344db77f2927295adf65421d79c25dcce3c7f5adad3d929e5e6634a7f5444dd83da55ccb265bac825abf72ecddccf7e394f284636bd9df005ccab558f4383f7e18208d9005120b1514df0699ca81b05fa5e135b865a2e1a8f48c11913b5ca4cc5ebf145937235ce868a7ca07a66f926f75e62abc4ad8926c62e848aff6c1787da0ec7f5d2826fedfb0273657d3f77ce46fa980803becc4b7434b01062650fbfaa87dd5f5d8f18fff0da74d564159957f4fef2623bba690badd0186db5e074f8745c78ac464f396ab142c5f0756478e01765c0fa958e3255b612f77f06ed547d2d084d1274dc4b781f17e57cc7abfbabe100b74cd06f6aec3adf61da2f5ee9cbf2d0ba8a70e98422969ef75b87e55fae74708b813058b81b872544abdd13273b380047ec38f0d912f95596fbad466e3c77af70ed1e9e29fab3b461478a0fdc5de86d60d832fcb96f2e056711325c979b386268cd6d6279efcc3f6e43184654e98217edf974ec44bcac6a0fa13176f9f795698cccca5c27b77233dfd33cfe17dbbab06e84dbe3522575719cdcb3d829ab7486274155363726f17906ee2433ceeded7da869ff20b1440122832a22d5581ed99be2799781fa53cf75d195de125769cc55b8b9c3d0a8cf1653d0aa3538fd4e0738f7eea04e56cc204a8fe1873944f79fdc052aed8e3b1c15c40fe9dfe377e65c072a9303c54a2bb1c69bad0e5dcef11981262227c9bd1bbef7a76fc8bfc31d64625230ab33942648bc2d476230c98f61571e9de969811150875996de2552d5c7656368b2df184fc614953032cd7f2e31ba19a63a8a012dcc034e56aa5b93fb866eb70c7e24d7d3e6d7ea8ae1a2542f52d8cc3d74ed07e1cdeceb9bafa99e7389d0f3be921791a6b517a9af1275cecae8857f0d80beb9b261d39a7c2e66528195785f057f7a48c5a9d0ad7e5222ed05fa3d9cb6ac268fcf8455911b589101ec2076434135bbb461ac95a02c346fff5cc8000206bcada3152bbf7460c22d08ca479a56d34b571f73500051a6db9b1dbf837cf8f473e937253e7cacd3b85d967b86c480b3f9c398e57e21a41116b4f52ee0105ecd05e63d690981852ed11d9d5c960f495b6fcaf034a134599cfe577296f2e40e6e532ab674c7c06dd97170f29d520858f5cf0ac0fa6f789cc6d9dac4c84fe22460000290f1fc4997f663c74e9a09bc97476827a92899fb680aa0f70838710c9f0bd7c0661ed81e178198fd392ecf3bcb8f1f821298d1093fe0402e287000815594feff95d1d63b2ca38b6873af634f2b07ed64ef0a3c659d8fb64889a7d821e4db025aab6e075431de50907c8bfef3bd658aeac16a53014f881c846a573ee33950b269a97157787e17431ca14a25602347930ee51b709a6233364441fd0a651f32e26bb148b303db9706012aa2c2a43aeda6f5b127761b4f7a74abe03c19d010ae2e7bd4418dbd3ba361dddcc513e7691e9465d605ff3870a72c6cb0fc1d89ebfa0d58f838bfe87a205d75b8e15694b86218f9dfbcf574a52c8ea19d01738ff86f20ba5f966fbf72eef4591551bd9063126df2893e3359d27e290d18bad02a6fc5207b0ebafdf590ae771e3dd4fe66737903658a34c0a53003f587d8b5a422a675b40936c4758918dffddd59d64b80b4c4100cea0c896d18556a7434410f68af377868a5d02876e9ba7d6c30d33ddf505c233751169fd30034444ac74f456b3e9c14e852b6f127f08c9620bf703915450457c729be9f69766062b95b2f0d842e9a8f46d7c18bb867de6c422576e3e21d6cce8b4a9c0e38a56c301e6968f5630a01e27048f07ca1288ffec45d37e6335fd909d2e4dc5cf5081618e2b06a519d2ede00fb52a53922c5a8d636c4be337810fed2bd17c3623450637a44259c0f708970a7930c0ac5d1564be67b323e0fb54ea6c3705303c1dfb2b8168f126bf68f5b3cad7c30202da0f36c3199f0cda4f5907209e3006caf75c80498e358bed0554ab1ac48e6e25ef508015ab02e3d8484cc3cbf4dadba62882bf159d7683c4d28d586b7fa388c63f7dd81b0a0d67ac6200e154f8928354afc8503b9e8c798d5cd936280c9aca9a29a7db7eff98a39e028b9e017226fda3aabcf7e280ef075e5865b6158bb5b41df23a7559f23c9e6247b0e41ff735c0e2ae0022a8fb1d47421465d9fa8cc6a67d12e542a024ff7ad968df95b2908b6d0732cc57a510bda1e8908603e9a2d1cc94efa66110b3e3340d218ad9bb363d2d34aec2e6bb5efbdb7a6aaaa830aeaa6b808e02f3e9cf9531fb91ecd03da0e6294873b5ee8d71e0e957b250dedf389460ffa03a7468341f0b7b9b666d763c7c2cc0095a923f31a8e9ebe004080999eea91b1584e03a91e05e2507f69c8dab49424120f3ed53d8f3ad157478b461b10e86d872c67dd1fd24db805e217b91fc7e5342520c810f940c6bb8a570b813b0b7738b0dc200485b5630202d23cbf954af18d1e486620655c1b7e302655392af21a5b6c70317baa423fd51c74a9a8f09712d7b5b152cfc9a2e536affa78a3dfc54cfa1cb454f31c2114e82d96cccb6e47074f72939751f989d8bae4f9ffb660b8028bbabba1a994dcfb0a1d9a2819460582db8463e591b76956ba1c61ef3ffc6f4a09186386cec1457b86842113f4e00ca86f59ca0ddb13771f67c84fc58eeafd8005e4b3a809f354d5421b047c8366098c1637a5914aeaad3c8686e98bd4b473e3e7cf74a2a427eb310ca6120e5dbbc5e7d3af42e0e5f0342b400e4faf4944e400bd941898280d4bc2678ef63b55fef63f410208e8733adc4f0c1933e770b1fa3405225468fdb2b02cedd6b89403b0a1236b0dfe5a77a9bc4739b38f421db0fb6265f91f04c569ee65553d35e97126af49c2c730c026deaae00a92d24db783336071c5bd61a0247e039f96b2fb86b1c5a6317520f19e9c42992534f35407bc94e613510f4791ab6dea50156d422cb3b59144bcc9b999949e9e2adfc2e99b56804c2244ff7b6fe396a1db9ff37ec45e2b6e1649bab43409f65f251331dc897d8924b99fa0b929e52e5d33e316a9fc2a403e019ed82270039edfc4f7a767224a297fd1b43f439e7477386d1dc971ea79ab661760b1f60c6ef0e1c2b2a68b8a250c714e15b936f482290bf702d877ff48cca5477b580883f2285e916a8f1da5dc75dae0e847dea701460652480fdf3cc53563436c70758f25ebb046c26054b207f15585da8febb070f16c80f5bfd883edf6171e927d28a2e3a4dbb954830c129e779bd697084f6e4687bc4e213c25674676ae0e69bbf7e17d94903d113b5b15fab484841b7a6ef1acea4128f0365424e21af6cbb2e59ad95c9b64ae99bedc2c38848a72e8ee5a8c01f140d083b522d78d95112d4d7eea4d38c04fb53684b43b32720eb84591abfb33595d735e8f0bdaabe7cd87f54a94138502c0c80fad03f435e9692735a27215aabefbf9cd5641b742789c3dbfdb3afe5e2d52945a996f6b725cdf9ff2f2c9e7e4e585a4d453591aab8401dea3eef7fd719006bcde128c374dd88eb0524851983ba5c76c1e5a9b619e387171fb2fa097a86e3bd92049f3e6b791a9bbf3bdf54a1098fcbb369d3e0e5c56a5c63e1bec0e69f17cf0561a4d8998a14290b1ab4804b45dbaff0f127a13f43f1abda02977b3f1ad37d9dcc5529c6446a317b0930d507db474e46a560fc41e275ea9e7929ee98d189cdabef76a55de7c4aab54b9c4533ffdc1e3aec8349658e61b151e50d78f1ff704b14fec776f67756c0ccf7fa20ce03dca47d7a1ea512aad29155b2613c2cd4bb4db090e678376cc149718eb4eace26e653d79b52e96ed1936e85c0751f0163c4cf6ffa3158461ce8a7941ab7f52f5a575d147b5d9e40ce0d076f759df4bf5f2d8c766f1f7064e0e5d670e667c288bc203b98e5930decd1b1aa60277ca5b8956b4d348c51f7a1b1fbfae3d6450f8829e68886cee84989b51d7d31b59f4708c6f2eac5968ec597006403b1d97c3202b5e36742215706b7093b9f38d062b6eedf5a180a39be933a91c6cd8ecacd89ddc49fbebde4901b715d93cbcff09fedfd021b6f48a96a3d82a3a012f730f172f3b40c5e8b623f1fb38bea19530312cb51dafeb93914acaab059f3f5f4102d2d5ef47c615a1c84b6658e949fbce8ff04223e80a89e3fe094a1f5224078c8244baeae2d32b97a517184e9e959191ff0e0b001b773ac0af1bc793ebca168dcd0ff39ec10a906d61bcbc87594750a4697fb975f844c78a6eee002019d2743f2d2cd5ce2202bcaef1c00fb999a14a15cbdbea6de0ea3a437d208653decf9bf00fbdff709ed6e8c32bec90d79e768617fd046bbe402bdb91d004222a004480f3dfb9311149d25c357552bf06313b2b930ef1169c1b4a752feeb44228cabc7ca1d11c7daa2356197a3393d8686a524390627e6ab6805a809ea68060f1835d48ad426508caeda1b94f182b2a82015b766bda6295676abf0f9c13757f6cd89897ebfec9d9bcf90f8f9994a0dda514f17133e3d722a32d7e3bd73df2c300382d85a428d653f3696fd0da63b549b047f740dacf2894b19e5f87fbd7e745bf5129d235e22e8f36146825181e507cb44e8c903907432058395c63dbe1f4347bc117e332462f4e0c30707925acbb97ee940cf2d818803be2ce36f179efc95c171475d31303fc64ca7535661e5effce06ffa736b6f2253191b64801391910cad40b79b349ecba4f128f209078e295d20a5a9dc465865917a0c2a0dcab34b3a8adf8475482a16da73eb046ea4e2e0d581f845bd19af49e230977077f8c87ebeb7fa29f6fb3e2000e7b0f61104f6e7cf6e1ae6ab855994acbf3d91832e7e9206ef1d37f5dbaa8e7a2a30237e737e58071098dd8b0e199ac2fc6de314a630f485916603e2813320f5f96df541b4b999f4d72c816eedaa5f9af6544786e19f189a5519c98fae4d18ee0caa5c259c3eddbbebc074eadb52c7b2346390bb5ffcd1e0b9c826c5f7054325341162c8565db8e4a31d4c7873b60c4e81160447521637f64664397b8d3efd85a70ac61050d43f0b6d2afa0578a4d38337a11a0842e1ccdc1959ed11fe27bfe417f7ab9a1826d18df77ecf42d30eb9ece57417e494b31709c70b7a98fdc08e0b241060fa03bdfacc2737aaac637739e18b14be9aed90b0272d5e27fc9206dbeb3e406f131e51ed4b5503cc0c24b1b614a110a3b63a40c57658333ab5d8c83b8a11f2b0605d296feec8762eaad30005a8b5d7792ec4bd7f0009959b78bf891b1becfcc0c2b398236cf07f489037a1b8053e37232e117857e98b08705ad8d0dce3eab55aee644a656f08228c3cfeea1fbd7e66fc4bb954b7070b1e7441a5b2617e44ef13d08c4cd4bfe10d606d31f4642876cb789c73561ff6663c4566afe1cd8a1abece5ad31373e36cdfc8390f84cfa3341e20805279f3c759136621031c3abdbf0a6ff7bdbaf1f462aeed3f1a9ad8c971275ad49ffe23b4ab60cb46feb7623f273ded67e6120000a66e5bdaf7469d71e0c586667d8ebca345f7b2a6fea7d206c5a01930ce798075e92d3117a6a8a2308684226e9dd0cc842396b703d91204e1c9eb213dfbaa3887f57dfea913f4015ee13fd7c5eaf6e6d8406cd9b4126d2f645cf53bd4ffe0dc3a57eab9fa3058362d4d326cd8d3a1bc63e7e6b40961c4216b48767d83f4a0c6e34952ec5910bf72207a86701e309219b249114817f625caa0b8e1694afefcd736fee645bdfb3e7bdf56d227b6c715b975a89b9232fd86ee81558c20df248739c67603b0d61f6fff39955e8964dc70fa5a0c8e1fdf103aa46902b48eb0017d15cad75e5a7c3384fc50cebe53db5a96ec74218ab52e2a600e90e50b549b0c1e9723b15863d3f3438a65ce8e04b107820d9c85ee59edd0d54fa01dc6f1dfb8d6447c01994dc1765e60935712a2f4a424cc7ddcd360f7df507234b1b335d70710335deb14bd9f8aad94402c3de6b7f79a3572f27d0aadb0e9e8af735a4038e8f6789d5b2368de298f22a690d15c16e5fb86437fc745d110b56018428132e35d685fe79fc7eb51a891ff5c16ec3ddcd34b77d38881a19c5802b1056f02aa8d9cc57b2123a09c5de2cadb65d1106445a81e3b23a416cf13a831f05ceeb9c03dbd92686fcbe852bab0f63321c65a929a6f30a4a5bc8f9273f0bd947bc66591fc57b638590f556a4be71b7fdd679f858ccc43d012912fba0217b1006c7d3b77ef267aeb809bb7c74d738c7475085f4fdf72afe2d4718a2d75debd469d2281cc620eb62fb2eb6ecd886a8b32945cc8b3525eae58d65b9933da71599b8fed945d27377896e9eec1b6baf803748787637521ce939491918a177fc39772c965333fcb0f0206dd808eba21c3e7b42017d9602d6259f851b21b0c894bbd5f14c21ccf72eadb9a9b7ec3e9971d2d8d81bbafc07bbbe71dbf137b47907ca1e8b0b1c3131e9201bf2772ec0fa82ffd26971714f3d64ce6960520529d597899546f4f5ffbc90799bafb3541b818747e308b8f2348b8d9b15267655f2adfaf780ab45eff23478cdd5b19f5cb55b63d28aa8c56e7c6537394a60b283355ecb349270bd8ba684af2513aa87edd540e6ca105599408cf2ad04efede7c2906b15cc78fffb8b7d9124027bf009c9a48752ffc6287c7de996a831f77b0ce46f1e4b8aba20ab4ba17afad5bc4e8a26ade43bcbe59c7d30e818236f8e5db543cb6ad904189eee798c12f65d43dc3573f934ca619581fcb30c6a9e8a0ea1871144be9a638d57dacfcf0e1f6df6b582c733479390a710f059a195962e89c9011a948451220d488475ffb3b79f2991bb387bb63519406cf0e57cc40524979b3515447d4886a0909739213e1439886e3ceb08836dd0a219c6baf46396127fb033bc38c5403e6d8612fb8792a1123a904c55e2a0dfce576e09b7eaa31d93458aacfb3952b1a2f5a9fd3707ac6a59bee4bfc2c4542c238aaa370ceb534da8b688dff8470889973eddce208d2ea971891a9f2908d7f29edf451e1dc6837fe4cc88d564820649c3a7aec745ea896082980de2fb04e864ab99304b526dcb08b837809efac51fc6a60f57de90f17470c26b80de37a1884b4fc96ff4f324bd2b5c72fa34a15a009753798f5cf1812fbc8ca2a657a7245b3d33e686627bdc7d100ef7d7eb9d174f0d40e386929949072fbfc0e3e7f6f002a98e57f90f3f30bfeb10b65adbe801f5de40c091b7f27bba4d2844576f270603161a151c2b75ff3ecbc3d73a76b64b7f2705ee8b9b09d6d6575d2780b97a377e0b360e3aef9f580db417f2ba013ba5aae20b4c329aa1b107f642a4cbf73aba2c70183d0e093f3d47a8b7b6a261d6f9872be486b291de902d4924928e80cc9e1947e095e1e3067438da4608c2d745adae492b8a6d97cb22ee6b860ba586943cfb54bad5b7eb3c24538907c6358ab2223e23f75bc127b4402bfe14241e33e9f4f3e1c3f6b2e765d5b48f8a1e04ec2a89840685a69d932360aff93a320b4703d65896b8596b5bfa9bbe0950b6d6bbbefc93b566241fc5694eaac4a3869adce4d0cc3b902c5196d8833cf413efc1598a85f7c0d748b23a1b91cb16c7214847ffb6f27c9d819c44d892c812f65b07ab9de1d13ec30dcdfc8af8423a754c2506d136e53d864cc3f67d40f4a8cc55b29835fa3e4345102f8db53d7bd943e4595fc32c614f61479c7c54d379982355eba576652e6ce84c3defa19416f1ff72bce26e28c559b5430ccb7dc3a222bf6a122f732d8a931982680e9bf1a3bd451d59a5a38cf28180bbed9e0ac1a39485df810d68d53e85666a79dd214f80586b1dbe1b61e11ab8bd45541b038a81bacb2cf3f71ff277828351e6cd15377dddd91173d81a022166f667b436518bf35c2859eed5208af87b27872e335e929540bbb040da10776b18484a2baa4374eb6d0297a460f6ea648664444b8ceec9585ad3ea1eefb64df7bd5e166be9bdcf41a493f7c28c945c6d0bf1ecaa2efc8d59483ec0a571d7181e9d719182ec40b71009d6b7016bf729f0d35bafde9a04914c0c4f5725eea0d9ad369096e0e9a744f748b6cd7b6591437b7d94d93b1c363f1a2a328b6ccf684b014f08bceab950a7e00e2d03fe70ccd2207880b0f847786ce30a9ecba28bc30afac1f529b2e736653b0933f1ff469c1eb5657d511c572b6b91611354c04c86acd011388593323e991e5b5dedb89faf5307826753e1ce44dadb5d1c21ed8a8939e2c9d49d1bdb78a1940917b6e75d9827a8246d00786e8d9ea7ab38602795bec6801157eaf6ceeffec7a3992d5b65a379d94b99c5531dbe5b30e453024d8a5ed300d813328123a7246691607a8f20b27a8e681fb000ec7a4b66a861dec6f9cf1e5c1b28365740d4884f2a80a7d079be87a7b50c8cd7000330c0fd5412be0d3368c07977fe65d349cc35512e0370eaa8b6fd3d45441f31a738dd6907838d520ab1894ee577b9af3709bfea504988a6c0f9fb4c3d09392c90e9709217a5379085a7828de1286d4adf2e8b4e1dff1a28e7543944886a4ce5b1af102571392a22a42c129bc99d5fcb379a1e2df2209e1ffedbe89fde4582404dad4ff1a2b2213ed6ed21a88fe9742b9401b74f2a0915ea9d5537d2107bbab83578d86eb7d17d44678a0ef948c80f76cc29a7cbb3d53056b1406dc9ba7e3ca50e24d79cab71cc4b05035c45c3ae81eebcce8c08ebcbf4f6607c7fdeb32b09057985c375cc3cef3bbb9b728541e73cb5cec2880bffc39d9c28c82473ac0b84c9037f1562feee759dab84952b24a12489b31c6e9c462cc33c1b30636bf9f7d57f35de12e3dc6c4e051215604096fa0f3c1e8f4f0038552f064de99c2bafd558db74d9eb7907c20103ccc8a61906c6f165f4bf782b18565406d5ab4e4d9d474848b4b28714d6a034ae2d9fedc77e255e8f69920eef334a202f89227e1951fabc03d57f2dccbae7bf778806dbb6c3c1702dfc24c5721aa8989756a6a2b7bd31513f9c89b6631f73ed066d8efba822c9589ea1fa561f504c40a8bb9e5ab2ffdc2a6efaf875717b083557f27ea989f3585c62541881a0067bd335388ce435f77d0ccf1db35d8b4eba49f20a052b0c128f2176cf967dfa34da92c51ead8bfbd76b6b5c76f8c742fada33edf12d3f8afde480a77fb2dae4269220038e4e8655fd095b803d3f0528f18a98f021accd2ade3b1254cc724a4d18a9e54e49931029dc256dbd650d00be20bfe39f148ec1d8037df4578c6d334012ca63138a438cac4641ac379b40c7af066a7e2a2172295fd1fb5ab3ecaf7d5b2e913406bd5bb44ad62c53b97f96d5400b06d6d441b0f0881c12b2eadc74c2861fc004c5b4c255840cfa1ff961da7947229bee570f5ed3a19b7d2ac38c45a489b1071cedd413526a94f0072425c46ad5d39f1066c9837bd80fe6d83694015ccc3f11fa6965905e746db1a845a91074f48598708ce1c9eb1be3120ea2b46f614b9a7aa5b85b1644aa24bcce0dff48ac7058a48201e4e1788cbbbf67f13254a513b02a5adb07d881a2d8fd8d47d6a2fd0ffe3612c05370f8c5ab2b3553b22d42d9824a01faa4abd4d5cdd541755756f9052b48e43fdae6a2bf9f7bb697a335a9cad5034c22e940e1483ee9f349d8d91194c4066359696805cf88365e9604d17d86bf8f70c0ac76551e47e7d3cdab03dbfed0a4c84ac01f3bcb9821aceb296646c65385c687fe262bd613055054d77ce4409c51dc39eecd22cd7f883eb601a07b116f5c515fb55bda14f9330f4134649178502247d88b449a1aedf984771ab7856a14eda449c2d9866df8597bca0fe38b8ee62c13970acc3501077864d45c33565bf0e0c18d18e2ce94779d8b30faf8d787da7db0e0d139254287429c2493bf76854e4bd9d7e438cfb324edd8fdf3ecb3f7b43a7e207e0a0d82e86851523f44e6a1c60b01deae3580a1009817634999a5e26d054d661ea00d322a5f8b1614479f75c7b9275d86566dcbab09fd052a509bd3509b3db72db50eb7552319142231fc2d1f80fce608721a05d32ffdc42c3e2c9a94cbf6ba7c6f422561ed7f28344fef0888752322989f5ef07f74130af78a8d8fa5cb3e2d9046c8022cdd91ab578514af76a9a20aebb1173c583285fa2147e1505ecb38cf79233240acda3c548c23073d77dd841d1ed33bd9ad5ed43d3d26cb467d957db54afa5ea8eaffcdbc4576610eb9feeaec08f0a65a91f4ba8637e8b1946dc4bbc01f07b8109ee310efc0057d8e3e2e1289929a445a25cbe992cfeb91eab936d5fab46da937fd232402d82b9e5e1c6c41ac2491f6586c7d466934c13c5a4f96c6039928b76e3fe7b306fd09efbc39bc7a43f4bd94da84812744f51079ef6a0d31acd7838459d1f20e42f8326b325a91c2c9c3a95927740e7ccde4155baf72d134ea5343ec041ff7a8bf895b77f42812c4c5fe4eb1f3d64ecbc7b6857aae51786bfeee2d361172426a070774dce8d868705dd9a8e38ddaef3aae89542b3fd56a7756abb23cee4e8760a9003b826088bc36d926693970e182e278e46fcf7291c0c6de335bcc2128b790efe2a1a9dcf48bba2b8d40bde20daf0d1ed66c1a1199d4049f0a65b711ea25ced299cadc5917f90f306f3bec896ca5238073d8b29def0f3dba7db5c3bff6952100592654358ac4974142b20b8b70aebe00f4d099bd469b0d410fb4c18fc0e922aaa0a108137b0a6dcafbcb0d1174c8ca11b70a80132f219209f8707f90b91969e6439731b255510f38e25a78e03c6fcb2680a6e362da395cc5c809621e5f608aa3b51b922e8bb90a5797f0e549c8628fec4dc2ccc0ba81b4e5d0e632c7a46d2ba8dbc563d31c6a5654218cab3a56b88c4292c2663f930ccdd8511be5572842c9ed5a751c7e1755fe19ca395014629058f691bdc6921a4897526d06f5e94dc4ea284990ff0d75b3f2f256aff6df4fc1ed30305752fe3bf77dc01b7c78d0e2e193d6fde3ee65db10587fcb7a2010499bd1e6a95e3850f990fc2bb0906613f54b29302d7b8684a4483964fe53190978c830219d13cbb7109ac5ea3e3481c03a52be500d1751514bcc8e2acc0c5e31e183aa5afd660e3d82d0f5a6dbe799e5bd0a69b2e8b4fbe98e17c2d6f588371bf03e68cbad9b60febc6941b5bed85b600384a7232dd213a27fb2dabec5c094782fad8b9f6605bd9432598eaaa8c05201c662a64145f9aed820725797d91ff2d6cad177d561f28616fb69a61d84ef6b6214e2de5aa7196e02a2534266ffa9f9a3ff04121757201a66c9a88d0751ee9b56d3a3bb73e8cf5009f999c2f5825340c58ee60043e2ddb71c2278975dddf01152f95c4d0307023b863eb1599a7de97a93ffaa5ecd1fd2500f8e814c13391715ff91adaf1ebf82baee77db3655d76fee47a1fa8c784583693218e797f68ba6312187eee76d064d89b981a6d29b7248aaf23ca7bc398c5ae20511f8b537c941fe2ae50f9473763edafb517f88eafdcc531a2f4488ddde1fb98087b49ae7a0c9b0013d3515116e930ed3091d383fd1e62a43553774fe56d4fb8cd09dfedf2b02abf3ae02ce77624409528637b8c3faaa840a98f2dccff828ea96d8d32addf85ceb91b519d749dc2bd87d6274c66f7f3478158d1fb13c2c451906baee2c7e5240ca4b642e5d40163c27f824c09c503f0927ef89946cee79fe23bd83f1d1be45dec0b9ed8ab9be477722c0636ad1896d7c5c7de9a5ae68c5cf5844badd40ec9c2b87ea30e40e898d30c13c6ff6f78351e39e60180860db0f58c93680a2d83aa78ef4916a6fcff6d8d38fe5c63c00afa7f471f6bfc3e18bb1f40318706832612709d55441a30809ab4d99521ab9c6f8e29d683e76913a7c52601f1a6a742bb04f55db149f915373ae5a8a0383484b6ffd4880fa022b19768b53a2f2bccf6402306a6ff410347ec8db377807cb66ae9467b7f7531b17373ad1693845191f80330f0ab406e3d58fb03933f866f759d9eb75b250221987e1182c2d9c827044f3b284fc623b666a34ef60dd4cf117c8040979b2aff2fb48045a259c28abe2223e0b02c337d633d8c62b890e45b3fd57c3671b36f463b13ed1bf16099780510925d037f6149a065b3b1f09f597b6c92dd9bc6d06ade9ed0495e90c9402b9c3f83c45c84516dcf0c1209f4cea4ff7068ffe15dfa43b43177f3bc65d89a7f3a31cbc60210aaf2da18c7134e9574513e1e083dac367c5c4063b4a45f6cd066a37151569939af036e68464eeaba244f78957b49390733140ac0c46a6eb617318e7435007fafd2c839cc55a6ed64a0c67c4f1e1f923308a10f8967c81a13eaf44dcbc8a77e2f5b08eb12bf60ee3dd8559a26f0adf3b258f38cb04e774f5369e2d66b667a15fde3b9414b2abe2f420642786f2680e4253f97821f108c39e9576100376db49eaf9eea115efd8eb63d0773907aaadebc2eb858bfc0f9db32b22191f41223eab105f896a017e82587837e6198f19f603abc2f7c7a54e2731e3243ce36839a44c8b987c8a2f74a91c55ceeacf84b368b7f934fd6b0093b7e0c5ba368c85caf224712ca8aa3d71e8b21fb8908a3a3efd84104635d9d06c1251b8a392a83f1073328df0aa1ef239271794a15edc8d004d7a5167e5422e84b6b774a84d10721f3b0aeae8c9c7ebdbc32706afdd36008f8efc84a8cda95296ceaa0d3c7792155089ca6546e653d225fb4c87c648a2cddb89952e8a7a0cd7005c2024cdd7680cd1ae91b68bc1d07d4e8bdfc71404eacafd049fdb1f1d01b9c5f5f9651e05cac178cc7dcb10579eefec444b358c73676599c3d4c19e0e558ef4b94659bd8f422f9af33654c917eb91f5f715e9c551a13c0484b00f397e0048c90bd7a8108837088b50c92d5c65f0e57e5b1773bef1683dbea60c8d0385c2fade929328968461296427223aa61a281cd3ef1b63efefd870028de510193b88f839590cdb8ae9611be3121787926efbd4f5ca8c5d8a244f8585fb5114c6276fe29f76f4108c06373a77e49e63c57fcb677d01e2254e0a2acb94529632b2afdc85d89d3473faef45c71dc1f2e8ab9baccd2cfcdc4129df1afe87f2fa2afd4f76c10b9abc190be1cc9554978781e4350f3edc97199ccc0f650f98f039df6448235e17b3a9d733bac54a4eb92d7bbfba0d0efbdda02bd155a10641a769379f93f6c0b4e8952346910d76a75097fa8d4c5751f19b900122b5d00e6f90729ada7f3b27d7c4227868932b44f8ea088f92e07487aeabf01be281fd1e2534b326c33cca4d9fab4db1c04d32e58439c9f6346bc3153dc2f41afb2666c300b65b23692d77155c7fe9adb7527577c9896893f05010e8500e44f42bb5bc94b7bf72f7c11fbfdc799d750c7e8909bf4bcfa9bda8eac2a533a428c8671375811d5c847fad85158278744b803e1e2212d40ffdee9855b142a4f6f32eb18030b42583e996fa878b681ece03b049845173d847708d0407d949d7bba5d5c4e44a59caeab6159a8163afb2a56fc0359a4f13c4ab9822cf87277194abaef08c4e98dc7bc5c1ed6bf8a9fcac259f119116a03ab5331ebc25a5b6c0117bac69e37fc6b3fa659799f1544ef3a473ca892e9862ab398e8f69e9cc9fcdc240658262883cb944e2384c7112fa2f16500d033f5fc57fbcafb93d6c3ce3f20223f9bf3e5ec2143bb90c96b13c91822af48142c6572adee6a2aa009c65d50b4bd4f4011510c1e82d045fc0b8fb22c1049bfefb8f674cf2ac50d64f3d2ff33c91f45d32fce0fcfcd7adf529b1504bf3d891e2b337e73e3ff02a58cdde0e1eec0d90ce6ca067c858e579ff486504d3cc9c516fc2714579df10e16816e70c04c8f7d6e34755906ddfdeed0e2906a86bbc81aa3cfdc21b91d01e18141fb187648d80c86bc9245067d97a9fe21b74c1cd08c789107778b737fcff267d7bfcfb8e168afa623a7934f47ba2a756fa32091fd14300d6629f1775b0f050f53a97283f917c0adea0f4163b762614b5e5538a7e56a56981704a742f6d11adb7298f093b05429918044c1b97e2c007199636bca8e185572c17b029806e1f0810df3df3c0228e942d4d494e1db729c5d85d1956c7615e1c5eea3d36d8649505015ef1745971a0ae68b17f5487a18063f91b3b70d67f98afb457c7854bafb9e5ba8ea6f45f33ad104b8f08dcf139021640920bc8f5bfbb820db221956ebb8a77e6e09cdbd9ecc5a45ea8e827a1566d06c8fb2dbaf8b839404cc0e72bf93f2b1030bdb0610ca374192331c5977f78af1a28fe5f72fa879532201f20feab4137511a0f9389aa9e5ea520ced2198181c8698beda985a7dc0fa6a4b9816d55258b7d27ac111aed6732b73524990642ec869465fb4902a809309cae401f1bc1ed8352db74d1e1651c8ca9aa97c5b2ad4ee78521e1fd95b16b6361544d33bf09b1b2d1517c2e2e53e1d9e0dac17e4f97af8668d2dad47b2e2d1a90c3f40cbc3d4577c5b869cc352972edaf26d7ed3989ade46fbeba6dfac4d9003c79154355e6345eed0c9f2f0ab68f511a308517c282221a29755629cb1afda8bbbb0bcf1dd1adbc869ac2adc89ff4ef63560ea1dad716e535315ccf3d8315fa6d23b98461fbe5a3669cfb6117e6c88a667ab54b96463880913f10c17ce13c8d696c30df17226f1d42739ee81e8be87450080433bd092388451722a152cb05c5f4f68ac0c769c12afbc6336830e1df88f32db7635c6c9d9382fe7b7627e46de6de05e9f63fddd82a76798b7943ae91ca12dca588fab22439c8ecc1189f8870570dfbe6be564b8453bead086ec4062d922487fd3652999fe76ad0e95103f74ee25acf8eda68a2708e7aa7cbd082af115b16a5cbf7b924c5b02f1fc40e3f50b42e8e965b3a861b6925c566d499a4d48c69fa071d45f29fd8b1482ed8755c2b39099cb3843d8998facfd8e77b771e77a86e1805671d59cabd11330fe5685cec3c1ed302ac2fef948048e7de6e774915f2a51ad5f56ba7007c2f2318508d2c85fea9a733b5bc9bb2870f44c5878194318e8a2d51dbcbedbe99e1c514f30708ac22469c9fc837163a07c90dcf624bf9eac835bcf55e58060ff6e633e6f39fe4f7cb8f3351a5696c761b74fa44c2a5fa413c8f756b39ef835cf2e851983dab4f9f2f32db6f682b947b9b3fcd2867707cd4291b7283fcde13cd92b187a604fca4cf813fd310ef7ed1596bdcf0c0a6ea331c9478a7bad013e89e57970966b7a04b2005f5e1d04c9c593379bacac4cf4c420ba812f21bfd994c221cc43750469c8ea164701cf5b5fcf58b76d48a2c880f77c63326c95d34fa21fd2440bce99806bd46b477abb962777a9ef6df54478f7a900b927e1502649d64cdc793d27c33115279aee42c2f0342986d7a33934df8bff9fe7b2da6393c8c116bb9cbf08b0e080e324ae7d15295a5787231035be8181dfbe4c79b162f38feaf815fba0bb8c4eae6d4686afa5416099469d3853178236981fad4fb4f2db735ff0b70852f148e1726d577c8c9879c2b0b865ca6bf9a42e80928d59f52f46263abe0eb40224924e05b08382fab14490e02f9d321eb57930706b354ba39088df52fe9e2c8b4d71b7ce7c9867863ec2670e2e3643c8b38c95c7e92f41fb93de4a8befbcb5cdce74d091cba0474eba8648e61d1794b47916ee3db0640006902074264bf25e9a726351a8a437059d69d932361cfae53546a6f6bda989dd9c1731a62f6cbe73fb11e1944625e0a0b161e6ebeb83771fe8a2dd57fc735c42eb30722dada102ba224436d185306657891c8bb4da80f9663288477e166b0e3820f13c871afe4e7c022fb19777e8213805b23d614118fc3b56b9509ea00efc2804d96d463022a48b73a577872246aed0076419d5992410851df3f50f034a161242191c28303984f30e1cafb0ac6131f65989c05c783d8f17d6af7961fdb56e888f204675d0fb34f11d937e877a20d1da80ee88dc1ef7a855560245b94e16a6c3b000a365ff3a2bae5ca8219b3ea0ff3b510f128766ed42a0b3405320c591a384363a8d6dac97636a559c3012bda2b0e031ceef59a2c5db6a3ea4f5b40a98ecfbe7eacf110fc04e3a9efdd42f590f6df4f4d52e7001f72dc4d8668bb24d99e91941c1422a5819bbe2cc92361600c70a0fd04e312e8444c697bea6db30fbbd103751661a879f581f74bdad9ff16205ac86763958f3ea33f5205a3f4a90c11d84e81652d1971ee8c54fcf5b3745539d23b4bea80318a8822980b5bfe002f474bad93f2d7f71f6729b12cf0080951ace371acaf5e3fd6835118d53cd4bfd9120f792b1f43ffce9ed7f5a7c523fa588f9451488462ae63c9b1bbddeb4615d4617faddd7a7af65a443b802b17225945a49c57cf81b9f345a5077f74c4fa3293d6fd2e1dfc159269b1bfbe632346e76bb07f1372c8afd0f339cea5a7256c185d040022392819a9c856b51f7597bae7d845cc9276fdfc2d117cff8848f045b1ff55c9def8b44e47dd2d240a865f54b542b29beb036eb39f112edc2bc7a0ae8adab7fe03eb8652a86f6fad7de26c18e430a39cec9c0ce15b4545100d50b6df6b8ce8275dc6f4adc71981e2f4b966a5f0f13fa1ebc1c03192f9bd29f36b0ae2d714f90406156e4727ad5380fa781f9ceb4a1cba583027d5ad5b5d0e74a1346a101fa67229335bf190f32fa458d205efc66d071ddf489307c80da08ef44fe2e8c5bcf3f3142d14ac7f24e93a4c7f99b6cda0d2f780f26cfbb9ea93e1eab2b981565bec1f7800f5c5a731c818b37a5f6f05ad8a79866cfbfaca23c99bf1da38e9eb42e628d0797e30e6987a9e90dd1feeb5d6cd39baa1427c3eada1a16e555ac1db0889ec5766ddd864601b50b54a1882f2fbec67945d421339ddea67cd545d3b0ffad5576b2c5776bf91ad7028185cf2c09fd6842a9ff009d048b88df0ef5339ea096d6d4b9385bab85dcbbc3e41010e4e9287685931bf469cfefa543b0af35959e9ffbf7d3f0074976dd98c2a5aa908cb93e692a76687b1571bc05718bc4e96a4725b2f505e602d08bd1d3141beea26f2ce46aee0d1c8e2170b387329f6ebc5c6b3b8461c654ee21d55621a557f74253482e6f3137a6d56a3eebed87a98931e51b81d9cbe35a0878b649eca9d05bbc27c6fa69aec607a4e8698343883f4ca27d187d694d68a759d646b3f2ef0febfab00a570949419179555ec8de8c81c240b3d2cc769e89a965c17c29e7ae69b7fda7b0845644f846a81d11fe4f2d04ccf8c1ddde4eaad98b0071949d2b97ca2a93a898c5cb1e64347b67b8c7b16053f6a8f3cd87af2599805f2251c30b2385d9ad022c7a600221cf12da476d32f2b529fc525cd8a7b391a3d94b7dd61785cb7749ba36837735404693eed3172248f5be2101eda16b4f6bc514620c5c6298a699064b94562268eba56486acc5f4360bad458988602159def21a3170a29c8a623b97fe327983657e4dae02d252d28ff6a33c8120b141f9dac36833979e1e2885ea9bdb1975548b6ff6fca7f57bb3ba6a77810c93d7acf2f4243d916a0403c405cfc74f643e715af121223b771fd620ff7361cfbeff389ec4ed43253bcb707bb23846861580513c4d38b23e0c3379f3b9f58ed8e4aa4dcf3761af0f27e79beb4b628753da67f9f19b6926978a893766005acec485cc07808244cff1b35346204892a1955d9c2ffe7c8203cb50dfb6ce2e3a1dae108e1c7cddcc583db0643981d8f32f4e327c68e608d781d7a6f868be2bc3258f5aa548aec90bce2daa8c08cfd7b70c5d84e57ef8221cc0fd2067daa42d56cc627e1c05a10cf921285b797b08177c41538b0b86bfebd6e93369661fe94e0e9c85d16b22b549674d47a1a314717acc1902a1d113cee8bbc7c37e972239b7b73aa3544b9c40c4e5dff91e2815786ccc2e58b370cdafe52b23753e187bd1e6df80992256f4323c09805094a16f150098114201857c662af2a68671bcba62c3358f7a919d6605a4fafda5c4eddd30e61b69d36f260fdea5ff7fc732626cb5a825ad8c5cd18a9a058b1a2d411066950578a5ff460c14ab7a5513963ad15b506da5934dd60ca38a3a3a1c2e84867cba5c0ed5750f191a64342f86f6970628aecf08c3123d6b9c1b40b9de0d446c56e01b9606fb32c3610fc9d9504334e1e13fd94c7b28cfc4d710dc2edbccc2999316c229ccb0e7669e0ca2ed876b9a5afb1648f8675465f732c1fcf56ea7f7ff53f3c90b69b85d6a9b707d98523e3724ffdb68b4f7cc296a6dc87aec2d477ef420a9a936d227a4aeb85533a6e9e9a1886523c8ea3367e93efda728faf55c20e371cb798b76b2dd287194f1976731178369f618a7353957889af84bfcf1ab062a6e3abfcacf88bbbeec7cd0870301eb5573eb9227fc039a27a1126c0f9ca1d7c4813a7fb2f29f19a73bb889203d1f0b766a0099f243bd4c1bc17894ec90c17d73adc58536f1e7afae8bbc3cc24fbec3d4b21471b1f6d72f5cf63df8dcd105a4d492fb0bcc074d2ec7df799531281d92c93b677e4d0dd69ee1eee2ab25388057ab053c160be8510b80f5f421c1679f13adafcf105d131845feeec2af2b3d7a313756f19c88969b5377adf8f83de525a0be9e61bb8871822fc9889d340f218de3a9512d086e8f8c7e3537fe3d63cc932f0295f967f9a010c10ea97e305b35a13408db178075d045909949308c5b68882424b41b68fe48136f807f3d220523597d81b264fd7183a51a666f771db679e9208a9bf807c8989c8e4259463df238c95e004f258a4e9742a50e57ceca33d15031e6886f0234ed18f4d6832d8350ac1525d5b11bba6dc8742c96ee0f404c90f2d0f8e474d8f124ed8b22d550f4abfae6fea1bf8ae7d8e1ea78cef244840e992d68232fdd7411c7dc5273fa9d862ac70012a6b948e0fadc9921102dea4265e90fa86202f4dc73046d60a9bc277bdba99ffd0fc3356293aff094e234837aaf9fa301c6498c50bd7a525646ce97e48f22946a092e28d4306491653c06183fa76151614d10b8fb7b51dbcca7ad4763d9d7b2bd7a02af9f67cd759f61d68c7b7dba839e676b368b07bea632198b583d4a896c950c9633854df40de1d2805f768279e280b4d14dadeb4a90c80fd0f1af795443875f7184331d307aa28dba3fed73126d1d27baceedcf376de52a30f3d74d09f9a0d5c08e9ef211afed3397ace994a39748325ae53bea62124348b15a001934886bdedcbabf89f6a81e8253c0c1bb47ac18e9c7b859f0fcb1d9240602f804ed1d11ca8ad043e7b60d356da9d347a8472d600ef651dbbf00a2718d4f5c4bc9a16aebf38c4b950f59b8e501ca36495328cb9eb622218bce9064a35e3eb67dbf5c689f5c2fa8f23326f2e1cd6b320c71c5f6872b588432a69196a23a21416a3b2c3bf16d64f6b5b6d0f7b079df2267614dd6847fc2f3271b4409233c37f7f6a5894f1d19ddad6fa392b2ece2c5e578cbf7da4ea805b6885eb6985b6e3d004ad6ad7e772d6f3c61c65a7fb255e2b36d8bf583044c08ab97e7e5e6b8442dd0fbeb27b75fd2c9163de2f25926bdd72f8cda9e2ed8a97c3002675f0847c9d647e7fc50db3699f1ca41ce9a2ffa202c00c5d1d5180c55f62ba859b1bd6cc008aacc80a7392c51d971a98ef3dae6c908d9a14229615c83a5db97521dc4102c1e73954636cdf43c79fb46106821b8011f781e0b6b5314458bb56566263d1b122a54115199b96a130cba02147c47c0deb43dcc9b9f08b5162bba8642b34980ac63ae173dc4842351fc1c8a551afbdb58cb2b295490782130daa4f359a6a80d72565865be8bcc0af888594903ea0112f6c8d923c5726c4081e8c856110cc7339cef0e2d097ec6582b8a0e035a7630ad3052bbb189f3abec9cb29822cd92d9ed86ab7029cabd6297c2a33d33024ab77167f9d7b2dafd5445ee24ca6e13a366426d46c7278fef0b7d6748faf50278bba7f6d78a85a9bce97f75700c9e434209491709d23c599fc95a194340402cec351ecc78b946ea27cff1da0ecc2b1f8b1a648b1dcc10f799cd0f6b65f95c4012445497e5ba3cb9f51964a9468940b27bde98b487218fb1c1fc72e9af6b866f430be2a67fa376392b4db2f4dbf32772671b6ae55c7caaa8023c2c2f036ce00ab3d6b0eb1c2a3fdbf29d601d6d6925de9cb1350a179d7ef95ec7fd74b3063d2a3a66a04732858e9efac5fa145563843bc1c30a2460888ceb26a89faa354177e312a57c60b81418f9c564e4136ea81a34ff0daa1e0e6903619b3ace57cca8affe5aee4baf3d8090cb275a510856117546a3edff92791911607ccd6b783908b7091d14cfedf5f2413753d1fbf490b2cc45ed5c00cd18cb206de96bbd48d044be3d06db2b353fdf30cc31b5de8d5c8a3b547b973dc4145978bdd229812e8485d9663ba4d2f6a93d591cbd3d0c8423323ef34fa203d0b354c7e7f13e1c33c3fae951463dac86e756aada29de38027ac282cb876acda71abb63f6e8d9d26c895b161644df1b463290b63cfeb889617a5ad13e0221194c9e6dd050367dd7b4180bfdc5a3b2d8233767b27002adb364edcd9d6a274cbfd1d874421c2eb44bed7620cc30c91f56a57eecb00647556deff339064a123a978b45aedd6738aa6ae6b52d5d1085b80564faff703edfc3bd267cb60aed115cbfaf849f682400147e75e3878c7a01c01153c3c6ba380a336372e2d6dd1267d044ae6ffc11e0fde6826c2140c34c0bc60ec98ea9f2c20f2e40f4917ed6bb744792cf7089cf9234f6ecd71c51ff71f96b63570513094ebdde1d10787e63a8d16d566f7efb0f54b0075193559f0d4066325192f16ecb6acf0ab7b77f63b748e4a1fa9f8723e79bc0840957b7f12392931bb821577c3bd7a8efaef65d45a918ad00bcba8a2ac138f617a334fd2f25ee1165f8de09bb27558a6a7a42b00aaedc22ae5d8a8c01b9c9ad7ffef395d115d3eb25c6d061c47ce8bb3e446cde39be9b0b71e493754d1710eec0e5d3cb1f443be1e985479aace00655df7661e53627eed2e561aae02e90797f5aeb3c3a4f0fd7f32484b11d39331be9ae8fa1f4b31cb66e6ad29b0648db2370fc5a1844c4614f64b0a89faefe71c68a4b3ddb8be1b2407ee0235d8867887854fac054492388f8bcc2bc6a9c9ab69268724110e1d6b53b66de8565d6a6cba31affede5b540d04595507e2cdc262142bc0978af09343cf9602810d359003ae0fd887a8476fd310719686de9e6c4d6cffccd28ab0c2e35deaee41fe35d8014d3e68918ac6de1b1fd036263c80d6aa289233e90be53eed3703af2def785f6de0552d1abb48a447d859175eb1235fb4757893b87ae45cadccb031030d93f13b78f14ce21ed8925b1233070dde4b9df9ffa7feeceefd933e1ae4b52590b6f90a104d9493a708d8653c7cd58424e7be52e39ed882517e505be0e4e2b2fa5b47cb141fc4d8f029055b4953aece625275fba9206759f3e17bde240a8cb39fd0bb080080d703fa530f76adff4cb2c14380d81a4df6e182a50cefbb7d0399036332567d56e0ac17cdcd92a322316eb19ddd7540884f702ba437f8388d95ca63986bfb0dc0dda282a71bbbf45cf15c3277232bf6f0f7d6ae8dc34ae4bab042d7f18ac68a06eb330359fc665f785e48cbd9390ec9b0a4d14062e178909dc26cf046ba860bac1068fc9bdd94e612012be5f51fc06177ab8a9f32be5e0474698ddcb1a065157a10c4703af572055200b443b8327f04560adfc7cd4f8f5ed669c9c9c5c8d2e00067d9bb6664fb03745a120dcd53f101208c3c2e882f887758b85f362fafa93be0d6017d667a4f29d6a11ee1f2cb533279d7d96ec3b65a587f09c73a34933ad5976ab2de1b4fea57b398bfcb4824cd2534f7f3084e906be5f3ecd60506b00304c59e877760cd40d05e6da8ce086b4d65890b24187db3941a2768581548cf117b721c483ba529d425721ad2258d46e3fad61cb270c7c180294a3cd1de916bc659122f96796d6a8acc91c68fef3874923086bb24767ce2b9690d9f30e6354ef5c86db61ff52edaa8da31c42ba939757194df9c17eac923727041c3f95e5fc383a85346399d51b4effd5683289400781776d4582f94cffb521016da12713e55e40093d69ecb3e9587ad6ab5fd77ba15a0a3fcef6d4f7c5725b987aebd29a3df0f28e8fb325f5145c755e5e270d5a3402bf6fdc79547cd8e63bc1019fcfda606dfe315e3f26010ae29a1c6e19a4540ce3506f7e4663cfcd3337a8f35e0d335f7b0bfd732e67f7d42d10d8843a3b5c44d912e83b2051d5bc56010ee761a1c641317cbdb098deb8502a08e5c2e107fc86febcc07a85d85391e9b7f754c54de9b1387bed1562f0bb39c1e5363aac5ebf8537821a9a658876273ba6a3262a654b825601cb2e6f242d595903136b16b047c6d3bcf6edfc873f05c35be37277e03d56a40ac5b87905d1e9e5bd558ed0305f10c9168d799da3895750e2bdf4b5f8b2b6b65ae64d40efe750d5861df94b3248d0e0ff032eb1a5e2970cfe28c85bcef006cefb5b7901bda44b08b6334014c08eff33509c1f95578473afd7299faa6a8f937507758ab33626f4d63edc43e674dfa1e5ee71fb568571438db65341e8a929f3f1f1a41b8e3527b5226565515ee463b495f1ef5ba42f17442f5003d133a0ee6e71305d9d588a534be3c137b532e63a2b35d7f8d667cfc662145b89045bbf834e56d81dd041c2c184b0d22bf9a31dfcafa172a091e22cc8442375d0fbffa01ea7c244f99d4e7cac29c6cb5cb036249250814636dc434bb91fc45cbb6fbf5ff6189607e149210e3d801294484b9df6e9e58a718eea5d5b5aeb22b5d69792655fb1f55a208e411048ac8f98ac181166f60c7af66b2a8a454a04ae8829223fb51a63b0db1b4e9e5a3c2aaa8f04e85ed7861a051d9859669a90a623ae6eba0cd955c4dc5ab0a3b702447c7070fa89bae8b6c02eab07a84b0b85206bd8ed208ce444585f6131a349cb143a9b4167bde39c0db549962f9f8041cfc1f2be101b840648618c8dd6a6ff1be65410a591043d99199584c82d58949ed9dcd49bba2ab331b2d23823efb5004d05ac8cb1019996d938e2f6e90e30670cdae1bb8d5aa8a4a9cd7fc13b9ea528125d5eb6663728c50438a9f3ec36e13e203448047f0af7579926807bd974b4cc0317ecb1373d8f4bfdaa1804d376579896d387277b2a4844f87497dceab85a4e4a8a45859ccde7e424b64e2b3a75b943076a08af4efa684d93f307cf9f4cdea04cf28267252775924b8dab8e299b000454dde06efb79129df686dcb4571b7ff97b10482e69855e028e0345ef32b4c4b9b1f9bc07085e40d1edfda1c709b82bc7a8046e0eb0564b4e85d56ad64b8394df6340a9f79f057696db1c5eaa5578cf1f66220ff234b008d6a387a88b4f0456178ad6d9ebb39c2987a4386dbe9e9ea4eb2b65ade2d9c7e065e41b518d587ce9f4564c689355685a9c6f2591682f99c40946762f338a0a21ac10377c24df98a789d9cd8d38a65045318bd8a0151d0aaa0592b18aa08e2285d458e546dc24b5073fd17e21fd9cb8ee92381cb405ccf326844c251cdd4107f89e95e0d5f55aa55791a6c8f7aa29cb87678941b4abde04fe7e97f8d59b3c8fd73e5e6688a1097ee3c3c4976d6db037ab9df753d1799647989f899e16f90f1b214042969e4d8a5e8b96b2cdcd414a203951b6b7c01392c91ff15d7037999419795408672ea94036ccc64fcc24426deb8c646e08506c44018d90a4acaed816f2d8f3115338be836546fb511b021c1a8cea77a66180f36d4d285a68067b23d5e27e31566748954bae01a22a85804a2e9433a922823e2ae45370652132a914d34f85c0c57092cd402110c879cd2c3de318f5e76f775fc9f2af6c17df3e46b2c6d84e67c800149fc586f83b3b7d6e52b5852d33ed08f9a40245caa332f31d7587aa87a471a4cbb417cb607ab46d697dc3d85af78120820b6514d775a65f9be061bf2c2e6e007739016e4ad052710c01c30df54a70d568764dca94750e812296c067e03b5f2c8416d2cf0412442e1b1d929ea12588a7b5a04a10c48e2b415f60bdccefa2136b8eb535dac993fb61d8869b401da9416251d369429b7f56492ce7f83c4cac3176e4f346063b538907075dd93cd5a11153996e8703e4fb890077ffaab8d4a9f219d64ad2abd119df62ab91729a88e23616331babfeac0ac14b2be705dea2b5d5e6c094829cf1ba79e5ae8e390f95de1083950f3f53b1dc810f2929cbe9d226f9a864f24ce0d70cd7513062651d0d321d67c6e7f29e94ddeeb9ec6d8a5a59f4209cf5cca99c3ce68c55ec8a65f828028625a174735c0cb9e0f6183ab166141d35139b581342d1ec32b1ecb367170c206c005e6843c725dde02c13c3c95a5fe747ce9826e6503bb7b95f2688cbe9226707d9ab6d4f981047a2f51b0e3416ab2fb237b7337bf0aeba160f64a172dc1735e3f75d2aad02d8b2bc7c106458512cbd84db23a43da0d21f4de0189e82e499cc30f635f3a0292272b2a3cc043c04276102788c926c3212ef87db7ef92d71353f6be2f66af893f6950ea3861275ab111488b8b29a3242c044a96681fbac6cdce50a0f960c45fc299f56acd049d8d3b1ec0e9a85c25a0aaf587bad4134d4b974339cfdfcb40bf790460b8a6db11b0762e76c5f87390d3b399282baa5cfd9679a29dd9e7fba7284104f7a144b85be91833c94876f67438226635d3905bd4ef6f47b8f1ac2ef3e141ff6ba12591ab56241a49e5cdb4688e4f9b2bc7a97dc6d9c60aee644f8273851fb4ea9c88288700b20eea2804cd5d692457e1eefab7631275bc22df53dc464203817de8d3625d45b09fce9e3425907d529adb3c4fc74486c22083da04a1b46d6775677382138583d184ca2de5420ce066c4efe3af92f513d90530084ff05196301bd135403deebeb6956b9eafec661aa83baef15378f332642bd005db6db221264b4ed0194c4b8c185068baf938361a520a7889b2f4e0cab8b049037c8f0eb121a1a1e4fb4522215973ce9a222783b83853ab4c5ade81eeaaae5211de0b50c272d3031894657ae4fa8691819fd9bf1ab61a4698f2a9238f019e432d2dfac574b54e71cdb16f4e801f5bfe2e64862d62b7936c90bd44d792076c2be20ab6102eb1b8b6976bc108276ffdacec73582d36aba03a2c0a1d35fac0896e2ee52634b8e4f2a46015bd626530c43ef5adf969a4e77cddd25082bb660c562fb65280e609876cfc2d0b8520e782db1fa3bdea03d27d96effb7914ae0f10dde1521ee05dacf11d20c7d813fb752d396eea8ce966f21e17f3c218e2dcd0071b9a50e43df5652127bc0f7152dc21d90646e4c1aee957cdc59141f5a94bad7ec656f9ae3c7b79e570c23ceb5510a842c5d6887ac0846c01f960ea3fc617d3574a1e37d420355773e47ea9d50cba03407a0419a452d91b54d278f199340e502b4376e9d6671dcce657846db8379d40bb5083f471d4aa6a11c496cd0616efbc7175fee80a0790b06552d5dbe8960ce4a79271ab129c173c56fc244c8c12c96a8b4333d1dffd8c4910945ab515a965a1b8578b38d31e7788e8b9833543aff66a9e1a08bcd53fffabcb223b0cfd26e30b6e77994ad18521b0eec96bde7163e0e501a67f5f884e59f2d835083598a17615b312fa18709416de1c6174f60c20a7a8eba00a7cb9fc325058bc5bc47a791151e4c5e01b54d6b6f9d2186c92c400a00be4d88647a85d0e9dee4a70f88eff74bf82d07f1cafcabdb2779319c2be5e300b4acf5375a7b030cc6f577a4afb84bb784f496522c2514c5102737dde6b86e0aaab99e81d9f021d6a5e6a25950d08cb69bc358e6e9085ac37b14a391295eebbcec9fa6c851fee1f7f255b3c7d16bc75a536c3b4dd31d75de1a7699f2946953c935bb4cf6f6d5a38f04861b7218b55958a61701e5341943a04843c04d4b2022676eec9d251865ddf1603b95d5fa693e19e81e7c278df13e231391db44c68d919b883e5decf68825019af1896dec878c1a0f3e182022a16eee526af558bb8c5340982965e2c0e60a386e2912e96221906c605065cbb6239029fc5a5132c32d914b36b133d80b8667ab22029d7cda83fd1b22821d9fac7707f347b9cd05dd48438126994d07744809db4b0c8ee3e7570b132ebf848eb94a09a674d1358627a4b0c94613ee5da2a7c9e217490316cc70aa41f5b16f072cd331e774862af48407d73561e72be34418b3d52ed038a5bb7bc5d5ac922ef66f42adf7b45ec9ba58286895fef7bc46e26819d506ae974485c67008b0ca0b2b7f66b08068c38e40ee8bc841793fc71f19616dfb758d1a67c7e0e1d58c2a01c05e8fb1acefce2ea32dca00ebdb609b15e5465053aee6cb3c3a6adfd3f7f026a2326c6c6671cbbe9caba7055336d0640b1955c2ea6503c3b7819a4afe9f6b779d5ddb3c418d05a89d18a98dd3dcd4bef6157f9704d9b7c8b589be741be42560fe320d6cb222b95d54ee8b36796b6a91f68206c9cba3bd6f59fc97689311723d46533d9911a2020d00714ac82a583a6a692d4c9af4c143975a71b48a39094d7c18771fae9e82e8a21e016c7d977a49b7cd2bececc4a6c066b8f0696d38ffd9c0b9a0e0f03d43b0fda5e043e9d984ff938fb397b80c3a6fd1e06ab18760e471386ce14193f973508e49cff77dd3eba8fc13bae2a089b2153b6e2d72d09380ca3667145f2264c2620690899f856274b772a90b9cbec98e6d634d019ee0a206bcb5b2fce383d08fd3fe89e3054a74cc0e6009056c53966870dea0a2708b260ab810e8a23c7f67cfc73ec8a305b2114acc029a0ca048e1f710dd34ea2d07c41c76b0714e94bec82b6855455978423e6119a9f74f81fff5ff152b24ae0e08a90e9319fb836a751e49184030aaa745e328ee9f2a95ac7f966d2d51ffbcc879999678b715adb5d2de0d6a3710b7afa4d5c06adf5fba11b35042b9c812e0d02de0c815602adeb4322ccb509da987a9be8ba82a766cd8ce5d8fa299123047455256c1ef301a1820952c13aaf0325c2cf2a9b445cddecec42434556319bc96b8bf0f2c0aab8a130d7f37220bee757a367b7a77685cfacbb4757e3cbf5d4e360c8000ce9a79ed19d46872285d2cdf790f4d7c89d0b3fa31b3bb320e111cd71039aee0cc1989d79ead1f613576fdc3911f8d4d853da27f05702d48da5dce80760f1bd3474d11c77c6ca32b6de6e89053847250fd8804ae6526b179b6400a34ee95472f14de83d6c58970e1cc24a7909d32bfe601bae4753ea4b9ae5aebe1ca20c8335f37d6925f42cda0313c1550fc9fea67bfa05bfdd100b0be1611426a1602616cd83fb038409b0cf8e94956e05b180287c21934c0b24799b4d1e7aefc0d0329ca6f6285eedff15b5a726a7a61a09c6756e302af4ca27c50a6fd041084086da04b0040812a7c5b9670480faa91f4b751dd660973b5d56480767ffa8402bca9d94e0d313c76324ba170e25ca400a29f8fec9fcc06c0a7497c0d381461a8e46aba3da9dc960a0749ac68b1df659ce407a083f81cca3783f3e5d03fe2005508ad01a73b0f4ad4de6671e2d525b042435713481ad5affe803d70ebb812406f2b22b051006d60d41c697c21088b8fd7c180e141ce1a57cc30a02d59a2ca06b4089b54b7449947b374cc330c42fb9efa34ffc81d86b768261fb810339df0c8f173b600703dc93e10d215db686811316c69f9647963c79557304246456994bc7f4c5bbcc0655776e028d1053b41137a5b902db9d31c26d6b442d53b2a988ef525a788cf46dcce0037fd8bac06e44a261a2ff4a825b1d17c6382a50c0e2edf74fa8f7b8a83f1d91e336654a3379dda73bb8c0b79a1fd2fac53b69b7527e0cd637559997348b191324fbc88f4904e437f20889bfdd8b1f19023c612ce190e811e850012765c7358adbc606fd2882ca2c1e5fa065ccb0a6d0960cfc130e3bd69d3f093ec681e31be8197a46e1676f72af83afac407a2a9fa713ef85d9dd3860afd21238dc3d60da0f9adbbbf58a17eb75fd7ce9c222efcfaecebbba7d12a937e7c5fa8a3bbb6b7446b5215836f0b88cfe8209f7c5dc9f99253132b3d58ddd245de9c218cab56d94d07b3d0251aeaf68b1635e31fcae0acd14e55c66d4eb8115f4bad39faa8905c1dda1eea90ef8550bde62b82312419da876ea3d4b7c449ae4b4b55dc2f11ef0c42ed71835ca2963594913780b8339b8a2987a5a816217592548b68391a49b64d1615fe99cdadc1d88ab37397e09b99efe61f6a6d29d016aa3503cbfabc4d3de26009cae03f71d6f7a2a1e9115ee0043ed04d03cdffbdb9c0868070e36e87dcebb445c4a277c2027fafe73411093f70fa1ba2c87667f2a0b40294200efbfbb766a746256d52b10c280745d11f3f74158ff2b02cd47ad987b73a02ecd38e0a5f9abc9f9355265e0d7b8846140c3fe1232142c1d431ae1f62ff2b68052d2b0203309e4b84a607a9d359b276240a178ec001b76621df1f9b4d0f6a806c8aa7d798db9b946a5328d791b706d91de5af072f16da03271b71071b53eddf731d728f3083b92358ae51dab21f9735d3f209ea00f29a69c9d355a6890306af74af64e186303afc6cdf73c3e8b205dd3cc50ec83a1d67c24122e47dec8c73b5eba09a3efc456633ea66255f4a545bd1ee674e17e6b31a05683d405163f8d73e174870ae8e5f51f77f703315d8f5f4a657226ee7bb4969049d3c9b83a3a939e695456d12f616844c02140b55dcf642fcc43af91c7b733f4cb1049fb2d18145f182f218bfc8f7187b767df06c19fcd9f22816146a6868686ae62ca0e6157838067061d0c64006b808c42833a9aab59e1540093786ff550427fc0307408a5299332fc2b5965ed9a046dff150b8f2ac7e730abf54b0ea73501e504af61591baaa5c1e46f64b76d7e261eaec3ef1d4d008453bc824abbb87b450d6ad5c469f1276adb04f16aad882bddc83b0568567eeae974d4f205fcc01c2a0a6fef40345996125999dccdb62e8836724ae8089175356a1fdfdb49e818b03926c4ddec909cff8c788b4143d20eaed4b76bf23095974d18157f0c464d89b6aeddcd5fc821b11d49219d5199f8ecdccf38ceb1da3de0ab074efe8e599efeccf039942c50230bb224c6b4af49c6d7f98caa78f7ce84851959d77b009fcd3c0615baa1e3457662945b9e0abfbaca69c955966b0b90613e56f343c0e63ef011159c28cb050955a582c85f4d691cdc3876005fa51b76609e39ca0f669a9028e225e50dccc2ea9538a68bbd39aa936cce013d7f571157f1833552f07f964c5f80b9fca0dd3fde0e68a12e8a4f06fb9f5b8a74fdc802be5d294a9d9cafd55e4019e0e22fd94dcc63c298ad37c4335045f7fb0435610f2be3915e3acc6a9843774374660cc1feff5761c95b9cd3ec64eeda95931c03ebc4f73062ef15544897b55ebde60fac682c3937ad48cd4bf203285cdc9fa7cd2eb678752e02c3f8f797b01dbc7ab3c9efef1499aff6bc305825075e321a42677344d3c4fb71619c87500c3fcf96ca6248f1a66880ae73a634d1304ee43e95a231943590065a31c8edac13330eaee4834ec5e3bf3638934cc21673b4156a953783e2b16c022b70699b0d1eb96e7292922c336490d33211038cc81f1ef6612f37397ee3c4c6ca87b881eb2f5538b2364f13d866c5f34fdb8476f7e2cc9e14ad2010d3cff116ae4d5f93f667e5d645efd098d7ae1abacc95a1b611c184a41316e22b2b94b319b19b153a9e9d84d454ba844d96d93d4c20bf17d44d7feee0bcf8abce7c906474bd6599fe6a291e53f27053fb2fe66aa2582ec87f5a51aac6a23a3cb9da43c266e917f6fbc29ea76a84b0d6284053ca5e6f88b0b339d15fe58c4e9802b0e13d85dacdb2bd96adb52368209d0c189a1f5f8d018be2e985040c8a060e90143158de8e49a7b4d45b847be15fe7a5e9cb0142cd0710f42b8306bf21118eebeda8e75d16241460b11829363b707726aa3237c8e40b04127652a5f3619e2d8cf537b1d8bef4d661ccc4e4d91f2e045b1b955c659480e8b6fd798fd55ce89c533df5b33817cde7a362e5736262a7f1d82f0d1eaa2488bb0a205e6881485af935eeb43306df02c5343040687ce9627dde6768409c832b2c3bc96627f040350b461ba8684643b6d033bdafcac7257471feb00bff5d028087769bb0533e58e6dd8b6c5d6f3b0ec6d1f2c12f91fffc954922571482e90027be5fb7b600891d0ce19acc26ef1bee003e8ba438787f1d9483817bb3ee7be2bb4dc5dc82d1cb46af37ba3a0a696a69d694f546db25e6e73d899a3c8b824931195f20f52178e5cb369b567a2cb1e0a7ee51bd0d677c5e047969ef8ed708e447c0939125d330e7e9b2da6993547751cf52b744449e3ea17bb73dfdb7500d6b2ab4e537ad13c7bb6f2f456c37aa74adfa11db4502d3f9ee263a5df77fa806cc73c3bcb92d98a89a709debfde9678361651ae913f412fde9a78b67a64cf7b26fd4666a98ef26a254e44a2d6f61ab13a25b6c028daf64c2fcd86d31918a230019c8a0d8e115e08ca33995a444802a919395ca54a72a7ba53cf48613bcf1aee64f33c2215abadf9153d60a0ee3405e84180b058e98b29aa79e7e58ce4aba4365f7eff50770ce4b6ee462b7996fdf905af185c403a1d876a6749fb519e1322372a93617807229a0a686954fde9002137947658e789835b74ce9372b6a52b20b622a76a3ddeab716ab677015fe69d1cfbe20a0a377a93ca222b3b49d3f946c4704136aed762a56942783b4d4a68b96edb714814cbef13ec11bff8bf36d25c8c1745df87449811aa96890572ac475ee7ef6af2bab916f2c84a93da64a109eb79c1510ae448c2b8ebe931c0eb3325924a683927654c76bf27789c09e4b4f2793b569597761edfc08e58232e39c5fee371f98e6ce15bbb5da7351386cb2a65ae3651a445b2deff8f7bf56a522257697ef1873094b157cd07cf4a9b91f3768b8c73014d05d37caf69ff7886b638bbf5d5d0b2115ad5e7134af2a46609aec944f544e53dcff86c96e2ddd86b6059fb8e188b7dc72c733d4bfd4eb7c9c5b97630528bae1425a719702dd477eb1ff8c91ffda1acc6df242118e0521cf9011ebe44cbd0050f0d17c173b478c004749ad5b43c90e17938d1cdf50b8bf1f79fed6055a3f12f340713c46825c243fdb4ab02dbe2fe04e5f63f58861ada9cf280e9d752d393b06898c1577d4bd840353443385e60a0b87af2669899dcc401299773f42f8ee37df728d982a36de67562f41db342167e042b9894f47f475e81e366ac171cc0f6f214c4eeb233a95502fc0516b6332f62d60eb851193cd265c5a0383e530ddafd7bc8b60f0606a499efac89985d56e5ee8f7066da79a25c8326824bf1e4bde52d6f6c6b5ce50e41de7c11f5e71e5daa6b1f58ab0df117e146ea3cde8ae9b4a0fdc08d9c521978f71aebddf53ce2717a445a3af835d54ca77892c6e56eccd67d0f2adfb385df8999255d66b2f0dc523f9f7ae0c05c8cf38b4d6a2f1b1d2359db360e4fae6ac8a460846abcb9c5104adf428fae78a5ac2113b8c01ee3a8bed8000f65ce92b997c47c5f89fc2eebbf73ee0d2b7fa6d75d1a07d7fea24a6aafe468e8fe89f345e008392baa4fa004824989636819dd40296634d0b36b9c16f22ca73c05d54fdcdf758e39480b78492ca521c8942438b770aa205d3994d63b77c7eb81d9d860bae0ada0fbab29e2412d795d50f5baa9da496e72ac7d5b32fc2b52f15b41e55dce7c5d41fa16422dab6b0de491debbdf58685c75ca9ca08325d3395c4db8eae67bcd246da292c34ee283a9e058d165b239f25db0d5c7460e85dd7f23ad0f5854bf2810ac941b576626148d263e9b84e4ef8d88eb162fadbf96c23fffcd8a4bd418e385a262bb2145d4962d3a88520bd0cbd9ad7746558337690886723ec1b4180b584ac30e845438ca0eff89a94296a2df239278e8ce5250f33c9b6ac4ae53f9bed8f1685ceb46a0aa23a56a8fd4c23f66f2705e3fd35a43f8a67c67096e488c3fd5107f5640bab158bffcde923cdd961bb99431db1d1c76f788ac0b40107191a59a1d5b1aa35b3bd9e6bc66b12ff1047d7c0b384b28e3ad33ea3287890f85a2b3ab39045e48f084dc5ea6c5aad02f989d71f9f27e0005c2e3814ff15c7c121a93c046316d30080d6a555267813210e4bcd16a0b862f2e667451eda92bdb51988ae39caee4d5a77b297d1979d538592795414ca8af49f731117e1fadd8236540df83a200c56fb5831c6ae76e33a29819c043cc11b5f93e80675e1fe6506dca7630e8f176fc125928190f5a625494506ab67e02c6d93c5f869ee767b51f8c93d7a9f3caf9d080d7be105af830677d3a784417223abfcf604af1f654572960da25d329e6738c8e7b8e5f65e9a81eaa85ed06371a5f0c22df0a65a75a7eb25bb3c268ca5a4ac34011ef00d594862c0e4cf2f70301c70efc529d3ade7bd252d57587a16544de59ba6a7e2d7f14f793e3b2a9fa420dbdf6a71a9f64801706978a2ddc4941946f6f1a4061bdfcabb5fdaff27ecc05fd9d77d1fd89e6f2be1ebcbd95fed5911283e18214478b7cd63007ba9c433039fca0c496f51edc9bc88afd53436b2400d40006e9331d3708e131e356ae972b6730e0d1b06367ea0f7d319f8edd74f6bdca8d843d31e573f4b232fd9d95582874500202ad992d2fc1a465c68579a6b1803f586957430d61efd05d7c19d1a1aaa2b46f472cff8ce9ea633f6bc6d037a47a53fd25302fd3842db5ce1c64ca54b04634dd8887e4156ed2df2a33a9f565db276e4fa22e19ebd0efa6b695dcf16f8b60a607cf2c5a806400b48b28bc605638880e67323b28ec9793ed7e473037c6938fe53abf5de595cf55350f8818dd819301c04d1522a3c16af265a49c88a4eb5e545a48c691ffc2255fbe503e5bb397e4dc01c7724c13742ea79451ef4576b60250653716a612b29de19af58af20f4b756695b4d01420ee8663e6a32aed697dc5ae8f5a7be96a3a7d59a0ea4e9c766a09dfd9803dfe473cb556d61601d87818b42e128bb874341f417938e4b58051be46d4c38a79c79346af0aa225065ef305c3fd72aa6d46129af7b10ddf266b25984309d33047fe1ba8e98dac0eb482e20beb53e18db9e6d5a114031bdc4253ef79de6f32d169640ca86a3fbec23d2f175d1e2bd9360aca86d950acd4da1d5b7ce79d49d2b249c69957562b525c5237cf3d8234a81d660f8466cee6c457f4c9a274e1881767c14d6cf08664917df7f956fcc86ed5c0e0e607896781ff6a0deb2720cb6b2f07954b86c97a0caeff6d06460b0b4c84290dbe4a3d18483ab8ce43a5fa367a5a3a560afa503b9544863c21f2a1786283c871613f44742649999e183f2912a1bc2ec9e29348ac06a4f6c02a1f390067f2b078c9bc939f186311908ce1ae149c97fdc9ba9751ae7844f0e93041843ea1ea73811dfb4d846bc83ade69ff0514c29f9b6f2f4e68e74d35c7aaa0088a935ff7a1887bcd325741da145a6fefcada011994cbac36a8050cd44c46d4abf87ba2303c47d8c7055f90e9e60582a7997a48f29de997ed0abbde45b83fbb4743ea41d5e820de6c4f101d6c62255a485b443fdc3c411d9528bff10fab24fffeef5ddac118420fedc149809876745b430945aa26215c52d246cd1c3bf40a353f607d90b4617e9c2ded7e4e655d43024f3566fca64ed1b6b6ee2f0d665411fa8deab741d0ab63114b1f23806772ebbef2460dedee26b1d4825908cf0c055de2daf540a1e4312ec33992b00015ade1205c1b2d9f42eeb339922473683609f69dd1ab5769431806ba8f6d380f5c8de0290fc9126e017007cae535884b0de0f19ab6da46a37a528817b85bac68fab35b3f0b10292542b6c4ab5bcddae29b65f67d5b5726058a094a3a35bc6bc9a9debeca694a764d01241f578c604d62c1d36c8898d02dc04afd8db7edb753c084793eff4b22f0c24705fcf7464e920828c622fa52c5c3f29d54299b9d66e3779414f752664216399dad716f75d2064e83956debd2184bd594b327d77e16553740328ca802c24d933d79b34179700673a2aeca403cb6d357fe73f3be7c67ea1764848862f84f4c97655d068dee1afdda1dabaa95f5a3697ceeb11fa5d2d65e71dc34fcb3acc13630354a8c000ce85cdb7d2038c3424de2262a8e5733ed714eede26b0a36b5d9a1109901c101243ba71b37e08b2bc77de0968bcaa3ea5887df08ef65fe72062951c177d5bdd11e2a69dc363d61873be6e614deb61223a818e6cdc8d9178d1525893d51bd833aecd6b89654ec405c28e65751d9f2527471702a24a4bd9f5988884abb4a3cb249343458f51f7be649d3bd5bdecc72b4c213f1914a77de08e94c4d8bf10c049fc64bbfeda71b4c399f290169119060cb781ad132d02f5ebb853d9ca850b6dd84fc602c4f4618f6ee3d55a38254da03ec951e9279c73c420d9f29fa26611d7f50ec37666cefb746749d455a72094394a8b3f6b67ca641f0331b25a7b05161a3c15665a82d8ee69a18100b2235654bedf9daf43bc77789ac251c3707ca265b50bd454a212664d18fd739bf5ac36b480defb1dd0133cd158f5a25343b4a91f9c6f02c19c4c4b9cee5a3da4c44575e9e06aba00e3d5e53d677a0c38671188b95d45cbc5c430b63b583a632c23825ddf557e6d42a4ccf7d57f065942a6280fbd2a2746517b9d8ec5164022faceab4ae9c77cea9fc3b107941fff2e16aa5fc914ef78693aff0e5979c7e7ff213351a820da03eff3ab43ba7e4eea2dda526dd02b05ea0f4d531f51ad72abfdc0e17dcee14e3bbb815fc6a01eabb7f2c1e25ff3ceb67434b0df82b6a28ed726a83425ec588ce5cb332b45fd68a56a601f889bd4fb6359d0609f8c016e2e0008309d344223efe93e078dc9e6a1e3d15efac40ac3daa530cd2fa7070d643b3fbbd3e6df89b9174f59494be6848bcbb2627a92644dede1b695e693efa6396abf5d41b1151e3ef7648d8ec5c9f2b75c8d38702514be3b09991f2261b77928ae7dfccd5ab166abe00b0a02b6c65350344b548495772a8884acccb865d035b7370e42c645ca7c03a14537d919590b4e9a57a6115b5e18cf659de0a57c0d766b711f16ba363a416331f870eba89e73b2d7cf3b78aa2bef9fbbd0a683db1da3e5b234b73c1e833320525f4c59dfad6536b6d69f7f78f887efbea07176f94260bcebdc79c4507ce64d5801954d7d84332383ccac7583b9371226e80f29c1790a907d64cf342eb2945ee6d209953816bb8491d8695b910bfc5dfadd038bf4ea24858d16923c9c2bace9cedd3e04cbdd5b70289d79a22adb35736eca4567156c0845b5f82a1aaf67de28965871d6c5fab24759929e43b6227495ba4af31b00246a7c765b5a64626f473c28dec372ad0b874e474a05b183a13ed3a902a9b35fa72caea9968b7428c61fad7e4849c98a5897b31d7e924c34c99595c6db7092a432aa6f283d671096e1bff08e9fe7e9448450ff282736e8d7b52a4e6d4dac1153fa460d440eeb45a00228a4b4d011b48ae89d9abb22e9620ffb1e782415ce0ba2e394077fbb72eef4b68601b1a1cbebf6a98b1a8aa5b8bc8e30d35d9d8c75383a9eafc252d7bc47ee71e539534aec49bb02e1c9918b6ebe36ae9eb30b7115ce274d9b20a54136ed7a844984a23a65fc77ba8921928356d0a7f1f3c46d74fa938fc85346989db1dcc86294283ce68ad882d38fa348f63b9920ff28d69383f805b875b3fbf0f905cf1ad066549ebbfc5d86b1b0c83ffc3e2d8da246604d9b48637b562cf1f803af3be52b3e6c7dbbc67dbfc09025419172c395efcf59be72afac05bf91db7ea1268d07b1bfc6d2f0edf2460c71ffbef378002a0fa11d6a2091bf078c8742b0414907e3e734ac6c050844f318c7a13588915844cfb15931e033e8a1f5f66df9a9c8241e164a2b68341cb6b62702ef2ea452917a21137a65493aeb696a5a3a98c8767322b000f484651f4ee7d30cfcef7d95fd2f821592e64609de3dabfe09bce28a7a2149279b3c5942fce4db5a0e6e718aa8897ae79461930748be4265adb3eee09647e5ae506d8b00b0e8fe56a47bb70962977d426d35faeb548a0af316bc72b867b2fed2af1bdbd115de716aa112a0ee4e204212ce95489a54c038acb8b5f76c37bf1e4837e0e44c7af375af03d2fbf0b0f6d0b27bca2c783db9d4a4c968220b061a5d1557d9f3e1f89d4d304f8483ef0903ac50bdce490e433586790bfb883dc922450b8db5cadb5302d9073c6834aa28a9f356ab1f43ff0860f1594ec1a0cb99eb1e7ddee5ee60ef32dc1016378cfc10eb84a6248c0df77627a1d1637c867fc821b6558c65c51f0df2232318f95b4a725efcb5910d15da34e2733ecc04e844f1ff6b3fbbbfb77087beab72fda247133dc7bc892096d5d9b7017353ebbea9de2dc187a27e0363f33bc5eec15a302cff507869c493f2d42c1959c6116b2f2ce3d6c90654c6e02d849354438e27ad1b402804e9b0bad517cd2c36ffa1574947768f7ecc3f4b747517d0e3ae2b70ef4d6a27869eefe042e443716b859209a4410f520679cf1274ef9b21a950b7f1b9925c27c863b01f58a985b369afacdb04538ce65eceaf004c4d84e3f45ca5ca024e01ac7be92f91401897a4e10ff5270e656bc1b47214363b5a73cdc83f975c64f82df650ba2506276a37b04c12aec11d08657a78816296a2bbc3e295611dea14ebed3a4e38adba0f5283909b39bb220f304dd9fc7d4659a0d6f7815f44a00467e375b0da495b6fa86ed4a53535973c83b1cae3a2f582a51f3b5e96e7fc2d2db9b150e6a3da1c470f89c46ad226bd2a277dd548c4c48840bb53e8f3c69f4a392cd0477a97aaa5061ece6e674c06a50e8f3b4849cde1abfe9aa5f82d766143e0261199cef757578def8438b70c4d7e102e2f81302f9703a6bf61181d0d0d57e110024dd4ea1e1e6c7968982558a18911f4bc8aa466d62d5ff8d5efc63c31ea4e418d1b0c1b3c1c6c0f4800f423bd3afe0ed0d1632df0a0c6967213fba52000097c8d80d632e603b2993d30060f58159775c730b1f9dbfe3f08548afd73c2fa0b666f5529ad8b8bb62f919d13308c33eb61eb9b6611749edd47ad39dfdeabc092b15f4bd26e1c16347f18bef038fb1f51d690c4f8e935a75d81184611db840b1411319753ed6c0da3c2fe9fca62aeceedfdfc1c100f5c0798220f594876804b2e5c72c32f2534624c137b679b3041c3f32caf0e6f65f63fb917363d217ee3664dce0cd829bffab88d7593fe0545167f57c9f2879264dc26602f743d0e6b518dc7ac3336e9a87044c8c62b34f8c9ddf68fc8cd064372dfa601ab4af7fbd093dc9dc4b1066a16acaca1c4ed4b4928ba9040ac1f02e73dd94eae8cd3982797d2e011110f058ecff5ab62db831a1fc048ec41db48e3afbcedb32501f1a77ca04bed59d9392cc2ef0b2a089719dfca0d2988bc80a822dbf085d5b37f2d06c32b3f2c598a1ba4bca0c7f0bf01c45eefc039b99650d895abfd4a356e0cbacce9b6a8eb00562506d83bcc887e3e16656b232c4511f717e143f313ac7421665e236905ef213e033d505fbcbcc84bfccbe367ba4ddd1a768063eaf2f79181d264b465afeb08fbaf8b723ce8ca26c94dd28df0120985fbd4e72a296c43089b95f0c971605d80487a5b172c96d0ea047c2f59af579d4274d77c61063fec56e5aff2f7f90629739c77aa6ad806ce4a0f8179fdb1fa47a7f9fd321ebd96faee3601d8c150e19c1c88b96d42bf73e606586d2f59e871570e9d93796bb489af972bd466bf2a8adf934db900d46a3e3b00e9cdb8d6d3938ed3e382fbb1b2afedd41beb52d81a3b3f6d677d68c019a8db3651230f81699a6052cc127c08c079ce50b6fe51147058f3300f35662da4ac10f66067a30de484b69e465c0bf69f2164e07fb65da554721b034431f5b985b724680524eeac98a10a2c28fe0122778dc06ece7c9c3f0680d89e4bdde8030288c015ffa08c737d2b0c366c10b46a73b126851a10814ee52d87bcc284e74381c682215f91b1abc248730d372e49cfaaa5e9b9e57bf1ab967148c9f34534bb87342324042670cbe8adcaa1c1e8d467fbca9d451caabe2dbc9b04315e803d6a40b14b1714bb07257e115777bde37844aea1192a618010fd00f853409227bea694b38e79df04788851175fe025960fa7c7b0beef7259c43c9c90e70295091971b4d7e454a6902e6dfd28e135bbc3f6775e7fd6a3c3e34ae500b77d93260747c2348664c921c4847805caa4dacf1b56c953f807cb818f3c01ca2df1e6e029080a78666b48f1fb1160d04300d9d3841c1991862e276e8b55771d506fe5425df7ca88697c8a2c93f6b04494c24061be4cbf139a43cc364fe6c95e858d6e4593ba3a26c0ae382caf839021b1d54b13121dc77e49e31f2153fc8e4fd6c9bd630b1192127ccc9b9bcfe33a2d7df7fc8147f8bd2e4284e87ff82ac6f730c290d48778a179197b0d01a2d61e5b1d8ce9d8a270d02d3e9a2da8199352fb5ec01c01301d12792a2012deabf28c7c027289e91e5a3a2eed3a0d6286d866bb5547084e9a76bb7a1d7ac986baf8ecf92133b3db7036a4b608c833adbbbd5264feb08d44b624a2c926bc95893643d0b856d20749b123a31d8733882adc34046e442fbfbc59c89eb2738cbbbda510038061b5f8b4d3c5ae4fc78ff63441e1d5281a5330d5a8b4cba80baa5c2f62681b842f6c58082b9a8b8d7bae675bbbc6ca34c966d9d8d5a9b8ae7e66a21ce07708fdc871f60004494e07023223e7034294f4256b8dff660e2d4ba15e4326661f9a14965e70046f00b296de787045154d67a679281f678cef68b600ac58e335d21bb475451a079e758e5b5f7e1c99585f1dc812020340332e7ee30d39f9a4a3b5033559184cda5b9b587515c42d8356099b49403f24eb5946e7a3c6eb4e70321ea6ff0a4eb7e31b1119214af20525c5f2d186c2efe3213835b753cd9c247600679d5066c632c2396962d8da3914324ad8597c8ff93bcd634243f7fa05851588e59b5507c95f1181f173ad9faaaface0ae9ea38f2b1e02899332dbac173386487512eb77ae2c89c545e4f1f97584c168e31b9a013d573f6ef8d0911a056f0cdf4e35a001a9eab0c88e0f0a2ea6fc23840644615c442abb2a686311bb8ad27c320e0ec5a8e5841c7374b907b7cb1c93b335386d1e49e6d308e0c04d7e2771d69c241e49e0a7a72835a427b00dcaae0b47f3e123f28282da15a22f759722baca3269945a8e41fd8049f1a09e58e09b089616ca51815c83cdd2ce29d1b09ba9db4fbbca62326f7cb87ba56f25ebc5aec891a653b902ea5b2c6f1313f6d6ef36eedfd0f5a679baebbd6e119a45d7f1a5925114c15d48620f4772e516384041e2f64abef8e1a29433bf3eb00480cc2dc14428cbaaa4b6c8bb0a960e3a1546bc9f2617ad61b5bd85297018e9c030c76798f037a90d076f0b742fc7d0c207a0cca834e257bb43b7406d42d724dab66c1d562bd615637d477141da0148a8d70bd9756590a80dc10144077a77ee499d19db306c5e763aabad1f1e851faa371f4e564623ea1276c49cd356783bed3127e0e0ad080d275cb064c9f5cd142fbb35839583984bff99e807e4faf05c9ea02e82e2da19c2383c801ecbf9c4af15f05b8b7c4a978a511f8297bf13c17c55d6845b224c37484257665d27b6badb7ea2ae54fbafb7f17b28e1982f02c93b2c8ede459b9c696bf0627e68d9e98fc6373d272cb0f4d3644a51dd10a7a5c0dfcaeb976669a9a938e6b80f4cda82d274f7c6a0a2af4d2acd608713c3d5e1809145997e88418cfa8715fbca1a25900f1bd28bb117e2836e82cd2de31107d61419bc51be4542bac98a3ecb7619dd32bbd6a665741f460a26028c962d80ddbfa227b9129f107410ba3471d9f7ccd8eca8d0ab6dbfb61ef06395d4653c6a6afa91ca37fcdaa939d1985c3b9efa9db644fbf9a091d88f82bc28d429861b2b36f4a086c3ff5f58bc30f96f1b6939f83c4247d355c00f72e88a358ce585dd257a8dfaf51f15d6d32e1d59fc3967655c98b4305a97a85c097856d6fef952759101754cc5063eacd68ceb0fbc0ff952064d741329b48cf16cd10eeac8cc0a35bc0267efa33872057b1d1c3e296300301d8ba617e52b46b2e869bf4a10fbd1e48869f57c10cddea6788f8a5c7900bc28b7bef5a6380c91a04756d2d1ac4db4534e36278930eba0d65e9dbe1f2bd2d59b0c0fe667082fd267bfa4e895e4a8613841c7e94fd5ba174d36462f4756e0c60afd9b2b6c75898167434cd674883529184c81b7c40528ecb099eb024e65f47f95d07184ec8493714990e17ac4e17903728c9501f0ac8e17b4e340ef0937509b75715770488b2a85d4bc09fd6ff838257e20d716d51f6b8e30b9253337092e3ea18b052345154389c48218242f14e74cbc18cb07e09a058c98b92eaf7c99cdcd1a749949ffec3b607cee2ebc59ee5723d28b5e8a206685faf8e9490cc2035f59e6263939eda70647414133bc660bcbc5d2fd7bdea9088e121ac162188c19b5d92dbad1b69cd3b4b8dd372a231acd89c7286e898208c6530424917c346e093f4dadf05205264f52bd5e55b4cc059edb26799408ec7e5624739c316d8a01ee6c1a864b9567ec658287a5229bad2daa7199c5db32f5b3d0a17f4ec729808ac5ec3767cf9d598f95f50b2ed66bbf002c594b22d7543c5bfa725db64ca5b5a5af943ea14884a285f2af57fc0895d804ded73f3c8a8a7086d2781629ae44bf67affab3101f6fed6e59c79aac7e6e44d15028f965908c2ce41a8ca80188d102235f08d3f6c406f708f1edc0fc66bd8a171985af0db7028017c862a15b8b8236d2ad9fbc4f28af18a36509080b63568606182ecfa32cfd365654d888caa9d48564dadae0306eca5364a63147de1db43182a11cd310e7ba4f22a7bb9f8a96afb981ed13a9868647496ab2b1543a47b6bcb1bb119b356549d3b16ccba80802fad9ec74ba5f3501160302f1c1a9bb8d6032b8b233d441a5d902ddec6c01608dc4bcb3a5a876a9b43b584b44028a502f9be82d9b4b9e9f6a1555f5aa46233ac06921a64daf121110c63fbc54e6fb121ecb2418f2ff4ec0b3aadf8f6c47cac2be7e3a08dbbaa558ad3a7eca4acb969887827f60e5d29d1cf7e7dfb78310a1eadc5ee3a8b746f4a6ef87a7a1d643b95b8fa8e63a79d45aba3c9c1c3a721ce579497ffd0335e68456c7a71a317c541702a13470f0a7c0fb822b20f443471455c36ef5765856a9f7439a9a8dc6e9dc925aff4ec9f558afd1de48e3375a70604d5e79e08bbe0d9b6e45adafb305dfe65e9047b5a54754c5370c144df25c929257d5566ef46db86f1b2f0257a68f340dec9506bd3d35fec4aebb77783552e6127858deccf5cc12e3864e372f49f687f986f32ee69e2b2d2c8f997c964987da188ebe0d1738bd980d4577ec89622776e43f1007944817348ca183a10be1512dcf073a2bda4673084e1a0db087aa46f8021c7c481fda6346856d5d85e4165b2cf4d1c8ff16a1464717231738013a8dea5381b1a2b628fb43a2dd859cef50b5fe38272b02f0efc8b862b858e29846e32225c624a8d285ef4cb895322467e2731ede9621eabeb807db388ea143336d78252de03548c7872d695c85732a81b9212bf822c1920a8299019e51503a7cc9d2416a90ec8c401558509726a3c36ea2e85329731d937c38f50a3a13b8190528afef495619aa07f21a5ca9ce12508eaa156d8ca1c2367b1732b93cebf3a2282b4483a25128c81e7a31842df8839e4697a2cdec2616859a92933652e0a883a89b1daf34955f4c0d75035e3c8934471281cca5eb929fb626c84511585d4e8189ed24c548e5a52e163f400154e087109f92e2daaeba95bf332c3850f49a6f3b619b4c3326ea3e1bf7f16005f1e7f78eca2f803d3631e4a58da39c44f455fda8101a710b287508cda7e833dba3fb3a86388b06ec016728eec11c9ac00a2ae6ff1f5558b4550bfb3e8a319640a5bc12e1c7d598fd63c79bc3d6c2d3dab5e8d5b4217f61e7a3d64f236164d44808a320f1019d998ea73d266dd56e48911ad263336c1525e72161d1434f0fec47d6d8622c9cbac521594998f6de6475a300bcab1f453d4b0380ab096f3887a1447b11ce62d28379db9a58f928944c0bcce57e4d71bedd41eca508e9d0e39be23e5f88c82fd0c934cf9cfb77f3d1fdd170237398a682c4eb11d82e45b119d1faeaf05495c33e3b2b6fdf5e122145b98ecc5fcc06833893fab91cd52363d721130624ee04855821eff3b832cb5b7d581025ae415d33625b1c603b918c086f148f71e32da13fa5b8af5f5e84fdc2ddd80114c8a356be78f4e5e1b332ce2bde23dc78870798b83efaa9daf43e939222470a4b90eed96b256f451ae90e9c0d9f6dfed083b31cccfdca18703fef2630023734ef9e0c6972e8e9969dd4176ef0de74f807bee47f3083683fb4092fc0bdb4bd0c749c20aad414426abad5b9123c4059a974e077316bd710fa1c62b970b539df0746304e2e6d7211c8e0f37a2779223d6f03a4eed95e723c98440e455273e8ce2e0615130ca5e16a0ec17f3b5868220f4f135c95b2a8ecaf53a8e9a03acafc9920e6e12182146b7cc25d6988a09029cc97c384b05e3c336306428d98460d2ea8f14897e1276911a2dc09af61ec7687b875c12c350296202cdc2edff56b0b1186f15d3afa2f2a4e5f79ebe51b3774a505bbe3aa3a604a361abe064075ad3f7a3225d9fbffc3309d1e989cc4a6aa45cead8e25a35f35c90c03ed7b579d609404414f9aa0cd0a457ddbb55e1e4f3a7560b5a4489bdfddf32dbc87c6d9d419247e23dfec69e8227c6bd6850f61cabb810ed7480776dcad396c5bf7524ca1ed1006739d71c66e5a93ac5e22a0fb1e1585487060f33636a7bab524a10dc510457a0a8b265cf7410eeed1f33709164d39d070d154ffd2d8b38c9d6f513d42a50f063c2f76f283d245bbaf01be55038c0cee938d6ccc53cdbc39aa0191f21df613f3889a8c276e2a8aedfb8054f5f1997fec88c05aa8673074891e300ec6abbe508966725d1051ca1abcca7c22b589ae15e9b676b0b2764d2c364ad7bb07242c33562eb8565a55fa0f8b309ad62a8a66867ebc128b4cf2ac62f0f7dd0012252b980a84e9b7a59c63371136c0dcef251940750982add06fe468096770f283e4e0bada44e443ad5af44b310865d723ac3a472d4f30e2185a360dd973bec871f5a0473dcf3b110b3d9215e68a91e294fb80a3652707b4f551fc0453bd9867c573ddaa3b15b8f8caa97c9de19d787a7841fcc572f3f3d0edf05e17193a1b5b3823589ee373889dc58dc3f6986e79a9d9728c98757d67acb51019a0690e1be1b8a61442a92e611335e5b6cb582dbb17e807cfb250ab1d970aa53ab2f29a6e1aee423fe412847529f80d32477e857ac3c1f074cce66605750e5cc5983a486027873ece1f53515bffe3ba5b7c92c6cdddad3130422a640565e8f466b0c8f7df54c7248f97c024f58fe3179ea583fb17c0158af196dbf8b19c07f29e0ac166b581702441ad4e206aeae29cab86051c6e4b8e5f983d792907d299a492de5500978b225d878e24a349434016e89de24a596ec5fd916e9658ab91208b1236e00ff44d72e0627db8692183c886476d09b145438darootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootpython312-documentation-3.12.4-150600.3.3.1.src.rpmpython312-docpython312-doc(aarch-64)    rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.0.4-14.6.0-14.0-15.2-14.14.3fff|f|fy_fb@ff@eZe؈eԔ@ee@e@e|?eV@ee d@dd@d˖dD@d dx@dw6dNX@dJcdI@d!@d@d@c>@c@ck@c@cS@cck@cWcRc#cccb@b?b@b@bzSby@bs@b?@b@b a@a@a@a@aX@a@aa@af@a\>@a,@a(a @a` @` @`g@``r```@`N@`/@`"y@`!'`_T__԰_ _v@_u@_P_|\@_m_O@_N7_>e__@__A@___ @_X@_X@_X@_X@_X@_X@_X@_X@_X@^z^z^z^z^)@^^^^@^(@^3^@^'@^H^|@^h^`^>^>^8 @^8 @^ P@^[]f@]f@]]]]W]]c@]]]z@](]]]@]V]w@]i]g@]W@]Ik]6]!]G@\\9\~\@\\@\7\+@\\s\b@\b@\Q\C@\4\4\,\2\\\\&@[[@[^[ @[ͻ[ͻ[$@[ā@[/[[@["@[D[;e@[6@[4ZnZ@Z@ZZԐ@Zx@Z@Z Z Z Zz@ZxG@Zhu@Z`@ZLZ"Z }YYX@Yo@YY@YY@Y@YP@YI@XӸXƉXqX@Xv@W@V@Vm@VVhVCV }@U@U@U@U@UU[%UT@UT@UCjU@TeTBV@T;mcepl@cepl.eudaniel.garcia@suse.commcepl@suse.comschwab@suse.deschwab@suse.demcepl@cepl.eudaniel.garcia@suse.commcepl@cepl.eupmonreal@suse.commcepl@suse.commcepl@cepl.eudaniel.garcia@suse.commcepl@cepl.eudaniel.garcia@suse.comdaniel.garcia@suse.comdaniel.garcia@suse.commcepl@suse.comdaniel.garcia@suse.comdmueller@suse.comdaniel.garcia@suse.comdmueller@suse.commcepl@suse.commcepl@suse.commcepl@suse.comdaniel.garcia@suse.comdaniel.garcia@suse.commcepl@suse.comdaniel.garcia@suse.comdaniel.garcia@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comkukuk@suse.comdmueller@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comschwab@suse.demcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comsteven.kowalik@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comdimstar@opensuse.orgmcepl@suse.commcepl@suse.comschwab@suse.deschwab@suse.demcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comdmueller@suse.comdcermak@suse.commcepl@suse.commcepl@suse.comcode@bnavigator.demcepl@suse.commcepl@suse.comsteven.kowalik@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comcode@bnavigator.demcepl@suse.commcepl@suse.comdimstar@opensuse.orgmcepl@suse.comdimstar@opensuse.orgmcepl@suse.commcepl@suse.comschwab@suse.decallumjfarmer13@gmail.commcepl@suse.comcallumjfarmer13@gmail.comcallumjfarmer13@gmail.comtchvatal@suse.comtchvatal@suse.commcepl@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.commcepl@suse.comtchvatal@suse.commcepl@suse.comtchvatal@suse.commcepl@suse.comdmueller@suse.comandreas.stieger@gmx.decallumjfarmer13@gmail.commcepl@suse.commcepl@suse.comschwab@suse.demcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.commliska@suse.czmcepl@suse.commcepl@suse.comtchvatal@suse.commcepl@suse.comstefan.bruens@rwth-aachen.destefan.bruens@rwth-aachen.demcepl@suse.commcepl@suse.commgorse@suse.comtchvatal@suse.commcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.commcepl@suse.combwiedemann@suse.comtchvatal@suse.commcepl@suse.comguillaume.gardet@opensuse.orgjayvdb@gmail.commcepl@suse.commcepl@suse.commcepl@suse.comschwab@suse.demcepl@suse.commliska@suse.czmcepl@suse.commcepl@suse.commcepl@suse.comjayvdb@gmail.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.comtchvatal@suse.commcepl@suse.comtoddrme2178@gmail.commcepl@suse.comjengelh@inai.demcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.commcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.commcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.commimi.vx@gmail.comhpj@urpla.netjengelh@inai.detchvatal@suse.comtchvatal@suse.comtchvatal@suse.commimi.vx@gmail.comadam@mizerski.plschwab@suse.debwiedemann@suse.comtchvatal@suse.comtchvatal@suse.comnormand@linux.vnet.ibm.comjmatejek@suse.comnormand@linux.vnet.ibm.comjmatejek@suse.comdimstar@opensuse.orgmimi.vx@gmail.comjmatejek@suse.comdmueller@suse.comvcizek@suse.comjengelh@inai.deschwab@suse.dejmatejek@suse.comkukuk@suse.dejmatejek@suse.comjmatejek@suse.comasn@cryptomilk.orgjmatejek@suse.comjmatejek@suse.combwiedemann@suse.comjmatejek@suse.comjmatejek@suse.comjmatejek@suse.comschwab@suse.detoddrme2178@gmail.comarichardson.kde@gmail.comtoddrme2178@gmail.comtoddrme2178@gmail.comjmatejek@suse.comdimstar@opensuse.orgjmatejek@suse.comfisiu@opensuse.orgdimstar@opensuse.orgmeissner@suse.comschwab@suse.dejmatejek@suse.comjmatejek@suse.commailaender@opensuse.orgrguenther@suse.comp.drouand@gmail.comcrrodriguez@opensuse.orgjmatejek@suse.com- Stop using %%defattr, it seems to be breaking proper executable attributes on /usr/bin/ scripts (bsc#1227378).- Add F00251-change-user-install-location.patch to make pip and modern tools install directly in /usr/local when used by the user. bsc#1225660- Add docs-docutils_014-Sphinx_420.patch make building docs compatible with Sphinx 4_2_0 and docutils 0.14.- Update import_failed.map for python 3.12- Reenable test_multiprocessing_forkserver test_multiprocessing_spawn test_subprocess tests in qemu build- Update to 3.12.4: - Security - gh-118486: os.mkdir() on Windows now accepts mode of 0o700 to restrict the new directory to the current user. This fixes CVE-2024-4030 affecting tempfile.mkdtemp() in scenarios where the base temporary directory is more permissive than the default (bsc#1227152). - gh-116741: Update bundled libexpat to 2.6.2 - gh-117233: Detect BLAKE2, SHA3, Shake, & truncated SHA512 support in the OpenSSL-ish libcrypto library at build time. This allows hashlib to be used with libraries that do not to support every algorithm that upstream OpenSSL does. - Core and Builtins - gh-119821: Fix execution of annotation scopes within classes when globals is set to a non-dict. Patch by Jelle Zijlstra. - gh-118263: Speed up os.path.normpath() with a direct C call. - gh-119311: Fix bug where names are unexpectedly mangled in the bases of generic classes. - gh-119395: Fix bug where names appearing after a generic class are mangled as if they are in the generic class. - gh-118507: Fix os.path.isfile() on Windows for pipes. - gh-119213: Non-builtin modules built with argument clinic were crashing if used in a subinterpreter before the main interpreter. The objects that were causing the problem by leaking between interpreters carelessly have been fixed. - gh-119011: Fixes type.__type_params__ to return an empty tuple instead of a descriptor. - gh-118997: Fix _Py_ClearImmortal() assertion: use _Py_IsImmortal() to tolerate reference count lower than _Py_IMMORTAL_REFCNT. Fix the assertion for the stable ABI, when a C extension is built with Python 3.11 or lower. Patch by Victor Stinner. - gh-118513: Fix incorrect UnboundLocalError when two comprehensions in the same function both reference the same name, and in one comprehension the name is bound while in the other it’s an implicit global. - gh-118164: Break a loop between the Python implementation of the decimal module and the Python code for integer to string conversion. Also optimize integer to string conversion for values in the range from 9_000 to 135_000 decimal digits. - gh-118272: Fix bug where generator.close does not free the generator frame’s locals. - gh-116767: Fix crash in compiler on ‘async with’ that has many context managers. - gh-117894: Prevent agen.aclose() objects being re-used after .throw(). - gh-117881: prevent concurrent access to an async generator via athrow().throw() or asend().throw() - gh-115874: Fixed a possible segfault during garbage collection of _asyncio.FutureIter objects - Library - gh-119819: Fix regression to allow logging configuration with multiprocessing queue types. - gh-89727: Fix issue with shutil.rmtree() where a RecursionError is raised on deep directory trees. - gh-89727: Partially fix issue with shutil.rmtree() where a RecursionError is raised on deep directory trees. A recursion error is no longer raised when rmtree.avoids_symlink_attacks is false. - gh-119118: Fix performance regression in the tokenize module by caching the line token attribute and calculating the column offset more efficiently. - gh-89727: Fix issue with os.fwalk() where a RecursionError was raised on deep directory trees by adjusting the implementation to be iterative instead of recursive. - gh-113892: Now, the method sock_connect of asyncio.ProactorEventLoop raises a ValueError if given socket is not in non-blocking mode, as well as in other loop implementations. - gh-119174: Fix high DPI causes turtledemo(turtle-graphics examples) windows blurry Patch by Wulian233 and Terry Jan Reedy - gh-118643: Fix an AttributeError in the email module when re-fold a long address list. Also fix more cases of incorrect encoding of the address separator in the address list. - gh-58933: Make pdb return to caller frame correctly when f_trace of the caller frame is not set - gh-118868: Fixed issue where kwargs were no longer passed to the logging handler QueueHandler - gh-118164: The Python implementation of the decimal module could appear to hang in relatively small power cases (like 2**117) if context precision was set to a very high value. A different method to check for exactly representable results is used now that doesn’t rely on computing 10**precision (which could be effectively too large to compute). - gh-118404: Fix inspect.signature() for non-comparable callables. - gh-118314: Fix an edge case in binascii.a2b_base64() strict mode, where excessive padding is not detected when no padding is necessary. - gh-118042: Fix an unraisable exception in telnetlib.Telnet.__del__() when the __init__() method was not called. - gh-118221: Fix a bug where sqlite3.iterdump() could fail if a custom row factory was used. Patch by Erlend Aasland. - gh-118013: Fix regression introduced in gh-103193 that meant that calling inspect.getattr_static() on an instance would cause a strong reference to that instance’s class to persist in an internal cache in the inspect module. This caused unexpected memory consumption if the class was dynamically created, the class held strong references to other objects which took up a significant amount of memory, and the cache contained the sole strong reference to the class. The fix for the regression leads to a slowdown in getattr_static(), but the function should still be significantly faster than it was in Python 3.11. Patch by Alex Waygood. - gh-90848: Fixed unittest.mock.create_autospec() to configure parent mock with keyword arguments. - gh-118168: Fix incorrect argument substitution when typing.Unpack is used with the builtin tuple. typing.Unpack now raises TypeError when used with certain invalid types. Patch by Jelle Zijlstra. - gh-118033: Fix dataclasses.dataclass() not creating a __weakref__ slot when subclassing typing.Generic. - gh-117535: Do not try to get the source line for made up file name “sys” in warnings. - gh-114053: Fix erroneous NameError when calling typing.get_type_hints() on a class that made use of PEP 695 type parameters in a module that had from __future__ import annotations at the top of the file. Patch by Alex Waygood. - gh-117995: Don’t raise DeprecationWarning when a sequence of parameters is used to bind indexed, nameless placeholders. See also gh-100668. - gh-80361: Fix TypeError in email.message.Message.get_payload() when the charset is RFC 2231 encoded. - gh-86650: Fix IndexError when parse some emails with invalid Message-ID (including one-off addresses generated by Microsoft Outlook). - gh-117691: Improve the error messages emitted by tarfile deprecation warnings relating to PEP 706. If a filter argument is not provided to extract() or extractall, the deprecation warning now points to the line in the user’s code where the relevant function was called. Patch by Alex Waygood. - gh-77102: site module now parses .pth file with UTF-8 first, and locale encoding if UnicodeDecodeError happened. It supported only locale encoding before. - gh-117692: Fixes a bug when doctest.DocTestFinder was failing on wrapped builtin_function_or_method. - gh-117566: ipaddress.IPv6Address.is_loopback() will now return True for IPv4-mapped loopback addresses, i.e. addresses in the ::ffff:127.0.0.0/104 address space. - gh-117503: Fix support of non-ASCII user names in bytes paths in os.path.expanduser() on Posix. - gh-117313: Only treat '\n', '\r' and '\r\n' as line separators in re-folding the email messages. Preserve control characters '\v', '\f', '\x1c', '\x1d' and '\x1e' and Unicode line separators '\x85', '\u2028' and '\u2029' as is. - gh-113171 (bsc#1226448, CVE-2024-4032): Fixed various false positives and false negatives in ipaddress.IPv4Address.is_private (see these docs for details) ipaddress.IPv4Address.is_global ipaddress.IPv6Address.is_private ipaddress.IPv6Address.is_global Also in the corresponding ipaddress.IPv4Network and ipaddress.IPv6Network attributes. - gh-103956: Fix lack of newline characters in trace module output when line tracing is enabled but source code line for current frame is not available. - gh-92081: Fix missing spaces in email headers when the spaces are mixed with encoded 8-bit characters. - gh-103194: Prepare Tkinter for C API changes in Tcl 8.7/9.0 to avoid _tkinter.Tcl_Obj being unexpectedly returned instead of bool, str, bytearray, or int. - gh-87106: Fixed handling in inspect.Signature.bind() of keyword arguments having the same name as positional-only arguments when a variadic keyword argument (e.g. **kwargs) is present. - bpo-45767: Fix integer conversion in os.major(), os.minor(), and os.makedev(). Support device numbers larger than 2**63-1. Support non-existent device number (NODEV). - bpo-40943: Fix several IndexError when parse emails with truncated Message-ID, address, routes, etc, e.g. example@. - bpo-30988: Fix parsing of emails with invalid address headers having a leading or trailing dot. Patch by tsufeki. - gh-67693: Fix urllib.parse.urlunparse() and urllib.parse.urlunsplit() for URIs with path starting with multiple slashes and no authority. Based on patch by Ashwin Ramaswami. - bpo-15010: unittest.TestLoader.discover() now saves the original value of unittest.TestLoader._top_level_dir and restores it at the end of the call. - Documentation - gh-117928: The minimum Sphinx version required for the documentation is now 6.2.1. - gh-91565: Changes to documentation files and config outputs to reflect the new location for reporting bugs - i.e. GitHub rather than bugs.python.org. - Tests - gh-119050: regrtest test runner: Add XML support to the refleak checker (-R option). Patch by Victor Stinner. - IDLE - bpo-34774: Use user-selected color theme for Help => IDLE Doc. - C API - gh-119585: Fix crash when a thread state that was created by PyGILState_Ensure() calls a destructor that during PyThreadState_Clear() that calls back into PyGILState_Ensure() and PyGILState_Release(). This might occur when in the free-threaded build or when using thread-local variables whose destructors call PyGILState_Ensure(). - gh-117534: Improve validation logic in the C implementation of datetime.fromisoformat() to better handle invalid years. Patch by Vlad Efanov. - Updated patches: - CVE-2023-6597-TempDir-cleaning-symlink.patch - bpo-31046_ensurepip_honours_prefix.patch - fix_configure_rst.patch - python-3.3.0b1-fix_date_time_compiler.patch - subprocess-raise-timeout.patch- Add CVE-2023-52425-libexpat-2.6.0-backport-15.6.patch to fix tests with patched libexpat below 2.6.0 that doesn't update the version number, just in 15.6. - Drop libexpat260.patch, not needed anymore. This patch is merged with the CVE-2023-52425-libexpat-2.6.0-backport-15.6.patch to keep working on 15.6. - Add fix-test-recursion-limit-15.6.patch, gh#python/cpython#115083.- Update to 3.12.3: - Security - gh-115398: Allow controlling Expat >=2.6.0 reparse deferral (CVE-2023-52425, bsc#1219559) by adding five new methods: xml.etree.ElementTree.XMLParser.flush() xml.etree.ElementTree.XMLPullParser.flush() xml.parsers.expat.xmlparser.GetReparseDeferralEnabled() xml.parsers.expat.xmlparser.SetReparseDeferralEnabled() xml.sax.expatreader.ExpatParser.flush() - gh-115399: Update bundled libexpat to 2.6.0 (bsc#1222075) - gh-115243: Fix possible crashes in collections.deque.index() when the deque is concurrently modified. - gh-114572: ssl.SSLContext.cert_store_stats() and ssl.SSLContext.get_ca_certs() now correctly lock access to the certificate store, when the ssl.SSLContext is shared across multiple threads (bsc#1226447, CVE-2024-0397). - Core and Builtins - gh-109120: Added handle of incorrect star expressions, e.g f(3, *). Patch by Grigoryev Semyon - gh-99108: Updated the hashlib built-in HACL* project C code from upstream that we use for many implementations when they are not present via OpenSSL in a given build. This also avoids the rare potential for a C symbol name one definition rule linking issue. - gh-116735: For INSTRUMENTED_CALL_FUNCTION_EX, set arg0 to sys.monitoring.MISSING instead of None for CALL event. - gh-113964: Starting new threads and process creation through os.fork() are now only prevented once all non-daemon threads exit. - gh-116604: Respect the status of the garbage collector when indirect calls are made via PyErr_CheckSignals() and the evaluation breaker. Patch by Pablo Galindo - gh-116626: Ensure INSTRUMENTED_CALL_FUNCTION_EX always emits CALL - gh-116296: Fix possible refleak in object.__reduce__() internal error handling. - gh-116034: Fix location of the error on a failed assertion. - gh-115823: Properly calculate error ranges in the parser when raising SyntaxError exceptions caused by invalid byte sequences. Patch by Pablo Galindo - gh-112087: For an empty reverse iterator for list will be reduced to reversed(). Patch by Donghee Na. - gh-115154: Fix a bug that was causing the tokenize.untokenize() function to handle unicode named literals incorrectly. Patch by Pablo Galindo - gh-114828: Fix compilation crashes in uncommon code examples using super() inside a comprehension in a class body. - gh-115011: Setters for members with an unsigned integer type now support the same range of valid values for objects that has a __index__() method as for int. - gh-112215: Change the C recursion limits to more closely reflect the underlying platform limits. - gh-96497: Fix incorrect resolution of mangled class variables used in assignment expressions in comprehensions. - Library - gh-117467: Preserve mailbox ownership when rewriting in mailbox.mbox.flush(). Patch by Tony Mountifield. - gh-117310: Fixed an unlikely early & extra Py_DECREF triggered crash in ssl when creating a new _ssl._SSLContext if CPython was built implausibly such that the default cipher list is empty or the SSL library it was linked against reports a failure from its C SSL_CTX_set_cipher_list() API. - gh-117178: Fix regression in lazy loading of self-referential modules, introduced in gh-114781. - gh-117084: Fix zipfile extraction for directory entries with the name containing backslashes on Windows. - gh-117110: Fix a bug that prevents subclasses of typing.Any to be instantiated with arguments. Patch by Chris Fu. - gh-90872: On Windows, subprocess.Popen.wait() no longer calls WaitForSingleObject() with a negative timeout: pass 0 ms if the timeout is negative. Patch by Victor Stinner. - gh-116957: configparser: Don’t leave ConfigParser values in an invalid state (stored as a list instead of a str) after an earlier read raised DuplicateSectionError or DuplicateOptionError. - gh-90095: Ignore empty lines and comments in .pdbrc - gh-116764: Restore support of None and other false values in urllib.parse functions parse_qs() and parse_qsl(). Also, they now raise a TypeError for non-zero integers and non-empty sequences. - gh-116811: In PathFinder.invalidate_caches, delegate to MetadataPathFinder.invalidate_caches. - gh-116600: Fix repr() for global Flag members. - gh-116484: Change automatically generated tkinter.Checkbutton widget names to avoid collisions with automatically generated tkinter.ttk.Checkbutton widget names within the same parent widget. - gh-116401: Fix blocking os.fwalk() and shutil.rmtree() on opening named pipe. - gh-116143: Fix a race in pydoc _start_server, eliminating a window in which _start_server can return a thread that is “serving” but without a docserver set. - gh-116325: typing: raise SyntaxError instead of AttributeError on forward references as empty strings. - gh-90535: Fix support of interval values > 1 in logging.TimedRotatingFileHandler for when='MIDNIGHT' and when='Wx'. - gh-115978: Disable preadv(), readv(), pwritev(), and writev() on WASI. - Under wasmtime for WASI 0.2, these functions don’t pass test_posix (https://github.com/bytecodealliance/wasmtime/issues/7830). - gh-88352: Fix the computation of the next rollover time in the logging.TimedRotatingFileHandler handler. computeRollover() now always returns a timestamp larger than the specified time and works correctly during the DST change. doRollover() no longer overwrite the already rolled over file, saving from data loss when run at midnight or during repeated time at the DST change. - gh-87115: Set __main__.__spec__ to None when running a script with pdb - gh-76511: Fix UnicodeEncodeError in email.Message.as_string() that results when a message that claims to be in the ascii character set actually has non-ascii characters. Non-ascii characters are now replaced with the U+FFFD replacement character, like in the replace error handler. - gh-116040: [Enum] fix by-value calls when second value is falsey; e.g. Cardinal(1, 0) - gh-75988: Fixed unittest.mock.create_autospec() to pass the call through to the wrapped object to return the real result. - gh-115881: Fix issue where ast.parse() would incorrectly flag conditional context managers (such as with (x() if y else z()): ...) as invalid syntax if feature_version=(3, 8) was passed. This reverts changes to the grammar made as part of gh-94949. - gh-115886: Fix silent truncation of the name with an embedded null character in multiprocessing.shared_memory.SharedMemory. - gh-115809: Improve algorithm for computing which rolled-over log files to delete in logging.TimedRotatingFileHandler. It is now reliable for handlers without namer and with arbitrary deterministic namer that leaves the datetime part in the file name unmodified. - gh-74668: urllib.parse functions parse_qs() and parse_qsl() now support bytes arguments containing raw and percent-encoded non-ASCII data. - gh-67044: csv.writer() now always quotes or escapes '\r' and '\n', regardless of lineterminator value. - gh-115712: csv.writer() now quotes empty fields if delimiter is a space and skipinitialspace is true and raises exception if quoting is not possible. - gh-112364: Fixed ast.unparse() to handle format_spec with ", ' or \\. Patched by Frank Hoffmann. - gh-111358: Fix a bug in asyncio.BaseEventLoop.shutdown_default_executor() to ensure the timeout passed to the coroutine behaves as expected. - gh-115618: Fix improper decreasing the reference count for None argument in property methods getter(), setter() and deleter(). - gh-115570: A DeprecationWarning is no longer omitted on access to the __doc__ attributes of the deprecated typing.io and typing.re pseudo-modules. - gh-112006: Fix inspect.unwrap() for types with the __wrapper__ data descriptor. - gh-101293: Support callables with the __call__() method and types with __new__() and __init__() methods set to class methods, static methods, bound methods, partial functions, and other types of methods and descriptors in inspect.Signature.from_callable(). - gh-115392: Fix a bug in doctest where incorrect line numbers would be reported for decorated functions. - gh-114563: Fix several format() bugs when using the C implementation of Decimal: * memory leak in some rare cases when using the z format option (coerce negative 0) * incorrect output when applying the z format option to type F (fixed-point with capital NAN / INF) * incorrect output when applying the # format option (alternate form) - gh-115197: urllib.request no longer resolves the hostname before checking it against the system’s proxy bypass list on macOS and Windows. - gh-115165: Most exceptions are now ignored when attempting to set the __orig_class__ attribute on objects returned when calling typing generic aliases (including generic aliases created using typing.Annotated). Previously only AttributeError was ignored. Patch by Dave Shawley. - gh-115133: Fix tests for XMLPullParser with Expat 2.6.0. - gh-115059: io.BufferedRandom.read1() now flushes the underlying write buffer. - gh-79382: Trailing ** no longer allows to match files and non-existing paths in recursive glob(). - gh-114071: Support tuple subclasses using auto() for enum member value. - gh-114763: Protect modules loaded with importlib.util.LazyLoader from race conditions when multiple threads try to access attributes before the loading is complete. - gh-97959: Fix rendering class methods, bound methods, method and function aliases in pydoc. Class methods no longer have “method of builtins.type instance” note. Corresponding notes are now added for class and unbound methods. Method and function aliases now have references to the module or the class where the origin was defined if it differs from the current. Bound methods are now listed in the static methods section. Methods of builtin classes are now supported as well as methods of Python classes. - gh-112281: Allow creating union of types for typing.Annotated with unhashable metadata. - gh-111775: Fix importlib.resources.simple.ResourceHandle.open() for text mode, added missed stream argument. - gh-90095: Make .pdbrc and -c work with any valid pdb commands. - gh-107155: Fix incorrect output of help(x) where x is a lambda function, which has an __annotations__ dictionary attribute with a "return" key. - gh-105866: Fixed _get_slots bug which caused error when defining dataclasses with slots and a weakref_slot. - gh-60346: Fix ArgumentParser inconsistent with parse_known_args. - gh-100985: Update HTTPSConnection to consistently wrap IPv6 Addresses when using a proxy. - gh-100884: email: fix misfolding of comma in address-lists over multiple lines in combination with unicode encoding. - gh-95782: Fix io.BufferedReader.tell(), io.BufferedReader.seek(), _pyio.BufferedReader.tell(), io.BufferedRandom.tell(), io.BufferedRandom.seek() and _pyio.BufferedRandom.tell() being able to return negative offsets. - gh-96310: Fix a traceback in argparse when all options in a mutually exclusive group are suppressed. - gh-93205: Fixed a bug in logging.handlers.TimedRotatingFileHandler where multiple rotating handler instances pointing to files with the same name but different extensions would conflict and not delete the correct files. - bpo-44865: Add missing call to localization function in argparse. - bpo-43952: Fix multiprocessing.connection.Listener.accept() to accept empty bytes as authkey. Not accepting empty bytes as key causes it to hang indefinitely. - bpo-42125: linecache: get module name from __spec__ if available. This allows getting source code for the __main__ module when a custom loader is used. - gh-66543: Make mimetypes.guess_type() properly parsing of URLs with only a host name, URLs containing fragment or query, and filenames with only a UNC sharepoint on Windows. Based on patch by Dong-hee Na. - bpo-33775: Add ‘default’ and ‘version’ help text for localization in argparse. - Documentation - gh-115399: Document CVE-2023-52425 of Expat <2.6.0 under “XML vulnerabilities”. - gh-115233: Fix an example for LoggerAdapter in the Logging Cookbook. - Tests - gh-83434: Disable JUnit XML output (--junit-xml=FILE command line option) in regrtest when hunting for reference leaks (-R option). Patch by Victor Stinner. - gh-117187: Fix XML tests for vanilla Expat <2.6.0. - gh-116333: Tests of TLS related things (error codes, etc) were updated to be more lenient about specific error message strings and behaviors as seen in the BoringSSL and AWS-LC forks of OpenSSL. - gh-115979: Update test_importlib so that it passes under WASI SDK 21. - gh-112536: Add –tsan to test.regrtest for running TSAN tests in reasonable execution times. Patch by Donghee Na. - gh-116307: Added import helper isolated_modules as CleanImport does not remove modules imported during the context. Use it in importlib.resources tests to avoid leaving mod around to impede importlib.metadata tests. - gh-115720: Leak tests (-R, --huntrleaks) now show a summary of the number of leaks found in each iteration. - gh-115122: Add --bisect option to regrtest test runner: run failed tests with test.bisect_cmd to identify failing tests. Patch by Victor Stinner. - gh-115596: Fix ProgramPriorityTests in test_os permanently changing the process priority. - Build - gh-116313: Get WASI builds to work under wasmtime 18 w/ WASI 0.2/preview2 primitives. - gh-116117: Backport libb2’s PR #42 to fix compiling CPython on 32-bit Windows with clang-cl. - gh-115167: Avoid vendoring vcruntime140_threads.dll when building with Visual Studio 2022 version 17.8. - gh-112536: Add support for thread sanitizer (TSAN) - Windows - gh-117267: Ensure DirEntry.stat().st_ctime behaves consistently with os.stat() during the deprecation period of st_ctime by containing the same value as st_birthtime. After the deprecation period, st_ctime will be the metadata change time (or unavailable through DirEntry), and only st_birthtime will contain the creation time. - gh-116773: Fix instances of <_overlapped.Overlapped object at 0xXXX> still has pending operation at deallocation, the process may crash. - gh-91227: Fix the asyncio ProactorEventLoop implementation so that sending a datagram to an address that is not listening does not prevent receiving any more datagrams. - gh-115554: The installer now has more strict rules about updating the Python Launcher for Windows. In general, most users only have a single launcher installed and will see no difference. When multiple launchers have been installed, the option to install the launcher is disabled until all but one have been removed. Downgrading the launcher (which was never allowed) is now more obviously blocked. - gh-115543: Python Launcher for Windows can now detect Python 3.13 when installed from the Microsoft Store, and will install Python 3.12 by default when PYLAUNCHER_ALLOW_INSTALL is set. - gh-115049: Fixes py.exe launcher failing when run as users without user profiles. - gh-115009: Update Windows installer to use SQLite 3.45.1. - IDLE - gh-88516: On macOS show a proxy icon in the title bar of editor windows to match platform behaviour. - Tools/Demos - gh-113516: Don’t set LDSHARED when building for WASI. - C API - gh-117021: Fix integer overflow in PyLong_AsPid() on non-Windows 64-bit platforms. - gh-116869: Make the C API compatible with - Werror=declaration-after-statement compiler flag again. Patch by Victor Stinner.- Use the system-wide crypto-policies [bsc#1211301] * Use the system default cipher list instead of hardcoded values * Add the --with-ssl-default-suites=openssl configure option- (bsc#1219666, CVE-2023-6597) Add CVE-2023-6597-TempDir-cleaning-symlink.patch (patch from gh#python/cpython!99930) fixing symlink bug in cleanup of tempfile.TemporaryDirectory.- Switch to %%autopatch. Let’s try it as an experiment, and if we need conditional patch, we should put condition inside of it. - Remove double definition of /usr/bin/idle%%{version} in %%files.- Add upstream patch libexpat260.patch, Fix tests for XMLPullParser with Expat 2.6.0, gh#python/cpython#115288- (bsc#1210638, CVE-2023-27043) Add CVE-2023-27043-email-parsing-errors.patch, which rejects malformed addresses in email.parseaddr() (gh#python/cpython!111116) Detect email address parsing errors and return empty tuple to indicate the parsing error (old API). Add an optional 'strict' parameter to getaddresses() and parseaddr() functions. Patch by Thomas Dwyer.- Update to 3.12.2: - Security - gh-113659: Skip .pth files with names starting with a dot or hidden file attribute. - Core and Builtins - gh-114887: Changed socket type validation in create_datagram_endpoint() to accept all non-stream sockets. This fixes a regression in compatibility with raw sockets. - gh-114388: Fix a RuntimeWarning emitted when assign an integer-like value that is not an instance of int to an attribute that corresponds to a C struct member of type T_UINT and T_ULONG. Fix a double RuntimeWarning emitted when assign a negative integer value to an attribute that corresponds to a C struct member of type T_UINT. - gh-113703: Fix a regression in the codeop module that was causing it to incorrectly identify incomplete f-strings. Patch by Pablo Galindo - gh-89811: Check for a valid tp_version_tag before performing bytecode specializations that rely on this value being usable. - gh-113602: Fix an error that was causing the parser to try to overwrite existing errors and crashing in the process. Patch by Pablo Galindo - gh-113297: Fix segfault in the compiler on with statement with 19 context managers. - gh-106905: Use per AST-parser state rather than global state to track recursion depth within the AST parser to prevent potential race condition due to simultaneous parsing. - The issue primarily showed up in 3.11 by multithreaded users of ast.parse(). In 3.12 a change to when garbage collection can be triggered prevented the race condition from occurring. - gh-112943: Correctly compute end column offsets for multiline tokens in the tokenize module. Patch by Pablo Galindo - gh-112716: Fix SystemError in the import statement and in __reduce__() methods of builtin types when __builtins__ is not a dict. - gh-94606: Fix UnicodeEncodeError when email.message.get_payload() reads a message with a Unicode surrogate character and the message content is not well-formed for surrogateescape encoding. Patch by Sidney Markowitz. - Library - gh-114965: Update bundled pip to 24.0 - gh-114959: tarfile no longer ignores errors when trying to extract a directory on top of a file. - gh-109475: Fix support of explicit option value “–” in argparse (e.g. --option=--). - gh-110190: Fix ctypes structs with array on Windows ARM64 platform by setting MAX_STRUCT_SIZE to 32 in stgdict. Patch by Diego Russo - gh-113280: Fix a leak of open socket in rare cases when error occurred in ssl.SSLSocket creation. - gh-77749: email.policy.EmailPolicy.fold() now always encodes non-ASCII characters in headers if utf8 is false. - gh-114492: Make the result of termios.tcgetattr() reproducible on Alpine Linux. Previously it could leave a random garbage in some fields. - gh-113267: Revert changes in gh-106584 which made calls of TestResult methods startTest() and stopTest() unbalanced. - gh-75128: Ignore an OSError in asyncio.BaseEventLoop.create_server() when IPv6 is available but the interface cannot actually support it. - gh-114257: Dismiss the FileNotFound error in ctypes.util.find_library() and just return None on Linux. - gh-114328: The tty.setcbreak() and new tty.cfmakecbreak() no longer clears the terminal input ICRLF flag. This fixes a regression introduced in 3.12 that no longer matched how OSes define cbreak mode in their stty(1) manual pages. - gh-101438: Avoid reference cycle in ElementTree.iterparse. The iterator returned by ElementTree.iterparse may hold on to a file descriptor. The reference cycle prevented prompt clean-up of the file descriptor if the returned iterator was not exhausted. - gh-104522: OSError raised when run a subprocess now only has filename attribute set to cwd if the error was caused by a failed attempt to change the current directory. - gh-114149: Enum: correctly handle tuple subclasses in custom __new__. - gh-109534: Fix a reference leak in asyncio.selector_events.BaseSelectorEventLoop when SSL handshakes fail. Patch contributed by Jamie Phan. - gh-114077: Fix possible OverflowError in socket.socket.sendfile() when pass count larger than 2 GiB on 32-bit platform. - gh-114014: Fixed a bug in fractions.Fraction where an invalid string using d in the decimals part creates a different error compared to other invalid letters/characters. Patch by Jeremiah Gabriel Pascual. - gh-113951: Fix the behavior of tag_unbind() methods of tkinter.Text and tkinter.Canvas classes with three arguments. Previously, widget.tag_unbind(tag, sequence, funcid) destroyed the current binding for sequence, leaving sequence unbound, and deleted the funcid command. Now it removes only funcid from the binding for sequence, keeping other commands, and deletes the funcid command. It leaves sequence unbound only if funcid was the last bound command. - gh-113877: Fix tkinter method winfo_pathname() on 64-bit Windows. - gh-113661: unittest runner: Don’t exit 5 if tests were skipped. The intention of exiting 5 was to detect issues where the test suite wasn’t discovered at all. If we skipped tests, it was correctly discovered. - gh-113781: Silence unraisable AttributeError when warnings are emitted during Python finalization. - gh-112932: Restore the ability for zipfile to extractall from zip files with a “/” directory entry in them as is commonly added to zips by some wiki or bug tracker data exporters. - gh-113594: Fix UnicodeEncodeError in email when re-fold lines that contain unknown-8bit encoded part followed by non-unknown-8bit encoded part. - gh-113538: In asyncio.StreamReaderProtocol.connection_made(), there is callback that logs an error if the task wrapping the “connected callback” fails. This callback would itself fail if the task was cancelled. Prevent this by checking whether the task was cancelled first. If so, close the transport but don’t log an error. - gh-85567: Fix resource warnings for unclosed files in pickle and pickletools command line interfaces. - gh-101225: Increase the backlog for multiprocessing.connection.Listener objects created by multiprocessing.manager and multiprocessing.resource_sharer to significantly reduce the risk of getting a connection refused error when creating a multiprocessing.connection.Connection to them. - gh-113543: Make sure that webbrowser.MacOSXOSAScript sends webbrowser.open audit event. - gh-113028: When a second reference to a string appears in the input to pickle, and the Python implementation is in use, we are guaranteed that a single copy gets pickled and a single object is shared when reloaded. Previously, in protocol 0, when a string contained certain characters (e.g. newline) it resulted in duplicate objects. - gh-113421: Fix multiprocessing logger for %(filename)s. - gh-111784: Fix segfaults in the _elementtree module. Fix first segfault during deallocation of _elementtree.XMLParser instances by keeping strong reference to pyexpat module in module state for capsule lifetime. Fix second segfault which happens in the same deallocation process by keeping strong reference to _elementtree module in XMLParser structure for _elementtree module lifetime. - gh-113407: Fix import of unittest.mock when CPython is built without docstrings. - gh-113320: Fix regression in Python 3.12 where Protocol classes that were not marked as runtime-checkable would be unnecessarily introspected, potentially causing exceptions to be raised if the protocol had problematic members. Patch by Alex Waygood. - gh-113358: Fix rendering tracebacks for exceptions with a broken __getattr__. - gh-113214: Fix an AttributeError during asyncio SSL protocol aborts in SSL-over-SSL scenarios. - gh-113246: Update bundled pip to 23.3.2. - gh-113199: Make http.client.HTTPResponse.read1 and http.client.HTTPResponse.readline close IO after reading all data when content length is known. Patch by Illia Volochii. - gh-113188: Fix shutil.copymode() and shutil.copystat() on Windows. Previously they worked differenly if dst is a symbolic link: they modified the permission bits of dst itself rather than the file it points to if follow_symlinks is true or src is not a symbolic link, and did not modify the permission bits if follow_symlinks is false and src is a symbolic link. - gh-61648: Detect line numbers of properties in doctests. - gh-112559: signal.signal() and signal.getsignal() no longer call repr on callable handlers. asyncio.run() and asyncio.Runner.run() no longer call repr on the task results. Patch by Yilei Yang. - gh-110190: Fix ctypes structs with array on PPC64LE platform by setting MAX_STRUCT_SIZE to 64 in stgdict. Patch by Diego Russo. - gh-79429: Ignore FileNotFoundError when remove a temporary directory in the multiprocessing finalizer. - gh-81194: Fix a crash in socket.if_indextoname() with specific value (UINT_MAX). Fix an integer overflow in socket.if_indextoname() on 64-bit non-Windows platforms. - gh-112343: Improve handling of pdb convenience variables to avoid replacing string contents. - gh-111615: Fix a regression caused by a fix to gh-93162 whereby you couldn’t configure a QueueHandler without specifying handlers. - gh-111049: Fix crash during garbage collection of the io.BytesIO buffer object. - gh-110345: Show the Tcl/Tk patchlevel (rather than version) in tkinter._test(). - gh-109858: Protect zipfile from “quoted-overlap” zipbomb. It now raises BadZipFile when try to read an entry that overlaps with other entry or central directory. - gh-114440: On Windows, closing the connection writer when cleaning up a broken multiprocessing.Queue queue is now done for all queues, rather than only in concurrent.futures manager thread. This can prevent a deadlock when a multiprocessing worker process terminates without cleaning up. This completes the backport of patches by Victor Stinner and Serhiy Storchaka. - gh-38807: Fix race condition in trace. Instead of checking if a directory exists and creating it, directly call os.makedirs() with the kwarg exist_ok=True. - gh-75705: Set unixfrom envelope in mailbox.mbox and mailbox.MMDF. - gh-106233: Fix stacklevel in InvalidTZPathWarning during zoneinfo module import. - gh-105102: Allow ctypes.Union to be nested in ctypes.Structure when the system endianness is the opposite of the classes. - gh-104282: Fix null pointer dereference in lzma._decode_filter_properties() due to improper handling of BCJ filters with properties of zero length. Patch by Radislav Chugunov. - gh-102512: When os.fork() is called from a foreign thread (aka _DummyThread), the type of the thread in a child process is changed to _MainThread. Also changed its name and daemonic status, it can be now joined. - bpo-35928: io.TextIOWrapper now correctly handles the decoding buffer after read() and write(). - bpo-26791: shutil.move() now moves a symlink into a directory when that directory is the target of the symlink. This provides the same behavior as the mv shell command. The previous behavior raised an exception. Patch by Jeffrey Kintscher. - bpo-36959: Fix some error messages for invalid ISO format string combinations in strptime() that referred to directives not contained in the format string. Patch by Gordon P. Hemsley. - bpo-18060: Fixed a class inheritance issue that can cause segfaults when deriving two or more levels of subclasses from a base class of Structure or Union. - Documentation - gh-110746: Improved markup for valid options/values for methods ttk.treeview.column and ttk.treeview.heading, and for Layouts. - gh-95649: Document that the asyncio module contains code taken from v0.16.0 of the uvloop project, as well as the required MIT licensing information. - Tests - gh-109980: Fix test_tarfile_vs_tar in test_shutil for macOS, where system tar can include more information in the archive than shutil.make_archive. - gh-105089: Fix test.test_zipfile.test_core.TestWithDirectory.test_create_directory_with_write test in AIX by doing a bitwise AND of 0xFFFF on mode , so that it will be in sync with zinfo.external_attr - bpo-40648: Test modes that file can get with chmod() on Windows. - Build - gh-112305: Fixed the check-clean-src step performed on out of tree builds to detect errant $(srcdir)/Python/frozen_modules/*.h files and recommend appropriate source tree cleanup steps to get a working build again. - gh-112867: Fix the build for the case that WITH_PYMALLOC_RADIX_TREE=0 set. - bpo-11102: The os.major(), os.makedev(), and os.minor() functions are now available on HP-UX v3. - bpo-36351: Do not set ipv6type when cross-compiling. - IDLE - gh-96905: In idlelib code, stop redefining built-ins ‘dict’ and ‘object’. - gh-72284: Improve the lists of features, editor key bindings, and shell key bingings in the IDLE doc. - gh-113903: Fix rare failure of test.test_idle, in test_configdialog. - gh-113729: Fix the “Help -> IDLE Doc” menu bug in 3.11.7 and 3.12.1. - gh-113269: Fix test_editor hang on macOS Catalina. - gh-112898: Fix processing unsaved files when quitting IDLE on macOS. - gh-103820: Revise IDLE bindings so that events from mouse button 4/5 on non-X11 windowing systems (i.e. Win32 and Aqua) are not mistaken for scrolling. - bpo-13586: Enter the selected text when opening the “Replace” dialog. - Tools/Demos - gh-109991: Update GitHub CI workflows to use OpenSSL 3.0.13 and multissltests to use 1.1.1w, 3.0.13, 3.1.5, and 3.2.1. - gh-115015: Fix a bug in Argument Clinic that generated incorrect code for methods with no parameters that use the METH_METHOD | METH_FASTCALL | METH_KEYWORDS calling convention. Only the positional parameter count was checked; any keyword argument passed would be silently accepted. - Refresh patches: - bpo-31046_ensurepip_honours_prefix.patch - fix_configure_rst.patch - no-skipif-doctests.patch - python-3.3.0b1-fix_date_time_compiler.patch - python-3.3.0b1-localpath.patch - python-3.3.0b1-test-posix_fadvise.patch - skip-test_pyobject_freed_is_freed.patch - subprocess-raise-timeout.patch- Update patch fix_configure_rst.patch - Update to 3.12.1 (CVE-2023-6507, bsc#1217939): - Core and Builtins - gh-112125: Fix None.__ne__(None) returning NotImplemented instead of False - gh-112625: Fixes a bug where a bytearray object could be cleared while iterating over an argument in the bytearray.join() method that could result in reading memory after it was freed. - gh-105967: Workaround a bug in Apple’s macOS platform zlib library where zlib.crc32() and binascii.crc32() could produce incorrect results on multi-gigabyte inputs. Including when using zipfile on zips containing large data. - gh-112356: Stopped erroneously deleting a LOAD_NULL bytecode instruction when optimized twice. - gh-111058: Change coro.cr_frame/gen.gi_frame to return None after the coroutine/generator has been closed. This fixes a bug where getcoroutinestate() and getgeneratorstate() return the wrong state for a closed coroutine/generator. - gh-112388: Fix an error that was causing the parser to try to overwrite tokenizer errors. Patch by pablo Galindo - gh-112387: Fix error positions for decoded strings with backwards tokenize errors. Patch by Pablo Galindo - gh-112367: Avoid undefined behaviour when using the perf trampolines by not freeing the code arenas until shutdown. Patch by Pablo Galindo - gh-112243: Don’t include comments in f-string debug expressions. Patch by Pablo Galindo - gh-112266: Change docstrings of __dict__ and __weakref__. - gh-111654: Fix runtime crash when some error happens in opcode LOAD_FROM_DICT_OR_DEREF. - gh-109181: Speed up Traceback object creation by lazily compute the line number. Patch by Pablo Galindo - gh-102388: Fix a bug where iso2022_jp_3 and iso2022_jp_2004 codecs read out of bounds - gh-111366: Fix an issue in the codeop that was causing SyntaxError exceptions raised in the presence of invalid syntax to not contain precise error messages. Patch by Pablo Galindo - gh-111380: Fix a bug that was causing SyntaxWarning to appear twice when parsing if invalid syntax is encountered later. Patch by Pablo galindo - gh-94438: Fix a regression that prevented jumping across is None and is not None when debugging. Patch by Savannah Ostrowski. - gh-110938: Fix error messages for indented blocks with functions and classes with generic type parameters. Patch by Pablo Galindo - gh-109894: Fixed crash due to improperly initialized static MemoryError in subinterpreter. - gh-110782: Fix crash when typing.TypeVar is constructed with a keyword argument. Patch by Jelle Zijlstra. - gh-110696: Fix incorrect error message for invalid argument unpacking. Patch by Pablo Galindo - gh-110543: Fix regression in Python 3.12 where types.CodeType.replace() would produce a broken code object if called on a module or class code object that contains a comprehension. Patch by Jelle Zijlstra. - gh-110514: Add PY_THROW to sys.setprofile() events - gh-110455: Guard assert(tstate->thread_id > 0) with #ifndef HAVE_PTHREAD_STUBS. This allows for for pydebug builds to work under WASI which (currently) lacks thread support. - gh-110259: Correctly identify the format spec in f-strings (with single or triple quotes) that have multiple lines in the expression part and include a formatting spec. Patch by Pablo Galindo - gh-110237: Fix missing error checks for calls to PyList_Append in _PyEval_MatchClass. - gh-109889: Fix the compiler’s redundant NOP detection algorithm to skip over NOPs with no line number when looking for the next instruction’s lineno. - gh-109853: sys.path[0] is now set correctly for subinterpreters. - gh-105716: Subinterpreters now correctly handle the case where they have threads running in the background. Before, such threads would interfere with cleaning up and destroying them, as well as prevent running another script. - gh-109793: The main thread no longer exits prematurely when a subinterpreter is cleaned up during runtime finalization. The bug was a problem particularly because, when triggered, the Python process would always return with a 0 exitcode, even if it failed. - gh-109596: Fix some tokens in the grammar that were incorrectly marked as soft keywords. Also fix some repeated rule names and ensure that repeated rules are not allowed. Patch by Pablo Galindo - gh-109351: Fix crash when compiling an invalid AST involving a named (walrus) expression. - gh-109216: Fix possible memory leak in BUILD_MAP. - gh-109207: Fix a SystemError in __repr__ of symtable entry object. - gh-109179: Fix bug where the C traceback display drops notes from SyntaxError. - gh-109052: Use the base opcode when comparing code objects to avoid interference from instrumentation - gh-88943: Improve syntax error for non-ASCII character that follows a numerical literal. It now points on the invalid non-ASCII character, not on the valid numerical literal. - gh-106931: Statically allocated string objects are now interned globally instead of per-interpreter. This fixes a situation where such a string would only be interned in a single interpreter. Normal string objects are unaffected. - Library - gh-79325: Fix an infinite recursion error in tempfile.TemporaryDirectory() cleanup on Windows. - gh-112645: Remove deprecation error on passing onerror to shutil.rmtree(). - gh-112618: Fix a caching bug relating to typing.Annotated. Annotated[str, True] is no longer identical to Annotated[str, 1]. - gh-112334: Fixed a performance regression in 3.12’s subprocess on Linux where it would no longer use the fast-path vfork() system call when it should have due to a logic bug, instead always falling back to the safe but slower fork(). - Also fixed a related 3.12 security regression: If a value of extra_groups=[] was passed to subprocess.Popen or related APIs, the underlying setgroups(0, NULL) system call to clear the groups list would not be made in the child process prior to exec(). This has been assigned CVE-2023-6507. - This was identified via code inspection in the process of fixing the first bug. - gh-110190: Fix ctypes structs with array on Arm platform by setting MAX_STRUCT_SIZE to 32 in stgdict. Patch by Diego Russo. - gh-112578: Fix a spurious RuntimeWarning when executing the zipfile module. - gh-112509: Fix edge cases that could cause a key to be present in both the __required_keys__ and __optional_keys__ attributes of a typing.TypedDict. Patch by Jelle Zijlstra. - gh-112414: Fix regression in Python 3.12 where calling repr() on a module that had been imported using a custom loader could fail with AttributeError. Patch by Alex Waygood. - gh-112358: Revert change to struct.Struct initialization that broke some cases of subclassing. - gh-94722: Fix bug where comparison between instances of DocTest fails if one of them has None as its lineno. - gh-112105: Make readline.set_completer_delims() work with libedit - gh-111942: Fix SystemError in the TextIOWrapper constructor with non-encodable “errors” argument in non-debug mode. - gh-109538: Issue warning message instead of having RuntimeError be displayed when event loop has already been closed at StreamWriter.__del__(). - gh-111942: Fix crashes in io.TextIOWrapper.reconfigure() when pass invalid arguments, e.g. non-string encoding. - gh-111460: curses: restore wide character support (including curses.unget_wch() and get_wch()) on macOS, which was unavailable due to a regression in Python 3.12. - gh-103791: contextlib.suppress now supports suppressing exceptions raised as part of a BaseExceptionGroup, in addition to the recent support for ExceptionGroup. - gh-111804: Remove posix.fallocate() under WASI as the underlying posix_fallocate() is not available in WASI preview2. - gh-111841: Fix truncating arguments on an embedded null character in os.putenv() and os.unsetenv() on Windows. - gh-111541: Fix doctest for SyntaxError not-builtin subclasses. - gh-110894: Call loop exception handler for exceptions in client_connected_cb of asyncio.start_server() so that applications can handle it. Patch by Kumar Aditya. - gh-111531: Fix reference leaks in bind_class() and bind_all() methods of tkinter widgets. - gh-111356: Added io.text_encoding(), io.DEFAULT_BUFFER_SIZE, and io.IncrementalNewlineDecoder to io.__all__. - gh-111342: Fixed typo in math.sumprod(). - gh-68166: Remove mention of not supported “vsapi” element type in tkinter.ttk.Style.element_create(). Add tests for element_create() and other ttk.Style methods. Add examples for element_create() in the documentation. - gh-75666: Fix the behavior of tkinter widget’s unbind() method with two arguments. Previously, widget.unbind(sequence, funcid) destroyed the current binding for sequence, leaving sequence unbound, and deleted the funcid command. Now it removes only funcid from the binding for sequence, keeping other commands, and deletes the funcid command. It leaves sequence unbound only if funcid was the last bound command. - gh-79033: Another attempt at fixing asyncio.Server.wait_closed(). It now blocks until both conditions are true: the server is closed, and there are no more active connections. (This means that in some cases where in 3.12.0 this function would incorrectly have returned immediately, it will now block; in particular, when there are no active connections but the server hasn’t been closed yet.) - gh-111295: Fix time not checking for errors when initializing. - gh-111253: Add error checking during _socket module init. - gh-111251: Fix _blake2 not checking for errors when initializing. - gh-111174: Fix crash in io.BytesIO.getbuffer() called repeatedly for empty BytesIO. - gh-111187: Postpone removal version for locale.getdefaultlocale() to Python 3.15. - gh-111159: Fix doctest output comparison for exceptions with notes. - gh-110910: Fix invalid state handling in asyncio.TaskGroup and asyncio.Timeout. They now raise proper RuntimeError if they are improperly used and are left in consistent state after this. - gh-111092: Make turtledemo run without default root enabled. - gh-110488: Fix a couple of issues in pathlib.PurePath.with_name(): a single dot was incorrectly considered a valid name, and in PureWindowsPath, a name with an NTFS alternate data stream, like a:b, was incorrectly considered invalid. - gh-110392: Fix tty.setraw() and tty.setcbreak(): previously they returned partially modified list of the original tty attributes. tty.cfmakeraw() and tty.cfmakecbreak() now make a copy of the list of special characters before modifying it. - gh-110590: Fix a bug in _sre.compile() where TypeError would be overwritten by OverflowError when the code argument was a list of non-ints. - gh-65052: Prevent pdb from crashing when trying to display undisplayable objects - gh-110519: Deprecation warning about non-integer number in gettext now alwais refers to the line in the user code where gettext function or method is used. Previously it could refer to a line in gettext code. - gh-110395: Ensure that select.kqueue() objects correctly appear as closed in forked children, to prevent operations on an invalid file descriptor. - gh-110378: contextmanager() and asynccontextmanager() context managers now close an invalid underlying generator object that yields more then one value. - gh-110365: Fix termios.tcsetattr() bug that was overwritting existing errors during parsing integers from term list. - gh-109653: Fix a Python 3.12 regression in the import time of random. Patch by Alex Waygood. - gh-110196: Add __reduce__ method to IPv6Address in order to keep scope_id - gh-110036: On Windows, multiprocessing Popen.terminate() now catchs PermissionError and get the process exit code. If the process is still running, raise again the PermissionError. Otherwise, the process terminated as expected: store its exit code. Patch by Victor Stinner. - gh-110038: Fixed an issue that caused KqueueSelector.select() to not return all the ready events in some cases when a file descriptor is registered for both read and write. - gh-109631: re functions such as re.findall(), re.split(), re.search() and re.sub() which perform short repeated matches can now be interrupted by user. - gh-109747: Improve errors for unsupported look-behind patterns. Now re.error is raised instead of OverflowError or RuntimeError for too large width of look-behind pattern. - gh-109818: Fix reprlib.recursive_repr() not copying __type_params__ from decorated function. - gh-109047: concurrent.futures: The executor manager thread now catches exceptions when adding an item to the call queue. During Python finalization, creating a new thread can now raise RuntimeError. Catch the exception and call terminate_broken() in this case. Patch by Victor Stinner. - gh-109782: Ensure the signature of os.path.isdir() is identical on all platforms. Patch by Amin Alaee. - gh-109590: shutil.which() will prefer files with an extension in PATHEXT if the given mode includes os.X_OK on win32. If no PATHEXT match is found, a file without an extension in PATHEXT can be returned. This change will have shutil.which() act more similarly to previous behavior in Python 3.11. - gh-109786: Fix possible reference leaks and crash when re-enter the __next__() method of itertools.pairwise. - gh-109593: Avoid deadlocking on a reentrant call to the multiprocessing resource tracker. Such a reentrant call, though unlikely, can happen if a GC pass invokes the finalizer for a multiprocessing object such as SemLock. - gh-109613: Fix os.stat() and os.DirEntry.stat(): check for exceptions. Previously, on Python built in debug mode, these functions could trigger a fatal Python error (and abort the process) when a function succeeded with an exception set. Patch by Victor Stinner. - gh-109375: The pdb alias command now prevents registering aliases without arguments. - gh-107219: Fix a race condition in concurrent.futures. When a process in the process pool was terminated abruptly (while the future was running or pending), close the connection write end. If the call queue is blocked on sending bytes to a worker process, closing the connection write end interrupts the send, so the queue can be closed. Patch by Victor Stinner. - gh-50644: Attempts to pickle or create a shallow or deep copy of codecs streams now raise a TypeError. Previously, copying failed with a RecursionError, while pickling produced wrong results that eventually caused unpickling to fail with a RecursionError. - gh-108987: Fix _thread.start_new_thread() race condition. If a thread is created during Python finalization, the newly spawned thread now exits immediately instead of trying to access freed memory and lead to a crash. Patch by Victor Stinner. - gh-108791: Improved error handling in pdb command line interface, making it produce more concise error messages. - gh-105829: Fix concurrent.futures.ProcessPoolExecutor deadlock - gh-106584: Fix exit code for unittest if all tests are skipped. Patch by Egor Eliseev. - gh-102956: Fix returning of empty byte strings after seek in zipfile module - gh-84867: unittest.TestLoader no longer loads test cases from exact unittest.TestCase and unittest.FunctionTestCase classes. - gh-91133: Fix a bug in tempfile.TemporaryDirectory cleanup, which now no longer dereferences symlinks when working around file system permission errors. - gh-73561: Omit the interface scope from an IPv6 address when used as Host header by http.client. - gh-86826: zipinfo now supports the full range of values in the TZ string determined by RFC 8536 and detects all invalid formats. Both Python and C implementations now raise exceptions of the same type on invalid data. - bpo-43153: On Windows, tempfile.TemporaryDirectory previously masked a PermissionError with NotADirectoryError during directory cleanup. It now correctly raises PermissionError if errors are not ignored. Patch by Andrei Kulakov and Ken Jin. - bpo-35332: The shutil.rmtree() function now ignores errors when calling os.close() when ignore_errors is True, and os.close() no longer retried after error. - bpo-41422: Fixed memory leaks of pickle.Pickler and pickle.Unpickler involving cyclic references via the internal memo mapping. - bpo-40262: The ssl.SSLSocket.recv_into() method no longer requires the buffer argument to implement __len__ and supports buffers with arbitrary item size. - Documentation - gh-111699: Relocate smtpd deprecation notice to its own section rather than under locale in What’s New in Python 3.12 document - gh-108826: dis module command-line interface is now mentioned in documentation. Test- s - gh-112769: The tests now correctly compare zlib version when zlib.ZLIB_RUNTIME_VERSION contains non-integer suffixes. For example zlib-ng defines the version as 1.3.0.zlib-ng. - gh-110367: Make regrtest --verbose3 option compatible with - -huntrleaks -jN options. The ./python -m test -j1 -R 3:3 - -verbose3 command now works as expected. Patch by Victor Stinner. - gh-111165: Remove no longer used functions run_unittest() and run_doctest() from the test.support module. - gh-110932: Fix regrtest if the SOURCE_DATE_EPOCH environment variable is defined: use the variable value as the random seed. Patch by Victor Stinner. - gh-110995: test_gdb: Fix detection of gdb built without Python scripting support. Patch by Victor Stinner. - gh-110918: Test case matching patterns specified by options - -match, --ignore, --matchfile and --ignorefile are now tested in the order of specification, and the last match determines whether the test case be run or ignored. - gh-110647: Fix test_stress_modifying_handlers() of test_signal. Patch by Victor Stinner. - gh-103053: Fix test_tools.test_freeze on FreeBSD: run “make distclean” instead of “make clean” in the copied source directory to remove also the “python” program. Patch by Victor Stinner. - gh-110167: Fix a deadlock in test_socket when server fails with a timeout but the client is still running in its thread. Don’t hold a lock to call cleanup functions in doCleanups(). One of the cleanup function waits until the client completes, whereas the client could deadlock if it called addCleanup() in such situation. Patch by Victor Stinner. - gh-110388: Add tests for tty. - gh-81002: Add tests for termios. - gh-110267: Add tests for pickling and copying PyStructSequence objects. Patched by Xuehai Pan. - gh-110031: Skip test_threading tests using thread+fork if Python is built with Address Sanitizer (ASAN). Patch by Victor Stinner. - gh-110088: Fix test_asyncio timeouts: don’t measure the maximum duration, a test should not measure a CI performance. Only measure the minimum duration when a task has a timeout or delay. Add CLOCK_RES to test_asyncio.utils. Patch by Victor Stinner. - gh-109974: Fix race conditions in test_threading lock tests. Wait until a condition is met rather than using time.sleep() with a hardcoded number of seconds. Patch by Victor Stinner. - gh-110033: Fix test_interprocess_signal() of test_signal. Make sure that the subprocess.Popen object is deleted before the test raising an exception in a signal handler. Otherwise, Popen.__del__() can get the exception which is logged as Exception ignored in: ... and the test fails. Patch by Victor Stinner. - gh-109594: Fix test_timeout() of test_concurrent_futures.test_wait. Remove the future which may or may not complete depending if it takes longer than the timeout ot not. Keep the second future which does not complete before wait() timeout. Patch by Victor Stinner. - gh-109972: Split test_gdb.py file into a test_gdb package made of multiple tests, so tests can now be run in parallel. Patch by Victor Stinner. - gh-103053: Skip test_freeze_simple_script() of test_tools.test_freeze if Python is built with ./configure - -enable-optimizations, which means with Profile Guided Optimization (PGO): it just makes the test too slow. The freeze tool is tested by many other CIs with other (faster) compiler flags. Patch by Victor Stinner. - gh-109580: Skip test_perf_profiler if Python is built with ASAN, MSAN or UBSAN sanitizer. Python does crash randomly in this test on such build. Patch by Victor Stinner. - gh-104736: Fix test_gdb on Python built with LLVM clang 16 on Linux ppc64le (ex: Fedora 38). Search patterns in gdb “bt” command output to detect when gdb fails to retrieve the traceback. For example, skip a test if Backtrace stopped: frame did not save the PC is found. Patch by Victor Stinner. - gh-108927: Fixed order dependence in running tests in the same process when a test that has submodules (e.g. test_importlib) follows a test that imports its submodule (e.g. test_importlib.util) and precedes a test (e.g. test_unittest or test_compileall) that uses that submodule. - Build - gh-112088: Add Tools/build/regen-configure.sh script to regenerate the configure with an Ubuntu container image. The quay.io/tiran/cpython_autoconf:271 container image (tiran/cpython_autoconf) is no longer used. Patch by Victor Stinner. - gh-111046: For wasi-threads, memory is now exported to fix compatibility issues with some wasm runtimes. - gh-103053: “make check-clean-src” now also checks if the “python” program is found in the source directory: fail with an error if it does exist. Patch by Victor Stinner. - gh-109191: Fix compile error when building with recent versions of libedit. - IDLE - bpo-35668: Add docstrings to the IDLE debugger module. Fix two bugs: initialize Idb.botframe (should be in Bdb); in Idb.in_rpc_code, check whether prev_frame is None before trying to use it. Greatly expand test_debugger. - C API - gh-106560: Fix redundant declarations in the public C API. Declare PyBool_Type and PyLong_Type only once. Patch by Victor Stinner. - gh-112438: Fix support of format units “es”, “et”, “es#”, and “et#” in nested tuples in PyArg_ParseTuple()-like functions. - gh-109521: PyImport_GetImporter() now sets RuntimeError if it fails to get sys.path_hooks or sys.path_importer_cache or they are not list and dict correspondingly. Previously it could return NULL without setting error in obscure cases, crash or raise SystemError if these attributes have wrong type.- Remove F00251-change-user-install-location.patch, that patch breaks the python-rpm-macros usage with multibuild- Update to the final release of 3.12.0: Python 3.12 is the latest stable release of the Python programming language, with a mix of changes to the language and the standard library. The library changes focus on cleaning up deprecated APIs, usability, and correctness. Of note, the distutils package has been removed from the standard library. Filesystem support in os and pathlib has seen a number of improvements, and several modules have better performance. The language changes focus on usability, as f-strings have had many limitations removed and ‘Did you mean …’ suggestions continue to improve. The new type parameter syntax and type statement improve ergonomics for using generic types and type aliases with static type checkers. This article doesn’t attempt to provide a complete specification of all new features, but instead gives a convenient overview. For full details, you should refer to the documentation, such as the Library Reference and Language Reference. If you want to understand the complete implementation and design rationale for a change, refer to the PEP for a particular new feature; but note that PEPs usually are not kept up-to-date once a feature has been fully implemented. - New syntax features: - PEP 695, type parameter syntax and the type statement - New grammar features: - PEP 701, f-strings in the grammar - Interpreter improvements: - PEP 684, a unique per-interpreter GIL - PEP 669, low impact monitoring - Improved ‘Did you mean …’ suggestions for NameError, ImportError, and SyntaxError exceptions - Python data model improvements: - PEP 688, using the buffer protocol from Python - Significant improvements in the standard library: - The pathlib.Path class now supports subclassing - The os module received several improvements for Windows support - A command-line interface has been added to the sqlite3 module - isinstance() checks against runtime-checkable protocols enjoy a speed up of between two and 20 times - The asyncio package has had a number of performance improvements, with some benchmarks showing a 75% speed up. - A command-line interface has been added to the uuid module - Due to the changes in PEP 701, producing tokens via the tokenize module is up to up to 64% faster. - Security improvements: - Replace the builtin hashlib implementations of SHA1, SHA3, SHA2-384, SHA2-512, and MD5 with formally verified code from the HACL* project. These builtin implementations remain as fallbacks that are only used when OpenSSL does not provide them. - C API improvements: - PEP 697, unstable C API tier - PEP 683, immortal objects - CPython implementation improvements: - PEP 709, comprehension inlining - CPython support for the Linux perf profiler - Implement stack overflow protection on supported platforms - New typing features: - PEP 692, using TypedDict to annotate **kwargs - PEP 698, typing.override() decorator - Important deprecations, removals or restrictions: - PEP 623: Remove wstr from Unicode objects in Python’s C API, reducing the size of every str object by at least 8 bytes. - PEP 632: Remove the distutils package. See the migration guide for advice replacing the APIs it provided. The third-party Setuptools package continues to provide distutils, if you still require it in Python 3.12 and beyond. - gh-95299: Do not pre-install setuptools in virtual environments created with venv. This means that distutils, setuptools, pkg_resources, and easy_install will no longer available by default; to access these run pip install setuptools in the activated virtual environment. - The asynchat, asyncore, and imp modules have been removed, along with several unittest.TestCase method aliases. - Refresh bluez-devel-vendor.tar.xz from bluez-devel 5.69-1.1.- Update to 3.12.0rc3: - Core and Builtins - gh-109496: On a Python built in debug mode, Py_DECREF() now calls _Py_NegativeRefcount() if the object is a dangling pointer to deallocated memory: memory filled with 0xDD “dead byte” by the debug hook on memory allocators. The fix is to check the reference count before checking for _Py_IsImmortal(). Patch by Victor Stinner. - gh-109371: Deopted instructions correctly for tool initialization and modified the incorrect assertion in instrumentation, when a previous tool already sets INSTRUCTION events - gh-105658: Fix bug where the line trace of an except block ending with a conditional includes an excess event with the line of the conditional expression. - gh-109219: Fix compiling type param scopes that use a name which is also free in an inner scope. - gh-109341: Fix crash when compiling an invalid AST involving a ast.TypeAlias. - gh-109195: Fix source location for the LOAD_* instruction preceding a LOAD_SUPER_ATTR to load the super global (or shadowing variable) so that it encompasses only the name super and not the following parentheses. - gh-109118: Disallow nested scopes (lambdas, generator expressions, and comprehensions) within PEP 695 annotation scopes that are nested within classes. - gh-109114: Relax the detection of the error message for invalid lambdas inside f-strings to not search for arbitrary replacement fields to avoid false positives. Patch by Pablo Galindo - gh-109118: Fix interpreter crash when a NameError is raised inside the type parameters of a generic class. - gh-108976: Fix crash that occurs after de-instrumenting a code object in a monitoring callback. - gh-108732: Make iteration variables of module- and class-scoped comprehensions visible to pdb and other tools that use frame.f_locals again. - gh-108959: Fix caret placement for error locations for subscript and binary operations that involve non-semantic parentheses and spaces. Patch by Pablo Galindo - Library - gh-108682: Enum: require names=() or type=... to create an empty enum using the functional syntax. - gh-108843: Fix an issue in ast.unparse() when unparsing f-strings containing many quote types. - Documentation - gh-102823: Document the return type of x // y when x and y have type float. - Tests - gh-109396: Fix test_socket.test_hmac_sha1() in FIPS mode. Use a longer key: FIPS mode requires at least of at least 112 bits. The previous key was only 32 bits. Patch by Victor Stinner. - gh-104736: Fix test_gdb on Python built with LLVM clang 16 on Linux ppc64le (ex: Fedora 38). Search patterns in gdb “bt” command output to detect when gdb fails to retrieve the traceback. For example, skip a test if Backtrace stopped: frame did not save the PC is found. Patch by Victor Stinner. - gh-109237: Fix test_site.test_underpth_basic() when the working directory contains at least one non-ASCII character: encode the ._pth file to UTF-8 and enable the UTF-8 Mode to use UTF-8 for the child process stdout. Patch by Victor Stinner. - gh-109230: Fix test_pyexpat.test_exception(): it can now be run from a directory different than Python source code directory. Before, the test failed in this case. Skip the test if Modules/pyexpat.c source is not available. Skip also the test on Python implementations other than CPython. Patch by Victor Stinner. - gh-109015: Fix test_asyncio, test_imaplib and test_socket tests on FreeBSD if the TCP blackhole is enabled (sysctl net.inet.tcp.blackhole). Skip the few tests which failed with ETIMEDOUT which such non standard configuration. Currently, the FreeBSD GCP image enables TCP and UDP blackhole (sysctl net.inet.tcp.blackhole=2 and sysctl net.inet.udp.blackhole=1). Patch by Victor Stinner. - gh-91960: Skip test_gdb if gdb is unable to retrieve Python frame objects: if a frame is . When Python is built with “clang -Og”, gdb can fail to retrive the frame parameter of _PyEval_EvalFrameDefault(). In this case, tests like py_bt() are likely to fail. Without getting access to Python frames, python-gdb.py is mostly clueless on retrieving the Python traceback. Moreover, test_gdb is no longer skipped on macOS if Python is built with Clang. Patch by Victor Stinner. - gh-108962: Skip test_tempfile.test_flags() if chflags() fails with “OSError: [Errno 45] Operation not supported” (ex: on FreeBSD 13). Patch by Victor Stinner. - gh-108851: Fix test_tomllib recursion tests for WASI buildbots: reduce the recursion limit and compute the maximum nested array/dict depending on the current available recursion limit. Patch by Victor Stinner. - gh-108851: Add get_recursion_available() and get_recursion_depth() functions to the test.support module. Patch by Victor Stinner. - gh-108834: Add --fail-rerun option option to regrtest: if a test failed when then passed when rerun in verbose mode, exit the process with exit code 2 (error), instead of exit code 0 (success). Patch by Victor Stinner. - gh-108834: Rename regrtest --verbose2 option (-w) to --rerun. Keep --verbose2 as a deprecated alias. Patch by Victor Stinner. - gh-108834: When regrtest reruns failed tests in verbose mode (./python -m test --rerun), tests are now rerun in fresh worker processes rather than being executed in the main process. If a test does crash or is killed by a timeout, the main process can detect and handle the killed worker process. Tests are rerun in parallel if the -jN option is used to run tests in parallel. Patch by Victor Stinner. - gh-103186: Suppress and assert expected RuntimeWarnings in test_sys_settrace.py - Build - gh-108740: Fix a race condition in make regen-all. The deepfreeze.c source and files generated by Argument Clinic are now generated or updated before generating “global objects”. Previously, some identifiers may miss depending on the order in which these files were generated. Patch by Victor Stinner. - Python 3.12.0 release candidate 2: - Security - gh-108310: Fixed an issue where instances of ssl.SSLSocket were vulnerable to a bypass of the TLS handshake and included protections (like certificate verification) and treating sent unencrypted data as if it were post-handshake TLS encrypted data. Security issue reported as CVE-2023-40217 by Aapo Oksman. Patch by Gregory P. Smith. - gh-107774: PEP 669 specifies that sys.monitoring.register_callback will generate an audit event. Pre-releases of Python 3.12 did not generate the audit event. This is now fixed. - Core and Builtins - gh-108520: Fix multiprocessing.synchronize.SemLock.__setstate__() to properly initialize multiprocessing.synchronize.SemLock._is_fork_ctx. This fixes a regression when passing a SemLock accross nested processes. - Rename multiprocessing.synchronize.SemLock.is_fork_ctx to multiprocessing.synchronize.SemLock._is_fork_ctx to avoid exposing it as public API. - gh-108654: Restore locals shadowed by an inlined comprehension if the comprehension raises an exception. - gh-108487: Change an assert that would cause a spurious crash in a devious case that should only trigger deoptimization. - gh-106176: Use a WeakValueDictionary to track the lists containing the modules each thread is currently importing. This helps avoid a reference leak from keeping the list around longer than necessary. Weakrefs are used as GC can’t interrupt the cleanup. - gh-107901: Fix missing line number on JUMP_BACKWARD at the end of a for loop. - gh-108390: Raise an exception when setting a non-local event (RAISE, EXCEPTION_HANDLED, etc.) in sys.monitoring.set_local_events. - Fixes crash when tracing in recursive calls to Python classes. - gh-91051: Fix abort / segfault when using all eight type watcher slots, on platforms where char is signed by default. - gh-107724: In pre-release versions of 3.12, up to rc1, the sys.monitoring callback function for the PY_THROW event was missing the third, exception argument. That is now fixed. - gh-107080: Trace refs builds (--with-trace-refs) were crashing when used with isolated subinterpreters. The problematic global state has been isolated to each interpreter. Other fixing the crashes, this change does not affect users. - gh-77377: Ensure that multiprocessing synchronization objects created in a fork context are not sent to a different process created in a spawn context. This changes a segfault into an actionable RuntimeError in the parent process. - Library - gh-108469: ast.unparse() now supports new f-string syntax introduced in Python 3.12. Note that the f-string quotes are reselected for simplicity under the new syntax. (Patch by Steven Sun) - gh-108682: Enum: raise TypeError if super().__new__() is called from a custom __new__. - gh-108295: Fix crashes related to use of weakrefs on typing.TypeVar. - gh-64662: Fix support for virtual tables in sqlite3.Connection.iterdump(). Patch by Aviv Palivoda. - gh-108111: Fix a regression introduced in gh-101251 for 3.12, resulting in an incorrect offset calculation in gzip.GzipFile.seek(). - gh-105736: Harmonized the pure Python version of OrderedDict with the C version. Now, both versions set up their internal state in __new__. Formerly, the pure Python version did the set up in __init__. - gh-108083: Fix bugs in the constructor of sqlite3.Connection and sqlite3.Connection.close() where exceptions could be leaked. Patch by Erlend E. Aasland. - gh-107963: Fix multiprocessing.set_forkserver_preload() to check the given list of modules names. Patch by Dong-hee Na. - gh-106242: Fixes os.path.normpath() to handle embedded null characters without truncating the path. - gh-107913: Fix possible losses of errno and winerror values in OSError exceptions if they were cleared or modified by the cleanup code before creating the exception object. - gh-107845: tarfile.data_filter() now takes the location of symlinks into account when determining their target, so it will no longer reject some valid tarballs with LinkOutsideDestinationError. - gh-107805: Fix signatures of module-level generated functions in turtle. - gh-107715: Fix doctest.DocTestFinder.find() in presence of class names with special characters. Patch by Gertjan van Zwieten. - gh-100814: Passing a callable object as an option value to a Tkinter image now raises the expected TclError instead of an AttributeError. - gh-106684: Close asyncio.StreamWriter when it is not closed by application leading to memory leaks. Patch by Kumar Aditya. - gh-107396: tarfiles; Fixed use before assignment of self.exception for gzip decompression - gh-106052: re module: fix the matching of possessive quantifiers in the case of a subpattern containing backtracking. - gh-100061: Fix a bug that causes wrong matches for regular expressions with possessive qualifier. - gh-99203: Restore following CPython <= 3.10.5 behavior of shutil.make_archive(): do not create an empty archive if root_dir is not a directory, and, in that case, raise FileNotFoundError or NotADirectoryError regardless of format choice. Beyond the brought-back behavior, the function may now also raise these exceptions in dry_run mode. - Documentation - gh-105052: Update timeit doc to specify that time in seconds is just the default. - Tests - gh-89392: Removed support of test_main() function in tests. They now always use normal unittest test runner. - gh-108388: Convert test_concurrent_futures to a package of 7 sub-tests. Patch by Victor Stinner. - gh-108388: Split test_multiprocessing_fork, test_multiprocessing_forkserver and test_multiprocessing_spawn into test packages. Each package is made of 4 sub-tests: processes, threads, manager and misc. It allows running more tests in parallel and so reduce the total test duration. Patch by Victor Stinner. - gh-105776: Fix test_cppext when the C compiler command -std=c11 option: remove -std= options from the compiler command. Patch by Victor Stinner. - gh-107178: Add the C API test for functions in the Mapping Protocol, the Sequence Protocol and some functions in the Object Protocol. - Build - gh-63760: Fix Solaris build: no longer redefine the gethostname() function. Solaris defines the function since 2005. Patch by Victor Stinner, original patch by Jakub Kulík. - gh-107814: When calling find_python.bat with -q it did not properly silence the output of nuget. That is now fixed. - Windows - gh-107565: Update Windows build to use OpenSSL 3.0.10. - gh-106242: Fixes realpath() to behave consistently when passed a path containing an embedded null character on Windows. In strict mode, it now raises OSError instead of the unexpected ValueError, and in non-strict mode will make the path absolute. - gh-106844: Fix integer overflow and truncating by the null character in _winapi.LCMapStringEx() which affects ntpath.normcase(). - macOS - gh-107565: Update macOS installer to use OpenSSL 3.0.10. - Tools/Demos - gh-107565: Update multissltests and GitHub CI workflows to use OpenSSL 1.1.1v, 3.0.10, and 3.1.2. - gh-95065: Argument Clinic now supports overriding automatically generated signature by using directive @text_signature. - C API - gh-107916: C API functions PyErr_SetFromErrnoWithFilename(), PyErr_SetExcFromWindowsErrWithFilename() and PyErr_SetFromWindowsErrWithFilename() save now the error code before calling PyUnicode_DecodeFSDefault(). - gh-107915: Such C API functions as PyErr_SetString(), PyErr_Format(), PyErr_SetFromErrnoWithFilename() and many others no longer crash or ignore errors if it failed to format the error message or decode the filename. Instead, they keep a corresponding error. - gh-107810: Improve DeprecationWarning for uses of PyType_Spec with metaclasses that have custom tp_new.- restrict PEP668 to ALP/Tumbleweed- Refresh all patches - Drop Revert-gh105127-left-tests.patch, in upstream now - Update to 3.12.0rc1: - Reverted the :mod:`email.utils` security improvement change released in 3.12beta4 that unintentionally caused :mod:`email.utils.getaddresses` to fail to parse email addresses with a comma in the quoted name field. See :gh:`106669`. - Start initializing ob_digit during creation of :c:type:`PyLongObject` objects. Patch by Illia Volochii. - Increase C recursion limit for functions other than the main interpreter from 800 to 1500. This should allow functions like list.__repr__ and json.dumps to handle all the inputs that they could prior to 3.12 - Fix potential unaligned memory access on C APIs involving returned sequences of char * pointers within the :mod:`grp` and :mod:`socket` modules. These were revealed using a - fsaniziter=alignment build on ARM macOS. Patch by Christopher Chavez. - Add the exception as the third argument to PY_UNIND callbacks in sys.monitoring. This makes the PY_UNWIND callback consistent with the other exception hanlding callbacks. - Raise a ValueError when a monitoring callback funtion returns DISABLE for events that cannot be disabled locally. - Add a RERAISE event to sys.monitoring, which occurs when an exception is reraised, either explicitly by a plain raise statement, or implicitly in an except or finally block. - Unsupported modules now always fail to be imported. - Fix classmethod-style :func:`super` method calls (i.e., where the second argument to :func:`super`, or the implied second argument drawn from self/cls in the case of zero-arg super, is a type) when the target of the call is not a classmethod. - Python no longer crashes due an infrequent race when initialzing per-interpreter interned strings. The crash would manifest when the interpreter was finalized. - Python no longer crashes due to an infrequent race in setting Py_FileSystemDefaultEncoding and Py_FileSystemDefaultEncodeErrors (both deprecated), when simultaneously initializing two isolated subinterpreters. Now they are only set during runtime initialization. - Fix a segmentation fault caused by a use-after-free bug in frame_dealloc when the trashcan delays the deallocation of a PyFrameObject. - No longer suppress arbitrary errors in the __annotations__ getter and setter in the type and module types. - Propagate frozen_modules to multiprocessing spawned process interpreters. - Prevent out-of-bounds memory access during mmap.find() calls. - Seems that in some conditions, OpenSSL will return SSL_ERROR_SYSCALL instead of SSL_ERROR_SSL when a certification verification has failed, but the error parameters will still contain ERR_LIB_SSL and SSL_R_CERTIFICATE_VERIFY_FAILED. We are now detecting this situation and raising the appropiate ssl.SSLCertVerificationError. Patch by Pablo Galindo - Fix :func:`types.get_original_bases` to only return :attr:`!__orig_bases__` if it is present on cls directly. Patch by James Hilton-Balfe. - Prevent memory leak and use-after-free when using pointers to pointers with ctypes - Make :func:`gettext.pgettext` search plural definitions when translation is not found. - Document behavior of :func:`shutil.disk_usage` for non-mounted filesystems on Unix. - Do not report MultipartInvariantViolationDefect defect when the :class:`email.parser.Parser` class is used to parse emails with headersonly=True. - Fix invalid result from :meth:`PurePath.relative_to` method when attempting to walk a ".." segment in other with walk_up enabled. A :exc:`ValueError` exception is now raised in this case. - Fix potential missing NULL check of d2i_SSL_SESSION result in _ssl.c. - Update the bundled copy of pip to version 23.2.1. - Fixed several bugs in zipfile.Path, including: in Path.match`, Windows separators are no longer honored (and never were meant to be); Fixed ``name/suffix/suffixes/stem operations when no filename is present and the Path is not at the root of the zipfile; Reworked glob for performance and more correct matching behavior. - Add __copy__ and __deepcopy__ in :mod:`enum` - Revert a change to :func:`colorsys.rgb_to_hls` that caused division by zero for certain almost-white inputs. Patch by Terry Jan Reedy. - Instances of :class:`typing.TypeVar`, :class:`typing.ParamSpec`, :class:`typing.ParamSpecArgs`, :class:`typing.ParamSpecKwargs`, and :class:`typing.TypeVarTuple` once again support weak references, fixing a regression introduced in Python 3.12.0 beta 1. Patch by Jelle Zijlstra. - Detect possible memory allocation failure in the libtommath function :c:func:`mp_init` used by the _tkinter module. - Fix crash when calling repr with a manually constructed SignalDict object. Patch by Charlie Zhao. - Change the default return value of :meth:`http.client.HTTPConnection.get_proxy_response_headers` to be None and not {}. - Ensure gettext(msg) retrieve translations even if a plural form exists. In other words: gettext(msg) == ngettext(msg, '', 1). - Add documentation for :c:type:`PyInterpreterConfig` and :c:func:`Py_NewInterpreterFromConfig`. Also clarify some of the nearby docs relative to per-interpreter GIL. - Document the :mod:`curses` module variables :const:`~curses.LINES` and :const:`~curses.COLS`. - Add a number of standard external names to nitpick_ignore. - Add documentation on how to localize the :mod:`argparse` module. - test_logging: Fix test_udp_reconnection() by increasing the timeout from 100 ms to 5 minutes (LONG_TIMEOUT). Patch by Victor Stinner. - test_capi: Fix test_no_FatalError_infinite_loop() to no longer write a coredump, by using test.support.SuppressCrashReport. Patch by Victor Stinner. - Avoid creating a reference to the test object in :meth:`~unittest.TestResult.collectedDurations`. - Moved tests for zipfile.Path into Lib/test/test_zipfile/_path. Made zipfile._path a package. - Check for linux/limits.h before including it in Modules/posixmodule.c. - Detect MPI compilers in :file:`configure`. - Add experimental wasi-threads support. Patch by Takashi Yamamoto. - Update Windows build to use OpenSSL 3.0.9 - Update macOS installer to use OpenSSL 3.0.9. - Fix bugs in the Argument Clinic destination clear command; the destination buffers would never be cleared, and the destination directive parser would simply continue to the fault handler after processing the command. Patch by Erlend E. Aasland. - freeze now fetches CONFIG_ARGS from the original CPython instance the Makefile uses to call utility scripts. Patch by Ijtaba Hussain. - :c:func:`PyModule_AddObjectRef` is now only available in the limited API version 3.10 or later.- add externally_managed.in to label this build as PEP-668 managed- IT MEANS THAT bsc#1210638 STILL HAS NOT BEEN FIXED! - Add Revert-gh105127-left-tests.patch (gh#python/cpython!106941) partially reverting CVE-2023-27043-email-parsing-errors.patch, because of the regression in gh#python/cpython#106669.- Update to 3.12.0b4: - gh-issue-102988: CVE-2023-27043 (bsc#1210638): Prevent :func:`email.utils.parseaddr` and :func:`email.utils.getaddresses` from returning the realname portion of an invalid RFC2822 email header in the email address portion of the 2-tuple returned after being parsed by :class:`email._parseaddr.AddressList`. - gh-issue-106396: When the format specification of an f-string expression is empty, the parser now generates an empty :class:`ast.JoinedStr` node for it instead of an one-element :class:`ast.JoinedStr` with an empty string :class:`ast.Constant`. - gh-issue-106145: Make ``end_lineno`` and ``end_col_offset`` required on ``type_param`` ast nodes. - gh-issue-105979: Fix crash in :func:`!_imp.get_frozen_object` due to improper exception handling. - gh-issue-98931: Ensure custom :exc:`SyntaxError` error messages are raised for invalid imports with multiple targets. Patch by Pablo Galindo - gh-issue-105908: Fixed bug where :gh:`99111` breaks future import ``barry_as_FLUFL`` in the Python REPL. - gh-issue-105340: Include the comprehension iteration variable in ``locals()`` inside a module- or class-scope comprehension. - gh-issue-105486: Change the repr of ``ParamSpec`` list of args in ``types.GenericAlias``. - gh-issue-101006: Improve error handling when read :mod:`marshal` data. - gh-issue-106524: Fix crash in :func:`!_sre.template` with templates containing invalid group indices. - gh-issue-106510: Improve debug output for atomic groups in regular expressions. - gh-issue-106503: Fix ref cycle in :class:`!asyncio._SelectorSocketTransport` by removing ``_write_ready`` in ``close``. - gh-issue-105497: Fix flag mask inversion when unnamed flags exist. - gh-issue-90876: Prevent :mod:`multiprocessing.spawn` from failing to *import* in environments where ``sys.executable`` is ``None``. This regressed in 3.11 with the addition of support for path-like objects in multiprocessing. - gh-issue-106292: Check for an instance-dict cached value in the :meth:`__get__` method of :func:`functools.cached_property`. This better matches the pre-3.12 behavior and improves compatibility for users subclassing :func:`functools.cached_property` and adding a :meth:`__set__` method. - gh-issue-106330: Fix incorrect matching of empty paths in :meth:`pathlib.PurePath.match`. This bug was introduced in Python 3.12.0 beta 1. - gh-issue-102541: Make pydoc.doc catch bad module ImportError when output stream is not None. - gh-issue-106152: Added PY_THROW event hook for :mod:`cProfile` for generators - gh-issue-106075: Added `asyncio.taskgroups.__all__` to `asyncio.__all__` for export in star imports. - gh-issue-105987: Fix crash due to improper reference counting in :mod:`asyncio` eager task factory internal routines. - gh-issue-105974: Fix bug where a :class:`typing.Protocol` class that had one or more non-callable members would raise :exc:`TypeError` when :func:`issubclass` was called against it, even if it defined a custom ``__subclasshook__`` method. The behaviour in Python 3.11 and lower -- which has now been restored -- was not to raise :exc:`TypeError` in these situations if a custom ``__subclasshook__`` method was defined. Patch by Alex Waygood. - gh-issue-96145: Reverted addition of ``json.AttrDict``. - gh-issue-105497: Fix flag inversion when alias/mask members exist. - gh-issue-104554: Add RTSPS scheme support in urllib.parse - gh-issue-94777: Fix hanging :mod:`multiprocessing` ``ProcessPoolExecutor`` when a child process crashes while data is being written in the call queue. - gh-issue-106232: Make timeit doc command lines compatible with Windows by using double quotes for arguments. This works on linux and macOS also. - gh-issue-101634: When running the Python test suite with ``-jN`` option, if a worker stdout cannot be decoded from the locale encoding report a failed testn so the exitcode is non-zero. Patch by Victor Stinner. - gh-issue-106118: Fix compilation for platforms without :data:`!O_CLOEXEC`. The issue was introduced with Python 3.12b1 in :gh:`103295`. Patch by Erlend Aasland. - gh-issue-104692: Include ``commoninstall`` as a prerequisite for ``bininstall`` This ensures that ``commoninstall`` is completed before ``bininstall`` is started when parallel builds are used (``make - j install``), and so the ``python3`` symlink is only installed after all standard library modules are installed. - gh-issue-106359: Argument Clinic now explicitly forbids "kwarg splats" in function calls used as annotations. - gh-issue-105227: The new :c:func:`PyType_GetDict` provides the dictionary for the given type object that is normally exposed by ``cls.__dict__``. Normally it's sufficient to use :c:member:`~PyTypeObject.tp_dict`, but for the static builtin types :c:member:`!tp_dict` is now always ``NULL``. :c:func:`!PyType_GetDict()` provides the correct dict object instead.- Update to 3.12.0b3: - gh-103142: The version of OpenSSL used in Windows and Mac installers has been upgraded to 1.1.1u to address CVE-2023-2650, CVE-2023-0465, CVE-2023-0466, CVE-2023-0464, as well as CVE-2023-0286, CVE-2022-4303, and CVE-2022-4303 fixed previously in 1.1.1t (gh-101727). - gh-102153: urllib.parse.urlsplit() now strips leading C0 control and space characters following the specification for URLs defined by WHATWG in response to CVE-2023-24329. - gh-99889: Fixed a security in flaw in uu.decode() that could allow for directory traversal based on the input if no out_file was specified. - gh-104049: Do not expose the local on-disk location in directory indexes produced by http.client.SimpleHTTPRequestHandler. - gh-103935: trace.__main__ now uses io.open_code() for files to be executed instead of raw open(). - gh-102953: The extraction methods in tarfile, and shutil.unpack_archive(), have a new filter argument that allows limiting tar features than may be surprising or dangerous, such as creating files outside the destination directory. See Extraction filters for details. - Remove upstreamed patches: - 00398-fix-stack-overwrite-on-32-bit-in-perf-map-test-harness-gh-104811-104823.patch- Add 00398-fix-stack-overwrite-on-32-bit-in-perf-map-test-harness-gh-104811-104823.patch gh#python/cpython#104811- Refresh all patches - Update to 3.12.0b1: Full changelog can be found here https://docs.python.org/dev/whatsnew/changelog.html#python-3-12-0-beta-1- Why in the world we download from HTTP?- Ignore failing test test_freeze_simple_script, it fails because it cannot import _sysconfigdata__linux_x86_64-linux-gnu that's not present in the test environment, it fails without bundled libs. - Remove non existing paths: * %{sitedir}/tkinter/test * %{sitedir}/sqlite3/test * %{dynlib _curses_panel}- Update to 3.12.0a7: Full changelog can be found here https://docs.python.org/dev/whatsnew/changelog.html#python-3-12-0-alpha-7- Switch off obsoleting previous interpreters.- Update to 3.12.0a6: - Many new features for Python 3.12 are still being planned and written. Among the new major new features and changes so far: - Even more improved error messages. More exceptions potentially caused by typos now make suggestions to the user. - Support for the Linux perf profiler to report Python function names in traces. - The deprecated wstr and wstr_length members of the C implementation of unicode objects were removed, per PEP 623. - In the unittest module, a number of long deprecated methods and classes were removed. (They had been deprecated since Python 3.1 or 3.2). - The deprecated smtpd and distutils modules have been removed (see PEP 594 and PEP 632. The setuptools package (installed by default in virtualenvs and many other places) continues to provide the distutils module. - A number of other old, broken and deprecated functions, classes and methods have been removed. - Invalid backslash escape sequences in strings now warn with SyntaxWarning instead of DeprecationWarning, making them more visible. (They will become syntax errors in the future.) - The internal representation of integers has changed in preparation for performance enhancements. (This should not affect most users as it is an internal detail, but it may cause problems for Cython-generated code.) - Add the refreshed version of F00251-change-user-install-location.patch (updated from Fedora), which works together with the installation schemes in sysconfig. - Remove distutils-reproducible-compile.patch, which is not applicable anymore (because distutils was removed from the standard library). - Remove upstreamed support-expat-CVE-2022-25236-patched.patch- Update to 3.11.2: Bug fixes, no changes in API and no security bugs.- Add python310 Obsoletes line to obsolete_python_versioned macro.- Add provides for readline and sqlite3 to the main Python package.- Disable NIS for new products, it's deprecated and gets removed- build GLIBC hwcaps optimized versions of the interpreter- Don't fail on Sphinx build warnings. - For jsc#PED-1570, providing Python 3.11 for SLE-15-SP5.- Update to 3.11.1: - python -m http.server no longer allows terminal control characters sent within a garbage request to be printed to the stderr server lo This is done by changing the http.server BaseHTTPRequestHandler .log_message method to replace control characters with a \xHH hex escape before printin - Avoid publishing list of active per-interpreter audit hooks via the gc module - The IDNA codec decoder used on DNS hostnames by socket or asyncio related name resolution functions no longer involves a quadratic algorithm. This prevents a potential CPU denial of service if an out-of-spec excessive length hostname involving bidirectional characters were decoded. Some protocols such as urllib http 3xx redirects potentially allow for an attacker to supply such a name (CVE-2022-45061). - Update bundled libexpat to 2.5.0 - Fix a shell code injection vulnerability in the get-remote-certificate.py example script. The script no longer uses a shell to run openssl commands. Issue reported and initial fix by Caleb Shortt. Patch by Victor Stinner. - Fix a crash when an object which does not have a dictionary frees its instance values. - Fix a bug in the tokenizer that could cause infinite recursion when showing syntax warnings that happen in the first line of the source. Patch by Pablo Galindo - Fix an issue that could cause frames to be visible to Python code as they are being torn down, possibly leading to memory corruption or hard crashes of the interpreter. - Fix a reference bug in _imp.create_builtin() after the creation of the first sub-interpreter for modules builtins and sys. Patch by Victor Stinner. - Fixed a bug that was causing a buffer overflow if the tokenizer copies a line missing the newline caracter from a file that is as long as the available tokenizer buffer. Patch by Pablo galindo - Fix bug where an ExceptionGroup subclass can wrap a BaseException. - Fix zip path for venv created from a non-installed python on POSIX platforms. - Fix an issue that could potentially cause incorrect error handling for some bytecode instructions. - Fix an issue that prevented PyThreadState and PyInterpreterState memory from being freed properly. - Fix failure in except* with unhashable exceptions. - Fix calculation of sys._base_executable when inside a POSIX virtual environment using copies of the python binary when the base installation does not provide the executable name used by the venv. Calculation will fall back to alternative names (“python”, “python.”). - Update faulthandler to emit an error message with the proper unexpected signal number. Patch by Dong-hee Na. - Fix location of SyntaxError for a try block with both except and except*. - Fix the error reporting positions of specialized traceback anchors when the source line contains Unicode characters. - Fix subscription of type aliases containing bare generic types or types like TypeVar: for example tuple[A, T][int] and tuple[TypeVar, T][int], where A is a generic type, and T is a type variable. - Lower the recursion depth for marshal on WASI to support wasmtime 2.0/main. - Fix multiple crashes in debug mode when str subclasses are used instead of str itself. - Fix an issue where member descriptors (such as those for __slots__) could behave incorrectly or crash instead of raising a TypeError when accessed via an instance of an invalid type. - Suppress ImportError for invalid query for help() command. Patch by Dong-hee Na. - Fix detection of MAC addresses for uuid on certain OSs. Patch by Chaim Sanders - Print exception class name instead of its string representation when raising errors from ctypes calls. - os.sched_yield() now release the GIL while calling sched_yield(2). Patch by Dong-hee Na. - Fix an issue that could delay the specialization of PRECALL instructions. - Bugfix: PyFunction_GetAnnotations() should return a borrowed reference. It was returning a new reference. - Ensure that all Python frame objects are backed by “complete” frames. - Fixed a missing incref/decref pair in Exception.__setstate__(). Patch by Ofey Chan. - Fix the Python path configuration used to initialized sys.path at Python startup. Paths are no longer encoded to UTF-8/strict to avoid encoding errors if it contains surrogate characters (bytes paths are decoded with the surrogateescape error handler). Patch by Victor Stinner. - Fix overly-broad source position information for chained comparisons used as branching conditions. - At Python exit, sometimes a thread holding the GIL can wait forever for a thread (usually a daemon thread) which requested to drop the GIL, whereas the thread already exited. To fix the race condition, the thread which requested the GIL drop now resets its request before exiting. Issue discovered and analyzed by Mingliang ZHAO. Patch by Victor Stinner. - Fix a possible assertion failure, fatal error, or SystemError if a line tracing event raises an exception while opcode tracing is enabled. - Fix undefined behaviour in C code of null pointer arithmetic. - Make sure that all frame objects created are created from valid interpreter frames. Prevents the possibility of invalid frames in backtraces and signal handlers. - Disable incorrect pickling of the C implemented classmethod descriptors. - On WASI ENOTCAPABLE is now mapped to PermissionError. The errno modules exposes the new error number. getpath.py now ignores PermissionError when it cannot open landmark files pybuilddir.txt and pyenv.cfg. - Allow pdb to locate source for frozen modules in the standard library. - Raise ValueError instead of SystemError when methods of uninitialized io.IncrementalNewlineDecoder objects are called. Patch by Oren Milman. - Fix a possible assertion failure in io.FileIO when the opener returns an invalid file descriptor. - Also escape s in the http.server BaseHTTPRequestHandler.log_message so that it is technically possible to parse the line and reconstruct what the original data was. Without this a xHH is ambiguious as to if it is a hex replacement we put in or the characters r”x” came through in the original request line. - asyncio.get_event_loop() now only emits a deprecation warning when a new event loop was created implicitly. It no longer emits a deprecation warning if the current event loop was set. - Fix bug when calling trace.CoverageResults with valid infile. - Fix a bug in handling class cleanups in unittest.TestCase. Now addClassCleanup() uses separate lists for different TestCase subclasses, and doClassCleanups() only cleans up the particular class. - Release the GIL when calling termios APIs to avoid blocking threads. - Fix ast.increment_lineno() to also cover ast.TypeIgnore when changing line numbers. - Fix bug in urllib.parse.urlparse() that causes URL schemes that begin with a digit, a plus sign, or a minus sign to be parsed incorrectly. - Check the number of arguments in substitution in user generics containing a TypeVarTuple and one or more TypeVar. - Fix substitution of ParamSpec followed by TypeVarTuple in generic aliases. - Fix substitution of TypeVarTuple and ParamSpec together in user generics. - Fixed bug where inspect.signature() reported incorrect arguments for decorated methods. - Fix SystemError in ctypes when exception was not set during __initsubclass__. - Remove older version of _SSLProtocolTransport.get_write_buffer_limits in asyncio.sslproto - fix negative numbers failing in verify() - Fix statistics.NormalDist pickle with 0 and 1 protocols. - enum.auto() is now correctly activated when combined with other assignment values. E.g. ONE = auto(), 'some text' will now evaluate as (1, 'some text'). - Update the bundled copy of pip to version 22.3.1. - Clean up refleak on failed module initialisation in _zoneinfo - Clean up refleaks on failed module initialisation in in _pickle - Clean up refleak on failed module initialisation in _io. - Fix memory leak in math.dist() when both points don’t have the same dimension. Patch by Kumar Aditya. - [3.11] Applied changes from importlib_metadata 4.11.4 through 4.13, including compatibility and robustness fixes for Distribution objects without _normalized_name, disallowing invalid inputs to Distribution.from_name, and refined behaviors in PathDistribution._name_from_stem and PathDistribution._normalized_name. - Fix argument typechecks in _overlapped.WSAConnect() and _overlapped.Overlapped.WSASendTo() functions. - Prevent crashing in traceback when retrieving the byte-offset for some source files that contain certain unicode characters. - Fix internal error in the re module which in very rare circumstances prevented compilation of a regular expression containing a conditional expression without the “else” branch. - Fix asyncio.StreamWriter.drain() to call protocol.connection_lost callback only once on Windows. - Add a mutex to unittest.mock.NonCallableMock to protect concurrent access to mock attributes. - Fix hang on Windows in subprocess.wait_closed() in asyncio with ProactorEventLoop. Patch by Kumar Aditya. - Fix infinite loop in unittest when a self-referencing chained exception is raised - tkinter.Text.count() raises now an exception for options starting with “-” instead of silently ignoring them. - On uname_result, restored expectation that _fields and _asdict would include all six properties including processor. - A createSocket() method was added to SysLogHandler. - Fix bug in urllib.parse.urlparse() that causes certain port numbers containing whitespace, underscores, plus and minus signs, or non-ASCII digits to be incorrectly accepted. - Allow venv to pass along PYTHON* variables to ensurepip and pip when they do not impact path resolution - On macOS, fix a crash in syslog.syslog() in multi-threaded applications. On macOS, the libc syslog() function is not thread-safe, so syslog.syslog() no longer releases the GIL to call it. Patch by Victor Stinner. - Allow BUILTINS to be a valid field name for frozen dataclasses. - Wrap network errors consistently in urllib FTP support, so the test suite doesn’t fail when a network is available but the public internet is not reachable. - Make sure patch.dict() can be applied on async functions. - Earlier in 3.11 we deprecated asyncio.Task.cancel("message"). We realized we were too harsh, and have undeprecated it. - Change deprecate warning message in unittest from It is deprecated to return a value!=None to It is deprecated to return a value that is not None from a test case - Fixes AttributeError when subprocess.check_output() is used with argument input=None and either of the arguments encoding or errors are used. - Fix is_private properties in the ipaddress module. Previously non-private networks (0.0.0.0/0) would return True from this method; now they correctly return False. - Avoid spurious tracebacks from asyncio when default executor cleanup is delayed until after the event loop is closed (e.g. as the result of a keyboard interrupt). - Avoid a crash in the C version of asyncio.Future.remove_done_callback() when an evil argument is passed. - Remove tokenize.NL check from tabnanny. - Fix generation of the default name of tkinter.Checkbutton. Previously, checkbuttons in different parent widgets could have the same short name and share the same state if arguments “name” and “variable” are not specified. Now they are globally unique. - Update bundled libexpat to 2.4.9 - Fix race condition in asyncio where process_exited() called before the pipe_data_received() leading to inconsistent output. Patch by Kumar Aditya. - Fixed check in multiprocessing.resource_tracker that guarantees that the length of a write to a pipe is not greater than PIPE_BUF. - Corrected type annotation for dataclass attribute pstats.FunctionProfile.ncalls to be str. - Fix repr of Any subclasses. - Work around missing socket functions in socket’s __repr__. - In inspect, fix overeager replacement of “typing.” in formatting annotations. - Fix handling of bytes path-like objects in os.ismount(). - Fix handling compiler warnings (SyntaxWarning and DeprecationWarning) in codeop.compile_command() when checking for incomplete input. Previously it emitted warnings and raised a SyntaxError. Now it always returns None for incomplete input without emitting any warnings. - To avoid apparent memory leaks when asyncio.open_connection() raises, break reference cycles generated by local exception and future instances (which has exception instance as its member var). Patch by Dong Uk, Kang. - Fixed flickering of the turtle window when the tracer is turned off. Patch by Shin-myoung-serp. - Fix asyncio subprocess transport to kill process cleanly when process is blocked and avoid RuntimeError when loop is closed. Patch by Kumar Aditya. - Prevent error when activating venv in nested fish instances. - TarFile.next() now returns None when called on an empty tarfile. - Document the optional callback parameter of WeakMethod. Patch by Géry Ogam. - Restrict use of sockets instead of pipes for stdin of subprocesses created by asyncio to AIX platform only. - shutil.copytree() now applies the ignore_dangling_symlinks argument recursively. - Fix IndexError in argparse.ArgumentParser when a store_true action is given an explicit argument. - Document that calling variadic functions with ctypes requires special care on macOS/arm64 (and possibly other platforms). - Remove extra row - Clarified the conflicting advice given in the ast documentation about ast.literal_eval() being “safe” for use on untrusted input while at the same time warning that it can crash the process. The latter statement is true and is deemed unfixable without a large amount of work unsuitable for a bugfix. So we keep the warning and no longer claim that literal_eval is safe. - Restructured the documentation for the os.wait* family of functions, and improved the docs for os.waitid() with more explanation of the possible argument constants. - Skip test_normalization() of test_unicodedata if it fails to download NormalizationTest.txt file from pythontest.net. Patch by Victor Stinner. - Correct test_marsh on (32 bit) x86: test_deterministic sets was failing. - Optional big memory tests in test_sqlite3 now catch the correct sqlite.DataError exception type in case of too large strings and/or blobs passed. - Fix a bug in the typing tests where a test relying on CPython-specific implementation details was not decorated with @cpython_only and was not skipped on other implementations. - Add tests for star-unpacking with PEP 646, and some other miscellaneous PEP 646 tests. - Added explicit coverage of Py_Initialize (and hence Py_InitializeEx) back to the embedding tests (all other embedding tests migrated to Py_InitializeFromConfig in Python 3.11) - Some C API tests were moved into the new Lib/test/test_capi/ directory. - Fix -Wimplicit-int, -Wstrict-prototypes, and - Wimplicit-function-declaration compiler warnings in configure checks. - Fix a compilation issue with GCC 12 on macOS. - Fix -Wimplicit-int compiler warning in configure check for PTHREAD_SCOPE_SYSTEM. - Fix a possible fd leak in Programs/_freeze_module.c introduced in Python 3.11. - Fix build with PYTHON_FOR_REGEN=python3.8. - Specify the full path to the source location for make docclean (needed for cross-builds). - Don’t use vendored libmpdec headers if --with-system-libmpdec is passed to configure. Don’t use vendored libexpat headers if --with-system-expat is passed to !configure. - Fix the build process of clang compiler for _bootstrap_python if LTO optimization is applied. Patch by Matthias Görgens and Dong-hee Na. - wasm32-emscripten builds for browsers now include concurrent.futures for asyncio and unittest.mock. - wasm32-emscripten platform no longer builds resource module, getresuid(), getresgid(), and their setters. The APIs are stubs and not functional. - Updated pegen regeneration script on Windows to find and use Python 3.9 or higher. Prior to this, pegen regeneration already required 3.9 or higher, but the script may have used lower versions of Python. - Fix a bug in the previous bugfix that caused IDLE to not start when run with 3.10.8, 3.12.0a1, and at least Microsoft Python 3.10.2288.0 installed without the Lib/test package. 3.11.0 was never affected. - The wasm_build.py script now pre-builds Emscripten ports, checks for broken EMSDK versions, and warns about pkg-config env vars. - The new tool Tools/wasm/wasm_builder.py automates configure, compile, and test steps for building CPython on WebAssembly platforms. - Fix handling of module docstrings in Tools/i18n/pygettext.py. - PyBUF_* constants were marked as part of Limited API of Python 3.11+. These were available in 3.11.0 with Py_LIMITED_API defined for 3.11, and are necessary to use the buffer API. - Fix use-after-free in Py_SetPythonHome(NULL), Py_SetProgramName(NULL) and _Py_SetProgramFullPath(NULL) function calls. Issue reported by Benedikt Reinartz. Patch by Victor Stinner. - Py_InitializeEx now correctly calls PyConfig_Clear after initializing the interpreter (the omission didn’t cause a memory leak only because none of the dynamically allocated config fields are populated by the wrapper function) - Removed upstreamed patches: - 98437-sphinx.locale._-as-gettext-in-pyspecific.patch - CVE-2022-45061-DoS-by-IDNA-decode.patch- Add CVE-2022-45061-DoS-by-IDNA-decode.patch to avoid CVE-2022-45061 (bsc#1205244) allowing DoS by IDNA decoding extremely long domain names.- Update to 3.11.0 (overall changes from 3.10.*): - General changes - PEP 657 -- Include Fine-Grained Error Locations in Tracebacks - PEP 654 -- Exception Groups and except* - PEP 680 -- tomllib: Support for Parsing TOML in the Standard Library - gh-90908 -- Introduce task groups to asyncio - gh-34627 -- Atomic grouping ((?>...)) and possessive quantifiers (*+, ++, ?+, {m,n}+) are now supported in regular expressions. - The Faster CPython Project is already yielding some exciting results. Python 3.11 is up to 10-60% faster than Python 3.10. On average, we measured a 1.22x speedup on the standard benchmark suite. See Faster CPython for details. - Typing and typing language changes - PEP 673 -- Self Type - PEP 646 -- Variadic Generics - PEP 675 -- Arbitrary Literal String Type - PEP 655 -- Marking individual TypedDict items as required or potentially-missing - PEP 681 -- Data Class Transforms - (just changes from 3.11.0rc2): - Fix multiplying a list by an integer (list *= int): detect the integer overflow when the new allocated length is close to the maximum size. Issue reported by Jordan Limor. Patch by Victor Stinner. - On Linux the multiprocessing module returns to using filesystem backed unix domain sockets for communication with the forkserver process instead of the Linux abstract socket namespace. Only code that chooses to use the “forkserver” start method is affected. Abstract sockets have no permissions and could allow any user on the system in the same network namespace (often the whole system) to inject code into the multiprocessing forkserver process. This was a potential privilege escalation. Filesystem based socket permissions restrict this to the forkserver process user as was the default in Python 3.8 and earlier. This prevents Linux CVE-2022-42919. - Fix an issue where several frame objects could be backed by the same interpreter frame, possibly leading to corrupted memory and hard crashes of the interpreter. - Fix possible data corruption or crashes when accessing the f_back member of newly-created generator or coroutine frames. - Fix a crash occurring when PyEval_GetFrame() is called while the topmost Python frame is in a partially-initialized state. - Fix command line parsing: reject -X int_max_str_digits option with no value (invalid) when the PYTHONINTMAXSTRDIGITS environment variable is set to a valid limit. Patch by Victor Stinner. - Fix undefined behaviour in _testcapimodule.c. - When ValueError is raised if an integer is larger than the limit, mention the sys.set_int_max_str_digits() function in the error message. Patch by Victor Stinner. - Correctly raise SyntaxError on exception groups (PEP 654) on python versions prior to 3.11 - Document some places where an assignment expression needs parentheses. - Update the bundled copies of pip and setuptools to versions 22.3 and 65.5.0 respectively. - fix Flag to use boundary CONFORM - This restores previous Flag behavior of allowing flags with non-sequential values to be combined; e.g. - class Skip(Flag): TWO = 2 EIGHT = 8 - Skip.TWO | Skip.EIGHT -> - Fix ! in c domain ref target syntax via a conf.py patch, so it works as intended to disable ref target resolution. - Update tutorial introduction output to use 3.10+ SyntaxError invalid range.- Add 98437-sphinx.locale._-as-gettext-in-pyspecific.patch to allow building of documentation with the latest Sphinx 5.3.0 (gh#python/cpython#98366).- Update to 3.11.0rc2: - Converting between int and str in bases other than 2 (binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base 10 (decimal) now raises a ValueError if the number of digits in string form is above a limit to avoid potential denial of service attacks due to the algorithmic complexity. This is a mitigation for CVE-2020-10735. This new limit can be configured or disabled by environment variable, command line flag, or sys APIs. See the integer string conversion length limitation documentation. The default limit is 4300 digits in string form. - Fix case of undefined behavior in ceval.c - Do not expose KeyWrapper in _functools. - Ensure that tracing, sys.setrace(), is turned on immediately. In pre-release versions of 3.11, some tracing events might have been lost when turning on tracing in a __del__ method or interrupt. - Fix use after free in trace refs build mode. Patch by Kumar Aditya. - When loading a file with invalid UTF-8 inside a multi-line string, a correct SyntaxError is emitted. - Make sure that incomplete frames do not show up in tracemalloc traces. - Remove two cases of undefined behavior, by adding NULL checks. - Fix possible NULL pointer dereference in _PyThread_CurrentFrames. Patch by Kumar Aditya. - Fix AttributeError missing name and obj attributes in object.__getattribute__(). Patch by Philip Georgi. - Loading a file with invalid UTF-8 will now report the broken character at the correct location. - Fixed a bug that caused _PyCode_GetExtra to return garbage for negative indexes. Patch by Pablo Galindo - Fix a deadlock in PyGILState_Ensure() when allocating new thread state. Patch by Kumar Aditya. - PyType_Ready() now initializes ht_cached_keys and performs additional checks to ensure that type objects are properly configured. This avoids crashes in 3rd party packages that don’t use regular API to create new types. - Skip over incomplete frames in PyThreadState_GetFrame(). - Fix format string in _PyPegen_raise_error_known_location that can lead to memory corruption on some 64bit systems. The function was building a tuple with i (int) instead of n (Py_ssize_t) for Py_ssize_t arguments. - Fix misleading contents of error message when converting an all-whitespace string to float. - ast.parse() will no longer parse function definitions with positional-only params when passed feature_version less than (3, 8). Patch by Shantanu Jain. - Fix incorrect error message in the io module. - Fix the faulthandler implementation of faulthandler.register(signal, chain=True) if the sigaction() function is not available: don’t call the previous signal handler if it’s NULL. Patch by Victor Stinner. - Correct conversion of numbers.Rational’s to float. - Fix TypeVarTuple.__typing_prepare_subst__. TypeError was not raised when using more than one TypeVarTuple, like [*T, *V] in type alias substitutions. - Fix asyncio.streams.StreamReaderProtocol to keep a strong reference to the created task, so that it’s not garbage collected - Fix a performance regression in logging TimedRotatingFileHandler. Only check for special files when the rollover time has passed. - Fix unused localName parameter in the Attr class in xml.dom.minidom. - Fix incorrect condition that causes sys.thread_info.name to be wrong on pthread platforms. - Remove an incompatible change from bpo-28080 that caused a regression that ignored the utf8 in ZipInfo.flag_bits. Patch by Pablo Galindo. - Fix asyncio.Runner to call asyncio.set_event_loop() only once to avoid calling attach_loop() multiple times on child watchers. Patch by Kumar Aditya. - Fix unittest.IsolatedAsyncioTestCase to set event loop before calling setup functions. Patch by Kumar Aditya. - When a task catches asyncio.CancelledError and raises some other error, the other error should generally not silently be suppressed. - Fail gracefully if EPERM or ENOSYS is raised when loading crypt methods. This may happen when trying to load MD5 on a Linux kernel with FIPS enabled. - Allow asyncio.StreamWriter.drain() to be awaited concurrently by multiple tasks. Patch by Kumar Aditya. - Fix ast.unparse() when ImportFrom.level is None - Improve discoverability of the higher level concurrent.futures module by providing clearer links from the lower level threading and multiprocessing modules. - What’s New 3.11 now has instructions for how to provide compiler and linker flags for Tcl/Tk and OpenSSL on RHEL 7 and CentOS 7. - Mitigate the inherent race condition from using find_unused_port() in testSockName() by trying to find an unused port a few times before failing. Patch by Ross Burton. - Build and test with OpenSSL 1.1.1q - Use support-expat-CVE-2022-25236-patched.patch from the current version of gh#python/cpython#93900 instead of the old support-expat-245.patch. - Reapply fix_configure_rst.patch.- Increase testsuite timeout for test_freeze_simple_script- fix import_failed.map to refer to the python 3.11 package versions- Update to 3.11.0rc1: - Core and Builtins - Update code object hashing and equality to consider all debugging and exception handling tables. This fixes an issue where certain non-identical code objects could be “deduplicated” during compilation. - _PyPegen_Parser_New now properly detects token memory allocation errors. Patch by Honglin Zhu. - Run Python code in tracer/profiler function at full speed. Fixes slowdown in earlier versions of 3.11. - Emit a warning in debug mode if an object does not call PyObject_GC_UnTrack() before deallocation. Patch by Pablo Galindo. - Prevented crashes in the AST constructor when compiling some absurdly long expressions like "+0"*1000000. RecursionError is now raised instead. Patch by Pablo Galindo - ast.AST node positions are now validated when provided to compile() and other related functions. If invalid positions are detected, a ValueError will be raised. - Fix error detection in some builtin functions when keyword argument name is an instance of a str subclass with overloaded __eq__ and __hash__. Previously it could cause SystemError or other undesired behavior. - Library - Update bundled pip to 22.2.2. - Fix asyncio.TaskGroup to propagate exception when asyncio.CancelledError was replaced with another exception by a context manger. Patch by Kumar Aditya and Guido van Rossum. - Update bundled pip to 22.2.1. - Fix GC crash when deallocating _lsprof.Profiler by untracking it before calling any callbacks. Patch by Kumar Aditya. - Fix asyncio.run() for asyncio.Task implementations without uncancel() method. Patch by Kumar Aditya. - Fix check for existence of os.EFD_CLOEXEC, os.EFD_NONBLOCK and os.EFD_SEMAPHORE flags on older kernel versions where these flags are not present. Patch by Kumar Aditya. - Fix concurrent.futures.Executor.map() to cancel the currently waiting on future on an error - e.g. TimeoutError or KeyboardInterrupt. - Ensure that timeouts scheduled with asyncio.Timeout that have already expired are delivered promptly. - Suppress writing an XML declaration in open files in ElementTree.write() with encoding='unicode' and xml_declaration=None. - Fix findtext in the xml module to only give an empty string when the text attribute is set to None. - Documentation - Fix stylesheet not working in Windows CHM htmlhelp docs and add warning that they are deprecated. Contributed by C.A.M. Gerlach. - Update library documentation with availability information on WebAssembly platforms wasm32-emscripten and wasm32-wasi. - Use consistent syntax for platform availability. The directive now supports a content body and emits a warning when it encounters an unknown platform. - Document a limitation in ThreadPoolExecutor where its exit handler is executed before any handlers in atexit. - Tests - Lib/test/test_asyncio/test_ssl.py exposed a bug in the macOS kernel where intense concurrent load on non-blocking sockets occasionally causes errno.ENOBUFS (“No buffer space available”) to be emitted. FB11063974 filed with Apple, in the mean time as a workaround buffer size used in tests on macOS is decreased to avoid intermittent failures. Patch by Fantix King. - Fix problem with test_ssl test_get_ciphers on systems that require perfect forward secrecy (PFS) ciphers. - Add a regression test for re exponentional slowdown when using rjsmin. - Build - Fix a regression in configure script that caused some header checks to ignore custom CPPFLAGS. The regression was introduced in gh-94802. - wasm32-wasi builds no longer depend on WASIX’s pthread stubs. Python now has its own stubbed pthread API. - Python now detects missing dup function in WASI and works around some missing errno, select, and socket constants. - Python now skips missing socket functions and methods on WASI. WASI can only create sockets from existing fd / accept and has no netdb. - Platforms wasm32-unknown-emscripten and wasm32-unknown-wasi have been promoted to PEP 11 tier 3 platform support. - IDLE - Document handling of extensions in Save As dialogs. - Include prompts when saving Shell (interactive input and output). - Fix the Shell context menu copy-with-prompts bug of copying an extra line when one selects whole lines. - In the Edit menu, move Select All and add a new separator. - Enable using IDLE’s module browser with .pyw files. - Add .pyi as a recognized extension for IDLE on macOS. This allows opening stub files by double clicking on them in the Finder. - C API - Restore the 3.10 behavior for multiple inheritance of C extension classes that store their dictionary at the end of the struct. - Added PyCode_GetVarnames(), PyCode_GetCellvars() and PyCode_GetFreevars() for accessing co_varnames, co_cellvars and co_freevars respectively via the C API.- Update to 3.11.0b5: - Core and Builtins - gh-93351: ast.AST node positions are now validated when provided to compile() and other related functions. If invalid positions are detected, a ValueError will be raised. - gh-94438: Fix an issue that caused extended opcode arguments and some conditional pops to be ignored when calculating valid jump targets for assignments to the f_lineno attribute of frame objects. In some cases, this could cause inconsistent internal state, resulting in a hard crash of the interpreter. - gh-95060: Undocumented PyCode_Addr2Location function now properly returns when addrq argument is less than zero. - gh-95113: Replace all EXTENDED_ARG_QUICK instructions with basic EXTENDED_ARG instructions in unquickened code. Consumers of non-adaptive bytecode should be able to handle extended arguments the same way they were handled in CPython 3.10 and older. - gh-91409: Fix incorrect source location info caused by certain optimizations in the bytecode compiler. - gh-94036: Fix incorrect source location info for some multi-line attribute accesses and method calls. - gh-94739: Allow jumping within, out of, and across exception handlers in the debugger. - gh-94949: ast.parse() will no longer parse parenthesized context managers when passed feature_version less than (3, 9). Patch by Shantanu Jain. - gh-94947: ast.parse() will no longer parse assignment expressions when passed feature_version less than (3, 8). Patch by Shantanu Jain. - gh-91256: Ensures the program name is known for help text during interpreter startup. - gh-94869: Fix the column offsets for some expressions in multi-line f-strings ast nodes. Patch by Pablo Galindo. - gh-94822: Fix an issue where lookups of metaclass descriptors may be ignored when an identically-named attribute also exists on the class itself. - gh-91153: Fix an issue where a bytearray item assignment could crash if it’s resized by the new value’s __index__() method. - gh-90699: Fix reference counting bug in bool.__repr__(). Patch by Kumar Aditya. - Library - gh-95087: Fix IndexError in parsing invalid date in the email module. - gh-95199: Upgrade bundled setuptools to 63.2.0. - gh-95194: Upgrade bundled pip to 22.2. - gh-95132: Fix a sqlite3 regression where *args and **kwds were incorrectly relayed from connect() to the Connection factory. The regression was introduced in 3.11a1 with PR 24421 (gh-85128). Patch by Erlend E. Aasland.` - gh-93157: Fix fileinput module didn’t support errors option when inplace is true. - gh-95105: wsgiref.types.InputStream.__iter__() should return Iterator[bytes], not Iterable[bytes]. Patch by Shantanu Jain. - gh-94857: Fix refleak in _io.TextIOWrapper.reconfigure. Patch by Kumar Aditya. - gh-94821: Fix binding of unix socket to empty address on Linux to use an available address from the abstract namespace, instead of “0”. - gh-89988: Fix memory leak in pickle.Pickler when looking up dispatch_table. Patch by Kumar Aditya. - bpo-47025: Drop support for bytes on sys.path. - Tests - gh-95212: Make multiprocessing test case test_shared_memory_recreate parallel-safe. - Build - gh-94847: Fixed _decimal module build issue on GCC when compiling with LTO and pydebug. Debug builds no longer force inlining of functions. - gh-94841: Fix the possible performance regression of PyObject_Free() compiled with MSVC version 1932. - gh-94801: configure now uses custom flags like ZLIB_CFLAGS and ZLIB_LIBS when searching for headers and libraries. - gh-94773: deepfreeze.py now supports code object with frozensets that contain incompatible, unsortable types. - C API - gh-94930: Fix SystemError raised when PyArg_ParseTupleAndKeywords() is used with # in (...) but without PY_SSIZE_T_CLEAN defined. - gh-94864: Fix PyArg_Parse* with deprecated format units “u” and “Z”. It returned 1 (success) when warnings are turned into exceptions. - gh-94731: Python again uses C-style casts for most casting operations when compiled with C++. This may trigger compiler warnings, if they are enabled with e.g. -Wold-style-cast `` or ``-Wzero-as-null-pointer-constant options for g++.- Switch from %primary_interpreter to prjconf-defined %primary_python (gh#openSUSE/python-rpm-macros#127).- Update to 3.11.0b4: - Fixes many bugs and adds following more significant changes - Security - gh-68966: The deprecated mailcap module now refuses to inject Coreunsafe text (filenames, MIME types, parameters) into shell Corecommands. Instead of using such text, it will warn and act Coreas if a match was not found (or for test commands, as if the Coretest failed). and Builtins - gh-93516: Lazily create a table mapping bytecode offsets to line numbers to speed up calculation of line numbers when tracing. - gh-93461: importlib.invalidate_caches() now drops entries from sys.path_importer_cache with a relative path as name. This solves a caching issue when a process changes its current working directory. - FileFinder no longer inserts a dot in the path, e.g. /egg/./spam is now /egg/spam. Library - gh-93896: Fix asyncio.run() and unittest.IsolatedAsyncioTestCase to always the set event loop as it was done in Python 3.10 and earlier. Patch by Kumar Aditya. - gh-94101: Manual instantiation of ssl.SSLSession objects is no longer allowed as it lead to misconfigured instances that crashed the interpreter when attributes where accessed on them. - gh-83658: Make multiprocessing.Pool raise an exception if maxtasksperchild is not None or a positive int. - gh-61162: Clarify sqlite3 behavior when Using the connection as a context manager. Tools/Demos - gh-94538: Fix Argument Clinic output to custom file destinations. Patch by Erlend E. Aasland. C API - gh-93937: The following frame functions and type are now directly available with #include , it’s no longer needed to add #include : PyFrame_Check() PyFrame_GetBack() PyFrame_GetBuiltins() PyFrame_GetGenerator() PyFrame_GetGlobals() PyFrame_GetLasti() PyFrame_GetLocals() PyFrame_Type- Update to 3.11.0b2: - many small updates - Add patch support-expat-245.patch: * Support Expat >= 2.4.4 (jsc#SLE-21253)- Refresh bluez-devel-vendor.tar.xz - Fix building with system-expat (gh#python/cpython#92875). Nope, it didn't work, worked around it.- Update to pre-release version 3.11.0b1: - PEP 657 – Include Fine-Grained Error Locations in Tracebacks - PEP 654 – Exception Groups and except* - PEP 673 – Self Type - PEP 646 – Variadic Generics - PEP 680– tomllib: Support for Parsing TOML in the Standard Library - PEP 675– Arbitrary Literal String Type - PEP 655– Marking individual TypedDict items as required or potentially-missing - bpo-46752– Introduce task groups to asyncio - The Faster Cpython Project is already yielding some exciting results. Python 3.11 is up to 10-60% faster than Python 3.10. On average, we measured a 1.22x speedup on the standard benchmark suite. See https://docs.python.org/3.11/whatsnew/3.11.html#faster-cpython for details.- Switch primary_interpreter from python38 to python310- Update to 3.10.4: - bpo-46968: Check for the existence of the “sys/auxv.h” header in faulthandler to avoid compilation problems in systems where this header doesn’t exist. Patch by Pablo Galindo - bpo-23691: Protect the re.finditer() iterator from re-entering. - bpo-42369: Fix thread safety of zipfile._SharedFile.tell() to avoid a “zipfile.BadZipFile: Bad CRC-32 for file” exception when reading a ZipFile from multiple threads. - bpo-38256: Fix binascii.crc32() when it is compiled to use zlib’c crc32 to work properly on inputs 4+GiB in length instead of returning the wrong result. The workaround prior to this was to always feed the function data in increments smaller than 4GiB or to just call the zlib module function. - bpo-39394: A warning about inline flags not at the start of the regular expression now contains the position of the flag. - bpo-47061: Deprecate the various modules listed by PEP 594: - aifc, asynchat, asyncore, audioop, cgi, cgitb, chunk, crypt, imghdr, msilib, nntplib, nis, ossaudiodev, pipes, smtpd, sndhdr, spwd, sunau, telnetlib, uu, xdrlib - bpo-2604: Fix bug where doctests using globals would fail when run multiple times. - bpo-45997: Fix asyncio.Semaphore re-aquiring FIFO order. - bpo-47022: The asynchat, asyncore and smtpd modules have been deprecated since at least Python 3.6. Their documentation and deprecation warnings and have now been updated to note they will removed in Python 3.12 (PEP 594). - bpo-46421: Fix a unittest issue where if the command was invoked as python -m unittest and the filename(s) began with a dot (.), a ValueError is returned. - bpo-40296: Fix supporting generic aliases in pydoc. - Update to 3.10.3: - bpo-46940: Avoid overriding AttributeError metadata information for nested attribute access calls. Patch by Pablo Galindo. - bpo-46852: Rename the private undocumented float.__set_format__() method to float.__setformat__() to fix a typo introduced in Python 3.7. The method is only used by test_float. Patch by Victor Stinner. - bpo-46794: Bump up the libexpat version into 2.4.6 - bpo-46820: Fix parsing a numeric literal immediately (without spaces) followed by “not in” keywords, like in 1not in x. Now the parser only emits a warning, not a syntax error. - bpo-46762: Fix an assert failure in debug builds when a ‘<’, ‘>’, or ‘=’ is the last character in an f-string that’s missing a closing right brace. - bpo-46724: Make sure that all backwards jumps use the JUMP_ABSOLUTE instruction, rather than JUMP_FORWARD with an argument of (2**32)+offset. - bpo-46732: Correct the docstring for the __bool__() method. Patch by Jelle Zijlstra. - bpo-46707: Avoid potential exponential backtracking when producing some syntax errors involving lots of brackets. Patch by Pablo Galindo. - bpo-40479: Add a missing call to va_end() in Modules/_hashopenssl.c. - bpo-46615: When iterating over sets internally in setobject.c, acquire strong references to the resulting items from the set. This prevents crashes in corner-cases of various set operations where the set gets mutated. - bpo-45773: Remove two invalid “peephole” optimizations from the bytecode compiler. - bpo-43721: Fix docstrings of getter, setter, and deleter to clarify that they create a new copy of the property. - bpo-46503: Fix an assert when parsing some invalid N escape sequences in f-strings. - bpo-46417: Fix a race condition on setting a type __bases__ attribute: the internal function add_subclass() now gets the PyTypeObject.tp_subclasses member after calling PyWeakref_NewRef() which can trigger a garbage collection which can indirectly modify PyTypeObject.tp_subclasses. Patch by Victor Stinner. - bpo-46383: Fix invalid signature of _zoneinfo’s module_free function to resolve a crash on wasm32-emscripten platform. - bpo-46070: Py_EndInterpreter() now explicitly untracks all objects currently tracked by the GC. Previously, if an object was used later by another interpreter, calling PyObject_GC_UnTrack() on the object crashed if the previous or the next object of the PyGC_Head structure became a dangling pointer. Patch by Victor Stinner. - bpo-46339: Fix a crash in the parser when retrieving the error text for multi-line f-strings expressions that do not start in the first line of the string. Patch by Pablo Galindo - bpo-46240: Correct the error message for unclosed parentheses when the tokenizer doesn’t reach the end of the source when the error is reported. Patch by Pablo Galindo - bpo-46091: Correctly calculate indentation levels for lines with whitespace character that are ended by line continuation characters. Patch by Pablo Galindo - bpo-43253: Fix a crash when closing transports where the underlying socket handle is already invalid on the Proactor event loop. - bpo-47004: Apply bugfixes from importlib_metadata 4.11.3, including bugfix for EntryPoint.extras, which was returning match objects and not the extras strings. - bpo-46985: Upgrade pip wheel bundled with ensurepip (pip 22.0.4) - bpo-46968: faulthandler: On Linux 5.14 and newer, dynamically determine size of signal handler stack size CPython allocates using getauxval(AT_MINSIGSTKSZ). This changes allows for Python extension’s request to Linux kernel to use AMX_TILE instruction set on Sapphire Rapids Xeon processor to succeed, unblocking use of the ISA in frameworks. - bpo-46955: Expose asyncio.base_events.Server as asyncio.Server. Patch by Stefan Zabka. - bpo-23325: The signal module no longer assumes that SIG_IGN and SIG_DFL are small int singletons. - bpo-46932: Update bundled libexpat to 2.4.7 - bpo-25707: Fixed a file leak in xml.etree.ElementTree.iterparse() when the iterator is not exhausted. Patch by Jacob Walls. - bpo-44886: Inherit asyncio proactor datagram transport from asyncio.DatagramTransport. - bpo-46827: Support UDP sockets in asyncio.loop.sock_connect() for selector-based event loops. Patch by Thomas Grainger. - bpo-46811: Make test suite support Expat >=2.4.5 - bpo-46252: Raise TypeError if ssl.SSLSocket is passed to transport-based APIs. - bpo-46784: Fix libexpat symbols collisions with user dynamically loaded or statically linked libexpat in embedded Python. - bpo-39327: shutil.rmtree() can now work with VirtualBox shared folders when running from the guest operating-system. - bpo-46756: Fix a bug in urllib.request.HTTPPasswordMgr.find_user_password() and urllib.request.HTTPPasswordMgrWithPriorAuth.is_authenticated() which allowed to bypass authorization. For example, access to URI example.org/foobar was allowed if the user was authorized for URI example.org/foo. - bpo-46643: In typing.get_type_hints(), support evaluating stringified ParamSpecArgs and ParamSpecKwargs annotations. Patch by Gregory Beauregard. - bpo-45863: When the tarfile module creates a pax format archive, it will put an integer representation of timestamps in the ustar header (if possible) for the benefit of older unarchivers, in addition to the existing full-precision timestamps in the pax extended header. - bpo-46676: Make typing.ParamSpec args and kwargs equal to themselves. Patch by Gregory Beauregard. - bpo-46672: Fix NameError in asyncio.gather() when initial type check fails. - bpo-46655: In typing.get_type_hints(), support evaluating bare stringified TypeAlias annotations. Patch by Gregory Beauregard. - bpo-45948: Fixed a discrepancy in the C implementation of the xml.etree.ElementTree module. Now, instantiating an xml.etree.ElementTree.XMLParser with a target=None keyword provides a default xml.etree.ElementTree.TreeBuilder target as the Python implementation does. - bpo-46521: Fix a bug in the codeop module that was incorrectly identifying invalid code involving string quotes as valid code. - bpo-46581: Brings ParamSpec propagation for GenericAlias in line with Concatenate (and others). - bpo-46591: Make the IDLE doc URL on the About IDLE dialog clickable. - bpo-46400: expat: Update libexpat from 2.4.1 to 2.4.4 - bpo-46487: Add the get_write_buffer_limits method to asyncio.transports.WriteTransport and to the SSL transport. - bpo-45173: Note the configparser deprecations will be removed in Python 3.12. - bpo-46539: In typing.get_type_hints(), support evaluating stringified ClassVar and Final annotations inside Annotated. Patch by Gregory Beauregard. - bpo-46491: Allow typing.Annotated to wrap typing.Final and typing.ClassVar. Patch by Gregory Beauregard. - bpo-46436: Fix command-line option -d/--directory in module http.server which is ignored when combined with command-line option --cgi. Patch by Géry Ogam. - bpo-41403: Make mock.patch() raise a TypeError with a relevant error message on invalid arg. Previously it allowed a cryptic AttributeError to escape. - bpo-46474: In importlib.metadata.EntryPoint.pattern, avoid potential REDoS by limiting ambiguity in consecutive whitespace. - bpo-46469: asyncio generic classes now return types.GenericAlias in __class_getitem__ instead of the same class. - bpo-46434: pdb now gracefully handles help when __doc__ is missing, for example when run with pregenerated optimized .pyc files. - bpo-46333: The __eq__() and __hash__() methods of typing.ForwardRef now honor the module parameter of typing.ForwardRef. Forward references from different modules are now differentiated. - bpo-46246: Add missing __slots__ to importlib.metadata.DeprecatedList. Patch by Arie Bovenberg. - bpo-46266: Improve day constants in calendar. - Now all constants (MONDAY … SUNDAY) are documented, tested, and added to __all__. - bpo-46232: The ssl module now handles certificates with bit strings in DN correctly. - bpo-43118: Fix a bug in inspect.signature() that was causing it to fail on some subclasses of classes with a __text_signature__ referencing module globals. Patch by Weipeng Hong. - bpo-26552: Fixed case where failing asyncio.ensure_future() did not close the coroutine. Patch by Kumar Aditya. - bpo-21987: Fix an issue with tarfile.TarFile.getmember() getting a directory name with a trailing slash. - bpo-20392: Fix inconsistency with uppercase file extensions in MimeTypes.guess_type(). Patch by Kumar Aditya. - bpo-46080: Fix exception in argparse help text generation if a argparse.BooleanOptionalAction argument’s default is argparse.SUPPRESS and it has help specified. Patch by Felix Fontein. - bpo-44439: Fix .write() method of a member file in ZipFile, when the input data is an object that supports the buffer protocol, the file length may be wrong. - bpo-45703: When a namespace package is imported before another module from the same namespace is created/installed in a different sys.path location while the program is running, calling the importlib.invalidate_caches() function will now also guarantee the new module is noticed. - bpo-24959: Fix bug where unittest sometimes drops frames from tracebacks of exceptions raised in tests. - bpo-44791: Fix substitution of ParamSpec in Concatenate with different parameter expressions. Substitution with a list of types returns now a tuple of types. Substitution with Concatenate returns now a Concatenate with concatenated lists of arguments. - bpo-14156: argparse.FileType now supports an argument of ‘-’ in binary mode, returning the .buffer attribute of sys.stdin/sys.stdout as appropriate. Modes including ‘x’ and ‘a’ are treated equivalently to ‘w’ when argument is ‘-’. Patch contributed by Josh Rosenberg - bpo-46463: Fixes escape4chm.py script used when building the CHM documentation file - bpo-46913: Fix test_faulthandler.test_sigfpe() if Python is built with undefined behavior sanitizer (UBSAN): disable UBSAN on the faulthandler_sigfpe() function. Patch by Victor Stinner. - bpo-46708: Prevent default asyncio event loop policy modification warning after test_asyncio execution. - bpo-46678: The function make_legacy_pyc in Lib/test/support/import_helper.py no longer fails when PYTHONPYCACHEPREFIX is set to a directory on a different device from where tempfiles are stored. - bpo-46616: Ensures test_importlib.test_windows cleans up registry keys after completion. - bpo-44359: test_ftplib now silently ignores socket errors to prevent logging unhandled threading exceptions. Patch by Victor Stinner. - bpo-46542: Fix a Python crash in test_lib2to3 when using Python built in debug mode: limit the recursion limit. Patch by Victor Stinner. - bpo-46576: test_peg_generator now disables compiler optimization when testing compilation of its own C extensions to significantly speed up the testing on non-debug builds of CPython. - bpo-46542: Fix test_json tests checking for RecursionError: modify these tests to use support.infinite_recursion(). Patch by Victor Stinner. - bpo-13886: Skip test_builtin PTY tests on non-ASCII characters if the readline module is loaded. The readline module changes input() behavior, but test_builtin is not intented to test the readline module. Patch by Victor Stinner. - bpo-38472: Fix GCC detection in setup.py when cross-compiling. The C compiler is now run with LC_ALL=C. Previously, the detection failed with a German locale. - bpo-46513: configure no longer uses AC_C_CHAR_UNSIGNED macro and pyconfig.h no longer defines reserved symbol __CHAR_UNSIGNED__. - bpo-45296: Clarify close, quit, and exit in IDLE. In the File menu, ‘Close’ and ‘Exit’ are now ‘Close Window’ (the current one) and ‘Exit’ is now ‘Exit IDLE’ (by closing all windows). In Shell, ‘quit()’ and ‘exit()’ mean ‘close Shell’. If there are no other windows, this also exits IDLE. - bpo-45447: Apply IDLE syntax highlighting to pyi files. Patch by Alex Waygood and Terry Jan Reedy. - bpo-46433: The internal function _PyType_GetModuleByDef now correctly handles inheritance patterns involving static types. - bpo-14916: Fixed bug in the tokenizer that prevented PyRun_InteractiveOne from parsing from the provided FD. - Remove upstreamed patches: - support-expat-245.patch- Add patch support-expat-245.patch: * Support Expat >= 2.4.5- bsc#1195831 Obsolete older "most modern" versions of python packages (python39 for python310 and so forth). For next versions it is necessary just to edit the macro.- Remove second superfluous BR rpm-build-python- Remove second superfluous BR rpm-build-python - Add fix_configure_rst.patch, which removes duplicate link targets and make documentation with old Sphinx in SLE - Skip test_capi (bsc#1195140 and bpo#37169)- Update to 3.10.2: Bugfix only - bpo#46347 memory leak in PyEval_EvalCodeEx (especially visible with Cython code) - and many others- Upgrade to 3.10.1 (jsc#SLE-18038): - PEP 623 – Deprecate and prepare for the removal of the wstr member in PyUnicodeObject. - PEP 604 – Allow writing union types as X | Y - PEP 612 – Parameter Specification Variables - PEP 626 – Precise line numbers for debugging and other tools. - PEP 618 – Add Optional Length-Checking To zip. - bpo-12782: Parenthesized context managers are now officially allowed. - PEP 632 – Deprecate distutils module. - PEP 613 – Explicit Type Aliases - PEP 634 – Structural Pattern Matching: Specification - PEP 635 – Structural Pattern Matching: Motivation and Rationale - PEP 636 – Structural Pattern Matching: Tutorial - PEP 644 – Require OpenSSL 1.1.1 or newer - PEP 624 – Remove Py_UNICODE encoder APIs - PEP 597 – Add optional EncodingWarning - Patches readjusted: - bpo-31046_ensurepip_honours_prefix.patch - python-3.3.0b1-fix_date_time_compiler.patch- Remove pdb_adjust_breakpoints.patch and instead just adjust location of the test breakpoint in Lib/test/test_pdb.py via sed, because we have shortened Lib/pdb.py by removing the shebang (bpo#45964).- Add pdb_adjust_breakpoints.patch fixing expectd results in test_pdb_breakpoints_preserved_across_interactive_sessions (bpo#45964).- Remove shebangs from from python-base libraries in _libdir (bsc#1193179). - Readjust patches: - bpo-31046_ensurepip_honours_prefix.patch - decimal.patch - python-3.3.0b1-fix_date_time_compiler.patch- Move rpm-build-python construct to correct place.- BuildRequire rpm-build-python: The provider to inject python(abi) has been moved there. rpm-build pulls rpm-build-python automatically in when building anything against python3-base, but this implies that the initial build of python3-base does not trigger the automatic installation.- Final release of 3.10.0: Complete list on https://www.python.org/downloads/release/python-3100/, but highlights are: - PEP 623 – Deprecate and prepare for the removal of the wstr member in PyUnicodeObject. - PEP 604 – Allow writing union types as X | Y - PEP 612 – Parameter Specification Variables - PEP 626 – Precise line numbers for debugging and other tools. - PEP 618 – Add Optional Length-Checking To zip. - PEP 632 – Deprecate distutils module. - PEP 613 – Explicit Type Aliases - PEP 634 – Structural Pattern Matching: Specification - PEP 635 – Structural Pattern Matching: Motivation and Rationale - PEP 636 – Structural Pattern Matching: Tutorial - PEP 644 – Require OpenSSL 1.1.1 or newer - PEP 624 – Remove Py_UNICODE encoder APIs - PEP 597 – Add optional EncodingWarning - bpo-12782: Parenthesized context managers are now officially allowed.- Switch on option --with-system-libmpdec (bsc#1189356).- Reenable profileopt with qemu emulation, test_faulthandler is no longer run during profiling- test_faulthandler is still problematic under qemu linux-user emulation, disable it there- Update to 3.10.0rc1 (the penultimate prerelease), which contains plenty of small bugfixes among others: - bpo#38605: from __future__ import annotations (PEP 563) used to be on this list in previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. - bpo-44600: Fix incorrect line numbers while tracing some failed patterns in match statements. Patch by Charles Burkland. - plenty of modifications in types.Union- Update to 3.10.0b4: https://docs.python.org/3.10/whatsnew/changelog.html#python-3-10-0-beta-4 - Remove python3-imp-returntype.patch which has been upstreamed.- Update to 3.10.0b2: - PEP 623 -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject. - PEP 604 -- Allow writing union types as X | Y - PEP 612 -- Parameter Specification Variables - PEP 626 -- Precise line numbers for debugging and other tools. - PEP 618 -- Add Optional Length-Checking To zip. - bpo-12782: Parenthesized context managers are now officially allowed. - PEP 632 -- Deprecate distutils module. - PEP 613 -- Explicit Type Aliases - PEP 634 -- Structural Pattern Matching: Specification - PEP 635 -- Structural Pattern Matching: Motivation and Rationale - PEP 636 -- Structural Pattern Matching: Tutorial - PEP 644 -- Require OpenSSL 1.1.1 or newer - PEP 624 -- Remove Py_UNICODE encoder APIs - PEP 597 -- Add optional EncodingWarning - Removed patches (assumed upstream): - sphinx-update-removed-function.patch- Revert previous skip over test_capi - Add skip-test_pyobject_freed_is_freed.patch to skip failing test on SLE-15.- allow build with Sphinx >= 3.x- Exclude test_capi on Leap (test fails there)- Stop providing "python" symbol (bsc#1185588), which means python2 currently.- Update to 3.9.5: * Security - bpo-43434: Creating a sqlite3.Connection object now also produces a sqlite3.connect auditing event. Previously this event was only produced by sqlite3.connect() calls. Patch by Erlend E. Aasland. - bpo-43882: The presence of newline or tab characters in parts of a URL could allow some forms of attacks. - Following the controlling specification for URLs defined by WHATWG urllib.parse() now removes ASCII newlines and tabs from URLs, preventing such attacks. - bpo-43472: Ensures interpreter-level audit hooks receive the cpython.PyInterpreterState_New event when called through the _xxsubinterpreters module. - bpo-36384: ipaddress module no longer accepts any leading zeros in IPv4 address strings. Leading zeros are ambiguous and interpreted as octal notation by some libraries. For example the legacy function socket.inet_aton() treats leading zeros as octal notatation. glibc implementation of modern inet_pton() does not accept any leading zeros. For a while the ipaddress module used to accept ambiguous leading zeros. - bpo-43075: Fix Regular Expression Denial of Service (ReDoS) vulnerability in urllib.request.AbstractBasicAuthHandler. The ReDoS-vulnerable regex has quadratic worst-case complexity and it allows cause a denial of service when identifying crafted invalid RFCs. This ReDoS issue is on the client side and needs remote attackers to control the HTTP server. - bpo-42800: Audit hooks are now fired for frame.f_code, traceback.tb_frame, and generator code/frame attribute access. * Core and Builtins - bpo-43105: Importlib now resolves relative paths when creating module spec objects from file locations. - bpo-42924: Fix bytearray repetition incorrectly copying data from the start of the buffer, even if the data is offset within the buffer (e.g. after reassigning a slice at the start of the bytearray to a shorter byte string). * Library - bpo-43993: Update bundled pip to 21.1.1. - bpo-43937: Fixed the turtle module working with non-default root window. - bpo-43930: Update bundled pip to 21.1 and setuptools to 56.0.0 - bpo-43920: OpenSSL 3.0.0: load_verify_locations() now returns a consistent error message when cadata contains no valid certificate. - bpo-43607: urllib can now convert Windows paths with \\?\ prefixes into URL paths. - bpo-43284: platform.win32_ver derives the windows version from sys.getwindowsversion().platform_version which in turn derives the version from kernel32.dll (which can be of a different version than Windows itself). Therefore change the platform.win32_ver to determine the version using the platform module’s _syscmd_ver private function to return an accurate version. - bpo-42248: [Enum] ensure exceptions raised in _missing__ are released - bpo-43799: OpenSSL 3.0.0: define OPENSSL_API_COMPAT 1.1.1 to suppress deprecation warnings. Python requires OpenSSL 1.1.1 APIs. - bpo-43794: Add ssl.OP_IGNORE_UNEXPECTED_EOF constants (OpenSSL 3.0.0) - bpo-43789: OpenSSL 3.0.0: Don’t call the password callback function a second time when first call has signaled an error condition. - bpo-43788: The header files for ssl error codes are now OpenSSL version-specific. Exceptions will now show correct reason and library codes. The make_ssl_data.py script has been rewritten to use OpenSSL’s text file with error codes. - bpo-43655: tkinter dialog windows are now recognized as dialogs by window managers on macOS and X Window. - bpo-43534: turtle.textinput() and turtle.numinput() create now a transient window working on behalf of the canvas window. - bpo-43522: Fix problem with hostname_checks_common_name. OpenSSL does not copy hostflags from struct SSL_CTX to struct SSL. - bpo-42967: Allow bytes separator argument in urllib.parse.parse_qs and urllib.parse.parse_qsl when parsing str query strings. Previously, this raised a TypeError. - bpo-43176: Fixed processing of a dataclass that inherits from a frozen dataclass with no fields. It is now correctly detected as an error. - bpo-41735: Fix thread locks in zlib module may go wrong in rare case. Patch by Ma Lin. - bpo-36470: Fix dataclasses with InitVars and replace(). Patch by Claudiu Popa. - bpo-32745: Fix a regression in the handling of ctypes’ ctypes.c_wchar_p type: embedded null characters would cause a ValueError to be raised. Patch by Zackery Spytz. * Documentation - bpo-43959: The documentation on the PyContextVar C-API was clarified. - bpo-43938: Update dataclasses documentation to express that FrozenInstanceError is derived from AttributeError. - bpo-43755: Update documentation to reflect that unparenthesized lambda expressions can no longer be the expression part in an if clause in comprehensions and generator expressions since Python 3.9. - bpo-43739: Fixing the example code in Doc/extending/extending.rst to declare and initialize the pmodule variable to be of the right type. * Tests - bpo-43961: Fix test_logging.test_namer_rotator_inheritance() on Windows: use os.replace() rather than os.rename(). Patch by Victor Stinner. - bpo-43842: Fix a race condition in the SMTP test of test_logging. Don’t close a file descriptor (socket) from a different thread while asyncore.loop() is polling the file descriptor. Patch by Victor Stinner. - bpo-43811: Tests multiple OpenSSL versions on GitHub Actions. Use ccache to speed up testing. - bpo-43791: OpenSSL 3.0.0: Disable testing of legacy protocols TLS 1.0 and 1.1. Tests are failing with TLSV1_ALERT_INTERNAL_ERROR. - Refreshed patches: - bpo-31046_ensurepip_honours_prefix.patch - python-3.3.0b1-fix_date_time_compiler.patch - Add vendorized files from bluez-devel to enable building support for Bluetooth.- Make sure to close the import_failed.map file after the exception has been raised in order to avoid ResourceWarnings when the failing import is part of a try...except block.- Update to 3.9.4: - bpo#43710: Reverted the fix for https://bugs.python.org/issue42500 as it changed the PyThreadState struct size and broke the 3.9.x ABI in the 3.9.3 release (visible on 32-bit platforms using binaries compiled using an earlier version of Python 3.9.x headers). - bpo#26053: Fixed bug where the pdb interactive run command echoed the args from the shell command line, even if those have been overridden at the pdb prompt. - bpo#42988 (bsc#1183374) CVE-2021-3426: Remove the getfile feature of the pydoc module which could be abused to read arbitrary files on the disk (directory traversal vulnerability). Moreover, even source code of Python modules can contain sensitive data like passwords. Vulnerability reported by David Schwörer. - bpo#43285: ftplib no longer trusts the IP address value returned from the server in response to the PASV command by default. This prevents a malicious FTP server from using the response to probe IPv4 address and port combinations on the client network. Code that requires the former vulnerable behavior may set a trust_server_pasv_ipv4_address attribute on their ftplib.FTP instances to True to re-enable it. - bpo#43439: Add audit hooks for gc.get_objects(), gc.get_referrers() and gc.get_referents(). Patch by Pablo Galindo. - bpo#43660: Fix crash that happens when replacing sys.stderr with a callable that can remove the object while an exception is being printed. Patch by Pablo Galindo. - bpo#43555: Report the column offset for SyntaxError for invalid line continuation characters. Patch by Pablo Galindo. - bpo#43517: Fix misdetection of circular imports when using from pkg.mod import attr, which caused false positives in non-trivial multi-threaded code. - bpo#35883: Python no longer fails at startup with a fatal error if a command line argument contains an invalid Unicode character. The Py_DecodeLocale() function now escapes byte sequences which would be decoded as Unicode characters outside the [U+0000; U+10ffff] range. - bpo#43406: Fix a possible race condition where PyErr_CheckSignals tries to execute a non-Python signal handler. - bpo#42500: Improve handling of exceptions near recursion limit. Converts a number of Fatal Errors in RecursionErrors. - bpo#43433: xmlrpc.client.ServerProxy no longer ignores query and fragment in the URL of the server. - bpo#35930: Raising an exception raised in a “future” instance will create reference cycles. - bpo#43577: Fix deadlock when using ssl.SSLContext debug callback with ssl.SSLContext.sni_callback(). - bpo#43521: ast.unparse can now render NaNs and empty sets. - bpo#43423: subprocess.communicate() no longer raises an IndexError when there is an empty stdout or stderr IO buffer during a timeout on Windows. - bpo#27820: Fixed long-standing bug of smtplib.SMTP where doing AUTH LOGIN with initial_response_ok=False will fail. The cause is that SMTP.auth_login _always_ returns a password if provided with a challenge string, thus non-compliant with the standard for AUTH LOGIN. Also fixes bug with the test for smtpd. - bpo#43332: Improves the networking efficiency of http.client when using a proxy via set_tunnel(). Fewer small send calls are made during connection setup. - bpo#43399: Fix ElementTree.extend not working on iterators when using the Python implementation - bpo#43316: The python -m gzip command line application now properly fails when detecting an unsupported extension. It exits with a non-zero exit code and prints an error message to stderr. - bpo#43260: Fix TextIOWrapper can not flush internal buffer forever after very large text is written. - bpo#42782: Fail fast in shutil.move() to avoid creating destination directories on failure. - bpo#37193: Fixed memory leak in socketserver.ThreadingMixIn introduced in Python 3.7. - bpo#43199: Answer “Why is there no goto?” in the Design and History FAQ. - bpo#43407: Clarified that a result from time.monotonic(), time.perf_counter(), time.process_time(), or time.thread_time() can be compared with the result from any following call to the same function - not just the next immediate call. - bpo#27646: Clarify that ‘yield from ’ works with any iterable, not just iterators. - bpo#36346: Update some deprecated unicode APIs which are documented as “will be removed in 4.0” to “3.12”. See PEP 623 for detail. - bpo#37945: Fix test_getsetlocale_issue1813() of test_locale: skip the test if setlocale() fails. Patch by Victor Stinner. - bpo#41561: Add workaround for Ubuntu’s custom OpenSSL security level policy. - bpo#43288: Fix test_importlib to correctly skip Unicode file tests if the fileystem does not support them. - bpo#43617: Improve configure.ac: Check for presence of autoconf-archive package and remove our copies of M4 macros. - bpo#42225: Document that IDLE can fail on Unix either from misconfigured IP masquerage rules or failure displaying complex colored (non-ascii) characters. - bpo#43283: Document why printing to IDLE’s Shell is often slower than printing to a system terminal and that it can be made faster by pre-formatting a single string before printing.- Update to 3.9.2: - bpo#42938 (bsc#1181126): Avoid static buffers when computing the repr of ctypes.c_double and ctypes.c_longdouble values. This issue was assigned CVE-2021-3177. - bpo#42967 (bsc#1182379): Fix web cache poisoning vulnerability by defaulting the query args separator to &, and allowing the user to choose a custom separator. This issue was assigned CVE-2021-23336. - Upstreamed patches were removed: - CVE-2021-3177-buf_ovrfl_PyCArg_repr.patch - bsc1167501-invalid-alignment.patch - skip_random_failing_tests.patch - CVE-2019-5010-null-defer-x509-cert-DOS.patch- Add Obsoletes for python3-base when primary interpreter is set to properly replace it during upgrades. (bsc#1181324)- Update to 3.9.1: Security bugs: - Prevented potential DoS attack via CPU and RAM exhaustion when processing malformed Apple Property List files in binary format. - The plistlib module no longer accepts entity declarations in XML plist files to avoid XML vulnerabilities. This should not affect users as entity declarations are not used in regular plist files. - Add volatile to the accumulator variable in hmac.compare_digest, making constant-time-defeating optimizations less likely. Core and Builtins - Allow assignment expressions in set literals and set comprehensions as per PEP 572. Patch by Pablo Galindo. - Fix a regression introduced by the new parser, where an unparenthesized walrus operator was not allowed within generator expressions. - types.GenericAlias objects can now be the targets of weakrefs. - Fixed a bug in the PEG parser that was causing crashes in debug mode. Now errors are checked in left-recursive rules to avoid cases where such errors do not get handled in time and appear as long-distance crashes in other places. - Fixed a possible crash in the PEG parser when checking for the ‘!=’ token in the barry_as_flufl rule. Patch by Pablo Galindo. - Fix handling of errors during creation of PyFunctionObject, which resulted in operations on uninitialized memory. Patch by Yonatan Goldschmidt. - Fix a bug in the parser, where a curly brace following a primary didn’t fail immediately. This led to invalid expressions like a {b} to throw a SyntaxError with a wrong offset, or invalid expressions ending with a curly brace like a { to not fail immediately in the REPL. - Fix possible buffer overflow in the new parser when checking for continuation lines. Patch by Pablo Galindo. - Run the parser two times. On the first run, disable all the rules that only generate better error messages to gain performance. If there’s a parse failure, run the parser a second time with those enabled. - Document the default implementation of object.__eq__. - Fix peephole optimizer misoptimize conditional jump + JUMP_IF_NOT_EXC_MATCH pair. - The garbage collector now tracks all user-defined classes. Patch by Brandt Bucher. - Fixed potential issues with removing not completely initialized module from sys.modules when import fails. - Star-unpacking is now allowed for with item’s targets in the PEG parser. - Fixed stack overflow in issubclass() and isinstance() when getting the __bases__ attribute leads to infinite recursion. - When loading a native module and a load failure occurs, prevent a possible UnicodeDecodeError when not running in a UTF-8 locale by decoding the load error message using the current locale’s encoding. - Correctly count control blocks in ‘except’ in compiler. Ensures that a syntax error, rather a fatal error, occurs for deeply nested, named exception handlers. Library - types.GenericAlias will now raise a TypeError when attempting to initialize with a keyword argument. Previously, this would cause the interpreter to crash if the interpreter was compiled with debug symbols. This does not affect interpreters compiled for release. Patch by Ken Jin. - CGIHTTPRequestHandler.run_cgi() HTTP_ACCEPT improperly parsed. Replace the special purpose getallmatchingheaders with generic get_all method and add relevant tests. - inspect.findsource() now raises OSError instead of IndexError when co_lineno of a code object is greater than the file length. This can happen, for example, when a file is edited after it was imported. PR by Irit Katriel. - Fix handling of trailing comments by inspect.getsource(). - ChainMap.__iter__ no longer calls __getitem__ on underlying maps - TracebackException no longer holds a reference to the exception’s traceback object. Consequently, instances of TracebackException for equivalent but non-equal exceptions now compare as equal. - We fixed an issue in pickle.whichmodule in which importing multiprocessing could change the how pickle identifies which module an object belongs to, potentially breaking the unpickling of those objects. - Clarify the error message for asyncio.IncompleteReadError when expected is None. - Extracting a symlink from a tarball should succeed and overwrite the symlink if it already exists. The fix is to remove the existing file or symlink before extraction. Based on patch by Chris AtLee, Jeffrey Kintscher, and Senthil Kumaran. - Fixed tkinter.ttk.Style.map(). The function accepts now the representation of the default state as empty sequence (as returned by Style.map()). The structure of the result is now the same on all platform and does not depend on the value of wantobjects. - Fix various issues with typing.Literal parameter handling (flatten, deduplicate, use type to cache key). Patch provided by Yurii Karabas. - Fix the threading.Thread class at fork: do nothing if the thread is already stopped (ex: fork called at Python exit). Previously, an error was logged in the child process. - The onerror callback from shutil.rmtree now receives correct function when os.open fails. - Fix os.sendfile() on illumos. - Fixed writing binary Plist files larger than 4 GiB. - The repr() of typing types containing Generic Alias Types previously did not show the parameterized types in the GenericAlias. They have now been changed to do so. - webbrowser: Ignore NotADirectoryError when calling xdg-settings. - binhex.binhex() consisently writes macOS 9 line endings. - Fix a stack overflow error for asyncio Task or Future repr(). - The overflow occurs under some circumstances when a Task or Future recursively returns itself. - Fix memory leak in subprocess.Popen() in case an uid (gid) specified in user (group, extra_groups) overflows uid_t (gid_t). - Improve asyncio.wait function to create the futures set just one time. - InvalidFileException and RecursionError are now the only errors caused by loading malformed binary Plist file (previously ValueError and TypeError could be raised in some specific cases). - Pickling heap types implemented in C with protocols 0 and 1 raises now an error instead of producing incorrect data. - plistlib: fix parsing XML plists with hexadecimal integer values - Fix an incorrectly formatted error from _codecs.charmap_decode() when called with a mapped value outside the range of valid Unicode code points. PR by Max Bernstein. - Fix pickling pure Python datetime.time subclasses. Patch by Dean Inwood. - Fixed a bug that was causing ctypes.util.find_library() to return None when triying to locate a library in an environment when gcc>=9 is available and ldconfig is not. Patch by Pablo Galindo - C14N 2.0 serialisation in xml.etree.ElementTree failed for unprefixed attributes when a default namespace was defined. - Fix a bug in the symtable module that was causing module-scope global variables to not be reported as both local and global. Patch by Pablo Galindo. - str() for the type attribute of the tkinter.Event object always returns now the numeric code returned by Tk instead of the name of the event type. - fix tkinter.EventType Enum so all members are strings, and none are tuples - Fix SQLite3 segfault when backing up closed database. Patch contributed by Peter David McCormick. - Fix the tarfile module to write only basename of TAR file to GZIP compression header. - Allow ctypes.wintypes to be imported on non-Windows systems. - shutil.which() now ignores empty entries in PATHEXT instead of treating them as a match. - Fix time-of-check/time-of-action issue in subprocess.Popen.send_signal. - Fix --outfile for cProfile / profile not writing the output file in the original directory when the program being profiled changes the working directory. PR by Anthony Sottile. - ZipFile truncates files to avoid corruption when a shorter comment is provided in append (“a”) mode. Patch by Jan Mazur. - Fixed KeyError exception when flattening an email to a string attempts to replace a non-existent Content-Transfer-Encoding header. Documentation - Fix the URL for the IMAP protocol documents. - Document __format__ functionality for IP addresses. - Clarify that subscription expressions are also valid for certain classes and types in the standard library, and for user-defined classes and types if the classmethod __class_getitem__() is provided. - Documented generic alias type and types.GenericAlias. Also added an entry in glossary for generic types. - In Programming FAQ “Sequences (Tuples/Lists)” section, add “How do you remove multiple items from a list”. - Fix RemovedInSphinx40Warning when building the documentation. Patch by Dong-hee Na. - Update the refcounts info of PyType_FromModuleAndSpec. - Fix tarfile’s extractfile documentation - Document some restrictions on the default string representations of numeric classes. Tests - Reenable test_gdb on gdb 9.2 and newer: https://bugzilla.redhat.com/show_bug.cgi?id=1866884 bug is fixed in gdb 10.1. - Fix test_asyncio.test_call_later() race condition: don’t measure asyncio performance in the call_later() unit test. The test failed randomly on the CI. - Include _testinternalcapi module in Windows installer for test suite - Fix test_logging.test_race_between_set_target_and_flush(): the test now waits until all threads complete to avoid leaking running threads. - Avoid a test failure in test_lib2to3 if the module has already imported at the time the test executes. Patch by Pablo Galindo. - Tests for CJK codecs no longer call eval() on content received via HTTP. - Fix test_site.test_license_exists_at_url(): call urllib.request.urlcleanup() to reset the global urllib.request._opener. Patch by Victor Stinner. - test_ssl: skip test_min_max_version_mismatch when TLS 1.0 is not available - Add tests for SIGINT handling in the runpy module. - Fixed a failure in test_tk.test_widgets.ScaleTest happening when executing the test with Tk 8.6.10. Build - Fix a race condition in “make regen-all” when make -jN option is used to run jobs in parallel. The clinic.py script now only use atomic write to write files. Moveover, generated files are now left unchanged if the content does not change, to not change the file modification time. - Update Py_UNREACHABLE to use __builtin_unreachable() if only the compiler is able to use it. Patch by Dong-hee Na. - Addressed three compiler warnings found by undefined behavior sanitizer (ubsan). IDLE - Fix reporting offset of the RE error in searchengine. - Get docstrings for IDLE calltips more often by using inspect.getdoc. - Mostly finish using ttk widgets, mainly for editor, settings, and searches. Some patches by Mark Roseman. - Use ‘IDLE Shell’ as shell title - Rewrite the Calltips doc section. - In calltips, stop reminding that ‘/’ marks the end of positional-only arguments. - Typing opening and closing parentheses inside the parentheses of a function call will no longer cause unnecessary “flashing” off and on of an existing open call-tip, e.g. when typed in a string literal. C API - Fix potential crash in deallocating method objects when dynamically allocated PyMethodDef’s lifetime is managed through the self argument of a PyCFunction. - Py_FileSystemDefaultEncodeErrors and Py_UTF8Mode are available again in limited API. - Readjustet and reapplied patches: - CVE-2021-3177-buf_ovrfl_PyCArg_repr.patch - bpo-31046_ensurepip_honours_prefix.patch - python-3.3.0b1-fix_date_time_compiler.patch - skip_random_failing_tests.patch - sphinx-update-removed-function.patch- Add CVE-2021-3177-buf_ovrfl_PyCArg_repr.patch fixing bsc#1181126 (CVE-2021-3177) buffer overflow in PyCArg_repr in _ctypes/callproc.c, which may lead to remote code execution.- (bsc#1180125) We really don't Require python-rpm-macros package. Unnecessary dependency.- Make python39-doc building again - Add no-skipif-doctests.patch, because SLE-15 version of Sphinx doesn't know about skipif directive in doctests.- Update sphinx-update-removed-function.patch patch to the latest version in python36.- Last try before this results in an editwar: * remove importlib_resources and importlib-metadata provides/obsoletes * import importlib_resources is not the same as import importlib.resources, same for metadata * The backport packages from PyPI needed for older flavors are specified as such for setuptools or in pyproject.toml. If a package requires them they typically add them with a python version qualifier and the packages have their own version numbers.- Add patch sphinx-update-removed-function.patch to no longer call a now removed function and to make documentation build independent of the Sphinx version (bsc#1179630, gh#python/cpython#13236).- Don't require packages which break build on SLE-15 although we really don't need them (python3-python-docs-theme and python3-sphinxcontrib-qthelp).- Fix build with RPM 4.16: error: bare words are no longer supported, please use "...": x86 == ppc.- Update to the final version 3.9.0: Complete changelog with all (many) changes from previous version is on https://docs.python.org/release/3.9.0/whatsnew/3.9.html Changes from the previous RC versions (not that many) are on https://docs.python.org/release/3.9.0/whatsnew/changelog.html#changelog- Buildrequire timezone only for general flavor. It's used in this flavor for the test suite.- Update to 3.9.0rc1: * Core and Builtins - bpo-38156: Handle interrupts that come after EOF correctly in PyOS_StdioReadline. * Library - bpo-41497: Fix potential UnicodeDecodeError in dis module. - bpo-41490: Update ensurepip to install pip 20.2.1 and setuptools 49.2.1. - bpo-41467: On Windows, fix asyncio recv_into() return value when the socket/pipe is closed (BrokenPipeError): return 0 rather than an empty byte string (b''). - bpo-41425: Make tkinter doc example runnable. - bpo-41384: Raise TclError instead of TypeError when an unknown option is passed to tkinter.OptionMenu. - bpo-38731: Fix NameError in command-line interface of py_compile. - bpo-41317: Use add_done_callback() in asyncio.loop.sock_accept() to unsubscribe reader early on cancellation. - bpo-41364: Reduce import overhead of uuid. - bpo-41341: Recursive evaluation of typing.ForwardRef in get_type_hints. - bpo-41182: selector: use DefaultSelector based upon implementation - bpo-40726: Handle cases where the end_lineno is None on ast.increment_lineno(). * Documentation - bpo-41045: Add documentation for debug feature of f-strings. - bpo-41314: Changed the release when from __future__ import annotations becomes the default from 4.0 to 3.10 (following a change in PEP 563). * Windows - bpo-41492: Fixes the description that appears in UAC prompts. - bpo-40948: Improve post-install message to direct people to the “py” command. - bpo-41412: The installer will now fail to install on Windows 7 and Windows 8. Further, the UCRT dependency is now always downloaded on demand. - bpo-40741: Update Windows release to include SQLite 3.32.3. * IDLE - bpo-41468: Improve IDLE run crash error message (which users should never see). - bpo-41373: Save files loaded with no line ending, as when blank, or different line endings, by setting its line ending to the system default. Fix regression in 3.8.4 and 3.9.0b4.- Synchronize formatting and fixes with python38.- Increase testsuite timeout to account for super long running test_peg_generator- Removed CVE-2019-20907_tarfile-inf-loop.patch: fixed in upstream - Removed recursion.tar: contained in upstream - Update to 3.9.0b5: - bpo-41304: Fixes python3x._pth being ignored on Windows, caused by the fix for bpo-29778 (CVE-2020-15801). - bpo-41162: Audit hooks are now cleared later during finalization to avoid missing events. - bpo-29778: Ensure python3.dll is loaded from correct locations when Python is embedded (CVE-2020-15523). - bpo-39603: Prevent http header injection by rejecting control characters in http.client.putrequest(…). - bpo-41295: Resolve a regression in CPython 3.8.4 where defining “__setattr__” in a multi-inheritance setup and calling up the hierarchy chain could fail if builtins/extension types were involved in the base types. - bpo-41247: Always cache the running loop holder when running asyncio.set_running_loop. - bpo-41252: Fix incorrect refcounting in _ssl.c’s _servername_callback(). - bpo-41215: Use non-NULL default values in the PEG parser keyword list to overcome a bug that was ' preventing Python from being properly compiled when using the XLC compiler. Patch by Pablo Galindo. - bpo-41218: Python 3.8.3 had a regression where compiling with ast.PyCF_ALLOW_TOP_LEVEL_AWAIT would aggressively mark list comprehension with CO_COROUTINE. Now only list comprehension making use of async/await will tagged as so. - bpo-41175: Guard against a NULL pointer dereference within bytearrayobject triggered by the bytearray() + bytearray() operation. - bpo-39960: The “hackcheck” that prevents sneaking around a type’s __setattr__() by calling the superclass method was rewritten to allow C implemented heap types. - bpo-41288: Unpickling invalid NEWOBJ_EX opcode with the C implementation raises now UnpicklingError instead of crashing. - bpo-39017: Avoid infinite loop when reading specially crafted TAR files using the tarfile module (CVE-2019-20907, bsc#1174091). - bpo-41235: Fix the error handling in ssl.SSLContext.load_dh_params(). - bpo-41207: In distutils.spawn, restore expectation that DistutilsExecError is raised when the command is not found. - bpo-39168: Remove the __new__ method of typing.Generic. - bpo-41194: Fix a crash in the _ast module: it can no longer be loaded more than once. It now uses a global state rather than a module state. - bpo-39384: Fixed email.contentmanager to allow set_content() to set a null string. - bpo-41300: Save files with non-ascii chars. Fix regression released in 3.9.0b4 and 3.8.4. - bpo-37765: Add keywords to module name completion list. Rewrite Completions section of IDLE doc. - bpo-40170: Revert PyType_HasFeature() change: it reads again directly the PyTypeObject.tp_flags member when the limited C API is not used, rather than always calling PyType_GetFlags() which hides implementation details.- Add CVE-2019-20907_tarfile-inf-loop.patch fixing bsc#1174091 (CVE-2019-20907, bpo#39017) avoiding possible infinite loop in specifically crafted tarball. Add recursion.tar as a testing tarball for the patch.- Changed bpo-31046_ensurepip_honours_prefix.patch to include fix from py3.8- Spec file fixes - Re-added subprocess-raise-timeout.patch: now compatible - Removed bpo34022-stop_hash-based_invalidation_w_SOURCE_DATE_EPOCH.patch: contained in upstream- Fix minor issues found in the staging.- Do not set ourselves as primary interpreter- Update to 3.9.0b4: - PEP 584, Union Operators in dict - PEP 585, Type Hinting Generics In Standard Collections - PEP 593, Flexible function and variable annotations - PEP 602, Python adopts a stable annual release cadence - PEP 615, Support for the IANA Time Zone Database in the Standard Library - PEP 616, String methods to remove prefixes and suffixes - PEP 617, New PEG parser for CPython - bpo#38379, garbage collection does not block on resurrected objects; - bpo#38692, os.pidfd_open added that allows process management without races and signals; - bpo#39926, Unicode support updated to version 13.0.0; - bpo#1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore; - A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall; - A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489; - A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384. - Remove upstreamed patches: - F00102-lib64.patch - SUSE-FEDORA-multilib.patch - OBS_dev-shm.patch - subprocess-raise-timeout.patch - bpo36302-sort-module-sources.patch - bpo40784-Fix-sqlite3-deterministic-test.patch- Update pre_checkin.sh and regenerate- Convert few dependencies to their pkgconfig counterparts- Remove release requirement on libpython, it is not really needed to be equal as the abi changes with versions- Add provides python3-bla on all the subpkgs in case we are primary provider of the functionality- Remove unversioned files from devel subpkg too - Remove main python3 files from -base based whether we are primary interpreter or not - Fix idle to be co-installable - Add condition to be primary to provide/obsolete python3-* - Fix doc to build in versioned folder so the pythons can be installed next to each other- Revert the full versioning of calls on the macros. These are generic so they should really just call python3 X- For the doc package we can build with generic flavor, we don't need the our-interpreter based one- Add provides for pytohn3X-typing/etc to allow BR on those still to work when needed- Change macros.python3 to use full versioned 3.8 instead of just 3 for python interpreter- Reduce some now unused conditionals- Redux the -base dependencies to match up pre-merge layout- Generate baselibs in pre-checkin too- Generate the importlib-failed using pre_checking again - Add back the information about skipped tests on the pre_checkin output- Use %python_pkg_name instead of hardcoding python3 where applicable - Sort out preamble with spec-cleaner- Calculate required variables instead of relying on their continuous manual update- Fix the -base module build again to generate only the deps we need- Replace OBS_dev-shm.patch with the upstream PR#20944- Use the %{python_pkg_name} on more places to allow easier multiversioning - Switch to _multibuild approach for easier maintenance of this package. All is now in one spec file with 3 conditionals: * bcond_with base * bcond_with doc * bcond_with general- add requires python3-base on libpython subpackage (bsc#1167008)- build against Sphinx 2.x until python is compatible with Sphinx 3.x (see gh#python/cpython#19397, bpo#40204)- Fix build with SQLite 3.32 (bpo#40783) add bpo40784-Fix-sqlite3-deterministic-test.patch- Update to version 3.8.3: - Complete list of changes is available at https://docs.python.org/release/3.8.3/whatsnew/changelog.html#python-3-8-3-final, but most of them are just bugfixes. - Removed patch CVE-2020-8492-urllib-ReDoS.patch: contained in upstream- Add #!BuildIgnore: gdk-pixbuf-loader-rsvg to python3 SPEC- Add patch bsc1167501-invalid-alignment.patch (bsc#1167501, bpo#40052) to fix alignment in abstract.h header file.- Update list of skipped tests for qemu linux-user build, test_setegid (test.test_os.PosixUidGidTests) is confusing it- Update to 3.8.2: - Complete list of changes is available at https://docs.python.org/release/3.8.2/whatsnew/changelog.html#python-3-8-2-final, but most of them are just bugfixes. - Updated patches: - F00102-lib64.patch - OBS_dev-shm.patch - SUSE-FEDORA-multilib.patch - subprocess-raise-timeout.patch- Add CVE-2020-8492-urllib-ReDoS.patch fixing the security bug "Python urrlib allowed an HTTP server to conduct Regular Expression Denial of Service (ReDoS)" (bsc#1162367)- Add Requires: libpython%{so_version} == %{version}-%{release} to python3-base to keep both packages always synchronized (bsc#1162224).- Do not pull in bluez in base again, explain the cycle, it needs to be solved by bluez maintainer for us by providing just the headers separately- Reame idle icons to idle3 in order to not conflict with python2 variant of the package * renamed the icons * renamed icon load in desktop file- Add importlib_resources provide/obsolete as it is integral part of the lang since 3.7 release- Add -fno-semantic-interposition as it brings speed up: https://fedoraproject.org/wiki/Changes/PythonNoSemanticInterpositionSpeedup- Update to 3.8.1: - This is mainly bugfix release and no significant changes to API are expected. The full changelog is available on https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-1 - Remove bpo-38688_shutil.copytree_prevent-infinite-recursion.patch, which is included in the upstream tarball.- Add bpo-31046_ensurepip_honours_prefix.patch which makes ensurepip to honour the value of $(prefix). Proposed fix for bpo#31046..- Move bluez-devel dependency to base as it is needed for socket.AF_BLUETOOTH and otherwise does not work- Reintroduce QtHelp with the help of the new BR python-sphinxcontrib-qthelp.- Fix SUSE-FEDORA-multilib.patch, the platform agnostic infix for library installation is "lib", not "dir".- Move idle subpackage build from python3-base to python3. appstream-glib required for packaging introduces considerable extra dependencies and a build loop via rust/librsvg. - Correct installation of idle IDE icons: + idle.png is not the target directory + non-GNOME-specific icons belong into icons/hicolor - Add required Name key to idle3 desktop file- Update to the final release 3.8.0. . - New Features: - Assignment expressions - Positional-only parameters - Parallel filesystem cache for compiled bytecode files - Debug build uses the same ABI as release build - f-strings support = for self-documenting expressions and debugging - PEP 578: Python Runtime Audit Hooks - PEP 587: Python Initialization Configuration - Vectorcall: a fast calling protocol for CPython - Pickle protocol 5 with out-of-band data buffers - New modules: - importlib.metadata - Improved modules: - ast asyncio, builtins, collections, curses, ctypes, datetime, functools, gc, gettext, gzip, idelib and IDLE, inspect, io, json.tool, math, mmap, multiprocessing, os, os.path, pathlib, pickle, plistlib, py_compile, shlex, shutil, socket, ssl, statistics, sys, tarfile, threading, tokenize, tkinter, time, typing, unicodedata, unittest, venv, weakref, xml - C API improvements - bdist_winnst command has been deprecated (use bdist_wheel) - https://docs.python.org/3.8/whatsnew/3.8.html remains rest of changes including documentation on how to port your programs to the current version of Python.- Add idle3.appdata.xml and idle3.desktop (originally from Fedora) to make Idle3 full GUI desktop application. (bsc#1153830)- Drop intltool from BuildRequires. Doesn't appear to be used.- Add folder version to allow tarball downloads even for beta/rc releases- Revert patches from Fedora (F00102-lib64.patch and F00251-change-user-install-location.patch) into their original prisitine Fedora versions, SUSE-FEDORA-multilib.patch refreshed accordingly.- Correct quotation of platsubdir in Lib/distutils/command/install.py- Replace python-3.6.0-multilib.patch with two patches from Fedora (F00102-lib64.patch and F00251-change-user-install-location.patch), and our own SUSE-FEDORA-multilib.patch to allow better cooperation with Fedora and better upstreaming. - Add OBS_dev-shm.patch fixing bpo#38377- Pull in just gettext and let solver to sort out between: gettext-runtime-mini and gettext-runtime- Update to 3.8.0rc1. Overall changes from 3.7: - PEP 572, Assignment expressions - PEP 570, Positional-only arguments - PEP 587, Python Initialization Configuration (improved embedding) - PEP 590, Vectorcall: a fast calling protocol for CPython - PEP 578, Runtime audit hooks - PEP 574, Pickle protocol 5 with out-of-band data - Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict) - Parallel filesystem cache for compiled bytecode - Debug builds share ABI as release builds, also the 'm' ABI tag was removed (irrelevant since 3.4), bpo#36707 - f-strings support a handy = specifier for debugging - continue is now legal in finally: blocks - on Windows, the default asyncio event loop is now ProactorEventLoop - on macOS, the spawn start method is now used by default in multiprocessing - multiprocessing can now use shared memory segments to avoid pickling costs between processes - typed_ast is merged back to CPython - LOAD_GLOBAL is now 40% faster - pickle now uses Protocol 4 by default, improving performance - Refreshed patches: - CVE-2019-5010-null-defer-x509-cert-DOS.patch - python-3.3.0b1-fix_date_time_compiler.patch - python-3.6.0-multilib.patch - subprocess-raise-timeout.patch- Add bpo36302-sort-module-sources.patch (boo#1041090)- Try harder obsoleting importlib-metadata- Update to 3.8.0b4: Many bugfixes, full list on https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-beta-4- Re-enable test_threading on aarch64- Remove xrpm from subpackage tk description- Update to 3.8.0b3: Many bugfixes, full list on https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-beta-3 - Patches reapplied: - python-3.3.0b1-fix_date_time_compiler.patch - python-3.3.0b1-test-posix_fadvise.patch - python-3.6.0-multilib.patch - subprocess-raise-timeout.patch- Add Provides: python3-importlib-metadata- Update to 3.8.0b2: Many bugfixes, full list on https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-beta-2 - Patches included in upstream: - bpo-37169_PyObject_IsFreed.patch - Patches reapplied: - 00251-change-user-install-location.patch - distutils-reproducible-compile.patch - python-3.3.0b1-localpath.patch - python-3.6.0-multilib.patch- Update list of skipped tests for qemu linux-user build - Don't do profiling in qemu linux-user build- Update to 3.8.0b1 (changes since 3.7.*): - PEP 572, Assignment expressions - PEP 570, Positional-only arguments - PEP 587, Python Initialization Configuration (improved embedding) - PEP 590, Vectorcall: a fast calling protocol for CPython - PEP 578, Runtime audit hooks - PEP 574, Pickle protocol 5 with out-of-band data - Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict) - Parallel filesystem cache for compiled bytecode - Debug builds share ABI as release builds - f-strings support a handy = specifier for debugging - continue is now legal in finally: blocks - multiprocessing can now use shared memory segments to avoid pickling costs between processes - typed_ast is merged back to CPython - LOAD_GLOBAL is now 40% faster - pickle now uses Protocol 4 by default, improving performance - Remove patches which were included in the upstream: - 00251-change-user-install-location.patch - 00316-mark-bdist_wininst-unsupported.patch - CVE-2019-9947-no-ctrl-char-http.patch - raise_SIGING_not_handled.patch- Set _lto_cflags to nil as the package is using LTO via --enable-lto. That will prevent to propage LTO for Python modules that are built in a separate package.- Update to 3.8.0.a3: - PEP 572: Assignment Expressions. - Other (mostly small) changes are on https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-alpha-3- bsc#1130840 (CVE-2019-9947): add CVE-2019-9947-no-ctrl-char-http.patch Address the issue by disallowing URL paths with embedded whitespace or control characters through into the underlying http client request. Such potentially malicious header injection URLs now cause a ValueError to be raised.- Fix metadata of patches. - Rename boo1071941-make-install-in-sep-loc.patch to 00251-change-user-install-location.patch which is the original name, so it can be looked up in the Fedora VCS.- Mark distutils bdist_wininst command unsupported with 00316-mark-bdist_wininst-unsupported.patch - Remove Windows bdist_wininst executables from runtime package- Update to 3.7.3, which is the maintenance release without any significant changes in API. - Updated patches: - CVE-2019-5010-null-defer-x509-cert-DOS.patch - distutils-reproducible-compile.patch - python-3.3.0b1-fix_date_time_compiler.patch - python-3.6.0-multilib.patch - raise_SIGING_not_handled.patch- Remove building of Qt Develop help files.- Return distutils-reproducible-compile.patch which is still missing (still unfinished bpo#29708).- Update to 3.8.0a2: * List of all (mostly small) changes are on https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-alpha-2- Build nis module again.- Update to 3.8.0a1: * The most visible change so far is probably the implementation of PEP 572: Assignment Expressions. For a detailed list of changes, see: https://docs.python.org/3.8/whatsnew/changelog.html * Recover building of nis module properly in python3 package - Update patches: * CVE-2019-5010-null-defer-x509-cert-DOS.patch * python-3.3.0b1-fix_date_time_compiler.patch * python-3.3.0b1-test-posix_fadvise.patch * python-3.6.0-multilib.patch * raise_SIGING_not_handled.patch- Put LICENSE file where it belongs (bsc#1121852)- bsc#1122191: add CVE-2019-5010-null-defer-x509-cert-DOS.patch fixing bpo-35746. An exploitable denial-of-service vulnerability exists in the X509 certificate parser of Python.org Python 2.7.11 / 3.7.2. A specially crafted X509 certificate can cause a NULL pointer dereference, resulting in a denial of service. An attacker can initiate or accept TLS connections using crafted certificates to trigger this vulnerability.- Do not require full gettext in order to avoid pulling in the glib2 as a dependency- Update to 3.7.2: * bugfix release: https://docs.python.org/3.7/whatsnew/changelog.html#changelog- Stop applying python-3.6.0-multilib-new.patch (which is still WIP), and apply the old proven python-3.6.0-multilib.patch instead.- Use upstream-recommended %{_rpmconfigdir}/macros.d directory for the rpm macros.- Upgrade to 3.7.2rc1: * bugfix release, for the full list of all changes see https://docs.python.org/3.7/whatsnew/changelog.html#changelog - Make run of the test suite more verbose- Write summaries without em dashes.- Remove python-3.3.0b1-curses-panel.patch it is unnecessary anymore. - Add boo1071941-make-install-in-sep-loc.patch to make pip and distutils in user environment install into separate location (boo#1071941) Set values of prefix and exec_prefix in distutils install command to /usr/local if executable is /usr/bin/python* and RPM build is not detected to make pip and distutils install into separate location - Remove finally python-3.3.3-skip-distutils-test_sysconfig_module.patch - Remove distutils-reproducible-compile.patch which doesn't make really much difference in reproducibility (see gh#python/cpython#8057 and discussion there).- Rename Stop_hash-based_invalidation_w_SOURCE_DATE_EPOCH.patch to bpo34022-stop_hash-based_invalidation_w_SOURCE_DATE_EPOCH.patch- Add dependency on bluez-devel to build support for Bluetooth (boo#1109998)- Add devhelp subpackage and split qthelp into another subpackage.- Remove python-3.0b1-record-rpm.patch and Python-3.0b1-record-rpm.patch, as they are not needed anymore- Switch off test_threading for optimization builds.- Update to python-3.7.1. This is just a brief overview, complete changelog available at https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-1-final: Library bpo-34970: Protect tasks weak set manipulation in asyncio.all_tasks() - Patches already accepted upstream are removed: * 00307-allow-to-call-Py_Main-after-Py_Initialize.patch * 00308-tls-1.3.patch - New patches added: * Stop_hash-based_invalidation_w_SOURCE_DATE_EPOCH.patch * raise_SIGING_not_handled.patch - All other patches refreshed via quilt.- Add raise_SIGING_not_handled.patch to fix bsc#1094814- Add patch to fix importlib return types: * python3-imp-returntype.patch- bpo-34022 still not completely fixed, so we have to keep excluding test_cmd_line_script, test_multiprocessing_main_handling, and test_runpy from the test suite.- Update to python 3.7.1~rc2: Core and Builtins bpo-34879: Fix a possible null pointer dereference in bytesobject.c. Patch by Zackery Spytz. bpo-34854: Fixed a crash in compiling string annotations containing a lambda with a keyword-only argument that doesn’t have a default value. bpo-34320: Fix dict(od) didn’t copy iteration order of OrderedDict. Library bpo-34769: Fix for async generators not finalizing when event loop is in debug mode and garbage collector runs in another thread. bpo-34922: Fixed integer overflow in the digest() and hexdigest() methods for the SHAKE algorithm in the hashlib module. bpo-34900: Fixed unittest.TestCase.debug() when used to call test methods with subtests. Patch by Bruno Oliveira. bpo-34871: Fix inspect module polluted sys.modules when parsing __text_signature__ of callable. bpo-34872: Fix self-cancellation in C implementation of asyncio.Task bpo-34819: Use a monotonic clock to compute timeouts in Executor.map() and as_completed(), in order to prevent timeouts from deviating when the system clock is adjusted. bpo-34334: In QueueHandler, clear exc_text from LogRecord to prevent traceback from being written twice. bpo-6721: Acquire the logging module’s commonly used internal locks while fork()ing to avoid deadlocks in the child process. bpo-34172: Fix a reference issue inside multiprocessing.Pool that caused the pool to remain alive if it was deleted without being closed or terminated explicitly. Documentation bpo-32174: chm document displays non-ASCII charaters properly on some MBCS Windows systems. Tests bpo-32962: Fixed test_gdb when Python is compiled with flags - mcet -fcf-protection -O0. C API bpo-34910: Ensure that PyObject_Print() always returns -1 on error. Patch by Zackery Spytz.- Add Stop_hash-based_invalidation_w_SOURCE_DATE_EPOCH.patch to fix problems with SOURCE_DATE_EPOCH variable (bpo-34022)- Add patch to fix build with tls1.3 supported openssl * 00308-tls-1.3.patch - Add patch to fix Py_Main calls after Py_initialize * 00307-allow-to-call-Py_Main-after-Py_Initialize.patch- Add -fwrapv to OPTS, which is default for python3 anyway See for example https://github.com/zopefoundation/persistent/issues/86 for bugs which are caused by avoiding it.- Fix ownership of _contextvars, _queue, and _xxtestfuzz- Switch off LTO for distros with older GCC - Fix %files- Add dependency over libuuid-devel- update to python 3.7.0 Complete overview of changes is available on https://docs.python.org/3/whatsnew/3.7.html, these are just highlights: * PEP 563, postponed evaluation of type annotations. * async and await are now reserved keywords. * New library modules: contextvars: PEP 567 – Context Variables dataclasses: PEP 557 – Data Classes importlib.resources * New built-in features: PEP 553, the new breakpoint() function. * Python data model improvements: PEP 562, customization of access to module attributes. PEP 560, core support for typing module and generic types. the insertion-order preservation nature of dict objects has been declared to be an official part of the Python language spec. * Significant improvements in the standard library: The asyncio module has received new features, significant usability and performance improvements. The time module gained support for functions with nanosecond resolution. * CPython implementation improvements: Avoiding the use of ASCII as a default text encoding: PEP 538, legacy C locale coercion PEP 540, forced UTF-8 runtime mode PEP 552, deterministic .pycs the new development runtime mode PEP 565, improved DeprecationWarning handling * C API improvements: PEP 539, new C API for thread-local storage * Documentation improvements: PEP 545, Python documentation translations New documentation translations: Japanese, French, and Korean. - drop python3-sorted_tar.patch - drop 0001-allow-for-reproducible-builds-of-python-packages.patch - refresh python-3.6.0-multilib-new.patch - refresh subprocess-raise-timeout.patch * new C API for thread-local storage * Deterministic pyc files * Built-in breakpoint() * Data Classes * Core support for typing module and generic types * Customization of access to module attributes * Postponed evaluation of annotations * Time functions with nanosecond resolution * Improved DeprecationWarning handling * Context Variables * Avoiding the use of ASCII as a default text encoding (PEP 538, legacy C locale coercion and PEP 540, forced UTF-8 runtime mode) * The insertion-order preservation nature of dict objects is now an official part of the Python language spec. * Notable performance improvements in many areas.- disable lto with gcc versions below 7 (results in link failures)- Use faster find subcommand execution strategies.- Do not mention the testsuite disabling in opts as it was moved to main pkg so base is test-free- As we run in main python package do not generate the pre_checkin from both now- Move the tests from base to generic package wrt bsc#1088573 * We still fail the whole distro if python3 is not build * The other archs than x86_64 took couple of hours to unblock build of other software, this way we work around the issue - Some tests are still run in -base for the LTO tweaking, but at least it is not run twice- update to 3.6.5 * bugfix release * see Misc/NEWS for details - drop ctypes-pass-by-value.patch - drop fix-localeconv-encoding-for-LC_NUMERIC.patch - refresh python-3.6.0-multilib-new.patch- Created %so_major and %so_minor macros - Put Tools/gdb/libpython.py script into proper place and ship it with devel subpackage.- ctypes-pass-by-value.patch: Fix pass by value for structs on aarch64- Add python3-sorted_tar.patch (boo#1081750)- Drop python3-tk and python3-idle recommends to reduce python3 always pulling X stack bsc#1081751- Add patch to fix glibc 2.27 fail bsc#1079761: * fix-localeconv-encoding-for-LC_NUMERIC.patch- Update skip_random_failing_tests.patch (for PowerPC) to avoid test_call_later failure- move XML modules and python3-xml provide to python3-base (fixes bsc#1077230) - move ensurepip to base- Add skip_random_failing_tests.patch only for PowerPC- update to 3.6.4 * bugfix release, over a hundred bugs fixed * see Misc/NEWS for details - drop upstreamed python3-ncurses-6.0-accessors.patch - drop PYTHONSTARTUP hooks that cause spurious startup errors * fixes bsc#1070738 * the relevant feature (REPL history) is now built into Python itself- Install 2to3-%{python_version} executable (override defattr of the -tools package). 2to3 (unversioned) is a symlink and does not carry permissions (bsc#1070853).- move 2to3 to python3-tools package- update to 3.6.3 * bugfix release, over a hundred bugs fixed * see Misc/NEWS for details - drop upstreamed 0001-3.6-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-3093.patch- drop python-2.7-libffi-aarch64.patch: this patches the intree copy of libffi which is unused/deleted in the line afterwards - fix build against system libffi: include flags weren't set so it actually used the in-tree libffi headers.- Fix test broken with OpenSSL 1.1 (bsc#1042670) * add 0001-3.6-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-3093.patch- Update RPM group for python documentation.- fix missing %{?armsuffix}- distutils-reproducible-compile.patch: ensure distutils order files before compiling, which works around bsc#1049186- Add libnsl-devel build requires for glibc obsoleting libnsl- update to 3.6.2 * bugfix release, over a hundred bugs fixed * see Misc/NEWS for details - drop upstreamed test-socket-aead-kernel49.patch - add Provides: python3-typing (fixes bsc#1050653) - drop duplicate Provides: python3- drop db-devel from requirements- Add missing link to python library in config dir (bsc#1040164)- update to 3.6.1 * bugfix release, over a hundred bugs fixed * never add import location's parent directory to sys.path * switch to git for version control, build changes related to that * fix "failed to get random numbers" on old kernels (bsc#1029902) * several crashes and memory leaks corrected * f-string are no longer accepted as docstrings- prevent regenerating AST at build-time more robustly - add "--without profileopt" and "--without testsuite" options to python3-base to allow short circuiting when working on the package- Add 0001-allow-for-reproducible-builds-of-python-packages.patch upstream https://github.com/python/cpython/pull/296- reenable test_socket with AEAD patch (test-socket-aead-kernel49.patch) - reintroduce %py3_soflags macro (and better named %cpython3_soabi equivalent)- update to 3.6.0 * PEP 498 Formated string literals * PEP 515 Underscores in numeric literals * PEP 526 Syntax for variable annotations * PEP 525 Asynchronous generators * PEP 530 Asynchronous comprehensions * PEP 506 New "secrets" module for safe key generation * less memory consumed by dicts * dtrace and systemtap support * improved asyncio module * better defaults for ssl * new hashing algorithms in hashlib * bytecode format changed to allow more optimizations * "async" and "await" are on track to be reserved words * StopIteration from generators is deprecated * support for openssl < 1.0.2 is deprecated * os.urandom now blocks when getrandom() blocks * huge number of new features, bugfixes and optimizations * see https://docs.python.org/3.6/whatsnew/3.6.html for details - rework multilib patch: drop Python-3.5.0-multilib.patch, implement upstreamable python-3.6.0-multilib-new.patch - refresh python-3.3.0b1-localpath.patch, subprocess-raise-timeout.patch - drop upstreamed Python-3.5.1-fix_lru_cache_copying.patch - finally drop python-2.6b1-canonicalize2.patch that was not applied in source and only kept around in case we needed it in the future. (which we don't, as it seems) - update import_failed map and baselibs - build ctypes against system libffi (buildrequire libffi-devel in python3-base) - add new key to keyring (signed by keys already in keyring) - introduced common configure section between python3 and python3-base - moved pyconfig.h and Makefile to devel subpackage as distutils no longer need it at runtime - added python-rpm-macros dependency, regenerated macros file, drop macros.python3.py because it is not used now - improve summaries and descriptions (fixes bsc#917607) - enabled Link-Time Optimization, see what happens - including skipped_tests.py in pre_checkin.sh run - run specs through spec-cleaner, rearrange sections- move _hashlib and _ssl modules and tests to python3-base - recommend python3- Skip test_asyncio under qemu_user_space_build- Add Python-3.5.1-fix_lru_cache_copying.patch Fix copying the lru_cache() wrapper object. Fixes deep-copying lru_cache regression, which worked on previous versions of python but fails on python 3.5. This fixes a bunch of packages in devel:languages:python3. See: https://bugs.python.org/issue25447- Build the docs in .qch format as well- update to 3.5.1 * bugfix-only release, dozens of bugs fixed - Drop upstreamed Python-3.5.0-_Py_atomic_xxx-symbols.patch - "Python3" to "Python 3" in summary * This seems cleaner and fixes and rpmlint warning- Add Python-3.5.0-_Py_atomic_xxx-symbols.patch This fixes a build error for many packages that use the Python, C-API. This patch is already accepted upstream and is slated to appear in python 3.5.1.- update to 3.5.0 * coroutines with async/await syntax * matrix multiplication operator `@` * unpacking generalizations * new modules `typing` and `zipapp` * type annotations * .pyo files replaced by custom suffixes for optimization levels in __pycache__ * support for memory BIO in ssl module * performance improvements in several modules * and many more - removals and behavior changes * deprecated `__version__` is removed * support for .pyo files was removed * system calls are auto-retried on EINTR * bare generator expressions in function calls now cause SyntaxError (change "f(x for x in i)" to "f((x for x in i))" to fix) * removed undocumented `format` member of private `PyMemoryViewObject` struct * renamed `PyMemAllocator` to `PyMemAllocatorEx` - redefine %dynlib macro to reflect that modules now have arch+os as part of name - module `time` is now built-in - dropped upstreamed patches: python-3.4.1-fix-faulthandler.patch python-3.4.3-test-conditional-ssl.patch python-fix-short-dh.patch (also dropped dh2048.pem required for this patch) - updated patch Python-3.3.0b2-multilib.patch to Python-3.5.0-multilib.patch - python-ncurses-6.0-accessors.patch taken from python 2 to fix build failure with new gcc + ncurses- Add python3-ncurses-6.0-accessors.patch: Fix build with NCurses 6.0 and OPAQUE_WINDOW set to 1.- improve import_failed hook to do the right thing when invoking missing modules with "python3 -m modulename" (boo#942751)- Build with --enable-loadable-sqlite-extensions to make it works as geospatial database.- Fix source list for previous change (add dh2048.pem).- dh2048.pem: added generated 2048 dh parameter set to fix ssl test (bsc#935856) - python-fix-short-dh.patch: replace the 512 bits dh parameter set by 2048 bits to fix build with new openssl 1.0.2c (bsc#935856)- ctypes-libffi-aarch64.patch: remove upstreamed patch - python-2.7-libffi-aarch64.patch: Fix argument passing in libffi for aarch64- drop the PDF subpackage (removes the massive texlive dependency, and most likely nobody is using the PDFs anyway)- python-3.4.3-test-conditional-ssl.patch - restore tests failing because test_urllib was unconditionally importing ssl (without really needing it) - restore functionality of multilib patch - drop libffi-ppc64le.diff because upstream completely changed everything yet again (sorry ppc64 folks :| )- Update to version 3.4.3 - Drop upstreamed CVE-2014-4650-CGIHTTPServer-traversal.patch (bpo#21766)- Add python-3.4.1-fix-faulthandler.patch, upstream patch for bogus faulthandler which fails with GCC 5.- asyncio has been merged in python3 main package; provide and obsolete it - Remove obsolete AUTHORS section - Remove redundant %clean section- Only pkgconfig(x11) is required for build, not the whole set of packages provided by xorg-x11-devel metapackage.- add %python3_version rpm macro for Fedora compatibility - add missing argument in import_failed, rename Novell Bugzilla to SUSE Bugzillah04-armsrv1 1720612776  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABC3.12.4-150600.3.3.13.12.4-150600.3.3.1     python3.12MiscACKSHISTORYNEWSPortingREADMEREADME.coverityREADME.valgrindSpecialBuilds.txtcoverity_model.cexternals.spdx.jsonindent.propython-config.inpython-config.sh.inpython-embed.pc.inpython.manpython.pc.insbom.spdx.jsonstable_abi.tomlsvnmap.txtvalgrind-python.suppvgrindefshtml_downloads6dc1f3f4f0e6ca13cb42ddf4d6cbc8aftzinfo_examples.py_imageshashlib-blake2-tree.pngkde_example.pnglogging_flow.pngpathlib-inheritance.pngtk_msg.pngturtle-star.pngwin_installer.png_sourcesabout.rst.txtbugs.rst.txtc-apiabstract.rst.txtallocation.rst.txtapiabiversion.rst.txtarg.rst.txtbool.rst.txtbuffer.rst.txtbytearray.rst.txtbytes.rst.txtcall.rst.txtcapsule.rst.txtcell.rst.txtcode.rst.txtcodec.rst.txtcomplex.rst.txtconcrete.rst.txtcontextvars.rst.txtconversion.rst.txtcoro.rst.txtdatetime.rst.txtdescriptor.rst.txtdict.rst.txtexceptions.rst.txtfile.rst.txtfloat.rst.txtframe.rst.txtfunction.rst.txtgcsupport.rst.txtgen.rst.txthash.rst.txtimport.rst.txtindex.rst.txtinit.rst.txtinit_config.rst.txtintro.rst.txtiter.rst.txtiterator.rst.txtlist.rst.txtlong.rst.txtmapping.rst.txtmarshal.rst.txtmemory.rst.txtmemoryview.rst.txtmethod.rst.txtmodule.rst.txtnone.rst.txtnumber.rst.txtobjbuffer.rst.txtobject.rst.txtobjimpl.rst.txtperfmaps.rst.txtrefcounting.rst.txtreflection.rst.txtsequence.rst.txtset.rst.txtslice.rst.txtstable.rst.txtstructures.rst.txtsys.rst.txttuple.rst.txttype.rst.txttypehints.rst.txttypeobj.rst.txtunicode.rst.txtutilities.rst.txtveryhigh.rst.txtweakref.rst.txtcontents.rst.txtcopyright.rst.txtdistributingindex.rst.txtextendingbuilding.rst.txtembedding.rst.txtextending.rst.txtindex.rst.txtnewtypes.rst.txtnewtypes_tutorial.rst.txtwindows.rst.txtfaqdesign.rst.txtextending.rst.txtgeneral.rst.txtgui.rst.txtindex.rst.txtinstalled.rst.txtlibrary.rst.txtprogramming.rst.txtwindows.rst.txtglossary.rst.txthowtoannotations.rst.txtargparse.rst.txtclinic.rst.txtcporting.rst.txtcurses.rst.txtdescriptor.rst.txtenum.rst.txtfunctional.rst.txtgdb_helpers.rst.txtindex.rst.txtinstrumentation.rst.txtipaddress.rst.txtisolating-extensions.rst.txtlogging-cookbook.rst.txtlogging.rst.txtmro.rst.txtperf_profiling.rst.txtpyporting.rst.txtregex.rst.txtsockets.rst.txtsorting.rst.txtunicode.rst.txturllib2.rst.txtinstallingindex.rst.txtlibrary2to3.rst.txt__future__.rst.txt__main__.rst.txt_thread.rst.txtabc.rst.txtaifc.rst.txtallos.rst.txtarchiving.rst.txtargparse.rst.txtarray.rst.txtast.rst.txtasyncio-api-index.rst.txtasyncio-dev.rst.txtasyncio-eventloop.rst.txtasyncio-exceptions.rst.txtasyncio-extending.rst.txtasyncio-future.rst.txtasyncio-llapi-index.rst.txtasyncio-platforms.rst.txtasyncio-policy.rst.txtasyncio-protocol.rst.txtasyncio-queue.rst.txtasyncio-runner.rst.txtasyncio-stream.rst.txtasyncio-subprocess.rst.txtasyncio-sync.rst.txtasyncio-task.rst.txtasyncio.rst.txtatexit.rst.txtaudioop.rst.txtaudit_events.rst.txtbase64.rst.txtbdb.rst.txtbinary.rst.txtbinascii.rst.txtbisect.rst.txtbuiltins.rst.txtbz2.rst.txtcalendar.rst.txtcgi.rst.txtcgitb.rst.txtchunk.rst.txtcmath.rst.txtcmd.rst.txtcmdline.rst.txtcode.rst.txtcodecs.rst.txtcodeop.rst.txtcollections.abc.rst.txtcollections.rst.txtcolorsys.rst.txtcompileall.rst.txtconcurrency.rst.txtconcurrent.futures.rst.txtconcurrent.rst.txtconfigparser.rst.txtconstants.rst.txtcontextlib.rst.txtcontextvars.rst.txtcopy.rst.txtcopyreg.rst.txtcrypt.rst.txtcrypto.rst.txtcsv.rst.txtctypes.rst.txtcurses.ascii.rst.txtcurses.panel.rst.txtcurses.rst.txtcustominterp.rst.txtdataclasses.rst.txtdatatypes.rst.txtdatetime.rst.txtdbm.rst.txtdebug.rst.txtdecimal.rst.txtdevelopment.rst.txtdevmode.rst.txtdialog.rst.txtdifflib.rst.txtdis.rst.txtdistribution.rst.txtdoctest.rst.txtemail.charset.rst.txtemail.compat32-message.rst.txtemail.contentmanager.rst.txtemail.encoders.rst.txtemail.errors.rst.txtemail.examples.rst.txtemail.generator.rst.txtemail.header.rst.txtemail.headerregistry.rst.txtemail.iterators.rst.txtemail.message.rst.txtemail.mime.rst.txtemail.parser.rst.txtemail.policy.rst.txtemail.rst.txtemail.utils.rst.txtensurepip.rst.txtenum.rst.txterrno.rst.txtexceptions.rst.txtfaulthandler.rst.txtfcntl.rst.txtfilecmp.rst.txtfileformats.rst.txtfileinput.rst.txtfilesys.rst.txtfnmatch.rst.txtfractions.rst.txtframeworks.rst.txtftplib.rst.txtfunctional.rst.txtfunctions.rst.txtfunctools.rst.txtgc.rst.txtgetopt.rst.txtgetpass.rst.txtgettext.rst.txtglob.rst.txtgraphlib.rst.txtgrp.rst.txtgzip.rst.txthashlib.rst.txtheapq.rst.txthmac.rst.txthtml.entities.rst.txthtml.parser.rst.txthtml.rst.txthttp.client.rst.txthttp.cookiejar.rst.txthttp.cookies.rst.txthttp.rst.txthttp.server.rst.txti18n.rst.txtidle.rst.txtimaplib.rst.txtimghdr.rst.txtimportlib.metadata.rst.txtimportlib.resources.abc.rst.txtimportlib.resources.rst.txtimportlib.rst.txtindex.rst.txtinspect.rst.txtinternet.rst.txtintro.rst.txtio.rst.txtipaddress.rst.txtipc.rst.txtitertools.rst.txtjson.rst.txtkeyword.rst.txtlanguage.rst.txtlinecache.rst.txtlocale.rst.txtlogging.config.rst.txtlogging.handlers.rst.txtlogging.rst.txtlzma.rst.txtmailbox.rst.txtmailcap.rst.txtmarkup.rst.txtmarshal.rst.txtmath.rst.txtmimetypes.rst.txtmm.rst.txtmmap.rst.txtmodulefinder.rst.txtmodules.rst.txtmsilib.rst.txtmsvcrt.rst.txtmultiprocessing.rst.txtmultiprocessing.shared_memory.rst.txtnetdata.rst.txtnetrc.rst.txtnis.rst.txtnntplib.rst.txtnumbers.rst.txtnumeric.rst.txtoperator.rst.txtoptparse.rst.txtos.path.rst.txtos.rst.txtossaudiodev.rst.txtpathlib.rst.txtpdb.rst.txtpersistence.rst.txtpickle.rst.txtpickletools.rst.txtpipes.rst.txtpkgutil.rst.txtplatform.rst.txtplistlib.rst.txtpoplib.rst.txtposix.rst.txtpprint.rst.txtprofile.rst.txtpty.rst.txtpwd.rst.txtpy_compile.rst.txtpyclbr.rst.txtpydoc.rst.txtpyexpat.rst.txtpython.rst.txtqueue.rst.txtquopri.rst.txtrandom.rst.txtre.rst.txtreadline.rst.txtreprlib.rst.txtresource.rst.txtrlcompleter.rst.txtrunpy.rst.txtsched.rst.txtsecrets.rst.txtsecurity_warnings.rst.txtselect.rst.txtselectors.rst.txtshelve.rst.txtshlex.rst.txtshutil.rst.txtsignal.rst.txtsite.rst.txtsmtplib.rst.txtsndhdr.rst.txtsocket.rst.txtsocketserver.rst.txtspwd.rst.txtsqlite3.rst.txtssl.rst.txtstat.rst.txtstatistics.rst.txtstdtypes.rst.txtstring.rst.txtstringprep.rst.txtstruct.rst.txtsubprocess.rst.txtsunau.rst.txtsuperseded.rst.txtsymtable.rst.txtsys.monitoring.rst.txtsys.rst.txtsys_path_init.rst.txtsysconfig.rst.txtsyslog.rst.txttabnanny.rst.txttarfile.rst.txttelnetlib.rst.txttempfile.rst.txttermios.rst.txttest.rst.txttext.rst.txttextwrap.rst.txtthreading.rst.txttime.rst.txttimeit.rst.txttk.rst.txttkinter.colorchooser.rst.txttkinter.dnd.rst.txttkinter.font.rst.txttkinter.messagebox.rst.txttkinter.rst.txttkinter.scrolledtext.rst.txttkinter.tix.rst.txttkinter.ttk.rst.txttoken.rst.txttokenize.rst.txttomllib.rst.txttrace.rst.txttraceback.rst.txttracemalloc.rst.txttty.rst.txtturtle.rst.txttypes.rst.txttyping.rst.txtunicodedata.rst.txtunittest.mock-examples.rst.txtunittest.mock.rst.txtunittest.rst.txtunix.rst.txturllib.error.rst.txturllib.parse.rst.txturllib.request.rst.txturllib.robotparser.rst.txturllib.rst.txtuu.rst.txtuuid.rst.txtvenv.rst.txtwarnings.rst.txtwave.rst.txtweakref.rst.txtwebbrowser.rst.txtwindows.rst.txtwinreg.rst.txtwinsound.rst.txtwsgiref.rst.txtxdrlib.rst.txtxml.dom.minidom.rst.txtxml.dom.pulldom.rst.txtxml.dom.rst.txtxml.etree.elementtree.rst.txtxml.rst.txtxml.sax.handler.rst.txtxml.sax.reader.rst.txtxml.sax.rst.txtxml.sax.utils.rst.txtxmlrpc.client.rst.txtxmlrpc.rst.txtxmlrpc.server.rst.txtzipapp.rst.txtzipfile.rst.txtzipimport.rst.txtzlib.rst.txtzoneinfo.rst.txtlicense.rst.txtreferencecompound_stmts.rst.txtdatamodel.rst.txtexecutionmodel.rst.txtexpressions.rst.txtgrammar.rst.txtimport.rst.txtindex.rst.txtintroduction.rst.txtlexical_analysis.rst.txtsimple_stmts.rst.txttoplevel_components.rst.txttutorialappendix.rst.txtappetite.rst.txtclasses.rst.txtcontrolflow.rst.txtdatastructures.rst.txterrors.rst.txtfloatingpoint.rst.txtindex.rst.txtinputoutput.rst.txtinteractive.rst.txtinterpreter.rst.txtintroduction.rst.txtmodules.rst.txtstdlib.rst.txtstdlib2.rst.txtvenv.rst.txtwhatnow.rst.txtusingcmdline.rst.txtconfigure.rst.txteditors.rst.txtindex.rst.txtmac.rst.txtunix.rst.txtwindows.rst.txtwhatsnew2.0.rst.txt2.1.rst.txt2.2.rst.txt2.3.rst.txt2.4.rst.txt2.5.rst.txt2.6.rst.txt2.7.rst.txt3.0.rst.txt3.1.rst.txt3.10.rst.txt3.11.rst.txt3.12.rst.txt3.2.rst.txt3.3.rst.txt3.4.rst.txt3.5.rst.txt3.6.rst.txt3.7.rst.txt3.8.rst.txt3.9.rst.txtchangelog.rst.txtindex.rst.txt_staticbasic.csscaret-down.svgchangelog_search.jsclassic.csscopybutton.jsdefault.cssdoctools.jsdocumentation_options.jsfile.pngglossary.jsonjquery-3.5.1.jsjquery.jslanguage_data.jsmenu.jsminus.pngog-image.pngopensearch.xmlplus.pngpy.pngpy.svgpydoctheme.csspygments.csssearchtools.jssidebar.jsunderscore-1.13.1.jsunderscore.jsabout.htmlbugs.htmlc-apiabstract.htmlallocation.htmlapiabiversion.htmlarg.htmlbool.htmlbuffer.htmlbytearray.htmlbytes.htmlcall.htmlcapsule.htmlcell.htmlcode.htmlcodec.htmlcomplex.htmlconcrete.htmlcontextvars.htmlconversion.htmlcoro.htmldatetime.htmldescriptor.htmldict.htmlexceptions.htmlfile.htmlfloat.htmlframe.htmlfunction.htmlgcsupport.htmlgen.htmlhash.htmlimport.htmlindex.htmlinit.htmlinit_config.htmlintro.htmliter.htmliterator.htmllist.htmllong.htmlmapping.htmlmarshal.htmlmemory.htmlmemoryview.htmlmethod.htmlmodule.htmlnone.htmlnumber.htmlobjbuffer.htmlobject.htmlobjimpl.htmlperfmaps.htmlrefcounting.htmlreflection.htmlsequence.htmlset.htmlslice.htmlstable.htmlstructures.htmlsys.htmltuple.htmltype.htmltypehints.htmltypeobj.htmlunicode.htmlutilities.htmlveryhigh.htmlweakref.htmlcontents.htmlcopyright.htmldistributingindex.htmldownload.htmlextendingbuilding.htmlembedding.htmlextending.htmlindex.htmlnewtypes.htmlnewtypes_tutorial.htmlwindows.htmlfaqdesign.htmlextending.htmlgeneral.htmlgui.htmlindex.htmlinstalled.htmllibrary.htmlprogramming.htmlwindows.htmlgenindex-A.htmlgenindex-B.htmlgenindex-C.htmlgenindex-D.htmlgenindex-E.htmlgenindex-F.htmlgenindex-G.htmlgenindex-H.htmlgenindex-I.htmlgenindex-J.htmlgenindex-K.htmlgenindex-L.htmlgenindex-M.htmlgenindex-N.htmlgenindex-O.htmlgenindex-P.htmlgenindex-Q.htmlgenindex-R.htmlgenindex-S.htmlgenindex-Symbols.htmlgenindex-T.htmlgenindex-U.htmlgenindex-V.htmlgenindex-W.htmlgenindex-X.htmlgenindex-Y.htmlgenindex-Z.htmlgenindex-_.htmlgenindex-all.htmlgenindex.htmlglossary.htmlhowtoannotations.htmlargparse.htmlclinic.htmlcporting.htmlcurses.htmldescriptor.htmlenum.htmlfunctional.htmlgdb_helpers.htmlindex.htmlinstrumentation.htmlipaddress.htmlisolating-extensions.htmllogging-cookbook.htmllogging.htmlmro.htmlperf_profiling.htmlpyporting.htmlregex.htmlsockets.htmlsorting.htmlunicode.htmlurllib2.htmlindex.htmlinstallingindex.htmllibrary2to3.html__future__.html__main__.html_thread.htmlabc.htmlaifc.htmlallos.htmlarchiving.htmlargparse.htmlarray.htmlast.htmlasyncio-api-index.htmlasyncio-dev.htmlasyncio-eventloop.htmlasyncio-exceptions.htmlasyncio-extending.htmlasyncio-future.htmlasyncio-llapi-index.htmlasyncio-platforms.htmlasyncio-policy.htmlasyncio-protocol.htmlasyncio-queue.htmlasyncio-runner.htmlasyncio-stream.htmlasyncio-subprocess.htmlasyncio-sync.htmlasyncio-task.htmlasyncio.htmlatexit.htmlaudioop.htmlaudit_events.htmlbase64.htmlbdb.htmlbinary.htmlbinascii.htmlbisect.htmlbuiltins.htmlbz2.htmlcalendar.htmlcgi.htmlcgitb.htmlchunk.htmlcmath.htmlcmd.htmlcmdline.htmlcode.htmlcodecs.htmlcodeop.htmlcollections.abc.htmlcollections.htmlcolorsys.htmlcompileall.htmlconcurrency.htmlconcurrent.futures.htmlconcurrent.htmlconfigparser.htmlconstants.htmlcontextlib.htmlcontextvars.htmlcopy.htmlcopyreg.htmlcrypt.htmlcrypto.htmlcsv.htmlctypes.htmlcurses.ascii.htmlcurses.htmlcurses.panel.htmlcustominterp.htmldataclasses.htmldatatypes.htmldatetime.htmldbm.htmldebug.htmldecimal.htmldevelopment.htmldevmode.htmldialog.htmldifflib.htmldis.htmldistribution.htmldoctest.htmlemail.charset.htmlemail.compat32-message.htmlemail.contentmanager.htmlemail.encoders.htmlemail.errors.htmlemail.examples.htmlemail.generator.htmlemail.header.htmlemail.headerregistry.htmlemail.htmlemail.iterators.htmlemail.message.htmlemail.mime.htmlemail.parser.htmlemail.policy.htmlemail.utils.htmlensurepip.htmlenum.htmlerrno.htmlexceptions.htmlfaulthandler.htmlfcntl.htmlfilecmp.htmlfileformats.htmlfileinput.htmlfilesys.htmlfnmatch.htmlfractions.htmlframeworks.htmlftplib.htmlfunctional.htmlfunctions.htmlfunctools.htmlgc.htmlgetopt.htmlgetpass.htmlgettext.htmlglob.htmlgraphlib.htmlgrp.htmlgzip.htmlhashlib.htmlheapq.htmlhmac.htmlhtml.entities.htmlhtml.htmlhtml.parser.htmlhttp.client.htmlhttp.cookiejar.htmlhttp.cookies.htmlhttp.htmlhttp.server.htmli18n.htmlidle.htmlimaplib.htmlimghdr.htmlimportlib.htmlimportlib.metadata.htmlimportlib.resources.abc.htmlimportlib.resources.htmlindex.htmlinspect.htmlinternet.htmlintro.htmlio.htmlipaddress.htmlipc.htmlitertools.htmljson.htmlkeyword.htmllanguage.htmllinecache.htmllocale.htmllogging.config.htmllogging.handlers.htmllogging.htmllzma.htmlmailbox.htmlmailcap.htmlmarkup.htmlmarshal.htmlmath.htmlmimetypes.htmlmm.htmlmmap.htmlmodulefinder.htmlmodules.htmlmsilib.htmlmsvcrt.htmlmultiprocessing.htmlmultiprocessing.shared_memory.htmlnetdata.htmlnetrc.htmlnis.htmlnntplib.htmlnumbers.htmlnumeric.htmloperator.htmloptparse.htmlos.htmlos.path.htmlossaudiodev.htmlpathlib.htmlpdb.htmlpersistence.htmlpickle.htmlpickletools.htmlpipes.htmlpkgutil.htmlplatform.htmlplistlib.htmlpoplib.htmlposix.htmlpprint.htmlprofile.htmlpty.htmlpwd.htmlpy_compile.htmlpyclbr.htmlpydoc.htmlpyexpat.htmlpython.htmlqueue.htmlquopri.htmlrandom.htmlre.htmlreadline.htmlreprlib.htmlresource.htmlrlcompleter.htmlrunpy.htmlsched.htmlsecrets.htmlsecurity_warnings.htmlselect.htmlselectors.htmlshelve.htmlshlex.htmlshutil.htmlsignal.htmlsite.htmlsmtplib.htmlsndhdr.htmlsocket.htmlsocketserver.htmlspwd.htmlsqlite3.htmlssl.htmlstat.htmlstatistics.htmlstdtypes.htmlstring.htmlstringprep.htmlstruct.htmlsubprocess.htmlsunau.htmlsuperseded.htmlsymtable.htmlsys.htmlsys.monitoring.htmlsys_path_init.htmlsysconfig.htmlsyslog.htmltabnanny.htmltarfile.htmltelnetlib.htmltempfile.htmltermios.htmltest.htmltext.htmltextwrap.htmlthreading.htmltime.htmltimeit.htmltk.htmltkinter.colorchooser.htmltkinter.dnd.htmltkinter.font.htmltkinter.htmltkinter.messagebox.htmltkinter.scrolledtext.htmltkinter.tix.htmltkinter.ttk.htmltoken.htmltokenize.htmltomllib.htmltrace.htmltraceback.htmltracemalloc.htmltty.htmlturtle.htmltypes.htmltyping.htmlunicodedata.htmlunittest.htmlunittest.mock-examples.htmlunittest.mock.htmlunix.htmlurllib.error.htmlurllib.htmlurllib.parse.htmlurllib.request.htmlurllib.robotparser.htmluu.htmluuid.htmlvenv.htmlwarnings.htmlwave.htmlweakref.htmlwebbrowser.htmlwindows.htmlwinreg.htmlwinsound.htmlwsgiref.htmlxdrlib.htmlxml.dom.htmlxml.dom.minidom.htmlxml.dom.pulldom.htmlxml.etree.elementtree.htmlxml.htmlxml.sax.handler.htmlxml.sax.htmlxml.sax.reader.htmlxml.sax.utils.htmlxmlrpc.client.htmlxmlrpc.htmlxmlrpc.server.htmlzipapp.htmlzipfile.htmlzipimport.htmlzlib.htmlzoneinfo.htmllicense.htmlobjects.invpy-modindex.htmlreferencecompound_stmts.htmldatamodel.htmlexecutionmodel.htmlexpressions.htmlgrammar.htmlimport.htmlindex.htmlintroduction.htmllexical_analysis.htmlsimple_stmts.htmltoplevel_components.htmlsearch.htmlsearchindex.jstutorialappendix.htmlappetite.htmlclasses.htmlcontrolflow.htmldatastructures.htmlerrors.htmlfloatingpoint.htmlindex.htmlinputoutput.htmlinteractive.htmlinterpreter.htmlintroduction.htmlmodules.htmlstdlib.htmlstdlib2.htmlvenv.htmlwhatnow.htmlusingcmdline.htmlconfigure.htmleditors.htmlindex.htmlmac.htmlunix.htmlwindows.htmlwhatsnew2.0.html2.1.html2.2.html2.3.html2.4.html2.5.html2.6.html2.7.html3.0.html3.1.html3.10.html3.11.html3.12.html3.2.html3.3.html3.4.html3.5.html3.6.html3.7.html3.8.html3.9.htmlchangelog.htmlindex.html/usr/share/doc/packages//usr/share/doc/packages/python3.12//usr/share/doc/packages/python3.12/Misc//usr/share/doc/packages/python3.12/html//usr/share/doc/packages/python3.12/html/_downloads//usr/share/doc/packages/python3.12/html/_downloads/6dc1f3f4f0e6ca13cb42ddf4d6cbc8af//usr/share/doc/packages/python3.12/html/_images//usr/share/doc/packages/python3.12/html/_sources//usr/share/doc/packages/python3.12/html/_sources/c-api//usr/share/doc/packages/python3.12/html/_sources/distributing//usr/share/doc/packages/python3.12/html/_sources/extending//usr/share/doc/packages/python3.12/html/_sources/faq//usr/share/doc/packages/python3.12/html/_sources/howto//usr/share/doc/packages/python3.12/html/_sources/installing//usr/share/doc/packages/python3.12/html/_sources/library//usr/share/doc/packages/python3.12/html/_sources/reference//usr/share/doc/packages/python3.12/html/_sources/tutorial//usr/share/doc/packages/python3.12/html/_sources/using//usr/share/doc/packages/python3.12/html/_sources/whatsnew//usr/share/doc/packages/python3.12/html/_static//usr/share/doc/packages/python3.12/html/c-api//usr/share/doc/packages/python3.12/html/distributing//usr/share/doc/packages/python3.12/html/extending//usr/share/doc/packages/python3.12/html/faq//usr/share/doc/packages/python3.12/html/howto//usr/share/doc/packages/python3.12/html/installing//usr/share/doc/packages/python3.12/html/library//usr/share/doc/packages/python3.12/html/reference//usr/share/doc/packages/python3.12/html/tutorial//usr/share/doc/packages/python3.12/html/using//usr/share/doc/packages/python3.12/html/whatsnew/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:Maintenance:34718/SUSE_SLE-15-SP6_Update/39a47e99c42b0faf6e465bd5384482c8-python312.SUSE_SLE-15-SP6_Update:docdrpmxz5aarch64-suse-linux directoryUTF-8 Unicode textAlgol 68 source, UTF-8 Unicode textASCII textPython script, ASCII text executablePOSIX shell script, ASCII text executabletroff or preprocessor input, ASCII textPNG image data, 500 x 320, 8-bit colormap, non-interlacedPNG image data, 2832 x 1851, 8-bit/color RGBA, non-interlacedPNG image data, 955 x 758, 8-bit colormap, non-interlacedPNG image data, 538 x 319, 8-bit colormap, non-interlacedPNG image data, 978 x 175, 8-bit/color RGB, non-interlacedPNG image data, 250 x 250, 8-bit/color RGB, non-interlacedPNG image data, 706 x 449, 8-bit/color RGBA, non-interlacedASCII text, with very long linesC source, ASCII textPython script, UTF-8 Unicode text executableHTML document, ASCII textPython script text executable Python script, ASCII text executableUTF-8 Unicode text, with very long linesAlgol 68 source, ASCII textSVG Scalable Vector Graphics imagePNG image data, 16 x 16, 8-bit/color RGBA, non-interlacedASCII text, with very long lines, with no line terminatorsPNG image data, 11 x 11, 8-bit grayscale, non-interlacedPNG image data, 200 x 200, 8-bit/color RGBA, non-interlacedXML 1.0 document, ASCII textHTML document, UTF-8 Unicode text, with very long linesHTML document, ASCII text, with very long lines|Z!python3123.12utf-873bee2d7c1ed971c965f8e4f18aca16f33ec609f3c92c61cd7e018ae0b6c2a7d? 7zXZ !t/]"k%Ia 8B|{lؖT$ov)ނ8@0tE"!&gzHB7{}T+;odL"fm.-HM]>@;!ňyR| p ,!! 9O:3 XHA|`<4X2k$ʶ~8ǪwdEa+ _lC-kh- k9)3'&.oz5bT% а,y 8 X-&M-`NEBPҙ՗\d2I\b\.Aբ(ϨT[|K̬Iat5u$5);wͫq.\f'1.j#+62CIHfl#di(fwZ0rTayݍ!3Z-tn)@p؎_!aQV`FL+2;@WKgT#K>~b#fs\[$u~@TQۖ`-33;4*{d̒yӷ7s=;"|?њzWa3@o5H"`'"|R{9IroU_<}lcA4Rx)U|ll77ߖI+t6*. YɩgD6(q3ifm '5Y|& A;Yq-u}bsA&؉c?;|\+JҐW_N4GmJ6ȍ|13{8aVmLÉejw}"r!H*T. @0X6|VHm'Je sI=HqsWOsNcV>>wхࡵ)wc.'6hNup^c41;XDHzʳm  Y󤢖k3-)qJ9SuF0c$}ADT 7<⦢Z7# Oȡۍ٢cxkSGbhָS@ZYr)g[9զM[?Ԟ,M[%4'2͑SxBjoM?jfVײNNbq.kz]$ ժN:v Q (RQ{"bj|HL{># 9۰ƙޢx<"#hA3~{T&P{+2̅IS$̀ z9p|V3[W0HoS / { ^֛ IԕgO`f:tS:Nl E-e$ڧպ@DVM 4"#NT,W&aϮ0[F&b+ >H#hkgٌ1(inl{w}:DuD b<1D1ۣGڱtyd-rB"Sz| h+{{!, ):oUjsWaOgQHSdd#p $q/r2푵$0Jٽtjs5ӦhEz ]@'6@Dg*zn#"Ա {I6t)i~ev^kSgš?DX*O[YoWfÌU!ѣgUXb//D2'm1XB,E .(lKP?H{:tlJ\m%Ez y>]z~g+/J;W&jJZ 6!gYQ sIv UOUylD bdˑ=  ޵,KJ&%b_Ni3PS9Jk0'8\mHZn(vXcIk7Z$g@}(BA^cǩ>#)fPW6. fD'#^lO* RC"*_${M3j{YPߗLmzn կ:ķׅe=C`+"29ދ$lOߴS F+JO8&p,0$V[{}1G%쨒H+G5PB]1NFFk`F}L' %\f~_\ "ۻ4E&NqGG c>_/Hphimpj:FU^!);'ʒe8V ^Ϥ$]oXu{s;JM'I5T䮇b io3=K3{+`nwA.c_)b ?X?'HT\_V>B)ji G$ar}9-35XH~K\_%Y"@)AqGtQ b爊j߹MuVAc5ZlHa+e%)-I]nϓI=+S`(F:(d'ks+ M'WNn'˾ac!x]b0T?-!g]lNz> t^b[@mZ`f_tCt( 3^׮Ϣ==x" Y3Ɨ ="ɸb,#"ctZ84:#m^LP9eR(5!)@›R]jO4i-[,@9@_>zF)<=*?QC׏@٨x+%69Ī;hK bc/H*^arRҪ3&yH'uܐM vd4~Vq'!<&3Mi՞]RnWFxVϕfu,3S>\»W33RmPC+l_٫191"J Ow*\19qNC 0{dn=L$x(e1:mg8=f[8060΢.L%MBs hra 5Nz< F0q KQWSJ;[{0܂7V+C̹ѿ׌J/> ҍ'F}"Zw4J9]Cl؞ ^*!11mcRT1iSf`5!!;`,ZJU[S?DӺo&3)UUG\7G79HkGf4EM.IU* ^AKWzcLp=!tJA o# |t\P"|X!c5E”f14͗ 5R6r8CnbQU$./ǹB=hǠ&VC bicUR>}bw-ݘsجi.ާH_ᄰpޱTƠE]MWC_UJ4dֹbC/LgOz V<X*f*^vKŊտh 2xuZV_n"!,ܔШ7WC"˜gn[>P)$btvC0\Aim2E&.Ll gdXV//ƍc&_o0\ u:цYY Jk8L~%/ד%rgLx?_ͭYqOgXwYE 81nʮu&nR^K?8 d>Ƒkt! >韛GYco/i}[y7SK5.2Zυjtѝ3gZzh;ڌw7K Sgk#/_|6?F6t5rn%eABA` DGXP(}\3ȑm7濵`jO̭[sR5>3֢>(Onz2 c2v6XZX>#|ŏ lGNxN$- 4݋OE(@ |@N(ooYX1_T;~:&\mS߰}+fP|֌(;o^(NwD5}`YJ{MXws_QT~zH#zDnXo:c~Ʉ@XPU3;ն?1bDcqy3o aQhyL`A .>S{{VWD#0Z)^V%Cςf7j'ץ߷8nCfI<"8פr3‡&ժڸMiP !|:BqKpHwOgFx_ ޒdT(F" M b6NAKwM6'?6hNk@UL5і9T@P2 2kW3KYXWc8|(6ɅEeI G nߢo]hhJxeT-ȮW0Hv{coFTj"!]ctS]S~ )gap"LGWtI7?#i~x/*kÑDǂt. JcU^{?x-#O#'C꺕j 1f*8ދ#;AXvӵ_3}3RwP%&=.b*#gM-4)>RgX Ѳ|7Qg<9~T*O%_&rc|dIETo^<|4#At5aY\#_sN9! |gMoy s렦Ȑy[cƸZjʥo/vsIUT@ _44C+WրB]}O; EWbCrE*iŢY@jBٰ+~S>Oyxs{hmL\H:A%~\z@jU~ՑЮN@/x&hTSuh`MaL6\*F/T(cW8  !R_.hqN]i-6SBʞgp/Mң%ipOMhobȽ-蠥ë4┇fҨ+VSIj'*f#99 ߲gʝ ND$/I+(8cf^5PZKeדtJe{Qo`O( kU9JUljK5:sw(uցxS"O}l zn5K>'cIt-AKGbz3|BOCG1q@O\,moچvnKѡ 8!]~EURYИAĪ8DisH9u}`"z Nˊ_϶p+(dR/ksٗXH Qzj)^Y@&Sý Q5"B+!JDH^ׯ' y"qWW/~{?՜uW! 1\y4Ӯ01 EG c/Yqxbzl?;*iJ'm+jut#|8;( Zja7;HedxT;7%~tܦߒ!!mRΠPZh35A'nяJ~Ht4Om:ߐzZfz/ SDQRQ%   g!4ie|WW:W[5t/]AN hޝ Gt Zn'a7C.hʦMT\c_- ȝw \^ͱ)`eW !vT}>zɐS PL3Wjh6=I@utT^{ j lBj#2vD˂Mb WGG6IƬ-%K驧DeʼvrFP4J.R;/rj߲=yYXFr}^:jdbm&肳sj蒨6d.+!Ylk~0o;[*:H.c,_sR=Af ,GplXc#j'aj1r"4 ha\7}G"9J[w",~{-ϖ+7k[ve~v^5 D|."ἷˢ2]T9*.L LQ<ɱ~hb-dXKԮZ^~5@c%%ZF.PBƈsVތjWOG>v[C (tf%$Kw滐lc?e3% ԫB۰D i֘"U?9ǵʂV?to&PSLYA<9R=,"dM~/.myh)q73; =[_Ui[v!~l>(7xl8(Ъ~@.oI?,q *Aw5켻D3QhW >̎Ek!'C-hq|,/=u`vRZP~ ]U e"#:3+xWRJ*E /,N?U1ko 0T7!}751Wlrl󧩑܍.&({j,Hr|i)qf$lF@lAUX|Ɉ͑՟'}8S FawJ68m0TMjo4}E>ѰUvVkOy6(gGeᑒ0U{p]?6_;Cҹg3fPi0Ę?&_\Ѝ1Aɘ${0acmЏ QH^n A9C_ ;E1ML ܩ&-JȠĩgb*7l/Rл'}|T|V%,r x2#t1&XKLgL;A :wPPTvX;LsN e DD<#-gBkML)8^FP~~XM%Ƴ (!!- dØ71)0KQ&=V˛T 'Y&q[$); "Y[8W͑Vշ׍3ݨ40xs>9{Ywꛭj0=$S 3OQ)#9H H1lʂ9x[K~YDu8YLMN"M,rQri hgUq 8[nhZf c+?k5u=PSKߤ/V3͏db髶BV=;Ϡ 4B՝p9Ȳ%F0GLUJ= +G ] 9CiJR hSdD(4 gbCcﰓ[UO޸@d^:+yr#V6f}'TI{d}V9.d1{ ɹ#؏;=ƙkLH4y `x7;7BN; zD1mDލJNc.wvή JR#Qt9-)Pfe\ʜt] y$t5g=W<'0zUu L_׀Z;zd`Ȕ"+q5eGl3cYlifp$/6ÒNȗi)sOg^GX zpA4,c+sq}UXѧ@yH_XVii|QWʘ>UDA-ػ{4тI]@@lkIbIP"ny2$l.ײ r;0$R+MK<qƾVg矗|4`0_@cDZ҅_LR_0srtx)zys|m!580"ʬ" ͐kMQ \p'p݊(rB·_óQk2t3snʎA~4-z\T?ohd=,]1 dW3ؙJEKlD[Ұ-XHR)iun4 :O^}/;hN 97"l$ ૟Q0J֨U*Ƌ\%sTtk kys],VM- U6:5.{eb-VJ+375߮U J42ӠĈ}SX.3|}w_Ck,+J7;);&䕑Unx̏n㙂~r*U@mNT:븬~bQ˃Q&@<@WNEgrbKn); ^jʰp4[ "GFI0f(a; IR]W >|j)>D?@x %#a2UyɆTO3;٨bJv2YEa4B|$}Xd0\b{,hq Plv0۷aA+tNԤ*MZRFou,ߒ6;o~&GopF vI"ϡ HQ5܊pŽ')= CA;u =/7s `̑D4-hT9 bGoIoVXQ76GxukI͘ken.r9^3 @HL,Y)<#sv0TX7?%.4YKH.İyF1݇/4ĮJ`JOy9>%< bdcz?o7&BAڜdD֤=9\ï^?k.uÌ)h))N+Xg紶iVwHeRKt}F5Qip#i}Z; ^M0[n3tП'P$^VȐA"0ވ/yGӕ?#NV8^m@F!f\>ڥ!3{yL\Ϫ`22e2[ɃxnAБdi[-/sA#Bq[ln.LJj$$ekb[%sB*1)HvӦ]E @'Lud9q1ӗ6 []c@c<>5FN ,ztL10,:%Kݬo ̄~#scy݉t0ue3yAރH]֋a#<2ގx c"P-|m-ǩۮ2P]pgr^}U@xyǍ\?|b8˾ *jNUlORi/,a~ i*{vi u"Z/)7s?7+@ց?Lֲn`q1KrHyKc0þC{sm13н+ݳ|ho` z5Rؚ`q2ĻmԀݙtle &?#G9Ǻi pUo" J@_ҍqU8s{z 'ܼatVRqvekr4/̅+l%iOkLYrZFzשs'5rx&iF).I5@K9_5ȼ:cqrC|*X%3pZM*+ O⯪,d{ieVŃ]Oa%șW歅2; hJ-R:Di\=1~4t?!B_1mpGd}`bl? fKc NI}. M.ljB6qhXF6K:6O*hW\1EWryaN0Q)_e];?@h#L^'f̤]3} .m0|uAzA1e;fu=MV#!\m ?-,V>_]X@' ғ"໸yznnա;p8W9gn7e*|7CҶ:""Gб15_=ܝΏe?ag䬲KZGz0hgfVW7N;Е>gW^$ v@/>t@ω*jeFj^Deds$p]uizRygOtw*9rQJLzcjA;]rV!_.aHv^=[$ sP]30]0zJVMrKMd _9hQN!*EIXYqU^];KQ!4.ODAR.L%n:r˔֎WL懘2 K6; >nMWҭ!䦧패M+ykP~x, "sxkϚ|모TTp46lzX%M~ī H{u783\'E]I~kt{gjyp3'!v!UVprfRRi7»u@7|d0-5DJ ,JZb?HrDY߾ ?=YSa{֫?c-?PTh+ؠ)z|CM>4uQ>l'_QK* 9@_tؘ H^'|pg\rdIo mMe*=˟rZM]Sb}ExBgq+|m[}LLv['"܈9W'hjeR y^H5Ȃ+TdM*!|?;剁K x{;b0[ VP?.!"C\oZqX˓iv@_v>..V=rug}(:I8u}`ZaWvu>%!_opmLM)4 m7[5ܝI5\68%EUEQYmv BNhFh#l dwXJ+DF3f"@e X,H!'L9n Wݐܱ0Ɍpp3v lyˤ>1$*FЧI!J#>β9-ӵ@E;d,/d ŸuBmyMJ0Eu׾Z%)z-Dh x܉9Թ퓘+r ·ȯ30(GMB@ZseW6% E~p4k`4)B\;F֡tdU:MQnoS^>O.&DG`?Hud `m@\Nl٫K4*X.!_x ** L3`ô/,_){rlR9̘3k=pɘ[}M-/"‚4d,lQwsw|XJZ wM 6j]<.sF9 @@5qeZTޟF@g?qVi{vc8 ˫L0 [Ylv̅ՄKGmŝ2}*-#{qX$?}.;wbwI.v@caB۸t5_TXq+XEw1bfZg!SX3Ivf2*.o<TCbi"}KGXwCvj}Ǵ/Fj*itJ,g,xWzFzѮ>8!PMu!918{93tf) ۷Piԣ]eՁx_+LȺ6Z\#."6_o)Lk6Q7}'Bzln j/_|2BB! YAɎˮ/ y;\m5a/~J[`|Tv\6l·l}47CtxȲ/[z'v֊lvrVJ7K&zbQ!- V0".5/ @40 z ]FsgGyр1+'|PVFn6BĽXlglggL}40vxwfd)?~ 1Q8XaD<͍ |B(XFpUT E^Aa:g)3HB -m.3a6Nm`HVFPg0 ɧe}eUkCQ*>R x|:%+O.Dx]26Vf;ǡUϥNYTWQtzc)XLUDQxI{ CFX%~>&6@RqGA |uv&gKaU@1ga-њ#`N4xnobW]GRdWq0L&o|&wu}TdPq#m >dZ'roKFk//øcexQ ɔ40aVb3QY>Ra-81tΏ%z9×wȄIx4 6βt(@ "{sJ.x:.݋Ty5FpGJޜ$}8`4Uv\J`(IhGP$92{ѩ` TX7XTT /8i,DmmGfԚl}VVie}RΗ6X7}zH8(3 pl$9Ĵ|,c%%;&t9;}> ؆#:` b 鄮CʪBH+T#к ,wI>CLFh4DX$Jj%g9+$z3{_=vVDjW݀0 H$ASIJ-Mqz߉fi2:Q-r Q-b @䓓 sRh-waI#*n2ku%))z%tvjx7^is1q.MCr"*.nnFuZfճ\q.ٮJ>I :e^= W`.m԰aՇ0`IV  2&% c!rPA|MV+Fƭ1O//xnij+&F}w )(Ţ4*o)5hyq9i RB;) $q$i0D@X#gnR01txE)lȸgޱbx)|-6 I &DP#-;2/J( _D`~f>S|йaAe ު,4s`&8a16t;L5<~ۨne?meʘnR"1} ?I .w Z=g}y|S'L+Ċ1BX ӑyΛs#o.7r %IP$8!Fqں0ؑnev# x[!WQ^+A+ϚNh0 D,o1>"~<: ˒1o/=pºa7Fj>Hj,F:ixec>SPoO];%# p6Ae~*\qhO&-PIl6a,uBlhD/MPL2ujJrfj MxZΚMy٧Ơ$?}^{ӼJ當4=̖}N&f|Ake`u$us{ Gg^)`d.^_\)v\hm.9O&b(aOvkyB<sZo?(_g/tDLPE!5TAX@AAJyܕrWA:8ca 壳׎Lw?AӉi4X7ڳz)SGmZTJɕ;gݸyPk1phwm3 Nl'!^W[\q hƬ1u~nfZFZxfR/InZAӤH,pO.)3;G8[rX`xH<2u5twWg4܆X]`[lBS;vuCsߓ%dGi1G, 7r۟U w9+>$L4E*eA3׭E8[3!ڄjoU֛3a4-8kS\(G6{jGgUcnWIRg3.ZM/RNWY(5kJpFȿz#IFK) vQRڔ.ldm1k>Cz/HuU#V+@?fc`YQtokDuZPfѴ3xwCpG6a0T./󺺅]cQ57vؤhmſ=;\ `,b/.t)D%qs]֍mܹW PD7a{[3̽FѶ~E[Nj<|B!l*<juk)j/dc͚x:=>/O$,uSšxsOlkPRYy&Wyp?Z[# 5v7> GKR*Bu5nt7zie~q1'Dv]Rیn@_w0 bp>2 Jiv@H8Nj5cC|^0Z+v$ Ld[: G[.;TEz9}o=@#k>9^BFM@S`Оy"e*,gԖ/nKHi s1{ yQm]2M@@#lA3?X~]cdᵘyrS{l!QS{} վ_LXݨYu.@ 0b ~192m##eZ%}e'>5%\m'\rJ@nI T \ć-z#P>ڲAٟUG7w-.*?N-ݒ-2F͊pAXB ӕ@_-V˙U !nrGCtH^[숤V-lv6fL2Vt7|/vi= FH [sQuƆ落cf|}a?X~~?W%.oAUT䢖;딃R)An~Y41ǖ+Il [[&=~DFGC}Y>J#e%HETNZ[ܐҀir^ Q@- zH_7 )'>ԏR5UP#'S׆dɖ;wH G=8ٍrmd6Ǎj7:@")h~h/s1&/ϐj|p]4X\o?}ÅzXxӑ^.xn3% BNT`+Tm#5@mm$lHzyXڃѷhNLwڑ732A.H3baghj'nq ֑OygNANZ?o?eMWRd ވ-`a/ m:#Ztv\RAebvU%M:55$4 bi >G! i'zU=ĺd5bXz}&Æت $5Bee^o9dwK$&ő4Qt ?\n&1ʘBK'I|w is`72dhG+;D~DYG(@i&OU Y/~hutWI Tx}i =IƱ.+ X$Y=L@4`^M pH3P~d 5G'^~ vwUޒ{ =BGJ06v6o̹doI%o 1_6T^Z0w'*kk-`ǿ(w:ma[!O,Kb{'hO`Y;9l݊|ϒ`kD, 590y&=!n m岌 Gp#$jE}Ţ?u߬2b.S#`}[:k4weD!\7)0g#Grha-KYϽ鼨hdLx!Ə8Ev6KfZ5/UlZ@'ROK57z?AP53ݛnVv@z)wJ ԍ3iۼ >|Jw* %ڪmB}Ze' %F߾6XFxJECń&1 ?S CSO v=S[`({0LIeXQކP?`L ߿򮛚:X?CC2oO g+J>8gy*˻#߮gr>ԕ?u:+OF,^~I(2ST,_13Sd|V,7 PMKs4ܓ*?OOf="*hM87![,7?PD[9?U !ÌKC?#J yHG5 5MӾҔlq,:g1 akKtGdzuw}!$gm7:%P)t닰OSfT}@Y{?E"7$;75o+/tA,u#w{&Q[k taO$+Jk+E߱%}%>vq̽%~/<4fVى+0҂`eqWãw' fP?2^[|U!E% @6 |n`I$0ƞb*|P+}0&"jD;>[c.P.@^2LO9d2􎉡#3-bx4r[via!u&=n]· Ëe\6 l'&#Xth(oZTm^D)OVcE4@z̴xVI€Κ<D-/=Ź@: t\iyTvV<͞l!?فߏZ/b)Lh4sC|Q Ck|E+<^;νWMw\o!ZI8_.uQ=H6VUV !m,e6[D'OX_~ǧZ/E-;vx> ފ8Ȼp]L]1i|uPMBMR?p{X\v TUWE-!$4->vwO&{3'm@kRK{û*nr]l`xvOzXH&nTtݴaK%Bn&M8jij{bn&icTWyTU&ï32{J3#sYng@PY P1V.Sx"rFo'A0>q!911߃v0zn32܃Z[2i0zg4U< թ9t$Z 6%8anwÙxh ة lԴ$egٺ@)\ *cjJyN% QAZ-" г@qNw4~cw͉= 6P{.I-}< ?e`NcCv==--&O;9'a:g%G(eL@#WjNzh65k)-–mzδH^g;{ݤn5 '0,BַE~eq?7/n]W8R6(sh}fOa~$~pva<ZsֹjF[x6 ol1+D]؎@0ъ ం) Z Q8jb#H`No\W:3ŽV6{a-P3-^$*_?AlˋZ>N@)]۹^cT z! l4P+K:i&m (qa o_m"+Sݰ|~1"PUG:&i3q | zL_ aSz%<k0v#PdPNHGaӥ" (Bi}P2Үb UGʄ8 T9eG|:忦ͣ R}- @d719WMss)G߂qBr j c*2vSNe2pʬԹ.h%[:mlXdGO iKa35U EkWZP FL}86EncHt~uCNi)+3cU[?e*laN}W[ZawnxyQ^Z$V8Fzc.liu+ixR7-Vmvu07kxݰf1zik}?ypZQ. "Dv$N&C5Kg ]3k{-~$zxCyesM9$M?s^.G_E>%l4d[{oJY-e{.5yV\e]DtMITW2.Ql;u%aT%wcR{OKr9]'kG"#hO}9 tF44ò8Sy&{`jdτeN"-[ZZ" ]$ɗn {F,21A|Waxĉz O.@oEpi7|͇NCHko:  \Xܯ!rFtyAFQmS6NDf d!BOZ-\?Nqr<07bS=~(]7窱%8W. iQ[5Y(P3M1*_-ڣ0Y pث+Hȳ j,9b¨`Y;qK2:X@Ftu) хjڡt_ cWoJ63u!X4,qNJ6j(1aܼ{:7o)>omv&}93NaiIb#KMO[qB!>{쳼SM--҅o-SãGqn2)Ҫ%gYM!}KItHi6c~ ?lէGܘA%͍fU.׋ӹ"z !]SEwU^uح{l&Hy rZ1o8>jBuX: k)aMs%O#W򳕥&89} pDˁ~_IXB~6M-$7ǹ-V#ܔ]%ꖝ8n dtQ~CaA@;hzԅߜ'H0v"gwZٰijߝ A&MM}K;:۬3[VY-h볼E[ nQ`h~L` Zb㒁-X~.LZW2&MfͪjK4{ЭZ3*qh{]1vLoL]=oXY:Foo%+u]BaG2ڍ&r`} E?DB]ie 2L3|s*> )/|D]}g7^)~(&mwP*j Si;>"-ƬEJ!(vHAR4C4Ls񇓍1ХgRhJ{ e|qK"+u3(3_Vܰf9>]]4IBCjI nfhg`GVxwJ 3xSxxo9{3p~T$%M F%Si 4;åQ.t˵%~F4 bό]FE|}2R3S_z'?dX38 Z#k<` 7FMZpAE; p^M$b|^Ώ;R$V@rB^X/ v8!Dn7nZ? cԝ |q.7NefhTb<;Uc\-p{y'AزQ.3=<@Ls# >V4З K(l}d~S+Hˌ+6;p3kRdrR!'i_[,a";ХniBeN S#GG,`b"7*0cN5&2!8v4^H_@iJu'NE-P 멉N %>en#43 )@K+T 4(ueLM/y#u̐lCB4~m9Ȱo).q>K-?3M^j%i~ /*|"Լ<Ł!{hbGDm<#N4l|^2k}^댒 i|[g]헇;~U@@ l3~xO8LetcG ZWF$a̴_| x5 $.{LnZ\r NS޸|s{ETAeVr}?]m6KFλi/ aIE#},1٢Nm '2_AMXOaCAdj؊Ienݎ\\?y+g9V} <;OS_[c_}gׂ=j`%aZ=;A,Hc!I{թ:ATygXeqo4m6i֞Tٖ%KlLbj U ~HD`LEW`!JP׳3F6lnf<*s΃d; Lhh09} pp搷[C !m\.JOB(o-)u,\xp6JIJfyԔI}V)N~ A<\Sp rR^aDL7?`F<&q#idkI28ǽJuV7uJr%\l.`D'[E-&K8Y1sii PhX6[=ƴ\O~./Lpr1T1ʠ$9zni$^/VI}?P2}w8PLCI mԆǏVpp e1FE 1̥ $.=2Egč@Rcn9AG.P*") O:\4SSGMeRPF.mVa%*@ie}:B.Od\2Bn#`d*V^ ch[XFJ{c\s( *6)/'1޶!KRyV♰2eJ^CqN2I^9}z3V8b3p0S-p͜M9N\{ E#sRݣe-BKۻ|=yue9 h6mhIM;U'Z~3=%:MdrgV].!K6[)tb0hG#Dr:$%8Ⱥ Po0AhXV=㮪k`_͌+3. i.%$]IA1˅Z1ʹ*&ہMTb.CuhG*w"2T5x\.dȰhW s,y_X' j/A`R*5}ըQ׳HTs75#{&nm @ <"3TEVH(_"lEvFV?"ehvS9QgF]F&-bg:9E@i+1fn\a4ӂ`{w`04]e( Yat!}j=;֎jܺSo*I RN 3ATgg >ߦGF;g/kz)>]v,0.g[L7?{o4TfI,XeԒ[_{J1g ?OWbN+;-! b_z+ 2RNy?{^ G2T4qiw:q#l e{.\2X}nA\_׶! r ^;P&@@lؽ_U6Z#eSYS 38AxQE]FH{κWmSm;+`0)ڈ#_a?f?@$ EG [zBFߝ챝Af>it8^@qwgVL6ދHn)MǩM͉_օ*mWd h¬jt5 a\K%Vyw(R)ܓ8a[ّ x5~~i@*N**2by~\&J crY^pJhn}s8a3tqw-8"2e\Ȩk$kR{cd0}!rjq=Nu`7 ر+)D90R&Y2F X₳iEIe<&#d06Se3i4Lr D\ԴaUռG4en5deh;9Bv7oAHGߦfKbǘNn$0 . v iO4'BWSUyCΩ 39ܿڮNn+9 y͟j(qO8nO6Q0\\<6"Vpz6mz *,8T8t2_HU(:nӫz&pRvl;m狊#p<n4w,^ Dqw6C383򂺡!`HFUxdXKh0)5h޶`۴=y ƛF7[l4\߀%索f+[/_%yz"#|\QN Ys7ͳ\+E3Yѥv3;},h is`;o|)vxڷO$U(e1lG'+r@+n27>Z9G \A4 D&+K k3Em (#[_Cױrk$( ~<cZGq$J^)>Dj? XJ` Lp^?589SmW&-S8G) a>x.Ӑ0FCxWlIRW2. |iMn;I? /B['ǡ  = x E*op$逛sԦH(RW \%ԤZ*ZSRg"T4HVU;5WDsҚP2o.i`8S.Yz ݇pv9囕Y6p }GSyUe75$*A" ~ ߀6xUE@6(tMf502~}!簁(xxJ=&*rsXxp;{^}-ͺLl"0<h†xb c)p۰m~'t+{FOb Gy!-AwJG&"Q}n(hkR~7q"6M]Qh{"Um!S  `ZR5a̰HD+a21NCFr)@dJ!L(z \돀ш@>C^Xq<Uj ņ,}.[hM19?{^m&fv2wC.eyKЗD@ȫen<غ"Ѳ~6-3+?bHNg'@%"խlSHHEEܸob\ LTֶ99Z/x*BR@B peRRJL9}r=?UF[\ЙK6XKTެa^~kELK-Bogi孻Sԇɚ}o;#oFgڒD!Xblqx1U?ZV2rz R${Q?G+җ5RG@@v13*O+$$(L>B/rܖa&yo{FR*<:l.nJ|~'QTځAwt q@I"'B΂/pt} 2:zdBJ;RS`}wIBG,>h*l^wk]#ˣS X[.R=rDRg wAzھ}7#wZ:zeI->:p}z BDQmeб0ty@N>QWq`6-N,(Ck(kZUec sF;w;e9M-MW9ݞ#On}AL}l$4upP߼y>,+d igdX79Zfj8̪D ^0þ?:\9*';BC iT*Bo^}fbMs^/J6@~g6V8673`\—~$[_<:ݓ8o:c4l⁵벪ʥO/&?f8u&{-iu>L&8#3<Om?dIAs^ c8ƭEb&CpR q4aʸ@WD!2V!j܈^/t;9H"VUy]x!YSO7JNQsv4ྀ{w}Zqƺ߉f$33Ld#@ 1FCi⏫! F,o%50[6xTq=&N~ E~`QDU)ߌ+k-$HA;vܓ а=*QQԐ Sm&57cŽ +J/G+K@l8[RNG4݋_q޷to@;GZYJ{apՕܶ;)T!^>:t]XoN}}}:5 < w᩟b_WLu:ěQC!ٝ%'jґ:KtNl yRt:'F"OAoEf3=Y& BꃱΫֽ?lyǩ(E`61v:#erS^KA{ *"8: CA{ה%t^Ɩ ti F_T?c9߇ l7PqseT`=HE} xJs?=|&)@*$ZIbD0*Wil`+rN޻)9y7RUp(L=#@ZΖv_*#`YaJ NފA<87z0X m һ 3JF3M.Y-m,>|EzxN*49B|zb^V2y ZRtj/bx6;-Ad6[ahTU Pmwʔ`'yT,pߐ,yҫtDzP*[ƶRHCI5[ AٴESKܽj_SeIB]řQb]O /CNEo9&ć ¦qMjO.z>k$TikO`6t*V7W t Pn7+Sҁ a 7EӐj`/kb ]yb7tŠ,MKJAvl-WN&4Zn{zՠ˦}fqV 9N⬜mQ38jƓ2)K5,=A =] ]'$ SkX&ZQXX'`E]q&[j@IGlϛ6QQ b3%dio/z` 6{Vl}Q=Z9ohgd(SG|Ѕzh&2rVMvڨͱFx@=#*BM 5#7;) ܯ|qCO`Gj9hIGxT 2ɥY^р9-^þE)ɥkRa,9tRTmnr7D#6CxI^Y#nK3`! JԩoTB5#+my<)Z}t\oJU- &~faSGIdc%O%E)ݷ ;v"ldpdy8,*7 Mؼ"V ZA/m)g tViX6p0v '/4e*O=GT!8Q@+ƃ'e 5Ol3NdjDC; ƱGr"*Ŧ,!D:b/TP7_<5mp!ALZv7{zhw_(o'J@nI'9/} Ɩ5Ac>m T \{[ՓĆ,QlVэ[%Q;[;nV>٬u cM:31|8!wDGYu;CVG!]&k횦FA9l<ĖK@W>:3 FF^ѶqYbQT~:Oy󯨫Qw]y{W]*V!kΨB%DfT\  t>W,`:4B> ᥾xF&S!+Ͳ" tm(jk gWZ ,ꭠUIKm_FK!_2P>&_(zJRLYXpJqW#JAx,΋Ky3)Ѓ7`2+Oj ,t)܅jXa;|<&.Ӈ1랹n2ۿџ~HUeK [YtnqNQO2HֲSdfne]Jβ2g *hp  `DSڈTP8h\l̆C3]@Y$[ɤe7ԦdE_#m?HJ_ ֙^n*#ep4 nn=VyAD56puJ":xDQ]K~)(VV7|Lh4܋FIJRD<0,@^G,nC8AGKT\9++LO/ Q5qH.ͫ09=[w"q}:|L\f{9U⠨CSy^&wVD>Pª,fd\&uolrD^tC 2Lfr.mqQb6Xov$z tjrY0TŅ!(ãbڟ_0""d=q|!x O\:tn3C"qFM6]njPjZBkC͘qϡu1)~B}oE!15xn3w! -{Dj%5V%GJc PuKqtw8p"cr@TZ)%pf~qw}3,`Mipuc|OOaao+ 5Zn*8hR3CA8 OjuO.-pͷoV1 ;j NSٺ+A݌G;ml&j&wSxoGW8 ,{3oHT}5li7fT μT>T9ɔzzc-h?0o^q[,WO0aRx"2փpeY VOouƮ!!X);q-,S]:yYr"3 4֯.A'n08GFSR| C2ǞӊwӊƦfSf;1ƅ+n+=JgS2W Q7iqXU*w!>zvv%jmNQ{sos98z-*,4d,fj(b<( ǡ Q!\)6ZNחr1ڟ9V:k0?X{~?\A2)*ӌLJpSY"n('Ȳ/yOl2dIA={|l55GD݀x߀Nb-pmtV۶_ yTð߱)I:qs/^|u\7أoU_}̂ T:+(r[֗mh}HȎ/B#s]>Xzn.hy i^v0ϕ'Gr2@IQ;PslHͩ K+XW*'/E4B#P,nE%&rOA 3s*pU>ab x V|\=n:-o~i2p%j8M2Apq7l:x[Tw4aZy?_ݓ=yk0JiybC3Tq!B#( TӘoblmkLa䊞 r7mizk)!B׌n!r] >/|`')Pt sz#Uf2MQH~:4ñQ M%أ¼Nd&s7% /EJ- ZkB-XߕT9X5|fw뺀S{1t4f玔 KsoɪD %ǃ V`~D|4bifY ~HWu~Tx%QMI)hJpbOKdXeGC ¸&VD, -{rB8q6WX$rϳձ8nl:e݇pG+goB+>iT mu$;@GN ֛5 ?l(<3S;(/&(/A~P` R)\? 7yi ous< Z1LX:'8CQnfwƼCoiK $#"0X?|.wȼ .Mu|7%6.kY1!Ʀ`N@iyQ&IG8=^ӫ-P` a1$pO6/oة b/W;K1K}4 br;D*7`g_ɱ`11lÂfs3 p䎾W(Wҫ)*{T~𕬠팲|b*PfgD-:7ْa=5Ibc AX|8}?Fxŏ7W7c7)& BXh9D R(u^X|x?%´rVɉ}Eub7bd"iAI5u:(f:ӀUgr-mit3Utڻ0NcbPD#fBW`ƣ#sAƣy/ pU?#Q5BB~e{ M]*5cg诎Ic $1#nھ(@r`5tDոzכAs :I(}?4X ݂J?}&:Sjʟ^JW[5`~c&27\~1<ַ}BXB9l0;\njz7NY)0q:<[u:o;& \V;j7#|>Lu#wt#!ﰦ|OKSM3 }oԨLI Gw{ٶe$ŕ8 Tn:G` ֮xO؛XslZɻr{\/zb{5g#dXUz#G"4`e\NZ~6\Eg#2ČŊ'nĩgND XܫCVbm"L3 vXlG1>d1Ko!tSixj[q̳20]3< -B/|zf&}V?ɸV YI4k"tbgI}V)l GcW!-Ĉ-?@`.?β1Iw~4QNKqlf?(m2n t:w yءQv ߔ Aܫ^TH`%GP٨P̺$]8F{wgtCwK϶[^* ddjo'%L !Ƹ(Ül'+H aq{&j)*,T®e(/'GXb޳K 3n2 nA"= C!qOi?C8A_ ddV UxKJYf^x Q 3w _ûd3f)Km?A_M>n^х{.K \ԲڢkDRO!myy-c^)vfI\`iz:g+NEZcbrzO)2I\7[U[C]i sZX0 t$z0[5)_~v1jtIr(Ö hqۍ?(* 9˔ܚ(J-h UUE>'&A#yӟNpZ߂Tؖ  .O.)긛xJ̞p U "7!ވ殸qi{v/LZHh50kP/7%T]ŝ`ctȊ7 vt]W(drfw%e81@T Ec^ VoNCI@]FkMV5vnrs9UͶ;]9y {i2m B!j'(w"Bv:yo#^%GGJcpY > ʉ>=ep<y#;TdINiXcþ >(LA{M~q %!.R;5kWϾ!3)~,lkH¡ 2$EIz26(sSR1AL;kNsیZ< } |.*E='EP ~5&qdvױD7#b(zl|I@BOಱc s\0S2ĞO.O7f)dy{5l t46+@sJBS"]"f9*9֨YD؃+Ej|}-POE@ȚU+e'X ]}–;)l3[ؑc,RM!2Z=G&KHs캕X6GڂHk9rIM}M.NYoH26`zc 5KG4"4 Me@yXܑT,H1 q wOXΥ+oNTjߐ& 'dH41- /} *5(6ۥKgY 4=O-ógg}WߡZ"Nn[JF,klr[GmǞd1~qղ{ _)j6m3o{3(~ZeܑqwvD2 2՞>s%~Wyxa)0R2uT%)Ǫbq7D`*6!,d5$$yDCLQ13>Z͏δe( ] 2d(Us{0rYK1!S' D'~ )i΄zM I^޽<:x#ΫMUQE]ykD*Ъ< F^ Σ4=gQ- -ec8HBO*!A  M ];gF"/8ŘmOnx'KijVFx\lUVnL}u(lInqsz;ms!@*2DYs s:Bxc?DJ(lYoL̠`8dJ  Bea+eħt ^v +խ|q '믗aHf*>?[Zةdrc2A~4,HB5ϔiʷ2TN 0[1þ~KJ >˶.`;c5jKhaQo7fϧ}7ЬpHʕ٤a Fv5J53P49e]SHP,y8mQ xո LH@#J& #?H,`(Nj{Hykֺs#V RbDŽ0!I1RT&."F(6YWuzGqgg>1j)_[w P6]4)˚AۺuKG.pU2tykaNNWU kU1AO~f}w.S 8Eug]Xg$F,Q$->q{R?,&X$^w b{iol,nmKl l 8NˢI|da Y7jhtS!>!^ $alŭ e{^33Kh آڤc1|.Y 'LRkRAD3$Z>,V[1 Tm>V_IOQyUq/1"s l]6ME YRGY &4k8cGl.Ȳ,G37gbW Bj F9&m9#ϓ<J * 9 dܾ>!Vu:a]_~uJWMئeÜg/) &JA҉(FŒx.cNgL2\/ET LVdz"%6W"@n7gŹ)P@#ke+zD5.o寄%NY w2q%W?|rz'f QWgU? om6'vӵvwJ[O GiGoBWaܤց.X19Fޑ͔ϝ&{XcU619,%P/{SpZP+SD{1d1IdfU>If1vuE)Sq#G3 @0\ Maԝce zI/_V~yO֘jLkX@ȕj$~f3joVv{3 PQU'ԹT9܅j>$Cɑꕭ&y E&f e:,iecpO7J!0;=>a0C(36.h`da' CXroi޵%eN ,f⻏WZP LZ' k2DX}0idb{oVEiiR ͂ lխ~{NU0=P^3=v"J#m3٤"Aʲ1=K. }!8J/;1YBD}Y;?籺޶R1Onj]=?)H%c~G36 ?$m]C3@cupS5OC1KBRU)4+I7 V11[+={2N;XкWfmMb3(SwĜxR@ h_:(!=D{lXdHC㙪CG&>@9˃Ka]3u'5[ T:Z>$1T=Fg8-&܀F(>'䂻7Y'o1ݗ>n\?,sF'd? BXT3S!̕Xׇlꖂ̑vYdG `LP}<~ѱZ*iCg{T=V:T˾V_]'N!>0Q2'SyOcrswn/]#1<\HD$;Ę-8 /0E\;AM4م28./yf/y4K&LQg`m;"?U9Y,Fx?0mM <ljʰ doS/-X:5YZ1n -9;b)h4`G [zWDM+M;F')6Ñ%`Ҫ"^+\T#܆~)c;ȕ4yI&i lW*rK8mRl#`1M9O6UL|0gJPIy@xؽ$增a:bA||yV,g rȺBBƼi?e~U\27ތ?_le 2E7vfzc g+ 䌖~RVB,+sp0bqդmSv}dWP=oMNJ,~?q}zJ:AA־+Ui5:υ!˽>(Rf5N'E~n'xcE'!ac|kh}h<| >V,}'V*bE7EW,D{қ[5S ǥRgNOw%sBNQ\2d=aNӦfߔHW,]=[*n}ͨNm DɌ:n; d #G83nPbl\[HNٗN*3#u| %׷B[9(t0M)3t2RH[r׹Mmmjf;%1kb՜3T-+jg_;LA1[bH}^/&n}\il>+X"]I¦PqMf #y ȹ 9ьto y r#K;q!’Y3; 3_k/x@N~>O7hj 9o͋Ӱ÷{*jLXK7$k+έ-D@+J FnMIjBq=ͦ؛ό ,:: Ȁ#(>ai㉧y@O;Xק0Da3_omգD|L-U:k݀h4U;y/Ʒ2q :bE''NZ^x~u.И3HD^JwE:{׋0Yj0hU5bUuD̵/:{,& ;(N[5mE7AH^L1V)ow:S0os݅W4"P9ԙ,GJ K ohCM評ߛȯ3qd{\&z1K2Z>Xbw y;0oH|b`9@v"տ%w:חrR*/nSCUZPfBQYR濥S?"WP ^D.LQ?4` 3vOV6(O=#VHz_*b gq][@_cvxGG=aRɎ~_pk滍 bcP0/h^Et`[YFbm?>LA#[ )/By )& 6k £ܸ܄ĦW{vX0M Pn&ƞ-Ҕ:yS3G;6l_*g3]i"'0*XO9sDJgQ9=, ;yqO*h 1s+<*?UJd9~80JH,dɥP=(<ndU5|rh\GgPs;u,'UI1iR ;WmZ clS<0?J/@m|(w%P^#Oä-pp &4Ф|D[gp8&bؒ@PjjN,$I`kFDk7h+!a'rV:0D<ЖEN ɏ!5p 3f/dP]Z9 pD/ʿs+ QM$t9@|H"K IBn5ʜFI $:1{w@u$!ϙl^S3 ŐPnIŨyKɟXx+3XT?HKxp T.*3qr!hYldZ{w-RPԆ3%ϓ*Rz01X4~."w:75GI~-gA<IcRO)qŵk ^Zsy 4>]2Xh+2"eWNV1J)&htXYJ U,wAD]ˆV(5gxe8anK&!Bv]VިM0ik:Mz.cV y36u,Cmwƌ!z͏0%5AY2 H v}Ou1]*MrALc}Mi8K/&Z^f~2XCދS'ulM'ɐ2;WWm&ŤoYf-=D`l`T #g9S~NV㘎!ջs5]`[& z*J(i36PB{YKQBУEh\0SAWsB U5ף(Miașpuz^+ޓ#G&bG [Bo+C#h?Lxͼ[ i(v>Ao}mI3E#<Y>þ~2voeVz.9u&|.K J*#!ȏ#F+" ޑMP Zn~ ǏD}yA&upßme8N2Ca~HjT*&{:_i3tOBW9#ϰ '~ ]]'CKsϱף+o}<-E_L_7ؤ~>ddHt=\;f,FwiS$Z's0{E =i<^4RK9F̝QD&*;{3jܘtM@xH.|7j+sdֹCm٤k-)z~:&GEŃjOem<] AS.qoOHA Vxa Djk*mVpa)ux=u!CO N uʨv>3Pi)HWl|c.Ql*5"rHHJh@ڒCHӽӚ9M*jV$+.]T+><^gj5 <4Fښ =ei7gFk$pw_i}c]_/IOŇ0Q9_VA+ 7jajqP+jR]ZYH-f0Jڝ;[D fշߔ%N\#,3J&EAWZr#f9 V% K6j ח ;c?,ǜHBN < $;uc~ _, eR1$_E `}>&M} hM0,Xqb٪=SaʣmuW)3R[XlamLg 036bWR#'y:dK}(0)ƹw "kEo(n3$K;D=+m1%)uDAwzk쎣'CT1pBUJ@QIs'0jֶ5 +涰:wLn ;Z&_wXd.noGZZb ҭƜvd\uHڮ5>QKsG̝W7 m+ F.CP &B-:\" ?GV!. vQ-Pz,h|6fWj0c=or![Ϲa?^)ݘ5MFQQ>4@@mэXoz)9QDݼTy:NnBy_]dAYzDM1?,ۻVnq8Z3|\joHUviPJ}H5*Oۜ:폥m2V*//bK\$3KoDn,eiUIMh'c ook^`>o^FVۀ M+9@c{ , spql̶0F2"lUbY6 –v=JXR7m?WfHk,)_=!0%[;IG8m›e|ԭgxzY*~BIo&1+EHKxۺ`LRge8Ca?ljφh1hBqil`I/^~py}3ِH֞9+j'nHYz"'{XIwG6/*>`XbQPm9B<ܗYWMYs]|$_[!D^|2 HqFk ]T"''G^(FHe)4OAl`huӃwfC"?%9Йĭ7K#Byc;L ?k&Cq=tC@0`; ׫ɧ{˂)ꙙ3WR+WLjWQjcLvO!apʢ= EPy&40xa沪]졆)5 7K,0zU˕iQg=n;, :KtOpҦydt2GY"ZhG󌶟ib}J22[X&NigG^$8CZ( uSfGS.hy՜$I F5/88]0AoԷRzbf /+ܽ(ʍBD  v"sMC4do5"?X=YMa+oD+@ؒ#WrΆd6pvFmx62l oofDTFd)C"BAw (5l'-WF ɨXy;l9Qu.3glct$sDž;m4 + k.>e6ܢ\2Ej^!*tQa8`NFЪyIeܾS-ƫBW+[Cr "r^PzD\ uf[!r( S'beKtPJ& DSu:&G[-k3[wC][$!-Ua?./GX$Ow-O1ԮwNC2H%\C,fMь Ubh-NjH>J 4?MY(?5Ƚ3A#GY3l=u/]Np5Ȑ_ ˌ;~S0l)FA9&xě([_E%02jP*tu=MgF}氎UF0UCU%[H;mDԔFpnrj4Z( bƣZ4QcZ) T[c`DlVMQj-EFͶ܌h(& ؃R!)@RKH)hmƨbMd+Oֹd+6-F6U3EFəMͨ4DQQcF4WX Y5mEF1EƍBY QQFK@kQQm\-4kEKFcbhb*Q"أdTDh Fѣh5b*@cXh+[cF6 Jl *A1I#Tƨ6U!h4Ԛ"6L16Z,kFQXDj V(ckƊ6i*(h05-slEFؓhѭEbIlj"5 -Qh+ZhFeQEQhƢI6RPTjj,ZAFI`F6ƴQTX5%MEAbţIX6 60bj4F)E%bXebōI$hF-Aj&6QXUbhKѩ6ţ@j5ɫ[FETcI_c&IœF((A,jHDh*Qj5QhQ%Dj66TF#Fi1TXFDت+%EIAL?ukmsi(CTcXѨƱVŨlkEѢ( Tض-kljfXMQKcy+vTlU[sj lZƒ TE65Q[)#TE[[cEшM&&Ʊ#T3KFA[b&RmHmQZXhZJFF IXbƢ-HId&V 2k4cAi1kEbة+%5FƊMi5ɓZMbRljHlb1֍Q,lj4mFV*bŲAѣh6MhZ*"6-6-bѨ61XZXբ%IFIkF12h*6xmVض-آ$hA 5Xԛ)hlDQآ E*#%E QlZM3TlQETVRj1hHۖ6jŢ4hFŬmI E[Ƣ6"&4V,Tj#dM@cd 6Ed֮VműFU5k\Q*CDfm!4j lTclb6Xւ*(VmcX֊bFIb5QXTTF1h)-hj6j({65@&cQVE5؋lXѪQE%hj-űkH5&ѵcZ+\h*+& cFhԒ*HFY"FmōQQ"Tb6܈6R  Ղ(Qj" %dh"U؋FccXƢEjRUQ(F؋EbFX6"ѓj5bƢ*bj*(1FjLm1MFѴEc&(hmhcRmUڍL"-$h56HV6jFűF-*rFlmj6hZ1эcTQFh`*QQcZ+cZ-sj*ڊRQ'issemАNLKӌ-9TEe*& kdO9t%'e!|oO]L0! aE^^0*'Sn r8Z !:Ń7?Gqˉ,X߃|ڢ3 i,0E#[Z]<:(pVP='~ThźLp/gbI1%ה aaHܞ"L3^bڲp}Mh]7W~x.ӧx@ip]+? NGMh'}u|(u"y# ]@Zt/L:E/:DP g~Dwc7-3$]]^M$p6*bcD/R1o.Y߬;am>!bK l8~Yկma@)Yr,{&Лŗ4*P q총4@KEA17ʀFoh&uh ՅGIRԶzO>7[hSF,6]t s|q^ $'ꂸp-!r\W-~i\KZ)!W{ X{HM$[C2P5$u5,mrE.2i;(V7AlIqE =-gifwБz[RK=/ʹ 2kKWH_1`kĸT5pV9"H:֨n9\nh(Ź"-}*׎x.'N]~f*Oy|=s;+.lwk!g3U D mj} Pʄ04rYUgX {y!+ 7F-A-MԽDeg7e*mUGQhũedГ(]^7"U}&0R~Os _\Ό8{=0mO0h efrl䂕%.LB ZD^E.QDח9XnB;4 v[Ac;V] 2Qk,8S&82CsCyuSEtɴjFyi͍hPO_^' yqukm ;QS1'kqH+%5JmT˃ysb iyw0ohvӅ|ΐ18/ tn 7`9eGIRrz@n3p7%M6FLSZp'V%aZ*Hq9 s}>NKzHɍųWvq͑&7~r8kKɀ {K#USכ.'MkYjIQ6zI;1&ʥ\J[knE66^,zij0fa̰jEPh^g=@ `QN+G{n#ΝLJAEׂc#\jW߄q5wQXC*5n- j%CԚ0HRls;[W{bPSXZC~ֿ#ue66vHc:sFPΞ"7GS]mHޭmjˮib9 ,֢ ׍Zy0E[lXLDO3 33F9x}Krw@Vz:[ 0530m ݷ"nTsjwGUw41zw\yRڴ.a#)t^HbVb1|DVPpU0iIU nhX"'Q֜OQ8VJdx#[4-,O7_$fnr+ٸɴj'cZDbCAqly13g͞R-O~TfM>sXʰ8x0HΪpBXhEbH / gOryLɎtmt"%jdX]U(IDis"\!Jh@}9tL0bw}ˤ5zF﫴`ǾKny2#ŗĕ]lU]m6Fģsw x/ WD.RءaI(H,)iFof}27wČ$> uQiB"2p]fSHef؁E#j}F%\$<9@(eRK݋le&NX\yl]^k=#wD)c ETn{E^^V׋l7,AGP?'I[f7 uU*:TM͌UT~$+7$MO&A4:ߐ߀ ;2t1(9zpX@] 8dp gbځT4k6cxlBU\T ~;^Etb -uր׊ʽ Z6Sb#CL\!a7Ĉ*pDUZ)w߄$Dz&pE V: f׌G'ת17ȆAͫ'ܘ@nD T=jPʪ ߁"H(* \c(;qԕ"~l u9==;63P)hSw8&v> lEW?z2;֩&H|X:s}"Z>[du}Ow0Rr/3#@=Q8Hyʣ歹⮺E'Q6nJCz (XH0)JR_pv祂 Փh3 _xD\?[l݀@M{sŇm^AQxGGWNMOk&QU'X_p;ۂq!EUb ޾z|X@)T?6z{mC)t_=@)S4 *pcԉ@uEPpˆxQPM!Q6ןA13cYNi6rbv8 @ Em|9b%~\s޹@ff`0yWW;|Uư] 0 W :&끩K@`z<\\X+boM_vm[ɤ=';0s P&Qm&fS"o eĎ,aQ"+3l L2Wz}iTP 1˹$jwl3cY}Mlæ(?)zڕ<Cylj6po==ON Y4N(s| rAJ`)(&Хj+kTZixɥ#(͊ckk5w̔mT(3vսÆy_X>S$QQJDR Oh0>1iB3җ;N'65j#Xj&zZ8 0oȜg5{bjWQR'/X'g_`@j"misi H;bL.ϱ&OաQ.8t _\gq _ y@}BqUoˆSvMsyjQ#5:sr:*80{&c`R5O\&8stlflrekׄ %݇yan!9+Uv8rGg>VlwKՋ" dXҧ{^SaaabFRAsw}VhI(;$˴(ZHov99I܌Ohۂ]͈0AuO$D]s@gm5b(.PVA{,Jwnb$C#ˁG/J7U$ġ`㲙eS)J#269Q$`5Sz1 \vyv~UŴK\7;ѣ}?ZKyY;82uig{ D2$)rMARD; A2ĸbE~T٩I7)ygۉ}=-&(,O)Nچ*Stg`lyqG؆ D,XN3X@gf M`z $zq;;6 5w?r$2@z@뎎=^2y0B. h햾͗ZI+r[U߿KUu lN-]mpʗj񬖍@̂~|P>[,9Ki`[%uLjIܢF0vz\d$j]`˛xz/ ^͵ky-ן]F.@P-rOIy2$[EuJVM5il@̘EbT.@b\h2ZNoP:ԩxsS˷,O'S0Xs$BW#&AԢb lfj9 2$)D wLyNON͡ql'o 3 )TUчV77ꄐcNs7xY 3#h#ńOg';8qE50IE#!׌WSN(%3X A{B x/nE{/qO8N,G1# @~\Efd'8=byniwzWU$a=( ._SIɳ23uUͩZ"ؙK c,`䡵m su”RѶQC$4xuW-RƼ1q)2ukZr2Zb.vwzi Lo/ fc'O-u62 }^B}E)MbN (QC6vw?/.B z_fH ^2.X8G͌WTq5ۆyx#Y~1HVoy.m)B9rJtX\!b~[|vY3ޞlۏF#B÷`LT#/0ǽyRnuwڹtj Ek@ZL'!V7Paiɣ@.X0`e"[iEBM,&f:&5.>3FfeH|in-,W2~t|>Yn=ͭc9>HJY"ܞg_=LPȌB6{S}g<4[!InkzMC!b,_}= Khn09sHքtGYL n5AGE[fE־͞78{@03"boo}oM8-r= LVq:&fam`] &a <5L|1fU< !A0x"QÊj"2ȽPoH}2rыJ\Iy](Ls`lqVY+qV{M]!w7 C;3v(dX"+\7|P=)  `uEcS#~7幹ek?8 Da t@?u*tP@rڥ|f7Qn:0mo4䁳gr<KLC.rE+r=`rڑNbS'{+:Lɳ-û2=?ʯqC@ @M 0Xyb8H0 ;%7K.;Jdc;< w@#Zne}AŹw%a”_/],%.#uBJyHoN39'ݖ7FN 5!n~܋YŽZcq${eB.rյoxϮeN\Oblq"pKy }nz"rT ""x@Y{E~8[!2w`οY߄F?/&,w=@Y\iXEY,[܎ /GWv$c|X^mf$|~RqdqDQj i_ >8g=dC⩉% 4ĭF|5x4F=mzmrlEVϴ7=^ ˻P4 .Č.m~ߤrgt\CM;v"ś zKˀm [e Aϒlu8@=@}}QFs2S^WD*MF"j&>sˎ{y[E;V½[,;/F0ZţKC YB 1zylPcT}8I# xyZۏb$t_VXy$Nrљy=s?BɹmRq6VwJ6X":~ W LFa yŮFH)go`Łw~ܡ"o߾eiPD$6͜Cm[maw>z/]8eܵ#Y9I+#"Yގc"ڱj9ö>.GS~K>&If&k8t^GI`Kvq+|!r (/'o"Sf-&lq˰k-ZFXY֤NJ1ksYDXijM; -z5׊] -RG.}.Qj1nPْ7w-X vc y~:|i}@(AI21[u{"[u˾Dd wUE;^Du,<Ȃ ۲Pt) hzڰqg:<ZѣGYIAB7:Q3 %ۙ`JS3f#jm|Տ9?Xؾ"ڴi2Ipoz{  ?ݳvuWrx9" zPctd@XH,9(=WmR)brSMu%{g?>55} N=Y,+FCV-p$ç,4~ ,6""&)tH/p%8 B@NJT4\s!<}$vA3^QM%Y*03}ߕ懣m}M!:. LӕUՋ\sb;)tKKfHS .^H<`j b"V\‡0*˳d-5/_@HA 5tR`{|t,QZ2"Q/coCG%V⽐:}ړdj@au96]1+[\O.5e]'KmȜ$7kRHl[0Fb8OI-0/!9FLW2Z|@}tƳ9c`wKƍ?ψ}oŸwNIcq?{o}3Xcwf "J?2g23^Er['gn($ E쮹m>"U*ӗ[JY3}Ǐmp%tfpE+3&^Cw'tlR[XbXo+i Iby6bM)jXuQZٳlDݒ@͙I2IZkEnDž=2T4S,ej_e+כ6x((8~PW5.߼? $p\HDO&6G_ Pķ=CEGdvTQ;M>8A̓ CD܊.8 XJbyFkÜE{D7 {0[>l+ݕ ";:WWA4"9] Z%Nj72 !wqҦn tR/RzO*_8VBP4L*(Ns.e2'djۢe2p˜LS+%k*b{xo7W l}AډrqF a`# fxIXƍDT fB0mJW>~ >k>{\NטbÂ@}!S<>o3,ƣtCI<̠n+J9kh4j9Rcx$'pPϕ DUL&K{Wd*02hEgT|%3˾(N>q]MZҽBU_Nl}\#E嶚AG v'+rF FiY3:_l|chdrGSj[`&E-nl6˒Bl lf;ܼnf;<:NWj(gm։LD&2&G)2JRcH&r|tk;Wgۦ/z=eޗ_(s;؏! `:`۷4:`*FGT\H2)78PcfBgK.ځYS{X(3f_(1o79rD&E'BL:cď::lF-k\N:=4Q$HێlSK6fAϰ'vTe&&YxQ6Fw";-5D~`/19SM5⼼ѭb)A p2]:(9q)kmw=7 D 0ҳ͇D5~p?] c%I}#cOӄ[̉#L4vw9[~ǿ"-+2}OK!IwgaE~(i#![NdӋ&6V)(rT i>d}۽빑[Jcb WP#u=&ZMpXdk^D(hbY].idCv%92 ȿ>~{yo"(g#\>=+ů|y{_][YU~w`c4GeVB1N죹*-Īuz'O]fV)/q#N$jL 2ft&Sx=WoaJH5QeqGD1"4rhRKoi L6ߔb"T$ΗM5 5 0@eIhZSL\[[pcJ6sTr4Gߟ\s7u3Q8 `"a#y2ЍnC` ghRvF&^L.j\ЬIpH:#z2CF\BMԄҥ9xCkP gD#÷E1{JytXW֝;8UqD.(\y_}dTKI3;|p'@[U/4-`u{>LΑ`^qD:7NlbeTubz(H"d֋iO,ULq9OQ\D泠>ɖ`ꥰ=ںJ ̋m[ VCcS1k.k%Wusu]cB4mMG,+ӽ*ra6CO]~B={{ou]:?Z0j^V֔Ӂ%cMl'WHDFFP#`b4pזkJGfaFpgyEНwƽר1][>-G~SZOĵd >ߚ5O?X}䗌y> }݁EXA5NAB=٣ Q;^_{}V {{E$%PBζy>gݧp:%Q/ɢ D fv.±꽶bKi,zu+$*)Xڙ-FđU]q%+vgSG4NG=,k:߮?]ik9`c=Z#{3%,$br ˴dH'R (Gq$+&Ht Ր~w免nU^x+$޸[[`50Kdl_qs>*ZDɝǑLaϬcLFyGql/N*w\:-db#qn[q_s-K2-OQK56>d"Zq7a+:6i :yZ7r(sjSsxq( {$/|W 0沘8jղYc]D2J2 n:)G[>r^:b>فF䖆ZO&Ƹ)M읂Yp-IB@}/IRN%v&W)qa:k{f'Η \a?%vSǎxU|1kGn:wZ\(km te<ڏ[WSWD,7uqY@ffSiJ>X 5ز[0-628MTDꄌ9y\aȪ7$],+JV"lsb0CۚQ"3a/ ƒʾr+ds_}Ҏߔ3exH:6DֳZ5 /b(b[Sx޳6ϒ} ZO/}~;=λxyۿ^$׎bk:de}n)t0a=z|T}6nO}y$`Ct^ɨ^!XEsW<].+4wގMk8Rsbӷ-:flLL#6/LrS[*vyX2Y~Y,I7Z=T -Xa-_7)$&~I V٦e+lM#f<*\ln[$[`qbY_["wl}ZwﰇL.3 ;l07LՈB 1Jmn[AR_TGp$ϼ׏.3jxà&6UL r#k5Ғ46eHklwت!۞!DMX.UwUp6Gu]~=Dz5#ct5!!բcVGئ~sKļFEE[-ek5,fǢUM".%dJ\=Vec-Dz]:*lu$X;uK(pS{V"ͣ@U 0+?Üדn40jkح+zeyFMKcKɗ .bId fDu9j9=mkydtl= ƾ$cכ!![ǟH@e3m=_qȈ͠6\v $#.Iپ.T6(yәrl/HԆ؛W+φcn.JUZ Dޮ %^]{m5 ңlVZV3*ZmfWaiI5Xy+hSN_3(^бAPFY%|nEpZc^VTvM]\1i3v|lR!q`$cgV3n5RͅP$zYEM:;W#/6mZ3tDN_|U:"j2Zx_ם".zteWnb'Μ4Mz]15jٳVpmr$ܩJDwggw+9 +K`H|6sy{4ۿn$REICLOXy7偕碎-emŒ t $:L ͔oE.YOfrO4|}9aINʶ~cdq(R -YT2p7/V\DKy/%!!aD {%q/&h&?c9hh ^ᬸ@1|\ Kˈk$HIR#q oRiP+OȻ9ڮY]*u3ܚOa[tl÷=mlW^q  8PM*q_+f_Ny X*^ 7Nܣb#& bp&,m7^v4q8X݇AoU$K5ЛX wfl~%'>4 JjSzOۮY]N;KyU:힏@2FǏ|vI`!E/$ )k. -TDJ,tt(QKb\b,1p w%gddAяyMڻzi*%}ƺjwk7.J{ 8HWwvcޡUY+e'AgPm6OT 6YnZ#rbk'%EU! G_&}$7lƪ.I "H6p&̔-+]6N6ћda{,lXo_[8'#"yo$z}L1ޖbٖtx[rJJ.I3??Kx+ؙNw7.<Cpk[<3 ZGՕ}.y仇}x];-el]].i.\Gvөa1I`E׺PX>cC(z=tV况RAWdv[\'ӓ4ABB110+F:(OtlU8#5s#wD]:Y Q\;z?|[|jWS}kP-"VжWLK=!,7lPE13d|1eŠ7O*7m;8/%1Kx[~b/"4v[o7QףSaO뱑y5oVa{ieqoJ+7=ouϱ+`X%D={w L]O/1ۏ|kvz__Oyhz^>~_𿛫H_F[ߓ^w&k7|?_a???}2k>^Wg/7cO?o'{'G㫹?ջ~ ?~_JR@}(O#܃҃){x~!^}qjOlg&|o??/}u~o^秃;_v/v`_zo#+K?'~_>[=o'd_ߕ/ ;s{M0~O'?$:#,`dueXNt ~$SQ3|؜(#0 fI@eذ"R^9U{{JDƪw1lܑo&kGLawL$*Kx_}gR<:ch o'g\n . 8iϔA\$ r @l8p+:QӼ}?d.in0wY",qtYy:ho90Zb-/qO_痢M'=<@ǔ)A5[I:\'+&,Lm宮'Fڻԧol$,l\>11 ,pn!plRT:KOoXZC6yBs?`f:g+H9͂r(Xط),mAGۻ17EjV_qEꬑ1{"} ,4-AKl:iKڽjuB7sr:t:ra=>pt)ϯ8hsr᫑ĵXэ+ ,[b Kk&!612KjDA\&HIQSr]o jmy",#Iz!wuccޥ(\jhBjDW1pRմ,Ype[c$u ʕ ^bN9\g6i4V\*Q Ki˗V4w]kPQ54YĥIs_io-tz'k(Б:!1ZsFbu~GO:ڷx}IB[`:# -CrFΥ72]%DAr}UrXr[G(iweYvoYAkU^Mu{Hyp : ay<jM܍j醋 '+1d,Bag!6%^tC`-$Cmܳ[ף~WOT18q+I{ϼHw,-ꙭC`ӰI6  GDICɮ8:ycrƹMCaVb \1ZtOf@f,6XU ]; B{ 0xOZ_Ro@ t{F}>x0n6uyMXɩ9\dEȢ̦=_YaP rL>uۊ:^eGL|'b;Hxmp%i$ "K75 կ>>^s=.1݇W1b]6Cժ^ 1 yH5}gln VPH17eAoϬ#ZAIjNpt-@] ්_Q o?]Z"?@_&Q h:1 Ƹkժ!D')[km3ּG(}K{?.88.M8|):u熽^ׄ 윍aE72=.Pu>3>Q𷊹cO4C9:5m"[F!Ŭ@ &3 io(A< +XR4p}l$;j_&牐5Lrrv>tyP'h}LGAȏ)}sAr68C ;W%'/ؓDXUs(\C\@Hou;<%㗢ݜD7x_p:I'xd<>h>'fHEDŽ\GˎyOص'adMˡۤH`|'O)"d= <bFH@].L˧} CacyOY92篞Fw޸ϖA 8*D؍OO{b-H,=b9#8xf͂;=wI#:x6kY,S,>zd>s$tu2]s{Aq"uIA70̮Y|N?Rk+~
    , ,ņg /,D ,.uRs_,S;)-xG1)4zIe6X5/o5<Ԁz+%GrNҨL~wG孠]+}=o:Bs /) ?-`p`'ԎRuA߉XH t{;kѣ@o:JyCym2{or;=4Go/x] MN2;^YOx8Wk#R7p}0mW.Rlýg4qC/ ty^-Nr|x`q >n{z88o+G Ht7[Bs )<8/;xؾ_mosy֡|yBjyRfESD;2P0<q zoU' v/.w?8HPyMiNН%:CJ)25*GϦ dhM?+Po&,)5>G~Pn6<>%'__M9AURp{Jmzbo'xNМe#OS${!= NRXIC.C-/0'xa.-&dCE(ÞD I;y|H{|t?8CP@dp(sv@p}cR>}zexrSxi5xpnùN;W>;ʞp~_Q|^jD7Ϳ po hbGU8 <#!5)_CVޅה'V<@v'h7v!'&:1((i?^<0&̏27#$+Cr'b2Hg?"Uf c "ai@!dI߽$6m(9PCmz >iC/jva6Ge Gwه!, <^pŽ2=ܑd ʇ !@9PDa6%C՞Piz/^t@H\XQ<e'NP)eS)J i>$/2I%|r9Bs5N{:s̑:=EPN\'T_ʦH(rynT}Y|hCLSnT CrD=A?FP9) ~:2 @9<|+ԇ'$ٽ߷n!B' e!rLdב/Wo!ΑWb=TzpH B9ۄW"lH) ߕ %ܓLo<6h5vy8hyRtdNl\ҁsB}XqPz*T C$erc({2eOv7ZzPjHhMCQ4t4+&Ԣ&p@T݁  HZUy?:0nTMn HH@u<XTs!g֑LlAՐwdZrႀr@% =i!Q5eքL!0)@mHB!ՀrE@*" ~`22ҁ?k)ʜ@QJ*KASΔӐ %!H.m!ѐ9^I@م7aV~Pe 0NLbT7Uɷ)ADs^NH5yHrhy a}gy^zp4Cg[N(@eD(Rwa׌ߑ5^l ʍR e)~ DەnQ~L(J9%TՄ R P*} @}X =cȀ˔LҮ/b?ԅ=P& <@@m>@GBId 7NЩo`4n@<4b8*S  nr\#@j@/0tI)_'N\ށ ?fU>S`%*=ޕTxeN(l# @@9˅^Q?ROJG"HW©̐8ҿ˟*ƅ!B@H{p*|#R@9>eʇGsϧ.0).ДBn-?gLwlwsb|?w!+b*OB XbN ʧN@ s!քO+*Á`_"eAD]iyҡ;2 x=~\9@R!=*/ɕ9!_ĀGpʅOYx1ZSIFzByO89[[ JSGXռ4H v8NHo! 􇗖~4<{B~oL:J 8CJ'ći_iMjHp.NJʆ 0w珼 /I_&JxzO2MCفix!719p|!ՄHd"Qpڿ&E<24Hxޅ$J?!xCrMi@:;"v] ۔Wh6dx5`PO O <2(dRAV/$>#b4:Чjx.Aב ݄;RuL_ǔv  x;&vڑyPNCaCd};~|"~~8z=Ht!C%>PH!?"RP:Rq@||&ď)<)̀J~]㟭dه@q]cvɵ.GvOe9:*luLE!Αݥ)]GQI%2ӻ/,l\!Ե',*z@zvyG|п>oO'_9 6(|w ]0"g<CMY;R WH9dJˀCU΄B'Ε=rC,QܔC*T_k> M2an@!!&Ay jAO!9P(JkBZ ^):pqYu{(~=}KC䎔Zu(jOQC Np ϟJMxLnmɆ??"+H9 X9;>U{񽬾Cr||}rox{9 _ۀA=Eu JQKu/rR("D@4MEFX[,1CH%8Iڄ@5!C<+ιGlnbdǛz(yO~Wd貘̐Ԉ.%PMk9j ܕ:I;:EE!)gִa8u 咕iUw2K P=Maj0DOr9eV糼d@fz^y4qsI7lj؃y*O#xuKCpD扤޳'޳% gg^g,s[C(^;s==zsaE=㫩O4/LU<G j=s>7Z#JӘUs5o*V9q@ ?D :uKL d^ٍEy91y~dսMqkRĠk0n3Slbcv| "Kr d,yS@ETKv ͍R~:Ni?h-d3׎:+7{Hq63;9*.1o)+=xxỻדe84垻yy$?rnrqh~i:naYȳ66gr98"~$< w }JR,~܉>Bm&E"nKj̘DI%-V119]w]rFɫ VƓ[m22.5׷,&~RCc@ IoG 6&2z\xBCךIx5^G!Cw6- hRZ#$9$ q+;'VITm#Es$}-#3]ٹ8,?9-^D0 ݺC^/?>"O8G<}YG pQ{ ~b S0~O>'U.}L(OWRrxr;G)~;{G2\`2CR,=%8,)m#GZل<R5%dgFGDݞ9Dt~N ' !yuӕfE/ ]kPMG,!֐ ˔J?VD1b4 hPcД5^8T:P TԗVuʜ^. ;k̇2JtR 0 Hrf Mm/K<6XK@NVU^r=s4ݬ/1n+Z]еeU(^gŚV 'm>m }o'SX=nR'MAd03<}o'|}{x ?:Q:~$ gC$ >6etJ.g%}z.\o.ƺ@QO s0 Y (JPLm?xLnsp K0"LZL\![U үwrZF ,)r/͹YV}3hcj"{~:wO&=()6J(*b@BTe_ Xde{!yĿBygsc?՟GOy'0/’Vmhk :8@n:J ۸(H~EvсtlH\bq$KosXE9k4qΠL26ۛ.,dE}֨<Ұr`@k]4&Բ ˨^y&Iɽ1ݻsȠw{771ԎT=<޾ِ;iJUى@[G?7yWh xR6jE?/x炂qJ2R5p+;sⓃoy~b0O0N{̸_1Ϭqw.hi>W k%\J@^䁐 t?5O9ԷLʊ 35 dT BSpϬJ1>Vڣ-@IQυt Nr8Bd%o⧉}}.[=nr-U2؄)S=?^G=r ǧUSn0$ߟ kэ"WXxjLU3OJqvo;KհIv>M @ - mi )C|~@7 Kbz|.>IMX<} N}Rd|OF.rFe L/SVewLݦ3 Y٧g3&WTט4MoWM;kWm#0'[>.jcܺ0<Cu p'y$vkVb{=s̉@&]mσǨ7a*H^nɜϙE]iQ_?]Шz*zGX~ BY|mPrJ`_ 5 ;<#ϦY|bRWv RaLa@^%)DJkUXե-Ӧs,R-zmkK jr] WcPq">>FZQQdV0Q@W;J Ǜt]e?"{?/߀Y^ŋ4`z< Rb #PPP Vö LؠL4l,lD~VFUC#!2ؙ$ ^LNO0@MK5o-4&>#w_|JP+grjE $& oxS;s}f r2JAQLB<- JSaL#P5kXmK>'T;'#~'n)9ϓ=ey2Ƈ -_K; ,YG m?ogI߷{G@%Uzm*kE!`yAdA׽ W0`/` {JG{xA-/p^k>k1H{wyA rx z"LJ{#`ߦ=w0;^5ǵotWA)`(({dV]3F ORjs;GO!C˕2Gy浀<,XO$P!of|uu'6ʢRHb}5PxoyHs3ACP?]^}[ҿ*_q<"W -VVVUpԺ d;14d27n?!2:IDçdXAicHhx r.S|ǹne}Q"h>fdQֹpԓ!ˇfsu,z>nJ4)M J4UJB:OsvlLGO%V3QY yuYbB[ ↭ӷbLOe*(G\A@ߗrRDiQ7tfC 7Rwy;m676㸂nWDjɏ&|;wly:p xC1PR%_xW* nbb0涼5\Z C$8^> ޼uiE( AWC127HEe)\ ETp\8 |N|6$I |6v=PL:Onuތu0OZײqSb[N$j5bsfIfVI3ITX_+d *ku a;ap-R-W5r M\ cxs|]?v5h2RQ/.uJrnW5 ԉJjB947obfMjMkz :{wJ1v?;HiT&Q!@j<{=Dϻ77C OƁGRLB72+YyޓY QxԠYX#O#i( BNf%,䄠N5( vsnE峸ׯͨ0c!? !bXAΚ 3ּ_rxblSP;[t{A/"~%;^ODj$0̰s*.EOgI~߃|.B~;%[#m/Y\wQr8˸L9[8̠)Smnuze&,هl BR<dP</)kf/i;qa˫ w;9zwx>'wh2G.NGhl|0|:OO'`2 hÛkgCm7w #?&\Y8!02D w8&3vCj]];po01j!&SJTGOC[{ӌp oH.1Svx8 pTC%D<EfbHR(0ZV4B #JHO8O{0jp,Ĕ z}^Xh?/~ߩ |N0 wky]66s8u86 @(cǣtft1q81ϭغVx!gzvdk_c p Va/2Tc] TŰeM>AxO WPd@D00C0MٽE@OtR/%sD}A {Fi/q% ^u0/KFUҊĴ AZՂy[{ӂ 7j^^UgxWG_?Ky' Ln`0Sp%*۪wwXAeB#ŊOE› hH SC8c1Bpe9XQ)[O0h,>HDh=qj:B*xVsE>2H EAt;_պМ C-9z^)F@)D{ m5w7TŬԡU^>mRQ{7נ0']*(a@(QME)@(S}IJd5 /1:5#)&\ׯ1XM J >y.$/A  *+q>C!XBBnz뤕X 4dz=6(di &N; {T<E9ĬFegr^{ڥ0 b~"r/.m{ 3.e&C5Jw:jV(}Qה UfEӲ)kԁ1`±!{Y(u5W6-[ga *TDǠl6) n.M3S”ˋZR޽%BA_hhԠZ VԊ[bH[mpmedĥ+&-n-cAd{.H6 G*pQt;)ЗƯ D`OHj_F4B SϟVWSFMJ")߶[c?.0t'O?SPM?7?|F(^_uTQ?Om9-|(iG|yfn-]7"{n"Y*o\W}Hv[P&L\T cMtѷ>X]3tuDZ[_F' '¯rye&}O{Qw8bwPC̗3+ٜ)0ºc)ig[̷ֿ]ۖӻ2Sн^wk}i=zF~g^]_13͵tU!¯naڏYw8gZذzyؕӨ+]g/"7F7o賟{8/٫s0}2~x` R9~_yohdf߫[p`}'~?-%҇._?u:c+|''wy SUX\yg|Z~v|`v{swk0%2zr1>{B_0=mnтc$?Nw\cbsmv9ȷ}m6Zw> 2"R9|4^w{TÀRJh{x[y/jCHL>Pke8xKXE,F=X%f>N$RbaDZ0xv{I]+qX!ioƽ=m^UB\kߥZ69b .0hv|ydž L~t>G݂USJR; Hrͤt 5(Y\m ;E]vnc[ Sgi w9}!)E()ABR*e,=oj3YT#O}K/p|BBBsU ^{Y2"ʇnlJBHPr3O%TUusjvr?`bVX*N'Lv=B&bRWKa7qy^v+Le'P~๽c $kXƮ6BeYj8J-2ʶCsWb5*e,aEUKqfˣC%ٺ7ۯ'`XQ ;rJ#Q]ɺNz:d@% aCgPokck&)sRaJ9̐-㸴=6,y]՛'р 7pj__T%TY/G9c߿SM'URWLk{&~n/ K\M‘xh9#[_ӡq3:3B0%&NXuENkx)M]ϖVxuڽt6" dcxޟG?+w:{Hxa&͝ܒlE>JZ{(l4rT͹(?9#ҔtG{oeM(9S8IWWχo= -sϋO;wz{YoTϭaoϣk_\u p2 r/'"X3\(Dmm@CZ-VŢƊѼշ+X#ЪP1 P%*LZ*jJk65TUj5S,Z[Xm}Z5ZF߼BJ 4Rҥ @4߁p2hCJӐ.@4* HЫT*4S%p)Aw@((qQUElV5-mQlZMQjmKhjKE6hF-FZ*EcVmTj6Ѷ ѠڋQ)5U6mcTmыTZF4kkQmIƨŶF5FRbM6m%E%FՍlUDU`ڍb2bZ+h5Fj*ZlkX-5EX1Z1V6-EV+Xj6+b(chfرMKFTkbѶk3Y"MhضUVѢjFUF*6h2mbFh6KZ1ƪ4cV1j EhъsFKQbH֍wu+i+E"[kZ4mCHTE ǩĜJFX6-IIQAKŮpiD෠"eM/٧9CYyUM_GN> 6 "wL7wMlnXw>= RjDߐ>~gЄgQ=YIMΟOU'`׃☏X0 6j|0XF1)ל,ƴabhCǟ{ ]Po00 !_uޠጬُ^$1z0@SO$N<|fƮn =DmWi}NBw̲f)&;s`O)jNj)t]\ B8bFV^ qnְEX2 Ag> 6-DGR/e62QfaEyQ7g[V@AY3dDȘad 3 kґ}.Nf[ i "GVQVIl/_E;&f;TNƣ W}(ߚs=ύž3<2.*It-! V ~{噜7SK`Q@`5]9#K+ .wJZ]V1-%18{<~OWYwCZ-4r!hNû,VkϏU@KA藲-*1 ~#WfB% FJɤN3Qs 00(ay ?>&M}\3ΦcAuQ36R~lSF # ɜkE^:ۼrmoQpR{XO- Q;{)VyOq^}/}{?.귉Jna|B˧ ;[Or\"$hBV*/O~OqߏTQTQY-vv q= 'c_S0-$Q!x 5/\>ͥ4j,'Hi"mVs.V`Dax9)r'$" ~A~>z?6|CE&0mt V,m"*7,G(VKP6ʯI}+ρ5kD#-F?=/~֐--5A0Ԡ$I}p<~`O_GK)j#Jְ@QJ"9I_ݭoۿ_Xly|Xnv6qiF{kڸ~y#zű'~RbaưAh>i{[/GJ+UPR@1撹 >u~l[do+ _S+rj9r+ d" Dqp(Np_akQbiި_om;Ѹ}87avmRO2cruz`ܣ*()WMUsHˀU/t$Ytbztތ&ݽu|#m]pJ4]n;+^q&ۈNdh|y5Tr%*,a9rQoE7eϹ{R>9OXimm꾴o#r#J5P~F47t6L4|w[LC(hZD-E% "~R5:>z׳n%ҋ"3Pp@7VtpQkcTb D }_K=ZBF4EiJ5 H5GFBG99Kz䱌IFY{3ټ3# @(N5,ߠ5Ww kZEx:PyK^a')〓V15PҔ(+!@PLB ۓwqA홄f2`)m-\Z_"iH:.>IWz9jĔI)M9UQܫ.cYl:wTVŮ}=;}i5Dj;k- $MB~^BƖ$H%;e-}n1O~զؿFNs bѨz7.MJMQb5 }gb @ # REYf(=OQeHxj{d+Ķ-Ems3PPw09!Jj&CPԋi @}:bDIsr)AikJ*:9'@ל0\m!+m~sLY8_W؋CH412>?B"^MN_^PQʆׅk1Į~xĨ2y|R(C׹l^01k$C<ĦFjx.r' F$YSWW<  Cq#J?no?P?߉__~;>/k^/M?ڿdK+aWD ?7?w}ލ]uڋ6Kgg[/#i6j\ܧ踯Z%ӒDZ7bޭu_\q>WzBd {51{_C >o!>JiiE`?j{@e\?o=7ߊqHZ_'̐,V~\fpU.5/xȢW4Ԡe^.٢!sH2&6Ѱ(-h_~qaosIrm'l"?M"%ZX!_=eвPW-F!^Ai>YuRWhy%-ٷ]@en ;µdLm ̖&~~]?:#:Y!ZoLIQ$څʕN'e-Wuk_i{ɨ~2zښ|5\$kJS7qħ~}2 KD|*qp4DENW_ b{^ҾzB ) KH/F55~6{C"敜7si![o>ι#Q܋iDȧ:r垭W7- V_I\vJ$d?4J-,~Y}~X{mB;% z\)_'\\t̚՟c>gn,HWmJ%ijm?o9v}y:/C^\$ޡ8GċqDg i!p9s(_noT~ͫ48#zM2 sN~-X$2{rƆ9sH7N#hY*Sôl~fYQ15GM姄j- $>ݢէޟh*\.Ԗj' ML|~_5-\}FG+jtcܹ"~!u?#}eVk0s>^cgr9k=W|k6ƉBL2JQ;5?UWitȞI5|2>>gM,T"3k3 .AdƐwp-s3_bin`DcgüOьA|zLQ թ|- Kttdi-dԲmkqC\xUALNn{Rt}ar=|DCs_j5jl l`{/ nS/bƚGcO)6Ӷu2Xuj2!b-~U(^9u>c%7](?ȶˮaӘ+K2w\%iqO."$K'.WAp/T#V_7B ^q>Y}$_^ãJaT$z0^b,vg CUBYm ]|-CU0m's 5|˻hṹS"-,J.C .:n W8̱iF8 ^,gF#кH򏿥J~cURt@5uMkԆ\n7iVY6*lE&l* >kUEI?IN@XJQ|2joBFEn_I8n旋s0\ݪe8.SHR󗑾]k$B&$.Fl$*/ ~,]znty輦4-rMa^M]J5wU"IC$.崛fu˹t.\7*.+F5[Шt{ǙQP@4b2;0~rW9IbIM!j_z~*>A6ѴRzk8.ڧ|_S+t4ҞbDy-ʚ&eL^$k2DX=%qztjfY .ch-SwD[p{@EV:3 Isy7Xua4ƣN8S"$"Y]hzIȇ_ W,ɈЭHv㪉ssR#K7BNN_*ѭXn zt!:P #۟WLxƟD< O Ck!˹1終{]2o74_jgc %ikq3ZR M\t g?c?0pI?|ߚ?ix< D_Ʀ;KT| A<12>OR̹3ՙKcFm6?eޏZn߬W`Z4wo_?<_wsw|~on/g{u&bysp#8t~07?%-+Uk2NS5 '24LBKqUu?򚚵m4\,.A[Ո Ky":@֣3˾M3U#L*md"隘r;nĭ / 8f%S5*TH֍Y=XNx0kpeJ+[ƮI"iLJqMLj2_>8މH Vl٨[$_6jXJ: c׋#㌫D7哆Unϑ)hQDZVmC>7kGlq i*ЍY T\9);OWDXjK4@QԑK.@I'MKkW. t$ͬzZ'<_]V2~9)G]3"Y_WۯeS՜p돆ӘޥbVc9"G|6o2&w`F?HIrU˖?ú0u \fוMq!9a \ čbIԐ|~ӞգkЄm.jX*Ķ\6 3&cվկ)ZN$4!5"+O>2 Nj ZȮG9}ncj񂚄蒐D%w14w!be범-j2E[X;&ˁ+ eʻ|Lq,|IQbl%dDJZ6AsC|`T| j5KU׹yr㉶I&s,]a6_4?n6d= GAK[[Lk|HbRɻi-ɲBge]̲4f4gmbC][\%ċg[BqeƄDTjj̹X*VC]AZ]Li2+J!#f#(ϓ@䍑)EdNݱPƢCZ,Rk]y,JET8utLuYuez!>I§C9 %iv-k/mc?W>-F6d0,Y @o:9GD#dDJ3Q# U˟II+5ÚvܻCH:b6jk rpC❓̼y|ɍdd?ƨOj%(6Y:i8MEPo XEaQQ'WJe2A rx~?=W`S^{^9c2\t;':2XšZN:%6qusnS.Diwp0\Wwߛ S{4F\HFH,cTj2uD2De5hfD<z9U UvpXB0YDDQn0g+֊#Iդ2tGMZp6(INIÌr_Hsw߲/oU\Ք*%xmR1 _^ۃ$cDJVr*E0q*Nd )I,hR wDm.M9;]ۃr6n ч91N&IHE^7_:=ERi"wVAlSR20Hec2C$tMHq.dYaI^*Ҋ-Ҕm  r-TJ3rKJawQ H@PRAiSپo"Q+\PPwߞ (s,qo?j2]^W djFI% -n]7HMhǚ\ms $1d$(hڥ-1b]$)AiiЊ!&a5QurpFR$.m%"%m #3ooOѶA ٮ׼+9PI3-2@\n]E"J_bs{u[KQCfrtc:"Z.&pY$BrK1GW3W7*k%3$XAd1o#U7>̹jlK5~$]HwhW%*ߌɠPs>QGn$\"d;g1NAjf'. i'wr:"ݛ߮p;xeȕ.Dm2iE 2S)w"U:chݞ2;j^Z`\Gs+L.дH3 die˶IB>@#lkKw]K{s#QXw"IijҢV(+5ÉV(>t_JհAA\kkrrݖM-$ŗ i#gx" *&3H>Zz=mػ0y6ڌʂs:>Н &ɠ_n?v⛟YjmR|2 <+Wrb{F knRA:y|]#؆D(yh@Hd$+m [$9qX[J"ddy\`ԭP=(jO$k}5xS=yy gbM}4$VS^gV@ԑeh)*.TF8ҞQs?Q uHJ[AJdMeȄ $HcswDKvl6PjT:Ya PP& Pl;(UBs\!%F(rܶ(4}PI*`A=4(톚[dx[hIJJ@ @ ڐ ǐ7u|;竣ۮw MQ*@85g{N0(QE*dR=|4 &2i&Lde<5=Ddbj&L LPISiS224i'4`P4@MA4S RxI=Ge(=2=@Ѡz@S" " OƩj&OI= zFdO)# zdz44SFi=ShzJIQd hh4h4 @h4ihh@!R&#@BihS # Sc)5(@yAѣ@Bz@h!I! 4iOQ4  4h h}'8*O)D]y9փɔģ~uO@{J0* )sL!zҫQ ?Nk1!܁16;u ERxZ0{MO'Sa_8U/aRJVbգB.+Ĉd]A1XtH&**[Ri.SIww*<2qk޳#F!^Bo)[Bn.NJ2%uITMӹRs5&T pHppccgq`$ijP )) \3a'~s~[JT9UYdwYF'=N4q i zgaʇЩ&U$ ka(gHxP6*Pr'L\'rIm ;Te :#WP[bՕ5\1A#pj酪"FPIf&&A 5):I[:e8 O.[] MasZUN+ U&@$dD08Yo'nz20y`#H*Xdǯ3𛧖 )tfBxI]nHKAq#l-uZY{pA'"sa #w%9T{V}RZN[AiS\hgqU˵|ΒO$M+.o|:n w%P*lAa4;Êa|RhnmQNNCxJƯm'Y{-FR!nj,;Ly]5uݬtct|ZP(R)V)h+dt4u8n1K@pc۟ۿ$NUXIXƨUR[vnm&XP[AIBR4m^85b-QEkEk3V+bqjѪ1(mw\Xjhh" J7ݼuF|pyZ-Rt[ V]aVpK]aX-QsD8sHjhJ ZlU5{FiZ()PIMWIȮa ѩTkh 2;&@LK1pv_6YDY)Tr@c%^AtoexI&nfWPDl܅ 8@2AiFfף s5< ܔs X +glaRv)r\sp9CLWN;ۘ޵q*DY@ ͦSEd9)\nG.vynWQ+{z@R RHPSFlV5h1ՃPj(h(V6EIU[!h֢X5Fd(8}C:t글ZP(R|Q b-]W شj-Qj4,mBR%PQJ,^݀D"J*@(S@dB0B-MjK\X5F)Jơl}7n )'FQГrkgYu L+K5֓9}dh\c\70Nv`jrZ|;x (HĊXQUEEP) QHB4(HVzk+%(P((Hm-"(Uj1ItVJh6si ((1V-QE QRw0۟l_`#Cԅ4%-%*wP--RR^yK`se6qhC:Y1/t2%NP[CkHQ9k`@G"Z PT;On@#M- -oϷ~]y#hjLVguWR1Z)g0JhSP#TU%:\[xKpPF6-mƵT CNDeptw&uLZr&\Ivŵ\EE R4Vi)P}tDJT)V)@f{yWy @*mFSMJ %(J7s_gf":wRXs0.sR <k@@4H hϸsې*9[s2! a]4Y_kk{UN}xߗ$<#5ݹĔdx=a@rN]5˧/Ix|Q%FjSSKATC09˺VҌo$@.t/k63 JLE ! mT,$M\tx!w ]$7c.dl`J h/+jw1.[ms$'!; ,Fp@c~{ljxMAT ͭKp`Ǔp̀gkvMO94$+'ı4F"6V QvxsIh( Fa &B VJ*Kd-i+kV&C@=6Hv#RU%I%Ye%*FCsY[l$$ i8$-I`N44l@Dc0M0٠D@,B8(‡3`VR_ jC A)AM rj-takGǟ$CT"I]]$k[@"4I۷{{HxO 'L0 .7 \``q^}'i96dKque lPZ"uXv)T?=j e CQ!G9N.T{\* mӗ#IkřQw)1H( "QRH @@nb v@[LzjR L+%"! Ho,4֋ ^!,(3nUh "pOzo/);f !NaM8ыJq e,(|h~'&q1( E+BӹBB AJ $m)P;dbo9Xb)#pI6.=6KNyi[IF&q`>RR'F,Be%uLJӱ!GY7Rom.I%W3XnZƸJ(mCUp 4I߮ x9fBU+k2R!6PSGRLUv9 )m:(eB?{iN +E*DNjX67b- W'[ښKXof$RANލwm Kj)k&H  f!XEPQEӜ65A#PҘoǧbvH T(x m'[wؐpS*ټv":D̛̜ ·yJ!n>͔vq0D<T Wɭ(>,9y_8iGqZ[]6NϽ]k8F&p=ws+A3rùoW_H5UMg3NeJ _3&<HjV$Y F^>F^B3|Q\}L FpPo61 oyBcD9A17A8_P<].{tIJ#-ZP8g۶@(G_mZ1 6-kȤ7I*Yg%يtNEH}bI$.=qPv3jYǁf&,})H,4ޮI[s[eJœYOx3ĭ@Y%}S8%ZUȭ0~{PE ϥ0}gW8@26]bd=LpesUJו˧/sH'T>vJJUblFhQV[Y>8 vimSù 𻷙:M[ɩ3Hsu,ىI"XȄ-PZuDYǒ;^χ`JǬjΒ[ihwg89^bI=%+ $?'R+{8= UTԹqB&/$G]C*l2:E ]r9m)IԒ=-B?Ok*>PO+!jR{A X\ڽzb>9,x#uOvL?Fr,iBkZkID#׵8+\ec[eguŇ6mPp(TjT}J`,s[$t)ޑED5HK쐯/ cڣrBA\@sbX lxVȤ :OYi{#INk}fi$7b5Rba7K8q+IR|;e׽=ߤItĬT~G^^gk+uX򣌱PC ݦBU|Gl`-*"P9۫%ݟ?[r+8e &n#$EƬsg4fe:*RzuX _l/,Z>ko>6֫A86xN3 +\Oyi1uiq[>Yц-Ar~8|q,EHWidnA|F-K,i#"sy~j74m$GU)YB/wM`Ti*tc`R_Zlk'T0@i&] MIU vfcm&b iƝLfqK}z++bsi"O<{)$O-1$Q$3ϫf)7qWF,,qXB @/l=2qpLrhrGwIq92Y4Nn>jN# qM=>爕PHm;܃*0w_dϷJU Z˟W π3J.W?? Ikx1owIΧz=ġCE8U%X&n QMϙ}icsMO'R>}UBi'B!n2C$d["lI輜m-׸)0,g-FFuJ]ͯlqL2I`ʟ G=fC0R9-/idfaw i^zLx|g`4sF@Ǘ"i ˱O$14&=/y5%gedeG3߾FBX9&bmQ>e+|&2 ?!@5B!f\#qOCy;JE|934( i R+b_yr!FIIE1hq@T3"5gnZjoWbއQEF.蠎0A8T4 /{{J 1s;r`)6*o?@X;*qLx)w~پEðd9U9w _\cN B\A ?2[se9t|fAj[OU<ߏ("(@XEYuӘb1Bb'W57 Trr6.]$2#r|7mL9}ݥ9|; Q; E&j[?4Q9(n@_CbnSckm$ʊ8!҈H1݋#"K^eOǒ b6X(zU+iqзvYd>X/չXfwu ͦsŠG\2т&d}1X G Aђy5HB^e4m\P;*pF *{Ycn"#JKR5Dqu?[wmA,lM%(ܐ$O4XCHAMLs|zy[Bbq׹fSuMA|J;a\Uid_KC1 tdkkkŎ=1ykWj v;[ٷJ`cPz͎sPAPkS Գ|l$buH0C;xs>At+;a-ք39 Yw&9|]r UZ`[fuw|u*=(iݾw e4}zHV"D25a,EIy"x`|#;.lCC_>h Ds\xٽ+d`8kF4GEGp@"n+){rv Ge4.8~/ ݽ,* N%kQN?_1O@dj`aìŌS;M뛡~D:S%#ЪiKuU?NHe(*3f%PTņ;AӍݻcxDnk,΍'OͶ1:A}*<ǟE_Wn^$XjBfy-Uoݪ3V0s,AW#-oV[hIִ֗HXX|Sg%6F7bhiF `{ 8ӫdhI/G~obOIO*HñY]s}s_h;l}Vnka9m#/.]|/#Qϸ%f۝ZkBV}x]!*-[ƈHDvr곓vLbG{T,'* ABDzHhHJ\)ʕC='T/M "o'hwq&OIWP\?hd v͍V~}H[{ea6=-[B D/۾ٔA^ @M+d#I+9_ R*1~B@^~Y nUkujyaT<p&Tn H` blSJɆ|x%7]ϒGxz0*91މ?Z뜡H3bs>{,VxsK7 0I :2PB4+d\*vhXO b^ @qħGY _\_oYDYƺLp`/b8ÓgRpV&;g Qݽ.DHXM%m93Av&cGgliR|5=pt'x^ v%d:O-UH>K϶$#!.W/.wڂ.~s.Fur3yzfH*,U1oy0z ؒ::q? az+P 蒣]d|?]AxcI`0עROSy'+r,Be-_f!1] ^>> SEfCZ`7$3ђjiXfX3d%pn}=΃9 (J,D2 1' ?ܡ]?xWuۓmEUT?ZΓTlIxTjb*Y #ixy6v'))qs瀁ekEeR"'p>hpk\u(glѡOeôוh$U_4g()~6Nwr `ns0#QDj,Os Q៱>i|1c*ӺeP=Мtu\@:~J^'.ޣccT'B fMis3Mv[?q@Nw&Z 3' 1٦hg랠@OufJ53E(l !h?6gW;^ࢪ]@A`ͤ+B}N2vIqU9}cIJ-}[)#D~F 4tfq#-9J)0-V$Z: [}ys̝QÕgQC|v}eAqZ਋|TftևL25ȰAuS}MRF>W'O*IYq# 4P^E[9_伟֠Z0sJ2eAZAyu_\cTc$cJC.+GMr,>Rzb{{b ن9Yel3 sD}1(yjaxnnQ2*\AD.KE<݆ 싼Vr#my#D [i>=~H]El9@Қ p5NőUR<A;A|߯xysN)$eI1 g3;-*j' f@4?=2]T f}6}uI58K/m4\mu^yQuX}a{b<Ɛ2p}5@qZ຦-.pz,ֆ9(L }ȃtZìt.[naE/hV*N?6O<Ge; %F*b*VР0ߌq0 M?NL_サQy֓\iG&V;1#Cτ**Zy`1Hsz̰R17yzgO!u *Ϲ|!MR\뙩)o%N  $b)+"fyhमMgbz2eͳg5 ~r> ff ^CUyת2XUm57l"$\ C4p$-]j[7"Ѧ`"~x㥀FR"ɰnF~e I?Wص=?N _+.q/ ?]BJ:ۇ{dzgmF*'n![4X1c%2=͞vT>G1G 'Gr~F49'!OIQnz!%5]"[qߚm^duj{#0ެpYI!)C??rIvAFCYl2.W%~I.c4/],O"rJ;2(T-6י' "A9Rp~AO Ak&8 [ABlwVq1 ?u)HOﻢMCJTjK܃xɲ/'< Ջ<.zBQqaEb'dV1u `Zeǩ]2v'Q]ȎV ^I}:>> (x nږC҈h1:̙:Y盧AtВ4.)"/pnG &;O\-0~?7X9_  Y 4q>8GA$pZs+ "v>6&`@pH,}m:ch5һHv!_•okNaa2$Ry)+p'#_z,)OpF5Zݑc. m7LѼXgUFfi5{e&*e>v л䕊pWŭ}wTL, yaQ>>PdnATR]撦FJHx88֑O-~@~b+٣趣tICW0O.lGvk\)G6I @Kd~TxZ.ZAeR >k+r0!4l7 ˊGF=i\X|jۛl>hN [(z+f9&U-Q^&>)jtSo4}kF>]gЕ ^1O,"[vcY#Pݫ-W?r YVL`LV^Үp <0C)E (D p;k9fXs<*iruW=g%>M'ΔX~=r̕b>QURG}<^>ѷf R JlyL׃R%JB | }adH;BYӕS{`m O}n72C=821..\;}Ɯ5W|{qq׽ Š!1"ux`I ~] < uxEbVzCۣk{\^ygh7!ֲ.rpFnspa0En$nw2I|05LvxQGv KW;dO@OPa-ڑұzW2w ԿGv]r|S6mSFJq&R␲ dzB8  @®wyLr7AUC!' k֝Om4]S8Dp+Q6R<j({~o'O& 1xN†?HQr'6Aw'ڴ# DBRnls䭣uαI ~Q}xS^$GL֢yS1n3FT-B~Bv[.CdJY+"qBаȎEYdcڤyX;h,ve"^17_6r RIQvSjN~B¢09*R] G%f79ypPfľYV.(xH4~V0CbEUa6l<(EUKtsC?#⭍H'`У_V_`C`<q<4iX/:Mýە 4cHKZD(LDN^ZxjW7VSb$^ qC̘҆[Fp6XyStzhp$+=`':EA9S jh֋;g' lxlJⰣt7#{J '($zzYhSx`G.ӕ=>ca6~ZtO l{I8dď;RB2h~*6+hD ~hf"§؝MVZZt0Kpr;bfw +="'8e']0Ɂ]즥[ l3z^ eɿDITđL1'`湜IҸ#[f/ !~L\2F!X2FQ9=@c}aՠ e!嫙ʇ!$Ӈ5cǔkI:[2}eȟOl([o6&9<-?rzK݃i1\U5VhBТ MNZU“N1w:wGCIȀ%JkQ\ wB.rov&Nܒ}A~62VBy`*I Z|ȴ_ÿ0Q2c۸CDhOk@ 4'q\6 :6xa*QYQ?&0I'=G/i-쌕5cɞk'4,E  U NnLJWUCLاi5s-8_7H"xId{XH+ȨAQGEm~.rƛK`YO&kKs-YeQ3'[5 hwHAh[$V;z n92<1O Vzȸdn+*+cV|R)-o鯎:aT39w\-I^;p'LBޥ W2?ZY*om82ŒFxV_ (?±_h\PMnK;8tuɝ_V8Siţh0TlJܟ 8$%kR7צ翕z[p*5Tկf ?7 kV1.tr<m= :';,}زuJBvShٱ3. DmppcCҽ&ܝ VJ{Kqnˑ[iczP Z%)jA[ W䘻fD\*늭yyp3K mRf_Jeᵐx~ޫI\E]OwF1ޠOV+Q"7qyvQܫeP*TcM]^/W$]}T @TḧOֶP﹣ !Q!b5?yz ȧXJ|kV"o,:Y7jI[cuQшszQ4`-oP4e}RNaG[`>Jit^{5O͆͘l))h*TEIz^du9q),b`jΧᢓ_Q[+H15_fB1\d~ŵt-*ͰpihVz q.= eNrHݛk7ά?UPQZ/Ճ<iQ[> wHIl/vYH)mN8 U[B{)(lb ,%,PߏKb ;eC 1ѼFEktGu ڮ|L, GOuiO@%{1cf@e.GX]uh@җ;CyMbH#o0̓qTQ!mh,f% <1rTiygQK ,K`ݬ?ډe5Ao~QYtn>d P4O#gq@JݒPoD =g8pF6ǘ^6 rlw("1V"©ݒ:w<uE A)am`.ƫ Oa-7P0ͪ{n}&;ޟIhYH q`Pat5f`?$C޻.8XmkGSd?..7|C#MĪ'_dJjSo^|ej _]hx4’Yctg8eH5# )w 9X(!Rd#o(Ss8=R:8 6^N^=Eߗ/ -&7z)0O'~)Ό/YK-2'gkƹ :QT|oP4ǔ`=0Q];~a2'w q.e@QEdkF-HQ Q%Pl'I#g0}jB M"miuS\:MnN5uC!*x" eZfZă&}|ABh X^D{ ؜0e``!p~ Fw3l#zvr||hhU.I<Ο+v_RVpkV&4̥y3c7ʘmxSFI/;M.=E*߬`c{x{bpȨ_ē[Ώ''ۄeHyG~ɍpƌdvv Qik`fnL3*vp1{dZy4k׋)~[M zrz=$tš`'͹6zahi2ju ;9nGs9'ְ`% cGeɮ~UWUiGvG|?F[~45@?)pGQʈo|yȇm9 \R{V(<1KdVvˮwfjŹr0JrayŲ7ЉJ<.`%4 Tv @XQ,=i_,CϺni894,^UpūBOlVT@Ӄ#;lJ1ܴWs+(QBHAPz}q@9hyQ`TaޞVΈ x_GY3줆Ò}qW?]XUV̙i\ф4nmi) <a_;iqM`kG^8u]M%1 j$wLHB i_tZi҂ k$J)H hs=>`>E6:0gɂ|SR/@d/YԼ_^<%'x'kg`ЃQfP`MGx2@1Iyۨn !L0π;iH!(k9Kn&Nqp:*tbDZpU?v3[53 JZXe ڟHtu1_mC3AVhBRR,xoS<~~honqfL|\p +8Oal8) /szUSzGY0u h*"%nl:/zrG1d ]UN=b塤 jE xΨxo$AڐXDRQ6-u84@:ܘ@5 BÀcQH;u%?_5O_R/Po}6EJ[#4!%diEEn's0zLj>);UY!3=4e-5l]r"~RR-P'H>ɮ^ VE E#iF\Of (f[:V)_J][%@ <Ɯ0;{ۭ#"×pʺ_rAfIt GpP+۠/hva3lΦ-*gH&+VZ`5Վ]`WM 1=8ެ5|pK{Pw0 xL5łدLy'{*ȨPEwh.(+",JǀXjDn_HmC:inߓʵ-2ng#Yyg=zkF=[ߙ2eԲmݏE8;n9ZȊע6'~܂( \r0k$ Omܨoh3(frn!If̴/N3VLTKnZUGRv=Xf,lYt _Bކl!l*4zXJJ!AađcョBlN#̸t EvZ_%|»i U[z`^[t~1oF*I, 9Rq`3 ䷶4rtƻ_ 1 e7N5ef 9hд|? ,A~7ȄO#hvG}Sm~toWkA!?vgK>'*߯\פA-ѐ$:Ag=s LO%:/5o5ve{M!$P9(UL7~ob/HcPkgΞO`yܗT !l DSUd{.'FV^+#rNrnry󌧉kdps\{vqCve<{ԕd٬ғ[1`V;ھBkUQz|TP  $6NH]7pMOǀ6lϯBq~6cdzM*гY $jȌ" E/= Yhm0H:lڳP5N^dbʐ]ycO?Q`:]d"IbdV7»c^'xg{ ɻi"bè _)\;F М'[Y38CfabENQ5Ej.!pQb,u: #b: 9lD;Cؠ-]Uiv NeS={`Iquw"I7MS+xEMA54Rʩl[$)lɒTޝ@+?w9+<A N|aA&%GQն޹2>2< vIs"zҞnVoCCW{ wURf~g@xFoX*Ss%I)Hv!?ecXMRZ6Ǧ]JxԮ|L8608tQ1;<9S%tUa\JemsRV֒/y;7=(FӽX;<גފ?dacEǬ9ɣoZEY8tDP^_YVYKѥw(f:w!e4G{!k?,eooEťYr -wiCء:PrAXd`BDw@lVMew{V>ٟPuP-#n/jJYKSNNlOׯF E 4ÁMG@o Fgt$t%Nfj ,#U^5WT ~kc*$P3 {ieH10#\*vZ.7;xͩu`x$pP-qbT%;+c eưuX_yjHM:V$R?އNBeؠFp~$TxJZ EE:!:;;ryi/Ƭ륪TT=5ECi‘j?͍i-jϢd R;mg/j|W+wIL =`Ẻ];|Ew&0J$3Ǔ̙2;jP!B|N;|Rɲ՚'5Cͨ;E{"j|^Htх1+̿)kU^֘"%yS00]ҽH0Bxk!v[gstD5u*#=6|* y tKUys'/ 6/]T1x"}i풨PB{#.Vhކ/r,IACFXZ=6v.R*Y) .?1L/ ܳ5I.2s0dMKǠ4267 B2%PnovD,f;Λ7U Iy'c3wF:('dXj{JRn qvgS&qjKjW6-gn傤;k[bk؝I3-=YtsXQ_3g^oުpئ܃S!Avf8.*Q)W战ױXUnQe !`%Źp*KFBjgU׻*g΢E˟YslcήuF; j.QI;T[G4noҶm*4c.'6 8x|R8ͫlS'%6xyc8ܫ*^Vg0׷:v:҄eW2f܈/,VE6o Ԍ!->~?f dv.mVʦ@no+tAx) n0EO]q竸/8B0-֓u]xIk (t6<(*!NW#'ݱy1}GrcQN+\׻t'5&Fl}DЏ#O:nq\ˢo'x <#^e1^}gqh=`Fnx2eLNwC>tg7TNH0@)-huG΀-ڀo'W #]LޙK+;` p`QdĀ|A%"IJzkU !K>}w wkU}3(ׁ9N]mmK؛s? )-$g=͓On& mHIěk4\Mj0|1~ ncu4u\dE[i~Y 껶. ڜkCtZqzvbZv* ȱ51׶㹾SL0>S?Il*ُSM@ݍGG\¹l.D3"-?dš-i? J>tHz.O1;Jl-/EEe&xQW,qnUJptfLׯZIsk"fR~fƧc+U|۱cIrX{7p쪸h"hSܶbemh`\BZg+5[$nUDs˚hԌWֱ'S(tgXoPA $JӶ '\or'Sw e(}ɭkT?X} oÂլ(:l}2kapQaA(k̀r6HCs౰O"?%p!pGxSۼřq/qL/2ߪ]}Wq= 8HsBrb<9Y F,ui#Hսz6dY٥8*$3}c x:J]UஈG¨doS;a|/rAGLL}Yי= {9G)oZ.Նh z4j׺\m$Xc4culhdpS MגEz6Aɋ_HtP[;hEv`8LLvycڤ4%9cI;kIaSS`tubpsa bqZC›gW]y0P>8i'PqxrI.Ol!}NJ3X_"V7TF*3j,6-.VYfhsx^bⴖƕ~zv0/v^x<6cqi-K>akG}c0BNgOW7uU+{:A8YksXiUke=SftkHqM+7 \z]e3l>$kA7vvk96TB0ccXe X^6 lo(iRЃh8JlHcl8c!3">/:5RXl\#B7q*9?ֻ91-X#|%MdGZ7L2܂e"􂢲b j;2 p :TFrnğ1NL =Bv`pW/CM cZ9:?|yԐ/m1H"ƻX;J0OI5rs5cӂL[* :lJ&]Csa1:ɋZHb ^]i5~MZ݁%C˷tR!#ph?)=?wdu0 .VoH^r t6ƷuHq7Ӹ/WKy$R~"B@Qu@iTĻ1|eo>1xEn"xR՚` .Ƹ9 EOݏNejruFÞݎl" O&U;ccr>(?Ed$`xi01F^͛7Me0MԇYW(#P^+gli$,ww^ۛ{:=njqQ0!1E58<"Z s-+֟2$\ڈ, nonzo;Ϡ҇wN(h yf8Txc1#q~m/c] w7C!wmTKR! ,3f̐dϐ`k:ZaA(He} ߭h y_0^B1GV،Tf:J}7:mVNa&U<"G,o87EȤ+%l]g KmynpQ7C(9݋="B~JGۿaY4lh4= L{[)I"zjl5A6E\C-RH\ ^$6CR8~:d\7"cgi'.qâzȌQh"fcm, 0u}Uv>톿 E uvjs* Z:P7WI?Ev$d2{_43-R0-:ȰbrҴLdj!̟@ O. p!ohs8 v jLh0OpzHο$y#p"VZ Hq`<ϡUJ/Zhesq:hN<(|(ūI3.XA˻)"eR6Cҩ"L aPG[U"ݫU9# :\ AFuǐt lr\6b+i+GED46EU։`^akq$]*L m*\ t}vI/o\CJnFX`#U_!;“)(WP2}9'bWߤsܪ~gɇ&="ʺ$JbJy5 {[Ry#j|>S-NL.j|VFr$X3qu'oOo;vi9:@2gXC@q="79W֞._.%6L' 5Os2~)z$J4qϹm4hKQL_~4.lؐDލ*9PWnAxKPD^K6Em+7|<"R+c-B qr!oFbC zinƁ$IecWG CXfJ[Cf-rl1POƳ%t=t!wYIf4޾%0p4pC^4OBNGXp>/ Oyk%2M;S[}6Ork[=q+r ]L㷅?^F^cA6ﮰ;c;1>1.r)ţbe8L*!'/z 65ͻtOp]{1@D| q򍧆[ uLLA!eW!TwfˉvGE(UnT)̆Q{KZ[tUȿQMd0@Oָl6!ۨ{39sY~*v:;I92@N%H9ABPQӳ?ʳ)Tt }h33y==56k$y:%鷶a*fcob\i +H9mY Qc q:-U@4#BB2 DU97#/3RwNX#F7hc7~F{PËǠB~CGKYúWqbpc޹~a %r[_f\ޘf] aѼw6lUSvLEvէR´@c>^ɞ^H"`a]@f*ϖc| !o3GR1HgdhU" 3~ %8ʇ*O殿p{ p@ y)J _DP艹HpCMA Hبr{[zYdc.CCදz 7N_x*DGHnWHx5+71ZWD⧳ 2oGqPBvXbCB.W*1i5H=(IzC"M@cI,nZkx ꒥}kiE;s5Q G$ 1յٙ\y\F /yʹ 4 )wgH&|7a௨5#x( 2PG纋_9\e!{0[VLYF(d)G}^cKoz%UG.| گvD4tBL1^r7؍uzlTċ#9QCh+D" j:RnrϑݧvT̝O >m3u i&ůB>эJjKrH<Ĺ(Cv9н~)Ck!Jbm 4PNxl;]ذ/i\‹+QDwcζ9%HpeuH!RA^.q@Y x #]#y [Sv^xBW57DcK~W ,18!Za)C|PsS;$$դW'`|97Buܧ6` %꯹DPWv1yy :&%s,GH#Mռ-+\Aq#։û1N(au֒yHRXtFMg4 A~i"v]>cc-J] OJÍWR_ *!Pp8=vpJqi/57@Z+Gʾ AiZN;a5D_=B zwA!LLQfCh{x*GV1C\x4:X@᪶I) 4U;r*|r恻oax̞bN1@O% a4z5%3+O67chl]a}&:x8R}`a+<#( ;2 N!;!$1'4|`Xl A!R\!DLrl4j?Q*?@LjgT%VrHLz@|5h3N8VI߷&Bz;%U{[l 3FF/i1UU&1彉rEy>d0ψs;1cBXTu;fxiQ:͖7WGj ,ceX;EHH~>OZ%22N *r!/O]uvrPc쩜Cs'̸/xʔ&76k;>,CE2:KX5XF˻ݠb!,Gs΃~tj'u o9_v׌)۝fs3lט'/2O̷{XcNWaU[w-;ݲཧ[6gмX{TLIvo Z|uGFk6 cdEIR,EO"A$xt3gMzNfHZeR{Ur$%,bkv@:TnM~vu T)eDЀ0M 7 [R%.200ݩ!r&oSl2Yjd}yh:F@j%7B(2O$`˲'/S{㬤S1ZVev$ƕ!]#uWi%5.X$6Fъ&kF5~ i3C*}pX3Rxp‡ר4Qw(Ń@Q4%M|opҥ%Tyy8,b2arU²=5ɺZ"Zw'yBif 0RtC DVE{ #˺;{MDTa?Wa'_ ArDZF RXNg>0> ȁ m[o @4iJyRʩ93u Cvu.H_I0GŕaPL sbQefU(:֓8v)KA,kJuyf4thO8Fې–vVS aKjXfͳ9#?!- v )ȎK`~IfCJ] 02q )Cz8C@:`C~N@qh#C.q|e"VϪEP['>-:^^ 6:7@6~f#AdooL`WW+LUU b4侹׼>+HaЪ`1;Ç<1fF}4Vc?myVE }:aJ0G>kMDNu* gVMsDxhc mԮS !Խճs#Cl;%, ,vO7ALc:$ +ˇY>6h#bn@>#Q}Oz2/ͣA_܋ NQ8"!Ȟ􇜆p F47j5X@z~hh-+,dxDG|x pe2)0U.ضAٕ_`$',ǣ *E9+? n]- '#n_4uw3`Nd"4";s,DN3aIRr/Epf}7,e'땛|8s$jcîRAj {.U:pox;knQᗖXUO4RtpSsa"ΒZ9;+3a9E&o|xbDp۫Zz79H& nܨEƻ´U rތS&.{RxEePGǶBFԗ^%ݸ]h'^-B T(YL{acӖ(ݎݭ|fd|/9CϯȳY]jZÓȇ%p(ԓ& mRԯ4d&w!8v)2 FiR\M9špKgKus!_@Ǵhb^PӢ@gXd G ܮlFH(IQ(7i2M L3vBń8 N( E{-UPT~ x媎1Et'^vD=tcqjݴK1 ʳr ~ Rt0xp.O7uE| m%G/ҙf18*W &S*ѫ8+ ~RhBЙe@lGsb#y"u!Jڡk2)GRGr* 9nAKL+[M㑙O00)F+<)Ҧ'c$!q=Rlu>_ԠOD o:c5-XǍۿ<Dd5 u,w0fGl#6~ɕRuTO2KknJ>sbm1q*G>xyͨ$kvk1aE Җs Hi7AA6>RjCVe5ɸаWDKQ&ifykD?$:Lρ:_f"S)<J=l<[Bpo@9wLKekk}6@&W%Mj|nEmvqm]OkNmoy^4盭rW܉^@K10D%ɇʶr0=C,v1Kyk;\dFJߗ#s4DiZ7F Q?]UeA-lܗ*±d!_{kR[a, obO|k Ob& {H$ET]1oGrbsr\bf /yŹ;5Pb{9Vj^wج|U#}%(m%i&Oyq4Qa+B1$-q>?ZgcsA䑑瓇_%IZ,u5c_&'`8+Y% #L\ ƻ[(P -h_K·g7CVF0X:ܯ~4?$ݞhzVš u<S.7vVβBQxjћSL$ !s[ѨqW9 4mQy-;dR%׉, D3Wu7(܀V\ ~|ql9>;8B:ۮb Vg 7Y_N8ltQlZPrBCm(|4 kCx%.$cpA0+^4ixeIMc@ARMlP\qY& ܺ>)x@@PDWc[Ҳh})QH}(X) ȮW" 1xx I(~D0BjCY+ޫhI >g#7 -U#JXsK}ɟ`/V ( HjڪP!i& =|Nq@F?, _孝m{_^ ꤪ3T?Nd:jWj$-3hfp͙AlpKg;oBe.{'| MQHEK+ q9WSS[?:~:hs%v?yѿ:mt]l6ԄgVzb'JѮeJGuϛ)rl\fK'ׁ$nwA~W|jg3s /N&]-,%(LxfyCahsDj=n___`q+X!ݎwŨr R u]ߝhp"yġo/[yi 8bz|"o_ ѻnt>G9 dZ0@%{y`aR(lՕNmz(8 Yg'g6H@`D׃x<ܕc iĹ ͩpQ{%7uQwP4!8QdLψB+Gb# pfS߅IQ`;tGmHM ^'M<<jat Pɍ^‹8оn!ڏ9X&!?mU(O"5.ŝ_qx( ?g3Jh#V`ӀrtRǜg-W$=#fV'Op&!)B&:vr" &5WSXJ<{;:իk~4ӊvnN_ͫ^΅$&Ǭ `$z/?­ESP *65svm o(#fښߕ$DU 蛋 `u-MDp^!*Mt)Tt2_FC#~WXlU^FMl+'77OxLShm{vʶ/^S=Ϟc5s8YW(O0| 0L 1~ *QKlNbj O. ,YTꦛ ؃A].^fCj⌕J)Ul߰rN9e j ̋%N))'hjB['@V ٕsQ6CQ{WR R/{ye\Ep^d>覉A|h0έSM~V])ܴҙK]aoE'%+2,`ڛ _5`MBŒL<a[ .#n6F&{ R?;#F`&ʏ1([6@rMH%K>aUyx?* tڎ#_mCOl, ӥr7;K! ` 9}a>^n^!\ݦyjSZ-VfF-'vݓ.3k9}4מ&RqX{J 6/Ek6]̉BvyXI5YgA/J*!d\7*:.0aMGh_=Ol*d`=c.c_"a?*R):޻"_ wT&Q\5ze'zU{s9^e 511vj`PJJ3+#3~'Z}-[z[V ,Uy'7G# z! I)AoJ6>Jot)rN$ih!R,\u]JZ1v9hz9p"Z6Z1m$96i<{>=]nua^cPi4Ӄo3*bASl 5;x::m/nfߤ wBZe'C]2ДeU Oo@w&1גp_Q{]AU<_1KXGշ,F:B!08׉H|RMt\h.%*9cëZ: @Q-jWoǷyqݱY_?/ӌ`!~ĴSj={ҋ0]6M4+I*MxwҋѫSSX)$bGvҴg)~^o9g:qDP=sʶzeJ4 lwp VnV1!{RQxM 1s[dV8b{z [ L6[6C Ϫ6f[`\R43w8Bg2$wg`M38<3'8u 禜0oOP[)bJL[6o.x IP Y^m N<ĺ(xA&-S˲$1ҖS30N({ѯ'0H[+FrS+2ȌOX{D70i=Ƿk=*I׶_@Sy5?^]Aup'|KFo6nD A Y[}$.=12/QƨUS|*O2~[V /;"T+LUUa& 9J4(%C1߻*\W"ܠv|?bL8Spv 2ɚ yrwUUm^/L(U=2^7!&&8Jߢ$iih fP)_9675ⅈ4[U6|`YlL{+Wt/.KhރKe  o+#aZfo@NrI/[zA*)ulR`ehcp -\?Š¼n5086*.ڟS8o-}S7#vEJI:DLD@M;] vQAgfXq)~2I7:,ӆ ho^W d㘹H&Zk'6' =pJgHUp*ZOecwaoEaN)1ؚK3ebL#OAikl6+k&1K"hg |s ^{b~!_{^3X07Zw?sɾ=ƒ_&Α[~hc]WO`k8YϳeұHYՑ$nRt+MRi>գcZJ˝^K0>E&YFɇ702KS8Rۃrta\gvlE&w*1h?Q Mq} hc Fhw֎K%'A:x$IR"9 x\ߍ TH |-z(Nw}Fl7"',uYɺ:{Gm!2 rhЀgIRƼE~h0H cjģ`v,)|KFxaoC\ALo _oѧTdz45*%+Uv3TD8ؚ}#1b_ 'm&@X ޤ781+OXO?hޓ,yMaųiK,ʟ[~# B.mSO.}㾜\$MqžblԳqS «8.bD2u>ۖ`gky1-SI%Y ͕B_Ƕ*p g)uޖ׸z+~\9Q]13B/@ԛ`GZvuq#wR郄~qVW ,U ޏ7u{;5G6X|L hjkrd?D2?H30u 3aI5Rnh#5~򰀡e_jT\\5Q7ªOo<|~*"gP&جhb~w~ rZWYfTxηR5:Snwv5k]CZ>;3:f<`&oR/A|i>Y eY$ m!GlAp[N9Jعʔ-wQnLeByg0@0M\6O=0u?ݫ_IE{B 0}B}_v.}*&Q ,SGPU K6 4-i 54}>DB95 DvB*, #ئD%lݙ,A_]JUu$EĨr*iaN{ %sX ^ o1D2ȸ=tXU}@]6mflO5RN~rDDWjl}! (cvGZqLX]vL_w\o8L[ಋ4q'6NB Cs(:*:~p #0@-Ԕ&XV*d)j y9It@"?nVQVS0QMOq.F΅>~ڤNyCBOSgXHn0lp^0 pB HѶ$,Q+4$i"j2ܔ~[Oҿ-ь0:0LFLY+C64vX't=3sTxK!$O،Q󰣅)9(4K_P'xKs3fQcNZ15Kԃ_^>GHwQ`F+QkUIX_ i߄?Si$U(i|VAdwC5AVaV˔jlY| m~ X9L:Sn *\bn? 4L8)en&2c ĭ~Q_Q،|w*3Le2ﭑ]I/:NqKٹuGb'iiZ@ uX]'[.ād wO+]L| Js}<ή)w0\o <K\O8Og'p ' .q>$c$#{T &; Iaxr❍>'6c ;߲7/v;zh/*\kh]aE 9vWQJOJyuI!ٷ 7w8̣YŌḼ ƲXIjV}i W|+<%(PĜcM' 2`]܌^0YbdW!mRvH,>6 wxhS 3fy>+|HC͊ HR3Fyz58%Cwhd'YG$ ۖ"$dDȴ,bowT?.%59MFY OyTk]+O摈ݍHX~-WO%Mq:BWRCO^7Y)?%M ?Smw L-@CH ]l|ݷ?@j`M\*Y5ؾ `ZM׽x[jѨx*eif*R,ͺ1zgֹbss8"(˃N˾~r9Fd2ci(lr'طN =XbF(n#;eE}_NaY 3t_B]\܋L,d#PEq9&n'Æ3NϹ_VWחÍS\^b=,iݑU[,1v CXKs5 KJG8>TWyDyR"D'[%0J ;#f`YǙTuNC;BO }l'N1VƎ#%4;?K  \v;/ U֑!HMb boi0MG\fؕ,_&kff$7X&*? b 5IgCb}خqLJFEMq K#2d=.…6J,*&z }kO'a"f0"̊(_,~o$lE^Y|.s<䣮1FXi lD9}$B0e|xM;bZZDo17 xET?9S ɷgJT#Kº2 EpZfbϻ 43ys2D)iZUu&()zB# O}3(] (8~`(}d.aӫ /E 1&kʳJ7Өb,fH8e(\0HibQbG]ez;Kq˙J*HC`kxk{r$gU3M3J+a&|/-nޚ9޿y<)Z7' &bsxGŅ#W9 !ɻ'\HcsiD1r0%h]&at,xbgJ.[u@"Ս cݵ+^qz݇!WTroOiŌzP obP:ZnkqMTFwVr@Y.RyAĸV'$V(jxGQm/}O3 e߻yhS6=myzE!4V+RҘN oV)]$e} 2.^bU]oW0h~ s3?WPpһ0;7 }*i็9f:@O,.9BuzⲡdRY9%Knܴ!ϖNA fvYQ|d_\7A8}ꕳiCM.O_Viz gU7&dC&%:(" d :_ c}2h6'bc}!ʊ4O`9mp%3^^6 }FJKn6y2K#'3- .یit+Tq}5U}`JޡcP(=|;t4:*5z[<L-˳O+`f"BA,xꉱ}q P)v?/{"V.<M}?*8 =8ej+20i/R# PjBD;l#kiߘOp˾OXQ*WC\j[ BD ^%e%wj19ZP9$]L=.ϐ7E;L폫<`壒Źu|jL{v(aJ_Ij"c4J}:;tP4"&Dޜg?:$z_=}w5[>kY/ qkPQק&!BMWˤq1{6@m׫d ۯiL wN\caR@ Lyͣi ~?LjGau(gdCEdǶV] J5 &^j䥨Wq65Z޵`εEF!km0J"϶% @_tpfv$6JavS^*CNK/;Z_>\OefF#аn՚ P?ow w1+i-({0oP}ɚ$:VkXrYCGEnSJ> W^]#CV,jTv} ,n >(b/eLW'MS(Hiyo-M 5 &s!L5qov&-6K\Xdd!NGn59ўLnkM WXġvl11| n' >6cm?:?rKb2KSgojSY9bX<En2RQ b({:axE?4!c"b2!I\..D W{Bkw rM!w$%6WJ~m:AF5t(zZZ#>s,b"AB8x?#YOmk֬KHEw cL.)]w cEV&Ğ~*҂{B(=*_1=u1o)wYJ0-nsR8IlCgcu"ZXL"ncl-H/RFT2. Q`2(=!"WR~ {U BZT]:&f&:Up!dkS=N!!.#Ybwxscq N΃F ۤ˩M"@PW}ڸI08ݞ-fJ_yoL{۰S5* !^yISN-o tWwByWlM.KJ3..#dU8ۙDi3ۍEb-- _:(#" XX \yCP7 K!D(;CفωC=?DZl3{ЙGu ݩ :yגT0E#s}v5ښ؟wVv괏66}*ntRw_`yUBV.tD3e#@Y6]}lq#WB_`EqIE9xx-Secm$z% )ўPy-Ɏ䤈q CBȾrӍq|.WnT?gM /?pʴB?q܃>;,'RmrpK:f:^zZ*ݷCo[&c ~PED=["(hY|b J?Ҫ\k:T4LnۑN:SPKձWw>܍ #jÉ&r|^- ]&SF _=H _nVVW$۟վ0YOkӵ$ gBn>?hR'BhOU@ D){.:"aRE$2؍6ʑ"z+ *zM濇ܼݤSv]9ѲUR$3hQo>ĢAׯt_Xyo1Jv9!#![+x݄i]{CJ4Vk+'4-̐yN5PFbۅȂķH%#QpB瑛Q"4 PUԝHX@#>_Nj~`x}'lܑb ̸.)bn;7Mn^_Nj@!7,\^B*#9u .{:е 6 c7I,*ܑ_I7.gGFv{=۩ S.LdCcL~}~ =ݎ؄06aD sx9Nh.~JQG0ѩKj5p:7Ba ^`9ohm~7;fR,|bʺ?\śJsd/!q<k Y]Ce|Ri%3,2i%tl4I%vn(-n@q"q;h:Azj%*,5|XPF*;5W9rWxu%uY1= iE)dY]uV+J+1J3=P- b]S ZR]UyHa;Y5 Y3'K%zwѤZt6H@]lαҒP+53$S>/@`\[bsUG ׮| !O`Gym6qf V5w^:wA]kcB7ufEs Dzri?Ŝ~'6zEm̺%QxeI?"@\T s|.1AԒhpt9E>_c@WR7PGM$UJ ^0ɏO+lvhQl r-^&r>TƹU*_%BƠ ֢P&`][ AfEud_[.⮛f8̔`6NJ@k Ԇ*$e94p.+q>[T|*{D;cs 2GSU:6(81-82 ~Y@l(u[Gԑ<9ԤE mA+mOO'+ -94ah3.QqrKbl]fMαF3MI{4x59=QCuP-h",5$l>NF!7/Ú#I($K#$…yK'R>ܣN-$T*߁ 7p587ZJչ JOYS"_ vbq[ϼ1fr527z M.ڄ KoTh?xIɷO:"V CE-wҥ~bh+w?;[a$sI@cM+*@ҁx:=>)6iҤ%q~r,3V$&-gXT(g uZ*<ϸ"tCtnpk7AKǣdȷdagR";4+-9)'*#5n*a-fT\_kM(,A @#oǧ$B ~J}v]oPO1.:U=Roaa1%@OL9 Br<oP y[QBG&;\|0i%fL̛W³RfInJu_Sa+KwB}2o3pV ۉyj.IHgNS*viyDd$`ŵ :q@v%roarmMF]> ]D&V7|8uE<_RMuqQBhs!emPԪVyjr)@Zkw;xM>8~q48dM X5i??;', G兢iTh_W~҆-7O/2KobDztKʿD0(&Mski<ϹrtX󇈴w`Oz^>cCnܽ"U')#,w&/R0Hu=l BbW qL1f"2㸹*ȳ;F0En'7LJ`7TI-vQaxS\r$xaGtnyo8pwҩ WyS=(SA9@IτC+k1./[YWD}mϨd!K)\G[V{Pykt:H6_5T K70a,Xuݲ\٭j 8COqmҗCx)޲6= 1Lccm`"LhEѣ LO6*ktg%mF>^ 2Q FOSI@Zsr<{Wh듙GSy9 ^k;e쌡@u ЗG~-.֨yCkAJJ1Ed8@dL2ӫ`P ̆%J7m~ Y6JkYoiG)s<\iIΜxÏZZ5-ɕW\+6r;+QsY|#7qְЁ[7`sD7`Q묿d){"l ;R"<E Po~,9xu|dIY %..ZEZ-O^]4~1rv$ò=\ytV;p7D0ÈsQ{KᵸSaϤs59nn( @¨܅%zP;xuT^BT85DTW Bm]6YekQ$ԡHb,ۍsK%#^e~A_rwD9mZi֌Ә4b IGtKl!oSD(ENЉnʩx81cԧĮ<+ FgI]7Ÿ꺙ZD.YPŭ#%F]p iBJO~> ɜ)Aj փp4z~((˟F2MѾ&uff(s;4v9SKo(o&Tr' {a,t>!_VLJ!τ;$ا|+dY|%̕|/'7llhYЛЀNHEy Yz¦'i$ү-6w*m 7m:M+R3&O&N68ҶnD,i8=!HSx&M(CSx8J+9F䣗ʞq;̓2JGU?`2dQ㽂4B!Ega]xݩ 'ui$1|gZ5_P6D|l0[P<Q!+,o_J\sf!fR <mXmH~M (UR V6:Welը&gL Ch.[!z̨+fb;@Xc3{wr?1m"6ܖbrDj&ZHZ~Tv. .;RIцa ?: pun-[(曂?Z -*.}WO$2i=1Cp yXHsY6(7Kw>7VkQ\#̐Lz$PCWseV%k|Эpxc(8[ p9~JPg#z* ~u = Fc@EK:-1[B7G3|iղIGXΔ?] <1+-jM ~^ }qbϛ@\YFwY5(e)ݏj0x)`94+qߗSD$r uA+KA5 #"3G`/\hZ!I"o/):ue]>` W|,< #99 i`j^Ns:O 󉃄,[4MlQMFY芻wݛ;@%N~ϵҁvLa5+8j{ i` ,b#R_fR2wg7=5{Yãmm{>3Tz0b$6vz ui~]~ײ1T;gu.Ѭ!lR$!0"Fd!jQ)?Vz?m;sA,+N %Nlx_Ʀ"tƘL͌F?k%̽o6!n.3E_K=->S><:UVgE x%B4 Xm9olP/S^];, Zp] <07mSׯ>G2C} Bt7ީ{ UyH OM5Go0Yǚk fPopC J%,o4]٬"v6<#_]*P':_!cjtx۽Mswbh$aTzN\넽MM&.TD=Ӧ]=c {FN.8%b](X8&`)Ed ߕ<{6dZrFImj[wQ4&k5j*NRqHzDhm-940SR `sZ"|g`j_`ⲿΪ7;w5(٭;D$O8r6 5'$RY`+G/Fw|vyGacR:d"p7A:>RJHb6*+獱&|v5RQ) qgݛʶp}ks9jePetfdRhQRV m˘/SaЀMgʂ(zŧD'6H 6xT W'-&m4!]7zj̅]wPo60;aҙL +& : 4Nf|94z:7Jk1$#)$rK]'EteQxM93vKӯr#e<_[Lo.~s:f#ӭF>d un*E)uPeZoպcR(FNY/Le.g}~1"<>y2_{oED)G0_{Nc-rdzr\?[bGp|>Brsn u/ .N?qqZPW'Z EbkhpAʭA'% x/^QBr'utW0"-doƲN~]x]A*NH? Ytc`Y춿~Trrɚ# ?V4*2dřܔ fuj *K/'0 `>vϳ{XbٝzVQGQ_GN[t1&*7PWW/#8/uK5"2ȥ)-#;/fQsݤ⍣gO%rƽY#{F\zvj3b@] vҳsz8{u;wgLJJU/bZDjS tde ix+׎ês(NbO= Ԕsu B4$o3(|Tdp.}R I}۫J 9 ,1Fx 9E6EmdmgpIW1JA'ϊ3ח>cp<ѕ]N6[MsAXу_>)k$8Q; B@b".#2yVT"v3qm`9MZ b=&û.k]LXnItl_3 zg}Ҭ́Du+ugìv \虫RjBH)KlKf9/biϛ 8jA;i5'R ~>G:qi&4s1c l 2UM9YDT|2XK'xWD KyfLD+p^j'[Fw~^,ie9gDB+TIu{iBi]ce˯}+2U$2 nT:FU>4!AۮԤ;҇$N~lewTtJ=e/{.fK1Q3ຠ:i~BjۭL"y-j~tV2亽,*u4Md줥|L^ s:ialGt~BR,0IRIӔc; N:Mz!'d_xh^D$vH.*<ȏ!|;̐kx*s' v䲨7`mmFHʵi[ l= &(M.K5 M ,nH ?7U)&J N.%Y>#R` zJ` D]D- *~/VH]|3,KQ]vPd͡X*BclZ2rNSEL%Ri Y W d^TkA %rpZdizCIpJF{KTc۪σrlqq~Dp!"0cmo1pG[k^ѐ\-ig-}#g2+_V]tDZ.c{UiDr$o zg?#,6Oa)`s&^73`pQEQZcƖJv%$655$&=EςLGQSL$v.5տ/ෑ-3ieπ*$&Vqy m4)D\'dK9vulOh:HrsPa1 UA9VaT,u#d4m>EG$1 F>CP& +_;gM]ݮip1xIBx#%=) teyl뙩%U.@_u[+X#%O`O|B:F^::J@:.S xޏb,E6}Sl$| %%Ǟ[Gm/Rkyd lՏW7v#"\4E(|"pTu1?._Ϡ@3nS($;*OXOS9ͪb@p@oC T?KQ-^X \{~PY̲w|sDHgy4 )upТ mQi>G!snc[/vSjL&b"2EVݽGI,Z۫Uh9%ssk3abxOZ6bO'왘wZ*kRi| sL6 |`IOGD17tJId$4")ݕeO͌!Blչ)[m1oAqě/IT T™y+Q}^F~c 28_N9l9yԴ]2[jQYD ݷӎL]=0'a.ZA) `A/IrU9;23XJM'uG@N"/\xR5\S|8]`8QCB 5E_!̝zMa~F>P陇=Zn FZfQ _5(& C>Cm*e[AAW]/]6l3>!p`Q !p.pt#1{gL.U&\g1O )cBŌSwm?C{.}\ӝeow5 +kI;9g}8pYDWV|YFyX:*t5Sl#; &JJ\%G;}g/^o5TISk`S-b^!>s!X}77O79Q@).Ӥ'G%̏Oz}qL O:,wmћ2ffHlM~Ø@b?5}fJ [*ܶa{Rk@"|5k &b-ɲp7XmoPM߃8/l =݊7$oBW~:R0VL2Dnd]i:0@ "@ڨS[',dgyl6p2d_2hdSs)? j֦nbLrm7xU{3rm v~nF TSSα&F@[hK"OKGO@[=B!.PIѦбuN!V*9e" v$S A0$|;S$r["FζH;e_`w"M^ޜ?0aU"md xoo?xٹq4]BgJJюlۅ\| ^ zᢵS*|Cp .uF"k6 W#A>s׶3 &(?\frE5!еpsWH<&-HTte $צxS4"ΝW|Q4341ŸWY/䘈^M&s"/!Co݀|Al l Fw0(E漊FM|Y,x_,s~s%Tז.ۀ+NY_ݏW\ >f5֓*+I4ypܮI;9l#>vRMGKQ U,oE~3W עy0Y'fS xA{%w[0 -u!D\8HwtK녴=H ~0Dod~;FxՓ7\zj_zD_s?)/qIoʘnU H]aO:h2n.}`▐ ILXsrL9}q)n!)"ie u0V\d^ {$g9e-|o0iUZBxp$po ׈c _z@=ۆW*`t0 4iYY(V.߸s!\e.w->vdFKwz:աҽv&&R0y=njv9ޓJ|p5R0|jRu?T>x%E[0 bH.h2 3;:2q&Į`lULfLWj}ͺ% V+Sr΃ZfZ(\W]"땂w=J4Tc0pv!VUI؍NOs[^KW&ޚ_><v%BtlWiQp:NX}&!V_6W}sDX` "]Zt2KSñXLy?Mi֩9)[a2t";DƙiǛ2$wŸM8IKH8}YCT_&@> l(9,t BZJ?`by  65+i]c GY+I$Y ыWNa0bd.1]"zRmKނMIPN_[HGu"⼂ީ, 0CDkn1xc#lp2kb3.Sm!gy\*UE\#v%h>q UowV.t(`4q,fj$l77g Vg:̏˔իd6I8\$Z#+Mkid,)-jՁZ֏z>ۼMlҭ"  5rNZՆB< |#>x $HGQ%dAz6fDfƉRVw6iYTT_Hhimoq1?|j5"#A,h!_r( p `kLR^KK!N k. RLUW57i|+T828U:ԣwkz?åa.6Q߀ #]/6Cv/kGSD=(.4o-ł;]P͘ 1݊ [NY3DvJwH[qו<hEPk~ufr(7 jnʲt0:fƚëa I^}Q/R8M'y*b.}(k씨5?k/, N𧅓/ )sHKb+&we~8ëѡ]Z!{&u<&lrַ"IvMհF/rPѢ*'sG?m>OTvqu)}SΆᯌi!-cbL8"S v5HU]|#t6acSр .c[l!E5'σώVrzEx^uLwE!S!P$ n]p6gq6QꫵM='Yc[wPatRibqWnns` ʞY9Y`- eѤ]GL4K$+p͈ym^n8kgz'eBx =C8Yʢ#9&]T"TCwV{iJ=rbQy4n<7|] ?Vs܇@:A!{\+Ӵёw{Zu"~T-O~ڇw:j.y-8 ~bO玴BOkXK6Z:/ݑ8 uT*TQ>$r%K/e 9]%bI=wtpJ`_䲞#BA&h0#hq-3F l÷f V&*1T91k,CdD[4'З 0 DP=r./ NQ|N /V"=iJ5eOϿW6Yň9aAnO񏑉y.PgAY6]Yz8JK(# }*(nG(FCx,^2[,QEd \*rWl}b+au;Ivrqh>w=;Ӻz\av& v9hP~<ǽ힒xܶ=[w⾏0#q @L:VF Z\k}\ה˛g>djŤ߁J>4bX?$`l&|@.]!(JmL,illЄ|Vs~nzmEp`m jH}qg~J%>0"=py&U=f>QlV7d{x֧ep\+|D̶&Znns{fb- 5A[.T-S\g/bZXl AX`>+ce5l̮:p j [zֶr](?zdAW]4< ^L\D|a՗}3]~e?̂306O CК++na|"\ b5-Vzc^vܢ[o3 Љ*j혰ԉKOERo FrF.b|BAH))5rAv?tOdXCZϝ_.Uii>HwQc߼ } V!VbцP_+%+GkU6xoDle*@!C.!#F/tH5H+ 󜌳(R4Jp[e^G`hAWKYgaPp0Dɿf.VY=_*$_*,>1'+ێQ,->tѠ3Ir˧Vh1&*=wDl9|&I F BEX3~m^F\W5۞geE>ڳ0_8 aGA ΦaX "fhhAzM.˥՝ mpb}EL2k8^2c5vxct ^eV./lp>x|܀3SXXV9kN 0/8J\Q* pH<Li oLn ~ ۭ;Ir6tAP\:/6+]!:2yՂEN|p3JT0CJz~?hy>%'frWz]$ҘűGb>1yM%8%"p%ƪl5d> !s=J(jgV\zg,@5P6+qhd \xP*Qԝ]afFPr(6 bH D5M;8~SBe iʬ"SZ GLuS5P_[-.8$~I)p[U)y# EP?q.}+=u(3F}^ ;TouLLq~D"e_d[XTsI%3Џ(jgĞEt40-nRBm=M<#|ZhP$r)EAhl1/RMLH[,߫&/j^N)|^c0B~)\aȆ$J+cYGٺ,ٝc-;z# ȐPuQG\R2.:u뚾XMktL1.PZoZs^;$uL_ rn'WċqWyK`_/y,l" (xY!5H @UZ@̶6*0Ӛtn`ڬB,({qj 3|9k) 9NqwH)RIgHvV[VPoag _~jnz=BD@XS SKBR>"9=Қx!&d XB]|1I W.P^ [:$s_`S׿qV9 li ~y1vj(-5S}* X@D!ѵL|-B=TߓJDK?e }$YC>M}=fL0 *UxsYH#ȆmfOZ~ m ALtmʗ޸+AplY1X똈h9~!RBCTo艀Ě,l{x[̷$5_M02m,w"ݵ~ s"vemqZ?D1K)MH|s ծQLEqC%X2,斔-[ݴ|uR3K9ϬyFCM% E*湫&r0ǝ,~C= lb( $'-)@ZbV'*H5bg7 *- vS~R6x-C씺L(/=WMfy}C HXBE{L*g9iJLZ73WQQUUQhSV2 XLRÒ`I,-'̰.-z^ REE~o *{ƣ?,K z⡠,0:0\hLݹ;uP>XTf/Q>-L*6bEQF`!w-osEz!wų1ClnP9/B$.1) $8(Nްw`})wB|9\ʕ[h󯯞n*3 }IaީB6` =f,9WT΋\._jUWwd4$ pST ȦF΅6nTLZ"kzOE8y/Gr֒jɊW),/,R^e~UΔe߫]h&A?$ml+&`]{xAeD9 e6Z =ĭ&qyf; (m_rOil[D .+HMW.o㘌uO#oF[c}<`Qؐ#%ʽP+ͺ_ OWVk {y.XЃU{?2eΎmHꇩ`tSWd wc΢cgvT1' ~p h^ Z^*ʍPp@fr؟F`޻=7ʳϭ~28cms[YL4iOm}nhZVZub/cr@B2*f=ef2r>ꑓ*=o˱;JdzlWH*R/~u(u(k@uеű!kmseEԁY:.z\<L&.dV=R7F;Rډ6lntxy`D &r!>Fپ,v!ŃUTK gW u 9\,}>JX3WB5Fh3kϛ#O~Z>:$ٹO9xE|%(!Ccc03j+~hX;PVZjʲ#dx-6젷]e_"D\*BjHc%T^UU֬;w{,|AGQ,T]'NuNKՏj6t] Q=T*=+Яt] ynmtVS F`듓\Bgs^pFA2d[Ѭn]OQTJm.`V]ԚYq)j⧫xϑ-'pۊ:~]}q  *2GqS-Nl\HۻKgq"i¯Ց 4i4tAHШx,ʿaRr3=7y=V6wIMr+uV";q~gLtn"2I;h,14\7O H~a eg+~6lMς=!gTƒ%'W!h?ɉ>RZ‹R[ETĠRP %q pJ)VAG.wrE#( <'!ܟ"2Gj<>#cws퇥 w٪z HJLV\&)*ixEX2!ZLusձL|cpo>~]bOf;Gyfvux\%H [f塒(l:QF,M$-?7E߈ӽ]=}ߝ-~qxpM6!['AEU%DВӠ-Jr 5yzY3([-MuS!*FI١"u7szf[x:#d,AG# 7`[ɫ܀oۨ6@!OskuLF*I$`._aSȎ7˟ OAk^%?"ǟIr*& D@c˱&%Vߴ6%cf +:<&a9Fe[4oZb2zdH/h^|=:^G}=kXZZvyՈQ:JeH(~REkYxԜncLw`qL,ĕK?H^|3A1#-8v|PO5ld+bآ҈0.孈/i?\fy^VRE{K8Q)"[ 9q;6שtl3^csI+u-ِ>>n0/=yz45&)#$$T0pT"HoC7]͚1ˮbL%̄ &>?L;M VɎ!~ D@#W]ɋpF$@Qޭ9ZDBL2GW͈.'.-~È/ax!tbyPl&D~70)׏yc4Ծnx4K9 IzOdh1[Yu@_x ^]C|h# V*Oҗؑ21nUǬ( usp xc2Pwmк)-fsik$ź Qk_&8o ^Yey  &U%X_/mUxzr1j_Q0!>wVHKZhfId$UMb uOhLPrֿ(byQ0 } `I*<1wR/uwb9.lwJm̢Go|N&-FCf4YNX*H1r$5AXwYbH𿘢`kx$}z꾴ᦳNW, f˘ʨy6EM|5{Hn㈓L g$o,caՏ bj0HQx,XS70άp̵0P*W-2Tz DA*4SK;,mi Mv5Gf$f ?h:UTw $LMN?˲\EՐo'YNǽ|`+v߁M09(N;Fn9e&k ,Ns^䣛1ӉpvF M|Z=\X1hnG+_!ʩ(ċAg}n:U}SDZ<3]VjA/ꌣ^Q˸9 ψھk~7gP,%X/% ~ր Y Uԟ硃2_LL=h 26!)CЬe,:Fazt6hS- m2NHGPJdx>qHIkUq-[NP&6X 4d^O6;.ٻQa'% }[l[eBl2,b֔&_L]"D~˱.JκVs]k"oyWڔ\lwЭx&4w\NߪNx hf]U[俀o.aG"m*$߯+ا92DR[IKhFpC$Q5(k`,^mt/T7E+66AmMw>Bd~(@: 8>T˘"%3vL k؎㏋4y]ljL M4|LN|ꇔ!XnAAeeSlk]&k+m(]vzOu>&˦2 s_}/TA|InL^Ck'X_ 0O~6E ?"lx惮Bb&y<܁z:|RqytΦ2ToCD8--ӶQ}tl;0 σ}g5/ p=Jq ]  O6:8F=5Y/ w-Z{'F<ۯ-WJ"yqrpbe˳ңl˳f2wzX!ym9gDf"NGq}$+U}@`chwG/4[TbFZr0{='lj"Niě ɸMwfV1pYrrwhՉo~fx<M餆8fc\:H!!d=l:30^qN>З#l9 {R 0;8x  a|!EDn-9b|~C>ʻP9R4H]MtW0DRb|퐅pӑ$01% ^HQ9RHC]OO4Oy"ط۝abRE9 j,yeLA྄1A\a8~%ȷZntUDIi$cHB!3+⨞.d&]y*@礛Xك(rfMm=4( Kkh6T*ٞq讲^ྜeUoNmZ]ϴ R:F oCy3nIX_7(\@害71߅| zA>%LAw?> C>j>j"Sl)E߱_'i .nӔyHq9 };UaSr25^5G?L?Th p@N N Th*-Cf oT&0'[KfVA:.!{@MYZT3|[tvL"8G *ĒاWs{pRR!V,=J,ɘ#ey;Z;_ޅM4c|'FsW Wj:1{ / jyH5π#„:< Bk|7'kTʁo U4K2] ws]&ȷl¬ċQIL\*w yn;&`Q3AO)76 B*&λl1%A㑫W y %0Fl?wx)?*,:8#xsb ЉHոpAmm)MJw͛m)v: Q44TPݵUW|UfQ0meݨ;=('r~\4zS,-n ^yZ}5 N|$$S/>]saiwNjɖ>\#TAQȌ^)ZSSVs6졏mQ5LX1[J{ #Q*~H<U~ٟ]ԥK٘E1`ytj3AlUN ° 9*@k (uպcŞd?k=vZ㛴P  d ,h0*TCHQ 8hO~'Uq"JK*3M ˞:jkdW>eKiCk`q?0_~륣!-h(h3 gѱ RJSSR9W!M1T=:6jjWy>|%9ۼLʃ*3K?F&/=*,{ WTۊ%H `kdtq[$.,)ڗDŽ0@{k]BkC4A)6 y1sv@\niPDGo)Mёexԉ(Nt(U\JƓ>Q{bm=nV4x`13V]I72MU"]4 y经ҥTiҢe//yVg<4B_,u{u17idɻ3lmP-Ox[bv--`]ܭ! A>_p˜E;BSL3@\QUz-3l`Af5ٓe#c)QYNPev4 _LcE&RyDKKrT^)2_e|-K?L,A%Ye_GNiتwxXqw$V= taƗ:0p mPfƦa#OrE*D-rZI&qJN9!wqu;D:^ 94'̯,i;)e 9y^5i$BHaFpSy;޸P(V >oCSbœZ>.w"DY˪ʡDHi' Sandr*&*k!{YdޭΏE Pr`'/rǃYrUCTw0mb^&"QV&w #xI^(TM > G$,{ʬ~.ŝE(&UL-a*Oy\ 0 Du|\a1!o]'D;J]B}jhݓZM\ ;Ӿ?ؓklquP'A(kad`75E}We!SZqfv>k9?!#Qٰ0? o$15Y.\t*l P+xEv` sIsŽ gEƤ,lQ")g.@kv]˵u`+k(ue@&jdf3 xhE ifc.d!`Z"`SCcR@BKI״M T"1zhqH:;]BI)A.ȝ=)A'ҐavL/q/ gnc~jۻ Zg`,$h1Z ӽ8aF"k($:adj>"lU9"PL۠A$3تf{i+v*9=Ѕ Ni1+:'jaο\p v/Z;v]R8:4zkV(t5[ U-fg8j|汸6C8QM7%;Ym=h.y12?&2WMvKg/_dP<g A]Y#֫2m(:o:#͝ߣ$~oA;Qт󉜙 ych[cƙ؞ (uGf{7RxG5!ÆT+.+1S[?s5X~>30B['O0ԗ\|ʏ0~7Ν } 6^:A~;'YVvGFbuS.7U3EeHnyf4"ſŽ6e~sβ(=}CcW*&HNV[3w JS7`@ziX_"$bMo չ"Ew Ft<ߺ2i,"ߕHc꽤:$""0w }\bGy7gE "ãý9p?p9%3e-^L*Έ hhꙟiAi¸rdVʼ2gϿ݄.{ev@Iq,/x4hL+_K}DyTE q4 eZ}{y?qm~#pgdO)\'æ}F!bc–ZjD-UC*MЂm?M5T>ggՐQx[|} DvEJwwz)3 {T}dgP6A`;:h| O?j\KteW,$o'rTp1yUV<͹vBǸBew ~kPkDËtJ8o4+z7ҡͰݓRTKn;"G#c47-Zi']t?(|Fg:~&T% MslvGESʛ-k_!LԪ4LҲD/~{@xظD%1TZ@F~窺uIîTgh Ca%&|!h,^ffYg/WB TkKr%J#wÂWLVą-ƲK.:]L9DtsNL6ǚ|dO?Ái,q-<:ǸNei{dWbQ'Yk*G'LZj,R&a +\l=Jli׀5@wX뭀X%ErhظWxgJ۝{aJ,␜-I z1̃A۱ jwNCOv_D2 ?|9`Pwbs\2o'RVPx=Tn%6q_Mz|.Ӿx3xۿ,T(]chȵiod:z N@Bt!k"@RmF$'~K1D6rNQJnӹa<69GvTF$ƕUMg ,'vG:;sS{j"#؃ߡF(]xqֈ_sFX48*ݳ)\N$eYDĪ> ZIۨDJ:5Iu MkSϷȦB/@u "6qSlTНKz|B>QpRzwyRp #FNB݄9*̇3#g}Ɵ W9#Q!d%z4y&Ե?/T!:mFؽJeu`86FmQsY@ # Յ I$Dk7=~ݹ2c z&o| <r+ CK'(^Uu"E2?)wI}H%LTm hB:hZ9 (t}0RII53m@ <<9 Sy;U"4+ل.fo%1 hsdC3Ͳih ѠOqVXeղ*CW7 ]kT'=-n . xΎta-W$|rׯ@"gOPl~zGA4hz֪^u8hy"X-]F/,%\7 4zCS*/0xJ'#IJl8^!$(Ӂcy#Nûyq,7G=x 祴'nd7Y]D4;u8Ml# +&쬵x:%)Ͷ]=+Wޫf Z!@ĢX/U<7Q'U6O2gM7ZQŽFw\="w}ቯĎıDL c&­u ׍~2wdbœÅwPm/-y4@!gs+\(Mr?# SB߭:>?]=Z<8^^|[!'>)Z b>vl1!t0$ԙ\ إ; .NWԱZ(0H739jlsg;a|9ザHvK BK|K29%H-اNJطyΪBcȟ\Q5`Q9d62*ObLg<ؽWOoL۟'Kq"cWzMU*hq{Z92:m~0./WjFE*I2qn܊.E0/+ь?gVHpHzpNW!pE5h>B>;o-qT*As"޷A nzIkCeIY?73w o^c(1W; Id`=u]9ʹhhhO:VrR|p$W7#(> C`q + <Ǡkm,cASh҃)>3*xٶk]*MN ůȓJJ\Ak[Q uG=ZV &:!H-Ex,dLݹČtr,<"RIsZZߍ/7qG8Lt=Hs+|  *m7=ً4S6>g#b6~ ):l*ʛ)mff_w)8*V5PSę*%4j9Z/y΋2Ql{UV+ ę3#2X*Rfq k> !K+ fV_b 0\f:F#אYDNke} '>BHFKIwy27]Ar"l BIn$W^Ȉno*4}!c" 6<.Jft_et_%`,3 s,37= ҄gq݁]J$4SU-)N'c=C ODꦋƕ AL+`0'}r2,;3^ӮϜ] R7OF,utnvn7[3SȚg|xRߡ}&I YrjHeh)Lbro=N45)pćnVY8/XNmv?z: 8e1?5:icXYJʴ8_M`0G0|#,zg΃!~[#Kx{`'%,^l=j6t@\2Ĥk~>jp6ԮpE- 'c1z /Ix@4)?Cؤ}I$*EuPZ nLٞ ZT}47Mb~ ǚ*sܟ;4v"YF^O@04JCaUl<$kV[37lf;UK4Na~e5-@&7|-jk 3;`[K3&,WnUvFOV݆Wgg5frYQ@CO3dUfPEǯYSRfr%O.EADVM$fLz!?)#*M$Px-iH޷p7_y״LKivz& '^.wV2s*ۮ!w/w+'ɘ5C4`q]K UkKKWCu*ycs{sfGQUYԁa >+HRo @C=cI & HPKj>Bd`}IpN ZDa؆; Ӫ\ {x/(ŚdOI#=cW~;nMe }!%ΡFh}"F58/$ʯ$n߮jVe_o}ex#VHYr/]aR䣛,|oD]"t^\,ȧZZ.9W/B86ɒ?2QpU?];@~g#ݱ58چB`y]/OƉdO-M|RS';l(cv*vL 8\ Zjc4ل G?rZXq>Mx#1CX*mK]n8PGL_y90SCP, ֑y7=t0l!$']dS4893lFOiz{0@s;H rXL^ ^jD&MI-^ e3*cL t IpJG r@@Sq[;y)Tk|vA^yMT6FJho0> 8TGX [pfs.錇=~kJ/8"#;`rWPrv  a1!kY2k&@ Y U1O@p~{F{1J))DoUJkN5~ů)L'+Wೳ}x+4JݬGsյl\?Lg(ˬLtb^p Ž?6`5ƺ<R+>Z. ˙.B0Ţ?A x[F~Q+> /oAtWye1OŋR(H_T\A]+bFWu%F0Q2< Vf|}և~M5tE;spSo |WsWBN{[VQ2^S;QDHQ<_L42_d6Nw]Uiv…6SZ׶f$G]O!辏1ؙ4Ll62z5Rr?]v%<_0|z'o Lyy mNO#=X > [898 ;0⪭kSa9c(s*6 J)s~ԂdW~iv0C[H0b(4FQəY,1!KտIv;hF.J! UVGdٖQo:qy 5DQe<\V/P Zg T$K%3R<ȎZAa*5686VB1UK|^$y* ؕRνl@V<㢊ɪ^<#x(׻Mz_)WS:':*>ض:0IJAX ) vAaȿOktG}F~mJԉv g YpwP猑4cjEWWrr{G紏E,~ vQ?KT=FۻEںRoVr1-VtFNe gvO'( #,&3ABʹ{j^ʄU]\T*P 8VNA J@T)";)Rhr4^qGZ2 $E &78e8Bۉw3jU{7+X5nʡT&:Fܦإp^[`v[:@>W.VtM LfA(; |y eRumZnB4&u4&8E /ztl6֫f`$I;|Q Z4sylU|0 fpGFM&uM?6[FGU{,v9 TQOg*TRurf_8A#S ^f[|u6vrb |%ͻ l7d3u}TBH( 9CݱJfU7q(}^ 7,>b(a$Xơ |!e)G<7wD1?T4RQoV(>oҦ tCV"Ѐ<{%_9/{2co l6K`AaC2g,Oi1a_G| )ԏ}^` 6!`v y/az_ID܁Wu /N d^PL-O Zh`&RĻ9kۡ J$l^ga W|HB\Sz%g7{`voHWo\> ZFe{$*\==>1a`sKjcTQU ;ä 9.`_buR{zS TKh.#1Y %{=ҍm9'C0Xf?LvĽP(8J4 y}zfЬ+.l$ Qm9]ʪy䚝8H=a^jeIT.Hs鹰8C} s#Y)s iT=}:K?O }QSV KK 585>/ylurV2*hƊ"t {~J,M2Of!hY^*].ti ]3OhAlߨe-a"%J/kzӕ}R\M)2WQN>G_F;%ĽGV{9kNYX*p"kII-P9tyg18ŘmO(j) t52]oX;߀Dw)v '}T3 O4H;irB@?Z,4Uub% 7Lb'HFMK#0ժhV<-q؆|!Gx?'(H>I*Gų F"%z !ڣfOpؔf&-u9~)DAJhdP6S_;J'] q X%dK!B=,yzbbW+Q#d W#/)X5 e3X60MVg DZcMh {0;!Ϯ0%̇3It Q#U:k59.tb֞xk.N-0EaKuzH$'q?:ծw$qN+U>'TaH4<_,܃~wX% $jw(Wc }p*-ښY4N4agNy5# EvȞ͆APp-̜0C%|@>)h+"7][Xii H&x&A`hKToQ? .V.{2w ;v:Quz=E+?KLHTxxF;7=Яjv}$m,PCUQB0>L5i~&4ocuޡUƖ7 \ʁrL@ʚ%]YbM i֣LTGJV,)я TCEIB5˃a)֡ZIYp-%`WJ=q5ݿT",i$\IA%2l[kX5b]FnVHʃ$]a0w|?gWWc&S;F0xڔإؒSKw Su`@Cڶ8 Y\Ay:0SmZ$O4#hNhvnڸlPu`iLX㯶WhR$΋-錷 v{f"YBÈsMC7EuwOB+{X@~]ł*,ABO~ e,jnFh_2 /IT6:'1O+[8j`bƲP:sfdV=ѫhlAT=O]O#¦v (>3NCRr5p %BX^ r)Z5"NdUcD%uߢDld޸]-naˇkؖ톥edc}ZdT5l# 'SINʔ1,"{P 6dԭ^7E( MֻQt*=@[x]%O!Uû(EF:wm!4BbRqjSMCLDgqs}S5+ǸL82M7j l|>+u3 O  LQHJ/J)Kr=pPt2/L,a] Ö{.1Te.pJ\u4ƷQK]'\q?NϺ~'u Eb@Xzwo`IF.2Dک^JaQ]߆S#:~ F8-(ʴ &Gd H [M՗"EK*voⴽJ{{hjm'Vu2GfordWJ* y<, Uһl)&T_Rg?J,Tl5فdS~ .-^<9 Wݕ_!e^ῗ4=5|mxf5 Dޠɍ Ϫ%*4 vF]O9/DI^mgIAK4,X|FiHh=8,.3$i09*\5} æ!(vMvpVY4F-wtc9gߘzpsT W޿wi. Ʊ ͙s֛똝Kݯ]&g5&NѐQiw=hZ~hl~FtC j!'PaB%%xKLBa,Л4)p9SY%ʹ}Z W 4DIg-.scy=B<GoC)rL ;zu~Mg F98(ϔɢ*cTN׍cGC> 8cG[q`#p^9מBjRcY~dDo I?+ U}VȳoM**wj. o! %B*&f zj MbSIZx(9i:*G܏}GzgV& ~UTpxo|8uauzir5,(3#\AVpǜKaHuM*ܡ7SQQH!5aa&T@Ml|h$;ZFh_g>ڟQ-{"w2ܣpಁ?KlK0Mo ou!eI04Ŕ[2x| `Y PO:wIUli(nrd)q+AR|4ޠ9J8H˪AqdGsfj!EjSLWq$ T%TO:!OxGr\:ԛVDK| _a$MM9E :DrP/Εw$?p$P$!<3LCaO6, Y]/ wY+ptAt`A+j!,|&jyAf˿{ cpڇHITCe;Il2INРX.1bg;d{ÛqV$ }wn 94[ 3k:bF O#98zVZgUJ)Y5>Q|09Ov1(a4a?Š&2@QXc-R8YѲ*1Z6hgiz6?VѦioR=qV}W PAy묩"r< ft^>oyH%{lגhow]ZDK)=gE䝨(C2X-کnӢ` urvS,uX怜U3\D'i7hGK}GIw%]@jE dzգ֪:8\J%.bpTX ȹb{9tmʻ/ ֯(cؗnbFoYpEH ªdjiicĶbK'}rNF0 :.E"y '`Cѧ:zb>>`Lw`Qz^zhl1,9SC"דu[T6]%& 7 A@ͪT" *6dR,wvG(ʔ\X foJ[U_g}(Kt0RKȀ"(tX-1L Iϻc`(o"EىҫxMDGdEr]>dG3#Ծيud?Iqx |>07yCa@X]Clxr;\_C vZvI]j=NGώOт$%5!D_+G2qƧ;/4[T$s*z:À^} EH =鼸Ґ]ww? $i`°D]do Y0qȚC?{WLΐwgTx!B+Ovfa/ *%R;ٰ+Z99OJ⯕q<'2$h޷h˻e9*'i+g_]9̭q[5,ǤC*f5F ic `N}*|DcY7uBy^KkW,d`Q (^ݩ[K! *Wvʡ*CVYqa)zuS"tyJS2VӼէ]2W*`:%J1>a7t %ݵtfh5_Ns/ SB$\͇p~674wwEK!n4|i_|O `EA tE&,Q3uByKdt8~ 9"۽D3'W8zm0&uyGNf[rC1rIFx8=@pC1s? :`Mcel! yb,MkJ'+%v,R8JjV=YѓmoX-3Upړ-- )"FzR0azvno,X>+XsLQԱsCe8%~2MB,1RD Se(u@3hg2jH1U^) ipIXGS{V$@Z ̔b,ds:Uo#9Z{#_>! ]"^^uc"&V]pݍ1ɨ;vw qt#^mp9^xWf1Kb,Mh@ A|z-t6ֶa$2Op)A~ؘPeC$FͰXQCl܃ggmsN;}lT5%5GntʑFz0.0Xg\] 8O;aAK ol*OČ(rP]h \PZ.wL0Im-CS(%ՎδoNJkFF]P6D1SNݰ)+zBK٭KMWQ/+2@n]ogDTL*Vfї88(6>jکٔ"6@~F ֬:Y'# }$gΤA `| |W1{\ETl4U+ykE$Y]6;h}]k_{uL F3,.kGʆ6#`W\(8Ը:azSVDiN <15R0lvKS7/,5>H <;ʾL|L\Mzpn+I)Aώ5<_Jzō3独#_7&l ~[ybo-] 'mIL;]`=rlW"GGt,3XlK4=eױ i2R]/[VP,y"][0-M%{S85w =o ZX]_:ocm\$9o2Z*:M=TIJurYd.Cmyz7<^W,4L+RW0U/3EXY3uWuU,N0::.kK1j"ßԇՉb#nO!;ϤE P(rvkbJሒa 2l|sG4,ku%b*آt³ (rQPH_/? _rA4*ws1K{U sero7OCqYW/}}Y:ID(ٛj{O>]* " oX|kĩFgOu[!ez¡bMxX]/r`ڃy7J4(Z_9}3wӷWV桷_fzsJu/8j iWy,#<R@kL*SxMނN "(z) JJ$!X!/ww2eGrqۧ+:$ѯ[4V8,MwolH"E1W[BK}6rK>XY<dD==#ao#|ix^'t /#,;j/ըyƃ;zj&a4^N qqߣBYFLP'Z²>8r1D!^X*nmLS^4qڴJ/*(0a26үXj8=w  "f^]Mjʦ̮v"wxTd~%τ,F*5ƒefҘ2SگԑA@!$*7Eg;ujÔs ,gav6|hlrҠ(L76+CѸwNIoy!>tvwCĨd"AŽ.% Bf'ٕadx^\0!]6- íR`L3}`9 572|$F{6^b ( F"C3Z=KSݺH?::r#7JUmxߍwKKK sd~^I&ٔGՎ/M YGj: Leq)xxri.e/p7UיbQ!oF`zkn*|u NS߷"&":`o0hLWjtYǑEIi2_xLT֮DkR=Udm*h~P,THb!RY&7.=K~~tޘWx7Xs*"@=E(oi,daѤXE8|&p^Ha"9i2)fk^'!W m@xkM,}4bw"%Cj<ߺi um%' SYG?0x:z^YsrEI2W\Vb~J5 _Nu¾;?{; t͓>#2ݳz6*$|Y|\P帬 b04ZHUcIF\}1Tw`Fq@{cۂw٪45=hKN̋'Ot̹/eԟQg38KnNrrakg3oЃ.XN^"EQƪRt/HOF Nq(S6c?:m$hdL8KkS_6-Uք +bk馯Tr'G r]b9^p_^)iMQ4|v{rQEѵ@ LQ*ٳŴVykÉFR7[H P;ײ;u+]/~s ~fw}!j.' UsZI>Bx65S9%1K[eҴ ڵ"JPHj`S\6+;εA>d d<~pI٪Hw9لfrUSriyB/$nͲ~:,eW΢ZY# 7oyF&G=T@snMύ`umKl$L*F--z::KmjT9L`daSqN9<-'F@AWр':c\Cz^|J)6DV]d)~1@9Gz&^x5 OY̙&HwpXg(Lc;ְ_'`CXP6ɂ+d zxxC U 술S(*^THY0@χŕ xG t3BC0`(MTDI(g3,;f`&sڰ[F\P^^{{-4,RGC!K~Aw|1N RpM$ ~ ksH Kldr,#wG۶ѫbց /_(Ը(a庻_;,|.CgG|L +0A'v0Vڥ",Um$-[O_5zS;9J j=oYX]>tL\D`? }T_4b/cw!">MM̘FBe^@bSJ+&GⳖU!q/ JSM o') ck,\a$bN. >0͢qf1o2F)Z54X0س6JD #r^Lk >>})DJ(&YaQocqe9nK57GTpAGyHkfz9E R.sգna(q|#G-#?=%LbbĪ稓d$1)\m$Qǻe1$YX =Ƒ?)WpEr%O 4CE1j 6 +ŸՔJ^Fg.AL| kim#Љ JT8jf> !A)!S AU.[`w1D,!OzaZ\-XۿYJ-̄f1+ɾ=rf30s:7Gp,UӭƼM?6FfaUJ>c%n$kcDp{ܮs3V!KVKK 6w.9d䫻cH7*Y8Hà~!ږQEIT+\sMBMB{!K:0T[i3pD!N4M޻"gx3ρKxv+l݆#bveAU|kϹGƯW?X)[vE 0BZ|_ea>8*!>m+eӶ"j>QÅ~NC:yfuW)˴8?HޏVj,rB>6?;xcHuu%BҚX2NFGš/8Q L]_7R{ˠTI.e\ԼemŪtǼI0l(E(n7 y {nJ3>R>*,ΐ,3DkMalN yV%vwE=BNMSsjh6Aw˶ ͚#[F^*)wK%/S4M&~` @}5txy}_gɽ"\He):N'*f,9lP?ǁNUٵΖfMuuT 96pg)q~r8q.vyNG+$Ň榾 ʎ@Oy[ve۲=v- )\!k5 BZ)=j';t?!N(3"|0(W)%ll ,79o#2_% hukD"^.0AQ}=x+Iӣҹ0ơ(z n*4ja|37WAی30rpMtݙKPUXb;47ҸGLbTTܞhqgRiKl贾?zouQgG;Zh^ It>8ʪTO.M(t5­s?rRph;-D+Kg5x7.Dj| K$"$50}SLcX֧S|Tl@]̆O\O/&@d݋l'`0r[Fa;lղ,p"\g( x|KvRB( kjf?*yZ:u+"몫Y[`{&^l-ă7mi ̀R]/誰^bF8̣%rXyk KN5{E_䎝K%Mc< Ro{3KZ@mp 5KY4ajv^lk  lk>zpV u5n9' ," ORDPslW(a01}vʅ>Fj7*W =FXJb#FnW KW莙&#A>IQ{{YEP9.2v׳?xU%n"gŢ]("ms:++w瑴)srz<no{\œ춬!]rJUH͛q~/ 8q.4B1Ȯ˯`vԮςjRFY l *gRWip{4z1Jhn5(Y1z ;>|/D`7BU.ʾܨRPoAM"ה(8"~}Ao0 U[=&R$R1=m-|7H;4V(w; kGrjJSQEE-eE GV/g132MWڙY 93a6[L>?^ZoU~ۖ RH"U9\KHǔZhGl4iI nn[q:f!kL`x"jJt] ,i̜m.dĎsw^`j(WxCHJ?ޟzUHtzP7~gy875 w /.+X4Uu_sgyh ܥ&Q φsϳN&N"ĸb*Apt$xmSB[5(Ռco{ 6j sKw1ϒ^wV4o d@&ؘ u$b^ݪ>r@.TψO6qmH"NJg"=`N&aȇ]ɞhAV@w2>7'"XE)=oRO(ݾ$rC:$ӏ( " 䥻э^P.mjˇʆxHϳM]ym [g6tuLЫhRyBl}&HVq4ߏ`hـ zV([NXv⣇:~8*4BѴﹶv=4f\aq~ueA2HcZw,aaqR!&R$y(ALo)X~%- +Unz[75 pHp˪3=DW죖7]iokeSÁ$ILh uƖdI՗XRLv<=@7 u!?f©Ԕ{eLפSt2ޞF6>t(&dCwY}:DB {`A/ <ex-_^mv#+`Rџ"!) tg@9_CVXDs9 '^ՔqI0LfFT[3pe+T[tV@'/-Vl߼(V9rb3PL*x A1[̶^3m-`͝E~ǹ{#cwWÇf)  J jbXͱqsRS?7tϳ7>Bj$$=.3Pow&RzlF%&uGO߽1Xe$܈jh1}V_nj<~?5] 7IƗS]§D@a C*~|Y35e]4Z54qD|wwB:$FUXY8MƶGZg{X,=J5D0L./ Qqz?+'O?]uKθUzEzɁ&!@FaҨ#nZׅB_#;.01k.Whj٘O]n)Hncyeq0^u]'uW9gҳǮ)Euzt|wGRRЀƧɖ=s 5*q$˜P;Q NWb--X]۷%D[n*ˆ4Izq5;aĢ4 2˰Ye&Gݗbuk)uj&DA?r ٩V<FK*L6YZJhcIWЩ[f6mTWW>+tTYF2Ѡ:(Om:hcV{3mZ2Zl ?w![ދyJSڅlgx@W496b+MCjn5tZIyOJ,xB[?a]NV}{@&{2OP{koO8&;cҖ+Bń{[ a]X;meG;>1ucAjRt0ofwz Xyu NCN(WۍZ֑ $Ir~CI(𭥍Uc„RQfVm{-Q5^:b"}r>P-kV׌>Yޏk>\+l0$YSh -*AX ߞR"=2}UKEshqB<0=Ч>?T &r|x1` \UΆP:ҬG!H9ݼ7 3>x3%p&#~6W+v+|m gCK^\|B`KԆ#d$'`\M>DRj^sL>Y7Lg0Sr ='O D͠T*K?:-LZMG hw~!7iW)6ZWv:7| Jt9ҝU6RC燰Z{UχZ<`)D Dbe҈I8EnÏAJvW+ }+A,a';[[]*1/egtWʬ<]Xޣa'@gJ2Sr8Iy#~ӞBvqJά[x@?޹`;G!NwAaDQ$qW3?84h8v.+d|9C2T0B3d\*AWԿ'^-"9C =-#1m6{'h"؜\ DwFc, ׂ)j~2jzqGU9DAAܸB *r;/ۨ}6-(z˱v2\STﯷ߽A=:8-.SsLmicCY@/Hk,PigC s=i]R7 oTThSGbrDOAsਿG6&A{h1UNܜvb '`5mLLp]wٜ5d?'ob~ykpd+Խqȿܠ 2 Rtcd-uCӅnA1D+4LIJ[3M,7soe, [68|"7[:vK*g&h!B $L[)Gnڄ߱*o7~ $׎#\HgdEKcd(8NB$Nqg?+k \ ATte|{mɦr6-89Aߣ`[9?[3vv2.I$byƾg/u%B\d۫ _M4 -N3w?;@/y{IB͓~SQ ]Y1Ǻ;[+O`\Pf+xZJ+\M(qFPI5iKxp3GjL쌿 P%=< |yᅥR#*r:-ݭSx-8Ї4-I̧e0*&N(tЫ?, dYA59$x'Vԍ)Ǒe*,C%̴6U_l&ѐqg-Qo'sF > ɹ, 쏷8M7ܽU_cΛʊ# H<7<koxн`cC$@L٤2VàvzgnYn^G|âܭ>!# ր/S%Z[XilVGvzrd10Laa4*ob<4O,ZXK`|3b$fjᨏtb!]z.'L3=ܦ9 aS@kƏHzFIYRǽ䞙xR:pce3,ܨĒ@Q*d^kPVXB`Aq/MνˡKJtz%g?M['oZjaN挀zF>9wrr:!3 2 M_QBEՋ>gJ̫k(p@'U&WƔHKMywSöc]rW,f +4*(\p#r͎JdQOcjʐ`Rɚ{ m‘wO Rṷ!D[x\e(~Zu MG%=15sܐ5  ]D7W(69s7%G5^4{)s&[xN"oKg(N=?ÍDsL{yb}iZEg1crC՟tWT6f3 YVAW"{ڱO |}j^1o {~Z9'f}hlG6IQŮj Rp#z6j , :HTȬ N(MЙΖp[z`8?Hۣ@%jLz6П Zd=dlr "P?AY DS1{A%+Zަ3'Wq*FLHEG0a?rH"Ed9;ӁXKP͠,U̥L-Ih11Z&qE$&2eV7S"=HX yZ?҉%dok\TH9*/ĄS/Jӈ\ҳz1+}oi+ ?MKۖ9܃; ("\4h])9˸cXhv ZQcoj%sh`U!1?2 ?hxlzM֬RIvLfy(NM*twE>Ga=IPsz8NZ8ͅUH\K<"R׆~GDF7\ `N N.]+l32~I\̪`%rANt^d@"q= -Dˊ%oi/4}FsNC!XLP56_ّ)&Xs[MXL`T#pe'V*"c74pa㝵`&^vGw.}hb3%,IjӪϗ}X]\ V-, lc؞ti3߿'7׊%nC@/+7FtPMds;Xa0cש@/ 0ԟpLS(*a# sgMW|9n_O?ill9,LjYBZ37xO[9{| csb\4x`iR{=eֵ%C{ϟuwv7&~J&xUg;HxEW)IZ6T?*3n3+28t׿[G9O@Lŧo`BUɨe:ewC5ؑS{ҫN(D(,WC}V;n:O$+Va;o Y nBi! K kMj FKN)wLCBG_[ycrgDU!$Pht#W\n=w:bj/0jU D Ji 'q4!C+Wz5#HɈ2#j.zK\%[yxG LZ-fHռ\U]Uԫ.fV]i3Uꄈ/랪_{Ѧ%s0Y!TXRaP:;Mc~$7-_nm%ݥG?ٻu Gjj̆Z7xav&`eEYx=6V9V){qQdQ8*-Μt R*x#̷kP4Ni;@fm& ghUU8WaZ##2LxiB{Qae`Sɔ X&8_+ Y%Hek{z$7 2e Ps̢Q *6&f'4@J!,L?w$|"~7z"ݕ+.o"﵎"?$v#]P\r"I?!Js9(F'čgH^;M.8[7&xt@p 崼1w@h9qGiHRGg?`>V Vӑ_p=o9D5u Jw>f\n6ZCBS _uQ{Ʉ92hgC0@JեPP]Zoϋj(5dp!/0jqe{-Kd#7YzFvsIr$)ߙ T04T" J L]rvK'I~9$&oYV(|MFk0QXw ּ[yFk5Dhd}_"֟K6NN\bS"-g`OPR \j#?d#x"aOn7Tv`Ћ+m걪N]+ꂛx?\Z,j=7Ena+՝R u;hA{,"t]tP'}PK؞JArML6U ؀ȟޛגSo6:8]F?4Hԧa,-ND5~$nk{RVF0﮾ יJ [2ie'g񱶐dj+Y3 طE[9!$<%Db#6"ɔx5aWṷ:gVeGU,j O9+@CtQ f>0frUCm 8>,hGNDMMۗ&F|w;h=57}Yoa^-=UW0Gd45 |* *s"S0hT]kOo?Y c+4Un)d{w9J=vz!6WtgN#^3ğ?BCW̗CB6Jhݩl_=qϒ^Evm7[v}59E}_W˸.ߴy7J(G|jʸ?aat%ܟ%}4z>v'H<-e*L$p`[緱YiXXgpcM}j zߢQ`{;-U>o<^F!7PV0raPx̳3 bk ~OAOa,:"(*-|=9GF5iDh?YZO&\WfWⱁEOy~,~RX{GX\@<5?z粚i06gX\4)0Vy`* (Z$YfU5W/(DŢ`31t߷̋`d":Vv_~^d~oTX Nt;)pXto0DCߦ5;:Ft|qQ0 ua/Mݢg9G'Gc^Aʙ xM}j&0:k1`C!|$dǶ3P_i9Km{t_ /mul`%DX+NZb?E)tTN. 7JaAI0SD"?'əN̙9V7x`$b`mGR{=0սZ\-JɄk.>4̓)|=YEzN&1T%"=‰L>gfb M~Dj+%I߀[UXHH_R'>y5:+oB[;E)M {+?N9?c.` /34SwjFkCFa֥`g2&LAXc/kߢ?!Q$idJ7Yemf5a*&x ֦2A*-EJ$yC ]–Ʉ9@q\p6jڲn*M<#UY@pJ^:El.ūvT:Z`cK@c)ly ?O&N7Y?4)=WSRbTJ:kjK30JjS[ێڽj/P\ JЪ㥘!<g`q]M?_Xvǥg+ p@oG(iydPu|E!_MP!XyAs2<.2e}lE4bfƕd )qT8fOAPyFzXe.tWkFD%HWCa&[^M"O"i6!Hف1= G42.LyUqv>YjT)XI;fS0rˠoV$9R̞rhg<ă  Q""?\ 1Ҳ7@p?iyR׹oBZ>6)>ݥҵ :y KWgFň%X&@yOc;RPeaAePCWw g`l<݇fc~O^hᄨ[Oh(%UM*@~#d*yP7nEo`Q +-_?U*K?UC/kUO7V- *V!HɨːoS 2h7>2jbKy.zsr$W}Pt5홣HIYxNe}&~@*(yM&}J6.E>s{yQ*'0#ǎl= NvQk傕tY)~}ji3T}K9әjŞZUdη<hmZnˠ&j_5<) @eVB{vec'ֶ0v,i* 3APbdJ$ 4-#ȣI%n88T 8|qfҝrDbj* 2d^l8}vA'c oQLgU7h`C ^VE+x'][9l% &BysErDm*G1qՆ;ڵÓz~cpB:ƽ&t)TXiArup4%yOh:(Iq4.Y`ombm. #umi_je:IǴl`<;WqRpȷ"qnkJ%r)ߍk&^.w9c vpLej* Oh"Ąx NIw8Kf! kzvpb3/B:ABIBװX~9틌?Jrl ȂIFsLk!FĕOiȶ,p(Uƃ%bR]C$`]PFr3;|Ϸ)xS鶵j%ZDMũ5 J]O9$#d1$y jHAoA",Yfm2>5 쀳5"'ڞ;]@(8˵\Uk\^%&R:"=GZiR]%b~eLUb[V8err*rxC{):"яbn c|5ZA O  ;+x RgwEv ve^fNN'QsH%~fsp|p8Q;o̎ia*$#]n.bac/|?( dUt֧$7c48eD/O΀` anTjS1)D<~o%|ڼ&̥nrW@v@GO<XPD*o="&aiB%Dl:uVQ7ZJ .JIC4һ%&-ټSSI' gR1) \mYJŧ68y;nOE ҵĚ1^|Y$ rGaVkR"S^ %]&D&ݯBtGu)yˠ A +{ Ru(.X4掹-зQ%HAK͒[*/5<=Y#3}Q jt䂂Y oL թ腷.qB#{oy.'gƃE.{UaLKsUp'Og"=\zj?uACގ!r.fX fp`F*\cuFSէMǒ,<2IYVpJ|rs1ʇw$QAZ_# 0?Uçl")zD}~&.HR+"`44{ ]ି^JFDr3O-Heg#E0w .ga*[K)ھ _f6,2D|KbU-@VELhZ]k\mp{v&T (c  |9=7.vٮzg9J:.%jVs2Y:k2D\QIhX&եME єՑF% .m8|x&+%Q g)䜦6W}aQS zr =*}+X°uIY(Q|&SPg8"W0MǷhN>D{-̝?u fcM@vF8IɟS8O}TXZMCHۚ2d$*+~*:/q&68s8W`39R]={<}y0KBj=B~th2'u A;z2M]î͘UdS{ MŸ7;NE3e3z]KP2Z3 #bjB\֎N&ۻ-%Y ݜ˄Ya܈6%r\0`gER"oơ]MDXr\<<\O +|5ICh)+AbouB ֭wAZz-ۮmT>xF[3Sb7A0eF ўk0Iq9QQw,! p`Ung$ֹĻC 8/tbFW` ?b$D usƍ y '%N_3$[Ӌ*[LJ3Ɇ?f{.Kispex uRZ%#WC.L&ǧ c9%" Oj%uݖN,]pJ-sӹW*k~m}; MMV*Cz" k4d"nǘis m m_Qboβ"S?VWxD C {ET]`덂3vo38%xt V1t;,N]LBie=E[Z+DּG~qM5h p7(v!ݿ)!# ‘ G{ Egz< IݘZgψ; 'ޒb&ONtr⎟VƘ]?d0:aq:|[ıXz@y2bmfn EУ ih$&X\qww'\tjA7 CyLΓ{S"OςzaHa9~YOG8#`ʨZ|ǯqfB *ءhֿ%>KEw_oN!ӻVKE o[qoyXh`/ ~b'9#䖙 B@]7Npa W} 첤ʵ <_%YJu;fmG.'{D4gs% Qp"kP@ЍW2D/2iFku֖b6@BӆcH\sӕ%p) IVAf,HYG4jusǕ:pl# f`;dZM7-zxlzn짣5_PqFVΡq2\A{ҕ)z,M*D:ଽh-X3îbn}!]>pkt]nU_k 7{9! J!žAQ^6 u_ktj]vC\/?F7iNl2!,н[T)8{vR4"pf:uc`P?+&4}46S{W?8 D5e9Sڛ7. kē! |>pIlHGkt1HYgV::;άV}H+Z,=bu!˕4gZ)<)&v9"e0@3{B+'NH91~߄J>|]{Yo TI39cJ*U=R_RxHEc5rkd䣞oUU0Y'wS1y.3rIJtu(ɿ]PmĿZPSk܍ ome-6|ObXM2C(K@I_jF~6+ng#_5P`?`X+1!}l la8*l]@Axm|c!Yx ASMmNM] آ?@0|~HZ Ʒ㘱Ch^7aM?/p$1TjRKAX٬P\C7YNu<9/ܴ'4ҿc0]VGEzPtp]d1b\@%[}u:L.u*TmyՕ0W~,۾/ ~Am`tҙq+~5T%ݷ*Ջ<[biZ"y*tGgPzc\6ë3 ڠa`;@eI<QQ,3r>L/fdb?,]]}-a 8&~AFi${B̼7CF䦀GɎf(}OYG"q@.usНppw]2+yM L2v&0O])qĩSMb՜'1Mr M? Tӄc'#*F{ Nh'^{;[&ߺ q9oNٯ\%,mu}w %TaJKR& =)NiE}IW-7 ^K@%~2MGȸu_DU8T h0נf|rhC RG[$E \.Jwf*)e:r{8=U\E\Fj5& ,%ZB]mdhm_5E0:LBhD fGTJS53A$W=X1DlVZyd֬(O1wyKhK?tV &̪Z#zDNg˝XD̒Ta败(=(,»P x,NxA!4I-E4i,(C ¬{8'n t9A2ab.u|}_oʍְ/D$9~cj,=TXn\LM.`ߖm˕eOEq`QpWT2/A|%R:o :iLWX=w?1p e49N߂3׋\aܒ H\$a=vGg.BEGU2RBF"IĚbY>0B%bc6D$יd۫;*hF"+b57TBÁ9¹m>+#Ԫk\~d a:6 9(\=}|9܈Eo0gD2_B}I8 #|Y^_ɣ~Jz^8,ڳ%ZOkăDL&Sav'`z@8b )7w5:yIQ{h7(!7_Ϥst+Y>-q ^E5j53a,(ȊCYi«D&! ywf*~IDԋMS&*?ۗghF=a];n 5\_mk悔~l<-/ap|FDPhUy VIH0_6dfE6}2J9Ewh7Dleߑt?ُ kFyR40@kAQi)]ça?`DˇUŧ:wsZ)c/bTӼ4fK2!u!r}z|,OG$DirJڍ,^|}7Z&+6{̤,vewX&Ԁ`ȴAYz@ ׌ ܘТ&=t\ї5KVI cRf& Af1ʞ ?)t#f>ۊYӋ`ElGإjm~zJ QS8|}GB$!Q[\2•>ϴx3]#Ҹ0!ͅ+U%.*VJE'LxKhm)`msb8i{?ViJ,PDoaBl գysMT2OG\ИZL"Ճ1嗣,8>YJ:y>4l|t|hg,tm/|#S5Z 6x{\𒳝DyE"3 Biz.ag8~bHG0!г:̀9<`z;gQenל"9KdA+;HNW~]Ȟ yUzmn fIܛnȞh\&`$R4v (_P\aU"Ck j>U][eX@E#<%l'CzxvdTU͒aϧdp݀FDFb5ڸr8m%f|.Pyx-]=)|Lu `<Dy22c%(=JxMLO8\>pmQ7X/ ߋd\,/X.,<5ghpDgD{\^4"/$>5Zo4)gțOkba1PҪְb?3lGAK KɈxLq2OW|yVA)LV&tx҅ª# 6KM\h 927FMKYA@:sj2_(fijy_YUmwHhXbQl١ ?WP2Ew "to/c|Sn~gnG,p&k!h3Num>7$*vN)2}pP<D.j@'%{TcMhH&%AǒYVOΡYkYoޛS+f."Oz;fɫ ,(1} Z#Z_דl& $f8EQ8Ub,Q%1K ?2}'{DLZej=ctD{39eH֐7 i5KL-,I4n ,dAF*#s&=bݟ*9`411ji7wY3תmK!_>T,@~a#VGΘP;pUd6g8 #GѶ{)|q^gʷzrMBojdL#u~W:= h{+_F: O^IL8.xi@D˒En˳UKJm·fj)S~ ̍舔 KEO*6ݒ$SR 0Qz$fjN8~%#Z"m%"k={%#~Bil,mlrXom jQ{F/t&Op 2T;58qr5p[T^ۗ?rU0Y:+mH*${܉+1gE7(sN uꗕTAH,oCȴɏ7Sы^!n"~橻iw9)3.BC#(*8\fl q+{UZ g|@ClH5 IF$7MͤAC#mݭ8K/>ǺCr).bۄO׾bÑ9m5?Eih_ԷjBs-ל`>6/8ũcifMWGL[hj" Ȩ#P^ ᣖSC3c_ؼ5nvvZ_/u8m XSv fb5Fx[!Jf;eUēxJ}Rg|iX HgNy&e>稲00ToM3UO Δ䔎H7wŠ e&0󻪹0!3,P#7/ZC 8E؈0cg`wu_ZǏ+_N-P+p'BRJ~~}b!vd͏ 7D]l!.ImHg5$l<6iw?Vʋ8X|t4NH/{vZ`-Mp&2s"F~sՅHGGO:SOmnBmK!3,œPJbw(jhHRJ{Fʚ|:ml+o+I8xFHػڕNx.۪& KKc07Wm` waȔ$̊溴`<2Ef`g7P99{Yݬbxnհ 3@彞dnLK2HBf:xsW;Գntpww`#-<6@nq?: ѵZWsFc!Uo)⤸gE# 4? `aWu-'#}T&K6ǿEC M~VC`w:v8}#p##ˤ>~XI,i9Y6D0Ƚ4'`%F| kaU*.>1nuUBQ̏Lj, I;FqK"Xe4} 9qV903[BFlgRB>E0 |Yo2avHZkVM'b!,{Zm\ȉ6=tAD> >;aBp!ES[ Twt+"ϝٕ4[Su{Q ՂeV?lhv :/p&`kzlM{xp *Lb@pI:/(b`TCQ'GXഏ)0I~+SռuA *-OwBG\ c`GI]񅳯X͢\~٫$De?L]U.Uk:]1(G&mi6GE8pXS@oܦ4Ե>f7'+|^z{:"ߔ|u! L@nk`  ^U ja1sq(B ><4$SHDun̠cz Ay{V8:Irfbit1u$™³R秇R5J_+!3J!p1Nu |yqX-7֝=OН5Y_ArQ=֚s)jeu]Oxy&$qSY*(y|II)ute- r]<~sV><$kו:Z=ϟAa2#)xF2 ҒT2_hx_?|i}ֈXz>1=3Q;:!6=H/>ά`PbJNtƀ$&|SB[aUQV vnq̖rبk-I "aqR )zBK\˄eÏ>ST $$vFpy56J-FruJz,7I@ s$b@YBI]SrI(ؕEI12-:X-EBVQl/e",UP]cT-Ӥ˜ޑ5 0$9y[jdLYشflE߂viW1Q88+!ax\r.'eRG.dD# "a@k1-Ȏޢ}j:`i66QG?l*W֫ .zd4M[jb1z=Ie]ۚ By6  !J̬5\_+Y!;QK{67OY^C-qa_#_nO0g?ɹ>ƹ0 J j[Gmƙm_'p`(e`90\Prh)lhĥRPol\߾:ZeE<ȚmR!9.d΂9n}ffz%wX bA>N ȈUW(l)mtLCQ;JGC+~ެ&s5R3^-ɔ&f3[ɗ7z?yЅ"7~B;]qX[݁֡|'.%9?s~= kVYew8\xV8\WdCIm[@ZJ M9̰pK!g{04 ;{7~mlJ4Zѯj#H1R_1pu_=+E*}F X XoYUEC?dvYVeQ1޷W=:NT=EU{| =x.I5a91enR ѕ3"-ܺ)z2\V74rv&PFs b_57:"1"2~ 272*4Iɷ  t'>DW*ÖAևv&R2B(OHB[y ^_VLs`9T89Ex95i2I= Ѷtkj4$-bE0ƦW֏ X8-ěQL5f Q*FX GehAù8辡X;$H,J<N (b4j▬c 0Z-M,3DGnĴA.fs0y'^zn:w۵+EbW|0B"c]KuJN1P[U6u7wH9QRog++Z X=Po9qE^3ʹg-SWE_%IRFݻ ],zXVl :v~V~> v~`boO ͒h>f+w5=pPj]g~R!ӓȃ|].wWqs_TѵPŐR]&Kxtv zB矽`fSdw(g^=Ya`Rqͼ{!'g0VCeM1["1=w_Hs,Wʺo㛾k;gR8aڈDbrtWu~qi](ى{2Q*/ۥ{Cs,9r3>Ҙ9f̘ T1#TeW4'7ъ7 P$?`LY"P[Fp(埫)/&͞7LKĻ:9qkPLf 31לNʽgVtJm@?xBsg6&iyVwq|%ᑔ:>\$Ѫ&hC0%s(;g;ϘaW xr̥]Mg-]fT~ tTW"* d32Iwʐۗ;O ÉL\Lɺ,"!-Q)Ngmw\fX(Fam^/(lBL eFTD&P8X!mt> |SQHExxldj53=x@jИDc|V BX!8ԍ>NX&}y"p$g$! [܀9L)6bvc0+'K+]Up}*Һ`\1݆~ A/eAXV7j9 w ]`aR 'Z?i-J[9#Nf=92~aDzrQE8[u uSAM?R] ['ݞ۬W6DuTq0#H73tL97?Z o?uKf]#qf LCLph{4?I];5H*LفY?)lMY;Gu]J7CN^%,\w۽s{]V[}h|ŏ8ϊ)9q`I挭wAn&-y{"'i =?ĚXM|23/Bog:}ݭKm%io]=z XJey,;}5A -|8Esg ѢIG*upV$^(]։[MA(,WB^֣.AYS`TU PO0aڸĞx@0 8uWYBgFE+9 "CJSO(DU r54!*ZURWfe>Y$VJr(Qdd:%R>R)qc0[ɵc(TF6u̸M󉧥 #!s"8[=;il>Cb  }쵠sYN MGޛ ̾e Q_PJJ Zg;U$q߿@ϹFq9.9K@f@N(wIC+sR1`3\J9xbrӶ-,eڏEϴkb<0 =SƆ$t/`Eti+p^n\%6Cuyp1H[* ٤~.>Yݽd[5\OJ/k2 6*L:R|ɇWģfB=%qko|I8N"''e|p;N|3*q$˂xY`?# گ T)5NAVt,Khs15Z,m):Rґ# C$'b#Вa1q2.@,-Ǡ|Z*$quU̶;m][E=B"$6 O4 IJ!.ճs^$Sl+ȓ.|B=#[f^y/K16k^)~~Y1a56󍛞'JJRW;NQt컍H+)U!V þ.j=e"f/V7nD6T)vnrYj=a&'*ڊMG L.1DKm97MLv^i5:4rHw.F_N)[$ܠr K`wZ/.۽{rVHkD`JuH0+#DK[`lj:$RR(zјWHBay3-L>AoQe ~&(W<7ZLbdឥ] א,*/>{λ$釸GrO%j6DR+8G/ZjAf("¬ 'k$nn.OR>oR3Du;Iɡ.l5ԅV" }o]<јsL&t׬>$\#9nX CR/w26[8M]duOǝFi*hd|r.6\߇Ux">ffw$t1&4J&K?>EyˋڤͬL[` u~ڱPS'+W<>7.4Q"bI:v}L4߻7bsK /CڍU񜫃||aսUkzk7a Lr1fII"1ӊaØT_,&gٽB;YZ #^IǕsӱ͡iiR w.7fT?CMC1M*}n#8e]zn®!}6/$Z'0rU _`]H=r)TE&q풬qIvz?M@jUw&(bq~n~8#/tvȫ{f-@?W,)NXC=o!O(?S}LEJ T.^ u>7`Z \eHþ+*ba IYKO{>h/GV TmK>ʽS*T[Rp眂3_.hoz8i+;=ۉU0k2M8O޻qM͖y"TAs?s]l|WrL$jIW¾uy~-XqLW/ׁ CZ_a.%#V)P% S">AE#e_N7-4x OH~zs.zj6_JU$|(WTVkμ d'Ύ{6/"um ݩ3)Y9ѧlBzJ@taD?2=7S{92B~ b.,( ֛s53+rL>ZwFP0\atTj(SOKT(BKb#ۤ=0eyo_w@:{öE&q?gO$҇AƖ_\$DwͰ &ڙa_2OHKKE7(+vC^iH e.eS伙1^vv-b QeRˊ܅JU5aT6AWI-U,1/X)5yՍjVV 7euiҺe8"LEۈ?Y"`oΖ+ F(όGꌑW5| ea? ?#<'^eH5@H vLV%t@Q{ɸ9 }ߕKx3 96И 9r'OKA0^XGOġKڳj9 aCy[77BIUx~Xø]R+7P5Ӫ_lJ "#BC9}N*J FbNTZа^gZ{IZIХxv T6TAF͗\d:*%#ou ]7[ ֱ`DK$_xI ".hDK3k3k?2u~:^7xM{e1n[O'Ѭ5v ""V}%P\ģ\eLcqL:=i뗾Q5%(ԯ {dy h6NDj_: w{S Mʉ[M7Gr".䵒(-~ZI<;v5+h$xͻ B`-ӭ,ҕf{D볪\5u`\zՈIWS+6TƹU %-gH~iĊ%T U땴9VXjSH5_f6h#3dcM'V!CR: ?PRF]mNǜh*p ź%B {qvr^wV@h%Hz& ߅s~,k34+gJ+k0q빕RWƝ>A@\lZ 5.MUxCy퐩b*/ؒ0z5G|@o\uG7>XkX.FPcR"=KbeH؂ ]J%8T5 ՉWTk<)(|,ؙƘ8. " b+2ڈ0]ou?ؕE}6ȑ|hŤfDL=@|#&%dZf}Fٕݥ3`5CFv* _h&ۗ;=Nsոq]aV5A+ﰓHQaᙬ2+v-!x]0 ̳jo`wb{G.)o*%Ro[=ζxڞZf9}|dL)F/1Dqв<ċ~ $9^/yy/Sfiȍ0;I+0D{{ E9¾.tRfyƺ7[ųW !,?(5 ="ӜjY`؉a`}K 2S}(li' Cs[3G tFjp ^Y$w#L|*)ΩH nS@ɶ>ЙiA;EKiu0r};'Ťs$0gZ8P,F鬆#q2 O 9~IKof,ցu$bq MtǿF6o!XQnb4U[KzQ2t㌆j6d̩] }l#}k.+ۊkdAߺvV'WLcc%rQn'\sX4֚#5 /V1nI_4j{X?r-+iX$j/İtNfL/|m[:")ej ގr3y"D B-tU/&t;^~p$0[QMױp=0|?em6S@X".tsQggC v2"̍hy=q@3l9@ ^IN[ƏܑУ盆\V,QFx<*+1$$RSf :0C{.[=nOqoYJf{fa|W8p?>kZRuy(>6bk5BH[7 J1Lrý2piY+PrI^;M"&f|O ._0غQkʁy8SX9VR9 1v쉰&p?nvmx=V {M,x9)kN&|VnMWY#x#xo#Q,ZyM] _Ŭ !:I?=vK+ڒ(($&,yp=u(>f+v/Ἳݭ[D/k^N*w9ݤ5^Ծ0.y1¬mkrm+_;ȮBJ?ڞ꾂7C#r ]ǁO ؐIGl{U!@'y4.Td24l9K=>I4R["oQܭ#Xs;ZԪ UuŸrsXԭxb,3gUL #.|ގz6ӻ\ܮl]*j`wK.dr@ˑ]#"|In&D ; 5c0j!O ,{9%л$~N!1,{ RTފ?j+V.Tqu^}mk:9qMPxzt7yY=~M|fXZBhuaiWlSd.i&L-/& $'/.nyFz80@B,s?Q2=Ñ,/dc7fz|ηMWRqG uEeK8֮0Dpc}ӝp{Pd̙T%5q-Ak xFSZ F揿k5Umu]4l|_wNYmsY섕hdstl<'r2:5 K?Hzy2-iOΧ#yA:R2xĊDG4nwG-x `nW߶36y!=:ui <! g+r&A[6|CϨ[( w:@ :ĬŸOit0-e!5˅1t${|zk Dc;ZhÇOQh7 6)W>oDѐg&F!*Č{Oo+iFJ6"aZӂ4jyK$ f坡70_{`uyXNV̸V9Ɨp1ى@E3P0=|\Wd2aM7vdΜ)(Guw33`XzaL:Y4/4 U~r 9pbij;1#/A$4UP׏mf9JbdjŀٺD|k.3t!Wח1 lz@e@Q[9][Rqk;aդ<L)xF"1(OFv`># c!fmZ F?WQYu{껼ڻ!e(A\LBZ'^($)qT1g?@v˩̧-&.4{GY#w?[7.&%Q 45t##ңt3h9r dS'ˢHz۾/ٸ~8w`tzXUn.ceʹ0^Riϧm``\"(6*A7tvˣ=\`aq@˞fe$zMGF8S*&5fzNopɔX,`̥ ~~X A&|U.Blݏ -#ŪQSF ({+9o?3U+c]vxH+{]6JzT΄pJdK=` !TyWQ ,# *D,rMDGdt_ڬ K,nP>bL֜.&ﰵfF2+9| ߿ ǰ.ɘw wK=zvS{TPk5GHqH:!k-*jn",JgYH3ɯffpXDpZ@ܥD 6hյ_g9[%gQ=g0SaU!Khm%egZZxIVAv"p&`Bw'ke' kSeO'>ǵz9j'YCjnd{H3СM.HB9_Ŷgچ0CjàrT#֐o˪nV;Z/?xhLњ.} 7|#lgnkChAU^ʅc'uˊ!?jpK7\i eG#- 1_8`y-5F94;ƓX}< Yߥ-R1(eoQn^Y+e:6v%Ḷ<-b6t3tUC1}m|pun](IU'%5jW-nxONxBNHX4Ր܆'b9ꜜ,3o@֬u:bc|={3'^s0C(O v;^0lP޾9J{(';#HNMi[4C݂0ՠzUdB6C=7$?t2-k^w UvgҎWLGՠ=7\A0Peܷy'Y~!QZgzv!p e(%BǑ&K_z$ ԾF_1\bĉ|Yn7'0(߹u블3&2]HJ??_i5G9D1N/ֈݛ vpPO.׭ -уֹcEI\g_G|:2V"P!k47d2\cl4i]}yH +B3ğ4ϻޠb"[AT ?_}anl +Ct#9K(kF? -I`eujEDkrQ=`0=v+F\蜛EygxHmy?v&-G,1K(%Y9UK3S3xm*ˬ0cu;&Kʇj&$#T Xσ2>;y3jw™%w _!&,ۭgCM&VM4& \ދѶuB6Hc߸ NjبW ,)uqBc"'c'&ȷ"Zd<'Њ2Ut% ҉.7+@v*Uʢ*ƞڴ7:*Pk? z- 706:BC&ƘuvX?35ؼa'9V/`LM qN>:[S ;)^EG))cBصP8ɿǝb'Ќ{5i+6`LyP2QRE4"_:  i{N;2׏w.j-w](u]){TM9T]UI'i崥"iZx @k totxfKf*ko& >)^0{ [[U2?#fN :*tx(M6=b7JhBX 42~=1`Ŕ_p1Ok$e/9KZ12Њd0McW*|~jɻ:7G)0^<^fCo}|+s?c2y UrNa@ zljH)sUXܑwb|mf'(uP|h#C! |DMƾ$#$)g ك鶬_vW[t {X;o`a[9C7HJ|3[F+龎먂p QG=fCHbh2c4% 6/Ub@DF"AL;A`yERƝ?>v$*k+&2dYJb=r|14wz/R -5V41=c xH8ꦟJ}Jc컜QQ2ӏ67)́ʑV89OEB`&& &c9DtI0^,y^mD=9g,ہc8Bqb /i]'UhHժx#ԖU\blԿdu9om `mܝL۷)5jatb"ٲXxP3 አ~m$> YsRkn TSr5'm^ho>W0(BGvC *Rj0DF F+fPvAxC;Z%ϯUNNC8=s-MH}|G6g˰hشPisç/=y'߀ ?s"ۂIoӯ|!$`2܇^U(~O}˿m,h-2Y>pVDoH3jiqӍ~fjArr,sFt}^uR7ԉ|uNx v>Tu%ѓ*ڬInP "H1>Z Q\B- NF{8 H REjn䨩QIny"|w='-c e+TSV5ydZPAuTL}-W_n%.z!'8O\N`+k=%Jwa~؀Ad"O5ǩrǼn 2Li$.|&r*,[8)lJ*Qnbj:hXQ%NLgxrx&Bvxp1\lnFhF;VO>{~<`CGi9 ^@2f5y-+ IVxX(?-.Ҫ"+BoQLU}34aZ@HJ>S~̽Ka}2tc9D PTX:n±K6GfG7yfM5Cw+QZn5 4~i&R 2dq`Yu \(9_5}Ar|kmDEQs-) 59N= C&lRP{,bU]4KniIeEAr %,2R1!ï$R<^k]A-Ҍҧ+롩M#ηE{>5팶s%H)ŷ56~`Gu0iNtGGAn2C_r'*ToN8\gshK* |"/D$ ET9E*Sِp-Ίe_"zIỳfS#}yYom"QۘL?N՟S9$B,FGjilt72Ǭf_ɺ5VĚg mO_<.l`G'TFbg4p3ۚwRI(QKB w o8j 1bR tez뭴|ֳ`s_m.iRp,`5@kZ8TKAhaU#9^ c]BG3ř4~^R?/x_ ;J oT-g3bm $xduJzh6Q\M~}phype UMwm1s}nR KA0+%*LVj:U%(\)5֖O)fZMv3 SNh O7@ѥ͜xH{[^SJj(*gu];^ 1:$k {Bubw;* e:77𙤑Q%$GѯݡI[afy&bjODxyqщ|9 ʛ0\$採n:Mߗ CH')KPv~.ѥsĐHx'[Io֍,p/REfX)ck S~o_\[6\A<×5O'/<+'hd\N; ǡUwkzH lJ> r>#Ix61;y;nOy6CZNi;W^S~'s,5ANrCS5-A][@+Rޥ "7t͙\åHHX zK r?5sbYZN 'U&j*P/r9=vs*rClTivθӯ=.iVRKB??.p}]EJsUx/iXF hQfEC$M3hHhS]AE";?$H?~ʟ;L_27`ʾ|`wCAQccK5B}Miݴ7J5e,O.ȣ?t< ;6A !z q(=_GUm  4lA4 iU%uU^{WG<:L ={tـHXН=kܳ\ډPm0=Mr:~,lԻB\WYd9-vXf\Iɴ$ 4te^\ŴAILd`'%ʼnو iDj#0OJ|&ǕL.J$5iKU@2oF1 *8lKZd}uv=\ƌ\׳k`W9zˊƼ,f1|\_cDvSºj(2 %D uMZVtXBCլcHN3rӘ1ƕ+ ,&2̋=;炅%5,Qݏ܈5&=Bla{t: qZzqSE,$- _-i `%ZPsg/('=@H$/T;))6=VNzv6}9 F.}! @s/@ $؝KfR?SˌXݝ[7 5D()kqEP>zk:am ޸N#4754#䏃85FSvj_bfՏ}#3zIWGL sPg348ҢT)(N?UF'eŴt:3 fϔ֚Zd#IjI݄Ր tTƊ^ͬRstp 'ՏxH,I<':4U3 /0+_E^3ɻ;%b/uiL2J)2@Bx:ĉ (uO0k]pe(@ y__10$Yz^HP›1PJ]D2}`IFaPNgP.`Pg<@ʪ77 wUzK `Ʃ. wb_?hv?1ranSqpxU{X䲵:y{Q^7]P. .KL2LdOہo"'ط'AQ| mJ:HM$ev8 mn݈)Ǖ-ˉ^C%{<и)RzmV+kàqXx0ŘP0jq?62X ! u!n(@{$=/|3fGp!ty"[qs1H@~jʶ`I]I+nqqfɧ'F Г&1N։?S<$[zEH>c` (k` VpS6mEI'M(gq1Tn9JBT#kæn4yԶ,~sG Aܖ[pKѴȴ%b@Xv:?3&mTo Ew{ˑUŔOoJaw.r b?#`d)JXTy&KRncO+7F $Lns͑_7hǰ{Ei>H'Ijira{2K} 2ɐ1hڳ^*\B`Y)p`,y< 91 m) Mm02(5rS3 B`Q-t_;~>r_r XAbOeCIQ*!W;Ff`r,[WT "^d[2aw/]^黰_ T:hټj[WBgB1:+R.l)W &ZOcko, JsitiBUwx H7IAH29:VU꫃k#,_{Wu4; |>p6f߷7 HRQLN9v2z)ɡ#ɸzԎ:2g CFs̀ʎuz߼i4d=}ctGV$ uSAumB+@M ꙽vA =v!dER}xwhgɖe<¬q=Zwv?|*AAH@Uw4dX$w{#:|"yX#U0?g`,X(t2Bu4ám"+)դH:Fб}d9~sbp\(dFYv:jiq kNFKlǪG곇oњw|/i!^-6U㟉9%q8`&+|c OaĶY/ХfVOtV4Q` eg}H5d2s$[HPT)m)GîN>amΣL`W3clzҿd=tr` {d3fs^YB3D໭{i3][ci ^ǥO3M!VeK7X%/5Ǭ~E'Y(jƁ W\GVB;jK^7j',l a$H0M `bNC @BƁa p#־5@L| uQ.2Q\^/F uo_J v4x{  YH04!F[b2zՓ;Hn~v@Mokl%_ʆÌjB ;([ڳEI33]Q3! PGiա 1' k"Kor#A>Lku`v<-[ DO,3.b4-t w[M8+g_ZQ>?!k2j.*Ў3dV_Oq$:{UB;a}'oX ˻P-onApfU_eQbp)x J-XHwTKiXQ)@HqeV9`"UY>h8Ov`o?^r\$62SG[S fR!XrjT~ A>-(ən̑FnrU qf4R0jyJsXڌB\lc@4c@;~5ENPΔ·`9(2H޹91mWNC)-Νב*`3J鐗+ OP jgS9yD9#9 jǔ n |cgAG~ }0lxW{D=L׳sM%tb MAٛiYyhZM?ӀDg6-)qt|)mT5$u2Zܳ#9D),!<ۣ.ۥm?ռk&ޚK40Xrt>FL[ÕrW{a p:jwLZz5N&m#2+4l#<J/+1ŋ-i" GNA<'(@Oa{I2!$ZfP(?> B{+C `K둼`6PB)-iT;!X[IvnԡZ4z {*6v7֛[w:s- 2D`v.;C2ql|ZHa^ Y|I\z%("DG1U-r&|[~vQPBQw`ƚGcOg^?HF (ƒ!S@ 'tleeM6Y2 e|Wq}&.v|bUoZbgkg[([R,{>\ }۞+BqGj'+$}oY^#4c[{ z{[|nBC%kdFMgg)?%F5Lt꒸Kju# l-*]u+3-W ǏO|$±ax5@vk#hhd m9Mbzm"!Iy68v凷knılvRо&*iw T3 Lb>Zecp(d3%iY߷pztX U܍|ZW*sZCws0g$wv= tF?Бo2aZcp-rxuc(^K zfTպL&GDqЉ(9[; +:hXLǛmi~ݍPݱ!<E?^?jigKD{A?nis]q`YJէ{=QS6/K'3FۂʼnnCX_*4U `zJfڒwYpx_u(_`P =21Q:'/C-:55zr/@c2ܭ sZw:fbIw6!\ge^?YJt4O/*d+,6m-F-tl^}Z<-,وQyYWqIsWj[,OԔ^jaQgy=XzB ѳD)E0^nz%>nqFD[3[=л'qR2|̸2ψB%Qݦ`YgE z294' A0Xs=9)*'Mj-ae=,qDG\ !pwd#Ku@źzخ "SU`D^pFƗɚvVͅ6k`].ȶKa3u vZ49BOUp`q68sD A? Q3`_nɼP Ir ԎI~e  L̋]X6˰E 9s*[6!Mm-"/ʤ-{H~$@.ñvek{{!e9˅9nbblS^Sp/(O&oZtuDLvH'i #BNw7) DR&bLy<,zpSor_ŶZLX/4A 5Drݮ2{fNp*On}^~ !-|,3/\<XZ\'5*͈U/j] ~N"Y3h8-8;TKÖ&uWjjq&8(]Nb`:_DHT/F6 'B7z ]!/onUvX QҮ,AoV?`%'Vr.r\w웇n҃dy T }O8*cİ;AzYЫì۶7R8}M@PyglՖa3U%~Q Ӓ"|Mfi$31Sp mCU.hjxKӂӯ6bTP RAv\L9 nQ.RXVpټeV\{9#?a8bۻ{LAPjDcgm >Ys2S*&?;ZL:eey\t@ԭt(5xI{y(<* Q!:Ӎ$z쓁sH9?TƟ+pvZ8r])=\Jr ynM eIVv*6(t_3vl0NP<[E7 7xHSnL#u1woī 3T玾 tzj+A/,eJ@wb9:8DU}r{eS/9CW8XL1OJ?lsa'(aJ~39[N +no;t&Fe,,V ioŷ*g+56[|堩) yf ^U Ow3aŕ$W }ꊰ5b̘ǵ3hQ0x\ 7k`s3 `_b஺ IYtyoDFIi i WÂnʜ[U 3w^䂿{Ի "jnyl`܆Dh$2:4kb0UMo{Mwv_315d~k~Yuovj/d R0*{!lc}o?+$va;s9Z6Ln+sBIC{ez@"C(+{62؊t\,̞r̤oqFɅ mkHo?)&}ԒH @#hQ]_ݽGTƊm.O{MW2Msn T>u=C%5=Kzaqʶ}|q&j&nd jNKWuP5%~KT֙ oxK:T&uUpd^SMT0~w Ծ?ٻ ;Ө8;퓣ni a~>4HM3o'+A0&,S{"Ly&˪`_[Hm=eq8LXpIyvBœhiLo4m@ Fmu0"7 TH*:ٛ pS,-qԧ+ Ca wnqN}FKޢaGSYwe%Ɩ:ɋxX/A8a&&*|uV›)$B>/Ý͆z[dMs#<5P8O<'Q WGJG ^= N&VkÅ4-.%$DLa fkn\?,z˩@,[tNvKў|9q{'M/+W>| 󇨾=v꘼O#&6~q4ӲDr 9!#_ywgِz5'o=YA3|x6.|{+ Zv@]ݝʍHVڽTa&-&W K!#Mjt,-!P9 5sPEk2;i' C!ߐǙf{(@>>J$TLЯDJy=> ~wP1j6oMh,#6*R;E\ P.'Z(StT7X\47]윶v71( Nd{o Δt* IG%Su!.JDl;Kf;<E:0H{_3.(< <>B@EGEGsH@͂,sܷpJo:PnQw&,L4UcUvt Qo$jC>#dZG@Jon@`Zm+>J qvwsO|m,1kmnW`(%bOaٌ?I!nxR攭⨸y >G\)Vu%g 4!R[!Cg .$/FU{{Y,F9}8>"۾ɭnĻ8307. ;| @őYN,H^&N%@Q=hsg.s$_ҡFm/p4@L1; g6OĥEa=TɄ~O״`1Ӎ rE5>tw>]!k(]3| HI0 Y2S:WX/㸗%ZC|zg4eWС$;% < zq߫ڃe$d} ')ULfNuƠ `*`Ƈ!jܤx/!T)*'|q'Z>i&ܪc<:.bTD1WEܕoO7(MKIBTKb:H&p7ML+[ڈv|*`UU*.hs“^I+4 :ˬ)qZeL!QWH&;bjx$ʖ'WC2mrz= ! x|52ۧ|]0D/^B1w5 MbUL& eUX_Iy|,O{ߓ_ᥜ:3Fnbof<=^OkzL%})sEPx+jkFw*d䰾>S&Fq\;]?8b?X6Y<:ur%J](He5Ha"Nf#tH.u7l^"!ՠHLYzndcDԂ9;䡉\ pɅ )k歗sQÉyX}9뾤U׃褃ӏVqUEs^Яҩc.@UV$+%aKy3 b~Pӊ" yԀAf_`[5y(s-[ }=/{@B &x d9r9N$gEP aj=*ʆ4%<[ L^vx/6'uRQSt)c{@d9F:<92U2eV- Ѿ.KyoN}s,>Hg:US6fD ;z}=9*N]u$NмHYPlvC2ynp[Y#d}D R]yp(Nn(Y.vcƄ6f`Y^ǂP^#CsuW8<($ x%̺?ڨ '0];Y˘CEHиMtu)6RpJ"zHQ3Kڢӿ14S.wuAW8Qcǀ撹~ff}Hiڗ&d-3ܬI?~90 ysVk2m0^S>uׄ# ږņOfރz*n: o'?s9IV d$ Yr^q:HxI 9,9 F]%mDXQ1& q0]ѳuK[D9 ?z4|)JraVvg8Q15hg*_.gBUǥ闠sIk|?;/ey_luaMTƑ W psamjU$p4중UGNh~ ҅L0tW(#lCF!TߔO{>;2@q׭PT0NƑ0)U~Œ'Z\3dy~q؈kCZK'z w쟦PQa6=[ fAw܅bI7xF X615wZ,3E&ע;U]x8æB1W !A7)۩kiRĮzˣмj0+lw\i˒i̾IY&54H g3xU' ֤ T,gY.2sٿf_ ۫an片'` F-0Af~кkC"Kg'᳐IRP6`|B{3$:!X.$ck6 ? -,9w| ºjy=>*};-E]/Ɖ]1BVͨb;3 )i*r0 h{t 3Sxk Atqw~`}T tG$RB)Gx%?D;$' 3ж=?b-{=-/.@b'DCx=fS)/qW41љ#u&5Qr4$=),)h"W" W)-l|wc[l/xߤ޺ N}+:f9z8. |с}Yu& :14sEFR0]pH y,ޗ2MJ3odaTNQ x5ihTsE -,0,][TTwqrb30Mt?F?+ĔqC6x8*BarJs劵C?5KH]yh`+qY.JV~b)=BpXV3WD $..z6@dgCN;UqDuČ?7(WiCCѷ7]B2BtTY 9Z@{hY8Vm hɁ2o8I6h/>~:[óǫ̌K(29{_f$dWp/mv@cW.ZTDYdž{9X|lzr~G=5s;? t3f}$(^v4}4&g}oIo( S7f$D= RTyi, >,#E6f ҄R ϳ' ||,EUra)aEf/{e6\9 cn(U)w,퍡@:p:uB^L%yfI_m@UY 5tFB1V~n&oFY|>[?HG QpWȡd&X b\ ]jkn!DP ɑs9)B}սv܋ ;#J"^[S?7mh&Aፁ1 ,nFqB?Bēnٔग़k cҙ`~} Dz %0嚷qiYaZ2-S{K-6=eY/*7: YfyzT'(H4{l)uT<4ݺ¼9\,iհF:X5y9% ` ?y=s=s𾂀8TnI]r,mea8ݿ{nAۼU cTxf%)fY~ * YZ