copr-backend-1.95-1.fc23$>y:'<sciv<6WO>E?d  ,'6= LfIS 8 |      / 0|258j8::3;3>V3(>8>_9@H_:P_=>?@GH<IՀXY\4]x^W bwdSeXf[l]txuv wx<yCcopr-backend1.951.fc23Backend for CoprCOPR is lightweight build system. It allows you to create new project in WebUI, and submit new builds and COPR will create yum repository from latest builds. This package contains backend.XA0buildhw-10.phx2.fedoraproject.orgFedora ProjectFedora ProjectGPLv2+Fedora ProjectApplications/Productivityhttps://fedorahosted.org/copr/linuxnoarchgetent group copr >/dev/null || groupadd -r copr getent passwd copr >/dev/null || \ useradd -r -g copr -G lighttpd -s /bin/bash -c "COPR user" copr /usr/bin/passwd -l copr >/dev/null if [ $1 -eq 1 ] ; then # Initial installation systemctl preset copr-backend.service >/dev/null 2>&1 || : fi if [ $1 -eq 1 ] ; then # Initial installation systemctl preset copr-backend-vmm.service >/dev/null 2>&1 || : fi if [ $1 -eq 1 ] ; then # Initial installation systemctl preset copr-backend-log.service >/dev/null 2>&1 || : fi if [ $1 -eq 1 ] ; then # Initial installation systemctl preset logstash.service >/dev/null 2>&1 || : fi if [ $1 -eq 0 ] ; then # Package removal, not upgrade systemctl --no-reload disable copr-backend.service > /dev/null 2>&1 || : systemctl stop copr-backend.service > /dev/null 2>&1 || : fi if [ $1 -eq 0 ] ; then # Package removal, not upgrade systemctl --no-reload disable copr-backend-vmm.service > /dev/null 2>&1 || : systemctl stop copr-backend-vmm.service > /dev/null 2>&1 || : fi if [ $1 -eq 0 ] ; then # Package removal, not upgrade systemctl --no-reload disable copr-backend-log.service > /dev/null 2>&1 || : systemctl stop copr-backend-log.service > /dev/null 2>&1 || : fi systemctl daemon-reload >/dev/null 2>&1 || : if [ $1 -ge 1 ] ; then # Package upgrade, not uninstall systemctl try-restart copr-backend.service >/dev/null 2>&1 || : fi systemctl daemon-reload >/dev/null 2>&1 || : if [ $1 -ge 1 ] ; then # Package upgrade, not uninstall systemctl try-restart copr-backend-vmm.service >/dev/null 2>&1 || : fi systemctl daemon-reload >/dev/null 2>&1 || : if [ $1 -ge 1 ] ; then # Package upgrade, not uninstall systemctl try-restart copr-backend-log.service >/dev/null 2>&1 || : fi iMj 2IH;) QWCvCv&&- H H w.. PP4/W/W-,,UUC>>>-$$J^@e@e%%|(( / ` `1 9s;i;i WW )  HG  +X: J*kFA큠큤큤A큤A큤A큤큤A큤AA큤A큤AA큤A큤AA큤AAAAA큤A큤XA0X?X?X?XA0X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?XA0X?XA0XA0X?XA0XA0X?XA0XA0X?XA0XA0X?XA0XA0XA0X?XA0XA0X?XA0XA0X?XA0XA0X?XA0XA0X?XA0XA0X?XA0XA0X?XA0XA0X?XA0XA0X?XA0XA0X?XA0XA0X?XA0XA0XA0X?XA0XA0X?XA0XA0X?XA0XA0XA0X?XA0XA0X?XA0XA0X?XA0XA0X?XA0XA0X?XA0XA0X?XA0XA0X?XA0XA0X?XA0XA0XA0XA0X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?X?XA0X?X?XA0XA0XA0XA0XA0XA0XA0XA0XA04b903260b2b18fbda850e6090d36d03cb6a506723ec47ac1ff5d92c35517b4c4094cf66f51be24afbe10e992c26fb56caa2c1f8f8716e1ddff902cca405357c8aaecd5bf25faa6c6b5236b7716adb3569abb7d833f658944eab9d76e8cba16214275b468ecb9384bb1d71068e97f3021528ebeff8d7a525d5e340834cb03d84ffa2b0343ca480ed9f2859e11b5e85d598a9cccdcbd03a0b31e0711071d4678decedae4a2c4759c09afff82df1ef810041a9575df816f6aa336f3e6a78e61f4e8be57db395bd2457339a0cb2f4ba242d58555d54f72d86e65bcb36f52dd933db0ff6c1e664fc48a459676609ac644be1d454d211bd4094988591319b13a992eb850d10811538199e6e3fe5d2657b719bcc1e9e18cfee584c43a662d5497804018fa570d3c53768bf69c7b8a37a2e9dee91ec3c80afb8f9b2eac8777180093fbed6e528c1f8f02619e0f71f16b2681517004e72bb09bf2d68e10c304e1388352256d498ef429cc2ba3e171c02eecd27ac1a8211835cdeb5f308a5b27d62dbe79c45339c4e3df0d3177f8fe2faefcae4bd01322e0608743e010a3787cc0e17123b2206231f81f87c8b8b52ee7b89a75349670083522cf60dac516f587e0fa5db0cc92c54d2f77cc63b12b8b2cecf24c93582dc0f9e7c24dedc691bc418bf806a0a617731184aaf618a53f854242c77be649f55bc89503a4f89cac670a239b0e74751a20cdfd0140daa3486cd024c9c399ec1f4c97e740dd2f45978329b1cdb85bf1244ad8170b30b63f9be804dbf54d90614889c680488f30cb833a5d6cae0896fb088db3b3a5773a8e20d982547d7c9fae1d511fd2d4ce9867607e9f38da2efaef8421329ce498a0125b78a2134c72d119027227bd638206f81815970c58fefc935bf4cbced4c9dc736070cd5d7b07bb0d50a06c99c3777fb08430950a23df9082b8ead9d3bb91630efce646a3430c53585633050799594c32855c18bb56d31ac2226c0cab21c47811adb99988a36b623adbd7e09ed59931ece90d2c881a329c05226c0cab21c47811adb99988a36b623adbd7e09ed59931ece90d2c881a329c058b6fa1934f517d79dd56abf4ec18ce2cc61ae3c841da3efeace7ebbd8f7478047b5ed098df96a6db7c6c563160dd4d563b0baa3dce7af6d595ba26646008132e7b5ed098df96a6db7c6c563160dd4d563b0baa3dce7af6d595ba26646008132e25e8b2fa03ff623e1c7182e9030e3595ee8325873d643df4360bb0eb7e22471969f59fafb4839dfc81c0aee06346498dd86a04ee3cde22ad119e23e3ae9201d469f59fafb4839dfc81c0aee06346498dd86a04ee3cde22ad119e23e3ae9201d4524eca1e83f43e85bc229254661d26b3b320f373d4d0e259d06ca9a31628acfe26f66eda1e846c743fd26a147da7fe3b719971bb08b47da7c92b1b518eca3b4c26f66eda1e846c743fd26a147da7fe3b719971bb08b47da7c92b1b518eca3b4c0ebb726b6e1e63b90e31898fa642205204ec00bfca227877008e9a97ce44d31536f049cb6756633ed1920be33638cad6ae6aca55622539ac2063f4e94be256cc36f049cb6756633ed1920be33638cad6ae6aca55622539ac2063f4e94be256cc96f632fd5f70a37600ca8e5d9276ef012ce33a50c667f0e6f78573eb5c3b34c623e529102fb9ad5341e88ea82213bd50c1bbadeebbaa02e698b406f1ad0f051623e529102fb9ad5341e88ea82213bd50c1bbadeebbaa02e698b406f1ad0f0516e99ad2ff10ec6ac0f40662f1ba829b73316a08a559b904960641f89ac74bb1efa461f38c7dfdbffa2189c222a71ace6d19cee2d9550901ec196831c211885258a461f38c7dfdbffa2189c222a71ace6d19cee2d9550901ec196831c211885258ac748b0e3808f6872b281f2f66f6ea0b62ec55297124db468cad756a4c2a907e0901064799b58177a3d49aa1bfea7a7bd662db70dab32d9f1c130802c6ecfc7f0901064799b58177a3d49aa1bfea7a7bd662db70dab32d9f1c130802c6ecfc7f6a0033119ded309025c320ec4c671957e8edccfbbcdddf49a0b7bd5169b34743010541c1ebb49cb974cba989b39475ff7ce2c6fb303550f904c99f324aa276e9010541c1ebb49cb974cba989b39475ff7ce2c6fb303550f904c99f324aa276e97f0ea71835e9fa0768d7ba1379ca3fdd5806710b492ba69d886719f940a1d6d329f0447a0b17e21f9d2993e94e4a0d957e09b21671daad16e72368862755e1ba29f0447a0b17e21f9d2993e94e4a0d957e09b21671daad16e72368862755e1ba819bac80351085bfed072d143b3153769c84148d220184f71a918ee8b53779447823c13f435a3b9cd9e07ff8cf01ca31eca5b687f9e88216c120c7737c02466c7823c13f435a3b9cd9e07ff8cf01ca31eca5b687f9e88216c120c7737c02466cc7d6f8f0983dd19c52d2f76f805ea2159273b674f26dfc2710d3e8d0c70eb0db3fc6897e64612f919a19cd7cbafb597b845c9ba6210bd8d06e740f34a5e465e03fc6897e64612f919a19cd7cbafb597b845c9ba6210bd8d06e740f34a5e465e02f387d405837e954ff51cdeab5a4217f85b686cbaab2ba6ce72fd77c8af2d38ad0b8e68d0967da8172ace37cd63636b47160833ed70b7dbd3dfdf69f57b39f5fd0b8e68d0967da8172ace37cd63636b47160833ed70b7dbd3dfdf69f57b39f5f8089354ef66e7e8981b8bf46146ad372435f21831d4c47fb63d790617fce48095f2e5200a2f7133371c56f17adc27738a9cc2d8ec882c533219c6b4445027aa35f2e5200a2f7133371c56f17adc27738a9cc2d8ec882c533219c6b4445027aa38c5dcc96f4f61ab743c99e8612c37e2e836e1a50330624eb1e7091e32ea6b7ce0792354980dccbcdc3040cd5847d447e007e996d327ff5e13d1d2fc78c7c72af0792354980dccbcdc3040cd5847d447e007e996d327ff5e13d1d2fc78c7c72af9f58a1c7c85bbe2c93d6bbf32416867ccad0db60f74f578e73d62d5955376f702bfe0d0a241e8ea6b21c49012b9795096ce736ebbbfa502274c5018966c88bd02bfe0d0a241e8ea6b21c49012b9795096ce736ebbbfa502274c5018966c88bd04ebca924c75ca5a45d82e4d16a814551298650ca4f1d860b213cb164e10941000ab2e3613ba5629153a547f3c4b5edb40d7d84d13c5c1c7d06bc05ca11bb7ee70ab2e3613ba5629153a547f3c4b5edb40d7d84d13c5c1c7d06bc05ca11bb7ee7e6be1f96ab4055d7556445f63c5a7e708290607963c4da412457417b643219350ae10c018ee4945ee0e0863345032fde94798750b9d20072209ea366829560d60ae10c018ee4945ee0e0863345032fde94798750b9d20072209ea366829560d6c7200304bd793d8ea9065456abbff19329fa6c0ae42241c0bf611094a30190c418dd95a7ab477cc459e9425c5cfb56e0fbcc27145d3be9d036133611ffcaa6d018dd95a7ab477cc459e9425c5cfb56e0fbcc27145d3be9d036133611ffcaa6d07ddc5d2ad8650b67ff886e2e040561e5cfdb0c5b8b856cddc39773f04b5500455525c4e37cb8d6f05e22014388717159b0a9cedbd2c589728a123d9ed907013d5525c4e37cb8d6f05e22014388717159b0a9cedbd2c589728a123d9ed907013dcdcd98cab7a100039ccdf9073ae754ab684e18e43cb7f55c14641c91c200bf15d05d66f595a01e88e23b9f37e5ab9e3cd562984d585de2b3d10aae9c349e9ab6d05d66f595a01e88e23b9f37e5ab9e3cd562984d585de2b3d10aae9c349e9ab6e187e9c224349bc30aaf0b1d23e9a8015de9e8b2dbdb05ddd0e850f88dcf08d492982d03d6eba73721ff79a20a02ab23ca9d44e06d2473533e785ea9f347f3d692982d03d6eba73721ff79a20a02ab23ca9d44e06d2473533e785ea9f347f3d65e51db9686513e282df4b603d445152acd85e57f21ff149f938d0258f3ca1950c8bc0ea2def0b483705ddf70184882ce7f0893939e5ce60e20b90f3360da31a4c8bc0ea2def0b483705ddf70184882ce7f0893939e5ce60e20b90f3360da31a4ef900300912be3193d9103119b1de689c14e0eb90efb79244edbc8f7d81bf09670eaf2a98bc78bdc533099250a6bbbcbd9b53ddac917d7d680df5f316a78000670eaf2a98bc78bdc533099250a6bbbcbd9b53ddac917d7d680df5f316a78000613b17c25d7568a271e10c97dd721dd6f2fed25eef68249ebe0d99ea4edfeac2ca3b212bc177757be469058a5805d031fa416d6203ea4a789cfc901be3a2f8fada3b212bc177757be469058a5805d031fa416d6203ea4a789cfc901be3a2f8fade07e1f70a5bc62d5b5932dfd277130691092eb956141582199019d8630cab5560120c448dc0763177f727ebbf2fbf646eb866add723b91bc47d3fec61145468b0120c448dc0763177f727ebbf2fbf646eb866add723b91bc47d3fec61145468b514bdccc013b616b41670c6bf1fa8b11752119dda0096c64cfa4b22e367bd8ff5797a06273aeb0f1fa90261664e4bf4cce32e4547d54590c08aa48785fe9dc945797a06273aeb0f1fa90261664e4bf4cce32e4547d54590c08aa48785fe9dc94db29e8a83b5d5077dd5581e82c0bca357cc659298604bea13bf841b3672ae8f65660999cecfcbdb612632ca2e751c64246569955a064dace07170268687597b4089813b1435627f19af34a2c6ae3232135bfd4aa3e8455861c096a5fca9c22c44af83bed6823826e85314b129d78fa369b070d8fe33247b02a67514e6dc85fc79deecaa00dbea638b3bc5e189f9b44a94b1334d9b6375957547a27ab5238a4009112f7c658628c0c9291740e693cdd87cae5aa7220b408c90e62831f2fa02b2cd906aecb61d076a967d9ffe8821c7b04b063f72df9d9e35b33ef36b1c0d98f165d89bd2f1db7a6897998ae5f469ddaa0524a34c481aa9c49a114d55c1b4c02a85c5a2e4dcd1b2a736ac84c4caf3ed9a76a3ea30c57ea478b76e4958bdab3face7d6f7b6e42bfc30c866db38b42b1ab8b26a2e79d1ebeeb427362d73fbeb7d069754380f613557ecdaf67574a9447adbed6fd2845a7eef17faa2aae2d5fee90ce965368a1498873357e56b19180c61b2ccb1638eb4aca927d3cf0cf2a653baf6caa5b640e56da92b7f26f3597388ede8847bc42e5493c6ca8110298b60756568f5420ad8eab44b21a6c828d9286932b14cab3f239fef19f4102bf1af9d1272631ce8ea429502d361d0c75d7dffb3af9eac411f4f277def01ca8703cf635401cd44946447e08d69e0dd2a30f7415e80f2b00c72de7125e0af2434f5acec6a04e6603d4ed4542cd758fd0256ab9b348461f61341ef085304f56bccf80cf39c398ed45602e8faca28f25d49fd4a3d66beea9b0fccefa7b54fd6819019a7e13b871a48177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643305fe0e13310f8f9cc8be239b2e25f477d4b2763f807408589c3d75edccad677e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855builderpb-x86_64.yml@@@rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootcoprcoprcoprcoprrootrootcoprrootrootcoprrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootcoprcoprcoprcoprrootrootcoprrootcopr-backend-1.95-1.fc23.src.rpmconfig(copr-backend)copr-backend@ @@@@@      /bin/bash/bin/sh/bin/sh/bin/sh/bin/sh/bin/sh/usr/bin/env/usr/bin/python/usr/bin/python2/usr/bin/shansible1.9config(copr-backend)createrepo_ccrontabseuca2oolsfedmsggawklibappstream-glib-builderlighttpdlogrotatemockobs-signdopenssh-clientsprunerepopython-IPypython-coprpython-daemonpython-dateutilpython-futurespython-lockfilepython-munchpython-paramikopython-psutilpython-requestspython-retaskpython-setproctitlepython-sixpython2-modulemdpytzredisrpm-signrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PartialHardlinkSets)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)rsyncsystemdsystemdsystemdyum-utils1.95-1.fc230.2.1-30.4.03.0.4-14.6.0-14.0.4-14.0-15.2-14.13.0-rc1X@W@W@WWj}WH6WDB@WBW5W,@W+5W!@W@VVVT@VzVI@V<@V@U@U@U@U@U@U~@UlI@Ug@U]U]U\w@U[%UUUUUUU U TPT7TZ@TZ@TT|T@TT5Tto@Tto@TmTJ?@T@T@T@S%@SSS@SR@SSSSrSXSM@SFSE6@S(5@S(5@S(S @RRJ@RR@RR=R=R@RSRSRSR@R|@Rz/@Rw@RkRj]@RM\@RA~R@-@R9R6R6R6R6Q@clime 1.95-1clime 1.94-1clime 1.93-1clime 1.92-1Miroslav Suchý 1.91-1Miroslav Suchý 1.90-1Miroslav Suchý 1.89-1Miroslav Suchý 1.88-1Miroslav Suchý 1.87-1Miroslav Suchý 1.86-1Miroslav Suchý 1.85-1Miroslav Suchý 1.84-1Miroslav Suchý 1.83-1Jakub Kadlčík 1.82-1Jakub Kadlčík 1.81-1Miroslav Suchý 1.80-1Miroslav Suchý 1.79-1Miroslav Suchý 1.78-1Miroslav Suchý 1.77-1Miroslav Suchý 1.76-1Valentin Gologuzov 1.75-1Valentin Gologuzov 1.74-1Valentin Gologuzov 1.73-1Valentin Gologuzov 1.72-1Valentin Gologuzov 1.71-1Miroslav Suchý 1.70-1Valentin Gologuzov 1.69-1Valentin Gologuzov 1.68-1Valentin Gologuzov 1.67-1Valentin Gologuzov 1.66-1Valentin Gologuzov 1.65-1Valentin Gologuzov 1.64-1Miroslav Suchý 1.63-1Miroslav Suchý 1.62-1Miroslav Suchý 1.61-1Valentin Gologuzov 1.60-1Valentin Gologuzov 1.59-1Valentin Gologuzov 1.58-1Valentin Gologuzov 1.57-1Valentin Gologuzov 1.56-1Valentin Gologuzov 1.55-1Miroslav Suchý 1.54-1Valentin Gologuzov 1.53-1Valentin Gologuzov 1.52-1Valentin Gologuzov 1.51-1Valentin Gologuzov 1.50-1Valentin Gologuzov 1.49-1Valentin Gologuzov 1.48-1Valentin Gologuzov 1.47-1Valentin Gologuzov 1.46-1Miroslav Suchý 1.45-1Valentin Gologuzov 1.44-1Valentin Gologuzov 1.43-1Adam Samalik 1.42-1Miroslav Suchý 1.41-1Miroslav Suchý 1.40-1Miroslav Suchý 1.39-1Miroslav Suchý 1.38-1Miroslav Suchý 1.37-1Miroslav Suchý 1.36-1Miroslav Suchý 1.35-1Miroslav Suchý 1.34-1Miroslav Suchý 1.33-1Miroslav Suchý 1.32-1Miroslav Suchý 1.31-1Miroslav Suchý 1.30-1Miroslav Suchý 1.29-1Miroslav Suchý 1.28-1Miroslav Suchý 1.27-1Miroslav Suchý 1.26-1Miroslav Suchý 1.25-1Miroslav Suchý 1.24-1Miroslav Suchý 1.23-1Miroslav Suchý 1.22-1Miroslav Suchý 1.21-1Miroslav Suchý 1.20-1Miroslav Suchý 1.19-1Miroslav Suchý 1.18-1Miroslav Suchý 1.17-1Miroslav Suchý 1.16-1Miroslav Suchý 1.15-1Miroslav Suchý 1.14-1Miroslav Suchý 1.13-1Miroslav Suchý 1.12-1Miroslav Suchý 1.11-1Miroslav Suchý 1.10-1Miroslav Suchý 1.9-1Miroslav Suchý 1.8-1Miroslav Suchý 1.7-1Miroslav Suchý 1.6-1Miroslav Suchý 1.5-1Miroslav Suchý 1.4-1Miroslav Suchý 1.3-1Miroslav Suchý 1.2-1Miroslav Suchý 1.1-1- use buildroot_pkgs substitution type according to job.chroot - use timeout command to respect timeout param coming from frontend - don't ship unitfiles in %bindir - move createrepo to the end of the rawhide_to_release handler - modulemd 1.0.2 compatibility - Bug 1397119 - Error reading SSH protocol banner - added auto-prune project's option - Bug 1086139 - [RFE] provide UI to cancel a build - Fix misleading debug statement - fix exception logging in ensure_dir_exists helper - Fix chroot_setup_cmd regex for custom chroot- also provide default version and release for generated modules.json- fix NameError: global name 'result' is not defined - fix exception logging - Modularity support - Bug 1357564 - RFE: allow downloading of mock profiles (reproducible builds) - "safer" exception handling for actions- wrap feedback about actions to frontend into try-except - log even the traceback from forking - use makedirs instead of mkpath in fork action - if anything bad happens, log exception in generate_gpg_key action - also restart copr-backend-vmm and copr-backend-log when (re)installing - Bug 1361344 - RFE: Allow denial of build deletion and resubmitting at project or group level - catch errors in fork action - set action result for comps.xml and module_md.yaml file deletion - backend fork action now takes care of new gpg-key generation instead of frontend - removed no longer supported --api-version=0.8 arg from appstream-builder command line - specify module_md as module type - fix saving comps.xml and module_md.yaml into empty copr (with no build) - module_md.yaml is added to repodata now similarly to appstream.xml - support for generation of module dist tags - module_md.yaml uploading for a chroot - simplified build and action task workflow - use copy of the mock (chroot) config, not the original in /etc/mock/- configure more packages to run pylint - terminate machine which was only partialy spawned - [copr-prune-results] do not sys.exit if prunerepo returns non-zero status, just raise an exception - more of log file migration - claim /var/log/copr-backend in %files - adjust log path in runtime files - update conf file log path directives - change logdir to /var/log/copr-backend/- do not use --log-dir in appstream-builder- use correct conditional in requires- backend: change logstash requires to soft requires - 1336360 - allow custom chroots- workaround for BZ 1334200 - more info in logs by default - print seconds just as int - unsign gpg from forked packages before signing them with new key - sign forked packages @TODO We need to delsign them first- more info in logs by default - unsign gpg from forked packages before signing them with new key- also be tolerant about sign/unsign failures on particular rpm - just log errors (exception) during particular copr fixing, do not interrupt the whole process - added additional check on copr path existence into copr_fix_gpg.py - allow sudo /usr/bin/rpm for `copr` user - look into build dirs (subdirs of a chroot) for rpms to be re-signed - on F24+ use just ansible - Run rpm-sign with sudo when unsigning - script to fix gpg keys & rpm signatures - define functions for deleting gpg signatures from packages - removed temporary mock workaround from Dockerfile (no longer needed)- Bug 1327996 - config_opts['use_host_resolv'] is not set back to True if it was False before- run createrepo on forked project (RhBug: 1329076) - Bug 1327852 - /usr/bin/check_consecutive_build_fails.py errors - we need to stick to ansible1.9 - more escaping - prunning down testresults :) - a few unittests for copr_prune_results.py script - unit test "fixes" - fix error when forking into existing project - (mockremote): improve chroot_setup_cmd replacement for EL-5 - copr_prune_results.py - python path fix - Bug 1324514 - copr createrepo error messages - fix for errors of type one - Bug 1324514 - copr createrepo error messages - fix for errors of type 2- use timeout variable from config- support project forking - support building from PyPI - support for redis_host, redis_port, redis_db config options - dockerized-backend project moved under backend/docker - run createrepo in rawhide_to_release - specify rawhide name when calling rawhide_to_release- do not fail when when you recieve job with architecture which does not have queue - fix 1260780 - Build fails after successful package generation - just add a log error message pointing to an rsync log - jobgrabcontrol.py/retask misuse fix - "localhost-targeted" spawn and terminate playbooks added for testing - [frontend]implement rawhide to release feature First create new chroots: python manage.py create_chroot fedora-24-i386 fedora-24-x86_64 - abstraction above [BE <-> JG <-> Builders] channels - don't traceback backend if frontend is not yet up&running - do not preserve user and group when rsyncing- fix packaging issues in epel-7+- handle_generate_gpg_key skips key creation when signing is disabled - Added test_handle_generate_gpg_key - fixed failing tests - show when createrepo is waiting for lock - do not block builds when processing too much actions- we need to have recent python-copr - create copr-backend-service script to handle all copr services - [backend] fix not starting job_grab- createrepo action run infinitely when applied to deleted project- [backend] run copr-backend-log service before other components- [backend] add executible bit to run/copr_run_job_grab.py- added context manager `local_file_logger` - eliminated global multiprocessing.Lock - split backend daemon: extracted RedisLogHandler, JobGrab, VMM - replace python-bunch with python-munch - added comps.xml support- support new results naming in the build deletion action - fix BuildJob.results_dir; eliminated MockRemote.pkg_dest_path - using package name and versiong given in the build task; cleanup; - handle error's caused by failure to obtain srpm from dist-git - repairing test for newest changes - rsync update + several fixes - building from dist git - fix vm spawn check: spawner count child processes per build group;- add small script to print queues - AppData supproted - copy mockchain and rsync logs to resdir (RhBug:1221519) - note which modules still stops us from migrating to python3- alter vm_name= regexp - polishing Bug 1195867 - Move or delete logs when rebuilding failed build. - backup only info and log files - have just one backup directory per results directory - clean results from previous build - alter IP= regexp - disabled appdata until fixed - unable appdata in createrepo - more safe VmMaster.check_one_vm_for_dead_builder function - adding support for AppData - new requirement form AppData support - createrepo_unsafe now returns only STDOUT and raise exception on errors- removed creation of symlinks for log.gz - catch exception during Worker.can_start_job - config cleanup- [backend] add config option for VM health check timeout - [backend] moved config parameters from Threshold class into the backend config file- [backend] Handle unexpected exception VmMaster::check_one_vm_for_dead_builder- [backend] fix race condition in check for dead worker- [backend] Rescheduling unfinished builds before stop - fix indentation - [backend] request frontend to reschedule old unfinished builds at startup - [backend] update sytemd unit: removed obsolete EnviromentFile=/home/copr/cloud/ec2rc.variable directive- [backend] check for aux process state and restart if needed- BR python-sphinx- [backend] small cleanup, need more tests- [backend] notify job_grab to remove job from added when start_job failed - [backend] [vmm] terminate VM with state IN_USE only when builder process is missed - [backend] bugfix VMM.get_all_vm_in_group : VM could be removed before load occures - [backend] job_grab: postpone build is we already serving more builds than`max_vm_per_user` option - [backend] fix build logging - [backend] defer sending job to worker if job owner acquired too much VMs - [backend] replaced Thresholds.dirty_vm_terminating_timeout with config option vm_dirty_terminating_timeout - [backend] Thread's doesn't have a pid - [backend] vm manage: user threading instead of multiprocessing - [backend] VMM aware cleunup_vm_nova - [backend] moving to nginx to serve results. lighttpd couldnt server pre- compressed properly - [backend] script to clean up erred and forgotten VM's using python-novaclient - [backend] new documentation - [backend] repaired unittests - [backend] updated builder playbooks - [backend] updated example spawn playbook - [backend] don't provide logstash config directly, add only example to documentation - [backend] do logging from multiply processes through redis pubsub; some fixes to VM-management - [image_builder] initial release, due to OS bug, we cannot create snapshot after provision through API, need to do it manually in the WebUI. - [backend] tests cleanup - [backend] ensure that prune script running under the copr user; simpler `copr_find_obsolete_builds` - [backend] safer copr_prune_results script, unittests - [backend][frontend] Send for delete action only `src_pkg_name` instead of original URL. - [backend] returned script to call createrepo from cli - [copr] don't allow acquire VMs that was last checked before server restart. - [backend] Added limit to acquire_vm based on VMs used by the same username at the current moment. - New python dependencies - [backend] run tmp redis-server for tests - [backend] Dedicated and more complex management for builder machines. [frontend] Now builds failed due to VM errors reschedulted faster.- [backend][spec] start/stop redis server during package build tests- [backend][hotfix] 1203753 : don't process delete action if src_pkg is mallformed- [rhbz:#1185959] - RFE: Present statistics about project popularity. A few more counters for downloads from backend's result directory. - [backend] [rhbz:#1191037] RFE: Include package name and version in fedmsg notification - [rhbz:#1091640] RFE: Release specific additional repos - [rhbz:#1119300] [RFE] allow easy add copr repos in using repository lis - [backend][frontend] removing code related to multiply source rpms in build. Build.pkgs now expected to have exactly one src.rpm. - [copr] backend: script fixes, dropped create_repo cli script - more file descriptors on builder - [rhbz:#1171796] copr sometimes doesn't delete build from repository - [rhbz:#1073333] Record consecutive builds fails to redis. Added script to produce warnings for nagios check from failures recorded to redis. - correctly print job representation- call correct Worker method on backend termination - put gpg pubkey to the project results root dir (one level up from the chroot dir) - don't kill Worker from errors during job build - [rhbz:#1169782] RFE - Show package "version-release" instead of just "version" - [rhbz:#1117446] add a build id tagfile into the package directory - Updated unittests to reflect latest changes. - builder: use only one log file for rsync per build - dispatcher: run terminate_instance safely - cleanup example config - cleanup mockremote.builder - Builder.download don't use Popen+PIPE.communicate with rsync, output redirected to the files. - disable networking only when required; python style exception handling in mockremote*; removed run/copr_mockremote - test build with disabled networking - simplified mockremote.builder.Builder.check_for_ans_error; new method mockremote.builder.Builder.run_ansible_with_check - daemons.dispatched.Worker: don't fail when wrong group_id was provided - add vm_ip to worker process title (rhbz: 1182637)- [backend] [.spec] fix %files section- [backend] [bugfix] set pythonpath in systemd unit to run /usr/bin/copr_be.py - [backend] [RHBZ:#1182106] JobGrabber dies when action raises an exception. - [backend] Moved scripts into /usr/bin/ Renamed copr{-,_}be.py.- 1179713 - workaround for 1179806 - run script unbufferred otherwise log is written after full block - express that it is n-th projects - fix permissions on prune script- [backend, frontend] [RHBZ:#1176364] Wrong value for the build timeout.- fixed config option `results_baseurl` usage, in mockremote- updated BuildRequires; cleanup imports - package sign: generate gpg usermail with special symbol - bugfix: when dispatcher has vm_ip it shouldn't start new VM; - run tests during rpm build - minor docstring fix- [backend] added option to control ansible ssh transport, changed by default to `paramiko` [frontend] bugfix api create new - [backend] removed spawn_vars options, to be able to spawn VMs in advance - [backend] unittest for backend.daemons.log - [backend] massive refactoring and unittest coverage - [backend] backend.sign: discover `keygen_host` from backend config file- [backend] small bug in dispatcher- bugfixes, disabled debug prints, fixed PEP8 violations- refactored mockremote, added explicit BuildJob class - allow to spawn builder in advance - copr-prune-repo respects auto_createrepo option - bugfix: repeated config reads produced constantly growing lists- [backend] added handling of new action type: "createrepo" - [backend] added dependency on `python-copr` - [backend] added to mockchroot -a /devel/repodata subfolder - [backend] new config option to define the public frontend api endpoint - [backend] conditional execution of createrepo_c - [backend] unittest for Action and minor refactoring - [backend] rotate backend.log as well- [backend][keygen] minor fixes/typos- [backend] type fix- [backend] config parsing: convert fields to proper data type. - [backend] added option to disable package signing. - [keygen] new component for copr: gpg key generation for package sign - [backend] broadcast both submitter and owner to fedmsg - [backend] example backend config: changes url protocol to HTTPS.- [backend] [RHBZ:1128606 ] For rhel-5 builds pass "--checksum md5" to `createrepo_c` command. - [backend] fix of builder test - [backend] test builder instance after spawning - [backend] never give up while spawning an OpenStack VM - [backend] worker's log filename correction - [backend] task id in worker process' name - [backend] async build playbooks- [backend] fix of fix - [backend] couple of fixes- [backend] queue cleaning - [backend] experimental build groups for more architectures - [backend] fix of a strange beaviour of retask - [backend] fedmsg shows submitter instead of project owner - [backend] new task queue for workers using retask - epel-7 comps workaround is need no more, since CENTOS7 have been released- FrontendCallback prettified - Starting state implemented, cancelling fixed - [backend] faster skipping- [backend] built pkgs fix- [backend] shell command uses pipes.quote - Return the chroot that finished when sending build.end - better and safer deleting of builds - [backend] separate playbooks for each architecture - [backend] built pkgs - include subpackages - [backend] skipped status and package details implemented - document vm_name option- backend: migrate to nova ansible module - backend: make sure that exit() exit whole script not just sub-shell - backend: allow passing additional info to playbooks - handle {spawn,terminate}_instance equally - backend: stop if you could not change to directory - W:310, 8: Attribute 'abort' defined outside __init__ (attribute-defined- outside-init) - W:139, 0: Dangerous default value [] as argument (dangerous-default-value) W:139, 0: Dangerous default value [0] as argument (dangerous-default-value) W:139, 0: Dangerous default value ['stdout', 'stderr'] as argument (dangerous-default-value) - W:543, 4: Dangerous default value DEF_MACROS ({}) as argument (dangerous- default-value) - W:543, 4: Dangerous default value DEF_REPOS ([]) as argument (dangerous- default-value) - W:677,24: Unused variable 'out' (unused-variable) W:677,20: Unused variable 'rc' (unused-variable) - W:297,12: Unused variable 'hn' (unused-variable) - C:116, 0: Unnecessary parens after 'print' keyword (superfluous-parens) - W: 72,28: Unused variable 'out' (unused-variable) W: 72,24: Unused variable 'rc' (unused-variable) - fix typo in exception message printing - 1102788 - Increase number of file descriptors on the build machine- follow selinux packaging draft - [backend] epel 5 repo fix (sha256 -> sha)- if directory does not exist, do not try to delete it- do not publish copr.worker messages - better count workers- include ec2rc in service unit file- 1077791 - set perm of cronfile to 755 - 1077791 - add LICENSE to -doc subpackage - 1077791 - remove make as BR- [backend] exclude files which are part of main package - copr-backend.src:113: W: mixed-use-of-spaces-and-tabs (spaces: line 5, tab: line 113)- move backend into separate package- [backend] - pass lock to Actions- [frontend] update to jquery 1.11.0 - [fronted] link username to fas - [cli] allow to build into projects of other users - [backend] do not create repo in destdir - [backend] ensure that only one createrepo is running at the same time - [cli] allow to get data from sent build - temporary workaround for BZ 1065251 - Chroot details API now uses GET instead of POST - when deleting/canceling task, go to same page - add copr modification to web api - 1063311 - admin should be able to delete task - [frontend] Stray end tag h4. - [frontend] another s/coprs/projects/ rename - [frontend] provide info about last successfull build - [spec] rhel5 needs group definition even in subpackage - [frontend] move 'you agree' text to dd - [frontend] add margin to chroots-set - [frontend] add margin to field label - [frontend] put disclaimer to paragraph tags - [frontend] use black font color - [frontend] use default filter instead of *_not_filled - [frontend] use markdown template filter - [frontend] use isdigit instead of is_int - [frontend] move Serializer to helpers - [frontend] fix coding style and py3 compatibility - [cli] fix coding style and py3 compatibility - [backend] fix coding style and py3 compatibility- lower testing date - move localized_time into filters - [frontend] update user data after login - [frontend] use iso-8601 date- 1044085 - move timezone modification out of template and make it actually work - clean up temp data if any - [db] timezone can be nullable - [frontend] actually save the timezone to model - fix colision of revision id - 1044085 - frontend: display time in user timezone - [frontend] rebuild stuck task - disable test on i386 - use experimental createrepo_c to get rid of lock on temp files - [frontend] - do not throw ISE when build_id is malformed - [tests] add test for BuildLogic.add - [tests] add test for build resubmission - [frontend] permission checking is done in BuildLogic.add - [frontend] remove BuildLogic.new, use BL.add only - [api] fix validation error handling - [cli] fix initial_pkgs and repos not sent to backend - [frontend] fix BuildsLogic.new not assigning copr to build - [frontend] allow resubmitting builds from monitor - [frontend] allow GET on repeat_build - [frontend] 1050904 - monitor shows not submitted chroots - [frontend] rename active_mock_chroots to active_chroots - [frontend] rename MockChroot.chroot_name to .name - [frontend] 1054474 - drop Copr.build_count nonsense - [tests] fix https and repo generation - [tests] return exit code from manage.py test - 1054472 - Fix deleting multiple SRPMs - [spec] tighten acl on copr-be.conf - [backend] - add missing import - 1054082 - general: encode to utf8 if err in mimetext - [backend] lock log file before writing - 1055594 - mockremote: always unquote pkg url - 1054086 - change vendor tag - mockremote: rawhide instead of $releasever in repos when in rawhide chroot - 1055499 - do not replace version with $releasever on rawhide - 1055119 - do not propagate https until it is properly signed - fix spellings on chroot edit page - 1054341 - be more verbose about allowed licenses - 1054594 - temporary disable https in repo file- add BR python-markdown - [fronted] don't add description to .repo files - [spec] fix with_tests conditional - add build deletion - 1044158 - do not require fas username prior to login - replace http with https in copr-cli and in generated repo file - [cli] UX changes - explicitely state that pkgs is URL - 1053142 - only build copr-cli on el6 - [frontend] correctly handle mangled chroot - [frontend] do not traceback when user malform url - [frontend] change default description and instructions to sound more dangerously - 1052075 - do not set chroots on repeated build - 1052071 - do not throw ISE when copr does not exist- [backend] rhel7-beta do not have comps - 1052073 - correctly parse malformed chroot- [backend] if we could not spawn VM, wait a moment and try again - [backend] use createrepo_c instead of createrepo - 1050952 - check if copr_url exist in config - [frontend] replace newlines in description by space in repo file- 1049460 - correct error message - [cron] manualy clean /var/tmp after createrepo- [cli] no need to set const with action=store_true - [cli] code cleanup - 1049460 - print nice error when projects does not exist - 1049392 - require python-setuptools - [backend] add --verbose to log to stderr - [backend] handle KeyboardInterrupt without tons of tracebacks - 1048508 - fix links at projects lists - [backend] in case of error the output is in e.output - [selinux] allow httpd to search - [backend] set number of worker in name of process - [logrotate] rotate every week unconditionally - [backend] do not traceback if jobfile is mangled - [backend] print error messages to stderr - [cli] do not require additional arguments for --nowait - [backend] replace procname with setproctitle - [cli] use copr.fedoraproject.org as default url - [frontend] show monitor even if last build have been canceled - [backend] call correct function - [cli] print errors to stderr - 1044136 - do not print TB if config in mangled - 1044165 - Provide login and token information in the same form as entered to ~/.config-copr - [frontend] code cleanup - [frontend] move rendering of .repo file to helpers - 1043649 - in case of Fedora use $releasever in repo file - [frontend] condition should be in reverse- [backend] log real cause if ansible crash - [frontend] try again if whoosh does not get lock - [backend] if frontend does not respond, repeat - print yum repos nicely - Bump the copr-cli release to 0.2.0 with all the changes made - Refer to the man page for more information about the configuration file for copr-cli - Rework the layout of the list command - Fix parsing the copr_url from the configuration file - [backend] run createrepo as copr user - 1040615 - wrap lines with long URL- [frontend] inicialize variable- [frontend] fix latest build variable overwrite- [backend] store jobs in id-chroot.json file - [frontend] handle unknown build/chroot status - use newstyle ansible variables- [frontend] smarter package name parsing - [frontend] extend range to allow 0 - handle default timeout on backend - initial support for SCL - [backend] create word readable files in result directory - [backend] print tracebacks - [frontend] monitor: display only pkg name w/o version - [doc] update api docs - [doc] update copr-cli manpage - [cli] list only name, description and instructions - [cli] add support for build status & build monitor - [frontend] add build status to API - [playbook] do not overwrite mockchain - [backend] add spece between options - [backend] pass mock options correctly - [frontend] support markdown in description and instructions - [backend] Add macros to mockchain define arguments - [backend] Pass copr username and project name to MockRemote - [backend] Handle additional macro specification in MockRemote - [frontend] monitor: show results per package - [frontend] add favicon - [backend] quote strings before passing to mockchain - send chroots with via callback to frontend - [cli] change cli to new api call - enhance API documentation - add yum_repos to coprs/user API call - [frontend] provide link to description of allowed content - [backend] we pass just one chroot - [backend] - variable play is not defined - if createrepo fail, run it again - [cron] fix syntax error - [man] state that --chroot for create command is required - [spec] enable tests - [howto] add note about upgrading db schema - [frontend]: add copr monitor - [tests]: replace test_allowed_one - [tests]: fix for BuildChroots & new backend view - [frontend] rewrite backend view to use Build <-> Chroot relation - [frontend] add Build <-> Chroot relation - 1030493 - [cli] check that at least one chroot is entered - [frontend] typo - fixup! [tests]: fix test_build_logic to handle BuildChroot - fixup! [frontend] add ActionsLogic - [tests]: fix test_build_logic to handle BuildChroot - [spec] enable/disable test using variable - add migration script - add table build_chroot - [frontend] skip legal-flag actions when dumping waiting actions - [frontend] rewrite backend view to use Build <-> Chroot relation - [frontend] add ActionsLogic - [frontend] create BuildChroot objects on new build - [frontend] add Build <-> Chroot relation - [frontend] add StatusEnum - [frontend] fix name -> coprname typo - [frontend] remove unused imports - [frontend] add missing json import - [backend] rework ip address extraction - ownership of /etc/copr should be just normal - [backend] - wrap up returning action in "action" blok - [backend] rename backend api url - [backend] handle "rename" action - [backend] handle "delete" action - base handling of actions - move callback to frontend to separate object - secure waiting_actions with password - pick only individual builds - make address, where we send legal flags, configurable - send email to root after legal flag have been raised- 1028235 - add disclaimer about repos - fix pagination - fix one failing test- suggest correct name of repo file - we could not use releasever macro - no need to capitalize Projects - another s/copr/project - add link to header for sign-in - fix failing tests - UX - let textarea will full widht of box - UX - make background of hovered builds darker - generate yum repo for each chroot of copr - align table header same way as ordinary rows - enable resulting repo and disable gpgchecks- do not send parameters when we neither need them nor use them - authenticate using api login, not using username - disable editing name of project - Add commented out WTF_CSRF_ENABLED = True to configs - Use new session for each test - fix test_coprs_general failures - fix test_coprs_builds failures - Add WTF_CSRF_ENABLED = False to unit test config - PEP8 fixes - Fix compatibility with wtforms 0.9 - typo s/submited/submitted/ - UX - show details of build only after click - add link to FAQ to footer - UX - add placeholders - UX - add asterisk to required fields - dynamicly generate url for home - add footer- catch IOError from libravatar if there is no network- do not normalize url - specify full prefix of http - execute playbook using /usr/bin/ansible-playbook - use ssh transport - check after connection is made - add notes about debuging mockremote - clean up instance even when worker fails - normalize paths before using - do not use exception variable - operator should be preceded and followed by space - remove trailing whitespace - convert comment to docstring - use ssh transport - do not create new ansible connection, reuse self.conn - run copr-be.py as copr - s/Copr/Project/ where we use copr in meaning of projects - number will link to those coprs, to which it refers - run log and jobgrab as copr user - log event to log file - convert comment into docstring - use unbufferred output for copr-be.py - hint how to set ec2 variables - document sleeptime - document copr_url for copr-cli - document how to set api key for copr-cli - do not create list of list - document SECRET_KEY variable - make note how to become admin - instruct people to install selinux with frontend- prune old builds - require python-decorator - remove requirements.txt - move TODO-backend to our wiki - create pid file in /var/run/copr-backend - add backend service file for systemd - remove daemonize option in config - use python logging - create pid file in /var/run by default - do not create destdir - use daemon module instead of home brew function - fix default location of copr-be.conf - 2 tests fixed, one still failing - fix failing test test_fail_on_missing_dash - fixing test_fail_on_nonexistent_copr test - run frontend unit tests when building package - Adjust URLs in the unit-tests to their new structure - Adjust the CLI to call the adjuste endpoint of the API - Adjust API endpoint to reflects the UI endpoints in their url structure - First pass at adding fedmsg hooks.- 1008532 - require python2-devel - add note about ssh keys to copr-setup.txt - set home of copr user to system default- 1008532 - backend should own _pkgdocdir - 1008532 - backend should owns /etc/copr as well - 1008532 - require logrotate - 1008532 - do not distribute empty copr.if - 1008532 - use %{?_smp_mflags} macro with make - move jobsdir to /var/lib/copr/jobs - correct playbooks path - selinux with enforce can be used for frontend- add BR python-devel - generate selinux type for /var/lib/copr and /var/log/copr - clean up backend setup instructions - initial selinux subpackage- 1008532 - use __python2 instead of __python - 1008532 - do not mark man page as doc - 1008532 - preserve timestamp- add logrotate file- be clear how we create tgz- fix typo - move frontend data into /var/lib/copr - no need to own /usr/share/copr by copr-fe - mark application as executable - coprs_frontend does not need to be owned by copr-fe - add executable attribute to copr-be.py - remove shebang from dispatcher.py - squeeze description into 80 chars - fix typo - frontend need argparse too - move results into /var/lib/copr/public_html - name of dir is just copr-%version - Remove un-necessary quote that breaks the tests - Adjust unit-tests to the new urls - Update the URL to be based upon a /user/copr/ structure - comment config copr-be.conf and add defaults - put examples of builderpb.yml and terminatepb.yml into doc dir - more detailed description of copr-be.conf - move files in config directory not directory itself - include copr-be.conf - include copr-be.py - create copr with lighttpd group - edit backend part of copr-setup.txt - remove fedora16 and add 19 and 20 - create -doc subpackage with python documentation - add generated documentation on gitignore list - add script to generate python documentation - copr-setup.txt change to for mock - rhel6 do not know _pkgdocdir macro - make instruction clear - require recent whoosh - add support for libravatar - include backend in rpm - add notes about lighttpd config files and how to deploy them - do not list file twice - move log file to /var/log - change destdir in copr-be.conf.example - lightweight is the word and buildsystem has more meaning than 'koji'. - restart apache after upgrade of frontend - own directory where backend put results - removal of hidden-file-or-dir /usr/share/copr/coprs_frontend/coprs/logic/.coprs_logic.py.swo - copr-backend.noarch: W: spelling-error %description -l en_US latests -> latest, latest's, la tests - simplify configuration - introduce /etc/copr/copr*.conf - Replace "with" statements with @TransactionDecorator decorator - add python-flexmock to deps of frontend - remove sentence which does not have meaning - change api token expiration to 120 days and make it configurable - create_chroot must be run as copr-fe user - add note that you have to add chroots to db - mark config.py as config so it is not overwritten during upgrade - own directory data/whooshee/copr_user_whoosheer - gcc is not needed - sqlite db must be owned by copr-fe user - copr does not work with selinux - create subdirs under data/openid_store - suggest to install frontend as package from copr repository - on el6 add python-argparse to BR - add python-requests to BR - add python-setuptools to BR - maintain apache configuration on one place only - apache 2.4 changed access control - require python-psycopg2 - postgresql server is not needed - document how to create db - add to HOWTO how to create db - require python-alembic - add python-flask-script and python-flask-whooshee to requirements - change user in coprs.conf.example to copr-fe - fix paths in coprs.conf.example - copr is noarch package - add note where to configure frontend - move frontend to /usr/share/copr/coprs_frontend - put production placeholders in coprs_frontend/coprs/config.py - put frontend into copr.spec - web application should be put in /usr/share/%{name}- new package built with tito/bin/sh/bin/sh/bin/sh/bin/sh !""$%%'())+,,.//122455788:;;=>>@AACDDFGGIJKKMNNPQQSTUUWXXZ[[]^^`aacddfggijjlmnopqrstuvwxyz{|}~1.95-1.fc231.95-1.fc23 coprcopr-be.confcopr-backendcopr-backendcoprcheck_consecutive_build_fails.pycleanup_vm_nova.pycopr_be.pycopr_createrepo.pycopr_find_obsolete_builds.shcopr_fix_gpg.pycopr_get_vm_info.pycopr_prune_results.pycopr_run_logger.pycopr_run_vmm.pycopr_sign_unsigned.pyprint_queues.pycopr-backend-log.servicecopr-backend-vmm.servicecopr-backend.servicecopr-backend.confcopr-backend-servicebackend__init__.py__init__.pyc__init__.pyoactions.pyactions.pycactions.pyoans_utils.pyans_utils.pycans_utils.pyoconstants.pyconstants.pycconstants.pyocreaterepo.pycreaterepo.pyccreaterepo.pyodaemons__init__.py__init__.pyc__init__.pyoaction_dispatcher.pyaction_dispatcher.pycaction_dispatcher.pyobackend.pybackend.pycbackend.pyobuild_dispatcher.pybuild_dispatcher.pycbuild_dispatcher.pyolog.pylog.pyclog.pyovm_master.pyvm_master.pycvm_master.pyoworker.pyworker.pycworker.pyoexceptions.pyexceptions.pycexceptions.pyofrontend.pyfrontend.pycfrontend.pyohelpers.pyhelpers.pychelpers.pyojob.pyjob.pycjob.pyomockremote__init__.py__init__.pyc__init__.pyobuilder.pybuilder.pycbuilder.pyosign.pysign.pycsign.pyovm_manage__init__.py__init__.pyc__init__.pyocheck.pycheck.pyccheck.pyoevent_handle.pyevent_handle.pycevent_handle.pyoexecutor.pyexecutor.pycexecutor.pyomanager.pymanager.pycmanager.pyomodels.pymodels.pycmodels.pyospawn.pyspawn.pycspawn.pyoterminate.pyterminate.pycterminate.pyocopr-backendlighttpddirlisting.confmime.confplaybooksansible.cfgbuilderpb_nova.ymlfilesmocksite-defaults.cfgfilter_pluginsos_nova.pyinventorynova_cloud_vars.yml.exampleolderbuilderpb-i386.ymlbuilderpb-x86_64.ymlbuilderpb.yml.ec2terminatepb.ymlterminatepb.yml.ec2prepare_builder_base_image_pb.ymlprovision_builder_tasks.ymlspawn_local.ymlspinup_nova_task.ymlterminate_local.ymlterminatepb_nova.ymlcopr-backendLICENSElighttpd.patterncoprjobspublic_htmlresultscopr-backendcopr.logprune_old.logcopr-backendcopr-be.pid/etc//etc/copr//etc/cron.daily//etc/logrotate.d//etc/sudoers.d//usr/bin//usr/lib/systemd/system//usr/lib/tmpfiles.d//usr/sbin//usr/share/copr//usr/share/copr/backend//usr/share/copr/backend/daemons//usr/share/copr/backend/mockremote//usr/share/copr/backend/vm_manage//usr/share/doc//usr/share/doc/copr-backend//usr/share/doc/copr-backend/lighttpd//usr/share/doc/copr-backend/playbooks//usr/share/doc/copr-backend/playbooks/files//usr/share/doc/copr-backend/playbooks/files/mock//usr/share/doc/copr-backend/playbooks/filter_plugins//usr/share/doc/copr-backend/playbooks/older//usr/share/licenses//usr/share/licenses/copr-backend//usr/share/logstash/patterns//var/lib//var/lib/copr//var/lib/copr/public_html//var/log//var/log/copr-backend//var/run//var/run/copr-backend/-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=genericdrpmxz2noarch-redhat-linux-gnu directoryASCII texta /usr/bin/sh script, ASCII text executablePython script, ASCII text executableBourne-Again shell script, ASCII text executablePOSIX shell script, ASCII text executablepython 2.7 byte-compiledC++ source, ASCII textempty R RRRRRRRRRRRRRRRlogstashutf-8?7zXZ !#,']"k%nvq\Ғ5¤m6L{V&貛 mea .jf)˜(Xi)_\piI!2wtHmIj>h h5ThlS?+@qը WyaWLzq>9Yz#M%"  E|R\~Z`ь 8}(vI_ Y|8T ."J) J_ϖ_ 21[Ueֹj ,M5-h8'33ن^4MRzB w+w/,8>b6̼At7"݆#8|?%19T8(蹬[|HAs֕\Ewrj5/ fe㚭pqN/ۛtkIj`0[ $A*E@V#)'^x8{!4F:kӧ<"ߊ+v1uy/ 3SʶP@+$`@サF Q-%gz"EU/L:$$C&U`ڣ} v &~\̎>bj짥lOGtt2mAi}MHPmnG'lQ/]Lpx(l˺@\\HxiKU;=);$dNN@WbVe |n<"U[gސ9Z3O@լa g*u3D`G(}4 f#S-ΗbАa&tPCֆ K89a^?*[;E2;9LDń[ī1.2SDo^4=J3 #3=~Qw met=+ꪚ+Du/lm:|ҨU"sN=b "(hlM*$ ů;վHϛYEȻ%xJeW]{?9`M#-21-6ILj53Hb^"Ow鰨M|G"}e6T/3Ux)6%?lyc4TE@ۇ)S^?/-;c i} BIIq `R.`>gQSRamgHhחI>Uǹܡ&t zF jУLk,1t؎B@*-H\UiW&tMEB H/*@_jo$`r8Z ϙ^EEBЀs#uUd@pnf;z; "9& WHql dbȾ{=8w4Q~9S 9;Gou)Pxj3/e(0Smᐑt95~Mb<|/`.W>X4U<#q4:X(-6>1ώd|GؤF mMst!y<)&$ K[eOb 5 )7BYhg|\?b :x»?'H~g:r霍<3Z %+ B&4/݊>m{ؑ1[۞8%&?a'Pd5.aE磵Qa[XH?Y6THn+M{v"{hR?/<+]fAiy'TFzha C O/L,3As,z2 H,Eo]\RR6 a m3V1 g>/U,nhFt:SDGlMy|XFG\j̺gTz|Ly)]k"sC0.)(3gP4 3;΢vAA%Ÿ358xw'sm;5_4 7~,El1wƝƞp,DU TwhkF/]¼)\q +Zx`Ij4ґ:YŃfҵ/HܰW)`H-4-QߪCR g]gҬc×p($e7KbmPd(8&r-U\rH0- CIΙ C_ Y|ew CGbNmةg߾9_߬IQֻ@Lm|N$p8}RߦP@wA؁wKzk xxؿEaii>N҅3Lxڙg.ǝW7`/QqHHYk-v>hm.US%i<;JR6z% ij=F0JEU|D,`U=B-P ]f&ԫ,S0;I:ᑧnengg`eQͯUNGb2WvaLnk8={vl :l~[Mgf[ɉvUjM]47 '3?StHԦam$IZ,I!9_?^wo͵9(j1剒Vk=:w.Ϳt/FD̽zP:M vS32o2N?0(ɥVr# {/Q0MI1`]SRω\o.I*mx[9ҐQN=i@M8hIW,MQǧ)ɹl*:zFcg.`;&+i xr>Bh-`ǵm&: pw(\T]~|O,(\v}rbۼ&F  W9g@qrS;FL4r~0'I#3~}UȬvg}(dwn )̲-n~hgN=d-oSBB=M-Z=\P xnܺhXs%:pKUO.8R5Sl*xI`OU5S4\X!*@xCJb|*&;ELx uj^?NA(=6hp[l}C>>8SpY4UPo;luv!Kw=U9'Wx 79]r)>z*D]20ikqpRx-r2~m$- [AeOa`z$4rYa> L:c .I8eFi֨vL>Ix)^1E܏+{̦plsk#{asp*wO,C5'@8)²DcDmqt5]Tt%Sc,mo̵0LP: ԃ`j `#2][h_knBT~ I^JIc,7{0"DpPTvJ_ djeVGuIwYiDs.(NԵ [Do}MдMbO.aCT߽w=~+ҽU 5 ꑆ4 c$BR~&b;=u~Ӿ~[ ?2Ѷ hCgq֦,ҧ@Tv$LPxJZAʺD: @ws0CDž#Ţj>kS9adE!d 5M?N'ᾛ .Nk"#m݃9Ο^N@a _)S(gmυsVNgNڇ h]sN\&n8QӦ}c 'ՠ7/ڣ刪%˔[p8hWmb.}ν[^Üs"^P^pUC2s+wȱ7E y9̭uᱬ7 WZis/1`:M?.n%-/vH/j2I/]XuˇXPĪ$(k\Ƞr<{ᚙ? VH%jV>UChFG©ls9nVXO<_k+fVu*w\Cn9u43CNG}Cѩvpm~q}_(F {No,dEaTmk*!&SPgRz_S [qA>ܘiZ*3]jqGi-;'TY24~Gt=|wCAH6h~gYKcPG~0!tOUqZG9V6?uZ&G5HC ֠2VW$+(DzYZKll]~Qs +d7#m&FUaqFQߊ;WZz@mcea]pgRܡ1Y"/;8g_FvLқ|Yc7͂#9Rz6 /|l`:;? r[lW%mt8-mj3g;\EDr]yd8=Ku';\D;-Y^b'MTE!7O$'@TR ǀ2z]8al  äɀI #Vq R*ȁF]#̢yS @Ƞ'-t`9zDd`9[} :] Ǻsw7t賔qTV]2n7Ő)O%]PC>1HiMiO(]3۱\&B&4~} [?A22 sZ6ʿ U;re~>]Vl_!oҫCFY~t )RGg#"7:1ϩ@1P[`oGWSigjSr'JE{[XE|*k*d7wD!VHp mV<VC1VF ;vg 'nQgust$PW'0𡹂mKaP.nv55^Q:$ R6SBr!%za Ol_S^ dd eRu9b&qZhq1˃~sY(뤘zO ޯST?e0@Z\_wZnaN"W4pKW(fI7%zAY c)lY\o*{w'MBa+ ߳nC_mbȍ!&&F*@V.!⺤<]+AN$Hj=рJj$fN΋ smooc*qq,y_Aq/`xNÃ&?0@*)1Bq$~C;ٶyV*5[QXa^x muZx3C퉐ox O]y}K;~Pd:۽eD&a쑦軔 v!,jF}1<qCTV5`,6|̩YK@uNJ=s©ާ:ăd@S?4L0,nʇP.IJzZN]XF+ش{il`LWsUl6C $Ql(M^Vá zvBC:%\}^VKR5SsGxֹX?L4Ãy"27VzBL^I^@X; hOa@=8Q ,7."~+qRS"JeȶPouEƺSq!@̪8Rn'BbaТ )JJ 4R`:!BQD@mkxղ%j.w&nCD-2T,pau4ә>*1zΡ?Z(*,I1^>a𫮕ቐׁk17Džwǻ $em`I`{YZC=H~Q/bX9{n}/Azh8osЙ9tu LAw?NtN:Uq=P#+O犰9ȰcB@מF` W?{@B@58Cv 8?yTűInJx]#?BTh`v/V}QsfoU575B?cuΧYٚ?[Dfc&{9=!Sl|ۄL3_ӫj F-)qG {3"˳_hޛz) bJMJ|Ǐ9]&wdjè6ր39r4Ir4;zn-°b{I;j`E .fLOg5azw#z ~ $j8lĪA8_B!b`cݐCSIB$RюJU k* #N׽2Gh*Jݼdg1dS.?p;bjټ~sܦ]^Kxe sŁ-~n)ҠmT9 M UDʺ^$O؍7% 7ȷloMQ|d Ջg-),O/*q, /*C18$%9of*9L5zl VS9ۃGb/=$2ʨzv7"WhpoPL/"a:壝/cdX#1 *˿v?e =3 F"ǍƢ YU‡Brjq ’u~e19ʂ6[[Qq De3Nz+aF&Λ4LKC:Ա.K~l*saqJk< (d"@v]e3(@ogC#DgDb09Jv˚&&_Wo;LfU(()F"Db@EØr#dS)d@q Dkjο)'1WUpA_%ݾHi4%^F% >5@av'iVssw=? U:HڄŽri 'ޝ-$L(ag Ή ^`3~!r _~ ^8vzA*4^y?CadJ9w]E$Ρ$ȽpBm5]ӣbCq󪩹L2]R䠬NMtfc8Z屼\-")eUNG;=g rTяivRɔg,VTZl =&v!78t+~bգ֧lf ʼ?/HrPCȱXzՖXSwP"GGHX5b1J ;5")|(.]0NihK-HPF9}?98p$w\ypÕ>)rsOi7[[w"ͥ 5pUZgRY|S2e5,<2Gi$Ѣlq؂qj=zj@kusX`EDib 5u]/%~_Y`At epȎMIC撄J!i6q8OL$jGJ|*Ё? pFEboķӛHZuEP/E뿝"5CZndpҦZ2eNSYhLk=- : 4hU&IUVp<` < ׷Po!nQp:x *NrYay\Oo4י]e:k'LR7xCj>91=Rxid1v^*chdYxG:n+4NFA#0) Tx@0/?%$"dMa;XS-$t #CDYMz,ɻKI}LJ%0cXAIX*'༧Z|@a}E0R&_+7={A,ϗs}&n\6NB!E6qknHn ] WyҺ9} &Ԑ',TM*pcq4Y<.l9 '6m&&dxk+أ39w\.rk"9s@j }@(]~i%&[ ĩǢ+~Ţ>`^O5-?q9UR`kMfv dڪ'V:ȁ:w>2u,q3`a[\ih$sv72]&f*#`|YsMcr G\FQ٭#$&PVgXŒLMCƇDR6V*H>jxEY鋑B5-^#)žE .lV%KeT"}Nʹz@tk9P R:EOM&{^ھ[G{'6`Z?z'ցۿ|Xvy0r9(х}&~? C/mR lzH,"OOێ_(.4gP,-7 px(;б@eJDuW !:QrrP\J|i/UHx֬W ˳?T3N|asn=1XˍhBhCTkl]dDnKU63ېzWiJmiu0i-g'$,YHh5]'͖bb4 >_Lg/B+Nx#4)MAW%tXBw JOrev4y*m@n()ΡӅM J:i =@iOvL7C6+e6k't=_;5$5*wIw=sߗk߳pb )δ }ʀ]{V.V^z39uf`E"^Vn'IZ_tY`^ۉ ڨw{oh$9bIkkB#zO70P?x ɢcexQ1NߥN2Yo9Q;YЕ .UD' MheԞ5 BP`?=?4?+_Z=шpPg (`\cձcepfa XUMdјuyNs&/FNm'm@ne9+p^"$?3]}SE z>@1N'{&aN/?ʄs"@򧀶c?L;ؤ[Bߡi<?a sm lg/d!f5 TK'Ihi8XuY T OgOY"Ƨ7ʊuJV~~@xn`n~mͼc7h1)bȞINڦ}5?'EIy( YoKߪvVsY4>rG8ߊs|͙:&peH>!G0T}40'hh '@yT# Lrp4KCsbNǙm!`PL^oNJAl.s~e7'Kb,tGupkn~z*Rt 'Y3HP+R7ZZ5|GwgPz汒s>Rj< NggP=N1:NrG+ BP2gS{F|l%;EG}ad9ko d(L֬C )=4^=pXW5^"ril'udpQ92$~:SbS#Ա{݉& &֜dW;`3thNpa"Tl _7**1lfRal4F:EqM5 ["g^ A7Lz6"QK1$-,s,8u35O["#@֑4~hx b}6ͬ4bߎ[Ll"P(cAv+1IU]}p_oCi+ Bsm ħŒ_ GˤE,$ LEx|`8UliXMx 9[up[O#H/7閎aó7vbA!1߄tOTxzPWO=i1=/SܺKPYyꤗh}Bf{+ D.dS1bΐ^z*b.r]MdyǿဂzHڮeBLӋ kj*p}hA7ƅowыʣ 6ZG블Yے;g$OGH!+o ܚv#^! O G: "Nem[2tgPNfFT\ݭ8(M®8 -ty`DS<H׶EMsǁfӮ3hrm~Bʴ"wSgXPZ8u^\G*x@KH՚n୽ 9D֑0x2 (+ѥ=Ȯ-W笒_C Y[Q麴c9太9(~\%oa;'ʮItK~}kGZCj W8*}Aīd=L !]HDh!N$ɴ}['A?"G?^Ķ2^ -mxFW86 y.6XapVKLbgx"!g{){˧ :}+2 P{afD'vwGnkfihvGnD vy$KWg>.n0ÛB8'K/A@gb8Zޝ)㹐|xC[RK$]3o1nE%qP{* 5+r:0Y w!hXr6lי'mBajqG!i| mϔ  ^@iYK_ͷ(ɖas_dt"LhaկK?i4h-J묠iQԮ џ>VލV—q˲ 0VWtMb熛si*L2S\K/`"&bA+to|"n dݪԤnN?]fОȊd;"!l1k 习+Xw |0+?؟9<*PMiH c.Zc]:!{)}mb$ӭ6\WwsT g BE٧(G2l]'OӞj Z^OiUhڟ Gl^p<[z~_P:J}į95,#], o ;iƀ͟X揯 {TȘdr倹TE/׹>Pߍ=׶pF+2mNbTDOIt6Cv0!!񮽨 uDvnK.Tqp={.+U[DcTb ǼT;V 3SA8ƺAZn\ڗ7T"ϲ'hM%O]OO`* )4I=@6sfÑ0Pp{7ICs\3?!{KoE' D毃>jW{+W"9+Z ^W*/`$N+s唏V= lRi Fi0Nt%o):i1SWqnG pؿB$۴ +bE7H*MgkҥkL|OjSΒ|4uq |ߛSin>j;.AyfYdݣZLԊ'ֲ"iHa02rm!kH\4@k4UJ@9ߪÖOKÎ1냴'n&R+; bDfH?EJ&î4On [fF[N u_n0ȑO\ gby3 lr7>~Mh)3SeqV# ]OYyf~#%|!,7Pa܈HwarZs;y"Qp]i+)Zmz!fϳ1Zz-~ơh ޮë&mK;&ʶ葒R$ D0Eq%0p`zNVH4u :&S"c,9N1pP d"FcO.P(P LA? ;]/'MOG2fvW!>9h7ص~N:bHn\jrUp弦DMPG7@DETXqqF߀faMаO٥!~1ÁVu9B6"Ch< ?Gc㇂j5o9](;z~m7B+Z 0mFP+]pg&@R;0u H.'w84 H/ bu#T68^2xƎB(‹N¦\0=9djو( KVE%Y O$b? nu)mc22iMErϪG¹i1d1-hL[m 5PR%0C@cW`c^8f[&ɲ,5>d߿{0/Uwȫo;ܽWrs8 4:Z078Gۺ+PXG3Tm0B8q>=] MW.Tw#J] OXcbR=gS U8X)iCXv'/=V\=o!d *YSHC%E=KǭF/T~3[fSF ;K,+8ljbQd[`y sS@h"BpHg=30097|MyP Z5KEno;B-kvgC ^j0nE,@X_ˇ(>QUb~QېZhy{mK3S(hZx.I213&AlrqSwc;5z /Q>P?G<~gg3fLR$X/:D?lV%{w#[VКٛt2>_&3 &V\v 4KغCOPec;p(9!ͤsӣ&,Wv46qH+dƶἚ f׷~OGUb_Zq!Oe,Cop)9Ŀu\C .0+ 񐦀% !zDB4/qV2jxk}<')WvxɯuoG⵲vFsgF *)9]dK/ȇJr3=<0N/u?p".c헟#[~P,B@Go^@U&Xzy|]{jZLG Qd~Rq ,"s8^AymFH[^̕ 9UvA`*jݺ AH϶V=vVmMЕ5UFieS a ۲ '㨏WeL}krآ */G|Ri*Gmt"-Sd.yA&=i]Y!\ >J V:X0?nƬUf꛸c[2GQIϋdf w [i[` .="|zA /7g]A-\kv޴-k'/ӷV O1CS=xoEtuVD!9x]FUSaGfMOOnI0=u%'#^/ L ZPNRu3΍Vњ!/si瀮6! /1E.:{Ɂ)[uHBycà.i*c[-cpDAmv,f:Le?fj4BAկ Tw~%,Iwf$7ؖV$bg 2Qa7qa3px'pYz tT[Q?1\4 *q ttHU[2ljCbpqU[w{dW&$*4:>_g^"s=?AX&74UbnԱW cAU]\  |ȹ'8&>Wꡋ͕jrX蒸y9MK!H `ZݰeuPa{a&s6Y>u񽳚ŝ;Dw!-dMDB-6yB@m0lWB̍8{B&h<}I>eߤ.4HZ 8d44m*o6y-VhΓa[qT„D|"o.kBB?_6sC%KnQ Q+cއǗ,U{uһcuVb*[JEд=َt@l?.!m#ã4ђ f9x$=W"opߌ?#X!&EZ(o M4&,{ ^bXs K?BwWd2a׎s1kaSߧ${¤v/7ᗙ\mPpmCР ]m$C4Ob5u98|vx9nf; !btÀ9?3]QNSV ;M&"aC5;ʬ`1|_GLM&C-XfQy]>voggt(_Zݳzs=8P?IM쓌_`R \ʮfsgR>1r7OޚI!hORFdf΄-qBU_S F1R Ԛ'!@JBxS(8Tw/%S9ݹeISmEw+@G;H]i| p&!)( N&JkiRM g4h7R`)86d3PmZO \R#N1p/S ~0)X//VoY>5 nΐ71ݙѵWBm`Sy-= e˖Wإ}R>xBԵ5h{0O/k(a<$B޷`*##CRn^rm>9_ģ˗^Mxzn s@dUxiyС*8d?A"fdJuɭ!EN火_U;ʍ^Ifb|A@P}>zkhpowfyB~{'5&7Uuؖ!-o*KFM dn0}C4v#ڼŎ*QWkԊv Q[@i RZ` j=iZs$(]`lN}%0K_h8;୵iϨ4o*g/bz,;1UզߗߥQb @֑;U=>ڝ6R}m&hfJn.mg=6r%^=?,)LưԎ^! Nx;_̝ #1? qq4RAK/rruCh 3+r-`r })P<(zH 7K6nb6|j5ܭ(F5${fD} S L+$ %EF OXPr?@i5w '|t犕ƻg4AC @d}IRFL> O-\'<*TD!^oɍOĎ$qٽ\<1VX݃0V J"!ߟt=;ȲfK)$: b|2o.1hFF>4 tƉֲnz6jM;ݩxNEr4[HH\Kew:lJ1>9 0i[ƿvgx\@ڨֲb&3XHnZ` j-ɹwLmnk'qw b!Z E}3M9fw1q;|=702<:9`#aKլ?& Ђ3ZTl|,Ej7<J2e[s Zm]H .:}\YcFvte7xЫdw :3wV"+~v5+J' :Ft=cM}Ը:ū<;6 ҸêR (1 +iI{Rj >SjND'zx%G!8<3[! {o 2j{TP$,Kx4Y 8l1;D:g;"}D?\)!ż LrQm RFK+#V%ѯm`aϿ̟`nj-qCA9.:u=#Oh=fGȖ߬uKm ]մ3LK>."ڟ397#yc9^{Ց\(L6,t[Iw8D4acmv~PN-ǛA(n*BNYo=/C#z/@eT:ʚuIӮ?GoYD~Y X&+-'*je,.` ;0_|FǧNtdolhwI2xgb>tls, .sa}ɝoҕ[)2_麒3N $gͦRK @5ۆ@#~xI/{K=g9Chº..ĉ4h8K S~µ[%['@cA2؆o -ӧU[j >_44ËS q[X :lsN\H N*ĉU/VZqMP4.<_^g霡H*n~g >d͖r&ii Thfq0,MnbefzKb$픻6'(FQYڶfLÈȀ'kFMܵO>HΠuBu.:~4ڤܙj %W Q+ΰAC^h^H^un3TpE#U0}B 2F:vU%V@BԚ:cI7^wWȲ Q(gAV',C /^- ' w8z_ /.ƊuZS;v1˛`l"r\>\ ʾFR[E=pFbyrT<åeYPRzal Ua;Ä|~AdD ʬ_vWoy^L-velR,ҙ3TAu6C7.U3_pT8)6ٱe[ha;Zc~` MY^9cˋvc@QPKsU 'n/C B;c* B9|Ց g7/U}#ɫ-6ub퀀fIƱe'4ku:Q C2`neC3kͰE)brQ>y'd:_|DhR`Ջo"qeD JBF|70xwErO.tev .A~B.r.n3c kn3A];B4U2jvrEy,7*."u#.bUF.uenU7/+GO{;_q0vUGptx̣(Y"`hkkj(݋CEy^x[hf C(/xqi h*tS`N@b2DcLO3J-E eOACp m+=wET'ѵ7/,CpW$ayTP ۄ3ߌ!cl(G%I!eJ1TCR9PP?E&P>x~U!8”ZfR :9^s݋F/k tʤ02r?@Tpؿ@%6k?zE5W+QZWo~BQjtcF"{{8~]38<z=)ThѮT!`iܴYsBH4 L)sU9gVM3!j AK5C7Z ,0L 9n,c~Xȱbj2ҹ/G=O>LW Ror"D|鼪Ut d[ gaY36A.Ei 97xw9E|󄪭5z9H t l>"$GO:t.)KM r&K)kzC {;- wǑƻ>l7S ;|p6* 6aPYA(LwBfBN{!Cp؟G_##b,qcqonIO[w3$~ +C+jW b^ZEsз9|U褀*ބUntR Xd/5O )1Si<(!naudDg|K[C-(XcUo;xwAͽp)tBrThFH*3[#Z?]qR+GfƑWEؓ[.k-5fd>zTAF $Ѹ?hJaFD<2ϛ=;H#;dhV [U[,{*z_sJAOB}b.<+?ؾ%ИWr6ѽXg%o8F1*%/Ub*S[| Č:Ou3 b\@p75YW5&q۰%ߺrǟ1R'D@ 5߱x@-r+9nόa +Gp'q 6,=(#FYu Psqj#s܈(O9%8 =i۾Mer╫H[W.# zH7=#I|7_`yE, bjz;t?. (S%bm-s8Xʹg!?緲9]a0! 1vَG]1_}R :"AϻOԥ8 Nfuʹ˾ݔ (Jl-{,`T:y{@r$ и-CHcqs{ K4C"o O P^l @i(+k:3?IF*!q._+Pͳ-Vav/_}99=qv4H֔Sk:B20O2 }-K5^'K+q΁^>. aHK](v@@R2l3XоȦi0=}E $e| DtmuRT<}7rVeyAibjI4?_L̐FCK{Xv[8eC<,)Rp pK;ꄬ/' o'bMjvќR hkG:9*}oJM7j $YA w*A5#̀puQf梞yAK@--̀}l-ŏϥCu̽= %.No6Fɜ܇õ! #Yv?zzHrd-eTReԐ/u ';%Ub,#mb>왥J#ͼ<8c؟o^SyE y^_6Ȗ'⟝2q9`+$, %Qʰanc#z*dfCvމF?XgOA!Տ`1 @a3"%`mF+1=j"C樛R+ ¦SAcOr23>Ϭ#} oIm4vیWv!-ƻ'nQzdvMnTear8gV^ή lFtTlAG۴2CnBY0tu>@:POo>xoc>?U3Z4߫f҆2ZA\p|m"!C z)9PGWp˟I |-(ϓQW ~QZAOi)%^i= aPdLcz%RhKP_iY2c ѬTJWD7b"(lJ 6V\&O@LNpj :USo~4@MN!L)XTb׶3CAė'6>00k<;vK*`ڄ@; WKqg,BîbGOE?EXdWC.iBJP`;ÐЂRlͽB.X[ٔU)&[AIHa]"h$@+?.r+fND\3T3}wL+ jd TsS$iuT~G,pξ QL*#k)rKC)Ѷ '|ɣ_!-KJAfYꈙNSI]j^j .y5Ƨw-k<ƻ[ [3a,_t6Ly5.F+Z'XDDtm;e%yFiծ̓jժ>s0"s ib9?䔗C!} eA}ĭ^Kv'E6C6Ā5cVڈ$^\.aś>= %=RRWwC&T{]P9Eq`)H# o pp=IdEvbL4A2 ΀⨍;TCz*!˸`"J¦e}=[mGjs2P Q|u 0ۨ57w,iQhBO \..E^Hji]Ø0fDi烙\j!Ԙ:_gMo+ixu糸wUlKػ̀4짨ȼ6\:m'tv9Irhu/ YzK iM3R :KLpMa9׬=;/U tZ&fryK46M+*Af2-4Qzl), Ҽcqy[FYEMR9f^̉ "IݙǁgܑL_WqS(Vn+K4+dgK6 2Ͼ&/:9_' @Ul6mNg._,e5o^,1SºwFr. `8*p&{-*!qöT5{PAtEI(ךKh" }qgbV]xRx /f#zzK`g/~1NF5 VgR8qY78אpV)xݶת5rShB!B·QתD`|Q撶7R-=}g|j>G]^J;PYVFi]rD͝Ζx-h6%>w S1NݏγRhkQ0~&yA+3$PPJoBp;nXc"?-tTr֣%Jy3l&zz~yUxY 9ԄpCc\QSNLѓ^:m?ۈ~ms7?v9 )]ܙVDaEq?bodkʖךQToma2sk7h: -6yx BH^bݡTNc*qjtc`ˮUcP!OWkk,SL]g\< r=s`bC3K -<`q*^ 0նˉl\h:7 NwC9ZvcalcaFr!9nF-{^2# ؽkRY |hnH#NۻD*{ο^* 4 uYcoqL{IۼT~gp7Z~gn1 ֛UA$B(jJQѭZM^'|D7 lʼn9ߌX,ՕCȉ+[, pݡL4Mx$~XqG)05bR KecU}͡r@m@+`gҿvδ;,r*6pEG{ Moڻr} /1+Zgn{U3EɏY  Y}&>u9Bikf~n Ms y}U=04~Ղw?ZGPҨ`cJ}}L [Fm~\a[>[mvzܛk<9SF.: Tg G%@CHD>* Q>_DɬV)d/]\ʢ=gPX{`KaN$*ErVQGgmjVo>>C텧G[F(CV=Ӕ{7o1<e#Dv;r]坚*=E#J5p Ff|:y yKϑ!Uj$ƒ[E𨭏yԜ :Ҷ#|v_ü3os*Δx[nl`,h8L HOh?{1ffE!e]U5ҡJ{w< uMd9w)/T7#sy]K쁸gF7ޕ':T̮,36qg/ Ƨ vӾn2B{-19 >~\".HXeDAMCxPq65vڝ) ~> ݍ{0fo{?[ņ7,ޚF߳ZK;ܱs<^^5Oh1F!5b!f\\Qm,Ffk뺒V\Awsߕ d&uk,1<єoDbWhT^j'tqmp)F#LĮN*2–`村[#ֿx3V?(nàfݱ)QN׿ (ҪyOuLQe ƽ1ah_Pb!E3x~81̮ؔ6Ly=A`wƁɞ}f`G\^sx?=<8b7/=GqY'D]t(KT7dnLQN(k4K>,NM9Ö 3vn[gPy'c:~1oJHfٱr~ƹr;VH]Y LGy GÔᎴSH%>}sލS×|\qmg !_}#R \hLvw![Ud+24Z̒-A>h#/x0|3>U7$Sgwtu]ɴB>_Bת/IP$͙}u8x'Ri'XKHokG K&ʵ |aFɿ`H/VgzVɝT0DLH {W?0pfV/K ] B!+yJr85Ds71>%D#Zgi6m)6oBHLL!g\Ikre)I=OLD]C <=y_4jf xS7fBj&ރL6UJeq'smpp&%2)VMR.@G_h,̝&3;vTzOLۅ /e{Ns5k xj7x:[L(h(nE ĘB!C`ΰ -Q:%V䚸ZJNHأeLx?{"sV ݺ#7%i6+iw1TTp$< ]=Y_8>ڦAH[U2_l2%x$l&aލxD.Wglzyby|VE{Cή [EaYlӜ7E"N8?M pHq-;EԫY`pƖD-zIBי>B/JɕBXFRΪN' 5v?(iz"Hl)x'l/2(IÂzqum9h|,A-}> vʥ&f6Ɂ/]̀bkw1_CB sHZ?PՔlNţ>Zd`37DdQTˣaMGLp1uD|ep yi;|~u= z.DuPn2L00 IC߂ҔV? # 5<&yr9XKq9R7l?h8䃵j<%tLE d-Piw 903e +se_8k/Ǜ]BƢG.Cl !cb hT!LK3!.ZݔޞxWPZh2Mcf>PQ=!<,:H_x<U\ w٨!vVVR s[]j pTluU|C5QAPF7ly`)7!{.ѩjOδH9#a1iJ A-+n}Wz^s8=*v o{O#Cu$Ӊ6 v$Z0ꆖDkf˄ '!AG?h ;E+ 㽙Vrwza4*&pK1xFjC!Ioe&pd^*Ba\DYYV C*"^KS?ƒ鱗7i"V~*Wl~ Dˌ:`Xt g)&^g!8[vwd={Ta ,Vֆ89jLq^,WaLTd=fT$pX҃_rcfV~b 5x٬](390I_/p4-,/%6٥]Rc*0ٿY8G FR=)Y$EYꇱ;~i\CUk$t-ON3(1EWx9ac6ZQy;&-Ю!njsUe _9!%g_I=I.m@'EN<@£ҖlԑB\bo6C3#OvF8{xڳKeWP@v'?"U _/39$ !:IAQg2zz|/cVrm7ǺvF4B#/?π^f% r#5 j9)n nrNX@΃T',[OxY$Nɲ\T3O#fD f}==!ɧgfg4 SL/饎z -=\-ջH訽Lx#-9a;Z`Ts7N {w&pAvSm`:m 6i)M{eJvXtu.m[Sm jzzTvR="D]Q_R>w qnlI0`7ZKyR@ϛbɾXr UlX v3 $W&~ÜW7Eە_C/Y_8-vV *uC\1fkO<oݘH80p ( hC|3F:ZHQs\U|Fk=ʠEBgvuۻ\ ?09y^Wڻ"ӽ҆r/WM5+ТMlbXC6ѵQjMӜD̗)Nv?3- t09Iۨ!Dz9\ƒW9EVu#==ˤ$UKJە-ܟuXqY)~y& $UB( 8zr+{,Hâ^⛕fpP/_>G) &w.ECP+qiAq'S"W+,Ah*t`zA.U)v=](jH~IJVꘛ%Z7J2{4@{AY} F4d;N7Oo-Å WfR,#.D[?Pg"@@o9#HBt"Аءhʚ^T$v׫Zn+ʣ5Lx%a_Ipl1B)nI ˧o< sFi~#Hl䛖tsoZ1Q"}$K<:z7t|MtsӨ~="ѣhQ! ͣ ?GZ48wdoS̬͆UxH~ҩ=3Vf&fα鄆DgWbd 9R\ŜBOSr>b#@@ؓwLY9rA80%V6X2yFG}0`} Z-ĝ1)g希b]'t/kKX}tt׹,'eFkIvO$qsc/@U7 &;t{ hڰvh#sjLY  LR+u.1Oï+w&T%9P̤ԕ**G[CO!Dv5-߬  " ,gTAto@e%@~F겢^/ݭK#G oDcGWK:Keܺ_~"'GtĪo@db/I"U-$q *$uPa;:4 X^j+_N3h;ux̌E/(5x#-!.7_tx)!N8Bt<'pb`Gx"MPfwAzXm%IPY?)<:汫+.9Ioڃ 8_sPFtEHrݑ<8E.a.`=0۱ !؄t@^坢XK`π{04b/Z%d؇IDѱ\/83@0" JB cp~J07MaՅnM@8w?z$6r#;rF&陣x>q1JMZsñ-zX)ÿLQZ5lL#.P;vr 5G$ ϩ[)e^yf(o?l,p?u^h:۬HT ~ U< Ϙ~ =NlVOGT@S>}Ϟ5w rmQ[4@HK/X^ =]mf1UÞ,'{aX1얤ղd݂ہ!*&P?fL|4F!&GV#6WLWD! wxe?ERl9BޡqՍ).zdw{$ TDq&h=|lYRj(1J(c#͉xR3gcVufS\d,I;TP>_]t2jtHxH,3gS®TЂAzbؘ /8|NM7Qz 'Y=[Io9˗0AÄwg@8cBt.*F$ W?+qĽ\ EGsF-!ZHfRwmayMz%/+#|b٭͓"b!dof_l=Jd%]E\JaUZ81i2"/U<(dnr$8 C"#Y8@XWz pFՔ,CZXI+Tȳr!X֯IE.Dw 2(ӼJtktt̮~ $Mқ/B UpЦ.BV/G_ĭ'ey$ J5+o8-s/d?2%>">6jk,G )Y( I6pZ}0"8 |.QQq3 :U8KJ4Ηf76>Ⳕ^y2MVzg{Ѻ{mZB%Dl'/# Axy+%ۣ[  ;^w\#QbJ 9$kRsO-(GA;mFvAP'7hSrÀk6ʣ[?_kL{YnlO6niKf9qq/ p@`rCRdTSJUHG4b4bq>q5rUĽ1vZ?M)FdlIuAŠ̔ol+ﯸj0зwp R=F'z+ؖcoA]t :҃*q[%j@/JdUs,>f+H_FxuX_ ${>h8?SEL pB,!Vd&++>_!IOKV,m{o/M5#N,%?D*={؂&U&xܟ )ΤxWcpd +;!k$Ur ~> ׆sӱ7H/4_sI/wusO/P|SuE͛\xg2s+¡ϲcϙ>sU_k9PclRMC8H=Cϼ7)~gm\& :Nm 0_ br}BSRnF@ t"ȩpi]Aj@yoq2Pkċ6n<1*ԗo1)(vcl;g6D{O״:ܹ }wB!Ka`YF>ČwU!6j#~uӺPiʧbk':OQ;GIs0$&0]*R 3ȅi?zk>e8036ne:k87GgN`YcqгO?C<BxuM\ʀ|̝~Ex9|eD2#;{T!@'MhEGbW/&$E(Eth]?VVEBlBQYY,.x- N.$ؔf'{P_]#R&I-J9}$+ҀK.$j#M #ww#Ư4pצ78 l팧wr4^ӊY3U[8\P@ 1w݅u{{>1i0` ]_7ceE 2/+KZ䣞;9 t{,4fhw@Ldž6*-/l%Shk-uXc `~~&9O#K ރ`K(ʢ\p(OZ`ﱜū۸^ Ҋ6B P*ij]Bl.FP!xvŀNrZ=؎W,1+ڤhI\8,!Wwge gg3w8!2q՛?q ¶'͐x1s}^9 qM;2C-ńv2 R<#ď#054?A)Bcs\:B`cH-Rqt,w`_O^UTOP O/JcsNX] lER~3i`.kN&"b}슧Վ!,5}X[[&+g.{|7wha ,h Yпa$?I,s3׿, hmJ>NNێd2b9 .+lςw^g [ sxSU"΄&nDFl#Z05 %_UP8玃|Htv(PIiƼ0]{,A'd|lo->sxE Œn0?wh֫yA=`P9ĂoxZLixx{ ru(V {y^U1겴x&}E/0_1MFn5jj>"~ LJY72u : \K$S/OWXҺJ-Bh>8I.iQ :'UOl$d{-f~T:\P z3ɑ3/ xEsϛ::|E x#`MgJN b(NÌLv%X PV2 * 7exJ@^m| 1.!>k:btMoD~Phw:Bi2J< yj Z<,`΍(';U!2:鑑΂Cz&0|Z|\mitFyΒSxN`vXZz pt3h5 #ݷtJ@JcuVZA}tBuߍa~̃n8 wDr)DvٍW2Kx& #M72ODԕ(9H2?8A"!iɪ%roa .z8y1VjNd}"y%`~KXCⱽ䎠U}++ YHnʺB7*"cO R"Jr+ iLWmufevOCcf,x_EX-!5_PHm&E0yC:u>⑀WVGׂWB)HӘwE gL~_lhShTp!gdIMWH"?Oҁ:q=N7LphR^E Nk u~ ].U N$?ÆI+79`nrhו2:vU-,\q`0J'5ۨ J%`g t}^b'in]4)(dwfcߍ݋f{9')Z2ęYNaAc4>B5r[hCY8]s ܟ3\{> iRۜUl[c!M =47I`;!I[& 6q@(37qKM,[5 _Y eyySin]&W:Ps8'%e3dĥq͐_p¯Uߔ# FR1iЃRxF>0k$Xnx$bGO'I߾P0TVˌv8,6"2AlrDՂ\Gww&By M?>߰CJLps@ᠼcDyr$TrT ,lzs~vBBtH}\gfZ>-4o-^Sb :3gNl =$OdZӈhlBbs L[pk@LuXۅv<Ē^I7o.f&tڪSb@ 8iDьQ,m:k}eyC[ElÓ(RM$a0Ky;ByiJQӫ,wx,{%H+|Hdq 79mf|sȘ~}@c~=QgȦ{)Z^#^J PF$ iʳ=*:mJj9=s[LlhAoZKNƱxd#PZ㳉Zao]K9ږdgb!vfV6t.Q Č۩M䗋4]4H{.y7$#4S UW}8XM쵃ofc."fz yq-E6'~0,{ΎN:)*S{=g>}k y{G;6i"Rrla+a,1:@}idTxmm3Dn&jߔgl30ZvK`m˲0̩Kt HHv ^#j;<98V~lslS.h6 L?׊#a%CCào^ a6|faWKW2:S #W;I)IdtҟNcO"9u7GT=jMiV0?GO% 3gjhyH֋ l(>51ly1 |Xn|1;) /DD# :a# Eooa7(jsh.k$R g=W`Q6 ']',6rh.RO|0Z5ju),`'(K%ZinɜY1ľ|g)Зöy5,nD:Y ~ݑά\\2ػF[vRNY1l$q{.~zI`3kڋnk,h}Y*؋֎PFCǹkR'• aPaB3sDe(%)YE@Xw 8bĵJ~+#S >U FڀGpU#Q' Q.F:SSzPJZWLw:q^^jӹ9_q[ݍPJxRV0XmmY@·vv01@^lG/xaĒDfoƞrV䅘Ğiְ$ŚV?`wK%_D4j(˚ lܳDbY/)"[6U#3̍34WSqCI_ݹ2J 2Sd ?e{n̍"!+UuEG7M&b_I ̺ ui \pR6%%7FeAtYۆ ycEKkO .ZdZvrXaD䡢kwv]g -e3l!pm:^6*1;N;ĬoGKH9W3ak6]Rc:,d k:\FVZ? ۞E#9D ȳzUubGC P΢i"(Қut~`ݻmjżƢ%Y1 oTM0i^5u/Sѕoqܜn6hguf8Is`6b’Q=@M~^ 1HJ$giHzF9 $>2sq \o{-^ @X@fhE|Cr4l}='@7jXjjrٷc(!,{+Ms*w+!?|=.3#a,ӭ˜Jx4/C/ !:{yYNFڃ5x&'-M!hcelBgrtj!e̟Ɨƌ"KDԲ(U0b𖳳$ˊpǔ ^4{$T^)Ю*"~rvRWC-gII9z/T I),ɖ,n$ RJm`s>ՎCI~JtD7]dq=x-dX٤-Έ[tm$S- T8 F:L u v;Z FQ9ۜ)lN}'9bM67 }1?Η$i_S % ˺]w"%Ď\b TJ#m*(s sZK !r Tte:; Qu0U$fLl*210.HZ6CoʇRFb4J*7ZGKU 9P[iה]>LU9@w2eo$mH[pⱗ۠su32^AotڮIg/$the7YWpAh=Ond4N,]^%xC.N]RYpX6uu*(&&E=. FNL*ʤV,¼,_%8 <<5~B DPip DM%mj?R3):;~nYoƕVίxy zgD4%un&;fުe+w,fa@kl*1xj zW {3P ߻b_e- +)ߞ%=sUߜ> ǭmPBo\BjOp] mHX<3^DB_4ʝ/t8d4Zh<xo&CKB+EQi2X]tZБ{L9Τ4:a}1\ŗK A"h N{9i{@eS68Svycl r..}$дd _))p]{H>-3HvI3`OִLp LA咃jp:rRČod 9FB!b3~ܨ ُ{v :o@pH K=&?$ :);v!Ā ׀ cλeccIs(}&۞Ώ2mg4ٍ]cMuWŊFэ2ET`=Ӽ*)h4|JjX܆ jԦ3g98>!8U1lڞ=()~Mۍ@VyG[3 4!7PȇDGZ&[2sRr];1~h*JEN'!'RQ\|,[:~c Dzk{w@U7Dv$j+FAr ^gPl;e Nw5s{uM֛2.6OQmD蘊'zC BT0tFXKt"7k"'yY;yGĔ^W_W۝G>:(1j?٦۴ Xz`7uP^v՞@ ;<? ~b4tm"Bm:_ٹ ݅!~Vj &Xa&(1@OZV:X 0)wW=b%VHe6LIuVф0+(ˍIgbòige=lLy!=8L ߊ0zͻxw\X-S/9J1laec yzYI'%v /Ys1ֶsUnT' bc=T][2Җ<ևSʭO i}X?X'vƦ8OίEZCv\ĹPpowܰ,R>wyLJ0hP76P\Ң19G 2) À:{O6O26w*\ f"QwfEYg/7#-L.bܬb-'O-z\bwɀsW~8E&JxHj%`!U>>40 +7J `1iUcG;<ɺ.3;Tv{)GCLfrM"qtW% sVS7cpaBy_2!&ѣ(ﶊz02[Rw"}-A=BDxul]9XB熖j GY\Gvn Zȧ~ZB`sQ?$!+^^_HIw}rڊ$ƥrQ)sZ~;ԛSHFXOg.09&,{ͿoO>iRl$ijkJ5.w䡮ORh} ;b9q+oDtrdZ- |ΉB4 _ ec_eմҨ3\7r,&]ZBrQqK@ ^0HFD;502($#3 >#ڐ &US.QRfq2mZ>`nG(+6} a~碖Ry8xr6mB&/S"JUQPPt o9sa>-4=s OT1 *X?׻IR__4~>jSg q&-Ucd>Tx+׺׾˜+9ͱ=pip D.2KԱL QStZX/mw+p< ίNэrHZrɍx2UaJRg]*äxO3^g| qܽC)G>>S쭇;]r~٫CZp629כdCNcmm86,`ٻ6-mjT_2Hs, m[-8m7'"6~5/? xI7B]h:-ƔxNw?0f _q/}vͳ+Gk{#8*F&Z_nO>cbKlyGo^{X ܽmɤǺ7zˈ۸lٷxZ̃U|wOӿjh5(բ))Tm]%DXL)9HdFBvhԛs[}Y ٟtKvAI -(Uwȁ7k<4 cU |OVO vX4(oyNz1FH6 žٯ5՚:mip kYN2$݌ ~hN?>r4k0A\DOڠ{sj>by29Qxpe-/M GBb{ I@AUXRo/N Iqh [9k21|z1hՠYe`Z]ENstHO<\ޔpJq^F@ZȨr0$zgjvrN7c)ʵ~y͂=SuVdqՀ]6 Nq#7)S,1`yeU᧼Eu>F:R{Ώ OC@KĿ0bGimtP䐱cJ\J=(Ī@.!gx )k@zx})Sra'P{azY8 Mz !!~p|Դگ^ `-#QЮ*Z[Tqcw쯋[Зti8}gضpaJGi2sڋSJqIgUU} lI70X+ 4hnOa`?mY?&aYlt1^#F _kVSv\Èe͌Mұ(L\ ܆"aۡ2z){aM+fokLK˫_E Rjk3B lrȟ ƒ}RAyr` ;yL< V86K#E#*I38&}?d5|Θ8íIZǩǩ+ j0|#YS"X{N}${PlӟTt%(>a<1kk;K%Y}' v:$OvObovِܟ 'hJ&1̟)zOoy ,^!q8F,MQR!=U*P(}~t77yd8Mڶ_ف۱f_$_#ش.L[߰~Ҡ8Pf5ya yєD"B.֢ U3hDp}CNR6bnZЏ4|hCY],~Tb3fʫefr Q(򑅘Cdn⻠eWYYE|IGG~&zP)74 *ŀ"XIWLilx^:|:H$'ϑi'SĢ4\nZ{E֨ _SB6aRva %Lӂf<$!uUń':FxW!D &|KGCrWNnWycJx7䬀S^Yw`]URvgCV=@yZ_T`^Qe2C Kw2#S> gD5tSE_C#i}뉙Ki_ieeL&VU2GmPܬYbS[XD$.LS8 XB`@SՏp >2m^5D oF:f}x4<;>Sq`";# ?OE d*%<&y:ӝqsj֘?4Jn7O-}iu) H hʮJ)\do~y>j#)Жk"~R1cT-QXȥE t%|;-.%ϖF|_aO9M9>N4p}e2| xRL<kʭȣ@^~<_<aa&͈A61>:ihlUљs39dJ6Uu/(F[d*vzvNXQ~ro'x0;.E#|p4IφkoV4 WKc~:;Y9$nϥ}l T W"سI?07N ˊ4X>ɠ#Tou" t1t>Jl(a(I>5w١Ju:68pfTB.PKQTxyl Z](}6M͊ň مJ0̤>p2XBN~:7⩼"}DSuƓq̰8?\tD:Pq 5^~!h$5\a:'r*0(T)u!#8eEn,B sYo%&_#Dڽ"n&~ e*ޖ$WWM۬XXcB#֠ >aavSvruƎlKx`>طj, UWa.q- aI3-כBQʾWW<0dLYړȍ5Hfe'.ι2`=3=EWCwY`yyRD >v4]4cFrRUjC+sRjSv*7f@gc av:|_؊tw0G6]Wɦ]%M6!>h+v|$+ ɦ#6Hb坎bI>,5 -&Bg+K:c('cZG`#Ra%xV&t-zX.ve>΅\ȵl x)Yl"ca!y_( pBQNѼV8B[8TuW͡q_6BSgvygW[.]vcl6a,x?r~w P|* \9[*NpMrl_P-( J4*>9">7yA"8mp%4(3hVǕI(W[?MbDTppaкE=-VT F >oBzv;&dROOq ]P2UB2 V" 76(rSȗrNn"0.H"-eB"۟MY)#)g%~BQdsV.$9Mbh$Mg< zY,T Q_U =ھIoJ>}ҼA^7 зZqKU]!S- ^.]Pg k|p8&8\wS JuwKM2J Tp$3p7sXdC/|2xyU'44 P QY &VmR$љ*:!q3):]%oEqAv(f-$QpW~1 n?%-qO> `\:}e+٨ۜ_2/j4o9p߱59ӏ!p oFk@4w դ*.J^(Ѱ)zjҸPsy"OOQ={Q}mWѐޟ#rK| ֦նT-aĚHWQPNf{֯/nժJ#9sD\*ɊꬃZni bt5Aɹqh26ĄVOa1Ӥz7O-FIB[=>T{a,2s.a#нhhI!C]_x԰V"--\pX(#eaȆӊ|6k_LsUav[ P?L.-TaL2(/2HGx 6vR!?ܐ[дI~ݘ`Rġ}qbިBӅZإ h )V7łyI1fE@P,Vp6y0]^ty7s `m=DCJj>3 e) r:(^y2ց9T=Gn$^LqÀ{7lG,M"ucsD pI}9[MHhpN0Ȫ{NzGe5etҹ"2BAp@HjƟKSڄ\@BRĞIHI/ʉ~W V|.&Қ*Dwwvoy$Ό$FcV8a‚)z+% apx.ybxGp(װqVbvX fB.=vUKUV_?#I앇v6T6 ) +36_W6H㙒P i r͖8k*R`ߎL:VѨ'}V Y{_S'!:9*{7~拊m]X"uPNRv,jVDeON~fzA v(;$չdsF3?v&8nf!ֺcy= qYLֵ&uMB&EYӲ<.GhK7SƆ/a@M*)+szDJD"_)K/ Q w-gUzԓ >p[HͺcqmɺYZ\bezkO ^3ÃWukV7Z +1'^Wq.33zi0BIJZ;÷eݡb,6D^ƹ? fLC ST3aϓF}Ot %^DV㱞32f`BUfH )SQTVޙ儢<0񒼆._k7i+EHC5yj#/ +\͸z!daɊAȷvΧ⿩c\ 4Ac2Ďr]}qA!CBT=!g? 3K11S(gEuCt3Kljap4EsƩ_OAP6햅?=ZXgձFCw3Q$ծNzKn#R] es<-_X 0 w50âRPYlf,J.nLb0uḂx$HRTJϨX97RWxJe`cnb1)Nڅgk79hS&*X>጗{x>_}}2lN:6Nn~!60;%Mx볦~'Dv ZϾ@3mPZxlU pt{d4NJǴmƚt5Oo{ t+vJ,.쌰_SΎO4o#, ,#j!%I׬=S\cU'aWGJ2?U‚ E(P۞歳K>pg^{+,8v:0CpF&Kr.1 u_(ۇN :A1i2Vo+o҅ biX5 tM'C~g*0cavl+MY]Mkp ]QҭcFQ)7WyJl b%(?̿ߟy]M|-f>r<p=q1j[~q8EnS"HD9'8>{*zbgxYCd"[d[>$T?-[O2;q"BC[y.k_͆ |XNzuXg[LXv[pv!YZMM;fvtG|י, |KxY]kȰ0AF}Dz.ot]A<⢿<8Ho1L;k4L}LZhlNLOiu.zqIcϩзHd Z!n2 qPS-vPq'\@Ifo1Pb,8֧Ձۓ+п+l;xuOɜ?ƻ6E+08J#*AG-mmdu?`}أn@u_KŴh2CIBsql(peI3uniif ykJv-1DG aVn0Id=)Y"&-bǀΑb%@xURI/\h+# v !S?C%;bv3 '2)g3QMg*Ah9t)1n %^ 6۟d(ySSKуLhI ğ vBA@G)tJ%0J'rę< X`izŮ{18 8$#yu4McQ`ڨQޢeeu!UN*`` 2 =1c2 pyo)coy GJi#ŝp?`d-8/5|G*ԢTIqw&P*F-w!HӁ&V+Bf/?*[} 2!4,_ 8wFe-XX#e?wZg,4C AP.],4xn(R~gMhC9x[m9_W%m2!u7ʦu5+fjm@ O]~*㢛g{҉;L*JeɜY}9;S)汓ĬL`5E#98.u窠k u VG-ZNE2ٛk|sҚvVާ&Kzo ?q9"Xɇ`'r[Y ?/iF/:, 5)iw$H>8@ɽ#zҏw J--}NY": 5͛Me$j _@/SW5f+t HʢPHNb@^\(&A3t')ġ؇krr$LFg,zn Oh?ܝJ]scAV kzG`~ty60{9B e̖!SED,?)<.S-^ILj~{']Y\w)wf PXwHXǟ8873 v y Smkz2JF蕍9wN=-I"V5ҳK%uH.tU>:lܸcrr. ,CuX37'd= %Ncagw ό=x@yr?Tk9AVԇI w sٙ ^0Lbk+a"Dfzm>{In#|X| D~95|:Z+g*۽BQ~hym93Avys 2~vqHqYpE:O1Wтe'IDS-bx{XHuX/˧x"{w>ZdCo"5Q`$gkXRg[ )W=:"@ ˜W'l v'W|vS鷆h뱣*he_M9H!hODe~K3¿uOZKA XtQޡv[T P`^C?Sa2.yOf^tGyH*y]u8C;)޹(c$z>`XnPf"fU.ǯb5 RtzdA=Oʽ*wͥEbԭQ3Àt;fQC=|. d "!K#ps}VDB\bBk cp3m8#nnƌ .6mfA6ePBW%8R'Xx)3TDuCgcxŠ'= Sͅż30QPR!: LuCۧAעfbZccr:O؎dg $dٞu  rQ"2=y&%:I2P;wC{÷^& 6ftf K,{e.TERs1ԯ2ʮgCq2'dg(Nԍ&%( rs sA#J!+#(8|d63@p颕tMw}=3L5W>G2zcU٧PaҔG]HNqc^e1.#Bک e]2Qڳw6b8fؔ^1w0h=kgZ`1p0~cö2|sCvw2gN&ijlQ=3Ib h9Vfljn@ոdO7S:ɱD6SK <=YZK#4Jq6UK$ڄ&9 ݻ#?x.wz\fPj?{4?iJWBYK=LI,-qItz M=/ K&R_.zmh$=mb)ٽn9fҗNluo`\[=+ 5kO Tb`>qz\6KOV$(u-C;IT^y+-+Ms(-F9)_Niwo|w (BYYC?^A*1¹jSAG>C]@>-XSіp:X[̹EB-q}R3M* j>M\l;;o Ncp fq%j㬗qVZmLosSIenw[0gޠ2ol\f*cv%t4txtJe0 uדzxN<Ug`2pRh~? p7D6L4}e,"Ro01K$;[Y١+m ./+~6x5O[qWDGD:kEpp|CDq_k'^:,[-lnXF@h|8mo1kT)͠I_P*7ђ/s`{duY}Z e,5q#2Idy,uyzdFƦ .BDBS ثS4 IO)%AY-SœW[k+LPZ8c+"[H X v.J]͖"5 °M^'eI[/>wW ?^(*3)8weƂ^'7Iz r{ELUĜةg{xW[3I_/gM>V4?'y4l-8eM(Ʀ1.a\5@=lprʏUx3I5JU㒌 Y3ZT$GcNG˱;q1L  %zoVEz۪GQW|^}aNXdbIRu{CotuvݑC(:@ 063FDVe 8J|3t7ߌ.< "Zt(3 ڻH{oF >?)Ilף= +z=Y,cQZ7.8.K|?&Ȗ|u&f?JVfnb: -BlwgsN/e},WYH?dVKeb raU[e&iÈ328HWIWN=WhCYK9>W=$#X%̎gM{8۞^|EG@y*-\Ң/J F;ҊB -bE l]hhp7XVk,@8sistgi\XHV"} l@F Q*%.€?+}⮧й9pKaF Wؔ" rkxxw$ՉGM~P4{u]*iZu~|qN\5p@uZ`::ƙllFeK(g0_EtqUC]7|(.أ`ט \ Fn#prhAK!P F4{?,b_zp-?jv={ь˰Woe-z[`5у0l`B;JZ37V,cB@TY]}NX6VMPV%lۜ )lV}" ā>UZ+pst{*#Ab 9 NQ4%Jv?8r~/f&o ,5.<:Ŭ#Yu,BiRch6oB&C@jV;e7s"Z6P7qTpsG2ͨ_Spk̡{6HmTf=x2f9-%eB{l6gc 'Ʊhj,lT*̓U nˬFB0,9||$酞V k^x 7Ѻ2ЫѹTppL~3fn0S[G92uj$tk7f/)h[V:|N"vq9F@1Eq_ dzd,BkXuȾ$Z *o^cL EH|k^p*ϞyW#:}b׳y5~fF ( dkyZڮ4ot?!XUr"XH'ta3MJÝ Y,铘wr(Cv!GGt b?Pu Zoc/PL Tb_o P]O!kq!R[slbptT~X %ܼ%¤NUy**G WH *uYL*%4KaFRL~QHeKTūր1y6 nؽ߃>~ߖ+8cŬP(<-HFjiqKR'cD+hXe$4acFZDtKb*Q/ ib!jR7GA ujE;X؅ת)H9#hzmJg`R'"zc/5 j?s46PƬ?H ^θ'_n`ۚc˞յ{=sQ"$~Ao;8 ѣ{b7J޽ī5g>x߮n_f&NGRWG]L;bS'ld/? (Gxu^ AAy%(; yV̀*YS30V$oO;&@ݢ9㔰A60^P=$X<%"Ev1ޝP0)hfp'~'p`Gc #?N  qg v|kp;A=r+0T)bTťg9uM"8@pP1έU5xJ\ Ֆ uVܟ'rLa(\,3`61:XvTZ:ɭȆF&|n=O `4z9ƹ߶ pX-$&zob*riZV]-%vWB~- (#^4g eC>&rFBp6ğW69oFc|X!,]ZrB1`!$蘌}Je;`}DV94,+_H#;ψ_&d~:¼ y 6MϦL3B9!sM6G E9Mekpe F.,uD?jOmҨ/L0%=Z!"T05;)^zXډT4LJN0sWH5MBoIe {]6̦?5VJgMhn@FQ4E\oh4.cuq@b, z?%(~|YK.q;o\e#1[ yʪ4ppAj|G5ȞtdU_mE\,kq[Aٹg[gjPzL'V-EZWFMy),dAږzЬ*7 nveלYiN-]fڦJy(F*5Պ6VC=!Eł&vy;LR}ѐʸByF4_i'G>Ji(&@w("6SBÃonHft[˰\-WźN\D89]%BK.g!+~b@5g2[EZ5H߳T3Kp^ X#U ĕ=E@d}/ 4Z i߹_N"M;:E͊b'-CN9^mqLlws,=5o ?:lI峗3\>~M"EUbuG6rU$uVX!{y!{5 9i}NU># f 0U!Ǖ[m 2>1DÊgJz- ÛMk4}+-$ !/gJ^T G8ۗ7uCmϭ,NϪo;Qjb }Dh!ChZ<=?̳ 07OuǛGN}< qג^f2n!}by7.D/w?$^;:9vxY scۺ֗#wrw\Ay uMVsޢsv*A@W/pO4hBBP4E/P,~ٛv&mb8{JQmb(`#G}to!@oLXX)j7HL8H8$D+:@?x" _fw -0!AblWiKE_os,ZqDϫ^dѴ\A8KAVsQ-N]vLSBFOKb PkjcZ+wr* $+9`b/)qzi s޴9E•~"Ua{/w|qe7D{/2}܏I#x~l`L \;u\;Q$U7{r"΃t_tߞ&~#GЖ$Qc4Τ1{N>lnAHzNw]r+tX,NnMi Po+7p8Gk&82uuF{Qvxn -."r;b,z1͍D&*\ D7OrlZ|%`#ً2%[B$¼33KL^Л&MeݫBIq+Lzf_X"=ƽkinjEӨm5sa;ED:?epPǙk&&,Deݮ>4m[Σ65jRey&mIHT8j07W\Pq2-~ ~QM­LJCaM3}UZ;"`@;f %/ +/-ֽ2LS0OoUw18K69 QsW/6T5^JyWnJ&.5|WFEF3βɒ`Nрs,{@q#9bz˚?}Z/Tta5@Ȅ*рAƽh(gA@87}[Ԇn[zw׬ڙ,NPnjB{wo}lpHngt]zQ7diN1sFѥQ #=r W0wcSɔ-~y#x(('I#` =ȴW[dWURK.bcu|u)Ru\&ýGZġ*x1оd9 T0KoT=Ymhx`3+֬A nu׳H ,2"~0Cw0|n،MX6V0&٦%m>{wv EPg*6&#.##A6F}9+?Ҙ J@iFU`漫R&L6ɮ1U(OW͉IA+U.%Z@hus5€l`GZpcpqYh@zh! _Sє 9%-, a"w $N C ϔSif#!ѳd9R,Q!%zRTQwSK@Gɬ j.Nmp0Mq$F/-Nÿf?P0LOm #6F`TW] dU˃;2-'بO0+Td>NaW!B& [⸋Cz_ߪ( Xw6fҫ9(vvj3 i /sGkW5}=~<_ P$wҠhTGuz~jET|X'1=KSHIEK*ܾbCO +w DT(pW'髢;拓jcn}d~yJ2("p#0c!Lކ\xdĞ6e9Ï;A xM䀛r!qyHGtD:=E |6F`v  _wߚ*q5ޙi"x iWbx {EUf#NɹVӎ!iI([@4v`R#c@E'Aɫ-=E~Oij`Hr''A (q>aQR9bӢQ -Q8;$Qh`>\cHpp7O0[Mm:"!HstdtWFBTqڪh<%g.Oę-r=#Ad|?X#nB>Iƨ: iwtYxJ׻)Z@yo>]XmiB(22 ]#[uRe ɾ]%B^k P9 \LM5I..5*oWY^ՕGd%4P"hG B_tY ?0QN&mryj+  "NhxrZU,uG*+PJo}Rnء_0}-m8TJ*+C@ऋ3P!pKu. CU?i X[eBb'B 9[^|ovϚФ6TXx76;t,R}74\Ny8rFB&Q\c9X/1S~ &۲v*z2qyIIdayE#`7/(7- R9=fm(`d3-R*4bh6H7IŒJ*|Lyo:xJ2"=s)\Xp @Ғh\ˠ#X1<3eJ8C*ZbN>V,sȲd\2g 0ŭd]Hd[>qӮ >#p'|T6,V%N׾{h#AY`ж0('z=LH˞rOuw>Ru )y782lnII2s

ea >^LJoou']vÃbY]NtL` TA󣚐UiEgsd9)$Tmxo4m/jCUKd;L ʹ 94*<1]炯l)@$W˛=Sz7pvh&.prZ,zP`ȅ.踎O7#e9k-ጧ(Se㻑 Vѧthr\q#Pq~IE4L#JX-*OG6ÍϞ=>,c3W "^,i+ fQRo:-y@^Nw?X9;jxkgJ.ݨpdL$GbY=1f,mjc4+J2骊Yj=h}Wj`Ҧ!a,y1o+i+?Ibr+c౛i@bi gL@V [. _m%[PP$M+: &xtdˡa+qf}MWax QM&Kh`(4y[e uf-LE}lAq{)U&/ >/gpʧvk7m#P4~"]ތA{ae5zz7HЅDd{eŹS6b&Y{7z +2х](VJ=xnpF'H\+-H4*DPKrYh5^dP;˝Bu=3P+pW|%hE|:U!o>|rBYȜ4QYL>36 CF(Ox 8xpn~8sNDϿ;~QT[H2%npxC:׾زj@n3jӃ(ڭNh}W!Yt x9 nFi^e{ M5b/i&cVl v&׸P,b1Y3";UOjG۸.5*HVs^+ "?O0z&H#x3:Oų!ѕdM`K&wigC(Rn[$FZGh=/?D!7-NHƓ^5˺a:@' T,'?PC d ˫Yy*"Ӥ @:,G4*Ϲc A`GGD9ᔍI_~o-A$Ӳ#=2A.f^]!ck z(Ns0>{JL9y`]Š~N vzg˜e8(iaIZ+(#6DOEl8 [oY.(Ӓ (†QJ Sy]\o9W;Zɂv*Z\Y,AVݷP!~Wf ))M#nk?"SYU߱Vo<u! ,rfi>OMX#K''{͠tCY g S7|9c@yѰzJN?=8N;ڒiWtkމMƟ "ȋ6Ka.q! ƍjQ>*5IqmA7}rtPi'ǎ  95.S&x;Pu{5 LfiN=bW#Ns<0d," gv+J&<2t=18=lQ*xѡv oBhܭo _u-G{5~r$ CSeZGG7>:b|(0;ӇoFfP`ƢE/!r8c&jhh1JN,鲶尞IIi55ok+kv8insn<+ٮ F59,|хQtE #nSKp3+k+tr"^#6F)x*U?8?0} j/w]6V-D;|qOZ`i\23}KX?Go"7|?J.W7Ի*MEsOGGKf/0Eu6@Ty]KՒ+MLFsuB4N×O8j=9k @ju͓ӔKk]k]< DpEk8ttHAo|{Vѥɒ+ZxZ<.8?Rz"wr Hݧ[?}5 CMעژKkH*w_'J20U/%5.[$b #{y e2Nx+ p{Y ~: v0H:FeCuxY?`M_~7\ٞA{>A].HtC?%i{qP1=Hif}@C-`cj%Ѧo{}UŲ] J|;AN̸, OJ]o}uPr '1dMRi6(".-+N*ZN<#'zu$Ejreq+{/N hnW 8ds:6Q|ы%Hҕ\%7>)ek5bN̶!t[HFr.Z,HO1 KvuzNZ_u{fYcfpwtXA7?ߝqgpш$QRB{Y՚ړN?S.(Yn"H0vza*$yxViĭHPScL@)-Ba2=6i ŌҽsېPfp@Oӫd`ڷ8" XDMr|X:t kr3"T ˹=zj8{ox6-cDԂ`_`&행ln9Uġ/dK4=ϗUf*O:ޤPgpD,ua5`X˪uAU~BGW A'V{p9@~)=!K:nqTxH׃cGy 2G`ebќ5lj|LYMF|5bwos8_=~pUdkXT*+FyEV1T 4:qgkGWl)' RAA*)U =_YV[ϸ tF6Ԇy6餿㊖Ij6_eh;Ò %~KVis>]6szp׬5Onf!fq RF ݤ C\&r3e/WP({mӴ`u[|Df{F0=,q.p4V4xx0nR9p&~Zh~Y%z[n0}y7J/RB ;HL&̣k=_bK.2؃MTF uSd`v _wK4UHdzT)Ji0ԩث0W`,Ƞ4i|]8.`THIڪx [>3HMk;)I?Ɨ> 01w WQ)H -A(m+|2*#2[ V ûd>h I&D+I;װȧc|e߶4m0X\z&T tZ22}FhBOQ#Rȕ.fr#d2JC]:DQD@) iAN^9Md-3rBrnJ<r=⫂PR^^Wy߹}C#x.quYϴ;ʦ2@Ap0r%YBf"ܢEU@3{> %Kl؜Z?D=>S(H^\o 'wAڶ O#2t)rW6z|v)O}hK^0J, g$a--W>cM \{9,Pڮϖe3ډ]6' RwGa&+nCE/GҴPh8B^S9cB;(]+Tmy >dL"ʵ_´ġhyXNO \xnƃQHI|$pҲGt{~KmymI8%6utA3PIHl5nw}`s&OYڎ<^rے|"ՖL v,ql-yFZ>3*X֌7wUhn f#K_ fdq9 5b<`zkCJ%HMEWlr(SX { 9TozY}Q6at=+Q4X躘9[+Z 52BB$4B؈jݭfCA-qg+Xֲ:sˣbP{n,o!𱧄zޚZܥK!_HMU q*}vG˹''0Q\~ZQI߂nr ZrQ+}A°=쭧58؏si5`FK4є _aqÚ W1b`7C!ld H%xrcByM =(hRZ!n `R4D;]! ]ӌՉk cLW!:a Q%qIkldYn @Ƹ(wW@b[_{nIM5(r%s\AIbPϒ*MrW*:Aė6\^*fy00uֱ0 / IR06sG)[U,NC%ƒm9 .֯!zqk#&AjKu+=VTIcӣb7^rq-:rx-SL&2gb7ʙe ֠0|FU$t cMU9;>5/X7C?W^(8}g8IFEb@o/?b{덉v=LBN絉O[^5lymDxBWgxsWbnG,dzJd<#]Qy8N&8)0znW}Ʋ'SrgWce+Zrpb' rAr(ҳ[GY>2M/6&;Ͻ&&RAoqmޠ,?9)xev@#H g bPj74悴APsf 9G#~ ~ Xדo,-g#ݭ.~C;s)T%Og%xܴyn ;B yQ!HxZzy] U¡Im7 MC֭`2fz8O{ֈh5K$Y9XBb* G }ACh:_C Q,$"5(‡Aq.T/7A nc0ZqIH2JfPt뻶,ao4OSz&O[M <>ds^xVCT 2eIwxQ:C{p m9^S~0z yfi; 8T0:@C6ͮVjmEv9RԘO;Ɖّe;xԪm Į$UTQjC@/B -浟l( (3p 4wEe0e:?DCH:.;]_ bu{柕qk[77#P{ xA}]Cc[[ K٤L\m a'*jIAϾ́Z׋ܴ&Djv_*8yY0rÚYY5CIZHK}=8I(9ҵڬݽk ұ.-u.9U{P(6̬j1;/v^js~AKgI#lZ[¢P8EǶ;πu{qUL?tC00kWDiu>OJ'pMϬ{;z{GG-rʎӨkq9٩fJ2Bw^wn$HV+́ 壈+=cO@w8PW M3sms#y;X}J^oՆ/FAҮ.@<9^ЬHT[hŽ,a "e7* 2~enM'{XN0w0Wnywh=p<Fc6'^0{AS3<fD z8͓jeݘ;)ev{dM7\f :U?Y-;taryEJroVǓ̝6e[pl u'XܛB^g'JJ7QA1_Υ+{6|5ǧ^n(?Pyhւ?.M"6viwW ]'^x7To>I0nrE^o#t0M{j'E,ٺ~ @wpw'Yb,=g>]b2mow$RDf쏈U/}"7|zw,%frz3SKECDդSVG2>ON.Nfd[IЏj>'LGcK&u,nk^8=úkڂ4-Hjް]EIABSއmw8s*.gF3#qr -,H$UVR#8V1R<{; laO^j5Q Ny|A./v6+D!čTڬDgg8Bnp.+@ɼ ZCWy8Y#Mg/b(IHtZ6uiwY"z$׹Iz Pl/ab8D>R)Dd,441?J a1ϴcmBw\2mEޱ v4*V3RJ(9cʁEZE@M#"rR6 ?ٟV"E}}mYhw}SAʿh  K㨅\6+c'W!XNP#ޢʀcD*GΟ6JR>o\ʱfVbu0.jpzIOnA((#n"PdKRK3Y6iFUj_hm)I!nS9 zCzm^+K5 QI sǾV H(DE؜/r:W,MѧFWz3%\99jR-zhNKh}K6PVQ Sm-*UFBGJ ~"PvO9L!XZHc%)YCdS _]ɿ +* p.? dzgs*&igI{o*@I3 |lElch>}_aK^g(F-RH q1XY9v֎qPqY*EDsM{XE,h 4/)&ZkaX: 7@dTpk-6ҭ݌K׫r.Ed  &[Q &x!iI'QRNأg"U*X덈@΢m%*&G ikM|̦DYP4/W4V>\'^mJO]-Zzp X !!;D$I]N_IrQL E8}S풁X'D=+94BxBhṦpl3LxmņJ#To]ųS&O٧曂fw e!n^T <@RH03:cAO]FΑh,Rmd(P%KGOnW`]c7==% ]{SFjH}*V\m[<"Qt]ilcǁc4$Kc[*A[&l "KC7&Jfd3'pDqlr}0e|)-B`! kpR}QBH4+Z z;3_p8x;5ُr[ঊjGZNhr6b5y;{BkcMɽ:M 6~ʽy!xf5ujJd)uC? ?wv:[~㝮?HdZ ꖅtܮj{gԓ10_qtM_b~tFilH(u[bN?@T1D}A`؟͕/Ư$GDG RWݷPɝ{u;|:L^aKOǪKWv=KCC'6)Nkv  -ɺa]XKt@Sgt% dd $:$䌖y"pu5xlԮD3hodY5,W|vBa!}ض~-Uw#E |dE)&Mk^ȅhg3 0V!C:WўeJqgRA£:b;amYv$(n'8CVw.*9?' g&%LrڡmF;F&00Vw'6@8V$%'> dMHTt [춥(#JLeO\l2&t'7's2K| hr$hIU rayG$:}YɅQ ͭsJP[5A^})Y2 Ҏ'9v~Yܠp0y;)* -5"%̔h/k{W4pR5 NJ!  _)\Ջ\țn5arǖ"B*W#OMڿ@{FL:u4= +hl˙hz~~'/ERTmP_0")OyKzNŎT߹$QxݰV{M2F߻AnN]d/+EqN-Sb+mlurڿLbnŮYM\Ȏ7VQ JT[|fq|qGxX]-s>bM{wlSWţNKurT(>OB^J?ߐLSCEuNai)־*D52Sh Cȴ@֪ ֟x6]>e% /xzJyNjꑽx);* DcUۅU-6xdFS@&LV*'+r/|{>XZ?FRxt'Ayed!JJw #E!߇Кǀ+ d4lyA-۩M.ɦVen}; m4|Z]CZ1z>K. BV!H,Œn-k ")Fi1#!X'2&nG8[;3Jv )z'7,:PRS2sZP`=5oWNX& t{|'/guKsMr<{de✮xM?v_{$B*Qxg޵'ϢOKr$? @U.۬ynp1;"T'AX jYff B{za®[X['&4Czp&ѽ3>~M:!ԃ)(sSpQ%9k\8~?"ᆯ^Zj,J̄Cg]5jua9_&Jg5;p wW6VyjGF܋ 9qin'uJ+|1 Fyf`&I.+]$ySle}Yh{Ə65Y?-Q31- EYC!mNÄ5(@rBl&"$-PnVXYY͗M=03xWPIƠڳ9ҫhͯ~%O57 iȩAgr:ahnGciE;u?F[nj.A#'Kz^G/_F/œZGJ͌ȃ[ P>e͗ Q_MbYE ~S2cG*dÛrL'n(#Ffa 7 6Ò"NDB5ɼ|W1L@,uKKGHS2l%oWM'p<4`Cj"5V2͟<RwyٜPw6,[x|u%[!&$XP4+,+}vgN$θ"vO$:Dlb1vX=s=dÃ:rROA?uJU.mwL:m)Eң~oYt$}x1սs)].ҝM5tґ#%"{Y?p+ !ƍ˾(~5/U72 _6Wڄ5z(2 k2K52ԕ}ZeMz3:>!`Sy^wwdbI}zQ^9 :1RRw3?NvdCr8\h֦\n54  JK\cFx˲m֠`EHZޣbQJ^S)XEg_#Gw rHWsEǃdw%b\>l+֚b$ ti1 yٕ%=DPc}$M}ŀvٷ# Eχm9cU)e߫HgG^;V_S:ǰi;oH߬ҹ4i &M%Dwؐs pMćI9|TB\Di&΍/8fEiݗ w _ lB=a <;ڶºHdŨOA0}F@<~-Y58(7Vȫ-ǫQR!IRvfS@ L.t؅ss/e"geA `VNNncsAtOJjZ+{ĜfUO4vyAvn|Fi־|l$dE8f+"_t`_6F +3 XeWuv:ʐi([%-m-[C@Pm55%Q9iL}-xtdr!))Z"rԏu_8uw;̊FST*E#qho˫m;[w8R`%G_aչw읐K rGx'w Ei}S35N[Q$F CϏ2G_י|{xu=14!\[ iDŢ&utB5cCZNԵ9Am`;jZ75mO~$iUHd3w|@ Xզhy8]NH͛\ ڀ"ʮ!vHl dn2p(R[-e}@*nŦHyN0zkĹgi뀷{L;rVxeLu"B2h63{E[)< Ʈ*Mx}y]-ޘQ!y27:D>ƥqGtj.&0=~\[߹[Æž&dU{M 0iEcfo~ <(*D0-L! Pw9apM5 p #Fa)T [{(*"R+ #yYFěձ[fE s1;wB[zif"XX,>˯Nrb"Wjf[l-cJP˚'0doM HMpD)`S'¨I"x,+9AB  i9GeR7wT&Koq4^֩6 [\Cm u>0Pa*lD{&Ql]2T)mG&#?hxn J*[鐝t9c$!>/pJ|F 6.zbC37a7Wh&<O4-E)׀l KAOYO1$v"]H<)izys'b*TUɰ!*,hiyW,~|bwno9,Pg!R\Fit*9VrX$A6!P$]vpe M%Ʃaސ;<m>)s|#~]Ww}ʸɏT?tRE-'jEa?3ڸ>6z _hؖ*V=6#B"Eީ2X5<: {N䐈L~y$?=f@ stcOXz~>7^uYtRU-F?#mΟHk?`(Ig82+O`Gs1|K ߀TfId/^K6ڰy>X:gvG|^OhQf"&/ s۰qO%{<@&I|NJjbHkmh6A%fs %e{b52>{bSCNdXuoRfNC{rBjpzɇEi#wVDŠ|R5%'WI݃$O\l㊏afdܶлIY +h> k(N:IfaJ܀Fq: XUCwA}07f$Qͻ5 y NE.QVY##'W8R1_Tq4 fT\;Osh%6 &!$8, ȌIʫJDi1vI~z+MHaq12f7N5i:[.;Y qcrH\ܛrEv>os}d(Ad,vl>[f{RͲ sҏnKMFpNiIzsI*/HYPM1WWyt,9>YqץG_)Sv60gˍ7z̠d|D70Tgו^z !?ROMOl7&!Y gG"5(@IԽN?̈́1@A ˋBa YZ