slurm_24_11-plugins-24.11.5-150300.7.8.1<>, oh6>p9|[.io'5|ֱ0ӊ Eo4YʼnUIJaكhcQ(%EoiXT{%R} :w+YД9`o q~ciήhZ9N( dĈ5v-9z޿t̷j<#Z3gI2>N#AY^B7@= >ST1@K kQ2$D8S]"+)AFmpM>D?d + S   BZ`hSS ZS S LS S SLSSS  -!D-%-&<&@&N(&O8&X9(:2vB\F]G]SH_ SI`lSX`Y`Za$[ad\aS]c4S^ibicjdkekfklk uk4SvlQwxSxSyzXhlrCslurm_24_11-plugins24.11.5150300.7.8.1SLURM plugins (loadable shared objects)This package contains the SLURM plugins (loadable shared objects)h6>s390zl34SUSE Linux Enterprise 15SUSE LLC SUSE-GPL-2.0-with-openssl-exceptionhttps://www.suse.com/Productivity/Clustering/Computinghttps://www.schedmd.comlinuxs390x+ Y(`8pP9888XHX(`ڠ88ih m '8PHhiii8(zzzXIzI8%f((5'(8'k''H(X88(hL8nx 90(`YHYx']x@AAh6h6h6h6(h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6(h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'h6'8229df484a3842a477b8b4acc414874daa6267f1577fc45c380c2f0f724fcfd49703a958670d36208d837402abcbd10775ad3eee0f2ce830f21fcd789b44aa388a173efd69852cc03cdbda2ed63bdf2ecfaac7eac5ca13681cbe145f8a394f8b3b360ec75b529477d37b15890342e1e856a867ecd79e961c83407bd7a7a6d90c8068e0d3a33a6486b63d80caaee6084db8721c117057eb87729bd132710505deb35e2b001308dcbf0a7b9ba9db129b239b4f4857fe2ee23ba62808f7557582b2c16dce3fca87c3c40c45425dc49e2576ff98f8cbffd3b22c0faad6d6b086fa5b642cd1f68bf46e18b937391d67942b336ca5bf8f3d8c51b42eb4c08af68f81d34aad51f4fe36d3144d3378fca5e02bc8cb56b0cb35b95c17f27cd81ae5fc8e7c8f2537a817364f89f8608386ff7c2a87091b511e8eb4fd9b7c0f4eee6dca6cbd16bcc1a70cf6b07d24451d8eb8a83198ca5a3de34a51fcc858e161c593632162f311f468e0c2fba199d9c2595febc2406b925ad212d0951475eabe56b85664dc18ef5c77d0a7dfe2a1e1f3ccea3e26efa7c8ce843adce8811657d7327d571d019cfc56118f521283bd07d9bcca78358833b9b830d645a5d1ac4fcd983513cef1cb0bb7745d5a76fc7a306f1103ddd0cb5bf542764920ab8c34cea8e3dba571ba6f325f6ddcbbe1de14079ffbc7a89cb27f638d6907f82b53bc4bfe616118678a09947530bfa561ee1c54b2fe2ac73547c54cdd43bde55007d4d0289db6ae3b3e6409b2d39e4053de97bd32900def330a0a283efd1c13d36a2a733f1f28b70e374c3e32baf3e74ed2b57b6dc870aa17f891dbf362c0eb31b13e66b4f04cf06aab9420e1940a7ce631c08dc846289216b7572695386b07c278deece6324aa2925020b4c87e5ae41ae534edff05439e4f086dad718dbcdd57db8808a300b28512545247d1271c71226e1286636e7d84fe4a0abc0b98920a9906c028bafec0edea0781babb5e2ac447548c01b6a069f1f9172e8b1d98dd26a055a56ad6816b5b2232df92ae8c4bee944d1375afeae6f49f5a765b53e96d2e9f280fed0060bb4c92508ae2c045bf18664fb6fbbe7106d6bbb7e0ac5e3e55eb04d95c3649a1b30184605ac7b1df95202a8d189396312f4bfa798e85a0625716eb546f11b00ad609aeaa204cf13858d581dd9b51b5431d08b1d544b888e190cc12dbd926c9a5127348ea6c75c476b1b34ebbfa2c59b30fbf4c9fb21262be2e64fbe23ab244633c0658328278ba2036be7a3b58c49f343457f26367b8d38ac6e1a81a6f4f75fc0db21466d915fa261d84726d48dc376984a93f53dd2efce7ef984b37269177a7718f321115c32fab6528e0e01bbdc08d906a7138e0c40a4c517ee5c7e95beb6305441416187e0cf697c3f4f1c4cd721f542cbe610d5c01dc843edf71fbdc28a5497e050acdbf1367b7cde42cfa500b3eef5ec70af4d6645d3137dc2cf2ae436f5c2e948c429c2e97bfea241ac84d77bc9fb99a12710ddbf9985e74feb9633acb86d3bd437631eca4a05f2e7090dc5f12e07c703c2c20df1df5aeaef0eda0016ef3bf8370284cdc919a72720f971610e6148de434d00891dbbbf4fcca8cb48b1aad4ee9cff5fedf064a430df5567fbfe45a483dc9ac010eeab160452e9be2ca9043368894f40aa8fdec14056a8d4ae34375f969ad11d7613b8d2be514692877051eaeda8911058671a3400d52bc47015ca4715a3b9d20a1502f192492d5a88d762f43cc4d4db7aa3a39f6dadcf0b848a164130060e9091d2d5f4f796103c95d938d304b38151d2526ee1694b6855494884c172f4c698947f7ad0cfb879a2c3f551779ffcc694a6d67b57edff926276795b8679983dff1d624a82786cd35122a1eafaba9941e7c1a9b67c16519833c11b9893920f4438d5349540c91b5ed6b7cd3f8d9dfdcaba21ea505a2dfb8444d70e308c672600250ea8212d0f87f4788f2dd15d5597455fbc9a450923071a9ec6fce70e2013adf9d5536ba4c2c23708c47a6e9dd8b93188f9d8d608220311d6c7234848f6d1454cc3fdbac9f89ea376bb554127160c24a38d7e3142b91f380b36b203c37de8d8ce4011cd03295c4c22188120a5de2494491ee315ff9933c56c7a6098d32933cb25c7ba0408d12e7cf49f6feeaf533557f682bbd191cab1535fca1fd834315b71d43a1f2fe197abf0ae587d2b5074d3d636a409c0e783cb8cf907bde3aec0f6ecc4623e3c1181b0b49d1e93d8cfb75dd331e7aae3db1c5e684981e1390a2fcc1737510e8049e4a30e9000969beed1ad7ed0f3596276525cdf789742a5a922756d80acfc75656afeb777afed9a079b59a094e2461fc896e12276b43cc3f7d5d7afb0c6c73bca052ab929db83b261b78c48c8883d02ad9dc9f84d73f1636238ab4dfc722c85c4b1f0b552979d2a3374fbb697815d30c84fec8a7b0b6572aa387d201b2f2bfd127b876b442a8240aefa26b8b8abc7947c2272a081affc669da8090be530e913163fe1a6936641656da889d605249c9b708670b91838cbfb60463581bc75bd50bc83eb0ba56e01dd0f00a269e725e96e847245e217a0ef7287d3abe8e846a1c68da9b8af4a6525a63acd36b78922a2659d48d625459e2db8ef109865796c271d8f14406006721e46c5bc5d6465ecb1aa3cfffc4245fd1d5d90c629877d881fc0c761b4226a2c338e4399c0db4d8a2a2f88fa6ecba1d73cc10162c965f8f28bd376614696042ccb3acc625fc82212dafa28b9008a6015123f9e518e59ca04063dc2dd65942b86e10eda905433a32b510fddd1d73696843c17c36e712c9a24bcdf343f5153d849170ef9696128eef6e3afb8bd7e23e1f19d6f00df69b1f9ee6f5419f51b2799c81bcde3d5f9bdc3147d8f5fcca012e219e1381ff3da45800774e5973f4172607c6215f5330514885192424d04794185c9a6bf7830041eb908f3b083c1c58aa3d9c291660832b20a4191b472f81aecf1087e7c57a0b0f3deebc678414b8061f1c4b147795c9dc04e684ffd6b910b8893f865a0f4d0c13c8f13bd4d440b2470f3b0cd9733f87e5e656d5d30322ed1e67c8e1110ad8ef087a7ab98fadb2bb696727deadfb267e42061d628cd551da2e60c489a5df97224b2bed97476f32de72e021932b896912f54d69e20df18c655f1f1cc485cb73cccd5d6179edf3becf46a1d34362c6afb9a38bca2a72cff88c40c21b1955d1b4ec47034aec2c49e28ba7d09836e45968bb8cf3dd07ebf3af7171048a0ed502f1f8dfad77d24284750d1ca24176779160f93614e41ea0074b0c995f5b64f9450521427fadaaa9e75c569939f20f6b7eea8b18b21c9fc65a50bdf62e99e2e8d481901bd7cf77dfc180f6d82b1f5ff90232f7031849cd6cf70d537de500d81a8fb88d2de0389ccd6bc176da9cc1f14c9393012378d3902c72c80aac3a9ced2e7bb0b0e03376bb851944f99ffdfa6624ce535f67c3234da60482f90502d59270e7a43eb93c3a602edbabd7f0ad4b8d404c843d22ece21f2c7a8612ca55ca528e789f83f0a63cbd2c72ba5c9a91f811eec608785924c5f8bbee9874eeaaa5932bff191be100c852e301e06a299bb8b4ddf201b87dmpi_pmix_v3.sorootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootslurm_24_11-24.11.5-150300.7.8.1.src.rpmconfig(slurm_24_11-plugins)libslurm_pmi.so()(64bit)libslurmfull.so()(64bit)slurm-pluginsslurm_24_11-pluginsslurm_24_11-plugins(s390-64)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    config(slurm_24_11-plugins)libc.so.6()(64bit)libc.so.6(GLIBC_2.10)(64bit)libc.so.6(GLIBC_2.14)(64bit)libc.so.6(GLIBC_2.17)(64bit)libc.so.6(GLIBC_2.2)(64bit)libc.so.6(GLIBC_2.2.4)(64bit)libc.so.6(GLIBC_2.27)(64bit)libc.so.6(GLIBC_2.3)(64bit)libc.so.6(GLIBC_2.3.2)(64bit)libc.so.6(GLIBC_2.3.4)(64bit)libc.so.6(GLIBC_2.4)(64bit)libc.so.6(GLIBC_2.7)(64bit)libc.so.6(GLIBC_2.8)(64bit)libc.so.6(GLIBC_2.9)(64bit)libcurl.so.4()(64bit)libdbus-1.so.3()(64bit)libdbus-1.so.3(LIBDBUS_1_3)(64bit)libdl.so.2()(64bit)libdl.so.2(GLIBC_2.2)(64bit)libhwloc.so.15()(64bit)libibmad.so.5()(64bit)libibmad.so.5(IBMAD_1.3)(64bit)libjson-c.so.3()(64bit)liblua5.3.so.5()(64bit)libm.so.6()(64bit)libm.so.6(GLIBC_2.2)(64bit)libm.so.6(GLIBC_2.29)(64bit)libm.so.6(GLIBC_2.4)(64bit)libpmix2libpthread.so.0()(64bit)libpthread.so.0(GLIBC_2.2)(64bit)libpthread.so.0(GLIBC_2.3.2)(64bit)libresolv.so.2()(64bit)libresolv.so.2(GLIBC_2.2)(64bit)libresolv.so.2(GLIBC_2.9)(64bit)librt.so.1()(64bit)librt.so.1(GLIBC_2.3.3)(64bit)libyaml-0.so.2()(64bit)pmixrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)slurm_24_11-config24.11.5-150300.7.8.13.0.4-14.6.0-14.0-15.2-124.11.5slurm-plugins4.14.3h4Wh 'gggF@g@g{g$g@g f_fg@e@e)eL@ehy@ee@e[J@eH@e'e;dQd dZ5d=4d&@dd@d'@c>@c`c@ccRcIO@c.@c)@bb?b@ba@b@b@bzSbu boa@aa{@amaa]aSaD@a6a0``f@``Q@`4@`@_I@_I@_T___ _F@__c^א^Ǿ^^}^d@^_@^Y^W@^W@^V]^M#@^E:@^B@^:@^.^*@^*@^)^[^@^ @] @]@]]B]]](]@]x]W@]+@](v@]'$]#0@]#0@] @] @] @\v{\T4\R@\R@\I\U@\[@[@[@[@[[[.[r@[b@[`O@[`O@[\Z[E@[{@Z؄ZЛZJ@ZJ@ZZ@ZZZo Zo Z_:Z!D@ZY@Yp@Y˒Y@Ycl@Y-^Y]XDX@XBXXXk@XAb@X>@X43@Xx@X@X@V5UL@TVTVeich@suse.comcgoll@suse.combadshah400@gmail.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comcgoll@suse.comcgoll@suse.comeich@suse.comcgoll@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comcgoll@suse.comeich@suse.comcgoll@suse.comeich@suse.comcgoll@suse.comeich@suse.comcgoll@suse.comcgoll@suse.comcgoll@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comcgoll@suse.comeich@suse.comeich@suse.comeich@suse.combwiedemann@suse.comeich@suse.comcgoll@suse.comeich@suse.comcgoll@suse.comeich@suse.comcgoll@suse.comcgoll@suse.comcgoll@suse.comcgoll@suse.comeich@suse.comcgoll@suse.comcgoll@suse.comcgoll@suse.comcgoll@suse.comeich@suse.comcgoll@suse.comcgoll@suse.comcgoll@suse.comeich@suse.comcgoll@suse.comcgoll@suse.comaguerrero@suse.comeich@suse.comeich@suse.comaguerrero@suse.comaguerrero@suse.comeich@suse.comaguerrero@suse.comfbui@suse.comaguerrero@suse.comeich@suse.comeich@suse.comcgoll@suse.comeich@suse.comcgoll@suse.comeich@suse.comcgoll@suse.comeich@suse.comkasimir_@outlook.decgoll@suse.comeich@suse.comeich@suse.comeich@suse.comcgoll@suse.comcgoll@suse.comeich@suse.comeich@suse.comdimstar@opensuse.orgcgoll@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comcgoll@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comcgoll@suse.comcgoll@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comcgoll@suse.comeich@suse.comeich@suse.comeich@suse.comcgoll@suse.comcgoll@suse.comcgoll@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comcgoll@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comcgoll@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comcgoll@suse.comcgoll@suse.comeich@suse.comcgoll@suse.comjjolly@suse.comcgoll@suse.comcgoll@suse.comeich@suse.comeich@suse.comjengelh@inai.dejjolly@suse.comjjolly@suse.comjjolly@suse.comeich@suse.comeich@suse.comeich@suse.comjengelh@inai.deeich@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comeich@suse.comscorot@free.frscorot@free.frscorot@free.frscorot@free.fr- Update to version 24.11.5 * Fix security issue where a coordinator could add a user with elevated privileges (CVE-2025-43904, bsc#1243666). * Return error to `scontrol` reboot on bad nodelists. * `slurmrestd` - Report an error when QOS resolution fails for v0.0.40 endpoints. * `slurmrestd` - Report an error when QOS resolution fails for v0.0.41 endpoints. * `slurmrestd` - Report an error when QOS resolution fails for v0.0.42 endpoints. * `data_parser/v0.0.42` - Added `+inline_enums` flag which modifies the output when generating OpenAPI specification. It causes enum arrays to not be defined in their own schema with references (`$ref`) to them. Instead they will be dumped inline. * Fix binding error with `tres-bind map/mask` on partial node allocations. * Fix `stepmgr` enabled steps being able to request features. * Reject step creation if requested feature is not available in job. * `slurmd` - Restrict listening for new incoming RPC requests further into startup. * `slurmd` - Avoid `auth/slurm` related hangs of CLI commands during startup and shutdown. * `slurmctld` - Restrict processing new incoming RPC requests further into startup. Stop processing requests sooner during shutdown. * `slurmcltd` - Avoid auth/slurm related hangs of CLI commands during startup and shutdown. * `slurmctld` - Avoid race condition during shutdown or ereconfigure that could result in a crash due delayed processing of a connection while plugins are unloaded. * Fix small memleak when getting the job list from the database. * Fix incorrect printing of `%` escape characters when printing stdio fields for jobs. * Fix padding parsing when printing stdio fields for jobs. * Fix printing `%A` array job id when expanding patterns. * Fix reservations causing jobs to be held for `Bad Constraints`. * `switch/hpe_slingshot` - Prevent potential segfault on failed curl request to the fabric manager. * Fix printing incorrect array job id when expanding stdio file names. The `%A` will now be substituted by the correct value. * Fix printing incorrect array job id when expanding stdio file names. The `%A` will now be substituted by the correct value. * `switch/hpe_slingshot` - Fix VNI range not updating on slurmctld restart or reconfigre. * Fix steps not being created when using certain combinations of `-c` and `-n` inferior to the jobs requested resources, when using stepmgr and nodes are configured with `CPUs == Sockets*CoresPerSocket`. * Permit configuring the number of retry attempts to destroy CXI service via the new destroy_retries `SwitchParameter`. * Do not reset `memory.high` and `memory.swap.max` in slurmd startup or reconfigure as we are never really touching this in `slurmd`. * Fix reconfigure failure of slurmd when it has been started manually and the `CoreSpecLimits` have been removed from `slurm.conf`. * Set or reset CoreSpec limits when slurmd is reconfigured and it was started with systemd. * `switch/hpe-slingshot` - Make sure the slurmctld can free step VNIs after the controller restarts or reconfigures while the job is running. * Fix backup `slurmctld` failure on 2nd takeover. - Changes from version 24.11.4 * `slurmctld`,`slurmrestd` - Avoid possible race condition that could have caused process to crash when listener socket was closed while accepting a new connection. * `slurmrestd` - Avoid race condition that could have resulted in address logged for a UNIX socket to be incorrect. * `slurmrestd` - Fix parameters in OpenAPI specification for the following endpoints to have `job_id` field: ``` GET /slurm/v0.0.40/jobs/state/ GET /slurm/v0.0.41/jobs/state/ GET /slurm/v0.0.42/jobs/state/ GET /slurm/v0.0.43/jobs/state/ ``` * `slurmd` - Fix tracking of thread counts that could cause incoming connections to be ignored after burst of simultaneous incoming connections that trigger delayed response logic. * Avoid unnecessary `SRUN_TIMEOUT` forwarding to `stepmgr`. * Fix jobs being scheduled on higher weighted powered down nodes. * Fix how backfill scheduler filters nodes from the available nodes based on exclusive user and `mcs_label` requirements. * `acct_gather_energy/{gpu,ipmi}` - Fix potential energy consumption adjustment calculation underflow. * `acct_gather_energy/ipmi` - Fix regression introduced in 24.05.5 (which introduced the new way of preserving energy measurements through slurmd restarts) when `EnergyIPMICalcAdjustment=yes`. * Prevent `slurmctld` deadlock in the assoc mgr. * Fix memory leak when `RestrictedCoresPerGPU` is enabled. * Fix preemptor jobs not entering execution due to wrong calculation of accounting policy limits. * Fix certain job requests that were incorrectly denied with node configuration unavailable error. * `slurmd` - Avoid crash due when slurmd has a communications failure with `slurmstepd`. * Fix memory leak when parsing yaml input. * Prevent `slurmctld` from showing error message about `PreemptMode=GANG` being a cluster-wide option for `scontrol update part` calls that don't attempt to modify partition PreemptMode. * Fix setting `GANG` preemption on partition when updating `PreemptMode` with `scontrol`. * Fix `CoreSpec` and `MemSpec` limits not being removed from previously configured slurmd. * Avoid race condition that could lead to a deadlock when `slurmd`, `slurmstepd`, `slurmctld`, `slurmrestd` or `sackd` have a fatal event. * Fix jobs using `--ntasks-per-node` and `--mem` keep pending forever when the requested mem divided by the number of CPUs will surpass the configured `MaxMemPerCPU`. * `slurmd` - Fix address logged upon new incoming RPC connection from `INVALID` to IP address. * Fix memory leak when retrieving reservations. This affects `scontrol`, `sinfo`, `sview`, and the following `slurmrestd` endpoints: `GET /slurm/{any_data_parser}/reservation/{reservation_name}` `GET /slurm/{any_data_parser}/reservations` * Log warning instead of `debuflags=conmgr` gated log when deferring new incoming connections when number of active connections exceed `conmgr_max_connections`. * Avoid race condition that could result in worker thread pool not activating all threads at once after a reconfigure resulting in lower utilization of available CPU threads until enough internal activity wakes up all threads in the worker pool. * Avoid theoretical race condition that could result in new incoming RPC socket connections being ignored after reconfigure. * slurmd - Avoid race condition that could result in a state where new incoming RPC connections will always be ignored. * Add ReconfigFlags=KeepNodeStateFuture to restore saved `FUTURE` node state on restart and reconfig instead of reverting to `FUTURE` state. This will be made the default in 25.05. * Fix case where hetjob submit would cause `slurmctld` to crash. * Fix jobs using `--cpus-per-gpu` and `--mem` keep pending forever when the requested mem divided by the number of CPUs will surpass the configured `MaxMemPerCPU`. * Enforce that jobs using `--mem` and several `--*-per-*` options do not violate the `MaxMemPerCPU` in place. * `slurmctld` - Fix use-cases of jobs incorrectly pending held when `--prefer` features are not initially satisfied. * `slurmctld` - Fix jobs incorrectly held when `--prefer` not satisfied in some use-cases. * Ensure `RestrictedCoresPerGPU` and `CoreSpecCount` don't overlap. - Fix backward compatibility fallout from last update.- removed openmpi4-hpc dependency for test suite.- Update to version 24.11.3: * Fix database cluster ID generation not being random. * Fix a regression in which `slurmd -G` gave no output. * Fix a long-standing crash in `slurmctld` after updating a reservation with an empty nodelist. The crash could occur after restarting slurmctld, or if downing/draining a node in the reservation with the `REPLACE` or `REPLACE_DOWN` flag. * Avoid changing process name to "`watch`" from original daemon name. This could potentially breaking some monitoring scripts. * Avoid `slurmctld` being killed by `SIGALRM` due to race condition at startup. * Fix race condition in slurmrestd that resulted in "`Requested data_parser plugin does not support OpenAPI plugin`" error being returned for valid endpoints. * Fix race between `task/cgroup` CPUset and `jobacctgather/cgroup`. The first was removing the pid from `task_X` cgroup directory causing memory limits to not being applied. * If multiple partitions are requested, set the `SLURM_JOB_PARTITION` output environment variable to the partition in which the job is running for `salloc` and `srun` in order to match the documentation and the behavior of `sbatch`. * `srun` - Fixed wrongly constructed `SLURM_CPU_BIND` env variable that could get propagated to downward srun calls in certain mpi environments, causing launch failures. * Don't print misleading errors for stepmgr enabled steps. * `slurmrestd` - Avoid connection to slurmdbd for the following endpoints: ``` GET /slurm/v0.0.41/jobs GET /slurm/v0.0.41/job/{job_id} ``` * `slurmrestd` - Avoid connection to slurmdbd for the following endpoints: ``` GET /slurm/v0.0.40/jobs GET /slurm/v0.0.40/job/{job_id} ``` * `slurmrestd` - Fix possible memory leak when parsing arrays with `data_parser/v0.0.40`. * `slurmrestd` - Fix possible memory leak when parsing arrays with `data_parser/v0.0.41`. * `slurmrestd` - Fix possible memory leak when parsing arrays with `data_parser/v0.0.42`. - Changes from version 24.11.2: * Fix segfault when submitting `--test-only` jobs that can preempt. * Fix regression introduced in 23.11 that prevented the following flags from being added to a reservation on an update: `DAILY`, `HOURLY`, `WEEKLY`, `WEEKDAY`, and `WEEKEND`. * Fix crash and issues evaluating job's suitability for running in nodes with already suspended job(s) there. * `slurmctld` will ensure that healthy nodes are not reported as `UnavailableNodes` in job reason codes. * Fix handling of jobs submitted to a current reservation with flags `OVERLAP,FLEX` or `OVERLAP,ANY_NODES` when it overlaps nodes with a future maintenance reservation. When a job submission had a time limit that overlapped with the future maintenance reservation, it was rejected. Now the job is accepted but stays pending with the reason "`ReqNodeNotAvail, Reserved for maintenance`". * `pam_slurm_adopt` - avoid errors when explicitly setting some arguments to the default value. * Fix QOS preemption with `PreemptMode=SUSPEND`. * `slurmdbd` - When changing a user's name update lineage at the same time. * Fix regression in 24.11 in which `burst_buffer.lua` does not inherit the `SLURM_CONF` environment variable from `slurmctld` and fails to run if slurm.conf is in a non-standard location. * Fix memory leak in slurmctld if `select/linear` and the `PreemptParameters=reclaim_licenses` options are both set in `slurm.conf`. Regression in 24.11.1. * Fix running jobs, that requested multiple partitions, from potentially being set to the wrong partition on restart. * `switch/hpe_slingshot` - Fix compatibility with newer cxi drivers, specifically when specifying `disable_rdzv_get`. * Add `ABORT_ON_FATAL` environment variable to capture a backtrace from any `fatal()` message. * Fix printing invalid address in rate limiting log statement. * `sched/backfill` - Fix node state `PLANNED` not being cleared from fully allocated nodes during a backfill cycle. * `select/cons_tres` - Fix future planning of jobs with `bf_licenses`. * Prevent redundant "`on_data returned rc: Rate limit exceeded, please retry momentarily`" error message from being printed in slurmctld logs. * Fix loading non-default QOS on pending jobs from pre-24.11 state. * Fix pending jobs displaying `QOS=(null)` when not explicitly requesting a QOS. * Fix segfault issue from job record with no `job_resrcs`. * Fix failing `sacctmgr delete/modify/show` account operations with `where` clauses. * Fix regression in 24.11 in which Slurm daemons started catching several `SIGTSTP`, `SIGTTIN` and `SIGUSR1` signals and ignored them, while before they were not ignoring them. This also caused slurmctld to not being able to shutdown after a `SIGTSTP` because slurmscriptd caught the signal and stopped while slurmctld ignored it. Unify and fix these situations and get back to the previous behavior for these signals. * Document that `SIGQUIT` is no longer ignored by `slurmctld`, `slurmdbd`, and slurmd in 24.11. As of 24.11.0rc1, `SIGQUIT` is identical to `SIGINT` and `SIGTERM` for these daemons, but this change was not documented. * Fix not considering nodes marked for reboot without ASAP in the scheduler. * Remove the `boot^` state on unexpected node reboot after return to service. * Do not allow new jobs to start on a node which is being rebooted with the flag `nextstate=resume`. * Prevent lower priority job running after cancelling an ASAP reboot. * Fix srun jobs starting on `nextstate=resume` rebooting nodes. - Sync upgrades file to reflect last updated versions. - Pass `-DH5_USE_112_API -DDH5Oget_info_vers=1` to CFLAGS to allow building with hdf5 1.14 as slurm does not yet support HDF5 v114 API.- Update to version 24.11.1: * With client commands `MIN_MEMORY` will show `mem_per_tres` if specified. * Fix errno message about bad constraint. * `slurmctld` - Fix crash and possible split brain issue if the backup controller handles an scontrol reconfigure while in control before the primary resumes operation. * Fix `stepmgr` not getting dynamic node addrs from the controller * `stepmgr` - avoid `Unexpected missing socket` errors. * Fix `scontrol show steps` with dynamic stepmgr. * Deny jobs using the `R:` option of `--signal` if `PreemptMode=OFF` globally. * Force jobs using the `R:` option of `--signal` to be preemptable. by requeue or cancel only. If `PreemptMode` on the partition or QOS is off or suspend, the job will default to using `PreemptMode=cancel`. * If `--mem-per-cpu` exceeds `MaxMemPerCPU`, the number of CPUs per task will always be increased even if --cpus-per-task was specified. This is needed to ensure each task gets the expected amount of memory. * Fix compilation issue on OpenSUSE Leap 15. * Fix jobs using more nodes than needed when not using `-N`. * Fix issue with allocation being allocated less resources. than needed when using `--gres-flags=enforce-binding`. * `select/cons_tres` - Fix errors with `MaxCpusPerSocket` partition limit. Used CPUs/cores weren't counted properly, nor limiting free ones to avail, when the socket was partially allocated, or the job request went beyond this limit. * Fix issue when jobs were preempted for licenses even if there were enough licenses available. * Fix `srun` `ntasks` calculation inside an allocation when nodes are requested using a min-max range. * Print correct number of digits for `TmpDisk` in `sdiag`. * Fix a regression in 24.11 which caused file transfers to a job with sbcast to not join the job container namespace. * `data_parser/v0.0.40` - Prevent a segfault in the `slurmrestd` when dumping data with v0.0.40+complex data parser. * Remove logic to force lowercase GRES names. * `data_parser/v0.0.42` - Prevent the association id from always being dumped as NULL when parsing in complex mode. Instead it will now dump the id. This affects the following endpoints: - `GET slurmdb/v0.0.42/association` - `GET slurmdb/v0.0.42/associations` - `GET slurmdb/v0.0.42/config` * Fixed a job requeuing issue that merged job entries into the same SLUID when all nodes in a job failed simultaneously. * When a job completes, try to give idle nodes to reservations with the `REPLACE` flag before allowing them to be allocated to jobs. * Avoid expensive lookup of all associations when dumping or parsing for v0.0.42 endpoints. * Avoid expensive lookup of all associations when dumping or parsing for v0.0.41 endpoints. * Avoid expensive lookup of all associations when dumping or parsing for v0.0.40 endpoints. * Fix segfault when testing jobs against nodes with invalid gres. * Fix performance regression while packing larger RPCs. * `job_container/tmpfs` - Fix Xauthoirty file being created. outside the container when `EntireStepInNS` is enabled. * `job_container/tmpfs` - Fix `spank_task_post_fork` not always running in the container when `EntireStepInNS` is enabled. * Fix a job potentially getting stuck in CG on permissions errors while setting up X11 forwarding. * Fix error on X11 shutdown if Xauthority file was not created. * `slurmctld` - Fix memory or fd leak if an RPC is recieved that is not registered for processing. * Inject `OMPI_MCA_orte_precondition_transports` when using PMIx. This fixes mpi apps using Intel OPA, PSM2 and OMPI 5.x when ran through `srun`. * Don't skip the first `partition_job_depth` jobs per partition. * Fix gres allocation issue after controller restart. * Fix issue where jobs requesting CPUs-per-GPU hang in queue. * `switch/hpe_slingshot` - Treat HTTP status forbidden the same as unauthorized, allowing for a graceful retry attempt. - Slurmdbd no longer starts as root so that the systemd `RuntimeDirectory` option works properly. This requires further adjustments: * Use /run/slurmdbd as directory for PID file. This is created when slurmdbd starts by `RuntimeDirectory=slurmdbd` in the systemd service file (boo#1236928). * Upon installation, create empty `/var/log/slurmdbd.log` owned by user slurm as slurmdbd is not able to create it (boo#1236929).- Make test suite package work on SLE-12.- Fix testsuite: Cater for erroneous: `#include ` statements.- Update to version 24.11 * `slurmctld` - Reject arbitrary distribution jobs that do not specifying a task count. * Fix backwards compatibility of the `RESPONSE_JOB_INFO RPC` (used by `squeue`, `scontrol show job`, etc.) with Slurm clients version 24.05 and below. This was a regression in 24.11.0rc1. * Do not let `slurmctld`/`slurmd` start if there are more nodes defined in `slurm.conf` than the maximum supported amount (64k nodes). * `slurmctld` - Set job's exit code to 1 when a job fails with state `JOB_NODE_FAIL`. This fixes `sbatch --wait` not being able to exit with error code when a job fails for this reason in some cases. * Fix certain reservation updates requested from 23.02 clients. * `slurmrestd` - Fix populating non-required object fields of objects as `{}` in JSON/YAML instead of `null` causing compiled OpenAPI clients to reject the response to `GET /slurm/v0.0.40/jobs` due to validation failure of `.jobs[].job_resources`. * Fix issue where older versions of Slurm talking to a 24.11 dbd could loose step accounting. * Fix minor memory leaks. * Fix bad memory reference when `xstrchr` fails to find char. * Remove duplicate checks for a data structure. * Fix race condition in `stepmgr` step completion handling. * `slurm.spec` - add ability to specify patches to apply on the command line. * `slurm.spec` - add ability to supply extra version information. * Fix 24.11 HA issues. * Fix requeued jobs keeping their priority until the decay thread happens. * Fix potential memory corruption in `select/cons_tres` plugin. * Avoid cache coherency issue on non-x86 platforms that could result in a POSIX signal being ignored or an abort(). * `slurmctld` - Remove assertion in development builds that would trigger if an outdated client attempted to connect. * `slurmd` - Wait for `PrologEpilogTimeout` on reconfigure for prologs to finish. This avoids a situation where the slurmd never detects that the prolog completed. * `job_container/tmpfs` - Setup x11 forwarding within the namespace. * `slurmctld` - fix memory leak when sending a `DBD_JOB_START` message. * Fix issue with accounting rollup dealing with association tables. * Fix minor memory leaks. * Fix potential thread safety issues. * Init mutex in burst_buffer plugins. * `slurmdbd` - don't log errors when no changes occur from db requests. * `slurmcltd`,`slurmd` - Avoid deadlock during reconfigure if too many POSIX signals are received. * Improve error type logged from partial or incomplete reading from socket or pipe to avoid potentially logging an error from a previous syscall. * `slurmrestd` - Improve the handling of queries when unable to connect to slurmdbd by providing responses when possible. * `slurmrestd`,`sackd`,`scrun` - Avoid rare hangs related to I/O. * `scrun` - Add support `--all` argument for kill subcommand. * Remove `srun --cpu-bind=rank`. * Add `resource_spec/cpus` and `resource_spec/memory` entry points in data_parser to print the `CpuSpecList` and `MemSpecLimit` in `sinfo --json`. * `sinfo` - Add `.sinfo[].resource_spec.cpus` and `.sinfo[].resource_spec.memory` fields to print the `CpuSpecList` and `MemSpecLimit` dumped by `sinfo --{json|yaml}`. * Increase efficency of sending logs to syslog. * Switch to new official YAML mime type `application/yaml` in compliance with RFC9512 as primary mime type for YAML formatting. * `slurmrestd` - Remove deprecated fields from the following endpoints: `.result` from `POST /slurm/v0.0.42/job/submit`. `.job_id`, `.step_id`, `.job_submit_user_msg` from `POST /slurm/v0.0.42/job/{job_id}`. `.job.exclusive`, `.jobs[].exclusive` to `POST /slurm/v0.0.42/job/submit`. `.jobs[].exclusive` from `GET /slurm/v0.0.42/job/{job_id}`. `.jobs[].exclusive` from `GET /slurm/v0.0.42/jobs`. `.job.oversubscribe`, `.jobs[].oversubscribe` to `POST /slurm/v0.0.42/job/submit`. `.jobs[].oversubscribe` from `GET /slurm/v0.0.42/job/{job_id}`. `.jobs[].oversubscribe` from `GET /slurm/v0.0.42/jobs`. * `scontrol` - Removed deprecated fields `.jobs[].exclusive` and `.jobs[].oversubscribe` from `scontrol show jobs --{json|yaml}`. * `squeue` - Removed deprecated fields `.jobs[].exclusive` and `.jobs[].oversubscribe` from `squeue --{json|yaml}`. * Improve the way to run external commands and fork processes to avoid non-async-signal safe calls between a fork and an exec. We fork ourselves now and executes the commands in a safe environment. This includes spank prolog/epilog executions. * Improve `MaxMemPerCPU` enforcement when exclusive jobs request per node memory and the partition has heterogeneous nodes. * Remove a `TOCTOU` where multiple steps requesting an energy reading at the same time could cause too frequent accesses to the drivers. * Limit `SwitchName` to `HOST_NAME_MAX` chars length. * For `scancel --ctld` and the following rest api endpoints: `DELETE /slurm/v0.0.40/jobs` `DELETE /slurm/v0.0.41/jobs` `DELETE /slurm/v0.0.42/jobs` Support array expressions in the responses to the client. * `salloc` - Always output node names to the user when an allocation is granted. * `slurmrestd` - Removed all v0.0.39 endpoints. * `select/linear` - Reject jobs asking for GRES per `job|socket|task` or `cpus|mem` per GRES. * Add `/nodes` POST endpoint to REST API, supports multiple node update whereas previously only single nodes could be updated through `/node/` endpoint: `POST /slurm/v0.0.42/nodes` * Do not allow changing or setting `PreemptMode=GANG` to a partition as this is a cluster-wide option. * Add `%b` as a file name pattern for the array task id modulo 10. * Skip packing empty nodes when they are hidden during `REQUEST_NODE_INFO RPC`. * `accounting_storage/mysql` - Avoid a fatal condition when the db server is not reachable. * Always lay out steps cyclically on nodes in an allocation. * `squeue` - add priority by partition (`.jobs[].priority_by_partition`) to JSON and YAML output. * `slurmrestd` - Add clarification to `failed to open slurmdbd connection` error if the error was the result of an authentication failure. * Make it so `slurmctld` responds to RPCs that have authentication errors with the `SLURM_PROTOCOL_AUTHENTICATION_ERROR` error code. * `openapi/slurmctld` - Display the correct error code instead of `Unspecified error` if querying the following endpoints fails: `GET /slurm/v0.0.40/diag/` `GET /slurm/v0.0.41/diag/` `GET /slurm/v0.0.42/diag/` `GET /slurm/v0.0.40/licenses/` `GET /slurm/v0.0.41/licenses/` `GET /slurm/v0.0.42/licenses/` `GET /slurm/v0.0.40/reconfigure` `GET /slurm/v0.0.41/reconfigure` `GET /slurm/v0.0.42/reconfigure` * Fix how used CPUs are tracked in a job allocation to allow the max number of concurrent steps to run at a time if threads per core is greater than 1. * In existing allocations SLURM_GPUS_PER_NODE environment variable will be ignored by srun if `--gpus` is specified. * When using `--get-user-env` explicitly or implicitly, check if PID or mnt namespaces are disabled and fall back to old logic that does not rely on them when they are not available. * Removed non-functional option `SLURM_PROLOG_CPU_MASK` from `TaskProlog` which was used to reset the affinity of a task based on the mask given. * `slurmrestd` - Support passing of `-d latest` to load latest version of `data_parser` plugin. * `sacct`,`sacctmgr`,`scontrol`,`sdiag`,`sinfo`,`squeue`,`sshare` - Change response to `--json=list` or `--yaml=list` to send list of plugins to stdout and descriptive header to stderr to allow for easier parsing. * `slurmrestd` - Change response to `-d list`, `-a list` or `-s list` to send list of plugins to stdout and descriptive header to stderr to allow for easier parsing. * `sacct`,`sacctmgr`,`scontrol`,`sdiag`,`sinfo`,`squeue`, `sshare`,`slurmrestd` - Avoid crash when loading `data_parser` plugins fail due to NULL dereference. * Add autodetected GPUs to the output of `slurmd -C` * Remove `burst_buffer/lua` call `slurm.job_info_to_string()`. * Add `SchedulerParameters=bf_allow_magnetic_slot` option. It allows jobs in magnetic reservations to be planned by backfill scheduler. * `slurmrestd` - Refuse to run as root, `SlurmUser`, and `nobody(99)`. * `openapi/slurmctld` - Revert regression that caused signaling jobs to cancel entire job arrays instead of job array tasks: `DELETE /slurm/v0.0.40/{job_id}` `DELETE /slurm/v0.0.41/{job_id}` `DELETE /slurm/v0.0.42/{job_id}` * `openapi/slurmctld` - Support more formats for `{job_id}` including job steps: `DELETE /slurm/v0.0.40/{job_id}` `DELETE /slurm/v0.0.41/{job_id}` `DELETE /slurm/v0.0.42/{job_id}` * Alter scheduling of jobs at submission time to consider job submission time and job id. This makes it so that that interactive jobs aren't allocated resources before batch jobs when they have the same priority at submit time. * Fix multi-cluster submissions with differing Switch plugins. * `slurmrestd` - Change `+prefer_refs` flag to default in `data_parser/v0.0.42` plugin. Add `+minimize_refs` flag to inline single referenced schemas in the OpenAPI schema. This sets the default OpenAPI schema generation behavior of `data_parser/v0.0.42` to match v0.0.41 `+prefer_refs` and v0.0.40 (without flags). * Fix `LaunchParameters=batch_step_set_cpu_freq`. * Clearer `seff` warning message for running jobs. * `data_parser/v0.0.42` - Rename `JOB_INFO` field `minimum_switches` to `required_switches` to reflect the actual behavior. * `data_parser/v0.0.42` - Rename `ACCOUNT_CONDITION` field `assocation` to `association` to fix typo. * `cgroup/v2` - fix cgroup cleanup when running inside a container without write permissions to `/sys/fs/cgroup`. * `cgroup/v2` - fix accounting of swap events detection. * Fix gathering MaxRSS for jobs that run shorter than two `jobacctgather` intervals. Get the metrics from cgroups `memory.peak` or `memory.max_usage_in_bytes` where available. * `openapi/slurmctld` - Set complex number support for the following fields: `.shares[][].fairshare.factor` `.shares[][].fairshare.level` for endpoints: `GET /slurm/v0.0.42/shares` and for commands: `sshare --json` `sshare --yaml` * `data_parser/v0.0.42` - Avoid dumping `Infinity` for `NO_VAL` tagged `number` fields. * Add `TopologyParam=TopoMaxSizeUnroll=#` to allow `--nodes=-` for `topology/block`. * `sacct` - Respect `--noheader` for `--batch-script` and `--env-vars`. * `sacct` - Remove extra newline in output from `--batch-script` and --env-vars. * Add `sacctmgr ping` command to query status of `slurmdbd`. * Generate an error message when a `NodeSet` name conflicts with a `NodeName`, and prevent the controller from starting if such a conflict exists. * `slurmd` - properly detect slurmd restarts in the energy gathering logic which caused bad numbers in accounting. * `sackd` - retry fetching slurm configs indefinately in configless mode. * `job_submit/lua` - Add `assoc_qos` attribute to `job_desc` to display all potential QOS's for a job's association. * `job_submit/lua` - Add `slurm.get_qos_priority()` function to retrieve the given QOS's priority. * `sbcast` - Add `--nodelist` option to specify where files are transmitted to. * `sbcast` - Add `--no-allocation` option to transmit files to nodes outside of a job allocation * Add `DataParserParameters` `slurm.conf` parameter to allow setting default value for CLI `--json` and `--yaml` arguments. * `seff` - improve step's max memory consumption report by using `TresUsageInTot` and `TresUsageInAve` instead of overestimating the values. * Enable RPC queueing for `REQUEST_KILL_JOBS`, which is used when `scancel` is executed with `--ctld` flag. * `slurmdbd` - Add `-u` option. This is used to determine if restarting the DBD will result in database conversion. * Fix `srun` inside an `salloc` in a federated cluster when using IPv6. * Calculate the forwarding timeouts according to tree depth rather than node count / tree width for each level. Fixes race conditions with same timeouts between two consecutive node levels. * Add ability to submit jobs with multiple QOS. * Fix difference in behavior when swapping partition order in job submission. * Improve `PLANNED` state detection for mixed nodes and updating state before yielding backfill locks. * Always consider partition priority tiers when deciding to try scheduling jobs on submit. * Prevent starting jobs without reservations on submit when there are pending jobs with reservations that have flags `FLEX` or `ANY_NODES` that can be scheduled on overlapping nodes. * Prevent jobs that request both high and low priority tier partitions from starting on submit in lower priority tier partitions if it could delay pending jobs in higher priority tier partitions. * `scontrol` - Wait for `slurmctld` to start reconfigure in foreground mode before returning. * Improve reconfigure handling on Linux to only close open file descriptors to avoid long delays on systems with large `RLIMIT_NOFILE` settings. * `salloc` - Removed `--get-user-env` option. * Removed the instant on feature from `switch/hpe_slingshot`. * Hardware collectives in `switch/hpe_slingshot` now requires `enable_stepmgr`. * Allow backfill to plan jobs on nodes currently being used by exclusive user or mcs jobs. * Avoid miscaching IPv6 address to hostname lookups that could have caused logs to have the incorrect hostname. * `scontrol` - Add `--json`/`--yaml` support to `listpids` * `scontrol` - Add `liststeps` * `scontrol` - Add `listjobs` * `slurmrestd` - Avoid connection to slurmdbd for the following endpoints: `GET /slurm/v0.0.42/jobs` `GET /slurm/v0.0.42/job/{job_id}` * `slurmctld` - Changed incoming RPC handling to dedicated thread pool. * `job_container/tmpfs` - Add `EntireStepInNS` option that will place the `slurmstepd` process within the constructed namespace directly. * `scontrol show topo` - Show aggregated block sizes when using `topology/block`. * `slurmrestd` - Add more descriptive HTTP status for authentication failure and connectivity errors with controller. * `slurmrestd` - Improve reporting errors from `slurmctld` for job queries: `GET /slurm/v0.0.41/{job_id}` `GET /slurm/v0.0.41/jobs/` * Avoid rejecting a step request that needs fewer GRES than nodes in the job allocation. * `slurmrestd` - Tag the never populated `.jobs[].pid` field as deprecated for the following endpoints: `GET /slurm/v0.0.42/{job_id}` `GET /slurm/v0.0.42/jobs/` * `scontrol`,`squeue` - Tag the never populated `.jobs[].pid` field as deprecated for the following: `scontrol show jobs --json` `scontrol show jobs --yaml` `scontrol show job ${JOB_ID} --json` `scontrol show job ${JOB_ID} --yaml` `squeue --json` `squeue --yaml` * `data_parser` v0.0.42 - fix timestamp parsing regression introduced in in v0.0.40 (eaf3b6631f), parsing of non iso 8601 style timestamps * `cgroup/v2` will detect some special container and namespaced setups and will work with it. * Support IPv6 in configless mode. * Add `SlurmctldParamters=ignore_constraint_validation` to ignore `constraint/feature` validation at submission. * `slurmrestd` - Set `.pings[].mode` field as deprecated in the following endpoints: `GET /slurm/v0.0.42/ping` * `scontrol` - Set `.pings[].mode` field as deprecated in the following commands: `scontrol ping --json` `scontrol ping --yaml` * `slurmrestd` - Set `.pings[].pinged` field as deprecated in the following endpoints: `GET /slurm/v0.0.42/ping` * `scontrol` - Set `.pings[].pinged` field as deprecated in the following commands: `scontrol ping --json` `scontrol ping --yaml` * `slurmrestd` - Add `.pings[].primary` field to the following endpoints: `GET /slurm/v0.0.42/ping` * `scontrol` - Add `.pings[].primary` field to the following commands: `scontrol ping --json` `scontrol ping --yaml` * `slurmrestd` - Add `.pings[].responding` field to the following endpoints: `GET /slurm/v0.0.42/ping` * `scontrol` - Add `.pings[].responding` field to the following commands: `scontrol ping --json` `scontrol ping --yaml` * Prevent jobs without reservations from delaying jobs in reservations with flags `FLEX` or `ANY_NODES` in the main scheduler. * Fix allowing to ask for multiple different types of TRES when one of them has a value of 0. * `slurmctld` - Add a grace period to ensure the agent retry queue is properly flushed during shutdown. * Don't ship `src/slurmrestd/plugins/openapi/slurmdbd/openapi.json` `slurmrest` should always be used to enerate a new OpenAPI schema (aka openapi.json or openapi.yaml). * `mpi/pmix` - Fix potential deadlock and races with het jobs, and fix potential memory and FDs leaks. * Fix jobs with `--gpus` being rejected in some edge cases for partitions where not all nodes have the same amount of GPUs and CPUs configured. * In an extra constraints expression in a job request, do not allow an empty string for a key or value. * In an extra constraints expression in a job request, fix validation that requests are separated by boolean operators. * Add `TaskPluginParam=OOMKillStep` to kill the step as a whole when one task OOMs. * Fix `scontrol` show conf not showing all `TaskPluginParam` elements. * `slurmrestd` - Add fields `.job.oom_kill_step` `.jobs[].oom_kill_step` to `POST /slurm/v0.0.42/job/submit` and `POST /slurm/v0.0.42/job/allocate`. * Improve performance for `_will_run_test()`. * Add `SchedulerParameters=bf_topopt_enable` option to enable experimental hook to control backfill. * If a step fails to launch under certain conditions, set the step's state to `NODE_FAIL`. * `sched/backfill` - Fix certain situations where a job would not get a planned time, which could lead to it being delayed by lower priority jobs. * `slurmrestd` - Dump JSON `null` instead of `{}` (empty object) for non-required fields in objects to avoid client compatiblity issues for v0.0.42 version tagged endpoints. * `sacct`,`sacctmgr`,`scontrol`,`sdiag`,`sinfo`,`squeue`, `sshare` - Dump `null` instead `{}` (empty object) for non-required fields in objects to avoid client compatiblity issues when run with `--json` or `--yaml`.- Update to version 24.05.4 & fix for CVE-2024-48936. * Fix generic int sort functions. * Fix user look up using possible unrealized uid in the dbd. * `slurmrestd` - Fix regressions that allowed `slurmrestd` to be run as SlurmUser when `SlurmUser` was not root. * mpi/pmix fix race conditions with het jobs at step start/end which could make srun to hang. * Fix not showing some `SelectTypeParameters` in `scontrol show config`. * Avoid assert when dumping removed certain fields in JSON/YAML. * Improve how shards are scheduled with affinity in mind. * Fix `MaxJobsAccruePU` not being respected when `MaxJobsAccruePA` is set in the same QOS. * Prevent backfill from planning jobs that use overlapping resources for the same time slot if the job's time limit is less than `bf_resolution`. * Fix memory leak when requesting typed gres and `--[cpus|mem]-per-gpu`. * Prevent backfill from breaking out due to "system state changed" every 30 seconds if reservations use `REPLACE` or `REPLACE_DOWN` flags. * `slurmrestd` - Make sure that scheduler_unset parameter defaults to true even when the following flags are also set: `show_duplicates`, `skip_steps`, `disable_truncate_usage_time`, `run_away_jobs`, `whole_hetjob`, `disable_whole_hetjob`, `disable_wait_for_result`, `usage_time_as_submit_time`, `show_batch_script`, and or `show_job_environment`. Additionaly, always make sure show_duplicates and `disable_truncate_usage_time` default to true when the following flags are also set: `scheduler_unset`, `scheduled_on_submit`, `scheduled_by_main`, `scheduled_by_backfill`, and or `job_started`. This effects the following endpoints: `GET /slurmdb/v0.0.40/jobs` `GET /slurmdb/v0.0.41/jobs` * Ignore `--json` and `--yaml` options for `scontrol` show config to prevent mixing output types. * Fix not considering nodes in reservations with Maintenance or Overlap flags when creating new reservations with `nodecnt` or when they replace down nodes. * Fix suspending/resuming steps running under a 23.02 `slurmstepd` process. * Fix options like `sprio --me` and `squeue --me` for users with a uid greater than 2147483647. * `fatal()` if `BlockSizes=0`. This value is invalid and would otherwise cause the `slurmctld` to crash. * `sacctmgr` - Fix issue where clearing out a preemption list using `preempt=''` would cause the given qos to no longer be preempt-able until set again. * Fix `stepmgr` creating job steps concurrently. * `data_parser/v0.0.40` - Avoid dumping "Infinity" for `NO_VAL` tagged "number" fields. * `data_parser/v0.0.41` - Avoid dumping "Infinity" for `NO_VAL` tagged "number" fields. * `slurmctld` - Fix a potential leak while updating a reservation. * `slurmctld` - Fix state save with reservation flags when a update fails. * Fix reservation update issues with parameters Accounts and Users, when using +/- signs. * `slurmrestd` - Don't dump warning on empty wckeys in: `GET /slurmdb/v0.0.40/config` `GET /slurmdb/v0.0.41/config` * Fix slurmd possibly leaving zombie processes on start up in configless when the initial attempt to fetch the config fails. * Fix crash when trying to drain a non-existing node (possibly deleted before). * `slurmctld` - fix segfault when calculating limit decay for jobs with an invalid association. * Fix IPMI energy gathering with multiple sensors. * `data_parser/v0.0.39` - Remove xassert requiring errors and warnings to have a source string. * `slurmrestd` - Prevent potential segfault when there is an error parsing an array field which could lead to a double xfree. This applies to several endpoints in `data_parser` v0.0.39, v0.0.40 and v0.0.41. * `scancel` - Fix a regression from 23.11.6 where using both the `--ctld` and `--sibling` options would cancel the federated job on all clusters instead of only the cluster(s) specified by `--sibling`. * `accounting_storage/mysql` - Fix bug when removing an association specified with an empty partition. * Fix setting multiple partition state restore on a job correctly. * Fix difference in behavior when swapping partition order in job submission. * Fix security issue in stepmgr that could permit an attacker to execute processes under other users' jobs. CVE-2024-48936.- Add %(?%sysusers_requires} to slurm-config. This fixes issues when building against Slurm.- Update to version 24.05.3 * `data_parser/v0.0.40` - Added field descriptions. * `slurmrestd` - Avoid creating new slurmdbd connection per request to `* /slurm/slurmctld/*/*` endpoints. * Fix compilation issue with `switch/hpe_slingshot` plugin. * Fix gres per task allocation with threads-per-core. * `data_parser/v0.0.41` - Added field descriptions. * `slurmrestd` - Change back generated OpenAPI schema for `DELETE /slurm/v0.0.40/jobs/` to `RequestBody` instead of using parameters for request. `slurmrestd` will continue accept endpoint requests via `RequestBody` or HTTP query. * `topology/tree` - Fix issues with switch distance optimization. * Fix potential segfault of secondary `slurmctld` when falling back to the primary when running with a `JobComp` plugin. * Enable `--json`/`--yaml=v0.0.39` options on client commands to dump data using data_parser/v0.0.39 instead or outputting nothing. * `switch/hpe_slingshot` - Fix issue that could result in a 0 length state file. * Fix unnecessary message protocol downgrade for unregistered nodes. * Fix unnecessarily packing alias addrs when terminating jobs with a mix of non-cloud/dynamic nodes and powered down cloud/dynamic nodes. * `accounting_storage/mysql` - Fix issue when deleting a qos that could remove too many commas from the qos and/or delta_qos fields of the assoc table. * `slurmctld` - Fix memory leak when using RestrictedCoresPerGPU. * Fix allowing access to reservations without `MaxStartDelay` set. * Fix regression introduced in 24.05.0rc1 breaking `srun --send-libs` parsing. * Fix slurmd vsize memory leak when using job submission/allocation commands that implicitly or explicitly use --get-user-env. * `slurmd` - Fix node going into invalid state when using `CPUSpecList` and setting CPUs to the # of cores on a multithreaded node. * Fix reboot asap nodes being considered in backfill after a restart. * Fix `--clusters`/`-M queries` for clusters outside of a federation when `fed_display` is configured. * Fix `scontrol` allowing updating job with bad `cpus-per-task` value. * `sattach` - Fix regression from 24.05.2 security fix leading to crash. * `mpi/pmix` - Fix assertion when built under `--enable-debug`. - Changes from Slurm 24.05.2 * Fix energy gathering rpc counter underflow in `_rpc_acct_gather_energy` when more than 10 threads try to get energy at the same time. This prevented the possibility to get energy from slurmd by any step until slurmd was restarted, so losing energy accounting metrics in the node. * `accounting_storage/mysql` - Fix issue where new user with `wckey` did not have a default wckey sent to the slurmctld. * `slurmrestd` - Prevent slurmrestd segfault when handling the following endpoints when none of the optional parameters are specified: `DELETE /slurm/v0.0.40/jobs` `DELETE /slurm/v0.0.41/jobs` `GET /slurm/v0.0.40/shares` `GET /slurm/v0.0.41/shares` `GET /slurmdb/v0.0.40/instance` `GET /slurmdb/v0.0.41/instance` `GET /slurmdb/v0.0.40/instances` `GET /slurmdb/v0.0.41/instances` `POST /slurm/v0.0.40/job/{job_id}` `POST /slurm/v0.0.41/job/{job_id}` * Fix IPMI energy gathering when no IPMIPowerSensors are specified in `acct_gather.conf`. This situation resulted in an accounted energy of 0 for job steps. * Fix a minor memory leak in slurmctld when updating a job dependency. * `scontrol`,`squeue` - Fix regression that caused incorrect values for multisocket nodes at `.jobs[].job_resources.nodes.allocation` for `scontrol show jobs --(json|yaml)` and `squeue --(json|yaml)`. * `slurmrestd` - Fix regression that caused incorrect values for multisocket nodes at `.jobs[].job_resources.nodes.allocation` to be dumped with endpoints: `GET /slurm/v0.0.41/job/{job_id}` `GET /slurm/v0.0.41/jobs` * `jobcomp/filetxt` - Fix truncation of job record lines > 1024 characters. * `switch/hpe_slingshot` - Drain node on failure to delete CXI services. * Fix a performance regression from 23.11.0 in CPU frequency handling when no `CpuFreqDef` is defined. * Fix one-task-per-sharing not working across multiple nodes. * Fix inconsistent number of CPUs when creating a reservation using the TRESPerNode option. * `data_parser/v0.0.40+` - Fix job state parsing which could break filtering. * Prevent `cpus-per-task` to be modified in jobs where a `-c` value has been explicitly specified and the requested memory constraints implicitly increase the number of CPUs to allocate. * `slurmrestd` - Fix regression where args `-s v0.0.39,dbv0.0.39` and `-d v0.0.39` would result in `GET /openapi/v3` not registering as a valid possible query resulting in 404 errors. * `slurmrestd` - Fix memory leak for dbv0.0.39 jobs query which occurred if the query parameters specified account, association, cluster, constraints, format, groups, job_name, partition, qos, reason, reservation, state, users, or wckey. This affects the following endpoints: `GET /slurmdb/v0.0.39/jobs` * `slurmrestd` - In the case the slurmdbd does not respond to a persistent connection init message, prevent the closed fd from being used, and instead emit an error or warning depending on if the connection was required. * Fix 24.05.0 regression that caused the slurmdbd not to send back an error message if there is an error initializing a persistent connection. * Reduce latency of forwarded x11 packets. * Add `curr_dependency` (representing the current dependency of the job). and `orig_dependency` (representing the original requested dependency of the job) fields to the job record in `job_submit.lua` (for job update) and `jobcomp.lua`. * Fix potential segfault of slurmctld configured with `SlurmctldParameters=enable_rpc_queue` from happening on reconfigure. * Fix potential segfault of slurmctld on its shutdown when rate limitting is enabled. * `slurmrestd` - Fix missing job environment for `SLURM_JOB_NAME`, `SLURM_OPEN_MODE`, `SLURM_JOB_DEPENDENCY`, `SLURM_PROFILE`, `SLURM_ACCTG_FREQ`, `SLURM_NETWORK` and `SLURM_CPU_FREQ_REQ` to match sbatch. * Fix GRES environment variable indices being incorrect when only using a subset of all GPUs on a node and the `--gres-flags=allow-task-sharing` option. * Prevent `scontrol` from segfaulting when requesting scontrol show reservation `--json` or `--yaml` if there is an error retrieving reservations from the `slurmctld`. * `switch/hpe_slingshot` - Fix security issue around managing VNI access. CVE-2024-42511. * `switch/nvidia_imex` - Fix security issue managing IMEX channel access. CVE-2024-42511. * `switch/nvidia_imex` - Allow for compatibility with `job_container/tmpfs`. - Changes in Slurm 24.05.1 * Fix `slurmctld` and `slurmdbd` potentially stopping instead of performing a logrotate when recieving `SIGUSR2` when using `auth/slurm`. * `switch/hpe_slingshot` - Fix slurmctld crash when upgrading from 23.02. * Fix "Could not find group" errors from `validate_group()` when using `AllowGroups` with large `/etc/group` files. * Add `AccountingStoreFlags=no_stdio` which allows to not record the stdio paths of the job when set. * `slurmrestd` - Prevent a slurmrestd segfault when parsing the `crontab` field, which was never usable. Now it explicitly ignores the value and emits a warning if it is used for the following endpoints: `POST /slurm/v0.0.39/job/{job_id}` `POST /slurm/v0.0.39/job/submit` `POST /slurm/v0.0.40/job/{job_id}` `POST /slurm/v0.0.40/job/submit` `POST /slurm/v0.0.41/job/{job_id}` `POST /slurm/v0.0.41/job/submit` `POST /slurm/v0.0.41/job/allocate` * `mpi/pmi2` - Fix communication issue leading to task launch failure with "`invalid kvs seq from node`". * Fix getting user environment when using sbatch with `--get-user-env` or `--export=` when there is a user profile script that reads `/proc`. * Prevent slurmd from crashing if `acct_gather_energy/gpu` is configured but `GresTypes` is not configured. * Do not log the following errors when `AcctGatherEnergyType` plugins are used but a node does not have or cannot find sensors: "`error: _get_joules_task: can't get info from slurmd`" "`error: slurm_get_node_energy: Zero Bytes were transmitted or received`" However, the following error will continue to be logged: "`error: Can't get energy data. No power sensors are available. Try later`" * `sbatch`, `srun` - Set `SLURM_NETWORK` environment variable if `--network` is set. * Fix cloud nodes not being able to forward to nodes that restarted with new IP addresses. * Fix cwd not being set correctly when running a SPANK plugin with a `spank_user_init()` hook and the new "`contain_spank`" option set. * `slurmctld` - Avoid deadlock during shutdown when `auth/slurm` is active. * Fix segfault in `slurmctld` with `topology/block`. * `sacct` - Fix printing of job group for job steps. * `scrun` - Log when an invalid environment variable causes the job submission to be rejected. * `accounting_storage/mysql` - Fix problem where listing or modifying an association when specifying a qos list could hang or take a very long time. * `gpu/nvml` - Fix `gpuutil/gpumem` only tracking last GPU in step. Now, `gpuutil/gpumem` will record sums of all GPUS in the step. * Fix error in `scrontab` jobs when using `slurm.conf:PropagatePrioProcess=1`. * Fix `slurmctld` crash on a batch job submission with `--nodes 0,...`. * Fix dynamic IP address fanout forwarding when using `auth/slurm`. * Restrict listening sockets in the `mpi/pmix` plugin and `sattach` to the `SrunPortRange`. * `slurmrestd` - Limit mime types returned from query to `GET /openapi/v3` to only return one mime type per serializer plugin to fix issues with OpenAPI client generators that are unable to handle multiple mime type aliases. * Fix many commands possibly reporting an "`Unexpected Message Received`" when in reality the connection timed out. * Prevent slurmctld from starting if there is not a json serializer present and the `extra_constraints` feature is enabled. * Fix heterogeneous job components not being signaled with `scancel --ctld` and `DELETE slurm/v0.0.40/jobs` if the job ids are not explicitly given, the heterogeneous job components match the given filters, and the heterogeneous job leader does not match the given filters. * Fix regression from 23.02 impeding job licenses from being cleared. * Move error to `log_flag` which made `_get_joules_task` error to be logged to the user when too many rpcs were queued in slurmd for gathering energy. * For `scancel --ctld` and the associated rest api endpoints: `DELETE /slurm/v0.0.40/jobs` `DELETE /slurm/v0.0.41/jobs` Fix canceling the final array task in a job array when the task is pending and all array tasks have been split into separate job records. Previously this task was not canceled. * Fix `power_save operation` after recovering from a failed reconfigure. * `slurmctld` - Skip removing the pidfile when running under systemd. In that situation it is never created in the first place. * Fix issue where altering the flags on a Slurm account (`UsersAreCoords`) several limits on the account's association would be set to 0 in Slurm's internal cache. * Fix memory leak in the controller when relaying `stepmgr` step accounting to the dbd. * Fix segfault when submitting stepmgr jobs within an existing allocation. * Added `disable_slurm_hydra_bootstrap` as a possible `MpiParams` parameter in `slurm.conf`. Using this will disable env variable injection to allocations for the following variables: `I_MPI_HYDRA_BOOTSTRAP,` `I_MPI_HYDRA_BOOTSTRAP_EXEC_EXTRA_ARGS`, `HYDRA_BOOTSTRAP`, `HYDRA_LAUNCHER_EXTRA_ARGS`. * `scrun` - Delay shutdown until after start requested. This caused `scrun` to never start or shutdown and hung forever when using `--tty`. * Fix backup `slurmctld` potentially not running the agent when taking over as the primary controller. * Fix primary controller not running the agent when a reconfigure of the `slurmctld` fails. * `slurmd` - fix premature timeout waiting for `REQUEST_LAUNCH_PROLOG` with large array jobs causing node to drain. * `jobcomp/{elasticsearch,kafka}` - Avoid sending fields with invalid date/time. * `jobcomp/elasticsearch` - Fix `slurmctld` memory leak from curl usage. * `acct_gather_profile/influxdb` - Fix slurmstepd memory leak from curl usage * Fix 24.05.0 regression not deleting job hash dirs after `MinJobAge`. * Fix filtering arguments being ignored when using squeue `--json`. * `switch/nvidia_imex` - Move setup call after `spank_init()` to allow namespace manipulation within the SPANK plugin. * `switch/nvidia_imex` - Skip plugin operation if `nvidia-caps-imex-channels` device is not present rather than preventing slurmd from starting. * `switch/nvidia_imex` - Skip plugin operation if `job_container/tmpfs` is configured due to incompatibility. * `switch/nvidia_imex` - Remove any pre-existing channels when `slurmd` starts. * `rpc_queue` - Add support for an optional `rpc_queue.yaml` configuration file. * `slurmrestd` - Add new +prefer_refs flag to `data_parser/v0.0.41` plugin. This flag will avoid inlining single referenced schemas in the OpenAPI schema.- Updated to new release 24.05.0 with following major changes * Important Notes: If using the slurmdbd (Slurm DataBase Daemon) you must update this first. NOTE: If using a backup DBD you must start the primary first to do any database conversion, the backup will not start until this has happened. The 24.05 slurmdbd will work with Slurm daemons of version 23.02 and above. You will not need to update all clusters at the same time, but it is very important to update slurmdbd first and having it running before updating any other clusters making use of it. * Highlights + Federation - allow client command operation when slurmdbd is unavailable. + `burst_buffer/lua` - Added two new hooks: `slurm_bb_test_data_in` and `slurm_bb_test_data_out`. The syntax and use of the new hooks are documented in `etc/burst_buffer.lua.example`. These are required to exist. slurmctld now checks on startup if the `burst_buffer.lua` script loads and contains all required hooks; `slurmctld` will exit with a fatal error if this is not successful. Added `PollInterval` to `burst_buffer.conf`. Removed the arbitrary limit of 512 copies of the script running simultaneously. + Add QOS limit `MaxTRESRunMinsPerAccount`. + Add QOS limit `MaxTRESRunMinsPerUser`. + Add `ELIGIBLE` environment variable to `jobcomp/script` plugin. + Always use the QOS name for `SLURM_JOB_QOS` environment variables. Previously the batch environment would use the description field, which was usually equivalent to the name. + `cgroup/v2` - Require dbus-1 version >= 1.11.16. + Allow `NodeSet` names to be used in SuspendExcNodes. + `SuspendExcNodes=:N` now counts allocated nodes in `N`. The first `N` powered up nodes in are protected from being suspended. + Store job output, input and error paths in `SlurmDBD`. + Add `USER_DELETE` reservation flag to allow users with access to a reservation to delete it. + Add `SlurmctldParameters=enable_stepmgr` to enable step management through the `slurmstepd` instead of the controller. + Added `PrologFlags=RunInJob` to make prolog and epilog run inside the job extern step to include it in the job's cgroup. + Add ability to reserve MPI ports at the job level for stepmgr jobs and subdivide them at the step level. + `slurmrestd` - Add `--generate-openapi-spec argument`. * Configuration File Changes (see appropriate man page for details) + `CoreSpecPlugin` has been removed. + Removed `TopologyPlugin` tree and dragonfly support from `select/linear`. If those topology plugins are desired please switch to `select/cons_tres`. + Changed the default value for `UnkillableStepTimeout` to 60 seconds or five times the value of `MessageTimeout`, whichever is greater. + An error log has been added if `JobAcctGatherParams` '`UsePss`' or '`NoShare`' are configured with a plugin other than `jobacct_gather/linux`. In such case these parameters are ignored. + `helpers.conf` - Added `Flags=rebootless` parameter allowing feature changes without rebooting compute nodes. + `topology/block` - Replaced the `BlockLevels` with `BlockSizes` in `topology.conf`. + Add `contain_spank` option to `SlurmdParameters`. When set, `spank_user_init()`, `spank_task_post_fork()`, and `spank_task_exit()` will execute within the `job_container/tmpfs` plugin namespace. + Add `SlurmctldParameters=max_powered_nodes=N`, which prevents powering up nodes after the max is reached. + Add `ExclusiveTopo` to a partition definition in `slurm.conf`. + Add `AccountingStorageParameters=max_step_records` to limit how many steps are recorded in the database for each job - excluding batch. * Command Changes (see man pages for details) + Add support for "elevenses" as an additional time specification. + Add support for `sbcast --preserve` when `job_container/tmpfs` configured (previously documented as unsupported). + `scontrol` - Add new subcommand `power` for node power control. + `squeue` - Adjust `StdErr`, `StdOut`, and `StdIn` output formats. These will now consistently print "`(null)`" if a value is unavailable. `StdErr` will no longer display `StdOut` if it is not distinctly set. `StdOut` will now correctly display the default filename pattern for job arrays, and no longer show it for non-batch jobs. However, the expansion patterns will no longer be substituted by default. + Add `--segment` to job allocation to be used in topology/block. + Add `--exclusive=topo` for use with topology/block. + `squeue` - Add `--expand-patterns` option to expand `StdErr`, `StdOut`, `StdIn` filename patterns as best as possible. + `sacct` - Add `--expand-patterns` option to expand `StdErr`, `StdOut`, `StdIn` filename patterns as best as possible. + `sreport` - Requesting `format=Planned` will now return the expected `Planned` time as documented, instead of `PlannedDown`. To request `Planned Down`, one must use now `format=PLNDDown` or `format=PlannedDown` explicitly. The abbreviations "`Pl`" or "`Pla`" will now make reference to Planned instead of `PlannedDown`. * API Changes + Removed `ListIterator` type from ``. + Removed `slurm_xlate_job_id()` from `` * SLURMRESTD Changes + `openapi/dbv0.0.38` and `openapi/v0.0.38` plugins have been removed. + `openapi/dbv0.0.39` and `openapi/v0.0.39` plugins have been tagged as deprecated to warn of their removal in the next release. + Changed `slurmrestd.service` to only listen on TCP socket by default. Environments with existing drop-in units for the service may need further adjustments to work after upgrading. + `slurmrestd` - Tagged `script` field as deprecated in `POST /slurm/v0.0.41/job/submit` in anticipation of removal in future OpenAPI plugin versions. Job submissions should set the `job.script` (or `jobs[0].script` for HetJobs) fields instead. + `slurmrestd` - Attempt to automatically convert enumerated string arrays with incoming non-string values into strings. Add warning when incoming value for enumerated string arrays can not be converted to string and silently ignore instead of rejecting entire request. This change affects any endpoint that uses an enunmerated string as given in the OpenAPI specification. An example of this conversion would be to `POST /slurm/v0.0.41/job/submit` with `.job.exclusive = true`. While the JSON (boolean) true value matches a possible enumeration, it is not the expected "true" string. This change automatically converts the (boolean) `true` to (string) "`true`" avoiding a parsing failure. + `slurmrestd` - Add `POST /slurm/v0.0.41/job/allocate` endpoint. This endpoint will create a new job allocation without any steps. The allocation will need to be ended via signaling the job or it will run to the timelimit. + `slurmrestd` - Allow startup when `slurmdbd` is not configured and avoid loading `slurmdbd` specific plugins. * MPI/PMI2 Changes + Jobs submitted with the `SLURM_HOSTFILE` environment variable set implies using an arbitrary distribution. Nevertheless, the logic used in PMI2 when generating their associated `PMI_process_mapping` values has been changed and will now be the same used for the plane distribution, as if `-m plane` were used. This has been changed because the original arbitrary distribution implementation did not account for multiple instances of the same host being present in `SLURM_HOSTFILE`, providing an incorrect process mapping in such case. This change also enables distributing tasks in blocks when using arbitrary distribution, which was not the case before. This only affects `mpi`/`pmi2` plugin. - Removed Fix-test-21.41.patch as upstream test changed. - Dropped package plugin-ext-sensors-rrd as the plugin module no longer exists.- removed Keep-logs-of-skipped-test-when-running-test-cases-sequentially.patch as incoperated upstream - Changes in Slurm 23.02.5 * Add the `JobId` to `debug()` messages indicating when `cpus_per_task/mem_per_cpu` or `pn_min_cpus` are being automatically adjusted. * Fix regression in 23.02.2 that caused `slurmctld -R` to crash on startup if a node features plugin is configured. * Fix and prevent reoccurring reservations from overlapping. * `job_container/tmpfs` - Avoid attempts to share `BasePath` between nodes. * Change the log message warning for rate limited users from verbose to info. * With `CR_Cpu_Memory`, fix node selection for jobs that request gres and `--mem-per-cpu`. * Fix a regression from 22.05.7 in which some jobs were allocated too few nodes, thus overcommitting cpus to some tasks. * Fix a job being stuck in the completing state if the job ends while the primary controller is down or unresponsive and the backup controller has not yet taken over. * Fix `slurmctld` segfault when a node registers with a configured `CpuSpecList` while slurmctld configuration has the node without `CpuSpecList`. * Fix cloud nodes getting stuck in `POWERED_DOWN+NO_RESPOND` state after not registering by `ResumeTimeout`. * `slurmstepd` - Avoid cleanup of `config.json`-less containers spooldir getting skipped. * `slurmstepd` - Cleanup per task generated environment for containers in spooldir. * Fix `scontrol segfault` when 'completing' command requested repeatedly in interactive mode. * Properly handle a race condition between `bind()` and `listen()` calls in the network stack when running with `SrunPortRange` set. * Federation - Fix revoked jobs being returned regardless of the `-a`/`--all` option for privileged users. * Federation - Fix canceling pending federated jobs from non-origin clusters which could leave federated jobs orphaned from the origin cluster. * Fix sinfo segfault when printing multiple clusters with `--noheader` option. * Federation - fix clusters not syncing if clusters are added to a federation before they have registered with the dbd. * Change `pmi2` plugin to honor the `SrunPortRange` option. This matches the new behavior of the pmix plugin in 23.02.0. Note that neither of these plugins makes use of the "`MpiParams=ports=`" option, and previously were only limited by the systems ephemeral port range. * `node_features/helpers` - Fix node selection for jobs requesting changeable features with the '`|`' operator, which could prevent jobs from running on some valid nodes. * `node_features/helpers` - Fix inconsistent handling of '`&`' and '`|`', where an AND'd feature was sometimes AND'd to all sets of features instead of just the current set. E.g. "`foo|bar&baz`" was interpreted as `{foo,baz}` or `{bar,baz}` instead of how it is documented: "`{foo} or {bar,baz}`". * Fix job accounting so that when a job is requeued its allocated node count is cleared. After the requeue, sacct will correctly show that the job has 0 `AllocNodes` while it is pending or if it is canceled before restarting. * `sacct` - `AllocCPUS` now correctly shows 0 if a job has not yet received an allocation or if the job was canceled before getting one. * Fix intel oneapi autodetect: detect the `/dev/dri/renderD[0-9]+` gpus, and do not detect `/dev/dri/card[0-9]+`. * Format batch, extern, interactive, and pending step ids into strings that are human readable. * Fix node selection for jobs that request `--gpus` and a number of tasks fewer than gpus, which resulted in incorrectly rejecting these jobs. * Remove `MYSQL_OPT_RECONNECT` completely. * Fix cloud nodes in `POWERING_UP` state disappearing (getting set to `FUTURE`) when an `scontrol reconfigure` happens. * `openapi/dbv0.0.39` - Avoid assert / segfault on missing coordinators list. * `slurmrestd` - Correct memory leak while parsing OpenAPI specification templates with server overrides. * `slurmrestd` - Reduce memory usage when printing out job CPU frequency. * Fix overwriting user node reason with system message. * Remove `--uid` / `--gid` options from salloc and srun commands. * Prevent deadlock when rpc_queue is enabled. * `slurmrestd` - Correct OpenAPI specification generation bug where fields with overlapping parent paths would not get generated. * Fix memory leak as a result of a partition info query. * Fix memory leak as a result of a job info query. * slurmrestd - For `GET /slurm/v0.0.39/node[s]`, change format of node's energy field `current_watts` to a dictionary to account for unset value instead of dumping `4294967294`. * `slurmrestd` - For `GET /slurm/v0.0.39/qos`, change format of QOS's field `priority` to a dictionary to account for unset value instead of dumping `4294967294`. * `slurmrestd` - For `GET /slurm/v0.0.39/job[s]`, the `return code` code field in `v0.0.39_job_exit_code` will be set to 127 instead of being left unset where job does not have a relevant return code. * `data_parser/v0.0.39` - Add `required/memory_per_cpu` and required/memory_per_node to `sacct --json` and `sacct --yaml` and `GET /slurmdb/v0.0.39/jobs` from `slurmrestd`. * For step allocations, fix `--gres=none` sometimes not ignoring gres from the job. * Fix `--exclusive` jobs incorrectly gang-scheduling where they shouldn't. * Fix allocations with `CR_SOCKET`, gres not assigned to a specific socket, and block core distribion potentially allocating more sockets than required. * `gpu/oneapi` - Store cores correctly so CPU affinity is tracked. * Revert a change in 23.02.3 where Slurm would kill a script's process group as soon as the script ended instead of waiting as long as any process in that process group held the stdout/stderr file descriptors open. That change broke some scripts that relied on the previous behavior. Setting time limits for scripts (such as `PrologEpilogTimeout`) is strongly encouraged to avoid Slurm waiting indefinitely for scripts to finish. * Allow slurmdbd -R to work if the root assoc id is not 1. * Fix `slurmdbd -R` not returning an error under certain conditions. * `slurmdbd` - Avoid potential NULL pointer dereference in the mysql plugin. * Revert a change in 23.02 where `SLURM_NTASKS` was no longer set in the job's environment when `--ntasks-per-node` was requested. * Limit periodic node registrations to 50 instead of the full `TreeWidth`. Since unresolvable `cloud/dynamic` nodes must disable fanout by setting `TreeWidth` to a large number, this would cause all nodes to register at once. * Fix regression in 23.02.3 which broken x11 forwarding for hosts when `MUNGE` sends a localhost address in the encode host field. This is caused when the node hostname is mapped to 127.0.0.1 (or similar) in `/etc/hosts`. * `openapi/[db]v0.0.39` - fix memory leak on parsing error. * `data_parser/v0.0.39` - fix updating qos for associations. * `openapi/dbv0.0.39` - fix updating values for associations with null users. * Fix minor memory leak with `--tres-per-task` and licenses. * Fix cyclic socket cpu distribution for tasks in a step where `--cpus-per-task` < usable threads per core. - Changes in Slurm 23.02.4 * Fix `sbatch` return code when --wait is requested on a job array. * `switch/hpe_slingshot` - avoid segfault when running with old libcxi. * Avoid slurmctld segfault when specifying `AccountingStorageExternalHost`. * Fix collected `GPUUtilization` values for `acct_gather_profile` plugins. * Fix slurmrestd handling of job hold/release operations. * Make spank `S_JOB_ARGV` item value hold the requested command argv instead of the srun `--bcast` value when `--bcast` requested (only in local context). * Fix step running indefinitely when slurmctld takes more than `MessageTimeout` to respond. Now, `slurmctld` will cancel the step when detected, preventing following steps from getting stuck waiting for resources to be released. * Fix regression to make job_desc.min_cpus accurate again in job_submit when requesting a job with `--ntasks-per-node`. * `scontrol` - Permit changes to `StdErr` and `StdIn` for pending jobs. * `scontrol` - Reset std{err,in,out} when set to empty string. * `slurmrestd` - mark environment as a required field for job submission descriptions. * `slurmrestd` - avoid dumping null in OpenAPI schema required fields. `data_parser/v0.0.39` - avoid rejecting valid `memory_per_node` formatted as dictionary provided with a job description. * `data_parser/v0.0.39` - avoid rejecting valid `memory_per_cpu` formatted as dictionary provided with a job description. * `slurmrestd` - Return HTTP error code 404 when job query fails. * `slurmrestd` - Add return schema to error response to job and license query. * Fix handling of ArrayTaskThrottle in backfill. * Fix regression in 23.02.2 when checking gres state on `slurmctld` startup or reconfigure. Gres changes in the configuration were not updated on `slurmctld` startup. On startup or reconfigure, these messages were present in the log: "`error: Attempt to change gres/gpu Count`". * Fix potential double count of gres when dealing with limits. * `switch/hpe_slingshot` - support alternate traffic class names with "`TC_`" prefix. * `scrontab` - Fix cutting off the final character of quoted variables. * Fix `slurmstepd` segfault when `ContainerPath` is not set in `oci.conf`. * Change the log message warning for rate limited users from debug to verbose. * Fixed an issue where jobs requesting licenses were incorrectly rejected. * `smail` - Fix issues where emails at job completion were not being sent. * `scontrol/slurmctld` - fix comma parsing when updating a reservation's nodes. * `cgroup/v2` - Avoid capturing log output for ebpf when constraining devices, as this can lead to inadvertent failure if the log buffer is too small. * Fix --gpu-bind=single binding tasks to wrong gpus, leading to some gpus having more tasks than they should and other gpus being unused. * Fix main scheduler loop not starting after failover to backup controller. * Added error message when attempting to use sattach on batch or extern steps. * Fix regression in 23.02 that causes slurmstepd to crash when `srun` requests more than `TreeWidth` nodes in a step and uses the `pmi2` or `pmix` plugin. * Reject job `ArrayTaskThrottle` update requests from unprivileged users. * `data_parser/v0.0.39` - populate description fields of property objects in generated OpenAPI specifications where defined. * `slurmstepd` - Avoid segfault caused by ContainerPath not being terminated by '`/`' in `oci.conf`. * `data_parser/v0.0.39` - Change `v0.0.39_job_info` response to tag `exit_code` field as being complex instead of only an unsigned integer. * `job_container/tmpfs` - Fix %h and %n substitution in `BasePath` where `%h` was substituted as the `NodeName` instead of the hostname, and `%n` was substituted as an empty string. * Fix regression where --cpu-bind=verbose would override `TaskPluginParam`. * `scancel` - Fix `--clusters`/`-M` for federations. Only filtered jobs (e.g. -A, -u, -p, etc.) from the specified clusters will be canceled, rather than all jobs in the federation. Specific jobids will still be routed to the origin cluster for cancellation.- Update to version 23.11.03 * slurmrestd - Reject single http query with multiple path requests. * Fix launching Singularity v4.x containers with `srun --container` by setting .process.terminal to true in generated `config.json` when step has pseudoterminal (`--pty`) requested. * Fix loading in `dyanmic/cloud` node jobs after `net_cred` expired. * Fix cgroup null path error on `slurmd/slurmstepd` tear down. * `data_parser/v0.0.40` - Prevent failure if accounting is disabled, instead issue a warning if needed data from the database can not be retrieved. * `openapi/slurmctld` - Prevent failure if accounting is disabled. * Prevent `slurmscriptd` processing delays from blocking other threads in `slurmctld` while trying to launch various scripts. This is additional work for a fix in 23.02.6. * Fix memory leak when receiving alias addrs from controller. * `scontrol` - Accept `scontrol token lifespan=infinite` to create tokens that effectively do not expire. * Avoid errors when Slurmdb accounting disabled when `--json` or `--yaml` is invoked with CLI commands and `slurmrestd`. Add warnings when query would have populated data from Slurmdb instead of errors. * Fix `slurmctld` memory leak when running job with `--tres-per-task=gres:shard:#` * Fix backfill trying to start jobs outside of backfill window. * Fix oversubscription on partitions with `PreemptMode=OFF`. * Preserve node reason on power up if the node is downed or drained. * `data_parser/v0.0.40` - Avoid aborting when invoking a not implemented parser. * `data_parser/v0.0.40` - Fix how nice values are parsed for job submissions. * `data_parser/v0.0.40` - Fix regression where parsing error did not result in invalid request being rejected. * Fix segfault in front-end node registration. * Prevent jobs using none typed gpus from being killed by the controller after a reconfig or restart. * Fix deadlock situation in the dbd when adding associations. * Update default values of text/blob columns when updating from old mysql versions in more situations. This improves a previous fix to handle an uncommon case when upgrading mysql/mariadb. * Fix rpmbuild in openSUSE/SLES due to incorrect mariadb dependency. * When upgrading the slurmdbd to 23.11, avoid generating a query to update the association table that is larger than `max_allowed_packet` which would result in an upgrade failure. * Fix rare deadlock when a dynamic node registers at the same time that a once per minute background task occurs. * `data_parser/v0.0.40` - Fix enumerated strings in OpenAPI specification not have type field specified. * Improve `scontrol show job -d` information of used shared gres (`shard/mps`) topology. * accounting_storage/mysql - Fix usage query to use new lineage column instead of lft/rgt. * `slurmrestd` - Improve handling of missing parsers when content plugins expect parsers not loaded. * `slurmrestd` - Correct parsing of StepIds when querying jobs. * `slurmrestd` - Improve error from parsing failures of lists. * `slurmrestd` - Improve parsing of singular values for lists. * `accounting_storage/mysql` - Fix `PrivateData=User` when listing associations. * Disable sorting of dynamic nodes to avoid issues when restarting with heterogenous jobs that cause jobs to abort on restart. * Don't allow deletion of non-dynamic nodes. * `accounting_storage/mysql` - Fix issue adding partition based associations. * Respect non-"slurm" settings for `I_MPI_HYDRA_BOOTSTRAP` and `HYDRA_BOOTSTRAP` and avoid injecting the `--external-launcher` option which will cause `mpirun/mpiexec` to fail with an unexpected argument error. * Fix bug where scontrol hold would change node count for jobs with implicitly defined node counts. * `data_parser/v0.0.40` - Fix regression of support for "hold" in job description. * Avoid sending KILL RPCs to unresolvable `POWERING_UP` and `POWERED_DOWN` nodes. * `data_parser/v0.0.38` - Fix several potential NULL dereferences that could cause slurmrestd to crash. * Add `--gres-flags=one-task-per-sharing`. Do not allow different tasks in to be allocated shared gres from the same sharing gres. * Add `SelectTypeParameters=ENFORCE_BINDING_GRES` and `ONE_TASK_PER_SHARING_GRES`. This gives default behavior for a job's `--gres-flags`. * Alter the networking code to try connecting to the backup controllers if the DNS lookup for the primary `SlurmctldHost` fails. * Alter the name resolution to only log at `verbose()` in client commands on failures. This allows for HA setups where the DNS entries are withdrawn for some `SlurmctldHost` entries without flooding the user with errors. * Prevent `slurmscriptd` PID leaks when running `slurmctld` in foreground mode. * Open all `slurmctld` listening ports at startup, and persist throughout. This also changes the backup `slurmctld` process to open the `SlurmctldPort` range, instead of only the first. * Fix backup `slurmctld` shutting down instead of resuming standby duty if it took control. * Fix race condition that delayed the primary `slurmctld` resuming when taking control from a backup controller. * `srun` - Ensure processed messages are meant for this job in case of a rapidly-reused TCP port. * `srun` - Prevent step launch failure while waiting for step allocation if a stray message is received. * Fix backup `slurmctld` to be able to respond to configless config file requests correctly. * Fix `slurmctld` crashing when recovering from a failed reconfigure. * Fix `slurmscriptd` operation after recovering from a failed reconfigure. - Make sure `-std=gnu99` is added to CFLAGS on SLE-12. - Use %%autopatch.- Update to 23.11.1 with following major improvements and fixing CVE-2023-49933, CVE-2023-49934, CVE-2023-49935, CVE-2023-49936 and CVE-2023-49937 * Substantially overhauled the SlurmDBD association management code. For clusters updated to 23.11, account and user additions or removals are significantly faster than in prior releases. * Overhauled `scontrol reconfigure` to prevent configuration mistakes from disabling slurmctld and slurmd. Instead, an error will be returned, and the running configuration will persist. This does require updates to the systemd service files to use the `--systemd` option to `slurmctld` and `slurmd`. * Added a new internal `auth/cred` plugin - `auth/slurm`. This builds off the prior `auth/jwt` model, and permits operation of the `slurmdbd` and `slurmctld` without access to full directory information with a suitable configuration. * Added a new `--external-launcher` option to `srun`, which is automatically set by common MPI launcher implementations and ensures processes using those non-srun launchers have full access to all resources allocated on each node. * Reworked the dynamic/cloud modes of operation to allow for "fanout" - where Slurm communication can be automatically offloaded to compute nodes for increased cluster scalability. * Overhauled and extended the Reservation subsystem to allow for most of the same resource requirements as are placed on the job. Notably, this permits reservations to now reserve GRES directly. - Details of changes: * Fix `scontrol update job=... TimeLimit+=/-=` when used with a raw JobId of job array element. * Reject `TimeLimit` increment/decrement when called on job with `TimeLimit=UNLIMITED`. * Fix issue with requesting a job with `*licenses` as well as `*tres-per-task=license`. * `slurmctld` - Prevent segfault in `getopt_long()` with an invalid long option. * slurmrestd - Added `/meta/slurm/cluster` field to responses. * Adjust systemd service files to start daemons after `remote-fs.target`. * Fix `task/cgroup` indexing tasks in cgroup plugins, which caused `jobacct/gather` to match the gathered stats with the wrong task id. * `select/linear` - Fix regression in 23.11 in which jobs that requested `*cpus-per-task` were rejected. * `data_parser/v0.0.40` - Fix the parsing for `/slurmdb/v0.0.40/jobs` exit_code query parameter. * If a job requests more shards which would allocate more than one sharing GRES (gpu) per node refuse it unless `SelectTypeparameters` has `MULTIPLE_SHARING_GRES_PJ`. * Trigger fatal exit when Slurm API function is called before `slurm_init()` is called. * `slurmd` - Fix issue with `scontrol reconfigure` when started with `-c`. * `slurmrestd` - Job submissions that result in the following error codes will be considered as successfully submitted (with a warning), instead of returning an HTTP 500 error back: `ESLURM_NODES_BUSY`, `ESLURM_RESERVATION_BUSY`, `ESLURM_JOB_HELD`, `ESLURM_NODE_NOT_AVAIL`, `ESLURM_QOS_THRES`, `ESLURM_ACCOUNTING_POLICY`, `ESLURM_RESERVATION_NOT_USABLE`, `ESLURM_REQUESTED_PART_CONFIG_UNAVAILABLE`, `ESLURM_BURST_BUFFER_WAIT`, ESLURM_PARTITION_DOWN`, `ESLURM_LICENSES_UNAVAILABLE`. * Fix a `slurmctld` fatal error when upgrading to 23.11 and changing from `select/cons_res` to `select/cons_tres` at the same time. * `slurmctld` - Reject arbitrary distribution jobs that have a minimum node count that differs from the number of unique nodes in the hostlist. * Prevent `slurmdbd` errors when updating reservations with names containing apostrophes. * Prevent message extension attacks that could bypass the message hash. CVE-2023-49933. * Prevent SQL injection attacks in `slurmdbd`. CVE-2023-49934. * Prevent message hash bypass in slurmd which can allow an attacker to reuse root-level MUNGE tokens and escalate permissions. CVE-2023-49935. * Prevent NULL pointer dereference on size_valp overflow. CVE-2023-49936. * Prevent double-xfree() on error in `_unpack_node_reg_resp()`. CVE-2023-49937. * For jobs that request `*cpus-per-gpu`, ensure that the `*cpus-per-gpu request` is honored on every node in the and not just for the job as a whole. * Fix listing available `data_parser` plugins for json and yaml when giving no commands to `scontrol` or `sacctmgr`. * `slurmctld` - Rework `scontrol reconfigure` to avoid race conditions that can result in stray jobs. * `slurmctld` - Shave ~1 second off average reconfigure time by terminating internal processing threads faster. * Skip running `slurmdbd -R` if the connected cluster is 23.11 or newer. This operation is no longer relevant for 23.11. * Ensure `slurmscriptd` shuts down before `slurmctld` is stopped or reconfigured. * Improve error handling and error messages in `slurmctld` to `slurmscriptd` communications. This includes avoiding potential deadlock in `slurmctld` if slurmscript dies unexpectedly. * Do not hold batch jobs whose extra constraints cannot be immediately satisfied, and set the state reason to `Constraints` instead of `BadConstraints`. * Fix verbose log message printing a hex number instead of a job id. * Upgrade rate limit parameters message from debug to info. * For `SchedulerParameters=extra_constraints`, prevent `slurmctld` segfault when starting a `slurmd` with `*extra` for a node that did not previously set this. This also ensures the extra constraints model works off the current node state, not the prior state. * Fix `*tres-per-task` assertion. * Fix a few issues when creating reservations. * Add `SchedulerParameters=time_min_as_soft_limit` option. * Remove `SLURM_WORKING_CLUSTER` env from batch and srun environments. * `cli_filter/lua` - return nil for unset time options rather than the string `2982616-04:14:00` (which is the internal macro `NO_VAL` represented as time string). * Remove 'none' plugins for all but auth and cred. scontrol show config will report (null) now. * Removed `select/cons_res`. Please update your configuration to `select/cons_tres`. * `mpi/pmix` - When aborted with status 0, avoid marking job/step as failed. * Fixed typo on `initialized` for the description of `ESLURM_PLUGIN_NOT_LOADED`. * `cgroup.conf` - Removed deprecated parameters `AllowedKmemSpace`, `ConstrainKmemSpace`, `MaxKmemPercent`, and `MinKmemSpace`. * `proctrack/cgroup` - Add `SignalChildrenProcesses=` option to `cgroup.conf`. This allows signals for cancelling, suspending, resuming, etc. to be sent to children processes in a `step/job` rather than just the parent. * Add `PreemptParameters=suspend_grace_time` parameter to control amount of time between `SIGTSTP` and `SIGSTOP` signals when suspending jobs. * `job_submit/throttle` - improve reset of submitted job counts per user in order to better honor `SchedulerParameters=jobs_per_user_per_hour=#`. * Load the user environment into a private pid namespace to avoid user scripts leaving background processes on a node. * `scontrol` show `assoc_mgr` will display Lineage instead of Lft for associations. * Add `SlurmctldParameters=no_quick_restart` to avoid a new `slurmctld` taking over the old `slurmctld` by accident. * Fix `--cpus-per-gpu` for step allocations, which was previously ignored for job steps. `*cpus-per-gpu` implies `--exact`. * Fix mutual exclusivity of `--cpus-per-gpu` and `--cpus-per-task`: fatal if both options are requested in the commandline or both are requested in the environment. If one option is requested in the command line, it will override the other option in the environment. * `slurmrestd` - `openapi/dbv0.0.37` and `openapi/v0.0.37` plugins have been removed. * `slurmrestd` - `openapi/dbv0.0.38` and `openapi/v0.0.38` plugins have been tagged as deprecated. * `slurmrestd` - added auto population of `info/version` field. * `sdiag` - add `--yaml` and `--json` arg support to specify data_parser plugin. * `sacct` - add `--yaml` and `--json` arg support to specify `data_parser` plugin. * `scontrol` - add `--yaml` and `--json` arg support to specify `data_parser` plugin. * `sinfo` - add `--yaml` and `--json` arg support to specify `data_parser` plugin. * `squeue` - add `--yaml` and `--json` arg support to specify `data_parser` plugin. * Changed the default `SelectType` to `select/cons_tres` (from `select/linear`). * Allow `SlurmUser`/`root` to use reservations without specific permissions. * Fix sending step signals to nodes not allocated by the step. * Remove `CgroupAutomount=` option from `cgroup.conf`. * Add `TopologyRoute=RoutePart` to route communications based on partition node lists. * Added ability for configless to push Prolog and Epilog scripts to `slurmd`s. * Prolog and Epilog do not have to be fully qualified pathnames. * Changed default value of `PriorityType` from `priority/basic` to `priority/multifactor`. * `torque/mpiexec` - Propogate exit code from `launched` process. * `slurmrestd` - Add new rlimits fields for job submission. * Define SPANK options environment variables when `--export=[NIL|NONE]` is specified. * `slurmrestd` - Numeric input fields provided with a null formatted value will now convert to zero (0) where it can be a valid value. This is expected to be only be notable with job submission against v0.0.38 versioned endpoints with job requests with fields provided with null values. These fields were already rejected by v0.0.39+ endpoints, unless `+complex` parser value is provided to v0.0.40+ endpoints. * `slurmrestd` - Improve parsing of integers and floating point numbers when handling incoming user provided numeric fields. Fields that would have not rejected a number for a numeric field followed by other non-numeric characters will now get rejected. This is expected to be only be notable with job submission against v0.0.38 versioned endpoints with malformed job requests. * Reject reservation update if it will result in previously submitted jobs losing access to the reservation. * `data_parser/v0.0.40` - output partition state when dumping partitions. * Allow for a shared suffix to be used with the hostlist format. E.g., `node[0001-0010]-int`. * Replace `SRUN_CPUS_PER_TASK` with `SLURM_CPUS_PER_TASK` and get back the previous behavior before Slurm 22.05 since now we have the new external launcher step. * `job_container/tmpfs` - Add `BasePath=none` option to disable plugin on node subsets when there is a global setting. * Add QOS flag `Relative`. If set the QOS limits will be treated as percentages of a cluster/partition instead of absolutes. * Remove `FIRST_CORES` flag from reservations. * Add cloud instance id and instance type to node records. Can be viewed/updated with `scontrol`. * `slurmd` - add `instance-id`, `instance-type`, and `extra` options to allow them to be set on startup. * Add cloud instance accounting to database that can be viewed with `sacctmgr show instance`. * `select/linear` - fix task launch failure that sometimes occurred when requesting `*threads-per-core` or `--hint=nomultithread`. This also fixes memory calculation with one of these options and `*mem-per-cpu`: Previously, memory = mem-per-cpu * all cpus including unusable threads. Now, memory = mem-per-cpu * only usuable threads. This behavior matches the documentation and select/cons_tres. * `gpu/nvml` - Reduce chances of `NVML_ERROR_INSUFFICIENT_SIZE` error when getting gpu memory information. * `slurmrestd` - Convert to generating `OperationIDs` based on path for all v0.0.40 tagged paths. * `slurmrestd` - Reduce memory used while dumping a job's stdio paths. * `slurmrestd` - Jobs queried from `data_parser/v0.0.40` from `slurmdb` will have `step/id` field given as a string to match CLI formatting instead of an object. * `sacct` - Output in JSON or YAML output will will have the `step/id` field given as a string instead of an object. * `scontrol`/`squeue` - Step output in JSON or YAML output will will have the `id` field given as a string instead of an object. * `slurmrestd` - For `GET /slurmdb/v0.0.40/jobs` mimick default behavior for handling of job start and end times as `sacct` when one or both fields are not provided as a query parameter. * `openapi/slurmctld` - Add `GET /slurm/v0.0.40/shares` endpoint to dump same output as `sshare`. * `sshare` - add JSON/YAML support. * `data_parser/v0.0.40` - Remove `required/memory` output in json. It is replaced by `required/memory_per_cpu` and `required/memory_per_node`. * `slurmrestd` - Add numeric id to all association identifiers to allow unique identification where association has been deleted but is still referenced by accounting record. * `slurmrestd` - Add accounting, id, and comment fields to association dumps. * Use `memory.current` in cgroup/v2 instead of manually calculating RSS. This makes accounting consistent with OOM Killer. * `sreport` - cluster Utilization `PlannedDown` field now includes the time that all nodes were in the `POWERED_DOWN` state instead of just cloud nodes. * `scontrol` update partition now allows `Nodes+=` and `Nodes-=` to add/delete nodes from the existing partition node list. `Nodes=+host1,-host2` is also allowed. * `sacctmgr` - add `--yaml` and `--json` arg support to specify `data_parser` plugin. * `sacctmgr` can now modify QOS's RawUsage to zero or a positive value. * `sdiag` - Added statistics on why the main and backfill schedulers have stopped evaluation on each scheduling cycle. the number of `RPC limit exceeded...` messages that are logged. * Rename `sbcast --fanout` to `--treewidth`. * Remove `SLURM_NODE_ALIASES` env variable. * Enable fanout for dynamic and unaddresable cloud nodes. * Fix how steps are dealloced in an allocation if the last step of an srun never completes due to a node failure. * Remove redundant database indexes. * Add database index to suspend table to speed up archive/purges. * When requesting `--tres-per-task` alter incorrect request for TRES, it should be `TRESType/TRESName` not `TRESType:TRESName`. * Make it so reservations can reserve GRES. * `sbcast` - use the specified `--fanout` value on all hops in message forwarding; previously the specified fanout was only used on the first hop, and additional hops used `TreeWidth` in `slurm.conf`. * `slurmrestd`- remove logger prefix from `-s/-a list` options outputs. * `switch/hpe_slingshot` - Add support for collectives. * Nodes with suspended jobs can now be displayed as `MIXED`. * Fix inconsistent handling of using cli and/or environment options for `tres_per_task=cpu:#` and `cpus_per_gpu`. * Requesting `--cpus-per-task` will now set `SLURM_TRES_PER_TASK=cpu:#` in the environment. * For some tres related environment variables such as `SLURM_TRES_PER_TASK`, when `srun` requests a different value for that option, set these environment variables to the value requested by `srun`. Previously these environment variables were unchanged from the job allocation. This bug only affected the output environment variables, not the actual step resource allocation. * `RoutePlugin=route/topology` has been replaced with `TopologyParam=RouteTree`. * If `ThreadsPerCore` in `slurm.conf` is configured with less than the number of hardware threads, fix a bug where the task plugins used fewer cores instead of using fewer threads per core. * Fix arbitrary distribution allowing it to be used with `salloc` and `sbatch` and fix how cpus are allocated to nodes. * Allow nodes to reboot while node is drained or in a maintenance state. * Allow `scontrol` reboot to use nodesets to filter nodes to reboot. * Fix how the topology of typed gres gets updated. * Changes to the Type option in gres.conf now can be applied with `scontrol` reconfig. * Allow for jobs that request a newly configured gres type to be queued even when the needed `slurmd`s have not yet registered. * Kill recovered jobs that require unconfigured gres types. * If keepalives are configured, enable them on all persistent connections. * Configless - Also send Includes from configuration files not parsed by the controller (i.e. from `plugstack.conf`). * Add `gpu/nrt` plugin for nodes using Trainium/Inferentia devices. * `data_parser/v0.0.40` - Add `START_RECEIVED` to job flags in dumped output. * SPANK - Failures from most spank functions (not epilog or exit) will now cause the step to be marked as failed and the command (`srun`, `salloc`, `sbatch *wait`) to return 1.- Update to 23.02.6 to fix (CVE-2023-49933 - bsc#1218046, CVE-2023-49935 - bsc#1218049, CVE-2023-49936 - bsc#1218050, CVE-2023-49937 - bsc#1218051, CVE-2023-49938 - bsc#1218053) * Security Fixes: + Add `JobAcctGatherParams=DisableGPUAcct` to disable gpu accounting. + `acct_gather_energy/ipmi` - Improve logging of DCMI issues. + `gpu/oneapi` - Add support for new env vars `ZE_FLAT_DEVICE_HIERARCHY` and `ZE_ENABLE_PCI_ID_DEVICE_ORDER`. + `data_parser/v0.0.39` - skip empty string when parsing QOS ids. + Remove error message from `assoc_mgr_update_assocs` when purposefully resetting the default QOS. * Bug Fixes: + `libslurm_nss` - Avoid causing glibc to assert due to an unexpected return from slurm_nss due to an error during lookup. + Fix job requests with `--tres-per-task` sometimes resulting in bad allocations that cannot run subsequent job steps. + Fix issue with `slurmd` where `srun` fails to be warned when a node prolog script runs beyond `MsgTimeout` set in `slurm.conf`. + `gres/shard` - Fix plugin functions to have matching parameter orders. + `gpu/nvml` - Fix issue that resulted in the wrong MIG devices being constrained to a job + `gpu/nvml` - Fix linking issue with MIGs that prevented multiple MIGs being used in a single job for certain MIG configurations + Fix file descriptor leak in slurmd when using `acct_gather_energy/ipmi` with DCMI devices. + `sview` - avoid crash when job has a node list string > 49 characters. + Prevent `slurmctld` crash during reconfigure when packing job start messages. + Preserve reason uid on reconfig. + Update node reason with updated `INVAL` state reason if different from last registration. + `conmgr` - Avoid NULL dereference when using `auth/none`. + `data_parser/v0.0.39` - Fixed how deleted QOS and associations for jobs are dumped. + `burst_buffer/lua` - fix stage in counter not decrementing when a job is cancelled during stage in. This counter is used to enforce the limit of 128 scripts per stage. + `data_parser/v0.0.39` - Fix how the `INVALID` nodes state is dumped. + `data_parser/v0.0.39` - Fix parsing of flag arrays to allow muliple flags to be set. + Avoid leaking sockets when an x11 application is closed in an allocation. + Fix missing mutex unlock in group cache code which could cause slurmctld to freeze. + Fix scrontab monthly jobs possibly skipping a month if added near the end of the month. + Fix loading of the gpu account gather energy plugin. + Fix `slurmctld` segfault when reconfiguring after a job resize. + Fix crash in slurmstepd that can occur when launching tasks via mpi using the `pmi2` plugin and using the `route/topology` plugin. + Fix `qos doesn't exist` error message in `assoc_mgr_update_assocs` to print the attempted new default qos, rather than the current default qos. + `data_parser/v0.0.39` - Fix segfault when POSTing data with association usage. * Other Changes and Improvements: + Prevent message extension attacks that could bypass the message hash. CVE-2023-49933. + Prevent message hash bypass in slurmd which can allow an attacker to reuse root-level MUNGE tokens and escalate permissions. CVE-2023-49935. + Prevent NULL pointer dereference on `size_valp` overflow. CVE-2023-49936. + Prevent double-xfree() on error in `_unpack_node_reg_resp()`. CVE-2023-49937. + Prevent modified `sbcast` RPCs from opening a file with the wrong group permissions. CVE-2023-49938. - Fix %do_obsoletes macro expansion to work with SLE-12.- Add missing service file for slurmrestd (boo#1217711).- Explicitly create an Obsoletes: entry for each package version that is obsoleted by the present version. These are all published versions of the last two major releases as well as all minor versions of the present release lower than the current one (bsc#1216869 2nd part). This prevents the current version to upgrade a old Slurm version for which no upgrade path exists.- On SLE-12 exclude build for s390x.- Add missing dependencies to slurm-config to plugins package. These should help to tie down the slurm version and help to avoid a package mix (bsc#1216869).- update to 23.02.6 to fix (CVE-2023-41914, bsc#1216207) * Removed Fix-test-32.8.patch as fixed upstream * Bug Fixes: + Fix `CpusPerTres=` not upgreadable with scontrol update + Fix unintentional gres removal when validating the gres job state. + Fix `--without-hpe-slingshot` configure option. + Fix cgroup v2 memory calculations when transparent huge pages are used. + Fix parsing of `sgather --timeout` option. + Fix regression from 22.05.0 that caused `srun --cpu-bind "=verbose"` and `"=v"` options give different CPU bind masks. + Fix "_find_node_record: lookup failure for node" error message appearing for all dynamic nodes during reconfigure. + Avoid segfault if loading serializer plugin fails. + `slurmrestd` - Correct OpenAPI format for `GET /slurm/v0.0.39/licenses`. + `slurmrestd` - Correct OpenAPI format for `GET /slurm/v0.0.39/job/{job_id}`. + `slurmrestd` - Change format to multiple fields in `GET /slurmdb/v0.0.39/assocations` and `GET /slurmdb/v0.0.39/qos` to handle infinite and unset states. + When a node fails in a job with `--no-kill`, preserve the extern step on the remaining nodes to avoid breaking features that rely on the extern step such as `pam_slurm_adopt`, `x11`, and `job_container/tmpfs`. + `auth/jwt` - Ignore `x5c` field in JWKS files. + `auth/jwt` - Treat 'alg' field as optional in JWKS files. + Allow job_desc.selinux_context to be read from the job_submit.lua script. + Skip check in slurmstepd that causes a large number of errors in the munge log: "Unauthorized credential for client UID=0 GID=0". This error will still appear on `slurmd`/`slurmctld`/`slurmdbd` start up and is not a cause for concern. + `slurmctld` - Allow startup with zero partitions. + Fix some mig profile names in slurm not matching nvidia mig profiles. + Prevent `slurmscriptd` processing delays from blocking other threads in `slurmctld` while trying to launch `{Prolog|Epilog}Slurmctld`. + Fix sacct printing ReqMem field when memory doesn't exist in requested TRES. + Fix how heterogenous steps in an allocation with `CR_PACK_NODE` or `-mpack` are created. + Fix `slurmctld` crash from race condition within `job_submit_throttle` plugin. + Fix `--with-systemdsystemunitdir` when requesting a default location. + Fix not being able to cancel an array task by the jobid (i.e. not `_`) through scancel, job launch failure or prolog failure. + Fix cancelling the whole array job when the array task is the meta job and it fails job or prolog launch and is not requeable. Cancel only the specific task instead. + Fix regression in 21.08.2 where MailProg did not run for `mail-type=end` for jobs with non+zero exit codes. + Fix incorrect setting of memory.swap.max in cgroup/v2. + Fix `jobacctgather/cgroup` collection of disk/io, gpumem, gpuutil TRES values. + Fix -d singleton for heterogeneous jobs. + Downgrade info logs about a job meeting a "maximum node limit" in the select plugin to `DebugFlags=SelectType`. These info logs could spam the slurmctld log file under certain circumstances. + `prep/script` - Fix `[Srun|Task]` missing `SLURM_JOB_NODELIST`. + gres - Rebuild GRES core bitmap for nodes at startup. This fixes error: "Core bitmaps size mismatch on node [HOSTNAME]", which causes jobs to enter state "Requested node configuration is not available". + `slurmctd` - Allow startup with zero nodes. + Fix filesystem handling race conditions that could lead to an attacker taking control of an arbitrary file, or removing entire directories' contents. CVE-2023-41914.- Updated to version 23.02.5 with the following changes: * Bug Fixes: + Revert a change in 23.02 where `SLURM_NTASKS` was no longer set in the job's environment when `--ntasks-per-node` was requested. The method that is is being set, however, is different and should be more accurate in more situations. + Change pmi2 plugin to honor the `SrunPortRange` option. This matches the new behavior of the pmix plugin in 23.02.0. Note that neither of these plugins makes use of the `MpiParams=ports=` option, and previously were only limited by the systems ephemeral port range. + Fix regression in 23.02.2 that caused slurmctld -R to crash on startup if a node features plugin is configured. + Fix and prevent reoccurring reservations from overlapping. + `job_container/tmpfs` - Avoid attempts to share BasePath between nodes. + With `CR_Cpu_Memory`, fix node selection for jobs that request gres and `--mem-per-cpu`. + Fix a regression from 22.05.7 in which some jobs were allocated too few nodes, thus overcommitting cpus to some tasks. + Fix a job being stuck in the completing state if the job ends while the primary controller is down or unresponsive and the backup controller has not yet taken over. + Fix `slurmctld` segfault when a node registers with a configured `CpuSpecList` while `slurmctld` configuration has the node without `CpuSpecList`. + Fix cloud nodes getting stuck in `POWERED_DOWN+NO_RESPOND` state after not registering by `ResumeTimeout`. + `slurmstepd` - Avoid cleanup of `config.json-less` containers spooldir getting skipped. + Fix scontrol segfault when 'completing' command requested repeatedly in interactive mode. + Properly handle a race condition between `bind()` and `listen()` calls in the network stack when running with SrunPortRange set. + Federation - Fix revoked jobs being returned regardless of the `-a`/`--all` option for privileged users. + Federation - Fix canceling pending federated jobs from non-origin clusters which could leave federated jobs orphaned from the origin cluster. + Fix sinfo segfault when printing multiple clusters with `--noheader` option. + Federation - fix clusters not syncing if clusters are added to a federation before they have registered with the dbd. + `node_features/helpers` - Fix node selection for jobs requesting changeable. features with the `|` operator, which could prevent jobs from running on some valid nodes. + `node_features/helpers` - Fix inconsistent handling of `&` and `|`, where an AND'd feature was sometimes AND'd to all sets of features instead of just the current set. E.g. `foo|bar&baz` was interpreted as `{foo,baz}` or `{bar,baz}` instead of how it is documented: `{foo} or {bar,baz}`. + Fix job accounting so that when a job is requeued its allocated node count is cleared. After the requeue, sacct will correctly show that the job has 0 `AllocNodes` while it is pending or if it is canceled before restarting. + `sacct` - `AllocCPUS` now correctly shows 0 if a job has not yet received an allocation or if the job was canceled before getting one. + Fix intel OneAPI autodetect: detect the `/dev/dri/renderD[0-9]+` GPUs, and do not detect `/dev/dri/card[0-9]+`. + Fix node selection for jobs that request `--gpus` and a number of tasks fewer than GPUs, which resulted in incorrectly rejecting these jobs. + Remove `MYSQL_OPT_RECONNECT` completely. + Fix cloud nodes in `POWERING_UP` state disappearing (getting set to `FUTURE`) when an `scontrol reconfigure` happens. + `openapi/dbv0.0.39` - Avoid assert / segfault on missing coordinators list. + `slurmrestd` - Correct memory leak while parsing OpenAPI specification templates with server overrides. + Fix overwriting user node reason with system message. + Prevent deadlock when `rpc_queue` is enabled. + `slurmrestd` - Correct OpenAPI specification generation bug where fields with overlapping parent paths would not get generated. + Fix memory leak as a result of a partition info query. + Fix memory leak as a result of a job info query. + For step allocations, fix `--gres=none` sometimes not ignoring gres from the job. + Fix `--exclusive` jobs incorrectly gang-scheduling where they shouldn't. + Fix allocations with `CR_SOCKET`, gres not assigned to a specific socket, and block core distribion potentially allocating more sockets than required. + Revert a change in 23.02.3 where Slurm would kill a script's process group as soon as the script ended instead of waiting as long as any process in that process group held the stdout/stderr file descriptors open. That change broke some scripts that relied on the previous behavior. Setting time limits for scripts (such as `PrologEpilogTimeout`) is strongly encouraged to avoid Slurm waiting indefinitely for scripts to finish. + Fix `slurmdbd -R` not returning an error under certain conditions. + `slurmdbd` - Avoid potential NULL pointer dereference in the mysql plugin. + Fix regression in 23.02.3 which broken X11 forwarding for hosts when MUNGE sends a localhost address in the encode host field. This is caused when the node hostname is mapped to 127.0.0.1 (or similar) in `/etc/hosts`. + `openapi/[db]v0.0.39` - fix memory leak on parsing error. + `data_parser/v0.0.39` - fix updating qos for associations. + `openapi/dbv0.0.39` - fix updating values for associations with null users. + Fix minor memory leak with `--tres-per-task` and licenses. + Fix cyclic socket cpu distribution for tasks in a step where `--cpus-per-task` < usable threads per core. + `slurmrestd` - For `GET /slurm/v0.0.39/node[s]`, change format of node's energy field `current_watts` to a dictionary to account for unset value instead of dumping 4294967294. + `slurmrestd` - For `GET /slurm/v0.0.39/qos`, change format of QOS's field "priority" to a dictionary to account for unset value instead of dumping 4294967294. + slurmrestd - For `GET /slurm/v0.0.39/job[s]`, the 'return code' code field in `v0.0.39_job_exit`_code will be set to -127 instead of being left unset where job does not have a relevant return code. * Other Changes: + Remove --uid / --gid options from salloc and srun commands. These options did not work correctly since the CVE-2022-29500 fix in combination with some changes made in 23.02.0. + Add the `JobId` to `debug()` messages indicating when `cpus_per_task/mem_per_cpu` or `pn_min_cpus` are being automatically adjusted. + Change the log message warning for rate limited users from verbose to info. + `slurmstepd` - Cleanup per task generated environment for containers in spooldir. + Format batch, extern, interactive, and pending step ids into strings that are human readable. + `slurmrestd` - Reduce memory usage when printing out job CPU frequency. + `data_parser/v0.0.39` - Add `required/memory_per_cpu` and `required/memory_per_node` to `sacct --json` and `sacct --yaml` and `GET /slurmdb/v0.0.39/jobs` from slurmrestd. + `gpu/oneapi` - Store cores correctly so CPU affinity is tracked. + Allow `slurmdbd -R` to work if the root assoc id is not 1. + Limit periodic node registrations to 50 instead of the full `TreeWidth`. Since unresolvable `cloud/dynamic` nodes must disable fanout by setting `TreeWidth` to a large number, this would cause all nodes to register at once.- Updated to 23.02.4 with the following changes: * Bug Fixes: + Fix main scheduler loop not starting after a failover to backup controller. Avoid slurmctld segfault when specifying `AccountingStorageExternalHost` (bsc#1214983). + Fix sbatch return code when `--wait` is requested on a job array. + Fix collected `GPUUtilization` values for `acct_gather_profile` plugins. + Fix `slurmrestd` handling of job hold/release operations. + Fix step running indefinitely when slurmctld takes more than `MessageTimeout` to respond. Now, `slurmctld` will cancel the step when detected, preventing following steps from getting stuck waiting for resources to be released. + Fix regression to make `job_desc.min_cpus` accurate again in `job_submit` when requesting a job with `--ntasks-per-node`. + Fix handling of `ArrayTaskThrottle` in backfill. + Fix regression in 23.02.2 when checking gres state on `slurmctld` startup or reconfigure. Gres changes in the configuration were not updated on slurmctld startup. On startup or reconfigure, these messages were present in the log: `error: Attempt to change gres/gpu Count`. + Fix potential double count of gres when dealing with limits. + Fix `slurmstepd` segfault when `ContainerPath` is not set in `oci.conf` + Fixed an issue where jobs requesting licenses were incorrectly rejected. + `scrontab` - Fix cutting off the final character of quoted variables. + `smail` - Fix issues where e-mails at job completion were not being sent. + `scontrol/slurmctld` - fix comma parsing when updating a reservation's nodes. + Fix `--gpu-bind=single binding` tasks to wrong gpus, leading to some gpus having more tasks than they should and other gpus being unused. + Fix regression in 23.02 that causes slurmstepd to crash when `srun` requests more than `TreeWidth` nodes in a step and uses the pmi2 or pmix plugin. + `job_container/tmpfs` - Fix `%h` and `%n` substitution in `BasePath` where `%h` was substituted as the NodeName instead of the hostname, and %n was substituted as an empty string. + Fix regression where `--cpu-bind=verbose` would override `TaskPluginParam`. + `scancel` - Fix `--clusters/-M` for federations. Only filtered jobs (e.g. `-A`, `-u`, `-p`, etc.) from the specified clusters will be canceled, rather than all jobs in the federation. Specific jobids will still be routed to the origin cluster for cancellation. * Other changes: + Make spank `S_JOB_ARGV` item value hold the requested command `argv` instead of the `srun --bcast` value when `--bcast` requested (only in local context). + `scontrol` - Permit changes to StdErr and StdIn for pending jobs. + `scontrol` - Reset `std`{`err`,`in`,`out`} when set to empty string. + `slurmrestd` - mark environment as a required field for job submission descriptions. + `slurmrestd` - avoid dumping null in OpenAPI schema required fields. + `data_parser/v0.0.39` - avoid rejecting valid `memory_per_node` formatted as dictionary provided with a job description. + `data_parser/v0.0.39` - avoid rejecting valid `memory_per_cpu` formatted as dictionary provided with a job description. + `slurmrestd` - Return HTTP error code 404 when job query fails. + `slurmrestd` - Add return schema to error response to job and license query. + Change the log message warning for rate limited users from debug to verbose. + `cgroup/v2` - Avoid capturing log output for ebpf when constraining devices, as this can lead to inadvertent failure if the log buffer is too small. + Added error message when attempting to use sattach on batch or extern steps. + Reject job `ArrayTaskThrottle` update requests from unprivileged users. + `data_parser/v0.0.39` - populate description fields of property objects in generated OpenAPI specifications where defined. + `slurmstepd` - Avoid segfault caused by `ContainerPath` not being terminated by `/` in `oci.conf`. + `data_parser/v0.0.39` - Change `v0.0.39_job_info` response to tag `exit_code` field as being complex instead of only an unsigned integer. - Updated to 23.02.3 with the following changes: * Bug Fixes: + `slurmctld` - Fix backup slurmctld crash when it takes control multiple times. + Fix regression in 23.02.2 that ignored the partition `DefCpuPerGPU` setting on the first pass of scheduling a job requesting `--gpus --ntasks`. + `srun` - fix issue creating regular and interactive steps because environment variables were incorrectly set on non-HetSteps. + Fix dynamic nodes getting stuck in allocated states when reconfiguring. + Fix regression in 23.02.2 that set the `SLURM_NTASKS` environment variable in sbatch jobs from `--ntasks-per-node` when `--ntasks` was not requested. + Fix regression in 23.02 that caused sbatch jobs to set the wrong number of tasks when requesting `--ntasks-per-node` without `--ntasks`, and also requesting one of the following options: `--sockets-per-node`, `--cores-per-socket`, `--threads-per-core` (or `--hint=nomultithread`), or `-B,--extra-node-info`. + Fix double counting suspended job counts on nodes when reconfiguring, which prevented nodes with suspended jobs from being powered down or rebooted once the jobs completed. + Fix backfill not scheduling jobs submitted with `--prefer` and `--constraint` properly. + mpi/pmix - fix regression introduced in 23.02.2 which caused PMIx shmem backed files permissions to be incorrect. + api/submit - fix memory leaks when submission of batch regular jobs or batch HetJobs fails (response data is a return code). + Fix regression in 23.02 leading to error() messages being sent at `INFO` instead of `ERR` in syslog. + Fix `TresUsageIn[Tot|Ave]` calculation for `gres/gpumem` and `gres/gpuutil`. + Fix issue in the gpu plugins where gpu frequencies would only be set if both gpu memory and gpu frequencies were set, while one or the other suffices. + Fix reservations group ACL's not working with the root group. + Fix updating a job with a ReqNodeList greater than the job's node count. + Fix inadvertent permission denied error for `--task-prolog` and `--task-epilog` with filesystems mounted with `root_squash`. + Fix missing detailed cpu and gres information in json/yaml output from `scontrol`, `squeue` and `sinfo`. + Fix regression in 23.02 that causes a failure to allocate job steps that request `--cpus-per-gpu` and gpus with types. + Fix potentially waiting indefinitely for a defunct process to finish, which affects various scripts including `Prolog` and `Epilog`. This could have various symptoms, such as jobs getting stuck in a completing state. + Fix losing list of reservations on job when updating job with list of reservations and restarting the controller. + Fix nodes resuming after down and drain state update requests from clients older than 23.02. + Fix advanced reservation creation/update when an association that should have access to it is composed with partition(s). + Fix job layout calculations with `--ntasks-per-gpu`, especially when `--nodes` has not been explicitly provided. + Fix X11 forwarding for jobs submitted from the slurmctld host. + When a job requests `--no-kill` and one or more nodes fail during the job, fix subsequent job steps unable to use some of the remaining resources allocated to the job. + Fix shared gres allocation when using `--tres-per-task` with tasks that span multiple sockets. + `auth/jwt` - Fix memory leak. * Other changes: + `openapi/dbv0.0.39/users` - If a default account update failed, resulting in a no-op, the query returned success without any warning. Now a warning is sent back to the client that the default account wasn't modified. + Avoid job write lock when nodes are dynamically added/removed. + `burst_buffer/lua` - allow jobs to get scheduled sooner after `slurm_bb_data_in` completes. + `openapi/v0.0.39` - fix memory leak in `_job_post_het_submit()`. + Avoid possible `slurmctld` segfault caused by race condition with already completed `slurmdbd_conn` connections. + `Slurmdbd.conf` checks included conf files for 0600 permissions + `slurmrestd` - fix regression "oversubscribe" fields were removed from job descriptions and submissions from v0.0.39 end points. + `accounting_storage/mysql` - Query for indiviual QOS correctly when you have more than 10. + Add warning message about ignoring `--tres-per-tasks=license` when used on a step. + `sshare` - Fix command to work when using `priority/basic`. + Avoid loading `cli_filter` plugins outside of `salloc`/`sbatch`/`scron`/ `srun`. This fixes a number of missing symbol problems that can manifest for executables linked against libslurm (and not `libslurmfull`). + Allow cloud_reg_addrs to update dynamically registered node's addrs on subsequent registrations. + Revert a change in 22.05.5 that prevented tasks from sharing a core if `--cpus-per-task` > threads per core, but caused incorrect accounting and cpu binding. Instead, `--ntasks-per-core=1` may be requested to prevent tasks from sharing a core. + Correctly send `assoc_mgr` lock to mcs plugin. + Avoid unnecessary `gres/gpumem` and `gres/gpuutil` `TRES` position lookups. + `sacct` - when printing `PLANNED` time, use end time instead of start time for jobs cancelled before they started. + Hold the job with `(Reservation ... invalid)` state reason if the reservation is not usable by the job. + `sbatch` - Added new `--export=NIL` option. - Removed: * Fix-test-3.13.patch * Fix-test-38.11.patch as both tests changed upstream- Create a macro for upgrade dependency to ensure uniform handling.- updated to 23.02.02 which includes a number of fixes to Slurm stability * Includes a fix for a regression in 23.02 that caused openmpi mpirun to fail to launch tasks. * It also includes two functional changes: Don't update the cron job tasks if the whole crontab file is left untouched after opening it with scrontab -e * Sort dynamic nodes and include them in topology after scontrol reconfigure or a slurmctld restart.- Web-configurator: changed presets to SUSE defaults. - If %_restart_on_update is no longer defined replace by own macro. - Marked slurm-openlava, slurm-seff and slurm-sjstat noarch. - rpmlint: * dropped some rpmlint filters which are no longer relevant. * added/refreshed filters. For Details, see rpmlintrc. - Remove workaround to fix the restart issue in an Slurm package described in bsc#1088693. The Slurm version in this package as 16.05. Any attempt to directly migrate to the current version is bound to fail anyway. - Now require slurm-munge if munge authentication is installed.- updated to 23.02.1 with the following changes: * job_container/tmpfs - cleanup job container even if namespace mount is already unmounted. * openapi/dbv0.0.38 - Fix not displaying an error when updating QOS or associations fails. * Fix nodes remaining as PLANNED after slurmctld save state recovery. * Add cgroup.conf EnableControllers option for cgroup/v2. * Get correct cgroup root to allow slurmd to run in containers like Docker. * slurmctld - add missing PrivateData=jobs check to step ContainerID lookup requests originated from 'scontrol show step container-id=' or certain scrun operations when container state can't be directly queried. * Fix nodes un-draining after being drained due to unkillable step. * Fix remote licenses allowed percentages reset to 0 during upgrade. * sacct - Avoid truncating time strings when using SLURM_TIME_FORMAT with the --parsable option. * Fix regression in 22.05.0rc1 that broke Nodes=ALL in a NodeSet. * openapi/v0.0.39 - fix jobs submitted via slurmrestd being allocated fewer CPUs than tasks when requesting multiple tasks. * Fix job not being scheduled on valid nodes and potentially being rejected when using parentheses at the beginning of square brackets in a feature request, for example: "feat1&[(feat2|feat3)]". * Fix regression in 23.02.0rc1 which made --gres-flags=enforce-binding no longer enforce optimal core-gpu job placement. * mpi/pmix - Fix v5 to load correctly when libpmix.so isn't in the normal lib path. * data_parser/v0.0.39 - fix regression where "memory_per_node" would be rejected for job submission. * data_parser/v0.0.39 - fix regression where "memory_per_cpu" would be rejected for job submission. * slurmctld - add an assert to check for magic number presence before deleting a partition record and clear the magic afterwards to better diagnose potential memory problems. * Clean up OCI containers task directories correctly. * scrun - Run under existing job when SLURM_JOB_ID is present. * Prevent a slurmstepd crash when the I/O subsystem has hung. * common/conmgr - fix memory leak of complete connection list. * job_container/tmpfs - avoid printing extraneous error messages when running a spank plugin that implements slurm_spank_job_prolog() or slurm_spank_job_epilog(). * Fix srun < 23.02 always getting an "exact" core allocation. * Prevent scontrol < 23.02 from setting MaxCPUsPerSocket to 0. * Add ScronParameters=explicit_scancel and corresponding scancel --cron option. - removed right-pmix-path.patch as fixed upstream- use libpmix.so.2 instead of libpmix.so to fix (bsc#1209260) this removes the need of pmix-pluginlib added: right-pmix-path.patch- slurm-plugins need to require pmix-pluginlib (bsc#1209260)- Stop pulling firewall rules from github. There is no benefit to host these separately. - Remove pre-sle12 pieces.- Add missing Provides:, Conflicts: and Obsoletes: to slurm-cray, slurm-hdf5 and slurm-testsuite to avoid package conflicts. - Unify Obsoletes:. - Consolidate spec files between different Slurm releases in Leap/SLE maintenance. - Add dependency for the general plugin package to the AcctGatherProfile HDF5 plugin. - Adjust node RealMemory in slurm.conf of test suite for 8G test nodes.- updated to 23.02.0 * Highlights + slurmctld - Add new RPC rate limiting feature. This is enabled through SlurmctldParameters=rl_enable, otherwise disabled by default. + Make scontrol reconfigure and sending a SIGHUP to the slurmctld behave the same. If you were using SIGHUP as a 'lighter' scontrol reconfigure to rotate logs please update your scripts to use SIGUSR2 instead. + Change cloud nodes to show by default. PrivateData=cloud is no longer needed. + sreport - Count planned (FKA reserved) time for jobs running in IGNORE_JOBS reservations. Previously was lumped into IDLE time. + job_container/tmpfs - Support running with an arbitrary list of private mount points (/tmp and /dev/shm are the default, but not required). + job_container/tmpfs - Set more environment variables in InitScript. + Make all cgroup directories created by Slurm owned by root. This was the behavior in cgroup/v2 but not in cgroup/v1 where by default the step directories ownership were set to the user and group of the job. + accounting_storage/mysql - change purge/archive to calculate record ages based on end time, rather than start or submission times. + job_submit/lua - add support for log_user() from slurm_job_modify(). + Run the following scripts in slurmscriptd instead of slurmctld: ResumeProgram, ResumeFailProgram, SuspendProgram, ResvProlog, ResvEpilog, and RebootProgram (only with SlurmctldParameters=reboot_from_controller). + Only permit changing log levels with 'srun --slurmd-debug' by root or SlurmUser. + slurmctld will fatal() when reconfiguring the job_submit plugin fails. + Add PowerDownOnIdle partition option to power down nodes after nodes become idle. + Add "[jobid.stepid]" prefix from slurmstepd and "slurmscriptd" prefix from slurmcriptd to Syslog logging. Previously was only happening when logging to a file. + Add purge and archive functionality for job environment and job batch script records. + Extend support for Include files to all "configless" client commands. + Make node weight usable for powered down and rebooting nodes. + Removed 'launch' plugin. + Add "Extra" field to job to store extra information other than a comment. + Add usage gathering for AMD (requires ROCM 5.5+) and NVIDIA gpus. + Add job's allocated nodes, features, oversubscribe, partition, and reservation to SLURM_RESUME_FILE output for power saving. + Automatically create directories for stdout/stderr output files. Paths may use %j and related substitution characters as well. + Add --tres-per-task to salloc/sbatch/srun. + Allow nodefeatures plugin features to work with cloud nodes. e.g. - Powered down nodes have no active changeable features. - Nodes can't be changed to other active features until powered down. - Active changeable features are reset/cleared on power down. + Make slurmstepd cgroups constrained by total configured memory from slurm.conf (NodeName=<> RealMemory=#) instead of total physical memory. + node_features/helpers - add support for the OR and parentheses operators in a --constraint expression. + slurmctld will fatal() when [Prolog|Epilog]Slurmctld are defined but are not executable. + Validate node registered active features are a super set of node's currently active changeable features. + On clusters without any PrologFlags options, batch jobs with failed prologs no longer generate an output file. + Add SLURM_JOB_START_TIME and SLURM_JOB_END_TIME environment variables. + Add SuspendExcStates option to slurm.conf to avoid suspending/powering down specific node states. + Add support for DCMI power readings in IPMI plugin. + slurmrestd served /slurm/v0.0.39 and /slurmdb/v0.0.39 endpoints had major changes from prior versions. Almost all schemas have been renamed and modified. Sites using OpenAPI Generator clients are highly suggested to upgrade to to using atleast version 6.x due to limitations with prior versions. + Allow for --nodelist to contain more nodes than required by --nodes. + Rename "nodes" to "nodes_resume" in SLURM_RESUME_FILE job output. + Rename "all_nodes" to "all_nodes_resume" in SLURM_RESUME_FILE output. + Add jobcomp/kafka plugin. + Add new PreemptParameters=reclaim_licenses option which will allow higher priority jobs to preempt jobs to free up used licenses. (This is only enabled for with PreemptModes of CANCEL and REQUEUE, as Slurm cannot guarantee suspended jobs will release licenses correctly.) + hpe/slingshot - add support for the instant-on feature. + Add ability to update SuspendExc* parameters with scontrol. + Add ability to restore SuspendExc* parameters on restart with slurmctld - R option. + Add ability to clear a GRES specification by setting it to "0" via 'scontrol update job'. + Add SLURM_JOB_OVERSUBSCRIBE environment variable for Epilog, Prolog, EpilogSlurmctld, PrologSlurmctld, and mail ouput. + System node down reasons are appended to existing reasons, separated by ':'. + New command scrun has been added. scrun acts as an Open Container Initiative (OCI) runtime proxy to run containers seamlessly via Slurm. + Fixed GpuFreqDef option. When set in slurm.conf, it will be used if - -gpu-freq was not explicitly set by the job step. * Configuration Changes + job_container.conf - Added "Dirs" option to list desired private mount points. + node_features plugins - invalid users specified for AllowUserBoot will now result in fatal() rather than just an error. + Deprecate AllowedKmemSpace, ConstrainKmemSpace, MaxKmemPercent, and MinKmemSpace. + Allow jobs to queue even if the user is not in AllowGroups when EnforcePartLimits=no is set. This ensures consistency for all the Partition access controls, and matches the documented behavior for EnforcePartLimits. + Add InfluxDBTimeout parameter to acct_gather.conf. + job_container/tmpfs - add support for expanding %h and %n in BasePath. + slurm.conf - Removed SlurmctldPlugstack option. + Add new SlurmctldParameters=validate_nodeaddr_threads= option to allow concurrent hostname resolution at slurmctld startup. + Add new AccountingStoreFlags=job_extra option to store a job's extra field in the database. + Add new "defer_batch" option to SchedulerParameters to only defer scheduling for batch jobs. + Add new DebugFlags option 'JobComp' to replace 'Elasticsearch'. + Add configurable job requeue limit parameter - MaxBatchRequeue - in slurm.conf to permit changes from the old hard-coded value of 5. + helpers.conf - Allow specification of node specific features. + helpers.conf - Allow many features to one helper script. + job_container/tmpfs - Add "Shared" option to support shared namespaces. This allows autofs to work with the job_container/tmpfs plugin when enabled. + acct_gather.conf - Added EnergyIPMIPowerSensors=Node=DCMI and Node=DCMI_ENHANCED. + Add new "getnameinfo_cache_timeout=" option to CommunicationParameters to adjust or disable caching the results of getnameinfo(). + Add new PrologFlags=ForceRequeueOnFail option to automatically requeue batch jobs on Prolog failures regardless of the job --requeue setting. + Add HealthCheckNodeState=NONDRAINED_IDLE option. + Add 'explicit' to Flags in gres.conf. This makes it so the gres is not automatically added to a job's allocation when --exclusive is used. Note that this is a per-node flag. + Moved the "preempt_" options from SchedulerParameters to PreemptParameters, and dropped the prefix from the option names. (The old options will still be parsed for backwards compatibility, but are now undocumented.) + Add LaunchParameters=ulimit_pam_adopt, which enables setting RLIMIT_RSS in adopted processes. + Update SwitchParameters=job_vni to enable/disable creating job VNIs for all jobs, or when a user requests them. + Update SwitchParameters=single_node_vni to enable/disable creating single node vnis for all jobs, or when a user requests them. + Add ability to preserve SuspendExc* parameters on reconfig with ReconfigFlags=KeepPowerSaveSettings. + slurmdbd.conf - Add new AllResourcesAbsolute to force all new resources to be created with the Absolute flag. + topology/tree - Add new TopologyParam=SwitchAsNodeRank option to reorder nodes based on switch layout. This can be useful if the naming convention for the nodes does not natually map to the network topology. + Removed the default setting for GpuFreqDef. If unset, no attempt to change the GPU frequency will be made if --gpu-freq is not set for the step. * Command Changes + sacctmgr - no longer force updates to the AdminComment, Comment, or SystemComment to lower-case. + sinfo - Add -F/--future option to sinfo to display future nodes. + sacct - Rename 'Reserved' field to 'Planned' to match sreport and the nomenclature of the 'Planned' node. + scontrol - advanced reservation flag MAINT will no longer replace nodes, similar to STATIC_ALLOC + sbatch - add parsing for #PBS -d and #PBS -w. + scontrol show assoc_mgr will show username(uid) instead of uid in QoS section. + Add strigger --draining and -R/--resume options. + Change --oversubscribe and --exclusive to be mutually exclusive for job submission. Job submission commands will now fatal if both are set. Previously, these options would override each other, with the last one in the job submission command taking effect. + scontrol - Requested TRES and allocated TRES will now always be printed when showing jobs, instead of one TRES output that was either the requested or allocated. + srun --ntasks-per-core now applies to job and step allocations. Now, use of --ntasks-per-core=1 implies --cpu-bind=cores and - -ntasks-per-core>1 implies --cpu-bind=threads. + salloc/sbatch/srun - Check and abort if ntasks-per-core > threads-per-core. + scontrol - Add ResumeAfter= option to "scontrol update nodename=". + Add a new "nodes=" argument to scontrol setdebug to allow the debug level on the slurmd processes to be temporarily altered. + Add a new "nodes=" argument to "scontrol setdebugflags" as well. + Make it so scrontab prints client-side the job_submit() err_msg (which can be set i.e. by using the log_user() function for the lua plugin). + scontrol - Reservations will not be allowed to have STATIC_ALLOC or MAINT flags and REPLACE[_DOWN] flags simultaneously. + scontrol - Reservations will only accept one reoccurring flag when being created or updated. + scontrol - A reservation cannot be updated to be reoccurring if it is already a floating reservation. + squeue - removed unused '%s' and 'SelectJobInfo' formats. + squeue - align print format for exit and derived codes with that of other components (:). + sacct - Add --array option to expand job arrays and display array tasks on separate lines. + Partial support for '--json' and '--yaml' formated outputs have been implemented for sacctmgr, sdiag, sinfo, squeue, and scontrol. The resultant data ouput will be filtered by normal command arguments. Formatting arguments will continue to be ignored. + salloc/sbatch/srun - extended the --nodes syntax to allow for a list of valid node counts to be allocated to the job. This also supports a "step count" value (e.g., --nodes=20-100:20 is equivalent to - -nodes=20,40,60,80,100) which can simplify the syntax when the job needs to scale by a certain "chunk" size. + srun - add user requestible vnis with '--network=job_vni' option. + srun - add user requestible single node vnis with the '--network=single_node_vni' option. * API Changes + job_container plugins - container_p_stepd_create() function signature replaced uint32_t uid with stepd_step_rec_t* step. + gres plugins - gres_g_get_devices() function signature replaced pid_t pid with stepd_step_rec_t* step. + cgroup plugins - task_cgroup_devices_constrain() function signature removed pid_t pid. + task plugins - replace task_p_pre_set_affinity(), task_p_set_affinity(), and task_p_post_set_affinity() with task_p_pre_launch_priv() like it was back in slurm 20.11. + Allow for concurrent processing of job_submit_g_submit() and job_submit_g_modify() calls. If your plugin is not capable of concurrent operation you must add additional locking within your plugin. + Removed return value from slurm_list_append(). + The List and ListIterator types have been removed in favor of list_t and list_itr_t respectively. + burst buffer plugins - add bb_g_build_het_job_script(). bb_g_get_status() - added authenticated UID and GID. bb_g_run_script() - added job_info argument. + burst_buffer.lua - Pass UID and GID to most hooks. Pass job_info (detailed job information) to many hooks. See etc/burst_buffer.lua.example for a complete list of changes. WARNING: Backwards compatibility is broken for slurm_bb_get_status: UID and GID are passed before the variadic arguments. If UID and GID are not explicitly listed as arguments to slurm_bb_get_status(), then they will be included in the variadic arguments. Backwards compatibility is maintained for all other hooks because the new arguments are passed after the existing arguments. + node_features plugins - node_features_p_reboot_weight() function removed. node_features_p_job_valid() - added parameter feature_list. node_features_p_job_xlate() - added parameters feature_list and job_node_bitmap. + New data_parser interface with v0.0.39 plugin. * Added: Fix-test-1.99.patch * Reworked: Fix-test-38.11.patch pam_slurm-Initialize-arrays-and-pass-sizes.patch- testsuite: on later SUSE versions claim ownership of directory /etc/security/limits.d.- Move the ext_sensors/rrd plugin to a separate package: this plugin requires librrd which in turn requires huge parts of the client side X Window System stack. There is probably no use in cluttering up a system for a plugin that probably only used by a few.- Test Suite fixes: * Update README_Testsuite.md. * Clean up left over files when de-installing test suite. * Adjustment to test suite package: for SLE mark the openmpi4 devel package and slurm-hdf5 optional. * Add -ffat-lto-objects to the build flags when LTO is set to make sure the object files we ship with the test suite still work correctly (boo#1204697). * Improve setup-testsuite.sh: copy ssh fingerprints from all nodes.- updated to 22.05.5 - NOTE: Slurm validates that libraries are of the same version. Unfortunately, due to an oversight, we failed to notice that the slurmstepd loads the hash_k12 library only after a job has completed. This means that if the hash_k12 library is upgraded before a job finishes, the slurmstepd will load the new library when the job finishes, and will fail due to a mismatch of versions. This results in nodes with slurmstepd processes stuck indefinitely. These processes require manual intervention to clean up. There is no clean way to resolve these hung slurmstepd processes. The only recommended way to upgrade between minor versions of 22.05 with RPM’s or upgrades that replace current binaries and libraries is to drain the nodes of running jobs first. - Fixes a number of moderate severity issues, noteable are: * Load hash plugin at slurmstepd launch time to prevent issues loading the plugin at step completion if the Slurm installation is upgraded. * Update nvml plugin to match the unique id format for MIG devices in new Nvidia drivers. * Fix multi-node step launch failure when nodes in the controller aren't in natural order. This can happen with inconsistent node naming (such as node15 and node052) or with dynamic nodes which can register in any order. * job_container/tmpfs - cleanup containers even when the .ns file isn't mounted anymore. * Wait up to PrologEpilogTimeout before shutting down slurmd to allow prolog and epilog scripts to complete or timeout. Previously, slurmd waited 120 seconds before timing out and killing prolog and epilog scripts.- Do not deduplicate files of testsuite Slurm configuration. This directory is supposed to be mounted over /etc/slurm therefore it must not contain softlinks to the files in this directory. - Improve .a and .o file collection for test suite: find these files even if there are multiple ones in a single line.- Fix build for older product version.- Fix a potential security vulnerability in the test package (bsc#1201674, CVE-2022-31251).- make slurmtest.tar reproducible- Improve check for mpicc in testsuite package: if binary isn't found, don't crash. - Patch NOFILE Limit in the slurmd.service copy for the testsuite.- update to 22.05.2 with following fixes: * Fix regression which allowed the oversubscription of licenses. * Fix a segfault in slurmctld when requesting gres in job arrays.- Package the Slurm testsuite for QA purposes. NOTE: This package is not meant to be used for testing by the user but rather for testing by the maintainers to ensure the package is working properly. DO NOT report test suite failures unless you are able to confirm that the failure is really a bug. * Fixes for test suite: Keep-logs-of-skipped-test-when-running-test-cases-sequentially.patch Fix-test-21.41.patch Fix-test-38.11.patch Fix-test-32.8.patch Fix-test-3.13.patch Fix-test7.2-to-find-libpmix-under-lib64-as-well.patch * Add documentation: README_Testsuite.md - Allow log in as user 'slurm'. This allows admins to run certain priviledged commands more easily without becoming root.- update to 22.05.0 with following changes: - Support for dynamic node addition and removal - Support for native Linux cgroup v2 operation - Newly added plugins to support HPE Slingshot 11 networks (switch/hpe_slingshot), and Intel Xe GPUs (gpu/oneapi) - Added new acct_gather_interconnect/sysfs plugin to collect statistics from arbitrary network interfaces. - Expanded and synced set of environment variables available in the Prolog/Epilog/PrologSlurmctld/EpilogSlurmctld scripts. - New "--prefer" option to job submissions to allow for a "soft constraint" request to influence node selection. - Optional support for license planning in the backfill scheduler with "bf_licenses" option in SchedulerParameters. - removed file slurm-2.4.4-init.patch as sysvinit is now realy deprecated - removed file load-pmix-major-version.patch as fixed upstream - set environment variable SUSE_ZNOW to 0 in %build to avoid module load failures due to unresolved symbols as module take advantage of lazy bindings (bsc#1200030).- Add a comment about the CommunicationParameters=block_null_hash option warning users who migrate - just in case.- Update to 21.08.8 which fixes CVE-2022-29500 (bsc#1199278), CVE-2022-29501 (bsc#1199279), and CVE-2022-29502 (bsc#1199281). - Added 'CommunicationParameters=block_null_hash' to slurm.conf, please add this parameter to existing configurations.- Update to 21.08.7 with following changes: * openapi/v0.0.37 - correct calculation for bf_queue_len_mean in /diag. * Avoid shrinking a reservation when overlapping with downed nodes. * Only check TRES limits against current usage for TRES requested by the job. * Do not allocate shared gres (MPS) in whole-node allocations * Constrain slurmstepd to job/step cgroup like in previous versions of Slurm. * Fix warnings on 32-bit compilers related to printf() formats. * Fix reconfigure issues after disabling/reenabling the GANG PreemptMode. * Fix race condition where a cgroup was being deleted while another step was creating it. * Set the slurmd port correctly if multi-slurmd * Fix FAIL mail not being sent if a job was cancelled due to preemption. * slurmrestd - move debug logs for HTTP handling to be gated by debugflag NETWORK to avoid unnecessary logging of communication contents. * Fix issue with bad memory access when shrinking running steps. * Fix various issues with internal job accounting with GRES when jobs are shrunk. * Fix ipmi polling on slurmd reconfig or restart. * Fix srun crash when reserved ports are being used and het step fails to launch. * openapi/dbv0.0.37 - fix DELETE execution path on /user/{user_name}. * slurmctld - Properly requeue all components of a het job if PrologSlurmctld fails. * rlimits - remove final calls to limit nofiles to 4096 but to instead use the max possible nofiles in slurmd and slurmdbd. * Allow the DBD agent to load large messages (up to MAX_BUF_SIZE) from state. * Fix potential deadlock during slurmctld restart when there is a completing job. * slurmstepd - reduce user requested soft rlimits when they are above max hard rlimits to avoid rlimit request being completely ignored and processes using default limits. * Fix Slurm user commands displaying available features as active features when no features were active. * Don't power down nodes that are rebooting. * Clear pending node reboot on power down request. * Ignore node registrations while node is powering down. * Don't reboot any node that is power down. * Don't allow a node to reboot if it's marked for power down. * Fix issuing reboot and downing when rebooting a powering up node. * Clear DRAIN on node after failing to resume before ResumeTimeout. * Prevent repeating power down if node fails to resume before ResumeTimeout. * Fix federated cloud node communication with srun and cloud_dns. * Fix jobs being scheduled on nodes marked to be powered_down when idle. * Fix problem where a privileged user could not view array tasks specified by _ when PrivateData had the jobs value set. - Changes in Slurm 21.08.6 * Fix plugin_name definitions in a number of plugins to improve logging. * Close sbcast file transfers when job is cancelled. * scrontab - fix handling of --gpus and --ntasks-per-gpu options. * sched/backfill - fix job_queue_rec_t memory leak. * Fix magnetic reservation logic in both main and backfill schedulers. * job_container/tmpfs - fix memory leak when using InitScript. * slurmrestd / openapi - fix memory leaks. * Fix slurmctld segfault due to job array resv_list double free. * Fix multi-reservation job testing logic. * Fix slurmctld segfault due to insufficient job reservation parse validation. * Fix main and backfill schedulers handling for already rejected job array. * sched/backfill - restore resv_ptr after yielding locks. * acct_gather_energy/xcc - appropriately close and destroy the IPMI context. * Protect slurmstepd from making multiple calls to the cleanup logic. * Prevent slurmstepd segfault at cleanup time in mpi_fini(). * Fix slurmctld sometimes hanging if shutdown while PrologSlurmctld or EpilogSlurmctld were running and PrologEpilogTimeout is set in slurm.conf. * Fix affinity of the batch step if batch host is different than the first node in the allocation. * slurmdbd - fix segfault after multiple failover/failback operations. * Fix jobcomp filetxt job selection condition. * Fix -f flag of sacct not being used. * Select cores for job steps according to the socket distribution. Previously, sockets were always filled before selecting cores from the next socket. * Keep node in Future state if epilog completes while in Future state. * Fix erroneous --constraint behavior by preventing multiple sets of brackets. * Make ResetAccrueTime update the job's accrue_time to now. * Fix sattach initialization with configless mode. * Revert packing limit checks affecting pmi2. * sacct - fixed assertion failure when using -c option and a federation display * Fix issue that allowed steps to overallocate the job's memory. * Fix the sanity check mode of AutoDetect so that it actually works. * Fix deallocated nodes that didn't actually launch a job from waiting for Epilogslurmctld to complete before clearing completing node's state. * Job should be in a completing state if EpilogSlurmctld when being requeued. * Fix job not being requeued properly if all node epilog's completed before EpilogSlurmctld finished. * Keep job completing until EpilogSlurmctld is completed even when "downing" a node. * Fix handling reboot with multiple job features. * Fix nodes getting powered down when creating new partitions. * Fix bad bit_realloc which potentially could lead to bad memory access. * slurmctld - remove limit on the number of open files. * Fix bug where job_state file of size above 2GB wasn't saved without any error message. * Fix various issues with no_consume gres. * Fix regression in 21.08.0rc1 where job steps failed to launch on systems that reserved a CPU in a cgroup outside of Slurm (for example, on systems with WekaIO). * Fix OverTimeLimit not being reset on scontrol reconfigure when it is removed from slurm.conf. * serializer/yaml - use dynamic buffer to allow creation of YAML outputs larger than 1MiB. * Fix minor memory leak affecting openapi users at process termination. * Fix batch jobs not resolving the username when nss_slurm is enabled. * slurmrestd - Avoid slurmrestd ignoring invalid HTTP method if the response serialized without error. * openapi/dbv0.0.37 - Correct conditional that caused the diag output to give an internal server error status on success. * Make --mem-bind=sort work with task_affinity * Fix sacctmgr to set MaxJobsAccruePer{User|Account} and MinPrioThres in sacctmgr add qos, modify already worked correctly. * job_container/tmpfs - avoid printing extraneous error messages in Prolog and Epilog, and when the job completes. * Fix step CPU memory allocation with --threads-per-core without --exact. * Remove implicit --exact when --threads-per-core or --hint=nomultithread is used. * Do not allow a step to request more threads per core than the allocation did. * Remove implicit --exact when --cpus-per-task is used.- update to 21.08.5 with following changes: * Fix issue where typeless GRES node updates were not immediately reflected. * Fix setting the default scrontab job working directory so that it's the home of the different user (*u ) and not that of root or SlurmUser editor. * Fix stepd not respecting SlurmdSyslogDebug. * Fix concurrency issue with squeue. * Fix job start time not being reset after launch when job is packed onto already booting node. * Fix updating SLURM_NODE_ALIASES for jobs packed onto powering up nodes. * Cray - Fix issues with starting hetjobs. * auth/jwks - Print fatal() message when jwks is configured but file could not be opened. * If sacctmgr has an association with an unknown qos as the default qos print 'UNKN*###' instead of leaving a blank name. * Correctly determine task count when giving --cpus-per-gpu, --gpus and * -ntasks-per-node without task count. * slurmctld - Fix places where the global last_job_update was not being set to the time of update when a job's reason and description were updated. * slurmctld - Fix case where a job submitted with more than one partition would not have its reason updated while waiting to start. * Fix memory leak in node feature rebooting. * Fix time limit permanetly set to 1 minute by backfill for job array tasks higher than the first with QOS NoReserve flag and PreemptMode configured. * Fix sacct -N to show jobs that started in the current second * Fix issue on running steps where both SLURM_NTASKS_PER_TRES and SLURM_NTASKS_PER_GPU are set. * Handle oversubscription request correctly when also requesting * -ntasks-per-tres. * Correctly detect when a step requests bad gres inside an allocation. * slurmstepd - Correct possible deadlock when UnkillableStepTimeout triggers. * srun - use maximum number of open files while handling job I/O. * Fix writing to Xauthority files on root_squash NFS exports, which was preventing X11 forwarding from completing setup. * Fix regression in 21.08.0rc1 that broke --gres=none. * Fix srun --cpus-per-task and --threads-per-core not implicitly setting * -exact. It was meant to work this way in 21.08. * Fix regression in 21.08.0 that broke dynamic future nodes. * Fix dynamic future nodes remembering active state on restart. * Fix powered down nodes getting stuck in COMPLETING+POWERED_DOWN when job is cancelled before nodes are powering up.- updated to 21.08.4 which fixes (CVE-2021-43337) which is only present in 21.08 tree. * CVE-2021-43337: For sites using the new AccountingStoreFlags=job_script and/or job_env options, an issue was reported with the access control rules in SlurmDBD that will permit users to request job scripts and environment files that they should not have access to. (Scripts/environments are meant to only be accessible by user accounts with administrator privileges, by account coordinators for jobs submitted under their account, and by the user themselves.) - changes from 21.08.3: * This includes a number of fixes since the last release a month ago, including one critical fix to prevent a communication issue between slurmctld and slurmdbd for sites that have started using the new AccountingStoreFlags=job_script functionality.- Utilize sysuser infrastructure to set user/group slurm. For munge authentication slurm should have a fixed UID across all nodes including the management server. Set it to 120 - Limit firewalld service definitions to SUSE versions >= 15.- added service definitions for firewalld (JSC#SLE-22741)- update to 21.08.2 - major change: * removed of support of the TaskAffinity=yes option in cgroup.conf. Please consider using "TaskPlugins=cgroup,affinity" in slurm.conf as an option. - minor changes and bugfixes: * slurmctld - fix how the max number of cores on a node in a partition are calculated when the partition contains multi*socket nodes. This in turn corrects certain jobs node count estimations displayed client*side. * job_submit/cray_aries - fix "craynetwork" GRES specification after changes introduced in 21.08.0rc1 that made TRES always have a type prefix. * Ignore nonsensical check in the slurmd for [Pro|Epi]logSlurmctld. * Fix writing to stderr/syslog when systemd runs slurmctld in the foreground. * Fix issue with updating job started with node range. * Fix issue with nodes not clearing state in the database when the slurmctld is started with clean*start. * Fix hetjob components > 1 timing out due to InactiveLimit. * Fix sprio printing -nan for normalized association priority if PriorityWeightAssoc was not defined. * Disallow FirstJobId=0. * Preserve job start info in the database for a requeued job that hadn't registered the first time in the database yet. * Only send one message on prolog failure from the slurmd. * Remove support for TaskAffinity=yes in cgroup.conf. * accounting_storage/mysql - fix issue where querying jobs via sacct * -whole-hetjob=yes or slurmrestd (which automatically includes this flag) could in some cases return more records than expected. * Fix issue for preemption of job array task that makes afterok dependency fail. Additionally, send emails when requeueing happens due to preemption. * Fix sending requeue mail type. * Properly resize a job's GRES bitmaps and counts when resizing the job. * Fix node being able to transition to CLOUD state from non-cloud state. * Fix regression introduced in 21.08.0rc1 which broke a step's ability to inherit GRES from the job when the step didn't request GRES but the job did. * Fix errors in logic when picking nodes based on bracketed anded constraints. This also enforces the requirement to have a count when using such constraints. * Handle job resize better in the database. * Exclude currently running, resized jobs from the runaway jobs list. * Make it possible to shrink a job more than once.- moved pam module from /lib64 to /usr/lib64 which fixes boo#1191095 via the macro %_pam_moduledir- updated to 21.08.1 with following bug fixes: * Fix potential memory leak if a problem happens while allocating GRES for a job. * If an overallocation of GRES happens terminate the creation of a job. * AutoDetect=nvml: Fatal if no devices found in MIG mode. * Print federation and cluster sacctmgr error messages to stderr. * Fix off by one error in --gpu-bind=mask_gpu. * Add --gpu-bind=none to disable gpu binding when using --gpus-per-task. * Handle the burst buffer state "alloc-revoke" which previously would not display in the job correctly. * Fix issue in the slurmstepd SPANK prolog/epilog handler where configuration values were used before being initialized. * Restore a step's ability to utilize all of an allocations memory if --mem=0. * Fix --cpu-bind=verbose garbage taskid. * Fix cgroup task affinity issues from garbage taskid info. * Make gres_job_state_validate() client logging behavior as before 44466a4641. * Fix steps with --hint overriding an allocation with --threads-per-core. * Require requesting a GPU if --mem-per-gpu is requested. * Return error early if a job is requesting --ntasks-per-gpu and no gpus or task count. * Properly clear out pending step if unavailable to run with available resources. * Kill all processes spawned by burst_buffer.lua including decendents. * openapi/v0.0.{35,36,37} - Avoid setting default values of min_cpus, job name, cwd, mail_type, and contiguous on job update. * openapi/v0.0.{35,36,37} - Clear user hold on job update if hold=false. * Prevent CRON_JOB flag from being cleared when loading job state. * sacctmgr - Fix deleting WCKeys when not specifying a cluster. * Fix getting memory for a step when the first node in the step isn't the first node in the allocation. * Make SelectTypeParameters=CR_Core_Memory default for cons_tres and cons_res. * Correctly handle mutex unlocks in the gres code if failures happen. * Give better error message if -m plane is given with no size. * Fix --distribution=arbitrary for salloc. * Fix jobcomp/script regression introduced in 21.08.0rc1 0c75b9ac9d. * Only send the batch node in the step_hostlist in the job credential. * When setting affinity for the batch step don't assume the batch host is node 0. * In task/affinity better checking for node existence when laying out affinity. * slurmrestd - fix job submission with auth/jwt. - removed Fix-statement-condition-in-netloc-autoconf-macro.patch issue was fixed upstream- Fix-statement-condition-in-netloc-autoconf-macro.patch: Fix netloc check, reestablish netloc disable code. - Make configure arg '--with-pmix' conditional. - Move openapi plugins to package slurm-restd.- updated to 21.08.0, major changes: * A new "AccountingStoreFlags=job_script" option to store the job scripts directly in SlurmDBD. * Added "sacct -o SubmitLine" format option to get the submit line of a job/step. * Changes to the node state management so that nodes are marked as PLANNED instead of IDLE if the scheduler is still accumulating resources while waiting to launch a job on them. * RS256 token support in auth/jwt. * Overhaul of the cgroup subsystems to simplify operation, mitigate a number of inherent race conditions, and prepare for future cgroup v2 support. * Further improvements to cloud node power state management. * A new child process of the Slurm controller called "slurmscriptd" responsible for executing PrologSlurmctld and EpilogSlurmctld scripts, which significantly reduces performance issues associated with enabling those options. * A new burst_buffer/lua plugin allowing for site-specific asynchronous job data management. * Fixes to the job_container/tmpfs plugin to allow the slurmd process to be restarted while the job is running without issue. * Added json/yaml output to sacct, squeue, and sinfo commands. * Added a new node_features/helpers plugin to provide a generic way to change settings on a compute node across a reboot. * Added support for automatically detecting and broadcasting shared libraries for an executable launched with "srun --bcast". * Added initial OCI container execution support with a new --container option to sbatch and srun. * Improved "configless" support by allowing multiple control servers to be specified through the slurmd --conf-server option, and send additional configuration files at startup including cli_filter.lua. - minor changes: * If an overallocation of GRES happens terminate the creation of a job. * AutoDetect=nvml: Fatal if no devices found in MIG mode. * Print federation and cluster sacctmgr error messages to stderr. * Add --gpu-bind=none to disable gpu binding when using --gpus-per-task. * Handle the burst buffer state "alloc-revoke" which previously would not display in the job correctly. * Fix issue in the slurmstepd SPANK prolog/epilog handler where configuration values were used before being initialized. * Restored --gpu-bind=single: to check core affinity like * -gpu-bind=closest does. This removal of this behavior only was in rc2. * slurmd - Fix assert failure on initialization due to bad node name. * Fix error codes in cgroup/v1. * Don't destroy the memory step outside fini, which leads to a double destroy causing an error message. * Add support for lua 5.4. * Force cgroup.clone_children to 0 in slurm cgroup directories. This caused issues in task cpuset plugin in systems with it enabled by default. * Clear GRES HAS_TYPE flag when removing type name. * Environment flags in gres.conf now override flags set by AutoDetect. * Environment flags in gres.conf now apply to subsequent gres.conf lines where Environment flags are not set. * Set missing job_uid and job_gid members when preparing a kill_job_msg_t in abort_job_on_node(), abort_job_on_nodes() and kill_job_on_node(). * Fix swappiness not being set in cgroups. * Fix coordinators for new subaccounts. * Fix coordinators when adding existing users with PrivateData=users. * slurmctld - do not attempt to relinquish control to self. * openapi/v0.0.37 - Honor kill_on_invalid_dependency as job parameter. * Check max_gres when doing step allocation, fix for regression in rc2. * SPANK plugins are now required to match the current Slurm version, and must be recompiled for each new Slurm release. * node_features/helpers - add ExecTime configuration option. * srun - Fix force termination with -X. * On slurmctld restart set node typed GRES counts correctly. * Fix places where a step wasn't allocated in the slurmctld but wasn't ever removed from the job. * Fix step allocation memory when using --threads-per-core. * Fix step allocations to consume all threads on a core when using threads-per-core. * Add check to validate cpu request on a step if --threads-per-core is given and it is less than what the core on the node has in the allocation. * Fix issue where a step could request more gres than the job had and the step would hang forever. This bug was only introduced in 21.08.0rc2. * Only print \r\n for logging messages on stderr when --pty has been explicitly requested. * Relax check on SPANK plugins to only require Slurm major + minor versions to match. * job_container/tmpfs - delegate handling of /dev/shm to the extern step so new step launches will be attached correctly even after the slurmd process has been restarted. * Limit the wait time in proctrack_g_wait() to UnkillableStepTimeout instead of a hardcoded value of 256 seconds, and limit the delay between tests to a maximum of 32 seconds. * fatal() on start if using job_container/tmpfs without PrologFlags=Contian. * Load bf_when_last_cycle from job state only if protocol version >= 21.08. * Docs - remove man3 section entirely. * Set step memory when using MemPerGPU or DefMemPerGPU. Previously a step's memory was not set even when it requested *-mem-per-gpu and at least one GPU. * Add cli_filter.lua support in configless mode. * Check that the step requests at least as many gres as nodes. * Make job's SLURM_JOB_GPUS print global GPU IDs instead of MIG unique_ids. * Fix miscounting of GPU envs in prolog/epilog if MultipleFiles was used. * Support MIGs in prolog/epilog's CUDA_VISIBLE_DEVICES & co. * Add SLURM_JOB_GPUS back into Prolog; add it to Epilog. * Fix issue where the original executable, not the bcast'd version, was executed with 'srun *-bcast'. * sacct - print '-' header correctly for fields over 53-characters wide. * openapi/dbv0.0.37 - replace "REST" with "Slurm OpenAPI" for plugin_name. * openapi/v0.0.37 - replace "REST" with "Slurm OpenAPI" for plugin_name. * configless - fix segfault on 'scontrol reconfigure'. * Use FREE_NULL_LIST instead of list_destroy. * If we made are running an interactive session we need to force track_steps. * Disable OPOST flag when using --pty to avoid issues with Emac. * Fix issue where extra bonus core was allocated in some situations. * Avoid putting gres with count of 0 on a TRES req/alloc. * Fix memory in requested TRES when --mem-per-gpu is used. * Changed ReqMem field in sacct to match memory from ReqTRES. * Changed --gpu-bind=single: to no longer check core affinity like * -gpu-bind=closest does. This consequently affects --ntasks-per-gpu. * slurmrestd - add v0.0.37 OpenAPI plugin. * slurmrestd/v0.0.37 - rename standard_in -> standard_input. * slurmrestd/v0.0.37 - rename standard_out -> standard_output. * Changed the --format handling for negative field widths (left justified) to apply to the column headers as well as the printed fields. * Add LimitFactor to the QOS. A float that is factored into an associations [Grp|Max]TRES limits. For example, if the LimitFactor is 2, then an association with a GrpTRES of 30 CPUs, would be allowed to allocate 60 CPUs when running under this QOS. * slurmrestd - Pass SLURM_NO_CHANGE_IN_DATA to client as 403 (Not Modified). * slurmrestd/v0.0.37 - Add update_time field to Jobs query to allow clients to only get jobs list based on change timestamp. * Reset job eligible time when job is manually held. * Add DEBUG_FLAG_JAG to improve logging related to job account gathering. * Convert logging in account_gather/common to DEBUG_FLAG_JAG. * Add more logging for jag_common_poll_data() when prec_extra() called. * slurmrestd/v0.0.37 - add API to fetch reservation(s) info. * Catch more errors in task/cgroup initalization and cleanup to avoid allowing jobs to start when cgroups failure to configure correctly. * Fix cgroup ns detection when using containers (e.g. LXC or Docker). * Reset job's next_step_id counter to 0 after being requeued. * Make scontrol exit with non-zero status after failing to delete a partition or reservation. * Make NtasksPerTRES optional in slurm_sprint_job_info(). * slurmrestd/v0.0.37 - Add update_time field to nodes query to allow clients to only get nodes list based on change timestamp. * common/parse_config - catch and propagate return codes when handling a match on a key-value pattern. This implies error codes detected in the handlers are now not ignored and users of _handle_keyvalue_match() can fatal(). * common/hostlist - fix hostlist_delete_nth() xassert() upper bound check. * API change: Removed slurm_kill_job_msg and modified the function signature for slurm_kill_job2. slurm_kill_job2 should be used instead of slurm_kill_job_msg. * Fix non-zero exit code for scontrol ping when all controllers are down. * Enforce a valid configuration for AccountingStorageEnforce in slurm.conf. If the configuration is invalid, then an error message will be printed and the command or daemon (including slurmctld) will not run. * slurmrestd/v0.0.37 - Add update_time field to partitions/reservations query to allow clients to only get the entities list when something changed. * slurmdbd.service - add "After" relationship to all common names for MariaDB to reduce startup delays. * slurmrestd/v0.0.37 - Correct displaying node states that are UNKNOWN. * slurmrestd/v0.0.37 - Add flags to node states. * Fix first job on fresh cluster not being assigned JobId=1 (or FirstJobId). * squeue - make it so --nodelist is sensitive to --clusters. * squeue - do --nodelist node validation in the same order as listing. * Removed AccountingStoreJobComment option. Please update your config to use AccountingStoreFlags=job_comment instead. * AccountingStoreFlags=job_script allows you to store the job's batch script. * AccountingStoreFlags=job_env allows you to store the job's env vars. * Add sacct -o SubmitLine to get the submit line of a job/step. * Removed DefaultStorage{Host,Loc,Pass,Port,Type,User} options. * Fix NtasksPerTRES delimiter from : to = in scontrol show job output. * Removed CacheGroups, CheckpointType, JobCheckpointDir, MemLimitEnforce, SchedulerPort, SchedulerRootFilter options. * Make job accounting queries use consistent timeframes with and w/o jobs. * --cpus-per-task and --threads-per-core now imply --exact. This fixes issues where steps would be allocated the wrong number of CPUs. * configure: the --with option handling has been made consistent across the various optional libraries. Specifying *-with-foo=/path/to/foo will only check that directory for the applicable library (rather than, in some cases, falling back to the default directories), and will always error the build if the library is not found (instead of a mix of error messages and non- fatal warning messages). * configure: replace --with-rmsi_dir option with proper handling for * -with-rsmi=dir. * Pass additional job environment variables to MailProg. * Add SLURM_JOB_WORK_DIR to Prolog, Epilog. * Removed sched/hold plugin. * Fix srun overwriting SLURM_SUBMIT_DIR and SLURM_SUBMIT_HOST when within an existing allocation. * step_ctx code has been removed from the api. * cli_filter/lua, jobcomp/lua, job_submit/lua now load their scripts from the same directory as the slurm.conf file (and thus now will respect changes to the SLURM_CONF environment variable). * SPANK - call slurm_spank_init if defined without slurm_spank_slurmd_exit in slurmd context. * job_container/tmpfs - Remove need for .active file to allow salloc without an interactive step to work. * slurmd - Delay background node registration on every failure up to 128s on startup. * slurmctld - Always notify slurmd that node registration was accepted to avoid slurmd needless attempting to re-register if there is configuration issue. * Put node into "INVAL" state upon registering with an invalid node configuration. Node must register with a valid configuration to continue. * Make --cpu-bind=threads default for --threads-per-core -- cli and env can override. * jobcomp/elasticsearch - Use data_t to serialize data. The plugin now has the JSON-C library as a prerequisite. * scrontab - create the temporary file under the TMPDIR environment variable (if set), otherwise continue to use TmpFS as configured in slurm.conf. * Add LastBusyTime to "scontrol show nodes" and slurmrestd nodes output, which represents the time the node last had jobs on it. * slurmd - allow multiple comma-separated controllers to be specified in configless mode with *-conf-server * sacctmgr - changed column headings to "ParentID" and "ParentName" instead of "Par ID" and "Par Name" respectively. * Perl API - make sure man pages are installed under the --prefix given to configure. * Manually powering down of nodes with scontrol now ignores SuspendExc. * SALLOC_THREADS_PER_CORE and SBATCH_THREADS_PER_CORE have been added as input environment variables for salloc and sbatch, respectively. They do the same thing as *-threads-per-core. * Distinguish queued reboot requests (REBOOT) from issued reboots (REBOOT^). * Set the maximum number of open files per process to 4096 to avoid performance issues when closing the entire range with closeall(). * auth/jwt - add support for RS256 tokens. * Relax reservation purge due to any invalid uid after creation time. * Reject srun that requests both --exclusive and --overlap. * service files - change dependency to network-online rather than just network to ensure DNS and other services are available. * RSMI: Fix incorrect PCI BDF bits. * plugins/cli_filter - Convert to using data_t to serialize JSON. * Fix testing array job after regaining locks in backfill. * Don't display node's comment with "scontrol show nodes" unless set. * Add "Extra" field to node to store extra information other than a comment. * scrontab - Use /tmp instead of TmpFS if TMPDIR is not set. * Add ResumeTimeout, SuspendTimeout and SuspendTime to Partitions. * sreport - change to sorting TopUsage by the --tres option. * slurmrestd - do not run allow operation as SlurmUser/root by default. * Allow map_cpu and mask_cpu for non-whole node allocation. * TaskPluginParam=verbose is now treated as a default. Previously it would be applied regardless of the job specifying a *-cpu-bind. * Add "node_reg_mem_percent" SlurmctldParameter to define percentage of memory nodes are allowed to register with. * Show correct number of SocketsPerBoard in slurmd -C with hwloc2. * Alter sreport's cluster utilization report column name from 'Reserved' to 'Planned' to match the nomenclature of the 'Planned' node. * Add StateComplete format option to sinfo to show base_state+flags. * "scontrol show node" now shows State as base_state+flags instead of shortened state with flags appended. eg. IDLE# *> IDLE+POWERING_UP. Also "POWER" state flag string is "POWERED_DOWN". * slurmd/req - add missing job_env_t's het_job_id initialization off the request in _rpc_{abort,terminate}_job(). This caused problems for Native Cray builds when joining a CNCU job_container plugin with Epilog configured. * Fix joining a CNCU job_container on a Native Cray build before executing the UnkillableStepProgram for a HetJob step. * slurmrestd/v0.0.35 - Plugin has been tagged as deprecated. * srun - Job steps requiring more cores than available to be rejected unless '--overlap' is specificed. * Add bf_node_space_size to SchedulerParameters. * Add scontrol update node state=POWER_DOWN_FORCE and POWER_DOWN_ASAP as new ways to power off and reset especially CLOUD nodes. * Define and separate node power state transitions. Previously a powering down node was in both states, POWERING_OFF and POWERED_OFF. These are now separated. * Create a new process called slurmscriptd which runs PrologSlurmctld and EpilogSlurmctld. This avoids fork() calls from slurmctld, and can avoid performance issues if the slurmctld has a large memory footprint. * Added new Script option to DebugFlags for debugging slurmscriptd. * scrontab - add ability to update crontab from a file or standard input. * scrontab - add ability to set and expand variables. * Pass JSON of job to node mappings to ResumeProgram. * If running steps in an allocation with CR_PACK_NODE or -mpack the srun will only attempt to allocate as much as needed from the allocation instead of always trying to allocate every node in the allocation. * Jobs that request the whole node now check to see if any gres are allocated. * Rename SbcastParameters to BcastParameters. * Make srun sensitive to BcastParameters. * RSMI: Add gres_links_create_empty() and preserve RSMI enumeration order. * GPUs: Use index instead of dev_num for CUDA_VISIBLE_DEVICES * Don't run epilog on nodes if job never launched. * QOS accrue limits only apply to the job QOS, not partition QOS. * Add --gpu-bind=per_task: option, --gpus-per-task will now set this option by default. * Treat any return code from SPANK plugin that is not SLURM_SUCCESS to be an error or rejection. * Print the statistics for extern step adopted processes in sstat. * Fix SLURM_NODE_ALIASES to work for ipv6 node addrs. * Add support for automatically detecting and broadcasting executable shared object dependencies for sbcast and srun *-bcast.- Updated to 20.11.8: * slurmctld - fix erroneous "StepId=CORRUPT" messages in error logs. * Correct the error given when auth plugin fails to pack a credential. * acct_gather_filesystem/lustre - only emit collection error once per step. * Add GRES environment variables (e.g., CUDA_VISIBLE_DEVICES) into the interactive step, the same as is done for the batch step. * Fix various potential deadlocks when altering objects in the database dealing with every cluster in the database. * slurmrestd: - handle slurmdbd connection failures without segfaulting. - fix segfault for searches in slurmdb/v0.0.36/jobs. - remove (non-functioning) users query parameter for slurmdb/v0.0.36/jobs from openapi.json - fix segfault in slurmrestd db/jobs with numeric queries - add argv handling for job/submit endpoint. - add description for slurmdb/job endpoint. * slurmrestd/dbv0.0.36: - Fix values dumped in job state/current and job step state. - Correct description for previous state property. * srun: - fix broken node step allocation in a heterogeneous allocation. - leave SLURM_DIST_UNKNOWN as default for --interactive. * Fail step creation if -n is not multiple of --ntasks-per-gpu. * job_container/tmpfs - Fix slowdown on teardown. * Fix problem with SlurmctldProlog where requeued jobs would never launch. * job_container/tmpfs - Fix issue when restarting slurmd where the namespace mount points could disappear. * sacct: - avoid truncating JobId at 34 characters. - fix segfault when printing StepId (or when using --long). * scancel - fix segfault when --wckey filtering option is used. * select/cons_tres - Fix memory leak. * Prevent file descriptor leak in job_container/tmpfs on slurmd restart. * perlapi/libslurmdb - expose tres_req_str to job hash. * scrontab - close and reopen temporary crontab file to deal with editors that do not change the original file, but instead write out then rename a new file. * sstat - fix linking so that it will work when --without-shared-libslurm was used to build Slurm. * Clear allocated cpus for running steps in a job before handling requested nodes on new step. * Don't reject a step if not enough nodes are available. Instead, defer the step until enough nodes are available to satisfy the request. * Don't reject a step if it requests at least one specific node that is already allocated to another step. Instead, defer the step until the requested node(s) become available. * Better handling of --mem=0. * Ignore DefCpuPerGpu when --cpus-per-task given.- Updated to 20.11.7 which fixes CVE-2021-31215 (bsc#1186024) - New features in 20.11.7: * slurmd - handle configless failures gracefully instead of hanging indefinitely. * select/cons_tres - fix Dragonfly topology not selecting nodes in the same leaf switch when it should as well as requests with *-switches option. * Fix issue where certain step requests wouldn't run if the first node in the job allocation was full and there were idle resources on other nodes in the job allocation. * Fix deadlock issue with Slurmctld. * torque/qstat - fix printf error message in output. * When adding associations or wckeys avoid checking multiple times a user or cluster name. * Fix wrong jobacctgather information on a step on multiple nodes due to timeouts sending its the information gathered on its node. * Fix missing xstrdup which could result in slurmctld segfault on array jobs. * Fix security issue in PrologSlurmctld and EpilogSlurmctld by always prepending SPANK_ to all user-set environment variables. CVE-2021-31215. - New features in 20.11.6: * Fix sacct assert with the --qos option. * Use pkg-config --atleast-version instead of --modversion for systemd. * common/fd - fix getsockopt() call in fd_get_socket_error(). * Properly handle the return from fd_get_socket_error() in _conn_readable(). * cons_res - Fix issue where running jobs were not taken into consideration when creating a reservation. * Avoid a deadlock between job_list for_each and assoc QOS_LOCK. * Fix TRESRunMins usage for partition qos on restart/reconfig. * Fix printing of number of tasks on a completed job that didn't request tasks. * Fix updating GrpTRESRunMins when decrementing job time is bigger than it. * Make it so we handle multithreaded allocations correctly when doing - -exclusive or --core-spec allocations. * Fix incorrect round-up division in _pick_step_cores * Use appropriate math to adjust cpu counts when --ntasks-per-core=1. * cons_tres - Fix consideration of power downed nodes. * cons_tres - Fix DefCpuPerGPU, increase cpus-per-task to match with gpus-per-task * cpus-per-gpu. * Fix under-cpu memory auto-adjustment when MaxMemPerCPU is set. * Make it possible to override CR_CORE_DEFAULT_DIST_BLOCK. * Perl API - fix retrieving/storing of slurm_step_id_t in job_step_info_t. * Recover state of burst buffers when slurmctld is restarted to avoid skipping burst buffer stages. * Fix race condition in burst buffer plugin which caused a burst buffer in stage-in to not get state saved if slurmctld stopped. * auth/jwt - print an error if jwt_file= has not been set in slurmdbd. * Fix RESV_DEL_HOLD not being a valid state when using squeue --states. * Add missing squeue selectable states in valid states error message. * Fix scheduling last array task multiple times on error, causing segfault. * Fix issue where a step could be allocated more memory than the job when dealing with --mem-per-cpu and --threads-per-core. * Fix removing qos from assoc with -= can lead to assoc with no qos * auth/jwt - fix segfault on invalid credential in slurmdbd due to missing validate_slurm_user() function in context. * Fix single Port= not being applied to range of nodes in slurm.conf * Fix Jobs not requesting a tres are not starting because of that tres limit. * acct_gather_energy/rapl - fix AveWatts calculation. * job_container/tmpfs - Fix issues with cleanup and slurmd restarting on running jobs.- Ship REST API version and auth plugins with slurmrestd. - Add YAML support for REST API to build (bsc#1185603).- Udpate to 20.11.5: - New features: * New job_container/tmpfs plugin developed by NERSC that can be used to create per-job filesystem namespaces. Documentaiion and configuration can be found in the respecting man page. - Bug fixes: * Fix main scheduler bug where bf_hetjob_prio truncates SchedulerParameters. * Fix sacct not displaying UserCPU, SystemCPU and TotalCPU for large times. * scrontab - fix to return the correct index for a bad #SCRON option. * scrontab - fix memory leak when invalid option found in #SCRON line. * Add errno for when a user requests multiple partitions and they are using partition based associations. * Fix issue where a job could run in a wrong partition when using EnforcePartLimits=any and partition based associations. * Remove possible deadlock when adding associations/wckeys in multiple threads. * When using PrologFlags=alloc make sure the correct Slurm version is set in the credential. * When sending a job a warning signal make sure we always send SIGCONT beforehand. * Fix issue where a batch job would continue running if a prolog failed on a node that wasn't the batch host and requeuing was disabled. * Fix issue where sometimes salloc/srun wouldn't get a message about a prolog failure in the job's stdout. * Requeue or kill job on a prolog failure when PrologFlags is not set. * Fix race condition causing node reboots to get requeued before ResumeTimeout expires. * Preserve node boot_req_time on reconfigure. * Preserve node power_save_req_time on reconfigure. * Fix node reboots being queued and issued multiple times and preventing the reboot to time out. * Fix run_command to exit correctly if track_script kills the calling thread. * Only requeue a job when the PrologSlurmctld returns nonzero. * When a job is signaled with SIGKILL make sure we flush all prologs/setup scripts. * Handle burst buffer scripts if the job is canceled while stage_in is happening. * When shutting down the slurmctld make note to ignore error message when we have to kill a prolog/setup script we are tracking. * scrontab - add support for the --open-mode option. * acct_gather_profile/influxdb - avoid segfault on plugin shutdown if setup has not completed successfully. * Reduce delay in starting salloc allocations when running with prologs. * Alter AllocNodes check to work if the allocating node's domain doesn't match the slurmctld's. This restores the pre*20.11 behavior. * Fix slurmctld segfault if jobs from a prior version had the now-removed INVALID_DEPEND state flag set and were allowed to run in 20.11. * Add job_container/tmpfs plugin to give a method to provide a private /tmp per job. * Set the correct core affinity when using AutoDetect. * slurmrestd - mark "environment" as required for job submissions in schema.- Udpate to 20.11.04 * Fix node selection for advanced reservations with features. * mpi/pmix: Handle pipe failure better when using ucx. * mpi/pmix: include PMIX_NODEID for each process entry. * Fix job getting rejected after being requeued on same node that died. * job_submit/lua - add "network" field. * Fix situations when a reoccuring reservation could erroneously skip a period. * Ensure that a reservations [pro|epi]log are ran on reoccuring reservations. * Fix threads-per-core memory allocation issue when using CR_CPU_MEMORY. * Fix scheduling issue with --gpus. * Fix gpu allocations that request --cpus-per-task. * mpi/pmix: fixed print messages for all PMIXP_* macros * Add mapping for XCPU to --signal option. * Fix regression in 20.11 that prevented a full pass of the main scheduler from ever executing. * Work around a glibc bug in which "0" is incorrectly printed as "nan" which will result in corrupted association state on restart. * Fix regression in 20.11 which made slurmd incorrectly attempt to find the parent slurmd address when not applicable and send incorrect reverse*tree info to the slurmstepd. * Fix cgroup ns detection when using containers (e.g. LXC or Docker). * scrontab - change temporary file handling to work with emacs. - Removed check-for-lipmix.so.MAJOR.patch - Added: load-pmix-major-version.patch- Update to 20.11.03 - This release includes a major functional change to how job step launch is handled compared to the previous 20.11 releases. This affects srun as well as MPI stacks - such as Open MPI - which may use srun internally as part of the process launch. One of the changes made in the Slurm 20.11 release was to the semantics for job steps launched through the 'srun' command. This also inadvertently impacts many MPI releases that use srun underneath their own mpiexec/mpirun command. For 20.11.{0,1,2} releases, the default behavior for srun was changed such that each step was allocated exactly what was requested by the options given to srun, and did not have access to all resources assigned to the job on the node by default. This change was equivalent to Slurm setting the --exclusive option by default on all job steps. Job steps desiring all resources on the node needed to explicitly request them through the new '--whole' option. In the 20.11.3 release, we have reverted to the 20.02 and older behavior of assigning all resources on a node to the job step by default. This reversion is a major behavioral change which we would not generally do on a maintenance release, but is being done in the interest of restoring compatibility with the large number of existing Open MPI (and other MPI flavors) and job scripts that exist in production, and to remove what has proven to be a significant hurdle in moving to the new release. Please note that one change to step launch remains - by default, in 20.11 steps are no longer permitted to overlap on the resources they have been assigned. If that behavior is desired, all steps must explicitly opt-in through the newly added '--overlap' option. Further details and a full explanation of the issue can be found at: https://bugs.schedmd.com/show_bug.cgi?id=10383#c63 - Other changes from 20.11.03 * Fix segfault when parsing bad "#SBATCH hetjob" directive. * Allow countless gpu:srun, sbatch->srun sequence. * Reject job credential if non-superuser sets the LAUNCH_NO_ALLOC flag. * Make it so srun --no-allocate works again. * jobacct_gather/linux - Don't count memory on tasks that have already finished. * Fix 19.05/20.02 batch steps talking with a 20.11 slurmctld. * jobacct_gather/common - Do not process jobacct's with same taskid when calling prec_extra. * Cleanup all tracked jobacct tasks when extern step child process finishes. * slurmrestd/dbv0.0.36 - Correct structure of dbv0.0.36_tres_list. * Fix regression causing task/affinity and task/cgroup to be out of sync when configured ThreadsPerCore is different than the physical threads per core. * Fix situation when --gpus is given but not max nodes (-N1-1) in a job allocation. * Interactive step - ignore cpu bind and mem bind options, and do not set the associated environment variables which lead to unexpected behavior from srun commands launched within the interactive step. * Handle exit code from pipe when using UCX with PMIx.- Fix fallout introduced by: "Replace '%service_del_postun -n' with '%service_del_postun_without_restart'" for older Leap/SLE versions.- Fix Provides:/Conflicts: for libnss_slurm (bsc#1180700).- Add support for configuration files from external plugins. While built-in plugins have their configuration added in slurm.conf, external SPANK plugins add their configuration to plugstack.conf To allow packaging easily spank plugins, their configuration files should be added independently at /etc/spack/plugstack.conf.d and plugstack.conf should be left with an oneliner including all the files under /etc/spack/plugstack.conf.d- Update to 20.11.02 * Fix older versions of sacct not working with 20.11. * Fix slurmctld crash when using a pre-20.11 srun in a job allocation. * Correct logic problem in _validate_user_access. * Fix libpmi to initialize Slurm configuration correctly. - Update to 20.11.01 * Fix spelling of "overcomited" to "overcomitted" in sreport's cluster utilization report. * Silence debug message about shutting down backup controllers if none are configured. * Don't create interactive srun until PrologSlurmctld is done. * Fix fd symlink path resolution. * Fix slurmctld segfault on subnode reservation restore after node configuration change. * Fix resource allocation response message environment allocation size. * Ensure that details->env_sup is NULL terminated. * select/cray_aries - Correctly remove jobs/steps from blades using NPC. * cons_tres - Avoid max_node_gres when entire node is allocated with - -ntasks-per-gpu. * Allow NULL arg to data_get_type(). * In sreport have usage for a reservation contain all jobs that ran in the reservation instead of just the ones that ran in the time specified. This matches the report for the reservation is not truncated for a time period. * Fix issue with sending wrong batch step id to a < 20.11 slurmd. * Add a job's alloc_node to lua for job modification and completion. * Fix regression getting a slurmdbd connection through the perl API. * Stop the extern step terminate monitor right after proctrack_g_wait(). * Fix removing the normalized priority of assocs. * slurmrestd/v0.0.36 - Use correct name for partition field: "min nodes per job" -"min_nodes_per_job". * slurmrestd/v0.0.36 - Add node comment field. * Fix regression marking cloud nodes as "unexpectedly rebooted" after multiple boots. * Fix slurmctld segfault in _slurm_rpc_job_step_create(). * slurmrestd/v0.0.36 - Filter node states against NODE_STATE_BASE to avoid the extended states all being reported as "invalid". * Fix race that can prevent the prolog for a requeued job from running. * cli_filter - add "type" to readily distinguish between the CLI command in use. * smail - reduce sleep before seff to 5 seconds. * Ensure SPANK prolog and epilog run without an explicit PlugStackConfig. * Disable MySQL automatic reconnection. * Fix allowing "b" after memory unit suffixes. * Fix slurmctld segfault with reservations without licenses. * Due to internal restructuring ahead of the 20.11 release, applications calling libslurm MUST call slurm_init(NULL) before any API calls. Otherwise the API call is likely to fail due to libslurm's internal configuration not being available. * slurm.spec - allow custom paths for PMIx and UCX install locations. * Use rpath if enabled when testing for Mellanox's UCX libraries. * slurmrestd/dbv0.0.36 - Change user query for associations to optional. * slurmrestd/dbv0.0.36 - Change account query for associations to optional. * mpi/pmix - change the error handler error message to be more useful. * Add missing connection in acct_storage_p_{clear_stats, reconfig, shutdown}. * Perl API - fix issue when running in configless mode. * nss_slurm - avoid deadlock when stray sockets are found. * Display correct value for ScronParameters in 'scontrol show config'- Update to version 20.11.0 Slurm 20.11 includes a number of new features including: * Overhaul of the job step management and launch code, alongside improved GPU task placement support. * A new "Interactive Step" mode of operation for salloc. * A new "scrontab" command that can be used to submit and manage periodically repeating jobs. * IPv6 support. * Changes to the reservation logic, with new options allowing users to delete reservations, allowing admins to skip the next occurance of a repeated reservation, and allowing for a job to be submitted and eligible to run within multiple reservations. * Dynamic Future Nodes - automatically associate a dynamically provisioned (or "cloud") node against a NodeName definition with matching hardware. * An experimental new RPC queuing mode for slurmctld to reduce thread contention on heavily loaded clusters. * SlurmDBD integration with the Slurm REST API. Also check https://github.com/SchedMD/slurm/blob/slurm-20-11-0-1/RELEASE_NOTES- Updated to 20.02.6, addresses two security fixes: * PMIx - fix potential buffer overflows from use of unpackmem(). CVE-2020-27745 (bsc#1178890) * X11 forwarding - fix potential leak of the magic cookie when sent as an argument to the xauth command. CVE-2020-27746 (bsc#1178891) - And many other bugfixes, full log and details available at: * https://lists.schedmd.com/pipermail/slurm-announce/2020/000045.html- Replace '%service_del_postun -n' with '%service_del_postun_without_restart' '-n' is deprecated and will be removed in the future.- Updated to 20.02.5, changes: * Fix leak of TRESRunMins when job time is changed with --time-min * pam_slurm - explicitly initialize slurm config to support configless mode. * scontrol - Fix exit code when creating/updating reservations with wrong Flags. * When a GRES has a no_consume flag, report 0 for allocated. * Fix cgroup cleanup by jobacct_gather/cgroup. * When creating reservations/jobs don't allow counts on a feature unless using an XOR. * Improve number of boards discovery * Fix updating a reservation NodeCnt on a zero-count reservation. * slurmrestd - provide an explicit error messages when PSK auth fails. * cons_tres - fix job requesting single gres per-node getting two or more nodes with less CPUs than requested per-task. * cons_tres - fix calculation of cores when using gres and cpus-per-task. * cons_tres - fix job not getting access to socket without GPU or with less than --gpus-per-socket when not enough cpus available on required socket and not using --gres-flags=enforce binding. * Fix HDF5 type version build error. * Fix creation of CoreCnt only reservations when the first node isn't available. * Fix wrong DBD Agent queue size in sdiag when using accounting_storage/none. * Improve job constraints XOR option logic. * Fix preemption of hetjobs when needed nodes not in leader component. * Fix wrong bit_or() messing potential preemptor jobs node bitmap, causing bad node deallocations and even allocation of nodes from other partitions. * Fix double-deallocation of preempted non-leader hetjob components. * slurmdbd - prevent truncation of the step nodelists over 4095. * Fix nodes remaining in drain state state after rebooting with ASAP option. - changes from 20.02.4: * srun - suppress job step creation warning message when waiting on PrologSlurmctld. * slurmrestd - fix incorrect return values in data_list_for_each() functions. * mpi/pmix - fix issue where HetJobs could fail to launch. * slurmrestd - set content-type header in responses. * Fix cons_res GRES overallocation for --gres-flags=disable-binding. * Fix cons_res incorrectly filtering cores with respect to GRES locality for - -gres-flags=disable-binding requests. * Fix regression where a dependency on multiple jobs in a single array using underscores would only add the first job. * slurmrestd - fix corrupted output due to incorrect use of memcpy(). * slurmrestd - address a number of minor Coverity warnings. * Handle retry failure when slurmstepd is communicating with srun correctly. * Fix jobacct_gather possibly duplicate stats when _is_a_lwp error shows up. * Fix tasks binding to GRES which are closest to the allocated CPUs. * Fix AMD GPU ROCM 3.5 support. * Fix handling of job arrays in sacct when querying specific steps. * slurmrestd - avoid fallback to local socket authentication if JWT authentication is ill-formed. * slurmrestd - restrict ability of requests to use different authentication plugins. * slurmrestd - unlink named unix sockets before closing. * slurmrestd - fix invalid formatting in openapi.json. * Fix batch jobs stuck in CF state on FrontEnd mode. * Add a separate explicit error message when rejecting changes to active node features. * cons_common/job_test - fix slurmctld SIGABRT due to double-free. * Fix updating reservations to set the duration correctly if updating the start time. * Fix update reservation to promiscuous mode. * Fix override of job tasks count to max when ntasks-per-node present. * Fix min CPUs per node not being at least CPUs per task requested. * Fix CPUs allocated to match CPUs requested when requesting GRES and threads per core equal to one. * Fix NodeName config parsing with Boards and without CPUs. * Ensure SLURM_JOB_USER and SLURM_JOB_UID are set in SrunProlog/Epilog. * Fix error messages for certain invalid salloc/sbatch/srun options. * pmi2 - clean up sockets at step termination. * Fix 'scontrol hold' to work with 'JobName'. * sbatch - handle --uid/--gid in #SBATCH directives properly. * Fix race condition in job termination on slurmd. * Print specific error messages if trying to run use certain priority/multifactor factors that cannot work without SlurmDBD. * Avoid partial GRES allocation when --gpus-per-job is not satisfied. * Cray - Avoid referencing a variable outside of it's correct scope when dealing with creating steps within a het job. * slurmrestd - correctly handle larger addresses from accept(). * Avoid freeing wrong pointer with SlurmctldParameters=max_dbd_msg_action with another option after that. * Restore MCS label when suspended job is resumed. * Fix insufficient lock levels. * slurmrestd - use errno from job submission. * Fix "user" filter for sacctmgr show transactions. * Fix preemption logic. * Fix no_consume GRES for exclusive (whole node) requests. * Fix regression in 20.02 that caused an infinite loop in slurmctld when requesting --distribution=plane for the job. * Fix parsing of the --distribution option. * Add CONF READ_LOCK to _handle_fed_send_job_sync. * prep/script - always call slurmctld PrEp callback in _run_script(). * Fix node estimation for jobs that use GPUs or --cpus-per-task. * Fix jobcomp, job_submit and cli_filter Lua implementation plugins causing slurmctld and/or job submission CLI tools segfaults due to bad return handling when the respective Lua script failed to load. * Fix propagation of gpu options through hetjob components. * Add SLURM_CLUSTERS environment variable to scancel. * Fix packing/unpacking of "unlinked" jobs. * Connect slurmstepd's stderr to srun for steps launched with --pty. * Handle MPS correctly when doing exclusive allocations. * slurmrestd - fix compiling against libhttpparser in a non-default path. * slurmrestd - avoid compilation issues with libhttpparser < 2.6. * Fix compile issues when compiling slurmrestd without --enable-debug. * Reset idle time on a reservation that is getting purged. * Fix reoccurring reservations that have Purge_comp= to keep correct duration if they are purged. * scontrol - changed the "PROMISCUOUS" flag to "MAGNETIC" * Early return from epilog_set_env in case of no_consume. * Fix cons_common/job_test start time discovery logic to prevent skewed results between "will run test" executions. * Ensure TRESRunMins limits are maintained during "scontrol reconfigure". * Improve error message when host lookup fails. - Refresh patch: pam_slurm-Initialize-arrays-and-pass-sizes.patch- Add support for openPMIx also for Leap/SLE 15.0/1 (bsc#1173805). - Do not run %check on SLE-12-SP2: Some incompatibility in tcl makes this fail. - Remove unneeded build dependency to postgresql-devel. - Disable build on s390 (requires 64bit).- Bring QA to the package build: add %%check stage. - Remove cruft that isn't needed any longer. - Add 'ghosted' run-file. - Add rpmlint filter to handle issues with library packages for Leap and enterprise upgrade versions.- Updated to 20.02.3 which fixes CVE-2020-12693 (bsc#1172004). - Other changes are: * Factor in ntasks-per-core=1 with cons_tres. * Fix formatting in error message in cons_tres. * Fix calling stat on a NULL variable. * Fix minor memory leak when using reservations with flags=first_cores. * Fix gpu bind issue when CPUs=Cores and ThreadsPerCore > 1 on a node. * Fix --mem-per-gpu for heterogenous --gres requests. * Fix slurmctld load order in load_all_part_state(). * Fix race condition not finding jobacct gather task cgroup entry. * Suppress error message when selecting nodes on disjoint topologies. * Improve performance of _pack_default_job_details() with large number of job * arguments. * Fix archive loading previous to 17.11 jobs per-node req_mem. * Fix regresion validating that --gpus-per-socket requires --sockets-per-node * for steps. Should only validate allocation requests. * error() instead of fatal() when parsing an invalid hostlist. * nss_slurm - fix potential deadlock in slurmstepd on overloaded systems. * cons_tres - fix --gres-flags=enforce-binding and related --cpus-per-gres. * cons_tres - Allocate lowest numbered cores when filtering cores with gres. * Fix getting system counts for named GRES/TRES. * MySQL - Fix for handing typed GRES for association rollups. * Fix step allocations when tasks_per_core > 1. * Fix allocating more GRES than requested when asking for multiple GRES types.- Treat libnss_slurm like any other package: add version string to upgrade package.- Updated to 20.02.1 with following changes" * Improve job state reason for jobs hitting partition_job_depth. * Speed up testing of singleton dependencies. * Fix negative loop bound in cons_tres. * srun - capture the MPI plugin return code from mpi_hook_client_fini() and use as final return code for step failure. * Fix segfault in cli_filter/lua. * Fix --gpu-bind=map_gpu reusability if tasks > elements. * Make sure config_flags on a gres are sent to the slurmctld on node registration. * Prolog/Epilog - Fix missing GPU information. * Fix segfault when using config parser for expanded lines. * Fix bit overlap test function. * Don't accrue time if job begin time is in the future. * Remove accrue time when updating a job start/eligible time to the future. * Fix regression in 20.02.0 that broke --depend=expand. * Reset begin time on job release if it's not in the future. * Fix for recovering burst buffers when using high-availability. * Fix invalid read due to freeing an incorrectly allocated env array. * Update slurmctld -i message to warn about losing data. * Fix scontrol cancel_reboot so it clears the DRAIN flag and node reason for a pending ASAP reboot.- Remove legacy_cray: with 20.02 the special treatment for cray-specific plugins on SLE version prior to 15SP2 is no longer required.- slurm-plugins will now also require pmix not only libpmix (bsc#1164326)- Removed autopatch as it doesn't work for the SLE-11-SP4 build.- Disable %arm builds as this is no longer supported.- pmix searches now also for libpmix.so.2 so that there is no dependency for devel package (bsc#1164386) * added patch file check-for-lipmix.so.MAJOR.patch * reworded patch file Remove-rpath-from-build.patch to use %autopatch- Update to version 20.02.0 (jsc#SLE-8491) * Fix minor memory leak in slurmd on reconfig. * Fix invalid ptr reference when rolling up data in the database. * Change shtml2html.py to require python3 for RHEL8 support, and match man2html.py. * slurm.spec - override "hardening" linker flags to ensure RHEL8 builds in a usable manner. * Fix type mismatches in the perl API. * Prevent use of uninitialized slurmctld_diag_stats. * Fixed various Coverity issues. * Only show warning about root-less topology in daemons. * Fix accounting of jobs in IGNORE_JOBS reservations. * Fix issue with batch steps state not loading correctly when upgrading from 19.05. * Deprecate max_depend_depth in SchedulerParameters and move it to DependencyParameters. * Silence erroneous error on slurmctld upgrade when loading federation state. * Break infinite loop in cons_tres dealing with incorrect tasks per tres request resulting in slurmctld hang. * Improve handling of --gpus-per-task to make sure appropriate number of GPUs is assigned to job. * Fix seg fault on cons_res when requesting --spread-job. - Move to python3 for everything but SLE-11-SP4 * For SLE-11-SP4 add a workaround to handle a python3 script (python2.7 compliant).- Add explicit version dependency to libpmix as well. 'slurm-devel' has a tight version dependency on libpmix - allowing multiple libpmix versions in one package repository is therefore essential.- Update to version 20.02.0-rc1 * sbatch - fix segfault when no newline at the end of a burst buffer file. * Change scancel to only check job's base state when matching -t options. * Save job dependency list in state files. * cons_tres - allow jobs to be run on systems with root-less topologies. * Restore pre-20.02pre1 PrologSlurmctld synchonization behavior to avoid various race conditions, and ensure proper batch job launch. * Add new slurmrestd command/daemon which implements the Slurm REST API.- Update to version 20.02.0-0pre1, highlights are Highlights: * Exclusive behavior of a node includes all GRES on a node as well as the cpus. * Use python3 instead of python for internal build/test scripts. The slurm.spec file has been updated to depend on python3 as well. * Added new NodeSet configuration option to help simplify partition configuration sections for heterogeneous / condo*style clusters. * Added slurm.conf option MaxDBDMsgs to control how many messages will be stored in the slurmctld before throwing them away when the slurmdbd is down. * The checkpoint plugin interface and all associated API calls have been removed. * slurm_init_job_desc_msg() initializes mail_type as uint16_t. This allows mail_type to be set to NONE with scontrol. * Add new slurm_spank_log() function to print messages back to the user from within a SPANK plugin without prepending "error: " from slurm_error(). * Enforce having partition name and nodelist=ALL when creating reservations with flags=PART_NODES. * SPANK - removed never-implemented slurm_spank_slurmd_init() interface. This hook has always been accessible through slurm_spank_init() in the S_CTX_SLURMD context instead. * sbcast - add new BcastAddr option to NodeName lines to allow sbcast traffic to flow over an alternate network path. * Added auth/jwt plugin, and 'scontrol token' subcommand. PMIx - improve * performance of proc map generation. Deprecate kill_invalid_depend in * SchedulerParameters and move it to a new option called DependencyParameters. * Enable job dependencies for any job on any cluster in the same federation. * Allow clusters to be added automatically to db at startup of ctld. Add * AccountingStorageExternalHost slurm.conf parameter. The * "ConditionPathExists" condition in slurmd.service has been disabled by default to permit simpler installation of a "configless" Slurm cluster. * In SchedulerParameters remove deprecated max_job_bf and replace with bf_max_job_test. * Disable sbatch, salloc, srun --reboot for non-admins. SPANK - added support * for S_JOB_GID in the job script context with spank_get_item(). * Prolog/Epilog - add SLURM_JOB_GID environment variable. configuration file changes: * The mpi/openmpi plugin has been removed as it does nothing. MpiDefault=openmpi will be translated to the functionally-equivalent MpiDefault=none. command changes (see man pages for details) * Display StepId=.batch instead of StepId=.4294967294 in output of "scontrol show step". (slurm_sprint_job_step_info()) * MPMD in srun will now defer PATH resolution for the commands to launch to slurmstepd. Previously it would handle resolution client*side, but with a non*standard approach that walked PATH in reverse. * squeue - added "--me" option, equivalent to --user=$USER. * The LicensesUsed line has been removed from 'scontrol show config'. Please see the 'scontrol show licenses' command as an alternative. * sbatch - adjusted backoff times for "--wait" option to reduce load on slurmctld. This results in a steady*state delay of 32s between queries, instead of the prior 10s delay. - Removed following deprecated patches: * removed patch slurmctld-rerun-agent_init-when-backup-controller-takes-over.patch * removed patch split-xdaemon-in-xdaemon_init-and-xdaemon_finish-for.patch * removed patch slurmctld-uses-xdaemon_-for-systemd.patch * removed patch slurmd-uses-xdaemon_-for-systemd.patch * removed patch slurmdbd-uses-xdaemon_-for-systemd.patch * removed patch slurmsmwd-uses-xdaemon_-for-systemd.patch * removed patch removed-deprecated-xdaemon.patch- standard slurm.conf uses now also SlurmctldHost on all build targets (bsc#1162377)- Fix a missed systemd_requires -> systemd_ordering conversion.- Remove special OHPC compatibility macro: these settings should be applied univerally. - Add a Recommends for mariadb to slurm-slurmdbd: it is recommened to run the database on the same machine as the daemon.- BuildRequire pkgconfig(systemd) instead of systemd: allow OBS to shortcut through the -mini flavors. - Use systemd_ordering instead of systemd_requires: systemd is never a strict requirement; but in case the system is scheduled for installation together with systemd, we want systemd to be installed prior to slurm.- start slurmdbd after mariadb (bsc#1161716)- Fix base_ver for SLE 15 SP2.- Update to version 19.05.5 (jsc#SLE-8491) * Check %docdir/NEWS for details. * Includes security fixes CVE-2019-19727, CVE-2019-19728, CVE-2019-12838. * Disable i586 builds as this is no longer supported. * Create libnss_slurm package to support user and group resolution thru slurmstepd. * slurm-2.4.4-rpath.patch -> Remove-rpath-from-build.patch Obsoleted: - pam_slurm_adopt-avoid-running-outside-of-the-sshd-PA.patch - pam_slurm_adopt-send_user_msg-don-t-copy-undefined-d.patch - pam_slurm_adopt-use-uid-to-determine-whether-root-is.patch- Deprecate "ControlMachine" only for SLURM version upgrades and products newer than 1501. This ensures that the original setting is retained for the SLURM version shipped origianlly with SLE-15-SP1 or Leap 15.1.- Update to v18.08.9 for fixing CVE-2019-19728 (bsc#1159692). * Wrap END_TIMER{,2,3} macro definition in "do {} while (0)" block. * Make sview work with glib2 v2.62. * Make Slurm compile on linux after sys/sysctl.h was deprecated. * Install slurmdbd.conf.example with 0600 permissions to encourage secure use. CVE-2019-19727. * srun - do not continue with job launch if --uid fails. CVE-2019-19728.- added pmix support jsc#SLE-10800- Use --with-shared-libslurm to build slurm binaries using libslurm. - Make libslurm depend on slurm-config.- Fix ownership of /var/spool/slurm on new installations and upgrade (boo#1158696).- Fix permissions of slurmdbd.conf (bsc#1155784, CVE-2019-19727). - Fix %posttrans macro _res_update to cope with added newline (bsc#1153259).- Add package slurm-webdoc which sets up a web server to provide the documentation for the version shipped.- Move srun from 'slurm' to 'slurm-node': srun is required on the nodes as well so sbatch will work. 'slurm-node' is a requirement when 'slurm' is installed (bsc#1153095).- Set %base_ver for SLE-15-SP2 to 18.08 (for now).- Edit sample configuration to deprecate "ControlMachine", "ControlAddr", "BackupController" and "BackupAddr" in favor "SlurmctldHost".- Fix logic of slurm-munge recommends: slurm-munge requires munge already, so if we have munge installed we recommend slurm-munge as the authentication when installing slurm or slurm-node.- Fix build for SLE-11-SP4 and older.- added cray depend libraries to seperate package, as they are now built, since json is enabled- Updated to 18.08.8 for fixing (CVE-2019-12838, bsc#1140709, jsc#SLE-7341, jsc#SLE-7342) * Update "xauth list" to use the same 10000ms timeout as the other xauth commands. * Fix issue in gres code to handle a gres cnt of 0. * Don't purge jobs if backfill is running. * Verify job is pending add/removing accrual time. * Don't abort when the job doesn't have an association that was removed before the job was able to make it to the database. * Set state_reason if select_nodes() fails job for QOS or Account. * Avoid seg_fault on referencing association without a valid_qos bitmap. * If Association/QOS is removed on a pending job set that job as ineligible. * When changing a jobs account/qos always make sure you remove the old limits. * Don't reset a FAIL_QOS or FAIL_ACCOUNT job reason until the qos or account changed. * Restore "sreport -T ALL" functionality. * Correctly typecast signals being sent through the api. * Properly initialize structures throughout Slurm. * Sync "numtask" squeue format option for jobs and steps to "numtasks". * Fix sacct -PD to avoid CA before start jobs. * Fix potential deadlock with backup slurmctld. * Fixed issue with jobs not appearing in sacct after dependency satisfied. * Fix showing non-eligible jobs when asking with -j and not -s. * Fix issue with backfill scheduler scheduling tasks of an array when not the head job. * accounting_storage/mysql - fix SIGABRT in the archive load logic. * accounting_storage/mysql - fix memory leak in the archive load logic. * Limit records per single SQL statement when loading archived data. * Fix unnecessary reloading of job submit plugins. * Allow job submit plugins to be turned on/off with a reconfigure. * Fix segfault when loading/unloading Lua job submit plugin multiple times. * Fix printing duplicate error messages of jobs rejected by job submit plugin. * Fix printing of job submit plugin messages of het jobs without pack id. * Fix memory leak in group_cache.c * Fix jobs stuck from FedJobLock when requeueing in a federation * Fix requeueing job in a federation of clusters with differing associations * sacctmgr - free memory before exiting in 'sacctmgr show runaway'. * Fix seff showing memory overflow when steps tres mem usage is 0. * Upon archive file name collision, create new archive file instead of overwriting the old one to prevent lost records. * Limit archive files to 50000 records per file so that archiving large databases will succeed. * Remove stray newlines in SPANK plugin error messages. * Fix archive loading events. * In select/cons_res: Only allocate 1 CPU per node with the --overcommit and - -nodelist options. * Fix main scheduler from potentially not running through whole queue. * cons_res/job_test - prevent a job from overallocating a node memory. * cons_res/job_test - fix to consider a node's current allocated memory when testing a job's memory request. * Fix issue where multi-node job steps on cloud nodes wouldn't finish cleaning up until the end of the job (rather than the end of the step). * Fix issue with a 17.11 sbcast call to a 18.08 daemon. * Add new job bit_flags of JOB_DEPENDENT. * Make it so dependent jobs reset the AccrueTime and do not count against any AccrueTime limits. * Fix sacctmgr --parsable2 output for reservations and tres. * Prevent slurmctld from potential segfault after job_start_data() called for completing job. * Fix jobs getting on nodes with "scontrol reboot asap". * Record node reboot events to database. * Fix node reboot failure message getting to event table. * Don't write "(null)" to event table when no event reason exists. * Fix minor memory leak when clearing runaway jobs. * Avoid flooding slurmctld and logging when prolog complete RPC errors occur. * Fix GCC 9 compiler warnings. * Fix seff human readable memory string for values below a megabyte. * Fix dump/load of rejected heterogeneous jobs. * For heterogeneous jobs, do not count the each component against the QOS or association job limit multiple times. * slurmdbd - avoid reservation flag column corruption with the use of newer flags, instead preserve the older flag fields that we can still fit in the smallint field, and discard the rest. * Fix security issue in accounting_storage/mysql plugin on archive file loads by always escaping strings within the slurmdbd. CVE-2019-12838.- Fix build dependency issue around libibmad-devel introduced in SLE-12-SP4.- Add BuildRequires to address warnings during build: * for libcurl-devel, libssh2-devel and rrdtool-devel * for libjson-c-devel and liblz4-devel where available, disable these with --without-json and --without-lz4 where not. * disable DataWarp (--without-datawarp).- Update SLURM to 18.08.7: * Set debug statement to debug2 to avoid benign error messages. * Add SchedulerParameters option of bf_hetjob_immediate to attempt to start a heterogeneous job as soon as all of its components are determined able to do so. * Fix underflow causing decay thread to exit. * Fix main scheduler not considering hetjobs when building the job queue. * Fix regression for sacct to display old jobs without a start time. * Fix setting correct number of gres topology bits. * Update hetjobs pending state reason when appropriate. * Fix accounting_storage/filetxt's understanding of TRES. * Set Accrue time when not enforcing limits. * Fix srun segfault when requesting a hetjob with test_exec or bcast options. * Hide multipart priorities log message behind Priority debug flag. * sched/backfill - Make hetjobs sensitive to bf_max_job_start. * Fix slurmctld segfault due to job's partition pointer NULL dereference. * Fix issue with OR'ed job dependencies. * Add new job's bit_flags of INVALID_DEPEND to prevent rebuilding a job's dependency string when it has at least one invalid and purged dependency. * Promote federation unsynced siblings log message from debug to info. * burst_buffer/cray - fix slurmctld SIGABRT due to illegal read/writes. * burst_buffer/cray - fix memory leak due to unfreed job script content. * node_features/knl_cray - fix script_argv use-after-free. * burst_buffer/cray - fix script_argv use-after-free. * Fix invalid reads of size 1 due to non null-terminated string reads. * Add extra debug2 logs to identify why BadConstraints reason is set.- Do not build hdf5 support where not available.- Add support for version updates on SLE: Update packages to a later version than the version supported originally on SLE will receive a version string in their package name.- added the hdf5 job data gathering plugin- Add backward compatibility with SLE-11 SP4- Update to version 18.08.05-2: This version obsoletes: Fix-contrib-perlapi-to-build-with-the-fix-for-CVE-2019-6438-750cc23ed.patch - Fix spec file for older SUSE versions.- Update to version 18.08.05: * Add mitigation for a potential heap overflow on 32-bit systems in xmalloc. (CVE-2019-6438, bsc#1123304). * Other fixes: + Backfill - If a job has a time_limit guess the end time of a job better if OverTimeLimit is Unlimited. + Fix "sacctmgr show events event=cluster" + Fix sacctmgr show runawayjobs from sibling cluster + Avoid bit offset of -1 in call to bit_nclear(). + Insure that "hbm" is a configured GresType on knl systems. + Fix NodeFeaturesPlugins=node_features/knl_generic to allow other gres other than knl. + cons_res: Prevent overflow on multiply. + Better debug for bad values in gres.conf. + Fix double accounting of energy at end of job. + Read gres.conf for cloud nodes on slurmctld. + Don't assume the first node of a job is the batch host when purging jobs from a node. + Better debugging when a job doesn't have a job_resrcs ptr. + Store ave watts in energy plugins. + Add XCC plugin for reading Lenovo Power. + Fix minor memory leak when scheduling rebootable nodes. + Fix debug2 prefix for sched log. + Fix printing correct SLURM_JOB_ACCOUNT_PACK_GROUP_* in env for a Het Job. + sbatch - search current working directory first for job script. + Make it so held jobs reset the AccrueTime and do not count against any AccrueTime limits. + Add SchedulerParameters option of bf_hetjob_prio=[min|avg|max] to alter the job sorting algorithm for scheduling heterogeneous jobs. + Fix initialization of assoc_mgr_locks and slurmctld_locks lock structures. + Fix segfault with job arrays using X11 forwarding. + Revert regression caused by e0ee1c7054 which caused negative values and values starting with a decimal to be invalid for PriorityWeightTRES and TRESBillingWeight. + Fix possibility to update a job's reservation to none. + Suppress connection errors to primary slurmdbd when backup dbd is active. + Suppress connection errors to primary db when backup db kicks in + Add missing fields for sacct --completion when using jobcomp/filetxt. + Fix incorrect values set for UserCPU, SystemCPU, and TotalCPU sacct fields when JobAcctGatherType=jobacct_gather/cgroup. + Fixed srun from double printing invalid option msg twice. + Remove unused -b flag from getopt call in sbatch. + Disable reporting of node TRES in sreport. + Re-enabling features combined by OR within parenthesis for non-knl setups. + Prevent sending duplicate requests to reboot a node before ResumeTimeout. + Down nodes that don't reboot by ResumeTimeout. + Update seff to reflect API change from rss_max to tres_usage_in_max. + Add missing TRES constants from perl API. + Fix issue where sacct would return incorrect array tasks when querying specific tasks. + Add missing variables to slurmdb_stats_t in the perlapi. + Fix nodes not getting reboot RPC when job requires reboot of nodes. + Fix failing update the partition list of a job. + Use slurm.conf gres ids instead of gres.conf names to get a gres type name. * Disable slurmctld-rerun-agent_init-when-backup-controller-takes-over.patch: Believed to be fixed by commit c1a537dbbe6 See: https://bugs.schedmd.com/show_bug.cgi?id=5511 * Add Fix-contrib-perlapi-to-build-with-the-fix-for-CVE-2019-6438-750cc23ed.patch: Fix fallout from 750cc23ed for CVE-2019-6438.- Update to 18.08.04, with following highlights * Fix message sent to user to display preempted instead of time limit when a job is preempted. * Fix memory leak when a failure happens processing a nodes gres config. * Improve error message when failures happen processing a nodes gres config. * Don't skip jobs in scontrol hold. * Allow --cpu-bind=verbose to be used with SLURM_HINT environment variable. * Enhanced handling for runaway jobs * cons_res: Delay exiting cr_job_test until after cores/cpus are calculated and distributed. * Don't check existence of srun --prolog or --epilog executables when set to "none" and SLURM_TEST_EXEC is used. * Add "P" suffix support to job and step tres specifications. * Fix jobacct_gather/cgroup to work correctly when more than one task is started on a node. * salloc - set SLURM_NTASKS_PER_CORE and SLURM_NTASKS_PER_SOCKET in the environment if the corresponding command line options are used. * slurmd - fix handling of the -f flag to specify alternate config file locations. * Add SchedulerParameters option of bf_ignore_newly_avail_nodes to avoid scheduling lower priority jobs on resources that become available during the backfill scheduling cycle when bf_continue is enabled. * job_submit/lua: Add several slurmctld return codes and add user/group info * salloc/sbatch/srun - print warning if mutually exclusive options of --mem and --mem-per-cpu are both set. - Refreshed: * pam_slurm_adopt-avoid-running-outside-of-the-sshd-PA.patch- restarting services on update only when activated - added rotation of logs - Added backported patches which harden the pam module pam_slurm_adopt (BOO#1116758) which will be in slurm 19.05.x * added pam_slurm_adopt-avoid-running-outside-of-the-sshd-PA.patch [PATCH 1/3] pam_slurm_adopt: avoid running outside of the sshd PAM * added pam_slurm_adopt-send_user_msg-don-t-copy-undefined-d.patch [PATCH 2/3] pam_slurm_adopt: send_user_msg: don't copy undefined data * added pam_slurm_adopt-use-uid-to-determine-whether-root-is.patch [PATCH 3/3] pam_slurm_adopt: use uid to determine whether root is logging on - package slurm-pam_slurm now depends on slurm-node and not on slurm- fixed code in %pretrans section to be compatible with lua 5.1- Added missing perl-base dependency.- Moved HTML docs to doc package.- Moved config man pages to a separate package: This way, they won't get installed on compute nodes.- Update to 18.08.3 * Add new burst buffer state of "teardown-fail" to indicate the burst buffer teardown operation is failing on specific buffers. * Multiple backup slurmctld daemons can be configured * Enable jobs with zero node count for creation and/or deletion of persistent burst buffers. * Add "scontrol show dwstat" command to display Cray burst buffer status. * Add "GetSysStatus" option to burst_buffer.conf file. * Add node and partition configuration options of "CpuBind" to control default task binding. * Add "NumaCpuBind" option to knl.conf * Add sbatch "--batch" option to identify features required on batch node. * Add "BatchFeatures" field to output of "scontrol show job". * Add support for "--bb" option to sbatch command. * Add new SystemComment field to job data structure and database. * Expand reservation "flags" field from 32 to 64 bits. * Add job state flag of "SIGNALING" to avoid race condition. * Properly handle srun --will-run option when there are jobs in COMPLETING state. * Properly report who is signaling a step. * Don't combine updated reservation records in sreport's reservation report. * node_features plugin - Add suport for XOR & XAND of job constraints (node feature specifications). * Improvements to how srun searches for the executible when using cwd. * Now programs can be checked before execution if test_exec is set. * Report NodeFeatures plugin configuration with scontrol and sview commands. * Add acct_gather_profile/influxdb plugin. * Add new job state of SO/STAGE_OUT * Correct SLURM_NTASKS and SLURM_NPROCS environment variable for heterogeneous job step. * Expand advanced reservation feature specification to support parenthesis and counts of nodes with specified features. * Defer job signaling until prolog is completed * Have the primary slurmctld wait until the backup has completely shutdown before taking control. * Fix issue where unpacking job state after TRES count changed could lead to invalid reads. * Heterogeneous job steps allocations supported with Open MPI. * Remove redundant function arguments from task plugins. * Add Slurm configuration file check logic using "slurmctld -t" command. * Add the use of a xml file to help performance when using hwloc. * Remove support for "ChosLoc" configuration parameter. * Configuration parameters "ControlMachine", "ControlAddr", "BackupController" and "BackupAddr" replaced by an ordered list of "SlurmctldHost" records. * Remove --immediate option from sbatch. * Add infrastructure for per-job and per-step TRES parameters. * Add DefCpuPerGpu and DefMemPerGpu to global and per-partition configuration parameters. * Add ValidateMode configuration parameter to knl_cray.conf. * Disable local PTY output processing when using 'srun --unbuffered'. * Change the column name for the %U (User ID) field in squeue to 'UID'. * CRAY - Add CheckGhalQuiesce to the CommunicationParameters. * When a process is core dumping, avoid terminating other processes in that task group. * CPU frequency management enhancements: If scaling_available_frequencies file is not available, then derive values from scaling_min_freq and scaling_max_freq values. * Add pending jobs count to sdiag output. * Add configuration paramerers SlurmctldPrimaryOnProg and SlurmctldPrimaryOffProg, which define programs to execute when a slurmctld daemon changes state. * Add configuration paramerers SlurmctldAddr for use with virtual IP to manage backup slurmctld daemons. * Explicitly shutdown the slurmd process when instructed to reboot. * Add ability to create/update partition with TRESBillingWeights through scontrol. * Calcuate TRES billing values at submission. * Add node_features plugin function "node_features_p_reboot_weight()". * Add NodeRebootWeight parameter to knl.conf configuration file. * Completely remove "gres" field from step record. Use "tres_per_node", "tres_per_socket", etc. * Add "Links" parameter to gres.conf configuration file. * Force slurm_mktime() to set tm_isdst to -1. * burst_buffer.conf - Add SetExecHost flag to enable burst buffer access from the login node for interactive jobs. * Append ", with requeued tasks" to job array "end" emails if any tasks in the array were requeued. * Add ResumeFailProgram slurm.conf option to specify a program that is called when a node fails to respond by ResumeTimeout. * Add new job pending reason of "ReqNodeNotAvail, reserved for maintenance". * Remove AdminComment += syntax from 'scontrol update job'. * sched/backfill: Reset job time limit if needed for deadline scheduling. * For heterogeneous job component with required nodes, explicitly exclude those nodes from all other job components. * Add name of partition used to output of srun --test-only output. * sdiag output now reports outgoing slurmctld message queue contents. * Improve escaping special characters on user commands when specifying paths. * Add salloc/sbatch/srun option of --gres-flags=disable-binding to disable filtering of CPUs with respect to generic resource locality. * SlurmDBD - Print warning if MySQL/MariaDB internal tuning is not at least half of the recommended values. * Add ability to specify a node reason when rebooting nodes with "scontrol reboot". * Add nextstate option to "scontrol reboot". * Consider "resuming" (nextstate=resume) nodes as available in backfill future scheduling. * Add TimelimitRaw sacct output field to display timelimit numbers. * Add support for sacct --whole-hetjob=[yes|no] option. * Make salloc handle node requests the same as sbatch. * Add shutdown_on_reboot SlurmdParameter to control whether the Slurmd will shutdown itself down or not when a reboot request is received. * Add cancel_reboot scontrol option to cancel pending reboot of nodes. * Make Users case insensitive in the database based on Parameters=PreserveCaseUser in the slurmdbd.conf. * Improve scheduling when dealing with node_features that could have a boot delay. * Changed the default AuthType for slurmdbd to auth/munge. * Added 'remote-fs.target' to After directive of slurmd.service file. * Remove drain on node when reboot nextstate used. * Speed up pack of job's qos. * Add sacctmgr options to prevent/manage job queue stuffing: - GrpJobsAccrue= - MaxJobsAccrue= * MinPrioThreshold Minimum priority required to reserve resources when scheduling. * Add control_inx value to trigger_info_msg_t to permit future work in the trigger management code to distinguish which of multiple backup controllers has changed state. * NOTES: PreemptType=preempt/job_prio has been removed - use PreemptType=preempt/qos instead. * Bluegene support was deprecated has now been removed * cgroup_allowed_devices_file.conf was removed. It was never used by default, as ConstrainDevices was not set. If needed, refer to the cgroups.conf man page on how to create one. * slurm.epilog.clean: Removed. User should use pam_slurm_adopt instead. - Refreshed: * removed-deprecated-xdaemon.patch * slurmctld-uses-xdaemon_-for-systemd.patch * slurmd-uses-xdaemon_-for-systemd.patch * slurmdbd-uses-xdaemon_-for-systemd.patch * slurmsmwd-uses-xdaemon_-for-systemd.patch * slurmctld-rerun-agent_init-when-backup-controller-takes-over.patch- Move config man-pages to config package.- added correct link flags for perl bindings (bsc#1108671) * added correct linker search path in slurm-2.4.4-rpath.patch * perl:Switch is required by slurm torque wrappers- Fix Requires(pre) and Requires(post) for slurm-config and slurm-node. This fixes issues with failing slurm user creation when installed during initial system installation (bsc#1109373).- Update to 17.11.9 * Fix segfault in slurmctld when a job's node bitmap is NULL during a scheduling cycle. Primarily caused by EnforcePartLimits=ALL. * Remove erroneous unlock in acct_gather_energy/ipmi. * Enable support for hwloc version 2.0.1. * Fix 'srun -q' (--qos) option handling. * Fix socket communication issue that can lead to lost task completition messages, which will cause a permanently stuck srun process. * Handle creation of TMPDIR if environment variable is set or changed in a task prolog script. * Avoid node layout fragmentation if running with a fixed CPU count but without Sockets and CoresPerSocket defined. * burst_buffer/cray - Fix datawarp swap default pool overriding jobdw. * Fix incorrect job priority assignment for multi-partition job with different PriorityTier settings on the partitions. * Fix sinfo to print correct node state.- When using a remote shared StateSaveLocation, slurmctld needs to be started after remote filesystems have become available. Add 'remote-fs.target' to the 'After=' directive in slurmctld.service (boo#1103561).- Update to 17.11.8 * Fix incomplete RESPONSE_[RESOURCE|JOB_PACK]_ALLOCATION building path. * Do not allocate nodes that were marked down due to the node not responding by ResumeTimeout. * task/cray plugin - search for "mems" cgroup information in the file "cpuset.mems" then fall back to the file "mems". * Fix ipmi profile debug uninitialized variable. * PMIx: fixed the direct connect inline msg sending. * MYSQL: Fix issue not handling all fields when loading an archive dump. * Allow a job_submit plugin to change the admin_comment field during job_submit_plugin_modify(). * job_submit/lua - fix access into reservation table. * MySQL - Prevent deadlock caused by archive logic locking reads. * Don't enforce MaxQueryTimeRange when requesting specific jobs. * Modify --test-only logic to properly support jobs submitted to more than one partition. * Prevent slurmctld from abort when attempting to set non-existing qos as def_qos_id. * Add new job dependency type of "afterburstbuffer". The pending job will be delayed until the first job completes execution and it's burst buffer stage-out is completed. * Reorder proctrack/task plugin load in the slurmstepd to match that of slurmd and avoid race condition calling task before proctrack can introduce. * Prevent reboot of a busy KNL node when requesting inactive features. * Revert to previous behavior when requesting memory per cpu/node introduced in 17.11.7. * Fix to reinitialize previously adjusted job members to their original value when validating the job memory in multi-partition requests. * Fix _step_signal() from always returning SLURM_SUCCESS. * Combine active and available node feature change logs on one line rather than one line per node for performance reasons. * Prevent occasionally leaking freezer cgroups. * Fix potential segfault when closing the mpi/pmi2 plugin. * Fix issues with --exclusive=[user|mcs] to work correctly with preemption or when job requests a specific list of hosts. * Make code compile with hdf5 1.10.2+ * mpi/pmix: Fixed the collectives canceling. * SlurmDBD: improve error message handling on archive load failure. * Fix incorrect locking when deleting reservations. * Fix incorrect locking when setting up the power save module. * Fix setting format output length for squeue when showing array jobs. * Add xstrstr function. * Fix printing out of --hint options in sbatch, salloc --help. * Prevent possible divide by zero in _validate_time_limit(). * Add Delegate=yes to the slurmd.service file to prevent systemd from interfering with the jobs' cgroup hierarchies. * Change the backlog argument to the listen() syscall within srun to 4096 to match elsewhere in the code, and avoid communication problems at scale.- slurmctld-rerun-agent_init-when-backup-controller-takes-over.patch: Fix race in the slurmctld backup controller which prevents it to clean up allocations on nodes properly after failing over (bsc#1084917). - Handled %license in a backward compatible manner.- Add a 'Recommends: slurm-munge' to slurm-slurmdbd.- Shield comments between script snippets with a %{!?nil:...} to avoid them being interpreted as scripts - in which case the update level is passed as argument (see chapter 'Shared libraries' in: https://en.opensuse.org/openSUSE:Packaging_scriptlet_snippets) (bsc#1100850).- Update from 17.11.5 to 17.11.7 - Fix security issue in handling of username and gid fields CVE-2018-10995 and bsc#1095508 what implied an update from 17.11.5 to 17.11.7 Highlights of 17.11.6: * CRAY - Add slurmsmwd to the contribs/cray dir * PMIX - Added the direct connect authentication. * Prevent the backup slurmctld from losing the active/available node features list on takeover. * Be able to force power_down of cloud node even if in power_save state. * Allow cloud nodes to be recognized in Slurm when booted out of band. * Numerous fixes - check 'NEWS' file. Highlights of 17.11.7: * Notify srun and ctld when unkillable stepd exits. * Numerous fixes - check 'NEWS' file. - Add: slurmsmwd-uses-xdaemon_-for-systemd.patch * Fixes daemoniziation in newly introduced slurmsmwd daemon. - Rename: split-xdaemon-in-xdaemon_init-and-xdaemon_finish-for-systemd-compatibilty.patch to split-xdaemon-in-xdaemon_init-and-xdaemon_finish-for.patch * remain in sync with commit messages which introduced that file- Avoid running pretrans scripts when running in an instsys: there may be not much installed, yet. pretrans code should be done in lua, this way, it will be executed by the rpm-internal lua interpreter and not be passed to a shell which may not be around at the time this scriptlet is run (bsc#1090292).- Add requires for slurm-sql to the slurmdbd package.- Package READMEs for pam and pam_slurm_adopt. - Use the new %%license directive for COPYING file.- Add: * split-xdaemon-in-xdaemon_init-and-xdaemon_finish-for-systemd-compatibilty.patch * slurmctld-uses-xdaemon_-for-systemd.patch * slurmd-uses-xdaemon_-for-systemd.patch * slurmdbd-uses-xdaemon_-for-systemd.patch * removed-deprecated-xdaemon.patch Fix interaction with systemd: systemd expects that a daemonizing process doesn't go away until the PID file with it PID of the daemon has bee written (bsc#1084125).- Make sure systemd services get restarted only when all packages are in a consistent state, not in the middle of an 'update' transaction (bsc#1088693). Since the %postun scripts that run on update are from the old package they cannot be changed - thus we work around the restart breakage.- fixed wrong log file location in slurmdbd.conf and fixed pid location for slurmdbd and made slurm-slurmdbd depend on slurm config which provides the dir /var/run/slurm (bsc#1086859).- added comment for (bsc#1085606)- Fix security issue in accounting_storage/mysql plugin by always escaping strings within the slurmdbd. CVE-2018-7033 http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2018-7033 (bsc#1085240). - Update slurm to v17.11.5 (FATE#325451) Highlights of 17.11: * Support for federated clusters to manage a single work-flow across a set of clusters. * Support for heterogeneous job allocations (various processor types, memory sizes, etc. by job component). Support for heterogeneous job steps within a single MPI_COMM_WORLD is not yet supported for most configurations. * X11 support is now fully integrated with the main Slurm code. Remove any X11 plugin configured in your plugstack.conf file to avoid errors being logged about conflicting options. * Added new advanced reservation flag of "flex", which permits jobs requesting the reservation to begin prior to the reservation's start time and use resources inside or outside of the reservation. A typical use case is to prevent jobs not explicitly requesting the reservation from using those reserved resources rather than forcing jobs requesting the reservation to use those resources in the time frame reserved. * The sprio command has been modified to report a job's priority information for every partition the job has been submitted to. * Group ID lookup performed at job submit time to avoid lookup on all compute nodes. Enable with PrologFlags=SendGIDs configuration parameter. * Slurm commands and daemons dynamically link to libslurmfull.so instead of statically linking. This dramatically reduces the footprint of Slurm. * In switch plugin, added plugin_id symbol to plugins and wrapped switch_jobinfo_t with dynamic_plugin_data_t in interface calls in order to pass switch information between clusters with different switch types. * Changed default ProctrackType to cgroup. * Changed default sched_min_interval from 0 to 2 microseconds. * Added new 'scontrol write batch_script ' command to fetch a job's batch script. Removed the ability to see the script as part of the 'scontrol -dd show job' command. * Add new "billing" TRES which allows jobs to be limited based on the job's billable TRES calculated by the job's partition's TRESBillingWeights. * Regular user use of "scontrol top" command is now disabled. Use the configuration parameter "SchedulerParameters=enable_user_top" to enable that functionality. The configuration parameter "SchedulerParameters=disable_user_top" will be silently ignored. * Change default to let pending jobs run outside of reservation after reservation is gone to put jobs in held state. Added NO_HOLD_JOBS_AFTER_END reservation flag to use old default. Support for PMIx v2.0 as well as UCX support. * Remove plugins for obsolete MPI stacks: - lam - mpich1_p4 - mpich1_shmem - mvapich * Numerous fixes - check 'NEWS' file. - slurmd-Fix-slurmd-for-new-API-in-hwloc-2.0.patch plugins-cgroup-Fix-slurmd-for-new-API-in-hwloc-2.0.patch: Removed. Code upstream. - slurmctld-service-var-run-path.patch: Replaced by sed script. - Fix some rpmlint warnings.- moved config files to slurm-config package (FATE#324574).- Moved slurmstepd and man page into slurm-node due to slurmd dependency - Moved config files into slurm-node - Moved slurmd rc scripts into slurm-node - Made slurm-munge require slurm-plugins instead of slurm itself - slurm-node suggested slurm-munge, causing the whole slurm to be installed. The slurm-plugins seems to be a more base class (FATE#324574).- split up light wight slurm-node package for deployment on nodes (FATE#324574).- added /var/spool/ directory and removed duplicated entries from slurm.conf- Package so-versioned libs separately. libslurm is expected to change more frequently and thus is packaged separately from libpmi.- Updated to 17.02.9 to fix CVE-2017-15566 (bsc#1065697). Changes in 17.0.9 * When resuming powered down nodes, mark DOWN nodes right after ResumeTimeout has been reached (previous logic would wait about one minute longer). * Fix sreport not showing full column name for TRES Count. * Fix slurmdb_reservations_get() giving wrong usage data when job's spanned reservation that was modified. * Fix sreport reservation utilization report showing bad data. * Show all TRES' on a reservation in sreport reservation utilization report by default. * Fix sacctmgr show reservation handling "end" parameter. * Work around issue with sysmacros.h and gcc7 / glibc 2.25. * Fix layouts code to only allow setting a boolean. * Fix sbatch --wait to keep waiting even if a message timeout occurs. * CRAY - If configured with NodeFeatures=knl_cray and there are non-KNL nodes which include no features the slurmctld will abort without this patch when attemping strtok_r(NULL). * Fix regression in 17.02.7 which would run the spank_task_privileged as part of the slurmstepd instead of it's child process. * Fix security issue in Prolog and Epilog by always prepending SPANK_ to all user-set environment variables. CVE-2017-15566. Changes in 17.0.8: * Add 'slurmdbd:' to the accounting plugin to notify message is from dbd instead of local. * mpi/mvapich - Buffer being only partially cleared. No failures observed. * Fix for job --switch option on dragonfly network. * In salloc with --uid option, drop supplementary groups before changing UID. * jobcomp/elasticsearch - strip any trailing slashes from JobCompLoc. * jobcomp/elasticsearch - fix memory leak when transferring generated buffer. * Prevent slurmstepd ABRT when parsing gres.conf CPUs. * Fix sbatch --signal to signal all MPI ranks in a step instead of just those on node 0. * Check multiple partition limits when scheduling a job that were previously only checked on submit. * Cray: Avoid running application/step Node Health Check on the external job step. * Optimization enhancements for partition based job preemption. * Address some build warnings from GCC 7.1, and one possible memory leak if /proc is inaccessible. * If creating/altering a core based reservation with scontrol/sview on a remote cluster correctly determine the select type. * Fix autoconf test for libcurl when clang is used. * Fix default location for cgroup_allowed_devices_file.conf to use correct default path. * Document NewName option to sacctmgr. * Reject a second PMI2_Init call within a single step to prevent slurmstepd from hanging. * Handle old 32bit values stored in the database for requested memory correctly in sacct. * Fix memory leaks in the task/cgroup plugin when constraining devices. * Make extremely verbose info messages debug2 messages in the task/cgroup plugin when constraining devices. * Fix issue that would deny the stepd access to /dev/null where GRES has a 'type' but no file defined. * Fix issue where the slurmstepd would fatal on job launch if you have no gres listed in your slurm.conf but some in gres.conf. * Fix validating time spec to correctly validate various time formats. * Make scontrol work correctly with job update timelimit [+|-]=. * Reduce the visibily of a number of warnings in _part_access_check. * Prevent segfault in sacctmgr if no association name is specified for an update command. * burst_buffer/cray plugin modified to work with changes in Cray UP05 software release. * Fix job reasons for jobs that are violating assoc MaxTRESPerNode limits. * Fix segfault when unpacking a 16.05 slurm_cred in a 17.02 daemon. * Fix setting TRES limits with case insensitive TRES names. * Add alias for xstrncmp() -- slurm_xstrncmp(). * Fix sorting of case insensitive strings when using xstrcasecmp(). * Gracefully handle race condition when reading /proc as process exits. * Avoid error on Cray duplicate setup of core specialization. * Skip over undefined (hidden in Slurm) nodes in pbsnodes. * Add empty hashes in perl api's slurm_load_node() for hidden nodes. * CRAY - Add rpath logic to work for the alpscomm libs. * Fixes for administrator extended TimeLimit (job reason & time limit reset). * Fix gres selection on systems running select/linear. * sview: Added window decorator for maximize,minimize,close buttons for all systems. * squeue: interpret negative length format specifiers as a request to delimit values with spaces. * Fix the torque pbsnodes wrapper script to parse a gres field with a type set correctly. - Fixed ABI version of libslurm.- Trim redundant wording in descriptions.- Updated to slurm 17-02-7-1 * Added python as BuildRequires * Removed sched-wiki package * Removed slurmdb-direct package * Obsoleted sched-wiki and slurmdb-direct packages * Removing Cray-specific files * Added /etc/slurm/layout.d files (new for this version) * Remove /etc/slurm/cgroup files from package * Added lib/slurm/mcs_account.so * Removed lib/slurm/jobacct_gather_aix.so * Removed lib/slurm/job_submit_cnode.so - Created slurm-sql package - Moved files from slurm-plugins to slurm-torque package - Moved creation of /usr/lib/tmpfiles.d/slurm.conf into slurm.spec * Removed tmpfiles.d-slurm.conf - Changed /var/run path for slurm daemons to /var/run/slurm * Added slurmctld-service-var-run-path.patch (FATE#324026).- Made tmpfiles_create post-install macro SLE12 SP2 or greater - Directly calling systemd-tmpfiles --create for before SLE12 SP2- Allows OpenSUSE Factory build as well - Removes unused .service files from project - Adds /var/run/slurm to /usr/lib/tmpfiles.d for boottime creation * Patches upstream .service files to allow for /var/run/slurm path * Modifies slurm.conf to allow for /var/run/slurm path- Move wrapper script mpiexec provided by slrum-torque to mpiexec.slurm to avoid conflicts. This file is normally provided by the MPI implementation (boo#1041706).- Replace remaining ${RPM_BUILD_ROOT}s. - Improve description. - Fix up changelog.- Spec file: Replace "Requires : slurm-perlapi" by "Requires: perl-slurm = %{version}" (boo#1031872).- Trim redundant parts of description. Fixup RPM groups. - Replace unnecessary %__ macro indirections; replace historic $RPM_* variables by macros.- slurmd-Fix-for-newer-API-versions.patch: Stale patch removed.- Use %slurm_u and %slurm_g macros defined at the beginning of the spec file when adding the slurm user/group for consistency. - Define these macros to daemon,root for non-systemd. - For anything newer than Leap 42.1 or SLE-12-SP1 build OpenHPC compatible.- Updated to 16.05.8.1 * Remove StoragePass from being printed out in the slurmdbd log at debug2 level. * Defer PATH search for task program until launch in slurmstepd. * Modify regression test1.89 to avoid leaving vestigial job. Also reduce logging to reduce likelyhood of Expect buffer overflow. * Do not PATH search for mult-prog launches if LaunchParamters=test_exec is enabled. * Fix for possible infinite loop in select/cons_res plugin when trying to satisfy a job's ntasks_per_core or socket specification. * If job is held for bad constraints make it so once updated the job doesn't go into JobAdminHeld. * sched/backfill - Fix logic to reserve resources for jobs that require a node reboot (i.e. to change KNL mode) in order to start. * When unpacking a node or front_end record from state and the protocol version is lower than the min version, set it to the min. * Remove redundant lookup for part_ptr when updating a reservation's nodes. * Fix memory and file descriptor leaks in slurmd daemon's sbcast logic. * Do not allocate specialized cores to jobs using the --exclusive option. * Cancel interactive job if Prolog failure with "PrologFlags=contain" or "PrologFlags=alloc" configured. Send new error prolog failure message to the salloc or srun command as needed. * Prevent possible out-of-bounds read in slurmstepd on an invalid #! line. * Fix check for PluginDir within slurmctld to work with multiple directories. * Cancel interactive jobs automatically on communication error to launching srun/salloc process. * Fix security issue caused by insecure file path handling triggered by the failure of a Prolog script. To exploit this a user needs to anticipate or cause the Prolog to fail for their job. CVE-2016-10030 (bsc#1018371). - Replace group/user add macros with function calls. - Fix array initialzation and ensure strings are always NULL terminated in - pam_slurm.c (bsc#1007053). - Disable building with netloc support: the netloc API is part of the devel branch of hwloc. Since this devel branch was included accidentally and has been reversed since, we need to disable this for the time being. - Conditionalized architecture specific pieces to support non-x86 architectures better.- Remove: unneeded 'BuildRequires: python' - Add: BuildRequires: freeipmi-devel BuildRequires: libibmad-devel BuildRequires: libibumad-devel so they are picked up by the slurm build. - Enable modifications from openHPC Project. - Enable lua API package build. - Add a recommends for slurm-munge to the slurm package: This is way, the munge auth method is available and slurm works out of the box. - Create /var/lib/slurm as StateSaveLocation directory. /tmp is dangerous.- Create slurm user/group in preinstall script.- Keep %{_libdir}/libpmi* and %{_libdir}/mpi_pmi2* on SUSE.- Fix build with and without OHCP_BUILD define. - Fix build for systemd and non-systemd.- Updated to 16-05-5 - equvalent to OpenHPC 1.2. * Fix issue with resizing jobs and limits not be kept track of correctly. * BGQ - Remove redeclaration of job_read_lock. * BGQ - Tighter locks around structures when nodes/cables change state. * Make it possible to change CPUsPerTask with scontrol. * Make it so scontrol update part qos= will take away a partition QOS from a partition. * Backfill scheduling properly synchronized with Cray Node Health Check. Prior logic could result in highest priority job getting improperly postponed. * Make it so daemons also support TopologyParam=NoInAddrAny. * If scancel is operating on large number of jobs and RPC responses from slurmctld daemon are slow then introduce a delay in sending the cancel job requests from scancel in order to reduce load on slurmctld. * Remove redundant logic when updating a job's task count. * MySQL - Fix querying jobs with reservations when the id's have rolled. * Perl - Fix use of uninitialized variable in slurm_job_step_get_pids. * Launch batch job requsting --reboot after the boot completes. * Do not attempt to power down a node which has never responded if the slurmctld daemon restarts without state. * Fix for possible slurmstepd segfault on invalid user ID. * MySQL - Fix for possible race condition when archiving multiple clusters at the same time. * Add logic so that slurmstepd can be launched under valgrind. * Increase buffer size to read /proc/*/stat files. * Remove the SchedulerParameters option of "assoc_limit_continue", making it the default value. Add option of "assoc_limit_stop". If "assoc_limit_stop" is set and a job cannot start due to association limits, then do not attempt to initiate any lower priority jobs in that partition. Setting this can decrease system throughput and utlization, but avoid potentially starving larger jobs by preventing them from launching indefinitely. * Update a node's socket and cores per socket counts as needed after a node boot to reflect configuration changes which can occur on KNL processors. Note that the node's total core count must not change, only the distribution of cores across varying socket counts (KNL NUMA nodes treated as sockets by Slurm). * Rename partition configuration from "Shared" to "OverSubscribe". Rename salloc, sbatch, srun option from "--shared" to "--oversubscribe". The old options will continue to function. Output field names also changed in scontrol, sinfo, squeue and sview. * Add SLURM_UMASK environment variable to user job. * knl_conf: Added new configuration parameter of CapmcPollFreq. * Cleanup two minor Coverity warnings. * Make it so the tres units in a job's formatted string are converted like they are in a step. * Correct partition's MaxCPUsPerNode enforcement when nodes are shared by multiple partitions. * node_feature/knl_cray - Prevent slurmctld GRES errors for "hbm" references. * Display thread name instead of thread id and remove process name in stderr logging for "thread_id" LogTimeFormat. * Log IP address of bad incomming message to slurmctld. * If a user requests tasks, nodes and ntasks-per-node and tasks-per-node/nodes != tasks print warning and ignore ntasks-per-node. * Release CPU "owner" file locks. * Update seff to fix warnings with ncpus, and list slurm-perlapi dependency in spec file. * Allow QOS timelimit to override partition timelimit when EnforcePartLimits is set to all/any. * Make it so qsub will do a "basename" on a wrapped command for the output and error files. * Add logic so that slurmstepd can be launched under valgrind. * Increase buffer size to read /proc/*/stat files. * Prevent job stuck in configuring state if slurmctld daemon restarted while PrologSlurmctld is running. Also re-issue burst_buffer/pre-load operation as needed. * Move test for job wait reason value of BurstBufferResources and BurstBufferStageIn later in the scheduling logic. * Document which srun options apply to only job, only step, or job and step allocations. * Use more compatible function to get thread name (>= 2.6.11). * Make it so the extern step uses a reverse tree when cleaning up. * If extern step doesn't get added into the proctrack plugin make sure the sleep is killed. * Add web links to Slurm Diamond Collectors (from Harvard University) and collectd (from EDF). * Add job_submit plugin for the "reboot" field. * Make some more Slurm constants (INFINITE, NO_VAL64, etc.) available to job_submit/lua plugins. * Send in a -1 for a taskid into spank_task_post_fork for the extern_step. * MYSQL - Sightly better logic if a job completion comes in with an end time of 0. * task/cgroup plugin is configured with ConstrainRAMSpace=yes, then set soft memory limit to allocated memory limit (previously no soft limit was set). * Streamline when schedule() is called when running with message aggregation on batch script completes. * Fix incorrect casting when [un]packing derived_ec on slurmdb_job_rec_t. * Document that persistent burst buffers can not be created or destroyed using the salloc or srun --bb options. * Add support for setting the SLURM_JOB_ACCOUNT, SLURM_JOB_QOS and SLURM_JOB_RESERVAION environment variables are set for the salloc command. Document the same environment variables for the salloc, sbatch and srun commands in their man pages. * Fix issue where sacctmgr load cluster.cfg wouldn't load associations that had a partition in them. * Don't return the extern step from sstat by default. * In sstat print 'extern' instead of 4294967295 for the extern step. * Make advanced reservations work properly with core specialization. * slurmstepd modified to pre-load all relevant plugins at startup to avoid the possibility of modified plugins later resulting in inconsistent API or data structures and a failure of slurmstepd. * Export functions from parse_time.c in libslurm.so. * Export unit convert functions from slurm_protocol_api.c in libslurm.so. * Fix scancel to allow multiple steps from a job to be cancelled at once. * Update and expand upgrade guide (in Quick Start Administrator web page). * burst_buffer/cray: Requeue, but do not hold a job which fails the pre_run operation. * Insure reported expected job start time is not in the past for pending jobs. * Add support for PMIx v2. Required for FATE#316379.- Setting 'download_files' service to mode='localonly' and adding source tarball. (Required for Factory).- version 15.08.7.1 * Remove the 1024-character limit on lines in batch scripts. task/affinity: Disable core-level task binding if more CPUs required than available cores. * Preemption/gang scheduling: If a job is suspended at slurmctld restart or reconfiguration time, then leave it suspended rather than resume+suspend. * Don't use lower weight nodes for job allocation when topology/tree used. * Don't allow user specified reservation names to disrupt the normal reservation sequeuece numbering scheme. * Avoid hard-link/copy of script/environment files for job arrays. Use the master job record file for all tasks of the job array. NOTE: Job arrays submitted to Slurm version 15.08.6 or later will fail if the slurmctld daemon is downgraded to an earlier version of Slurm. * In slurmctld log file, log duplicate job ID found by slurmd. Previously was being logged as prolog/epilog failure. * If a job is requeued while in the process of being launch, remove it's job ID from slurmd's record of active jobs in order to avoid generating a duplicate job ID error when launched for the second time (which would drain the node). * Cleanup messages when handling job script and environment variables in older directory structure formats. * Prevent triggering gang scheduling within a partition if configured with PreemptType=partition_prio and PreemptMode=suspend,gang. * Decrease parallelism in job cancel request to prevent denial of service when cancelling huge numbers of jobs. * If all ephemeral ports are in use, try using other port numbers. * Prevent "scontrol update job" from updating jobs that have already finished. * Show requested TRES in "squeue -O tres" when job is pending. * Backfill scheduler: Test association and QOS node limits before reserving resources for pending job. * Many bug fixes. - Use source services to download package. - Fix code for new API of hwloc-2.0. - package netloc_to_topology where avialable. - Package documentation.- version 15.08.3 * Many new features and bug fixes. See NEWS file - update files list accordingly - fix wrong end of line in some files- version 14.11.8 * Many bug fixes. See NEWS file - update files list accordingly- add missing systemd requirements - add missing rclink- version 14.03.9 * Many bug fixes. See NEWS file - add systemd supportslurm-pluginsslurm-pluginsslurm-pluginsslurm-pluginsslurm-pluginsslurm-pluginsslurm-pluginsslurm-pluginsslurm-pluginsslurm-pluginsslurm-pluginsslurm-pluginsslurm-pluginsslurm-pluginsslurm-pluginsslurm-pluginss390zl34 1748375614  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS24.11.5-150300.7.8.124.11.524.11.5-150300.7.8.124.11.5-150300.7.8.122.05.022.05.1022.05.1122.05.222.05.523.02.023.02.323.02.523.02.623.02.723.11.124.05.324.05.424.11.024.11.124.11.5slurm.confplugstack.confplugstack.conf.dslurmaccounting_storage_ctld_relay.soaccounting_storage_slurmdbd.soacct_gather_energy_gpu.soacct_gather_energy_ibmaem.soacct_gather_energy_pm_counters.soacct_gather_energy_rapl.soacct_gather_filesystem_lustre.soacct_gather_interconnect_ofed.soacct_gather_interconnect_sysfs.soacct_gather_profile_influxdb.soburst_buffer_datawarp.soburst_buffer_lua.socertmgr_script.socgroup_v1.socgroup_v2.socli_filter_lua.socli_filter_syslog.socli_filter_user_defaults.socred_none.sodata_parser_v0_0_40.sodata_parser_v0_0_41.sodata_parser_v0_0_42.sogpu_generic.sogpu_nrt.sogpu_nvidia.sogres_gpu.sogres_mps.sogres_nic.sogres_shard.sohash_k12.sohash_sha3.sojob_container_tmpfs.sojob_submit_all_partitions.sojob_submit_defaults.sojob_submit_logging.sojob_submit_partition.sojob_submit_require_timelimit.sojob_submit_throttle.sojobacct_gather_cgroup.sojobacct_gather_linux.sojobcomp_elasticsearch.sojobcomp_filetxt.sojobcomp_lua.sojobcomp_script.solibslurm_pmi.solibslurmfull.somcs_account.somcs_group.somcs_label.somcs_user.sompi_pmi2.sompi_pmix.sompi_pmix_v3.sonode_features_helpers.sonode_features_knl_generic.sopreempt_partition_prio.sopreempt_qos.soprep_script.sopriority_basic.sopriority_multifactor.soproctrack_cgroup.soproctrack_linuxproc.soproctrack_pgid.sosched_backfill.sosched_builtin.soselect_cons_tres.soselect_linear.soserializer_json.soserializer_url_encoded.soserializer_yaml.sosite_factor_example.soswitch_nvidia_imex.sotask_affinity.sotask_cgroup.sotls_none.sotopology_3d_torus.sotopology_block.sotopology_default.sotopology_tree.so/etc/ld.so.conf.d//etc/slurm//usr/lib64//usr/lib64/slurm/-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:38884/SUSE_SLE-15-SP3_Update/6d229ae48da770bcd3cee4b2adcb28b2-slurm_24_11.SUSE_SLE-15-SP3_Updatedrpmxz5s390x-suse-linux  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPASCII textdirectoryELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=4bdb712e2e907deddf8a05e4f23a35371be49a7e, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=f9acfb4c069c3eef720041c22bb52a8295cc8d9f, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=529ba4c627478e6a903b69ee0554b3cb9b9a978b, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=d768defa01162a3ae008b53c0ab9dbfc7f62b403, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=6f69f4a46a5814dc12da91e4f4a3f437434827b9, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=4084999093e8c8cef74b11f391d38afd612d7fc5, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=03fe6d0533de09b33dc0fce483ac56fe7aee61e1, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=bb9434c7b5799803ebe8af9c94fbb9ec7db4b249, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=d5e24112ad26f1fcd89e7c696a372e040e3457c6, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=6e9e5cc4a39aeb0286c391d690d5df7f85a0a56d, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=f84d5d8b65173e928f3c5f893f0600c3556d1e62, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=88c081ce9b3fea3c37c5c8df19f20cf3bb998887, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=491aae48e6fd3240d89a48df0e536cf68e59db2c, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=49bf37c5dfc1fd32dde5cdf2de5885b0960090a8, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=b7ef816e3fe36762160176cc812d9a76c636a8d6, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=040362f430ce780deaae1c15a2219e629f425890, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=8ab762cb96c160838cadaf551f471b4f554e3b82, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=43a7782d7adc975e3b8e7d2a9b616b2ccc2ad61f, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=ea221737b64fe962bc3ebc53b38d68145cb69d7d, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=dc1a4054efb0bf733b7426793cd8bc65b05fcca0, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=3847762f40152d1bcea1961cfd32e25f1deb6874, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=020f8fc1305c5fe89d8481132517c129523209bd, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=9ed5c7d689afe42a2bbb6d87c8cd13d338553b33, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=001bd72682ea2991c769c976526e62cb289f7101, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=5e6df6fc7d2bf7f4ae75ad920b91044b986c5055, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=455efd4c26575a23e6351e1ff39fb69c86a4e5a3, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=d6f411cfcbb63976c73269e373583c350062238a, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=0a4929418ee3bb25a81cf65b5881756316714422, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=ef08e8c0da09d5cb7e0432e7d6ecf601837c54fc, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=b79cf985bd1e96fad2f8ff1fbee3a76c275a3483, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=39d28585e4150befcba0f058b56040ff1a1f7ed6, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=c04b928e77189db69943e5436b75ea77ce1aa582, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=8efa0e4bedb5a7c68d971ac6cd3ac39ee985548b, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=bdeb23b2e16c82efc00b5124ca852ac8dfcd1ac2, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=64ff6f4895f0154fc2895680d8fe7030de53a68a, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=54e38709809ed2789f3ef2adf306bce941128c63, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=449562018f4a4e68556268322b811bb02acd9a09, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=d1ff59d2110f8c4901036f4f01e5e7da3b4762dc, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=2b43d05534d34e69cb1a5d7903dd433f14e4b9bd, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=e7ed15430f912f7f32bfd073d0f62cb639636c24, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=4be8dba8d4d969619c7ddd97806f5a0d4cdb2931, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=38a9289b1312beea00cccb26df7c0090447ba3ee, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=199671805d6c080ee13d2201da29d0fd87d914e8, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=ffbd2d882c37dae1ade1146e08fd80abeee42554, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=ffd9ab1d90025a3dbe7a4d41cbe51ebd2cab3dfb, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=8fde01babb9c9a04b95658d23b7633abe6c3301c, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=a7ed52632a44d7ebf1caad33a28f82a3105420c3, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=f3c4a0db77d4f87d8d48c9265c42ff8d4337f087, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=424458497ca15cec9dfaa492cdc489042bc8d823, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=807e4f6305231e7953a8c2d50577de11f901d8fe, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=9e5b76b39118f2369fd51f78247c0c92531959fd, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=3a167766dd3a56d95edf2c0eb11879c514f822f7, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=400d43aadbf6a87be850bccf19587ee80fe46b9b, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=abff922889d0b2aecade93fa3892d4dd8d1be1d7, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=b767064174eefdc775709787123302da325273b3, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=76040df90d561f38ff6560affdff1588f1a6de8b, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=75471390140c8070d071ea8270822c2cd845ad87, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=935271b99b3fbdb2a86889c77fd28a5953b17d5d, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=8cd6bef28482c6dde0425defe3acd2c3dd6220a4, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=95810ef85d272a67e38d8654b4b3c77c6821dd9d, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=c0bf95201774722ff1b2d9eb82f37be11ca7c3f8, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=3195961ab05cc21f71571f48ce051dd882bae624, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=e2ba4abe8b629c0b564e81abecaf4c8549e30bf8, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=d552ee0330b1ff867386d5b98c2ec3c7fe7b2818, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=5f670df6d7cf07fcc15d19028080516438ada63d, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=0bf63e000f1e4811f02cf49e6d32beef63a9381f, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=c87e786875a0adb19bfbeeff9218f5e94df3e355, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=163ccddc72ccd13487226fa3b432784595e9b235, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=31208498e1368864107d891e0aef12e5525bf42f, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=2d0a2d87bce0ccb8a7616e543f36ff861baf97c4, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=044c2dc794510129e0812d34590061547635e122, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=2f6e03ccac2b666d0d8f22b2aed8f8a8d9d2e955, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=de635ae22b8c36d0ef42351b68849911c309a61b, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=379b80645ca021221b4bec86720dacf5e31219c0, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=2a33739d935e408ad8debc27f917c06604a6192d, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=7e6931e8a10b68d0fafc28f41db8eb6cd6b61575, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=a2f4c522c35acf06a8e513d6ee1e3375fb0a2d04, strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=d16b66125412716f21173728302e64ed5de54dfc, stripped &,38=GRV]emqvz #',/3>KQWZ]cirx~   R RR RRRR RR RRRR RR RRRRR R RRRRR R RRRRRR R RRRRR R RRRRRR RRRRRR R RRRR RRRRRR RRR RRRRRRRR RRR RRRRRR RRRRR R RRRRRR R RRRRRRRR RRRRRR RRRRR RRRR RRRRR RRRRR RRRRR RRRRRRR R RRRRR RRRR RRRR RRRR RRRR RRRR RRRR RRRRR RRRRRRRRRRRRRRRRRRRRRRRRRR R RRRRRR R RRRR RR RRRRR RRRRRR RRRRRRR RR RRRPRRR%R"R#RR RRR RR R RR RRR RRRR$RR!RPRRR%R"R#RR RRR RR R RR RRR RRRR$RR!RR RRRRR RRRRRRR RRRRRR RR RR RRRRRRR R RR RR RRRRRRRR RRRRR RRRRRRRRRRRRR RRRRR RRRRRRR RR RRRRRR R RRRRR R RRRRR R RRRR RR RRRR RR RRRR RRRR RRRRRRRRRR RRRR RR&RRRRRRR R RRRR R RRRR RRRRRRRR RRRR RRRRRR RRRR RRRRRR (ȕq:ʠbutf-8f949f96f744b5ad476765de49cf6f51af5fb64cd522558a7599a41e922b922db?7zXZ !t/ ]"k%_ՊC>$HW,v WC *)a\5{* y&mcßK! xB{OQfhBqHG!~lP^q&RtSX#wNS15@E8gH(sz[uBj`OCk1\d(㸗Cw9TE;u1UjT -<ӌ&@u6^vVT,K?-Q}w$@ IQe<`ڵ[!CHRx],/#Yƶɞmۥ O{iPˊټғ>Yon#q$aVTyy#&``6z$`qy`$W~AhcqE\dϙ~^ wntہ=~ZԸmbUa!*J[%6cLq!\OkX1Ioĝ&k%[8z }(3d˰.XH(v8lHVtEg6~3=-#^|Qm3omպpzX j;zZ8_]%-!dmA`XC|Htx=~oE2Y*.ܰ(ypWr?w9)ma&Pټ o=a7ՙ QP[|~Zȷ?Gcbf2e Nv3b%egx 2{fb <|LɿJ 7y=r l"cm׶6TgNO̎}!'pwX\k^b:h;+~HXX0We+>#hc2 y)zDm+dՕpM'r+RZ _|`oF(s/kp(Wx-,ІبZM:b,hn"TT6C/1ĶxA}Х*N wRΪ?=I]ċmm D~7j]9zhpi`G~_rRY< <g;%n)Pl\w$oKMt2W.͡ӺvK}02XMuH}IzeU ӄ9Z*:F]Č׹`gK#ORފ)*Axauy5I==9Q71B}!KAAԂl0"r>i u٠X%e\~G:&wRzi-WR) f4AdAM9FEOD45G]*Gs+7W?BlQ.}th\ _h;+Qw7*F'}B4hႴ1Vh[,$UյS-35q`71e@#G.Cv&ˍVl b4ip&BJU{ kݳ qdtl(KOʓrsLzqA[noT ; j1K`P {Qd"?":'b0jIAU*ILݘOSŞcF{ORmvsd_1.DE#Ys-'`IONPʨл7UZIug" Ta@A49_-W:(*z8wf,LY;OR& Nҕ( J4,b~-̦K%ȡbZp}ՒT_ j/ڇw 8/F.dABXVpx^o&qH j_&^/yGmfC &}Q#ŧV5VwurH(aAZ-W~~2`̋lf1lBɥ6eXO߬*Y zHG+.*~ 0.*@0KXk,S%SNH_1*R:y19ϴ)r,ky3ye3)GndӽじQ|ҀJ]Xq)nj&mH#qb&S;JEbE/J؆yTf`Cv dHgVbkHj4 z l^azpnWO7kM{;sIqzAX;U:6cr:NW&sdˡ},5FR#x2Kc!fbAP*?dj;:A1zw<ѭG?$ 6<,؍;XofdS#|0w\MYi@[9󚸏=q g5x@Ƿ&6r;AJx:A0h $:`!V**FSVn;uz%= M=m90gc세$(ʲDWU_UOϏQ "ioN<0}b.f/'OH#̜@6NDzFw > |sCQ_updl^TӮWEP%|+m1sz̳;xX*`b)'鯉rEcހ-׊JDb`\9~L,4kw^a0BڐBIcZXDYRG!sBX?+ײ=6irf}Q;GG@RMRz<7A?6jv0DP:]WR3z-8. ګcNvlstl\x#MEǏşu*U82OQn,liΈp`I502+KxO,8q,q4SMr#0o:FLrxI%Uy-eu]aP0~_ ;] <ק&%pL AZysOY5hEhGْ ,iUSp[cOqs"Po -ό!w2_IR#ind'f,2Pv4)ʗ5x)7h1 aI*|cT92QRX{cT `*!L̐;oP.o%C6!MPIQ4l?V 6ϯcƷD&ޝ?#'nIJd^XidC o(77J.A/5;ma&B੃ׯہipʷ+z.M($́dFɶjy=."y(L|ԁ}c/{UV73/;R2^tK~T3ENga Arޕ&4(DH24GGo NcJĴP"wVuyA Cލ^ޓsÅ6tv2B'['ma9V˸lSp(Nq9-jeJy#tv`Z@o0.^{< c#)' 1ڙMSksRC?GS_u|`Jh97>U"Y'VAhAjKjo?+;[Mj.)+fEkBG|0DiHC +R (sw]`MkƦ[̊"' 2m5{A?Yq}$q*[#9&CǼcMS 7dX]+rӓ<ɡt!7^xb:!Q(Mxuh.WV0'X N$%:E".n 1 B_ʤ+aj߷N\ FŅW@n-yQ +{prwx 2ﰅx mRLirjjY8M+E j[G}]ne5lw՞P)Aa &<H1!6kq%*o !}[4Du˅§YC&TWciﳞTKwcPz(/P*c+/E #8H$9w`Z/`z5Dŵa vji02ۛ4Ogkv,yj*PWh\؏_rsMMfzl_1ɛ:F[¦T_Pݺl(W>#9`y+ה:7W !iOXP4)5$,#KҾ"z;NT@{~E`ɭ(`0OY-M;Z[ Ynp3dՏ|XJDg*gC x*'7x,Cu0 0kA vp: f#I{ܰGE }<.I]'Zd!p"&\K5w'7ʦRb/bfǻU7}7On (])-Q9Ijyn1Z,B)ѣ]Z^f'$(e0 |.Y0[T# | h{'Id(٩~-;J9ٰN]DMN[WI51v;q$ ܕm^u#^qN~`[ |eOMOH=CZemPQaJ];B(By%Y ՛`ϐ>͛w7!o `:n̍F!rAː={n:qt"I Sd _^6fXhpe9ݴv~]{?NV/5x%Qс w+Q^dha8ᇇ;EPk5H=H_-_JXž=>NEPӢ/@ h),5ZƪR,SGFǬPXFm ~7D%#!k<ӔJ鶰!^7I9Ӵ=f|~(&}ZjwjjmMz@>MmV]])g25xL[dCi"놰`{1읮mhKm @",@i{hן4sjnmaT{ 4Q~0Eh`\po6&y m~qaہ\ϣr,1 ~&//(i#ُ~Iz ->qdf( "j@2@2Ǔ V녌! OUB+!pm0dʔ%ãOS!V?֤tќ?. eUIYw,xc +UMO(5Ry%--(%FtRp[눞ʡʋ9L@oT$!/At#Tn ySw,OAmnx()U}mѻ1)q%GlVę:( ŕFԮO< ϏXRX|, W8ORZ@#D'K\ydI* GUE;#àJuM[ٺpM^fTW^\tλ1 2Ȇ\a+K%7&tk;}82]sT,Lto q?eJñχ0[DuYуN2Zr ԉgz~9E5.WjE LJ<`9 Ǣ$N )('l L| KFr(KXl`h]-%"4chA-h\φ2)C2*YD16}8JQ*5pi:y:zH2pic9=T]AJZ s21$ ;G# ¼+!LDvqwHGfRWoso8 @\<ưaeJG,8˻h*'U,.pOƋTX,asJ9}"SV}2Z &(kOW- .Cs7&0.]TɚN2S7~|Λ+Rrdj);n۔T&Td-wPйO0Xo4އ* xSV~Wmwl -OP6ڕPq3}.d{o <|ķ<[~NcU./;2 B6 _F{x2SSmR3zP$v 2OCI;}6 Zv/h捓^b.b hn+u7$UٰC::^e"z0iRuUH h>oXu4cRkWg&"IG<˸^X{|ŽH ӫg]GrsvT k^ؔG "8B/w<jF<9(W̩']dsE(_FPsF+m,VO|9GxR52 v*Ǽ-zgVqV J[s򐲑E ,XcG^HqW@업#-Z[/ &_<|V+v+MWwmea fܐI C: Kwx*CRG^GbK۲:?dK^eP>“eP'}./]q/5$|UjU4á`Z }1,{eSZ\$0CC@/1jzgHi_KN9#o!ܞ6m X팎1Z2Ln஫݉to8ߐzmWv>TMmeMUWNJ6cex 2x#%'tLشNutTkD͍j n >f5:u-V`#bkvxʅeEMkB`g4utQM+J$/yn[Fi9 K,1W+xR z}X\]axwr4gƒwUCUTaE4CzJsw%RF&w je\XI%cMD@[аoi}px:{%7 =,ȭŐ;9 hJ@Or}7Of=oA "" n sʮ~Hݎ_ :W3UT(ᯞE*e\Rvx%ԭ?~KW80j`ry6ǀZu8>qJ\>ӯ﷈Mt`_J[I t=(r4s, әRL+/T%N4\Qw.7/!*¦ r,=Ku!I}M >rt Ocotɗ}V,(pASI+SBbCr}M[/O\6yRNv@jh@SIf}ᾐwSRl2p9{Xkh-Y5$He:[9eSˮu]gd(6'9六U][F@JBՕ8un1Žbs]c_~tM:ˣsנ9uaWc$'L7Zi{| g8O74N~AՁ[˙c[x͉_k$+~ \cI{-.H.t?scXYNEMiu|Q|QXPgofs{ÅWiEKwZee?QqSdxh!iK[2CzBG9->k93oDEͬDQW򠏲rD!j#*bl8cP@zq"Bj1PF g@N.IѴu"۪3Rڗb3k"k&Fe!T 1ԁ$7bxܦ^ ?NsՆ-| K@( WyLIHnw(AQ5`n0u[wYm`ZON8/+3gIm3cf Ⱥaφ$M3֦'~[?Pή7RĀCSf/b%}*-g_Dxn;cz8c1=ș4]rD71:Bpa1r1@d {g5-~&fV5 m!p/Bp)K)Xy"ʵMOzɻ1BXduxK^0OLY zOcCܕ(zdNMF|Jzd-sSIZA-']jz.2`_M̝_N7 րwp_Cac)J:Bu X v0jG[$fkυL̰n AϘE0>i7чVn[wY/FC`΀#z|*iJGڢitTQ;@ٶٔ_4=%lmU"[|9Bt!zf>h?Hk}Wf5;q EـL8rN':;JadFBy@L }håjGip+E%\HXL7ypvktR\>gKe2Rv0xgpncRFPnu' *mëWZF C5*KĎӝOi<\d*O𤝥].s|ABn[iz_-G`;'oۓRU֦Of^+P~ c$K+3e-c)xφ"xz-F9Qa;ao4ϥMnzyI cȴ;,Tm)W_8ƺD wHlk9P.\jds{Ou[<9Ɛ)98콰B2KnB 52^MB=oz0{iԐZނ5Vp u[=bfSůgjUI>|r19 5Fub'p+ k8:0Pc ٣2=D3NYkg#t rlR((bH9Zq7ns9d*9(\1ɩg15k?ť-̗~E[h+R)6h0:RE1 (7WvHO =$FrxZyBU[r >8x½6rxq 6|Z{u D{} pl!$Kwr!HK+L<8>|'L1t~dg5\܇qX:: ,.Όb"JAq|{äQ0=&h&?dY+Л_}-_f|V23/Nw}[ZUd֟Z0[%=c֏Q?a~Mۿ4͠wp*giԉXvg ~H7F.ĺA(FIt~ÁˊY:&F -gzLϔctmه.$I ܹ:SR,)0/եe,,1ш5 U;~,jYbu.4f}}$̉гܨ뺄$Fq&ΦdJa~CѫA ` ,kiƠ k>r:Cą@w(7o窌ڥvhz} m0㵯*P~Y|'H&tfY^p1g*C Z=7 Dž80w 14|Ѽ0tѷv\Xewȟp_YXPBi>F)ce+<\ȀhRH)tU(9Ww}n-Wwt C*傾Y@S{[j`|mѥ'o36If ʹdd(/N9ȹw*tNѫ7MtL'BAüMy~L.T,寂I񃑖rpzz `Cʒʣ`wUkF ݺ&Rshxiw%z) %p}YF퉋Tt @heu*t>{@0'|6BĬė7DqatJ$ssVUp1Z\ 4v o8dΰ^ ŐRnD5[@ {&3|ط⫠~h sn eDKBkNtdsmYpڕw3؅?ʢ?a}N"@䢫~0obm7ۊyeO6z2Xx1>Vy*|fDcW=S0} 5D$#SNd=TD|0F l6P;aS XgR3:0psY, :(:n=eٯ曆ҡ*F5 Î~D݃'lP7e< ?ͿEVoDa.x ~ 9!g*@CG[4}?TE ~'T< .j7 G-}ާ4b}LU@{IDa 5DM)<&\@S 9^jjrؤ?n)q{4`3)&%*UAmࣛOa@Րzx<uqY(^Kc=0ChU9s}F  .Tq朢~y)\8}CBK0/qEAN>&lM6c+FU$pV_5(B9;( 6k{rhƃԔL(asa %s`_ Ճ m 2 ”&}F0֡ՃϪ>'WrZ= /BRڰ1⑝Ghֽ,> :HbXd8eIo*%QC*S3^aF~L3b~~Gn/ 3Y!MƏ8L_o}U{l5CtBd׼lKTǰr\(ICOQl|c|~\kvCj#Ҽ{j4两K}{q-1CYԝq;:tj=E_Lva $4z웦-ZR|lfb/6(4 KQ. {>Rz-Z&}ZB$wcoOc/ ѕ{Jz$!j*avv;[M)Nna<= A ]K*y)3ٝcu(}m^ECQFW GjuLodn#gbnvxm ?Q,71Wj8DeAWϡܠnBMs%scMlIN"(/,d>sh洟e'e٠Qׄ;W.O'DC`h=|x7juH?_D敒-9{ hФOD%WL!y9*(Rl}Ƥ5'v">[۩wg/?wğlIRVǻ&ήrRw-^)e6g ި<&HCz2TB]1/Vq^%97dnwX亂H' 8x;t;|Ea$^/b+xcvqZf$sM jZ2>oՓ.1Dl ka.XΠKψ6a GF u*dr%v$ȱ$5ހW Yjv.EiB+Cxѵ;b6}t`8 O&HwϜfR|W̘ Pzŋe ~F ұ&Tx|ؾD '_Fz4 Du_qMu+>.@3VXi_YbleID$y5U9|m{ ;9؊&TwNQ=2LS5D&9\:);۴2R:ւZNum Jy~F}B4[ Kn(dp[D|c7erwK^k$m}ai:RUZRӯU23}Hx#ƒgl8ĐJDǭyU_D_Ai ;Ȗ;͗IOM9eF3肘PP"u,;IثQgHDH g  t K6T8ĉFۭ- CW$#[UiT##9Y7 uL\ޙo0cŊdqˤOo%/W>\r]V-~+ R>n5 ȉUOVJ=rIU0XI ^İ1 ba@0ܷNGoxqx,nGezlr0 #HxևEF.Q 5 .ndMWW(e@;zij8/9*ءOr|͋tKtCVqȌ͌R3bX\s\2vFˎ3|#N8ހ/LrhP k)T ,? G%>Xݪ |#ñ (`ivN ҉֛"}p,-?B,/1b#Z[멮^ q39 6E6'bnɈYF pQnǮ3piDASe%[Ԯ9XMW~D Xr=-k@\fBT8~Wּ<^ǂ_9ے:U=fvQ"zxl ׄ{ t/W"2!+S# \( $#5F_B/*]HZCqZ!jR,Ο4i68'u^?Xz$+ 210j w9Ot8dgNBN-r.wY`osDk1{f_R7^n֌p r .s`b琐)6]7T1"Guk D f80 `w p^k|?> =al\˧AHU/ Յ")eJuc>D^nk> kUvm>![{EAEwQf*oadJ@U:oL(+\ցzmх-F(6*ױaAUa"X߄y:+ 0ߍȯ> mh pUSooKgq\׻Y&_R71혏C< fbӚbߜHvS8+k6K:J"_DoHW^#Z-&z-\E#0XubP<_e xAܨnB$lnaH4*sJgXMwu1`&GG]IF_yH!}tK+gYHjzhj[P^`6k0F00/gpw^)a4R#?]p!ͼIS%~u_B&0+s5zw}?xVEEm,0%dy^w6e5R)]'NT\mDcNv#Ih](U8;/$u[UgT4g=ϱrg)®)uWPU}*gtÁKւNGgM4E|F:&Α-T Ev 6QLw*X^V;`#-\\»1꥘ȫ|uGT]RpicE(Gthf vp/O9D̄g^FOP>[ͣs;\yV|'BH))CI.%obyFz_4͆$V|Z)fM0ql#:*ť I%7VϏ+?i9swCnTBĂ`E@_v (%;-;Oe],i iNIU(evNHdYVJ!H+GKH7=Aߩ9e7#0 Pm,uNc>v岏O52@yqTF,Wگ+} ^* 5!u/9sǪxU[ךGCN:RT.5Z72O"'^F5`Kxd 1i+VPIJ@0+-!NNL1~5iZ\Q[j0@)|>k!Xh]k3 ,7N!4`o9,r*1!;YBnpFs ͦbQ!1ב`f'|N&tJH|7FI- (@3 (H󛏾uh(/Hl9Y[E,M˻qo} Y) RZd8 o+4,L座uT}ftj b]H7vǧ/ye\ GzdwF5h>e91]V Oda\pl=r.b tk2JJoPY95bRڀaؼ)bKB'ewLMm\O6I˧Hm!NLi̛e,;j؋:> H`ۆBg94bՒim¦tbqbČ%eun\>J&tt_r8,TBXVĿ>ع7lqnUPn)wf-{X.ZP=xxpOK&zLōٞ1]5nUi=%I ]g8?fV5aֻ䍿N"?gD  vW\&:I09%)ӠɱCP-ӗk^CR@ReAWw: Slx㼕NqvWP$M;HU~uS PH)K!ILCIn@JLo*:d l(nj+[ܹ::M,OL2阩[Xԏ6 $d1PDŽY>OF)u˹ciEIFik%A,O€GhK^f="o(7}#T!heLr;d' g&@cU㖿&4s<$ц͠["ith~aIpdFk伙Hs/ܠHmm)0˵7p9DI`sm6ݹh _h=a4!8U!x2 UrPK/@XDŽ_74,`8[|^3:z%?֊I(40s]s1+ i_x`vz]Dͺ+R(V޼P[I*ojhW˾p8q/Ked'ģD#\=ա-^Iw1rai3^gΓF8}V%8 M/D9j#U(nkwCWQ18l{pT9ee׽`-ǃ"^"Xb,Ao|NHr,as@`;bԷ]0_(f&^l`" k~Z2 1dŸ3bS *pn1lhC5k9V' 2R]_짏xpoS#~u:<s!C3~6'h"clNֶ55LS%EkwhLSVq'ă֗mCժ Z(g5W`8@yZmP3e`.-0`_Q1:~n7tq%IdT /i*f33;4́hgEE0Ṫdf 1@wĻ=?߷0%?yPp*a2$r&=Sr[DdhdMjg5ϗu *D8q-5Qh >L06AΫ/= -boyw>I%ql4[Xziɨ8$5M U ZqB{'O|f)TR@ۮM׹AC~RFXx{BIp9,A. oA4,/ NFV:Vvz˧X 1eUѴ^& G9 ܘFB4ML1$7s Eְ[bm@*D2?3wWה.[ h:Hnw"m,DkoN@WgXIC{!ӭU~M@yxxtc,H I^Gf* ZSXwE(oz[hO-!`Q]ZWMD<ҕ7ViIxUͿ^ s@/Ϝ#`75-pi4G  cvPHHv6 !P_;{iW+*tڃ e)~re&eX>;ݪI❎b.71lzwVE>J(_#kCxcgE$y P h@/`ӕMj.cX>0IPftݴMDKK4`O%$"^?f/7dbM(º؎+NPoq3n}~l}BxR]˴jobw~ڰ'hBCF.,JQj <<}#nEڧ+Ai l2%S[d55DAk)1G)z8[_͚fsDx* iڑaT3$xo($;M U6Iu>Otv6CBFƘ|P1Yc[;E:!O$Q\_!ȐgB:w$Oec]Cmgպ<9@! m@7nSrt;_II<$!o2>د1"plx9b1%lA/.á's@{[KT6C%޼@G2V&\ pf`0HC*=Qמ5/tbaGZ[٧8ZWpQsOh1х;ߧ#!㸷k'4#+o7D rDn|%*Hh(u*B8g90a`^u)']z΁gc,P`e.;Lˎ:C<00H3ÜթC1>a}G4juM/snqǖU76Bbx`RO%31$9e1x:`O[dyyX]Z % >oā ,y@MieV`]7I?9%`&npJCeI3Tq>rF 1ҍ=n")|PR|I*k)' &̵|;FÞzHլS5˳@yOaf5h*< p't]p_ruv6W_ɡպ &Jo FҤqT]=>ID[wޑI/C{an?TtzZHSXmtsT1_p+{ʲ64|_*:F.kp_c˸ExabNuPF6ܺ5qu9mvqi6 Ɇ=Mhd}0|R.V0f=_ JPnz.1ƭ΀\7\Cs,yFNF^|ݷOo3gyie2d%p:mi [ѧ݋;z!la)fny nјw戗yp67 %O+ۃ @$WBH'3#"\_osu"XAX+ 9ow9n#C-t䵂l4N{k&`k4󠟛EhcEHA|<#8C =;"zZtCAUsLGuQо,w}~(bJr wH8%nP;> Ml/킖-9q3Ue] CL/wT>(U$c0tJȎو)7s1AXs9Uު).e&/c]9TA!/^8O/d}*q*dBl {%\ڋjCw?逜& *Nblfe5TF,,Z‘;Iۋ+{H;gkbAk& W"QDJB|9*5N(x13GnBN)eA8T7iKu@f32I>/GELf:NFG\4ip@bN2 %vIVݴ\AЂLx?NZ&2,)x Ƚw4WI u1n=7W7.3QϞ(ќAOgN:]xZDb %=Ե2)yzԸ nKG|nDi=*b>aozc "Kcp(Ul"> +0t$|ߗ@U7:YG&nb( wG2H-6ً`pY9yd 4"l EYVA{572QgbrKbip+ Vueę6 YGZ pd0ptYbr$!wTgQs %E4$ M F"~Eg?S5#zbTxϤLtؤ<=09*| S?ôSO{5lRbIXj  II2+-'WtnJU0;Vx_w$=܇ƯʘC@_.tv|2n|)d #L gxP&s|:vaçэ;4s(N.|!/M<^.ŠJ jKXܾ1;nT/&Emq5S!؉Ѣ+;_=@kk=^@G_=jOՋ bR8cu;|Ip'⬟;UsͻïAh6Lŕ/].,+“Aɨ"h JDwoeBóTJY8"z$8򰦽 h+p\*F8T a |R`U60Eθ{`˵[RDt*d p-i  jCvq8!/iw{%~ɆOb3'9'A.v -0ȇRݻ<熁M$q9'x` 4@b30 AYmcY39A*='= Ny&־:""O6(i+NǼvyaR3ȿI^kL&MU:O #U'$?Im%>5LP>l̊37k_cJ[ 6}ĸݾm"+^Q[i~UU.k=e|9ا`",OJnFL,8yM81xWD)ZpQc 8UA4% eu>nxDJ,o\#\bW`{~/ <Q?'˰{)$A *֧+ͼp(۞/*HyZ#?U?zf9j7 RC,k3=r&]Xڄ㓔_ͩ[)A$G,[0GJ)uٌʜs*}ZQ3CJ/ͼm!:x?!Bzic$>+8;O6^@o2/wgͅZnE7_q(;+\?XL}YU#H\2Gxql`sYUTi,!'n @ow@Rg5@?ŭ2T5~ޑh(_ 8uҤYH_QW ϯ^Cx'Wya?t>xnU^qײVqtfp!~)Ґ T /.C2uHRUtB;qW4~-?k睙dK!\/ b87#1EUݎ1IVBJ񯃞@`1 %=Xhe-@F5abX&b!<ڷ2fn|~TͪJތB=kMO)Q=&|M&S_=b[^"a~9U ?jNj@CD xٌ"ęzfh]D9{V̻ÁI~4s ~xLL x\\8ca5A#hw[Ύ.m(w0G3wn}ZaIvWY.&b V!DeMꢲz3T;mFFjK"UD-$डjs ykpt&r%qcmY/ꎛaux?)5̻@-:aWRFQ H@]m#ܢF9Ν9ꀮ*gq!Nnu cGZCc%F]iog3A۸lB81?y;r0}ܓ_7όrč_ eVI:BKxC ٣EJ2Q& R-RFc(,Et)'l;2-ONc36"ΤBaH%-.^V]d9gOD3_2T\qa ۗK¯I,9؍: c> !֌Pkr-%X%L1 q/JG<8׷S'1s}u\YS{bx$լo[ 01֎%ŀ 7IQ8$jB(AGǍD  ټD+ 8՞yۉRpBՒ*KWdKGhRms:6֝ ;X_f.]/ݯw/g: ZĉwGQ`3Ecqce7VWásW>#(q_VEctQI4ſ-EZ"izx31.$]:p(<~UR2')ݨ"q\ I!L@'>fK<_~H&dB q6 ^+`\Oˍc_^,Lm4ee8 eحVb@1Q9XrUr (0[b]B |`~ajMsʯ]K'khS{{yԸ1)V=҇.FسQ̋0qo62 EQ0˕5ö*\ݫ-H#4t~=83Ì2:8{ד &࠴uAl?kkCS?#0p {%18aͬ4K,z  Ww@5K#'-~atgN%0+Q}ɓ嶞r^:_X@n.ߠ0peDL+E\v"ne(I GP\\ިzx-כ\tg#,MK<\mw?MJO:|7[)}|"i/ ME&%r2[:/hޏ!=ԁi7d`hq8ħ0wj8+iђ"2L`Ңz_R xp?G_}-a/ЍW! G3 v N2 *j߫b2S57~k|^|RAiܤ/(K҆[)(1e^nX'͏-[bB&Ǹ9]a[]TC +xJVy¡> w9 s|||mEN2ŀ.[m֫(Lٝq@DhAMR_]EJܯk,TWP|u7敷 r@B$/~2z(. FriٻC < Z|udh̆g,[Ōo_dn6ӓǎsA3(?_~rXDKFAb\al &鎷yVA ?b@~ Cw|(t[4]}mmE%krY4"o=mNS2s? 0_cMKm0y%7Gh?Bu8ce5OP__kdR7tHis"|X-1w@H+Q;A^]Gג{uȳ(|^uzwR/b+RHRC @wĬwH<_0LOw򉙀*R:bRO*A0YwՔ҆j`)='Y~͚;l&+݆ϙw~#@z$E\D l%3OF8 `C$("8kl\d!}Mʩ!H1[x[l\IؘO7."k-leѯn7/uG(݁4T18\% ŁkPPcomEYyO+k ~ KgjG:3Z[J i?ŭ4RbLչ8Uٝi?hM ۃtE*‹;Ws;n[hM /`]ˌYvo"I0m)L{$Vnm@$b5rR+\oZn?'JFG>j6 PDuOx!ʩH^O&65.2CJ}/^I'Κ ]UR]Fx]x_#r+Z6,<煄)ZnR(b._t";8TYVL怒z1bИuDei)xS#Q!w|!В5cĈj)4)wQwfq8<:|=h3ԧ([ kz3-]e2pwJ.Q$ǔmbϽ-֠g(XW3KDS L<2#YĉWW%y| (Ȅ ˄YoT[H Yo&:ZŠwR](bgTѰ̢5W "lvˆUW'|'}=v~Id ٍf!aٰmZ R!̕:%a8( _A}3]@ n6N=WdT.14ݶIŷ KJ(&,(2/hv .|2Y` ⏢nInZ὞$)~DXc7UA[: m ;^{`',]K`Ԙ yרQI: J9/̃stw=e8/Y$B{/b(lǃGMd>ӆl;ή^owD2ƹIzkIP.h%J?PbO:j+zTYF*ͮ-b͌\7m--ǿr1NE%|L6Fd1Υ_TprO lL#qrVωյծZO_UxMm)/mX7q͠mqMke`9;9)P~w(گH:_MV-Kfª!7b Cc{ڊe=-h9,%5SL96sn+ STO"&Q}xǤGkR-J|[٤`} ~@-g55noqk"^xa.P y2[OF%+tx '.[o{.3Zuf?iߺ39bWΉvB[ŗH< ~r+0K{xsTMpU`-R(H6 r2\xM5dYA%S"'}ץ >O:Ee SZt9\^|ssG]|wD6ksxA+p9'ْ!L5N ]~7t4j~d ڵ4/KB1X/z* tM*:l_Е>Q 8/㍲jՏoPp]M}tS-bUqP @8)Mnxɪ7BO4ԩXб䔙 {%|7 2Rcc<žE1#\cƉ6jU@hrʉ7v5l>cBR0dEwLɁ]%u{ge]!DR_yXQaa;ڄ5I^toFÐHdg%)'w} P7K"t;HbMC |Ni 7!x\ݭz`2U^걉?~Ƨ%`$ak֟xӢARB>Ϣ ?`NuegmrTlM[E[ >6kӑhkLV~e%JO!FY%R$8Ƀ'B(ɥ+a&ΰ1+DyY?;/Zf#o$ ,$Qz|0S5o56]Q514ZTm+g Ϊ*=yMuj(}DJ!ll.Z?`pSVZb5ZSc",{(H2>PT3@a-[`n%zs˨b4X3$ 5Q9{O\UMeDzr:BAbI(mn{ڿnq کN zeI (+MWy-IWG|1!Ҡwr(i)6jB'J `Bja~VvZPwVx954E=U4@Nnɑ*gcSPRnA6Ҽ}LDGW@~#yDycՄM'+5 љ%LVaw6]]j3=J'+̤rlߵidKJ\= P6[eT  'v֑Los~\ש3"e-:zk"j -hQ&axӋ,Ѿ[2-1 :]7 EJX50 w#+CRډw 1p,;IKn× j.%UI="2V&= DDӳ wuaEU+b5O^ȱFU02D (Pb6N nr{gr)fi;΅af~^Yp ]4(̤|9=hP7:"cF QeIjPN.8B:yE ,A3=a3V$0,ب]5IIH? ~y*/xv&丕Ϝ7D8`0SH6nC rLckdhPe`M6_uZ&|uPjlG%^ɘD[aXKnզ)C]\SqiMkkLW”QXGE.vvOQ ,XQ[|ql`rՠՀ Zh_56"G01K[xy1_GRmmnMW?ӿߤ#D;Pݏչ8aQaВg+]Ѓ3FYBTZ5/ }t'Ol|C':WشpDmr{2ť"Z_ V^o(ً+mY?NLfi~6jjYi@)c'2)əʃkUx1 h`h:kb/1iX0]a+MB1XPf 3vtσf꟟xVbJ1h3nщ$I2 )|'D++aн& Z/"ģrx@މ*Pvc3>ԼһpQ\ӎ'qU<,D٭%Blq7w}cό&l-oK%U$rZ,[H.d49@uvT10s(Uak4ѣ'`Yd0I]1m>IX*8.E\[η/op,{Lѵ41SMj^`[BT]CifejEBu uNK+"T\j$B4e@Gy^9HdL;"6p'k gc+"od~Gb ť|A/Y=~Fi䯹^9^U |Y!ٲkVaosX0 !A/ m$,,M/C#5 cNh"xcNuLjNu7,bTK6EYd ^`?z(|.Lқ,9"\S|!N)(x,'^p8ޞÁ/8OC 50%Jm!/3eܒFץJbەwHh&uP J8%@ `sxs|. q$(noJ'6_|xC1Fx%H¯%`vkd>af/4{&^ +#%B@PhIt,6u>bf UO5ߌNuCҪ @ƈ*73i-22Rv|ڛU,ЫKRL..;aڵ󃬒7<4qŒ E?@=lÖִ݆KaAc2gӁ,Ksܒc-~ ?0 sL]^E #- yPKԱNg^Aza-k<DL雭Kcꐸk&Xцw/@:1WH6S[.URAKcř T|^ 2zblr5G6s ;+(8V{ ߲^Mn-݋m>`J2\tK=)PH7iq$6I#E\\v>Ѯ<>&UPx!<+.*V$g2N̮(uD\XP~c3~y2ek'V|},Y}d2Z3 2TN0S[NrLg*ED0֝&9HK;|)naSH*9gNlvc_"}dNMq|c\F\&BەKD:ܐl<['LkܘkrfC)˃Ww+1:2Xt) )jX3 Rb2Yn}Q(j吣{D=v)NĊp[lqfWuȔgH}u]"1})yY[J 7?˴1~bg‰0 Cvow̸lÞwQX\-1%+}Tsy柆:s^~]ڎpɲ xV֩J ɚTIP fN+t.~ ѓ22@\qY,ަKn~87'r*g):I#f2f.?"~{T_uO6@x-g$Pbl.>:R'MJQ ֭գDVe~L V^H!gQ8u}^ԞP%MW\={i޿;sx-Ow0ՓL$wO|]-8vXd9?mG$."g!jtA1!+/ɁCm@Dhb ;b "J V3j]|:hz Fj|I^kW#]MCxdC,x/I^Cl#¼3%'mY)IZm>}[CtK"c/D) c$u@-_{ pgp:Cӄ#.~v@WU N2SW S5}c󄑗Q = .eqtxRxx>*6fɷ5f9 OOyECZʋ˫`!ʫF$@?At:LxX|Al#+J(V.+~8:j'/2YcJ`V ޗZPz+/^AR'A$asOɯț;$N2jW zm8냸!G(#!A a_nIԱQ P\ճ*f\~hP; y ѡvI#*KUrپ3&3cc nܣUya1󁚏7a1 u*ԥ(fZeW~l:o! % QΛ1T5vac={75OZ4rѧ(_7p bw6"F)BGP5{'Vos6B FoSǞ> "ԖBxCJ%X$7 33WsdžlAf,evkkeP 4(|6|N8Uc% e7ш7j;1ӇS0+t/uz0 2ӤV[V+羔2~ W nwG#^J 284' )Ic'fK]ǸFV%!H8Ud˛a|idR@L!`!h߶Nɿ,j.[!,#^HŊ=g| T>¯F[ܭqݡ'188^4VA޺HBV`[M|$x}OS䮉I1$' !ڨ3 M)@0*%b|)X2=3~!ЬXcDSU*Ì.id~n~R}-z(W'e5jY:,al~bΑeq*_7PCo6&N|1CF3]09Atsd1vZw@YBqo0XJ?lr(uh͐ANxd_w6‰`?j`8)$[Hp@j^+`HĎ{}0hG+s#8A5XƊxo4%R7R/,]f\<>1KD ~DnTJZ$4K5 T~(:T¾J7@iOܶ;#[E-f-Uk 9o[݊LG粒&MW@M3U#7 glc_c\zj;gî|!qT3ő;D#aێ:\yT&b^}U苯t!Im9 ݤ6xaBL?L;gTJuq1emÜL  &aiҕ'2i[/yNΈD:^fwmϦ/5xEK-5dK pQ6 G3[$o|౪JޫWSè;7Fsc+3t>C,`ڄwO#4&>©ja!mQ&F2`RtI^vy#ԍOl[p1 QKEeY+Y?Tӊǎ!<j+jE}SX-cZtLGWԣH&&լp;}N9XsYxN"ln2~PbFrƸ?z;bTOɻ ~|{^5mL*8ȍt`Dg/r-Tw qj Y"a\*?0s=S%D=+%A}zЊ1Ut[DEp 2g$kWjV<ځ4\YZ"hXWZx'a֝[&r=']Q!5%yUځkxA#r詷]"׉jxh:]A.'l~$bA1vH΍HFu bqe4MXtNf.ذ4@? J4KtqlS||k@5R\/ZU;. a" iȿN+{W ^V1* aI ?ykM -ΓY. bM@*NGʻL> Sɷ3%Hp>@QR@ 1u'_(xhgEmծ| 0~ Sb8&j}V_MnCJ5~z:@TXđ~}|-%dm.n G\ȉFB8(D,l 䰅e4Cl<9CGf- <}Lk !T}4[(inKI̳ySMf4=Gf^ysyG$JN>Er?`%DxW(&g/(O΂P 9J2r>Upniͱ"{!}d{§zZ9>`~bv@@+{ mKH;,o^ g.G02a 00 xƯt~iq(s "%V? |?Yg\z,Pf79u?6YCpblMyֈwI's;Zju0n嚙FH<"GD=ʣL2%[eFANw9R > mT) [UYl{j%Px4$|{;}lSJ%uLH P/BLۋ fGKMa`݂ z ϣp0+Sbtȑ=br//Svyt2 5x'NO:i/sۤ-nOG]\%D\43mkQpԙ~Q)5R Vu ξoLdqyՙT7 Ӷk}8N3iBK}CHB^ g9ά"%̻;|ǶF}Yj뛴5/2 {~BU~~/@JX`G;z'd*/LX$r,E rJ,uv@EVf: 3 nlI.dLt+]4q2Je-H͓01kA{ 3@0LQ"WX%{٧ۧh ,]ޚſo(]>a(f1 e-8]@*@f8vm!݀(a Ŏ0>UL)Yj,Gʱ/ }-L8`2ޗ^ʶ}syÏn$W$KFȘ"H9NT}u򐩊cPLZ)J?Hiz~u]9ƾ@aIVITgg^95_q˲#xI&4Em:S-o!w77^eW {!P/0-]*`n0ytln"/D$ =fyu|p-WaOGƱ2RFJpV, j%ɛFRߘib[Q¸ h3c@e?cȀ n1+K`; I^)a{R"{TDip(>)ĻˍS&d?)O*yW_/񍐆4})x 2k|(ϡ(P< Y.؜O}\#Us2@# `O5y0( ~h l:Re_0Bͮ 30w5d_y}R׌^k o(%3'[-/_D<պ$@$} sWظI4B{벶8hm׃'[/m2wW)mw&鱺x}fKqoKkk(ؾQIqsU_3ɓy?ɋCo'?Z3 Ħ3\::_UٗN:ӳ$yrAͺ`^?z8e},QB5G[+{D^H4Q_!o$z*C6Sw&;Kc8*גI:6zb\8i1$Rc_xIϮY-ĨL0Ch_{]2{^ k.HðgH!w[ۗut1'+..gfٕY%*J (4B`z<^U M/B Ǒ?1z1@$y{gH/^l[MD)1-nCm4Fҩ|;!HDa+ ,/ID@%ڣ:By0|V$%.WJV֔B&+F,E=dFj6reBuh#>qA?~ՠxXEN:$2| { zt,h2NAԴd̄gͷ c{AxIh,@t IڊPtp9A7rs+]?YIJ#3&z5 #k#~mͷ%:H=O&Kʡqk8CFB[Ak;Dj!3`wp|bKd%*DH+#cDZtYl[FD/?rʕ7{,^uҏYՐ x" }x՝&ـ2[<Үf*LlE@a&+I3D’ ;6HO'O8oZ0틉[3e@@ GqV, Dyzx.\Dn,Ip\$( h1F%Fc=%~Z~I͈3'=WShcVF quHgzUɈ4+()O1.ƫacw)@b&o 5 (ZH!Zڙ\*%F1FM_2(T6:ϬYlQ]Њ5I%c0j!U>[IrƂ%N7Scc;eʙ ƾP>џLpz)ǹqP~[رIoLށ/{7i Gu;IG6dߞd}z"s_ V]\jWwoxaҤS_wSA 7y :EQ/ΰPM)E98l!>DJɾY+Fvٺ8=x{˚*o5+eѼ $™MBI-t,nC T5ekXj '+>2l ^Hɸ$M;CqBu9ksU}9.=ӄFHOYTQ&׹>=2-Uf ߛF9߃BEn{̽=:ANOO>++ bYz1S.AJK:4rY7uuhچWomD呚j4Es ys#x9F%1`'0_߹J)q@gY8ȯp6$%zQ9Z -]".:wnM lҡ aރԸ*'0q,ɐ,j#h*j2!Qnb U8xKq1>e2PjQc^?>tN 0t \+y} D,&Sԧ0V6y%[)!ZX7G_(W#@ۮً _""0.?LwYT.yu!ߞ5&`( |e{zQb>[p4}F0c>60f=pqet2›T3싶]ui9o'vj&086LǭN8a(EvzUN.ο̸@h8 6u("Ƥ.QQgM٨MPuY"  .o~0M`R޻ w'ŞEiX$ƫRouȝbƯZrR$U=sH|v87-Bd6J;)nf>%iUB%7bBng "pؾ^ YN~aW6#R2AgaNaox- J9CU2ɭ7< F"d=Bd'95|S_~ra05=D93$Fp j^&[:+L92KxB_& oc̐;#S^V^}p5$SĦYLxȭH=)$~Uisp P-J.yFWJ=T)O2<,]f v_Ca.0,ɷt$rUyM`'9lʈ-Ws᪜jy >lsEqMqЮĮ'Z3ߏDkaܝe%Zl׸ +7ә!DP9w"kҢ9 }>H9.D"-wto6ڧ}8)$fTe<z| I#veIhVÁ--Tr͢A>!f5o90%Kv\R-U°~xe(DS@lOG%;d200(cv` <nլdlWl^3Jj%b V$ gho*eUQ sIqd.bzvYtjX|Zv Yudh(bpjrцb52Ю=@N#Rt$j# |,x* sJ `)/O=HP!c0=oS*JD!dĢ;CF k|=/Ad ![%q T=y5ԑfկvvfE؉;Z?ᵗ+9!ժheo$RT>ڦe:yJܶ-f8  ׶aE1B{b,-n1uV-- ZsBaǒZFa4#7*eNQ\*Vڧ86CBbmûUul0t5Cp ަzy%g#4^q Ǐm#D@#<>n!șpzw\6mLE)jk+O_\%JGVRbP3HPZ*dԌO ~="c U$UJ2Ƴޞt|Yb )c+OtՀ$N.<  얢-b4\!PX"I 7qEee ~"owsufwgJ;3R\"mVu9 *I M ;NBn* r^eN?vz˫i7B} FNT'Ue#E?'NCģl\1sv%-+9_:!sVNT57إ ,d.L |(@)X.~Ii zSZk,Zl;TcGJWB_!)r0]o_%%QY5* JNbov"bCbDKqPoac5Vh`qDNrN3a\yQW^Dz ExРv cXhUxbZw4Jf·%-bZ5'daJ <,|sEϧlHF=ӭ@DҧgcJ#JP$R` =L"-l:Wc:I |[oY+@Ql?d9RZUc٭5ݧtR꽞CzΆx[M%y3adUk@l0Ձ=2[q o l?Cʖ08:5lq%Dy|84 VmHq+bDv w tcdƵţ/-%*wtĦDcBЇdAku*QbAsJiE;Aw0~/w``lr[¬ZSqOxu=*PO[B-C7)?RL#M?( JqkJKcR|;bf0UFW˾`( 95MudCq22$wMXӄWBV z)O8{糭 ĈN<89T.6)n= ijkwVu:vj<)cEn=*P1e7l60]L&2o@?jƆHyw_W8yn QQng Xτz2u/RM/M*I!ke3 g;s4Bm6ɛ?o]#f*1Unc7Y9bReʊTog<9 p,f*zΓ`lc$WG,XLΑ G ^Z0'GSV66E<cY1Aꥶ$K%qzwj ]8V4RO; J3O0&j n-]5KyzYa$t( 6ޤUx97MkZztUOXY L-?sI,-<Y[S<{f,Y:=2FdT676T Bq椏616:ڶg#Վҙh%f[E o]a+,-2' o# ttkBE8%&զ_p 1ƊxT9Dl8E'F,dKCUqf&7䣠a?X6JȎ+m8lpyYFAS-'fCM lҮ!|A =BMG>Ma\qIFr=.B`| 8T2մ]?VHw l[!3Ʊ 1N),Dٌ\6W}Oo04rMabAI͈չOxn2ɢwCߢ%.+&F"T07H) `.žZlLe#HU!F aٙ])fF5r7m\p GYъ:S`" ;%3OhSX՞f1|kE۸gi.)zeus:3f?,;Pt!3LUE(OJ#vi$nN^ v;ܐ]{KDFBrxNhF>c?rOI-J*^Fw X^WtHv=o{cj\_@`}`]"]'+>Otv! ˽3MSES2uVo  3% I8qEP\L<Ľ-q7%uSk{k^//DJͶN&`lfby[ԕn06^s ?t\nI \H`d<m[$;lNp ;UK廙]r^TZdGy7`S/]|wWRyqX> 8X(2@j.;FK `RFu^=u!5|;qܳ$s;](#DCKfźuQQl0'zS2h2.{8㖵 [Zl%zZ/j=)y},ݟEy'FFp"$=Mxq zKapŐMlLbLFD",e6BL5ot;TMRYݰh8?jnzh}1įdV .Rەm``\[2"bI VQ*ڑ>U[o1L hQPPoR!]6BAg܌#uTDܼY< 2yyA0[8wֿ "gHP &feT՗)Crіߵy !uX$q[#Ugql=Z]1YH ZqTI$9aJ5bXD!<{e~ C/ROX*4`}Q23fDK{JnYMc`ö}hs1x* ck2xF\fE403tND4̴]+eM.A#b2m2Z7fWݠSEcc,E kMHhL{r{,sdCo2]M2DOP:mghIMlΔ7ʫ;Xo>e4,b^×mR4w2 873nl+g VK].nf{dX_pwXԊoyt2+`/! +ݾeuW"D1]Ktu |Mi;cE>(4bͬa?G E1ƧmJL ͋Pn[;5n79kYTèl4c'jD vldo'7]P|MmaqnNp\a\߀>J$L3 ca؎FFEu6iI`GE +#W{7C@1G<&ME z+QG(I&<`Ho0z-+IS%(ěC9!J? j,6DL6Pf3T)~=t#K'9zkS"Tl2V1/! f`"CT~ݼc,ץLKK%Ʃ1 kȗuZ3ҢZ/Tl)?`FU%%4qvd-AV٘r+dqd7Rǥs?V+c֌e<ރ|SН JU퇻"~PEӅb]@<+Zt>iPs,GO{k<pF'b%;ߛ-o|%_{6KSRDfv9`WV% (D?Vu)i*wXcfmFJ>?ZםQ$=俠d^0 3G~7B?jrd%=5Ǫz mOΰm=iIQ}7.*qqVܦ,˶P{~lSR [&aI*f.D; 7Δei0ya yPF}ߪ߭ڰOad)Smg= R~ ЖYJx{BŚ8̑밻֞ɒnclʽ9cHʚMPV6NCKpJv?,?Obx1 aF 9ya!IRO^̭RLR =iR(pdMƄz;fwk q}|gK}`1KSMR1a2fJj=soS`d#ŃK؛&75Hws3jWlᡆ潘@NF GEV׼:곻 r KtM n8;ˇp^_,N^)T&ll#>m$Q8S6f-.Jl[QWK'@бYIU=;7ǧ"!'WTP ˓h!4FfX X݈HwmV_O뵵8GPi4Oo S(7#PJjCԲUL?<.ܑ~\ ,BìX˦~r,3oR e}5,g&5ޤNWF:G˴14l|6 11a{DcI;g5Mab0׃dR9ZEe!Q/HС[BpOb0Uܪ7(Kc6"TwyH1:} d=pU]znӀdTLt%9_HTjI]kNOѽÖᰲ(9k$mYwWR @,,W=a;hu/ƊF4{<.2. B61f"&mxkL!Hb2>"wƾ!z;VE~_>sT*gc?w|9U:Sj.΍| jCtjmf"dK<#B}=;y.3 Rmm_,!L{uvwtX_!#8 d^w:\lsyS*h@Em]8dڳr36\p'=G _kD{t-{O{IGMΤ3fʤ@w/)J-ym0X4&w߄X\^"⓴/}ub TX}"u[Yxфj)sm$@m7*EDZ[͓2tQlg3]g㘙*HճS[w܌xqR&%mԯvab ܒ%HNiC`*m@(fak=G_~! ·#?NΖ pN/ㅌ"N]<ݮjT<|9$C!ȏ|~h]UpMbNm-$o zD&Ѳ׈7EC{RS F]׮( '2vztfR;:\Pj+'F 9coe+U+e(]t\7"7_ (UNcj% kpJ,] ڊdL 6p?}X_ksDѡfL.=>nJ`0gODÂ]?f327*R5,Mb {k4Ϛ[d}^쟧bch@cB-s"Lvs߻i'RRbpiJ%Ҳz8P=W(Q\t@8)PyY2_bPiqɹʷ6/<g't);{Uً9#/ٰ|ϑgO0}. E?MJ✮m\!SuD⺽0R&G_іMe󸰲R)WՉK*D!H:x,Yn& gRC)MF6d-a85> KTv4*sy5!;K`wkd?3@~NvadXբlW]nގbbMu*%f(۴șYo03 ءp mdj5c)n?jg! \"=!gZ*<ږ=-_AzvG2@m;#Ɵm\Kq.9^cB@Co>  xA}mn5" >Ũ=(J1f,F;Kq9HRTp-GҀ呺O(bz욘n.Z|Y@ĥ-7'>#" ) B mC7@J;aj4*ۣsYa&T|)=͒gQ=B@gγQ߭hQO.SiF_C2ppb2Ӽ|(:H` QxvO(`^X'U3bbOT#onkr&czqzz' S; U6L3.-_B4yƉmCWan b\0سbed֢Ci!DL51˥:]6.J|i zQ%<8`c ) dQƿ;+|JΆ2 ;Y$eL`;ziLo$b X7B8p`Av{WA\ʓAfRz;!r2 D%蕿G}Yt[em6>3M̓kux;$Ջ-ŗ?e/kTs8fAc=38Nok"rlcTi%թ<+ m_-;׬H~4A*g4^=0Ð}(= ^80NUm%Wv—=)=$Zb yfLZ+ž/FVB;l絨gN4AfNJ~CA7aiCX$9CRpWzPE k]?|~W\J p"a!eXᢉ ViM)S5R55d WxyA vG]@DX6{:P\w!PP N \B:d0D$ i-N2c /If&b"B<I6 I'ƭ" "Q7́s2nu3ecRMC.LLQ QjVjVZ%|%90kˮg]Rk*щn]4j̣EuҺ,w[ttӺrɴmca QAu[Fuv͌.uuwnsnۺwfm1$;^_dJ :z8ja(p&l62|rYlvܺ]u[y;wyKι.wvƹ 0 lꉨu93Wo2 F1N33YE 3H{Uvgx6ah+!ry[\v׈b"TVIpC ByyRt$*Rk ( Imd#ep"F!xD]kH$fQ[|0N-& Ƚ2PJutP?-}@*PkSIv"&4 }Kjvzvnhi;k4SUbЂҊ46eM3bExԙ=[d5t}6҆!9 nɂC԰ayPHI.^ ۂyE2%H jȴݘD'A .)fK*^ %[ 1\-07y6 $DfeN9,p*AhgK* blpObstIq:W[yg8;Z/miD4a+mD*cbr"Ӳp._o5ƒ-l* .BF m"* -LFtc ]q5v<8(q] qnOۗqL@Nd>,'~0 :k3rM[=`ty M SI@AC&0q5 KQsϊe&|t`b+#5Lu&,%|I7 :V|nvcPv`p^X 48Hia%Y"A^۾5p& òX -#4c&Qf8_Ɗ_(F;%|nYZs DZ siȬ?^#r7iId(vp\p(ʦB0|+u|+&Z)&,“ Ļ",wm)F+דDŽ^G_f{lmbks#5L#J,d-=me,,Zh(sX8Z4KkMٴ-js Õznk3 ,64J"> *Żé(jXԤJm 3 H6oc1CE-f7!Աa$mLE$%(k*6Nhwom0`iBe2[3Z&Ճ %L@#fZ15.\,8R$H%*# H ! [&әi ]L5RWRm.[Y!jr+0BR)Fĝf1}ΆUHR(M:lB7Wvjʤ#5LM%(am M0p5Lis,i!8. a,Nb 2dZֲpYe/'SYLb `IS-4J)M©RnHK!2 *pV'ReL-ղ0 @HŶ6։-rrsB E h3 (DC UAAu"xpfE-F늖=<#y/*]DIҨM i1ǔG>Vi{"?'F}g0fO"AFaPtř0$5q),ϭq?iSvr] cf<LD7>gD6gsw> 3إ;-PȊȜ;kVFEf@`ru;fhA? 0ȍ J)uOT3ILA@bc665z}F8{-j| @̚L \ 4@ aBy|Tԫ "&_!ԅ\̈ưdD6Yt!ĉ 4(1c&$JPJL̶jeKu(ݢ2֪!7&4 wz嗊°p *mÖR-72Szlz**&U#bNa$%M Tb!]҅d8CSʙRhfB.6c@ѪYVo] Eh`9AR3Dhi B^m+ЪiQ) NU'*mc-oi@-0ilne{VM52MSOM#i!m)$eZTVFffe1Z9oc)fffkrlhMťәI ya! !UMd/mm9:`Pc$䙔jmB$im3aFjYZՁƌ2I/H҂؅ $6+0J,g#-* e2u UA_bVer4hi^1EpI IAt)B1Q6x&ahP&*Qi~~/U4>X+)`J/,{<#xΪ*5UkO;-/G>Mh++m+=bz2^J@Iƈ=%(|]o&zx &_PΫݭ:ꨍ+ LXoh!B\>ٸxKo|$kA qfP7$ZDKf{H%5m0!0)_Ca8BPYc֗˥zMdi,Ik:<S8k֙n 2( )0ClH sX\),XJM>.*)S @8ց m2&an㏾ߣ1u: R8{G UqM[bJRc #@j+)WtxvL#0Ûy,^2$ A~․QެO5Dq!:QA HJ8Zd"F68^Aq05\)iC>n Id]gcC%U Z Zs<]~\};DW܄-]q|$Ęvy= T.ֺ{RlOv%UpwpVb}x$(&+$l{D"9 0,2~oD'}j`,&b HNIZã댳x噟 ~7Yd̋@! (@$(\7 y-宷?uLV 5k:$#uh,\a.qgTGPDJa ȁ RPP AO~]y/Acٚ:4o]OI&!)#@q,]69ͦ[iáh2_nY}܆ڗ˜梏.!uY,xkzU ;W=ԿlP;F_˱۶Zhнfz Rqge:m@/9Ex/ 20 H jGX2]߶ F7å{# @D hdn`ߡԔ+Kr`lve`\+`FaFLqb~lxvuEg|?%y4.lks'J|Cn)jrʹ_;<^̔bMkYtoi\tZ@氀Ո J@ <*"&t<gɛ a|R`V-8&`.`!iK'v2ڰDJt)Sp~W,jՒ5 Qcd)&Xg;$Ek;ڻe] 01~}c;HH ݽA}P%yuXGV3,RM>nɄe#l*d{ep_=tLCR35k3t/P+$4il0Os,\AbuM3U"MDb,^ g+|XKw|#)+țgpTNidٷ0# PZ>Ƨw-ɢϩ]\Kp %:psrmn1Iޟ K)RkfxJ-KSvԬr76P־ :pHm]b2WWpo) \؛lAil)&w/UʚOowc2/vHY[6Ζߵ ^ChЅ~DI2>ct>d O=k 9D_ccW\qW-Ph]_⵰ |"Y\^Oi^f@M?#cq[{ "@!@)!8L/J{9pr|a(ɀ` 5<2h{A]3 BP>5Ip%mm=r}~Cz\zp̩H4 G1l`hJP((:hދ|-55z/5|sb.BU*Dд1M)BR)I=.S50a|5꿹8vMy5z_} wYۿ xTO ,P2y|>ٿ {up2jzhR :o~9Gv'Txr0TWz0>Znxɲ{o6mUbj;7d@TB}i~jFlTwdG?L<t[{7Ip\ܳWц?lmȏ@ OrF4~*je`#u+%hCv5do.hVs7|ײd _vϢmf?|z5f~9|kx4V=gkd鱳efgW ۽Mq6~hE,{{nVMK.)m(< QĦH%yYp6 ZqSt#LvʟֽͭS(;5<*R-nH I5QeUM,R.|[^I-u[Rh h\w͇>eaU`ICv4L3,S fCo+ӚAzc}-[3OF_Y<;CB@ PQT7[Wo?. R(p''.Co.c>jE;뉝mǃoOcͿl9ØA|Gp5_7ڪk-OAsﭽe_Q^J6~ uzdbM~MHoq7\U>fMЈ.o*Y9Q>K՛K5taZ3X0a7V\jaxp%\1z=iuY̠B53f{7>x+ tv{k{z8pz|y߸xWݞPdeul`NUV\:×vHZ[ByPQ|)@5"R#:kWlX;ֲƉ=JLTQD}r%1gPU# @zyE4Yt"'bi6#!$"m*eZq<|ǥ[\/ŢHNν|c~[;nL5o+`:8gʮi&{߇O#* #$CJ;1""LMڗb2e~CQ!g=;C0Z-*B*pq,T&J5f a"g$ɨCN!ؿ}hDN}v(P;r t  wGc߳Gd <*)dm> '.R~ sm^Mtsi<-EDZ%&d@2D~UOʬyJeV C d@]!fQr=ymP5ھI Md(X&a]1đ]D WcO vbwM֔2u $#QiYl+>٠?#3U|]c٣ Θn+6gݤd6Vkc4o?U?>P|vC?Co+1/)@2 uXHoL0$(~3}i!0 CPd<]oXd- at.5: )9{VpSOUTa?<ά"6"eIYJ:UERDi yPНF)܎7Z R,H( {'-W}k0їd']YGo6\6a ,bg҇ )ihiJ4QcZomk3e)ҥ4ҦYSx$) )#"B I  2I W{ 9q)܄rUHmcXp*Kwnn}sQ#7\? $<(Ue?oiOc<¹u+?N瑱NgsA>*XOo*ؤ:ľS,c`z̕5A]Uڄ}X2/B=.0rvYA q203+ԇaCN&LjV)*VhBӨɻD pïC8gM-l˩dr)X@2URiҪygF͌ն (cP L'ZC3[bB׵l ޿rs&A2PB4#HB}E&10)ܔuaJR"&f4c!.I0>ؒpGP5|*o%(%I@LE% /B ^kUm{embRm#h3MAA+b֨6lZ1SeōM6,SS4kIrP%(0P>)  >ZAt@$y>7Yz|042l50hd))^R_]un{?1w7Z%z6(y[S<- "ͥJ&SR(2efd! Hf)^ӽ 1@F0C/;kk|˚ EqeAxۙI߲l [w}v @P-~K4Y@s|8i^$ۦAVo*z^k?JisX NoL ß}N6taּ&`[,PIZN] ~;Z>j^ IqoZ)WrΑa5z>!PȑR_9Dap\.!>߄hqK>OC=ev@ v|iw1U36T@?jF魀D8t{o[팀 ݄=^4$1յj,,qݜ7%B8i,d$hM2U]F#~c;?'Zaut=+~ѳ\v4 rUYj*dqd| D6(D7+BcȆT%AŠ28L*lNa ëmԎWVkv.[$;2yvk}oεBыi6 y+sDQoV ךUkYEʔiNcSt,;d23WJKΐ]U{% rY-\H,jIѭVJ,m AcFiy5?}S=EM@i3=R%̈kwRL?8RE@|K3Z!ifP_e;-KRAHAO{}LJK@-zZ6]4@Bt)(YUQTD2 `*d6F ,o|r›41UT 3&Zs2$+VDA2Lb^w$2)%2lIjūE"tmsWBiͬV6C65EQj+[bchF,jرj6FrbڷRX*]KnZ5mW1+QeƍF-MԮƔ #Ap᷁rN5)CKHPR(R's?\8!Ab![;^b" "~vKd551+ji?JbbZK"3`0҈HD(҃-,kN)ABA.d:y" (|EU>JܥrgucHdX֟>&Y'ɿvkV妲ɈmLq۝u3*Q[bj@)"JJ(䡷 ( /QpH}}Sm{pd!~F7XrV[kP%I NJ@T2!ǂcGwN@9{*mmVS5HK+pl_Bg*UBgĸPܮuuM)Ԣc43-v Ow ; a ]ɁИ<-TLٜ (JO^WyL:ځP_BPw)Wʧј~B[ 4}xvvg_SK!q! 4yڹdmA Zܛ1p*3:kzСˁZG T9|>D*u5% @T9)?>?`H6a`9ƒ(7+Rt=kt@缒O 8,*U?qhA$$@H DY}MN*NBU"ölA7Y $TUEgOGTldj޿1W6U&G}o8^o딋=O:2@9b!.+)& O}UJnNCMG~R"4|fC6D)!)5tM#NaA !]@_?c&hX܁ ^ϱkM3}ož߱U "eɔojބz%uJעZAB; !! ^[^),罭b$FFk\dZ'Y4VNn-maSm]UC}Ť(aA5w5LyF&b{Nt+B- C~x d~9iE NtHjbf(I r"3~y D,SUj)UPҵ j.^0豆y^+jEш%)Z=#CE(lj6#Ioߧ c5{jO#o fo=e]$ JE4TVccR2T% HĐg\U4 3&캴VX^@OoD:>+WMpA6o`?o䤁(9-ԧD!O@M0?~y>2@fHR⫹ HT#A" FlOrVs9"U.]wyRjAx}/|^{%i0}>ȯyTS뛖\F{Β~K2?[?چ ]~5RĄ/0%xm$ҴoFGBQ'`7)seXJr&6:mCD ;&4~)DE -W)jB!=v?Z#_}ԫ00S/昉('z7GIn@n"~E&ҪbsڛD2L6 uU匈L3\j&'ֹ-ȗ4 sX*"cT&Yup2,[Ž̇־l,l/qWjWy7hP"#2RՒ8T@U/6+nfok ؿ=.lms~ 'ŊfǢ;?n&!"_:B& (0f /9n8NʕuCY;’Ѝ) -;ghiB| R E ABET`{>^<5 F hHY4!I!MUp8 hd(WHnA_61-Z_We3qNJznBD%"ŅUTFla nSZ{o| RR"$R ``={ǮW- aTA;ٕrf_ ſX ^Ȓ3[kLdaFVM;}XY"~wV=Wy$8)=_#w0Ůi|JPP>COz~{$ m_fn_W7sȞd ;ࣶ _r`wW"Aҿt羧fnǢ(aBB) P@vf΄0㶬ɝ߅vvZ?3x!W>#וϮ=] 6 J%[ pP-8jwp!u=_ țɌ2X$ lB%Cbx6gC(zΣYm,Vjig6O71ҟ]q]J3L7n5.3_ܯ&̲|o QV\vjaue+Y{j&}_W꘬0[&+o33Ԉ}A~ gxٽz<@b!ln-ܥQ܊&< `P מ_|iN%EU!HADDJj ,"|t u4P3p&0zi;3 v,+KƢU,X >ԡI(>{hJ]f<-nϴi2 4d!HPbub7ML2G'ůB6O#kfWf)G1DT?Nzh*1K.,R:ioMoB~7zo o  d%o/O+v*z9|.9sk.EIlcZ0m&@*JR4d!Z@Սdj6Qaj"i,5wQ664Qԙ1b"J&HIV*Z Q@ՍCR+mV Ѷ0DTj0#%-af+hQ% EdԒTbɚQll)BYȫ% Ŋ-FR$P&JcD) "H4"KF &F h")+hYK"1Qh5$h24,hͨEjQU$j54m-EņljMI1fj$DR4٤Q %K))! b(R)i (bQEjmi2&6%51e2 hEcV)!Bf2@`1%)&ڊ DDH؊C$fJ-1$2ak"&hٖ,l"K$S2)ZO}?JHiTj5&Jh$UK6MFJHIF@M$%hœX-hRV*h$ W~簒H+=pЭ[sQm<.NoMRIHza?!:1%k<&0 h=,! $#,VPPE=)TiG/1lj-2jL &B߾U @@EH$s,rpvV oW q7/$%sm?4`V :6@cw(.eEnBGa٩QjM#~};~8 oy]TU_ƚQӅo% OI/"&xhHz\5φG_1&92C3!;eh pUiGriY"3"k9GPtaߡßh&gXBMpMDdFj|֕+YfQ~y9@:ؾ̾XjHZjwbCǮy'M5і KI;HYZLJHaoy] $%q 30 B-5\#󢩻otDca[-?_ca##::׶r*U66a'b~.nOڟ}g\,+_eS2+_Lg,ԳBI$DUƒ(ѫGv)FL 6 BD4_GW,b3)䚄צŋ$ir!(0^ZAC@CP61?.I% jܟ?$L $M^TX DAދ$;M(I!/11qBi)d}B uN"#mybŨcS}e /-ܪDѳzH&:-)4&U"iԽ v{Bo P.2Ý񙺋ۏo/ ۭ3HP==Nj]QI9U Ѐj1ӆܒ`J?5߿ֿ;w5@|I>Ez#PPf'c:)p*^WHY!=ND2w lY'NhKi|bb|qv h 5b0 e%n^dü)WmQݧ7yX{{m"E6\*Gl&D/Q;Z aT@d to6OxBۡ!&^v v5fmK@X Q8 jiGq , Ȫ 'a>>>F[f *K0A7qE}aWaHBϬdԶ~OL?7އґFk0Y6ب%! >Wc::If9.'EN. ߮p?3&$U"cY[Й!0Ho;[Mw)g,f#$"lJ?qDR `JȒdE#exʃ/[}V M~^GAA哩ywJB B\̭Z‘)6b!H*0{%],Jd\W]$hfOGxx" Vfr5t'}ڄh( dP (UH4^i)"! [ H{קAgeϹoӰ ⳺y6}+4&Q//-w.~W}_z8fvq/5'GOӝm&V"(#E*NA.2hBg\g{cdAPY%zAoT1\-t,dj Fc"+UoX3a$5b(-Ma$*%g3NTMd]g&hz(i" 7ĺD&fBI .4%U%MJ~RߏnϿ} "T)FjnS@J8>X` 6FڔL$MPCС-2TlƟ˃6!45sc:!g'~sUW}B@Nq󝿋ՑH-=Bz2*?q삇w/MMGK> k>8[YI<_@;vxj]! *!:fYq({~V#<EO1[wWSl6FF {~$5 1QX{!eAe#497&7g(@U I]"tt㎉  nq(;܍t+4sQ*Y-OP0dϽg;Tܯ0(RvF.%3?G/C9#2Y;̽(4̝_0F ݓ (Q:NG`H m*}vq i|Nɳg&fΘڨ-ر1/P2)F#־srm 0e!͌@Ȓj`E Z֧ L&.b)8mcULDfK5VI}ӘIOO_ %*F89~Œ9P4iAkx4Q6KJX.΋K%0Tђ^֙1*cGτto f6칯}L.)E!vzH sA0`(!8:~Va.+Цd;Ddq0B OL|:ױ^#v k IjBJP ))&&NWk 'i//э/f0թ"byv^>ܔ=0Rz*N= ׇU<:>| rzprf1rV!"dyMB^4 LPq{dvˍE*D'5f{~&Zd0 6ZKܳzcދUmUF٧VD3;Hh> nƐo!Bnyk/t-t$s-(WVnFU𔟚|~M+&VTb$ {nW9O\ H5ZY~9tH7)0Ԑ0&QJ~]䱢f+5CMEcO'D.|Tw?5qJ씸)-Ԩ;?yYA摅`>/3_*W$ KsuU#&"^mw3㿡yk %XAn8odDw_srHM`H,;)40 |wB$D0͘LzÎKL ]q`7D}/٣Y2ʀ #{DF܎67. KH%yA"$[{'"kYVi B,"}*9/ga]͋EAsGm]x= ^,Ȕ(j }E 2n 7r mTQUz0fzö $WQ w`E>\%9ޕ!aF5x jWmk1}25-{G4t6^)Sz?S-Xa@ff (fR_{WN ,MN@!L,iFTg柝+IHVFxj O;y-)ԐKϸ#d鶪wLFk&$Q2b2AgОc(cKl)Hʌ,2O+Bq4vC4Y$D(T k&5*(bE# S4 ΰv'Rueo7Yl%c"P]KwLi3pKZ;iɿQ evVP{}BFKnSFj2(Hޓ{ m3;{{ v+UON~ D[X Gt?<]P f .pP4?p9#BޖߣSd!`ŊS[~n|,bEEDHƤl4Q K1QjLZ4h4Rjѭ1Q)4m-4cE!Rlfi+3HFCQUFTdKIXHX,EI1+dm#" i1 ɢ($6#lȲ6X2J$Hb2I(bcfh `D %"@L$$J4PQ#`#"JC2b 5+cQb5V3HXF6(#cEh&Rl1[dZ"ƣ[ ƣTت5QX-b, db $#Y(cdѴc&4XRmQZ6S j,cE0ɶid,hR%Dj,m) Mc BRR1aJ`2PFJd"hɐA"i$ cE`F4ɌALB2!6A%1dHňKflj&` Wg: '~wǷhOZW]9u ЧK!HPb] B -j!̩2RTTOxX4WW?mf™8jd+ZS6&c] S .ƢdUX*%[ R ]((tL56r+T-j*ۓR\e*m;I,=m(%)i8ĩ4iHs6sT7($IJ,L'ir {i$?l]*ê:I 2)ը#~ ~0/ߟ{>?}r> z/.硖m@  $}[7w_a!<+itbYkaw  A XJ&&[$tZBh7>> q|~Ur" W?:9@t#t{#qx@e+MK%6.fSȥ@mCo_6+< fփ% Ձd00痞jԙ2vKR# <K ,Z͌F),@cƾb戍E3j#I/5| .HQECjQ`fLFw]pOo3W%Wu\A#saۮJLjGer'K 0{}:;>]?~Y(OLvۧ^l'; -|RF9o'\?Y5&8૏ƅ`A:4ݯ9ς2& 0Viivެ-c [[^Z:ftңM ,g C1tXǭ!'`<4 } DW-V;n N餶-/\崃{qMkyO<3%&3^-6ϳH&E[v䜑ͻ 9+ 1Gjt={o> ?(A932+;Nk$ڸ?X@c<׈ _ayF9vq_;:v#%u_Z-;&ba3(t€T!$TvJ(EQcl}9հ i1,_rFyq3 *'P;JgCVK@69T$,P).%Da|c@_[ @zIp8+.mSi(5lv= 槡۹+\yː[+ vTD"s-bx 0z!m7m;vC?Ω⧫D")(~/=^=f@ :i5E=_"߯(.5)[U^<-\?N߇C5J^E>|ﶲIk#FzW_bj;KK9k'HK+d+tv9ut8#3Gxr5Iݧ!8'NLqQ0A;zK\ Zk/ F$?vyG `wF?#*T,yhg.1: "H! 2XNݿyNXV͡GQ]AԚġM}}>}_]lOd1&Q([dBhriI5ڬu7դ^dŷ=Cg}gy?/.B$0auN0p}O/_|:hHU{6[b4(+J-X#U6681ƥ MeouXbD2%L>f fÍou|0Be"u1 4fipmgЈ|X"qr&cZXꗍ8L$9bH^)T u.e+\&]MTTak:,P~xxKM9!׏Da'[xw]b7 $ZGX ,^#CgS,!0g[`E "*PBJ{ܷ_h0VA6sUU1ndg發]ߵpDA]†,֠#sm$ CPhMԷuI$({N^hWPF3毅|ٕgXk;45 $X yʤ$L{H_:G5{ྛeDV)#f&~罇;FW8R чC-my$A R9YPVk~ qy.[ꐧ2? ;ڊ'wi-կ|z14M@ebUFMdŚRf((k?o$cHpVSWsTَ7R"^PdI`7_yutA`TY<-!EEwO@|/8TY5ut#5qiqX(=UQT=Wӯ78i*Bt[KEDK 9҄Qb"(o0cXVbYrՂW ھaߎXG0)dG˫*Kc#._fD bHeF TNeQX]1|R32OEg')Ѣ]̢„ =ЪUR)MtNbU;t%,c=f ^% MNФNSRDYB=nGއjMq}ajGBiݐpE~o;Ysg8ⶸt~d 1Fy2i:c .-EN.mL2;xh\ՠ&R_F@z @ 'T„!Y/[=ES^ηvެ~Whfr/XM'5mϲi='XjU9Ϋ/5v_m.Gyi_ {@-3A 3 d/ѷynJ\4uH"""VyoxLtmOfM:~"kTGe&%{ʁh:#ǁGϹ]m5KBj6 ^NKK Nyi")pt6gKKa?T7lv\8bsNZܲLϳ]|`d\khǹ2S {٠/h]4T!J9rn;OfV.]mihG;:$XV#fff {0 MJ<ШsTpUĀs1}晉$X""+Fd5ߊ1*DZӊ \l <<3)kE'6T+]z"V*&xW0dU+ϩjT;4?Ά0h,%I,[ON6(RU(f3hPKbKT+*:,LX袁LW7(u*5jF;ܸ@n|S_r߾g x Klp谯aOw]km;F,ɞ_񴨿S}?T 8a BrAUx3*àw[n_%f H@<1 _sj.VW?o#bk=Nm$wj|ASr%c͟1.d<]{"' [(&ts?7GݩRбBu:"Q0{p.oc'i)XGs U¶~qՂ$Yb1XVmw{Xo]:ne4XQ$DHK`FJL0 #"!o{nM ׽E|}Iws1}DY4R LI$,HdH BDqA[;= 蔝&0zx0<3l||?g1x^FΞWX B$ (RC1lD+7Wq+v&S4!˧.TD!lmC TRb4wuӻrWws:L8Hhw.m*V(aإCipwk(4HI]zz]>v H ЏRC4h4(;s >&K $W(aBO^yٿsӮޡf QǨV/&*Cb%US\ ~ze"V"00sQny4E[iFw%J:EA -sR(7ΚjlT)S1|oOnu4f%"i:gS`?h5 }""c( J(G.YroRM9iꩬIW[n yw) #5բڭ tJ<;=d+2gv~1tpF{=17؂c 2(BAqc"ShcOJY6lC1޷_O69VxDDR""!2F&F7ӗA`)EdX" ppKkLYHD4U O>v~stB̭n!F`eTQTUE xYLq "Xnkd%VdYU .(!*106QDj{o7CḌbCFJVMA`ϵ?1rBYrZ&BVPjN "VbBeXy|٢_j",%4BXAƌ0`hb& PQqp.\b  0/ W̢XbgU\Ɩ2dXEUQXh6 Pj- Q4&Rf: E11To1VUl47A^UN/7VW ُ;m:hsC5?+>gR޿_ҵ굽@v+wݐwoE 'D&b8x,?Ky"T{L@ENeRm<-R?0}c3 zŋ`=T$"M<2>>V FROԸ!?U}0}KNȟPv""/e3ݯce (|wwJO$allY+4}? Fx.~t&PF<Kp8? SjJ$l̽yPYO"GOvLJCN("YTNŵ)`Ebb${oB kH:F>x2#HTKrO#CP*,Œ;{{uX z-FK{LgLKtCeopUm;*ݒ-̒r"0#+0~Ƿ'cOdʵ)UӒӡ?(l*ae^Hl$m"7b0F'| ;Q?? LHKN1M#>2Okz{ 4sCk9kT!F-kj0be60ff4n+?匩# jVV(AT9׌Dbw I=l}-$PW< :T!Z>E1Zm9[}GVivZ1VX$5hy ,-)D˖ؐ$R4)%&J%ʌ])j[nfGM5#m_T(J*S6گt5V~jM2*sbZQQv/CJ|[5. ZQ &>0K|)~ayfv0}Xk T0,{4PTAO{.-bY 3!s:ƥJ$׆Bm^O2J{-#3;`YU!i<:]Z),ɳRfs̫<ٴtpxvgdhC]5do8 )Fux_2}{QԤr-.0]rVZYI왔Dd>cXQ?^`Q>& 4꧁"T8Zф$mQy&ᆀ)AQMEcQc`ށ~qw&^e+ y;(BFpr'c XQQĉKpdBG|/ +k@U*4)%.Z*+xIJBE 6ݞ&"P* P(vbwԫ&qkLl"h(s.])NBBM51MC%SJt`0$@hU^.ˤr IuM6(M uPkQSkPSmNztPji%AO; URb MS/,|}߁~t_˯dD4kŒ:X?(>cd$a-<)|5Ʈ w3ѯ9A@GO4M2{gB]K.vVң7&cQo-өGVΟ5n ji/dYy˟I$AͯEz"?4b<Бz@4m ψG"x/] $.zI J)Pd̸=_1j2Bd츿u1b"+P=v{˾Tl՜ĉ1uC*8pPQ OgevƆQ$syNc{Nji&LED'͂d{^rO6v]Qd%)%%D!w1I1"n+yH2b4diġ礼up+0 M\wL@XSCT o^ވ#3^?R}whfI]:&6Rդxi0#?3||y_,jS SEgs7 wb9TP `*  B2y(:AڃFQU +=޺T~Jd)*6@Dy*:ӌC D5?27ʛ#PyImK\!\ 6 mDw=&LtD=ϕN'cޝ^rGA 3exWcdh ,QLT~?yn1ohE]`]u:! dP1O/zTgֆIa4@Tq9И_,cm(hVYC.h54G\=DEY|-nj/ ݫ$G H ѥb֓"UBO0EK )rXIQ4-(#YACUJ|^_Em!@p ЈpH5Ƿ]G0'A /^>m̎EUwzoɟ+(wHdBW%UB,Ǽ@ڈ ɣV)d[&i^&zxFI)do?_w;J,X==*8&Rgq~o{rwťU !Hѕh-n=aoclyߋ`#N$l`wvO0i9Xf 5AmÐtٯw` |"r Q7D{3ba aKD\b`;9X!vm˗I5(XNRc^PMڮs,c%3Z K]ӭm0#F܍vDUU`0}6'ѢTHv ;^Α?8`s(QPyR(^J+wXGKgW7Bv"?JLp0_,YLoI| `3MQN}`W}bruzlw}??#4sRg魺TΆ+'gΨ/V7_5fR_m _ʷ M}Lݴ#W}ZNO$oj[׸,3w-EKN kFPnb0_K`fPr<?,p%m>B&&zO\uH]_zq :D=aUsWO$t2Iȉ]k%Ua<÷#v *# %gs abzïxYjNWurx=2_/%0 u":NXOt@?sۏcU$þ cx pέzT|-V)jc@?PnT4 N1E*Pk!Z!a2imoTm;L y}tSbmN\sNtoxo/pxX#Qby&Mc,w7BhTge k>kE .HBRwUpf`CXYP2n.&+X."H˼e%dI#24aČ)I03AIff&ѬuVqE-d!dXYQN8v**Q rQEUQ!51罯w]MsO>uQͅ  ft(h t-qh0 BI`l;|)Cǘ|?YG 7E̪ {3IeDT;X(%&تPVD:-1jŪRU;EE7dadEhAW 7?FB5䄛C"&rR=G.%eAA|Aۭz\P>TG@x. +מ|Qm"$z&&"+d揦u4՛;dMeը 顺b_d|& >4X8<ÆHI fZ`[`Z`~ }|e:Bwʹ|VBW$+>;)zǶISZul©hQQr{?ftI限ϐd2CfXAӓ cn,b8(7(AMQM#j܈B1unnIht|1 [$9C0zۡ\FKkf EzfQ ٜ XD18vKQw1b].|hr.*92mAo1Q8 ʟ)X0Pxy@MbD]$~9#?V|(&A֐Q9H(2~]Owk5󪹟VNs=~ns5"0_{bjY`7D@5!mPH!7S!3?dwfWf I7̸-u> Gd2;q-4ih@6* {z}?PAUwF4I I/S˪VBP)`~A 4r;[n邂EKc/"LV|H׏X؈(1ւtY'h C~ULE$}C1sL2`z8c%0Wq~ɩg0W(q%qFnWu.?_ܢ; P4R.brêQ_K{&5>|*($tk5 1UCE8j6UeUcrOVpj3T4a"Rv1YWf!ʢQ%"&;6x+LrؿKzKΆ$eѥHzoÏsӀdY+1)c& bҋQ1!5%]m]1*]SDcu"dաIS(QQv~Mp# FK/]7'}0|(ʫ炈~Oa LL v^~T~ IxEVc>k&3秐;Py_LJLZx)Xf;W0D%|:6,d%t+r!hu8b?qk[Jf}wdmFW~udQTSPA*/ܬ[ɒ'6 OOxV`[%z0E%KmcX*ֻ;)ɞΊ=g!'pypޕxRBB8{*K#A(;?z'\`zBhLi, RDI 0I+,$ TY ]dKi6(i$LmPJr$RܢaHLSIT&JSɓX9J61UHRzߘZ_- &Гn-oZ})>ԌBStU5 Tī:_/jT@m=.R^=q{H,RtZqI$]e*Td9v!r`"-sgK,Ru'[<TK<^6oW??&O[z>o&Jb(F`xtDDI»$̱ Io<ȘλDkl=:d B Bi :t7#DIhڊ4$m6$X,mR#$ R @ E DD22AImήx*fw3 KQ:̛:9LH1k;2o:8֔$ogOvN7z׶BьS)YfPhjMFĦ~3RȐOKV&`D&dS$Lɔ) M,Tt"jq='ɭ\TNb_w˟!g PX&5|MoZ1 mlkPEQ`Z5.ͫō.땄 h2UD fTiPTX֐eh k7K%oAɒB%+J&sHA"AccP(Vљb"/:4Wry֯j?w"9+_?e_/ "Qb6 (dh+b-2Jk-6#Dm4V$2*LH+I5FFh&hƳBK`#EJ6FI+1 "# a6b4 1M@0X6K44YCiƙQbM3S"XؠDC $I0"`Xe#$B '3 cY beCFEdZEf61&%XeX٦f2TP X"FEES64i(&LXі#5+Q)54b)"S64i[Wd[nnhC$ (J#F*0I)5&1BXM,f,&Lm($I $#1@1PК aHL- "24f3LdĆ&WH-3I)"H2L!JM PEL $!#4a4IR BFKSXCFim[nٺ 0DT(&6 EQl5D3d"HI22YJlML̚hQEHmkFPSRhif1jaA dcTeb#RJIEd`fQ૚04)IE0Ԓ (cH&fDZP$&F6J5E%"bɱY4&E&+@m SI&eL)Ċ6ɁR@hMg1(–511d1Rh1HlXY3#YZAl3d"cc$Xc@*iXDfc$H5 Lӝ7.*4i0Pba)DHŒ l5*3f ش dj)%hd&lP$$P)1 2f$4 0cAC5%iAbd 3$4 "i EzI$eXQ,v h &_' Pfx haJ`Q RQM%!B2]ѭZmR١jVvnTU cl2[5 3id45)؍hA (Ms)2IiRiYXX&(Ffjmtܝjmr/\L0EBmK&eʹԌ̇`axi(r͋K'M]u{I;1iTcXݶ550Ib- htY&Lwkw@`" rThѶJ+1PjhFBQ)C&F0G]EW7͉DדFPKӸ+% 7]hJ[CTQDiAJҔQk`1<ׄ@r?ϸ7ŎX\Jd>oban[ÎGb0A΀O yGN8a:BRwh! r=hAvtIigzG\j`ZQ h^<=hWbw\^vXʼ[;+\ˉQsDH",b1V#*>{v"{ʖGW]6rcE#>eeI*N_P͓zjIڬR"0]ckV ݾ:>h|@!sEnj>ۂT%K$_oqF:OI<@d$2I=t)Pd0`NSl,N .mYϵ_O  ;?grGum9(P*ά[M_Y103^񄞯C9Zרٷ0+A $cGr>ETڡRUN]e7?+R'.9ý_jb<]- w>-kIRʢf~N2i&AI.?uozh z{3w|̊DAHIAjCDJ=d J3AmY"4I&o~scH}0A:PBfL4}b"LܼO/Xb~}}\$AƘs9͊Qc3>Z6`XV,L &Sh6)MQ̈6LkI+$AAE-P4G}>2M$Z(AF0"H"'zdHʻvC 4d-$qo/[o/G!$]:Ą}%QK?V]¿U3%5C`Ϡ1 717,V^$o쏍BH:qSم?2!/ϱ 5e4fїF.*%՝T,H62Bh3}~]\5 fȪ@@5^ۀ' yB [,H/<7$V0OH# NsV" GVUHE9`qƎ/zi954z} *#ϥ~<dft7+"KiW%%(v5ڐPq8 [Y$,sL_$fxM696LT+oj-nL$%i,/~&ʳq% (?w;{;q_o~r$ MK0=>Ng뼦x$4 =Wn 08o Q6.8>JT~w_;!xCTQ-{d[4x=D&!`:5 8 523!paҪI2QOH"@p44 `?s|Pzv F.1Ldž~Of35?dkA{QO-cg_3<{)݆ qrƾW Bќ܇]q=nm P׬.S >K'Eƭ?5";K'H[Ue+p`~9Wߜ694286;K99 Ў-f q}K->vwʓϠ0c0 3#1II9\m{|׌B{ =;R |`Ĺ)1#1`1qS`5x#kb ,=̢Tj)V?#]xutFpks&ťJ-ΙI( gn2ѹ4g0 Pm.^/qll;qϝVTV*"@z "3f@ @iol-ku{J#JNP"I>NQeObcXjR U QYcdb,sfц W?jOxcr;^<[tzMigf&ɽrծ/E.lڃTt $LƐbϒY13<K!Bd2nobn4Wwk)}&O+TC@RGYy,z9ǨSOG~U\A2% O}h9k5Ysſ#}(#g.-*5s$7:8G4!~ |2$DjpC`ajEϒE" bH.^e /AiK9 C&z0{QǴfS04Eqm`c#"0TTN7%ͭ]n(ܵiV9*pQn3R&l5!Zn;˪zp]9RBwaG+'c[p]E̙I_ ds8ildU@WxPVǵADNIxZP27[ R<$"^=0L"a]ς H_ޖQjeWbi#Ia݀p'a[=H$hbY+M(ʡPLZ/|52 h ~|ߨdlv2X_}/7NviD51  CL S0gMġԞ>EnMܫ:8h 2FZBȄ"=sUzF4vZE&?RUOiJ#[Xc[vqW)EA()Y&?@'Ǘp>kE2#0`:du 6 ~% 7Sy ~'DDO_Wش`6yYyw sr%1|v) vt T! 9N0>R,uxf50*]VTK%-vgkQ2"o^}}YBk%k2V+c{CWtn Oko~po]%]g慠ȃ\'dI-Q.` ~~acG'.[ Sl~uvd*;x5\JpZ&RīseGW)OF2Qo-*Ϭ3Ղ>i{'2!|Fލn$@ $\АEJ\zSoڗn(|j) 3ʈz@\>4(iY<,ᖝHiBI/M mki-HPW;՝2o ONX5!`LH% ^a02ٶ$fQ U _K+YmTMjSsʰ^-Yomج0q3$lGEdl |ϝ?%;5[ <UD{k\C>כJw}#8jF4vو/y4jo-)#jՇQŌdZ~GcqQu`6n$3@kcqź%Bue/0OH9]vrGb5ޖikǕu]٣lw]ڎwJ"ZO~mIʟ8Dlq0KgF樌_lWMk<=w6| =%~Ϋpy{Fu=Ǡ,fG:j*4?kD]@AD7aĶH, A9W.Ɲ.2:29CY% $b@_sdf!'=KE?%26\zGŒK̪c/cl\v;Lˆr S !YLwڪX.UEENn"0A55)15ʃZj]w?5máV%謇M'Gvu=4pHD@Hu>]ld0svq]\:(4زK4iYĐAyUHx]eu4Rh%K|SaiQHq,m/Q4&}ˍ}wv%˄\a/<[vv뫊)᝼:lÉ5i;$J[ݞס?naᯀz(]3!]lxSn"v:u8~!Uo̜C=]2U9 h~hy(Vz3'q)o!$ OB MlYmx rfַW\ q87B c^cB o=W_ˏ.@RTԂ [@P˲uBD@x2k[f@wtD(][=vqUvMǀe\ed86[xwʆ/E$h"g{?Sj?߆ -Rw,U}U |B 30=Oo,`J_fi8v#[IQ13%DDP#zNVGAsqz=C\-:4V;(7>Γ9E}dlwJg[UJ|I,2_fc~+A~e0^N;)<$eODD73e3,NoRB7>^Ofu&d԰f}úF?QliQ^E<9X -dkGQQ) D(h?s 4T7~d_sP FT# }gAG`˛ݯ5ic1 yt4I q[5ac=.ϖr9kOZypǝ0A Oس7f:="scsXi ~t~ڹ ]%Մ *' svqU (H28rp0=p3e-Aqcs|R0%ɉHrQѡЂY fdЃ;_A_p`COK-U0T~3?Qfe2 0/fT,/ԟ6ZXF+ם)麭ׅ+H.,U@49 gQgVUs3mvŚEe}B `aaQ=!jxm-~*퓱* XI!  2j]48-p{ WVx/3_ySkQXV"ͲZױ QƤ,V# ة4,,G{ɾ9xR-k_gŨtf0Lbbt'OliU(‹%JrV )A =rpq_}Su,XW׫_~q Բ,M4NLD},U \̍f-^;FX~y Fj[Q_ٲpT[#p0cVʹ,O l$L7u2S+ڹLˣSDnl5.e!8Gf҃;l<3tlJ%Y#Dِ0<ؠd@\kdv̔KX $"itptJT>\*JԤ$% bxq|͒OT'$5CY J(C䫙? 4dJO:iwmsEWK4m,l47`-c[blU\Fo+gv幷,hʹcV-h.wLN cc)V-wv4hы|KDmcl}Ф5EL6lZ5EhmF- Ehح61Ii$&"c0EP$F(1!(&$[Bk O~ kZbf]<0;JQ% R4 ^ bE?}OCu8ʯXFE_&iDb{9B#EEFhlmcmhkFF6jZ5l[hŵ|KF&mI3HXM,ab"#L h(hV򜒭kkȴ̚H5$Ƣ(KUQ2R$_?nbDZҖhUڊ*(ƱlZcE,Z,R[eclFTQDlT[Hb"Z(ԙMٚ-Em 3j52ֈh4&L",V61B*Jh[DFTI+l[Eb +cF(ڢk5k5Y1F5h65Z6ѬhZLmbfm+Y$ы-*-&6ƙTThƍV1 --hƱFFDXZ"1+(QEF-j6-bŵZJV)Bi#kb,kb(ڍUFmEŋDjhcFXmcZ-bتƋbe*J#H6" BDF#%Q[%UJX(#TF-QhbѬPQhQiɨQQTF*5%&-EbhlRXض6I#XEk5-]kĚmF4A*6BfȁH*1SLbQlh*$lQbىj rvF2DP+LĔQRZ"0ЄE&m^ hۚ.kƨb؈ZJ6,bdTedf,PLklQbšKq@A!bjE T(aPj6eAV* DIi Е^6nIkBm*c@L JR~9vml+&QX1КhJmlEE2Ҩ"@H+ҏ^6vj,F4%(%* T(ZѶbƈ-QVSHQދWFړTXBF,4WUkz1ƨXMAkZF 4Q*[6ƍڍ1Eܷ+$بNF ѻH'u]u#h~AF4dE&جb-ѫƍZ#& i(֋6"kEcPQFLѶ6 dU&+l;q4GLY*]1T.gĩG2[qu*MSPeŐ )AeI E5<]s^/N9ul,6 3ۤid@fvg-_Ȏp?+k}N%Sٹ̏|@DE&''Nn|>8fUʬnzi8E,_VA* %Y,ǿ޴yEOVV1)C'W ]xxNGS8eI3/Q\zs~Cb~ȣ`/u?ʧ/hw*dڍ )Us5'Q+fwǕ";ьf _2Go?3.!oY%_.@D*P9`0F`fo󍹯ʺz|OQ';8>Ѡ'ßWӶ }SLX$WA=Je@24}BcC@.9b}HH̭n ,u\fX[q֮_V3 $O(Y&Mwp rأM#s1YxUECOq]^~:Ҧ &*(x/]QEʹdӨ J2k#/dLj23 \iҠQ6(& ,á6x`"Zkm{$gV?avm;2^^zV~c}tzyXQ_Ktt=3y#h>++pi6x>}z;/}!~3{z^)) E]"Y5EcFhFbgYLe rPNOL91XCk>A-FKuyLHy߲\T&djh"4X;-2F+29 Ze"˔Q/"nTDm5z)z>o)LX}5$j&6ꓑ0KC3cI;m ߷B F;Թ(d:Y1s{@EP()LMJUA}XE3N< ,U"C6n˅}ccu˛~>!\4Q?"*JR`*o20}r27\GPQe:96,` ۥsDZSA{wuFGc2b́ _Go@P2?9mO9MIMP#h0Ӽ |ոlVPIٳQ#(JSA;>ڙ;6jM]\2Ezcߦ%f3N: P()S)1K zai_[ؾl_+99(|v]ޔnčo.$'Ӕr>[/<1h kH)v#PU:GtؘnfDA@XkdݨXa3K ,5e{uvPx6n5A& vRW3AF)G4W6jA71IE=KQ;7Ę;zidk϶PM[x5 TRYY]Pp0HFh\ҩXw92B̈c eN u\i(`I(rȥb)?f!|&Dsϴް E=8r)-wt_ߘq06l8#mPx\6]n64D?>`[D-Ҳ饻Onh3 S~2ye E87z7kU?X] d fO RzՕ[hAĔA`qZ"쓬*|GQ(V?c?J|US>P*TVkiͪ9@H^gEQB)$m.:| |2'3k̓٫CJ kz6n[b" Bl2*2 ?R):VLL!aQޮ~m2lEVr3[nf UraX&Wf<e'7m?zi^7Λk4f.f^P[ի͛/g{t>G~KrWvjr+~q2}IKVJI~F5D<@ Uوo`4s涋ƹ%rmi%ob\##YW$Պo-=&ϢJEe./#D%;#B2kX_9WgwC<0Gu'-} }T%Ā.QzO{5LJOgϞ빴WG`qo6}`vD$%H,"^"i\WӪ vDa0 $R ŅBK߭z)d]@G RXWx/;mh¼*p,_Opny\d=X"jrOݷ:?wH TL'Ȁ/^5dk8 scDb`/UZ0. 5D|,CAYDaz.0}RrdFë4oYo,Lj-4 MHcRFQ!1 R4%+KJA ;mDSލf.G㨣xGyЦm=a 'D@nI;BfT%˃>eoKG5+cTjS-AkF6kFR- JRR lUbU-ImbfhGC$R hŭFѫ3hWp =JY_[oe.+c1Z0%ȇh2w%Ӌ]W@]8&)mD4Z&6sVgZgaf@!UEXŨh-4hѶ(d Iy>wgSI8><6<z؀2ZCꙀV4$mpE R?o2N֊~<}جev)75dBk-9eljSRl9R=ִ7.J2;?OkogDPՖgEx\;i2wGQP" <:Yl?,uzg[ҥԡՠꋰ:;JeQLGI>,iKH 2;#eh(Jϋ˦׎u۶wc9r4n75_ MgUDUQDBQ3vepӳ;'wF??0r若[/Wc*v\ũp *0џܷ%nTzfݳW=md)k4-"Sޑ:7,a~渰J&;.ޢ7Cy)ȵ_.NVQ23/]$[eWNA(j 5!svHhV;&3qHIS.;/s6ي"kmwgr[E&;>ۘq{| nV&͒Kz/v9CZQfYa^6eǟn{/ lƼ vH$ǃ*j`-oq8F!y̟oêA/eɮSs]YϾc yDHe@P.Z?svz\Mʳ|O(t?$t)|G#ѥC~OI嬀A@2M|P -\yb{6Vԓ>C -@pEo%|u]CMvLMY595.HئMMb(B_L ﶹrk0ķe#%Wl3*+ݽFmj0&;!]b&НuGlmkm._ԟY{~FIon:jj"1ɲ BPg˥ /XCxᗔ,Md~7g???ȝ^dE(E MeX007I/Un/pZ:$ רMn Q?J 1U$ys$m wLMY8 hPH+(RD/0+kɂh2Kll~$l8dԈ4 1(rO}=M(,`|$Pn.k0jq=?aa?Q*T(mlSRB)AZSjj5Ѫi"Cw8N+m>m$`t,Q>̐ǻ· /nFW*VF9ym9d56'+}3::f/77 !* EItF9O`%B g \1FbRW4rcM^(n1ubըS@J.@:nCsw Y ګ-H\r`t()A@+QL%#`VSٵguӷk1g`/. `ž M!PH(d &5c~&ijہf~C݈(PnxBG Zyʺ.zBD$AF:vdIA(xxd,PO+mdDPd; sw\;ZƑAi"B(#تOWw~EuFvH|/aO1HN_rq\8 "R46D0s;-WXZ#ZFuvPZ(2@'lzT8TIP1+]^ķŠ{TU"T }FVlu8~/}oXYŌ %O\ Sa3Tp%D3ӄˆOO@f@UG?sx;/8.$A٥SuzlWhZog$)R/z΋Sz .د4{;<- raW{ْv+֏1ѹGJ5> WwC_H4kh Qd#ȟ~#2v=oMU7КD $/m#њaBRi^w˃%#?%,s '/İ?vo ZCY=ݵj쉛i%#*̮j`PArA[xd$ +U这7PCsVz_~>o\w#>| MZ7raC٪kOݴ &ȉiU"oJbAqi1/Ĕ pQ(>&ZhG}䚛'3#oAg̶gYX—!=$PaeƲ?kc7^d{~lN|sㆈd5Ʒǹ3Q)Cgbď~Ѕb&uZֳSYNiė~N8S;E (JU>iҬβҋ"bYQIY@ _Us#iWYdbgn]~uOݟ `1FL\Jq|V4j(tdB/N3:]iS)cؔQR(b.9 \̳B=7^!Q;JZŊSuU~Œջ$Tl1gPͩu;l&+U j5lew㪎MolI$xUI@ W'!ˑk<'5N$ \yGuqȩȁ2 ŶR0nT2\^j|dDpARI  P=פ"p[uQx(_ =iQClձ@1BGY@L-i?X@a *0T"YBW0Q Ht԰Ęx c%4C0rD @dDŲ+Kq!1RZB%6{}A݁yJ 2AHisX``v#.k&@'$;T:Lm:iéylâ oY[fV(TP /EG壀tJ/91.HHV(SLOjbeą*zy$00?+ Tw5eITBd,G/V?x $YQ@Au!63ͨ-G>>W;~KnI<${_Njwfv +LD*;8l[ܐT^PK(IBGOOvuj7;s[Dh =>[$5U=eԐG_7ςk>7W+?9O,+r;ѱd"?Zɝq3(s~n"/޿M݋Cڒ۱S7zljMV=]xf;t~E>:xs;ۑJ#;VS ~-i&]w[5ac&ymu߯T'1{|v\zNouL{ $8HHB@yw̋œ+|m֑7Z3)]ޏB;ZpM`X9eT~6H:'Oo4l퍶*1A YTjz@͌%L qTaU%UN0#z6U,FSڲ[5Oϛsک|1{4I!hD2!vHR9E.f\Ȧ[Z$a @f$BnN<9G`ȸ,sBZfR-F*pbr͵ZVd&A V$l&(I*]]nIwU貮rw+;,;n3&ݸ]s1$sBp&4 8G^7"!e W̌H"?O-'+q4$T$Z0YW#q&F2aRv*rpq̺nݴYIw<0u AJ(?dc Iui0bw^cI 3(V:3 B 3d աxT_j}G3G;'To^gS ؚױ^\HޒAf~~ m?QԍW0VJqlP#;m5_uW(\O-HSTL(JS(e@5[0 ᆍG *.8g}6ߵm-/޹'&QNhu貐w& ō%\B^7ϨzT&j5+ǐ8kVTON]3@p=7`6 *6kÙإ&wI7&*l|RPM@d&PI ,PuF, FqxsEY&\eîsa L;'ɄR.jA\vܢك^ 7/tʧb,_σՏCZ%MԒ(>OLrW3` Yq.+*fj]re}&0ڊlfmޞV*{QɳB[/D6$jhw5BȅW15No]О2ƺWcvEv..Cr b WX̃-Z0 '@ʸa *{3f l z~?u|1#CXkB=hP>4 u_|~ALSG 0d ؾs&{&jĒ#=B[n"ΥA$({Xr]Us̯ OeGb "ʒpUd.Aid.:Kv M2ƼOFNG%{f-D#DibWr$N0QL+5GV;MG#IrJue|6HnLDqIHP gtﬨi*vZXD36" Fpsz/Jf7N~^*"MDt;Had~;ja%i%1rBR~]M'{+%vM| +B,O|x__ˤȉC:߂ϔV21茞dRmkG=$V0Bya9u[kdYEm8 Cz6OeFx0-G_'wvd'p s__jU<Q(f_zzt%[ltגH eZPvZ>U׷~na-wF*}N5]['_"1r%)C=鬰q/V5hO';uρHh6ϭnHQM避0]$RS\X0EZK`AU@5%/7!#,_=qCT)(UyWdԏj߫5x'V-/P~{~a?n0nTc&d;˙2L"ti^Ft{m7y$%.D5e2K@vqqXd`޵`zz ~;)QErh4Vژ \m%5)͹6Ǡ~-] wPR˸B3ĺOj$y%N01oSÕ(ςMe%sDӄQZr[̗W -.Z 11^0)u>[/U dQeؐL -&0ٺO<ԟWQüыj( 5UȠS`Q޲]yȓ&aHv> A= 77~̫7=w7;oʥ3żَK缣e:ǸNY3xDuOGNa)!r X؈2T qA3鑙7Y;&:ej8C< `Ѕ~֢Ao&V'()P.2I ?QAƾeyeuxM 쀑\!<.G(7!v%T=?6=M0ٌY)"7'%y7[|$  ^\TbH|DDZs<bCH;ڗtޒkц5I@{K[p=w Uٲ' 6!Nsox#OƊ LCV \H$V7^ہT:](v=$1br~6 lY7L/yi@TwÔ:?EƇ:tHtQ[I.#EX"G+@GnB,9.#l!{,fuҡ gbW3KhT\V2 }@7}^4v/ 5pnB{02o/T*M@#3P3s);H4=I,P9g$a3`ό,4IݹΫl}P^7vQbAxn[VT[34}jV\nyť`6u$*5>NjZ9}VP1V8X21\95}& M!x/}t{f&AAd jOzHLʫPȬv>tpEۢh'V IX͟32)4UbL *q!0.=1qRh}'-'e]Үe3r_շ&QZ}Ή 0"d 7la?#U}a)Vo*|7;.R>pG.ͯnA-/%N%S}{vΉ ub6.hHv[ - . ](Eի=c3fqcF^P m;.ZPU !5j: xMQq.Hʉ:2N¸klʒɅx\p̽D/A⃵dѷ:z?$V0z8Ii=ܘb6GMYHF.I`8xP%u=w ܍id`伐ֱPJ*8 .nGgB˕~@ υI^P`T?n*w;n룘4C -b.V|_Yi ?*b##qlephp|m{hfo`F?B*w.DfZt^ lm:amy#%ڌG+JQJ['G]eZT/72`z2' k1,/$0.4m@pP)'2@Z#āV5[{7R~@.ma \*&3ʽA+e3xZBrypoe"k!QvI94xt|ͥ r3_'ӷfl׀fSÑZ/G:I& `@@ yE ]*V%,I&m PkF&Z Bɝč*΃V\.p ۨ$X}4XwJ@`ѧ iئuoQlΚK#{J.5{X>gz<1sˢ5L;*̶U3DX95R?yq1\ yd xj>bT>Ӄ&ϳ?b.N:pd*eA~][)yɞUS W$5t_q )B)?ЅP9hI5IAO՞ş?EJV&?sh3(<0Qjի}Fڀ|]ɺv8[іt%c} ȍθ2<q?Yz%#0j hxl>mSxZlrHduGrIxDnꆍ`X9iׇCKMUDB#Is1#u@v̴,bnaH1 ]o 兘~v 9f*JTS+˗HtCi%YG/&nի 6L>O7h0O֤„Vc=TuԀ10Gy'+M;Ākĵj$W WcݔnLNCMu0|G9>7ڃ+'; xLҲSM6@@swx3SrmΈh5h eO.Q-opOϱHcaCfp.Ya LLFtfJbRq++g\ 0%إq"!W #b{ ;[(HN\P;%E^Հ6FE_gŲ>6!;]hǻX 8d-<>Lim7͕tSa \PC{sn1MkU3~g1b5s1t*Y2;8v8xw،E@d?68v*. V4 SWp= @< ӛV0&z @Zydu)Qq]dC3&Yq=l+2PQA;LP܈rm8  vYO5gkeBZr㲐X}eˆzG~e"z_N>+f2JaKd6 YIJuN0SDsüYm:6X m.(\ +G޾'X#ḙrɹY#huQl=dM WǼ2RKT^Ն,1ZLѾQYb&]W8\HjyoWaԵ xP<]IS伯Lgh7]?;3^ c塭yAņSd 7fG=77tE3pFmcPT_ -eGco7]zk59n$:25Kj7=rA#i ǟ矽8`~@:ǀ.&|v8+$Շ."Btmu\Ez%(}0%-m!{I g>OREhEaUgRvF5#wp- OCtSqc:0;|9^J>ݒ fsuѡ 2a1\rm! R$4Q'/ 7TA\F_#MH7n],QE"S 3 }nSNAo(<9|UK5ZoU=Ĩy*n'X'GGoRX%xi(^L ~ J{9hLq1+5!`^^EU,`*FATN88q٘y?V 4˧`{#ͳEn̑ h=,\i=ZHT `VdӭЂX(2Yf%_?|06\: G qWaWΡ'GDϚx)@b~+rt@[?t>lt[5kwEnDLצp:# H .JUNƌ8%.U IqQ1gܲCxw3,^MFE*  0c /;}<ubE8}*Vy9\^9s)3Foo  l??L)A Gc-m)#ѪV [To;y[(& 7R>94_*'f6~g䍾S Ď;9d K57XWvd*Msc5OҔTN&v;(v[ vMGw*Z 2r쒣5#رs6mG<ᒸC/\zp.UחUdv4ȂY˗r̡#ixЯ2%5t/d+W%|UCiLM@!`\@uSPD$/|ﶵ7z705Z|p]e}MZI0\UF)M\5d ?6c!3HA&] kDB$ݚvW36ޘij_r]N־[jc{=MJdĬhɉ"j)M-XĘ= Fp}eCڄq[>]]|( /Q0 jG|Q2Vl,CQ2g?쮨ݲ  T>_9ai6(D)ݛqALytk\@uKL©G($ 9K2ҥg!,d罇'~,kVUBUFz`N~r o^ꔟp/ ԣ*,CQ:&|瓍?+tX(Ȑy;nB%9յ b98m }ΟaY0M;[-7*|F=DpcJ&0iв.I~w)QJ0gsgHBH>gCWy.k̨LdwBilHN^xR g#ʍ"1]Sc;T2I}}+%dѕUrJ<^vꚖ\QM#Q`3V_W s~P jEWFRyzO5. |YQȼQH@F`!1ΛĢbܽZO>EhEp 0r-H@K,ݺ ̂ŭ5nͨX1sqR#_Ji\sunxlY6x[) h}X;\U_ĩ 7jD!~B:ۂy2e&h|ʳkVtofBSKfa|WxIkAWyªhdO3 #l퉱pShXJc鈵i&]l44Qe$ $}xt1K*8\ڐ1$x9,XW>N_e![K֑&寘⋤| ([,͛J ')rg H[I<"#%^o.SGiڞQf1S` *UU<6 uӁA!0dU|1kP`٠(sྏ.((S/Xq 4;F >53[P:IGI>gZFyO߉4 L@ɷ'Wrn0%Ɓ8]ǩG磼2נ?g-S{|WS+.9},p[AW6.ڦvMM3fjUu]).9k@,繿 \0{[s(pٺ .9o, PJg 5i}ӥ*AQ#`69ao/.{.2@6P3M|0į/:eIa╺i2lwK`:ׄ_bɞįTٗ( f:up%8I;OBz,~>4Q= nfܦ7WәS῱`Hfݤ 4l7 w^ +zًZDS0DnB0'Kir[(26)֥{˺|-eFqAd.fB],itZΈ!P Bx%霚PN{iy` C+smYN=+ '>!c+Jճ -QӖ<>O9S3M6,Ѭd ~e=VS2Y@oa|X8?Z«CrRK n 3`5&t]$ 4}hf(rH|mJUpIPV u'opQ;m9SOlбKx r714sf.w8q6ۃOZt 4BhySêz$0uK"Nud 2"ZT dN6ӷF ^/9oz~~ 1M/g[bYE. ƞʼPqݳɬ.6kwȂ| 2^W-(EZ"b vd#Ƒ&2"(T(9hKofS @LVf~Mc<J*$t Y~bBPVj-7FJO1UnP8҉xѩcIb0G'&y̺Y# RpD F\"R,ZY#ʃRr)ڵjƟ6g9/x&chܞ;aMD\ jW(Ew$TqEԬ_Jܚ~m?si)HiYlyxzBܐr ӬůfsGy9'8u([02/6J=yeXCǛL% :DAHxX19:/(z)W@av5W3y+Z %ʍqICs XFDN@5kԞi"KĵL]U +2' K]o;h1f&/YPIU\'* 0 JgZ%5d/*YֽSmҔbèqGBzbYIl4ݶA$7}Kx(|TKϦz<6s4-w[,Cly1Pڋp1)/7 @;b8i@bі9R.դy𢘦Vn}j ,2 . 4:Ƞu`h?>#84L#ܷ .nkK2*bzr@nl'R:J>:;ӗh .淫e\Y+9șjMȮIl6^{NQga6ß{EN.ic'T$}~"_BZkFЉrYչ>w}͑G`{>9HCt֬U rp?I8Z#! lhxD >}99LJUwWe0푺"\_P=@e_RA:-ZLL=rH#K.槆z#Q>=ZwjT[Asux=W#WR9;!Ld>gh(}yL÷&&1h5MQ!#C͟hX]L$ T|5{OS1)aPڐl!L_p6rb܁v~% W=rE׹IR11p h{`Sܚ-E5:ExOӧTV;c[#"[TQTW؛Y [fvt`CbF\/l)-F- xiXk0 1Jjf;u.{bFuŀ)ߦ.n>k=[%U_71R+3nncɩv 75zM3Sܕ;vdWo Owcw܄Xxf6tfz~Xm (hAI6mjS`5`o!T6} 2kUhv Lia!ŔCqFZKɑ|{^o{'RX5mvS|Fʬ`8Fc%4tuDƲwggj,ZqPQ_ _vE>z>`OͩnWCy $$a"LZas(X*yɭJ\UrLSwqvblYb<#U 5[!cE'\Ŀ/R|]=*i`OB6(j\ !tiV"SxULwц5=- r7iv5]"\GW[]p mߓȶ-vq+V8bL7-Ri'?NTH1% vr]ozP8l'/3`=T_W12 ;e74=}eJ)T )V8 y4!mX ,6T:ίZ ۮ" θį%D%.@PpKC9{k3Õ5y9|'/) w AbpH!WG'j_)i:!NaJ6v"|ݨg6$X' 0P.5BE4$j񃛠Z"R5O/wYW`7٩A+ip~^;"Rv9@Qu7`ɊHOY> SdWYjPD,Qk4E_E') lLH"a>eȻ:sߙ(;LŰhS0S;Ex_A$Da5(smtvq~A NުкiR㓯ka]lrNle:* r߿mͳ<ЂS%UWgO;ʁA=}* 5^,߻g!0G—gL ٳ>s%c]ķrt'QH<8koyUAܠ\ J[[ۇ}Da~ަ?,(@54w![Aӈ'}ھ ' 2BknAmtr8LRO=Q|iՔjLWR鏬@\dk`}^P^%hc]6'=etTp67-h7,>mMF bN:>M,$-YSǂpdfLy f*_^i#,3s[ 4豳arjwPjwT ókkP6nr﨎2ijۯ)cj?أ˶c6 ىs#DU ;rPTXQ27KVͳetD 2-xq 6IRC?,WiN-E 0b蓋ayXϳ'qt_gq bwcK>&_Nt 1?M(=k+KM^)|B'B0u#%cbS0j ތ;GNgVpRWA:7XԪp>1DFcm,Ope$( um&-tDdv?r\ӬŭuF],̛,ÞaZrq3.sVr)R%(4O6.8xOw8ťInA,aɨh@3 $TsdM2erx`Ԫ<,)a-"x8JL錥~!,Acdp[wBZK{lBbVURzRKޛ0EP5ysnr5fJ&FTH̩aq_?!#¶uz0 ̞VH/n\A {N< ybX KIl#Oz#4DhCZ$xw„;m dL]6(L/ z O}C@0ɬlOʷq?.iBz5$Ȃ]>Ы5^',BPDn5[bEC[L.ţ+$l ^a IH9n<8]puSVRꐚ{yz4Dn.kL`QKޫݿS)Q#IGۀq">d{ _9Nb e?JYW _7$MYsCpp{a}{?MOyW˭Md)Z1ʑ\}aN@2 :[^lAyvB,zg8jGw.Np鳠arxzYn!D1|m:iq4}>U+]\SfN ppON,Fw8.m9aM;ߞ ɂZ:P?D?joE6sUqd= ehL߼E`[F""fb^ۨzz|2a`$?vS+Ë7q*]RV]_fI*ӾUf;Ir= $X3QL|S4-сfMVCͫH,鞋d\6,Na@O8+ЩTH2,셭*zrѾhboV)/)-ٽT5FS8-/~\ OP Yfb0ޔO$R؇h_MG8xɟEiT iIg'V*ap3M{gA;6BZ&a+!3Qǰɺ`є8JM+?zpd!: n -VJy GNp;$rnW%F?nsEl^w1@} I Ė45XhfÿjCCP&y[tK }wC~,nekmC2 [gv ڼCߝSc.K@|D/pNJ;ڏy]+]wk#hi1nN DAYMuކg;U͚߳rOJ]p3>C%yK/H{WKa3&>o' y"}FkƯ] *"K^–A /t1KS:5K3X+e%ɛ-A7cfHd"9q0G2-U\˪i腞 @'7%>M(-!k{Nkـ?9BXf7O$"_V&g)58[qwJɗb}g̝"9p {e_+yb~ρ6or! !Ҽaao1T:Y 0 k`\S24+?xQèaUhy|V+ju77 9}]+q;?AXmڀuOܦÝ uZ?#)aIIU4yXR(-Ϝ#Ũò)lo]7' N;5VN EnCIbc%q"%1($a}R z0i4G~{ uR 3n ,Gʄt:Rr6! q I$A_W R{Icx,(_7{fU ;ezʆHW}E 蕍1|qPM'G$u{ԽP5&9b`Pb+^ȅ^ZVU,,Muٞ#^;Ub7$1J^nE#CSrQ-40Ny$7hmc vV pAzׇ*ô:ȶXFYtV Cʬ̒1uPe~%!PRjA 3Hw0g-o5| o!seJՄjZ{oJc.U ^j&] O(#fR>כicMDWBg@u?3J[` E V+\CB\]TbݖXcke,^JDoKXփv3c Rqktݸbĉ!BӍBܡ.vO_"Q9a0 ZAq h /ݣ `NxݥTE[ _˒htGR20`WȐ+~ꋾ2c5 >S뙾+ YȖd"Lx&`pK"֬^/ޮju;4 Lxi72*DRD/;tgtI*5Aj"̕cRӘ}K9d TǙ w5=:P50ZÇ6Afkue6Y4ɪgytX[upu`i"WmɒL%ch4~6q`JbLE" 1I1ZV zvXY/a팉!o#o0ry6Q@KY62m\$=$>%}zwJ g륍V՟"#kQ-ca5ݰr߭=t pWex!gϋU+O cg 쇾±cF̱)ذe1n,  \ߌ?M]?]{e opXH3}5W(_}꜊„aυdϓ¦~sIsaQ5!d0B nDPׇ0=ȇ X*=0Yl8PS檲U扏] y|i_T+1A唀kS]C\hPn e ) ڶm0YW9:'z7.~]CI SZ焝p>#ؗ/CcU fDó"6 xXsX4iSWڦЀ]Jbʆ@_>ꊱ.uXՒ]|hd/O@r;_QJScK&M2t`eQa]6i4Ъ`[pv+'M1:_rmmIO ~^<~i1 IY^O6]LE_0pd)JXWJ! 1db4 ~e;G캚iJɞvY4E ~2\5=ƅ6}OiJ=)4 -8%LIӘצ)(EE_1e47$  Gwɗxr2bE# VBǖU_d1tIw,_h<RΒwNݓT*?7``Tߪ^`J5:t*>JY-1] f,cԒ'W!9X4y30>HMۀ=B/FE(PXϒ3X. k~Z|9KLԬ󇹥,+ א B_f8h1Tv N9dW$=첗^5q&JƟ+܎6Ϣ h$QU{Qd} qY yl)R6hI?Tv" cڋ#| 3,.^Y|gѰWԥ\Rʳ:C5e F ?@.q_*W<ѩ

hlz&|7m9ϙ?ױf,vbM& bX58(#;ssP']!``bZku&?Or*eɨ1 ҭAǙ8Ct(#=A|Umpy݄%LZ{bhT^SJrR~=qEŢ,Yv%E32 TuӯxPk0Uap G3tOP%lz Г^^ޛ14,19> ,>nڈRua 5]M(ɐTr86:'ybGUje+/is<#fr}/ W0eu0mgW -j3F-S8o![QRpQAXC|L@GFdµ GhŰ3.Ie=-uiU~N>vzry2jؔ8,Lԩ஠ n& !3SV"=R7>Wx@biڜS! PC806/m<܍+Mk vw}G4lǍ;Ao86 @N3U8A?"Okl.kG{'OVoUt7&xG\ZZje'Є #1X4 (O%RO^BͩgpWh#xЉaI{#(J]Ɯe_,b*YܱE>I)u4ٟejuʃ+?:'$),wÿ% _02)]w3LS,F+@kC133vڟ#VJA{UTǍ-!nq^2A2&9ù][|m ;|ht0kR_Ҍ7lLpqi&@E! }spV#jf].(+קN\E>utL/dTr*GMz(ůZF ӡL|/_XsK*FwLV-'.H,96vvR3 O Q<(9Fa6T[i&y2QBrZBcXO5.`|gQ-;+8“ x̑P%`wӿ}319Z;&!zqb*߿LE T}b 8ún֤37({,M@^\FPI}3ʴdsJ;K@Ԣ{zhfh*`:XO7"7BB\[B'w~>P.`.&?\S7OuksҵEYUWC6ءpۑ S7s{ J?%zwVpp}M2,79y:UQ]ctQCk/Aa"S- 4Y"RMG?ϤZ|I||=DB|9*-pϤg8(He82-'%]5<0ƅ}4j1yBp:JӮ?MR#!<a2fɕ2qrD0yw ʔhћF8㋂pKwx=O !&r^(@ W cEԒWOj1]>TҪt ܤfC8-l٦Dbsh"?1]%")]a Fpʼ/ǿ7%m+: x4: ~^ʐ1{qyȦMEܧ])\ :GvCB(9kKr wIͷWdd_ ^QLz Z>[RV1\(Bסv.:j4H^O&VDFJ$!)eR1+ ]@2 AW ĿƼsU"jg2$'zj[󛼫V5I=zpQAfZ&%QUV܋kvl),7WJDtphČ|^/%ٹ %KS{ǫc Y\ = $`DCa?'-+$aP7SbX,-QLĺ%wIaoCBHV:uoNj8!q+D S.8!Kq4xmO_(@ehO'5Ӕ/k4!`G {k7:5˄բ!Cdf11&|`.h1 Ş:ɿ-G ߇1gY[S~IR*Բu02 񋧾XӲ?QAQ4g䑰* }!>8FzNA޴f+FE''ZvHr^anO@.Al7 & M$eZ_IlXLx&c݉4R8a-63EXaR.k qEhapF$Ewq46JgmV]gR(o+y !ankn²F dvsPWCu&L6BHQx &; )v&CU5TWF$EYzJ8t(=z䝊ag'I&|҂7Vxf)<旚*v,븒ߺT&B"ْ=y*5EDD_n/H/C*z܌/K'?AF"T yʦ{ H:NE_ .y$ZfӸg DYw5u#wz%2 aj 7/K_=4t{}< B3qR BFuNGT$oDoKMGaM11,rTG=`"3:NMܹdOuqzsr5*VP?iDDUwnTnA ˓ J\iԗE`$ck Ř,WVP]r6u߹SpbEIB"!ș퍍ڸ*A) Z‘/tȼ^8}Xe(|5lMfvh͵(==?FɫtתDAKOƎAL8o[#,*@)ɬG6@QCiHX:2\)IK7Zk 8 5#k3z0 o*YVԃ1<!cǸrh=[ &ㄚ;1`$[= JDHW+ISh$Ct ܃BtJ-MN7(bee>]"p8ZK؟G`G f%T֪R|zKW،""::eB3-NZz,a!}|8 #!U>JIjgGs]|C~>\Z ;+;KN50[AmK;̡U>)kăU}3*`na8##|BEdT@\i+#am9 SEՀwgN)ܼ%nя 7,2Ȅ6?!_P[pzAyXn2x)F]טX4+f9Rz[-07kp@#vk" b wƮ &xg;>Azc7$BV)=n7;3D~[޲cW8JDeb{A<4ێ!وV_|GWxe3;J>xv rrƖ*L$HGQC|0LݲH 3}r}+QN/RCፋh΃n_IfJqUM{X4YhsWj9)v{ ^sRe`vʄTgxBANӝ~¡\jHVZ>D[SEw; !\sCTn]0sMѝ1=Y13$!_e>UCZ{%\ݣNE9 gSd-]™ma4Cl%㩀d֔a hvKvPg FdJteq;* iY g,+/_֋p 7k(A5h9d 7 sԙVD_ЉrdD !Jca[sLRC/{Wt3#a#K7i>a=Yٗzq 3EXGv(.<4HOqxs̜7z@|%7p'2842 ~HUBU鵗Vz@6#KT=]%G_Oj_:/IT9fSy!Y8Ri8NA]) !I%/'JR:={,jŞ5{Z/\1RN[6@xZH)Үi_DkuaĊ: r3ŇR?o})C[9x"LJ*Q[nd>Ǐf!l g=_fSN&.c5'm=wS4(lJ':x ǧ4l$̈́nW m)FloPZuZ\Ӓnfnws}尟Bph^nT@'cxttʦzF6;~Ȏ,^3j1De–o]%UkMLolX#о_'xKT|&=_hRSX$y`09_e' $7(q?*m'Qe"Y7֊9!|PR0 ."[O~jU yѻ(?i\pO kߣT RkY@'Sf7G.IZ0vk*m)/DyImb#Ma+)7: uY Rop )m\hXCH- TSœ0DkIOC}L@d9dTY}טđ1GO+k̓7 u[,#x8l8v2eP#@ꩳWg(k'3 }up60\gyz},CΎ~^ mU973T}bD~7'k!&"7c~d=mMrO+rұp4U+^|V{o>36a$t"fO#TW)8lIr $?(%Pu?˼m OQ*g4fSWe7qZ|r;$IaoeKUe IfR=7#|"n6S:> M٥UE,@xо$S밍xp/aPwjp fza~#y?~p(5 u&FDqV.NfiZyIihk;%P&a9F`ƒOF$Roܜ9U(Gd`2Z~&f1]P_ y+E3ɜ`BPVSxq'9E h֖/>D K('xfCvn{=:;t2EQO" thEĒٺru]FE$+F2%D:Rer㗍Q$I+|tK`e73nABm0 Kp3V'4{_,|"Pƌgonc,8XH*.{OT.wCaƥ|}* WC2`N77ș<v*7_<8AZ`eFBP8},5i؛~T{Qo/2d`A~gU :Zjz!qi]Dh |Rʦ*\uxQ iЉ ͨ;"zXɭRI+)#6 'rt94Pu%kx4ɭo3|KtS\3|č&ʒ?Av1Nkh\@QzRk'i_"dؼDw]٢7A2"Ԓ!ˠ I sL!Tjo(_o<2]g"jbp~>l̯i~9كF=*_éc4q6vE;|BV;TȔВ>nG6 tRqMQ_O9b1gݧۥ(M֚U yd'EP]TxQ#*5J9(` Lre$hX3&flFWa?Xj_|DJ~}ص&lWGac3%jmc-^*YX57"U'fl3dycAn1^?|Ì&55zD_vyJ  :*p` ۜSubY3 E}g;c UXcy'~IuZJ#o+ <}!h~=~"NLIj~)In\>rCAr{c @M6+)1xZW ڌ-%N|&N_-_ᓼ,-L3UߊJ]#?kӰ(>[8/rkz{&4gx}IۢiC4Ί9?m'$Z,7ʘ{iw!"c(Wݸ2Kd$(|ȋ}"-\|3AG;y,[&{;;.Y Ops3!s|E$f#7otB1}+_]WIŴ2"Ub>Ýe7G =Mb̑ WaࠆKxz@?Cs'"Hs8A@SA!5ZBT!SH4,6B"ekt?ߦt8B3爚͸ "߇c]J2Ec}0_S!>,O/~7z&hO<&=SXNz2HlӰ5N1+wA95β .ulTRܻ,_9Z5Et>%gS7 NoMn<'$2Q'53 EKɤ3t‰E {?RDy0I&Cjm.S+ 'n8j$}M |MU sTOZyw|?s@{ו7iy<BثkO\ϖ[+ t#j"* iVosN߅cT5C072hs| eޗJ5KX`򜖕gw~;RVpu3'>)խ; €vuGiw!)~To,b>QUKjzmB*!d?e:ygr(\In%R-YS}Ѯ$ 7RG.J?:6fpy3$e.K4#s'"Ť P24U,y^Ȁǖӯ`m ?rX/lN rJ*C:jZ}U% g!;Fګ$yBHx%$ |l æpePbj-eR[^ް#e ;IPw:WxVp Lzڛ:E/~= b1䴉V{FPHۙm$_Dx,&82&*$Z4X)uē9?ϏЕԻKy$md' #s^oV+~6Z^rp-.c!b,Rj4sML,1)901ؑVC7?G/n9T| 4o*3Exn`:9iCC]0duF̱Pi"Vbcvt!v%]~4h ^gAnt|%YQ>GIWz/\Ahu +4}w($lKJJ8}t-ҋewsqe^1SJ炎e/i,q; ,~M% 8Ȁ\'_>0 |A-2/$#F21@1K? Ck@i'u)Qud2g%>G-WKaeŘfeGk=Oh#4s7AgWDu9.sJ ?Q %KAy*]³CV i6 {pV>0SL:Vxdܖ~̭/6~^hLnN)phDz ۱(.5+F6f'3X>/ZHPf-*/9v{|?R)nޒH.0lt =xu%l/<9+ܺ Uyۂ֮[g,]jMqeכ o<Gѵ="dH\{1QMUi*qd- fKAt=){}|tckLi[AJQibsPw|֏qR)?(B*ZxP;(f_JEhW@,ʀ? H {N,Q=98{ 俒!:e&c:uCY)dRRu^j0%SU4x^7@_nIVf3ir>AN}JR(ζsagV^.o߶cAӟ(s2,X>Su/ٍ^I@9a.U|LTŀq.dK.m@z{5t .+\>A+i3WA$ok9捐Bzp‚{kp1an1alL KZ_KULAgK Pz- J .((i8XQ*<ƙ;/=+U*kX5ZuJ;*jh{D6O ݟ6N􁻿B'aJ2$i&cth37oPP(Jaasjv1_a,8V= 8J&4(B2C8ʯtֽ݁tc@vM (b-EyJ.@Z2C.ݡ]*d'K;8aosXڊ'+B P;= tgNQ'&8?L0HstД (I; y#؞\h<gDJ"32$|fA s_z$*!5ZL6*oNm,@ !n'Pʩ{p U]FB?M>!yUٵwĔ6]ur1cq");}2t#~dzr2J%ھ#at2>g_4d獲"C'˾ `3wRV?@!Ya"|R'<(WmyF(^}-p,CuHgp$~6ԃ4T=CٻB~"Ɖ(\;UzB)Cݎ~BӱȮ֕I3E\1SNYZۅ/xtU ;)t,^{s:9Ձ|ٔ˓J)$L1N -쬯 lJvlS_GЅշqlܠ(&aP*dۆ5M L/Qa<;^v[S O9h ZXGFЀGB6nJi1q]9\VX#ݺ 05r(5Jc!iy 4/7dY }s$#>&_v Zw$x]MESŃXƐ#ѠZ4p ;xYb47pMG|| Vb *а j(xMoïR4v54^Jͧyx';J~E0I2Oӝ7?ߦ;*Ю+AwsJkrכ[ĩ} $8:/rls4\C_EGX)9I5[e@Nj 8[xSoW Pf 7#7,!%Q{PUWiSb^ݹ|:Y0Òw,b)7lWx:GR8 כ8|@Sm谦bA8_xKDeH}9S,2\?AuK??{і_SRZ،7Gc>ǓЊU$U&YIa\{ !7EyT-5l\U/ 9}BR@u0)2T6l!!xlU# (MBZ;io^$z54w!i6VeN +tQ{8%zIfچDd0*z4Cg{°iʃuư%6m<"W2;_Ϯeg^Xro'|[{w.SqœA7i/"1(\g&'u4;Xe{is( )k+X ɑǑcV?#y7, 튅fL~6U`Gt74Wex' ϩ'(Vn!p+i_foT~qд]N%h>h_]/ E*n}C1;&ԧ>pHCꝹEm}GfܸZf{lȉBX2UuqN]|?VKL8PCL4:/y1Q ,e9jqJKN57^4A\wV8n;L.4L>!'w;?= QP1%Kׂ glS|9sBfwvOc/#bd΢AzkZa@!/ߠA%H Ҟ/+@ ^IVTgY-&A'OZ8-!lmܜ5:3pCiaHGtS`gd:[6~5Ҍb<ɗ2]ty$qL++sir4fzGǢK̋5h!7Xqx>ic{L3t~; m\ xq|w}d2#g  Tɵo(JfҤ!#4lx ßOjz//~!p#V& ge 6lU450ck"?>_@Dg=F)4+(Z@\n෎}ɘUy.._|@ݭ U(93 ;cN#'gcҙ3{О >A Ûl.1=[_Ύ+rHu:b_h'&p~?QcE51lME\ʣFsf߃ac KgmGӾqg|ǴLՄt&"^_/D\<@^7E-䧩έU r0#8c}ޜzt0Q8_q`ιUIS mJNEuJv׊e M(HzE+,ٯ72S?X?,Ǟ>C)z_?#͇_;i}Nsvm^_4 N `,fRۛQOL;0J7[< 8& '5B<%&@j\z^J;zs4IACn͞8.k^)+ +|brթw *V5pf*ǿPZ (Lq0 أL4.9&|]oܜO;SW- "Ɵ/tCqȑ=PRco |t$E=F#!.@o[ZBogijy{50I>k)04kqoDHNW֍"wr^۾;41He1̦@E|ӐۃE>NanB MyhHDUZvbt(0C kzg!a,6?pdHrԛdFPZ'=Ӑ/4|Y1 W.a9)kUV"饩gكK+C]ݴiҔ9vPn妘)pk^(zQ+&&p74wܱ#)AW&W(ˁ)"FV5g]s(@Y;n,Q|4J 8sU2SJ phFӝ\PPbYA{K01dn_,Dh~Sf!@S㏃ OhWE.P (g"aՖ/ U]'O@Zk˶E؝Ca_F/BTIzEܱcO^^mWH$C]71 㙊v\P'+f`,> R XlSQM>i_-Tg7q+ly<[3Ʈ(o%^>ʥPR 9Yx&@p$jxe!{p -]vIڣ pAGX2Twl4OxGS+>g'.8Y uAm?vd;d{j[Ф6S=yqǾϓ#zK Zej#P r}BM6tYkJjW>/R[ OC(^NL)ǧr v8 {-i*[x\+$ƓuFtX62X\hH{"~=d+7cPoΥяXZ= ĒumR܈Ɍ֦n1qs0!4_Qgb"O?eE3IwnqH1ܙC‹0mfB$pI% yޓہUۑ/ ͭ Rvh)Drј> ̷g\9kPMVdeZ憰E@5M,1}g~KרOZƕ ݰɿ6eI" *)ӵPz|Nb*XNV~wCNb 9q. T# Rop'8Zڿ!߾?*,HzlgCQ#t=U@K-]IS(멨Kx }c#45OeUYaP}1wDN4FT'#%LY(g"{Y3/ŕ9]$<軪U&.:u!{C3(h0V=\gzڭW-V#x@7N5ڸV&Liuo]\҉[+bSOUd-1X'${Ggo, ^\9㉘7߳oqh+Pw CZz!]2Bzn&oEgulw(}A-*d\v-Ha2 ,,ݙ[/H6zx5 š$:XCNPUR+lkzD:ӵVϦEX,bSgł3: $?fL>toLQY߶n0p%"Ͼҟ e.kr][1͵Ilon 29t } oB &XWm!h0~&XAAeq}|1&ZM΁\"xn+=7"_uY.v:|U0nDiұc6|ó!h@2q)+Oꡈ,4Ȋ%p!`pҷl %N'xC7gJ)zw"5?BEL@+'Z 55HFDˇ R%CK.2hh:_ɿ#q[*t]zFЭu,?.XE/?nHp`E;z{`/rcĒEkw:فb|K8;9^LYG$,֓plNnp[4#_LIت2dl=@۷5P& ɓ5O&}#Y@Ҝ"&sl/$jk4do6O/$\Ald(n*Թs7&\@.(4m}1V2aqX$(pA?:.k5!I! ;S*a#a>UN1 d)_|Ua-p0Yf)Y4Mb2yQ`mќ2pT+rcEB lmR'MVT'"WH9z@Jm3l}y. r3a9aqZYMI@@Rz⻋TZx#hI?ED&ҳ*QjQ9n539hcn˛>v,>1CU1"`ɎMI*hQ!bYSVLk q!6Q)$HLf D@N/F 0zoZ|eŭD ߜuD'GtwmA&ZZ:5[!D̳ղM:Mj{WPn.ŕgjiςϤJe+ͯF R Bt'W ƈ01<ҽf^GK{ ˵߶AZ/dJ7. v @Vҁ{(2 tn"X{exsіT usWG;;8Y}cir&>ȀhUx"^" 9!' +U٢4U]gYSEm[UEQwRDŞ7[o"cR=AJc&BeHw"#41$uyR/A Dk  v.EK Ldu$N%[(w1U#]3t6WS#߬ AUPOug?=S/ߏ $ ˳pɥ) `w؄ {X4>#MA3C"+S[$c{7=½ߔ|T&IbFeVE^yBF)KA-sjT? Bրx}WB}YD&l[ksۡYvfL^8RmutE}68ݓ.\$a&NLїҊla^[uh%q(oTv]:}C1- Yo!J( RP*7^=(藷b65kOe@[LU5'g' e2x^tpћX@GBdZ70MDT"$ '1<]AzV{T;}3YY]UO>gʄU2f`H#4A^¾e+WN&г"(-GLNQVLazkY6`=|/f׽&uYܝ"$6qD9XTbM- r37Iek"T-7L-U!&R ;rʂ`xˣUPI^} d4'5uo|MMI8 (|tLjnYvHT '6`ƫ@pA**APan0f+;Egr'x X)ʷjvudil}B(ģ3*`6"F`eQNS2*) $9G`'Lo+!y!W7V Wjuh)]cL6i")‚lC-Y-urw8p7sPZlg9{Ӗ clf2׹W7oXr.Bcob.|K"Κe4Ǿ/سؾ-Y@~ $-'z$ŠVQ-zoy4- 3d S6,Ź6 l;ٵ틶S ٢~JaܺS`ZWAMu2v z65lJ/Sq enxuD^~O- ~pVk/}ķGP` 6P=Ki_1qXa>QB~,w-)$Utu9HqD൒jۃVl"1S9KvK37n9޽?G|\T+ԃH\[&+Z].yRuÐ5BdhM]3צ0]V?YHP *&t_+g0b3$l 3A@lQ'ttmcHyQqw_4-~@sVSRY:ceT(!gickÇVgu)7$Wh DfwG=#E]1qd"lma,g)7Y9_ j;, TLi< 4=])!-/v 'qƩ+4"\[?_S]ǒoi{r%2/̀R D$Lolo"rzJۄLl8HE Ir ny9vtj<_'_m0bQ֨ ܭ :T%*9wp] 3U\gΉi qٛP,?o5AykΓ ";3UƐ GR ZN :Fc f%ȶ$(sM1wj0B bd 5N|B =7KVo_>04if?@ FG+K5Bu!%m W0a v{V='PujƢ\K]}m8oJFJ<_]"WO ) ONz[L/#WhH \hrE·a:Fk;+r!m;0ԑ@ Y`0qKHTYȆ)A1jg tY_"C%kzD|k,w.kEGu bѩ3LaSP]H;J䎣A(/wzu/R{D,=7Mj;sM/#?LyXj‚$L^$CYHr2I8F͙q(ɦ y`dbEd;k)KomVGH~G ^jaBu[@N0㓙"Zɴl˔3Dɐ)'gr&„RǫzQV}q1yAYr 8%:-3Z&w\I1PSrQ$n$|62dnVYk:&`0~wv3 W9.f9m3z6WEns*xmuPO*Ǹb0}kјfdi1 [`Jhz)t7)cC/'35g^ϤPNjr!IЁDUE6PWer;M"#f$F`&fPdȦa@dK]& Zn4SW_QV3L`r |&z?Tξ= LO"3k+ɀ;{ߢ"9Ӽ ߇j/ʈa7vg#3k[Y;~4uV/\BZAQ oN`nw~N8%,}5poЬW俇Mʕx8^ߪ'6ImgIYR筮5/Qsul!嶡6 $z{݊8n12~1 뛻ƈ7W#{ݬƊg.UNt)]- '0`Zȑc =,Nxz9alAMGVBb yrfKOC*ߧqy'`6XckWE>v F/H3ݞVւdk$GbD^S['y/(32|]vŞv_QD>7 Z2լ |%jq'X7({h-1gUe%YS'O))~ $h%[%ZDT"iYJUB,IFc=Ϝ2&~{O-dJ^ /Ֆx*A9hI;KP0B <jBn#|A~jmE'|Ux ٽî`]^ qp  mV"ϩrݖlD&+kRe//Ϻu@^V_eM /j*wQSC(&)pU9!tuV 881vB' ,*)e}l;y82Qq&s t[%YP94 $0fm5%?x;BQ|D^ ?8ot2̛˯Ӄc0r~>:+}7C>SܦGo44X) Kd~$BNWwZ#lj"wy!zs,{Db1mpT:4=Yp^_ø \&z6_nwm \)^ٕ 1d~8'P%Zw⃧B 1m *$4ZxHUҸ<]gdn h660woZZm^gKȰ Ve$xD{ܼ2>5D 7{?RP8-߲7OS]Q_w K}z}mjxe2T*of:W/Ɓ7|{L~aV 5Я*P@47tWAkyDAtVP٭lX 0]`˩Ht[ ,ag&7l//7j3ƭDg(=UJ[-3^p?UʮH`B;o(dvBܧ_>݊2iN`s0d X_xš^ۺRc96XF6sGMЋmkgJ#Q 2SրNE:=<a QF7,4EZe26]MtJM-uOITp KN;HqP2]5I[aaee|`CrW$uE 0!P\\̨ZP(j}!Z5f 2@oHW2 cH Ft4Xy 0NEu\LCCnwBم}y 2 ݭrj%@Gu.= s`<9P՜w|}(~CbĴ츀DX.,Ȭyoh9!xZՔZHBqW[U-ΗŞ\;de 0ՔB@yJ%cuU_Oܾa2]GTvwန MDSI]{l"|MJ]L@%`;ϼQKf~KBL]\$2 i1YSi7?) 'ZhǑ 8t! va@Blu6/ktЛ$zrU?'S u*8ťsWntv\KeAĠlRTbjM)5lR"6aB? N8h:|lT ?J/ۉ7tn?($6+zLѷsno~+\;@6G?WD+T-fJV+p]VA\.CzȰYuS#>zT<21ެuvby&}ڎL6jk5lU<킆 N)_i~M3;pCv8A(y>KÌDpxԀ/Ia4ٵxccb9*) y|gM]MEl6nfm$#8 4%JeR'91pŴGC[ e!kEF0]xܻ]Y43 H]N,68Gҋo~zOo2^O 8u]; h@JEvh ]!~ڑo${qނ F7}9 < ofvl5Em,iIMƈ/_"NVXw EP͕I0c_$jK2!5nzl?8O>we˽ {}@O.7Fڮ#*0 !XDGme"}YIEY"v9@6zc3g!"9fNp 6Nzmmo]5X'r(7RC.+2>%'@yt4Sf={-w(aU]5k].Q豂7d]U+k91,#x)r\ &nBfFmrfȊǝ"|J:/N~0cR!m/|t b±[1j(j@ւYKTSf&O hլɸBY4Q;q@]dPKMrP^#198}_@5*?w/40O +`?m XtE4Ec[ڞ1C6A_싯E~u.ހʝfpWr6Yʱg _=Kue.h]FKF7FH|01 &Huͳ}a IK5.T߮Y! >N%үdxج8z@}Ms/ڢE kj"N,LyHQf[YgԚ{=iTsV }S?hgjL8<~DOC+zs6_z+{>0tcQ.5c9{'>¤NQͨ#8Ɉ#?nH}g=;\G%jC3 /SvȲƿ|*۵`i|OiY-W<=V8[yHsUB,PXk{+]k0g0_ox:,4\bCf𤸳=&յCIIWB aZ>C\Ź:^*fKk K -A>^Si3E|U4;qNmk UB`R&E!ޑR~5z !BdMTy}x\vr[s ;Aan-<3ͧIuLS1ЉPI" ޮ3;yZN_ؕRC V v"KCW7]^>B4u؊&>dfa 7ֈb,ȳ>'ri\db;<|y91!M\tƧ5ϙْ:ho<l=Q"_kHpi^.W# iᥐ{$_B ;fJTqg iNyI}7.DmxJ=S/<nkBȳ:3'BhAGJS!JR},T-/XX" l@_oJ ./W L Qt2L5AZ8o@M<9"`ҺMwF#nE?3rkQ@)>7˄*j13tQɐ%\ZQ/:<*aL4 o}3{O2_3x.mt"|ڻT6$Wt=)}ƶ=y ӣZ/ZrGE]!ē`͂5f,AWg-Yg\P%^!,I&ww\h)o(6/o80yCRFGzDٞ4d32`XxbqӥQ$74=W(Chѳ VaS9TI;gy67àג^Ja#9O'zİ s`BqХ>G3{ N3ULE*M%(M a)uo|Ggh vlJU(B%%;AYH]y(6-WWOΘ2tIVp_QZT, |?BV8x2k;J<&2TX;L\Bg{(:Zߟ`e#Vv8109᳊?.)b I]WXʩ8\̤$uN~g!ta%԰MM:q4!$lU>! ,﫭AɗU00ɲ{)mz,홡($DIpQJB7'UnZ >Dށm[|E5'ʫO>3o8;8^G^e*Wh٥̆b$phIfz^6O(1wzA'9blۅU_fk^I(;8Q*$ )mV#ۄ66Riz )3[tZNj~SG9vADtxV1HZV2Ӱ54Rkh=K#&y d4Z=˳F_ͳ%r̾dA:YFB!_@`tJżVtsj`ПMiw"N?pg&*=˙/HxX*24gjhKVك%Wo]5zIHl8R[iYͰ5x\|i9˂LJpb?cJfHb1p [HS5aw, _.kRwjDk1 Y9~K)$0ݻm6ZLdȃ G8_2jvʣv7B>?d>>\wSRq?:pLs+BJ kbį(5~_:˼sүT`I < .ap뗊f!i6򎍿KSKN 8CW*DHQzծxe(!@5Y2v8J\<,mle(ߛy={KጐIid88aa4w_ ݃^rY`6# qOGp0sMll۷V*fYUӭ@%gAcs58 D'j& Kr;C clڄ@D߂5!hX5,24S/%5X̭nd tX|S%Ԙ5(i|Sa ,sRO QÏ;^pBǣ^K$0;']'K+B{lPw ٩y:9mj^!%?bdWMq͓Q6Vn?rBqu=<u~* ;e IJcͰͅAXq$WVPT(BRy=Ă:kTSBu y h߼abJ?Yl16-W&xexW+zVw;'+'C$LNx)EC(8/SwQXՂ|\/D e9Zg ~(:=4rtB@\Z5QjiԴtC:d(k|5&wIZ;&'p^+ otZia#$n:>C ”̅6 @D뉈wF+m wnL9-PO $"Pa7˄J:VGw.\Ч_+=36ned@ X8,U?V@of ˅ϩŃ.@y9rU:/9LAodv˻XHCˏ<ךbnnCW=0OF=W¯ 4f/sH#Y^s7htAkD@L_l_agKinBRø#XI޳G\sSf3sN՘.PK" 8*)P-)k?/l ܞkeT^ɦzk 5L_mCR6 S|Ҟ䖴F`*e{5p]Dt7iiO5ϣ-"OmLS\Y0S:CCa3LjxW Tp/H]W (3:+ 3Z<$rx\<CRczpy1͋tUvKgzC;kg3sKArP.P/`p 6),T)moF3T 8FS7NHzMϧpSkY)bw̓(j$ǗX7aW$` P`5)T5p^ 猌:a!;u;vVy$r99<|/r*2痎)ًA{ҡ=X'YvR=/+#tD[rWV@~2K`"&`j۫PN4HQD4.R!w%" HjX&8 k˩we ޻0PQP9ڼmZjj9aIO @cB|WzPҔoxb`6QSPs]ۍmwZAisE~~MWs 5,D)vjUOIuzDE~<, ^Ƀe%9zEjz]ѽ402Odkj2w7-yzRNrDpu`;%Njj pUtx8Ҫd &!\DQR6DE?WGd[H_jW#bO'8[)vi$';=Hޙ;?L. -!P8bː*}޸)@=(" *8pX}Bu$"VΝd7ނFݖ42<4ɛKU}(/z\sb# ?םtX0>[ёTC9U OP:w%`:qJ#&qi@'p=B_`B׼O-F>(%-Wf4o`ΊT#oRL9vBcp{e(avy^KCܵ$wEf;j rISBҏg#[7 tO4h@v47y$~2fփE24(닮kc%|#A c "3<Ƶ(~Tťeوu ju&\:EsnUo f6vțRhA횺b&#xLu,}q<": }]F OݤzItÒva4\AA!) 7"߭c9;6*TE,O2qJ:6h֤d!4m! ^B[ BqO:b~*k8t+ E;۪P.kr!Ɋ8= ~vV"z. U*[6B Q{[ؠaUqfձ,دINը尼y兦{# 4uLySX鱩?ҩ kߘ>tZa`?L'71LN구`ˮ`4I <6kOnw#Q9L=N0_BT&Q\HuPՕc)Kn`6]JL682xώX->NW7I9,ϑ=Xy |ue۾]5uCnR؄Kٞe|e÷1jXmWgI˥gWx1\ng ЭjgF@pTh+3}BóG gA ʷ9XmՑ+-o j{^r*xVU"Yf-"d`QҒMмw7OZ}+0~OFAv=xq))(Ւ+!ymeHq AN=`z-]ՐBte7ùiC`s4Kw'ui+OrI^%K&ukmv -./U+0/_dPy|zI1J9pCZڶR/S&`ʘ vXzf@I.sKr[& QtsW vgp8eO$."Hk^ J/D9jZ7=iK6J4CȂI9 Yk^[ (+ 9 +$  mInRS .0E?[(&K2$ asȕO>ݡ< \Lٽt?84%'ܬnc'ҕ܌L#av55H\p!ٖHNSCgFmrAW?l=1|{|##95lbY|`]a%$C//H۽(*Rub̎BlE-ȁʐ>4֗$7֪_@VͣXqQgfx$hn"O g*i+0MuzNd?d}4>}K4dK.)!Ԅ>Nӯ5s%ر6.alw/Y[v;4|b𛋟 p#?FJH)G0/WlQUЊQ2W>uQߘ?%2X ?f}qځ.y'祮]_f7mB4Vݠq9ou+nFX+{س[3Ys!u`L;'}RK3rMd1xVΔ'&lsHV#yW㲆s~kl2Uw#{<`=$ϼW|)9⥸ O{M'ɤ֙SO= s#k-#,X\(ν逾`glw6g:e,CIm:!aGM^,҇Y+@6zCX1FY |N)=N7VF8p341wBL_zޛü2&1Ќ6u ;*W:i7dF&gU>xs#]21׉I)|,Se66yK F_II~J4ۅ:B&Ra3nDģxqV(ޯk9B `70d*S'!cI6dD"+}Udɺ}1RyH=YJ8:ʳdQ5l˼v*hQ\.FSÒ'MKF@´pu/P)fvs*#[$i}fbb3#d}tHw? |3pe IAB&4=%.’ENK(oR5Zi4ɦSzlz&Nx߽^+6\Ω[Nuw/Qdw*0âut*4iyZǮϺujP}VEc)ؼ%B:m0{xHVaGQcC'chFu#~52\MW8鹁J <̴Ae^wbBʾ][Rvx?y6~ sjqXܯ1R֜obnFqZQ,w%+LUTV"wY0j>ZQK],uekK;16KW’cC SEX=0lꋾTԚ4eiuIŴ kvtK^*WeN"Ϲz@(|N)a :,ƨNVȅ>-=՚Sx!:hH y; Eʅ0y1d[)oߘ쎣qQrC N&*#sZɴtL?uǵǃ16!JLk֯/ޝ3z2ϸyYS5jgC']C_ JB(~g1| )魻oz'o'TړP#6MsWĿ%4@/z⚉JOzs^A/ٮs(KO$ݯS Dk2՘OhQǾ|DMK%>]*:͋폹,dOSa$¯y*C철hWQ4f&{'Ҽ^ eEmEQm@xq,o-SPBWlJO1hDzP[? 6BP`ٍtS)(Е(tR4GDcDMUǁ'qܠJQc@Ib-@,Xdб C>vT|y0+2 F]0o; [b)3,h+̽*w$q4^z+0=6>%)6zoɕ}g2ے.Erl f\=II`àT}eloST bbKP|1OjAJ1-^9Ɓ!i`7a Oơзrťݺ&!&eÜ&64C\`}/B8ae<}W5ݽPf:lԬq^hX5/`w p U *7L;<NiND)nZAJc":VY-Kip`5@pI9Wh\/L0 -2束?{FbX^m@BDl{x3Rls&0D6m຅Az Eg5ex*_a Hxg{io#pJuzD\jo<|2hq; (o+$0z#rs̰:Su@?+%6e  =נ]>$ 55ь)4v4r¸Ty_y/ E{ԭ׃ QV|EO<"CƗ!_ui`x<@bX[0foC_F{(j(sT2\bmL r!-y1?x78Gݲ (pY_ֈ@w0VҠonmHl< "oC~ >2d5MoݫP ض)Q6z9 *MW t1Y[o.7䛸l}L2yyTk9{;\m6goS0qyƓ0W`s=i3H5MQb]b1}lbO*A,4# }hwV[=0/T~JJ]֣fB(Ǽġ:bfHnr`^͟ho|ك?@W4:U5jyUY1wp=ω]I5Qߤ& ;/G )TL[~'Aa/zȍ/pH 7UCؓ$N>9|{%mu-ꘉJĴ|a\w-[x ToOShЪ|^ zPwKu)ћ;q;隐w)-^43HL42piLL.{px(Ns5f6P"/*hOUI%B%__MU ˜(ZZGܝ6%OzqÌv8xv21쿮t.V}jZe\֎#+AȓK3ݶЭ.smQªuHyp'5V.tН _pa7$*mi6:QVz|1r `kE>`F28~o+Άl_Uc|h Q_I[=ɳ* uVGVۑ^47Z1au5o2D?ĕA@ɋG>H(@hv40?K91sXtsiFNDL,vfW$!a2#?&lD'`UhT&ro?0vl( |ԇ& e0d-Xy>)D731k;\R#Vi@Yp~Q1gÑ ˍZ_:){j,z?nC#lm9 ʢ-=#EA9Rü:mXG rjflI ('HRQE tC|TE&ɯq#$.h~PZ\P{1?爊\HP祝B oNV)A_fd.4h3όOOA!oaA(jL=le`S eq)hZ9 ss iѐR%KqeB. oTp |ji%eUH Kkm3ArXЉC^5O0 *D\Kg/ _2^E_‰(`KG6#i@ =,kPZ\>fiWrM{3]Tt$'fL$^L|MĮ\ΤV{`ґ#:@kM ڳ\&Wj9hr޺eȾ\樶5}J= - V4@hSaɋPeZEP^oN ;ENELbɚ6M 9xK{2 S.cԙz3=rݽXi&! G~#Zn67+&w`>.-W\ϭMA`q3x+oDSݪ'˩+_1cb¡qgtv08.|:t6*BIKf܊؋y\ݠ&`tJw }n% c)>!/ .&x-M֧M#~"6_qߎ}Om>c~V]˂]AL3'B1$@0mԞ}9f,D|m-uj^VĢo 2_5m:/vƮހ ]{Ǔ6>j-q Fq{Lg| ЬI*W]!죺>#fZoʄJ:8W-ʟ:pAyl764n 6H4CԦ,@4Vy@1*{uT&FjYv v L+Rx4Ўufޗ(mAd 8i1\&'߸¡H[L#uRd.F bZ&gA Y=2`[yC͓y~SRCPjC} B˓*1 *u{H#x#kS4[p慠HjN8Kۉg:4aE\ ^yt]3H"~zK=ʑSb^[SAc씎Qr7I*o@Ϳ&&%ɋ rPvh]m4Z݃D 8B0~.-|+W0B? }sm3*ςXi9Nx#4\/B6 >xkA-vǑ -Zq}x~~K.rcA) zw"zue|Blp #.iQ*u\٢`p )p:֎E`A +"1ߓ%Eip -ma>Z[7+ȰJO[_&yt]nxR&Jس{Sέu0(@Pj=3*&3>BO? Y*1R* o/)f"!c8Le`,胯4^? yl"@Ǹ<7{'1QZV48'{/T /_X;o*~ uA$(FוAECdrP$-L!zZlwEV63ť!;V<מӈ2*ǾZLH(aT%R X+yD[ ~&PNV#^S}*H D/yw)_5 RYэ'<*O^^,/6.}(52KBMk&y3r|ImJ[%wdh=`tSxZt'w`?7P?r~ln<ft2)]]bvfQLOf?wh$5?.J^I;y1BsvAp#נטxId"5R<<@˘۳~FZ1cFd]0]2T)EpهzF1ugɟcvBah Ot"_Ae+vhfCv+DVA}ȷ<ԟ "uYW]Q <.. L񠣤hcE5\yDk#HD2Z;\]q\R+MXnI6@HPj`uu~;) USy -wv<;F399=4ׯk:.Bʛ9i6.Z! jZwGQY>]I KKzbYorLuPyCq(MHW5 „ 6~ƲD6tZڝ5> y ƨ5* KY6U vC т Q&O'm'7߳Im]ƪ - +]&pw#_I:Pε&Z[( t .%l]Q"jT~LrOSPȲOXA1Wn (QNi2ӗˢg*d]唉mo$΢/u("[S먕NEmu=qes])jB:C@v׮Hn)?;Beg1~(LA#ޙGN u<࿷m ̲Pi[ymKwBpttnEzWwh*׃86-#<(t=jx9yx%B+BVak,n]pZ>CmE.(5 |ixVfّ'1[Jx$t1Ֆ/wp)eؽ@,5l7r]1^ݗ?<|3eVoӏsUˬ!$Kk\yM*ۜ"ciIň)9cٟD' ~ݒ"$ uD2 ^]QiH,pG24ׯqZmks+z38k"?tsH}߀H_vMmX^fx{=z8VzXeڪkT~1#X|[:F }yMhh~uz-@Ntwj)8e؂mG @,߹B5Hgo7<ݨU;Z t\-HOmGI0 T=?&+{*&hzOǁ5`NI5q'vX*TRZS\Da t‰p EĽhEцb O FPjMn8G0;덀dT+v(V a~9MmkjN5)tU~o&(Fc)TT466J{VEB#uUR5?stsO5Vr(ػY0"5[ gS^X /nн<*߉Aer]a+Л*@10625"p@-(;>gpIZvό*qEjYe6Ţ L3K{5ňz_a%+cZWXbGKᦎt\lug $\+nKu,dJ8#dCoDFh' 9 !T;-иC5ڋ+.KP*5wCt&rg%UPQhѐYQ2^}5)$hoL%ߪ'=;o4c>maֻny*NwC8avIsՐ.¡ޑ'x^T&75zZSs^q,5[HE*XL{^s tz,Cbˌ|->e`?U1%TWགBUZuURL҆s nǴ#%(_Azԏ6բE~}w|7/HiB`t1>_ ~&֌7CI _#pS6u<y_*91>`x`t#]{T-)B .!Xt*tҧdIÛr#S-+E¶NY4(GDM=z10/N]`r% cƖ0wlP2#(Omҗvq̫MQ`=$8}WqѕG\mi%gA%In1C&\cOpEEN_J7+GVc-Y%qVafߴѴG|-I>&ҨCz";&ͫ-oЯ@`#}U}EzB>U+mfs|GZzڙ<^hX>3qPz3/ /l|PyU?1l]-W]elq`ZU#vj0'ܥ:MZMVĒB%gvzգy`sXJ:á(fsDcu{rJuboGBY PU }x-qD7 LMjv" ﯢPDG=_A,FÈS /]c!"ɏ SN SY8 Bkbna~>[(I& = }}W(h Hg%n%zL}ZQ6"QO"m@gˡ(`zczH};O pGb YW9Պud_Pp8ݠ" BݰYY(+ }Va~G5J d.?-2':yνF,hRK^@\HpqȵޗMtyegPGOZLsv(;zٺffgTե4_FCa1>p$.fcm?胲S+$<=x D䓆%_T0{*061 JSWDL5yBJ| ^[ GeK$)+pKypxMj *oH_xV9)n 㞼m~ OaSp;ò(0I=N J,ƌKI ?SA ]2'H"-~^#w leJw7I(_~! >$g4p۱ [ V^qqN$էdd+حyP-z/We.[3|cvؓ/=CokW8g222fnnrYJxN.aRSl7*eD`nOd3EJW.uX/ڙf K&u h]uGOi5HtӸPne4:.@Kc|*9ZԭлuN mzm<KA0(GIDSSCƲvͱ2ٖ TPKm,dB:uKP<(EħLU`7wX :Vxx ZMslZ;~+n&vv"`@JPp^(J]03y4 <Qpc:me i*#)B4^DCT4I)qsMcocX1SfTyNj~nN_G+2 HJN[PKmb# ᧗'4K05]vC;woQy'^  A0,MErק!::@8RQ$[ˏmSUzuщݙ:9 ֏w3*hOO%zmTV|1w_tXdoeK`qH vq k En``ݽ`MKuXWJ"n~N 4ݽإ\BeN/ A 2yi|'^95 Guc82NтRFɎn:^ ,NA0;q $;lr)o/D\V OH/2BqN/5U6-@v2eu)H? fSV:1YFbو4zCs`'W?sZ]I{J4(0o0)'AJrhY AguC\ub;3j"6'F7_My&wy_}LI&zˤ;2`c)0V. LWfẢ4iH uxn0h#)z'c}vC\aВr9R]DNx/,/^k@DvK@ud 'ܖ8 4ZH(. ,e>y녳FL#ہ\!3*eRG1郴wљ-o!#yFf*p̻<8vJOW4ri!eT֥Fǭ?UtlO8ĚSy̩apUj#'&4RdAqFD)ʏ>>es2S՘Fj A2JQcBCrAuہoT_ߊo0iHnE cEoJ"{ݡA |%s2S];β&*@n( UqeQfv=m=E䯥vҷDKN`I,%̺_vR(B*+}j23iJ1akl<oğ k+|=el;`{BM-i>|C慲 [ӯlwY GKYé4']r?rh^DAx?5G88!c-N՚\+=znifP,h9L@e0ݹD$H(Mjӡզ'"xFG:}3'GЅ:-1j][!L(sɬ/AWj+d2}ĭȁ;O&p8,\\a\ROX{kw^_ˉw ~FN~3 iGkr+z"F /v]Lai,m>$=]ۺo`Gخ0Rp;0t5*n׊Z\y, "x܋U;"Ut4=@hYl>oCM{5p|HF=wM}yh_ZmQP7E ݝUR7uE?XolEh>24ԐrIHfC ΰPk)^(w1LDޓ\dbF,M (,^d0"l"1 WVcKβιyTjUBؾtk,G?Ubxl֌}VuūkD}?λUhǼ\Tx")&f.4*yk]u@E #?0rpچ 1{R2s\`7sŔnhl9|9qQm>Rٞے ;T3clܒ@֍|TXk%Mxj8&/FIEY:}{AnrfxEʢH{WcDs1gϵ&OzJ\:*¯k - ;n ͊!s⾥t;=:jΡ2/"dYe B meK ?)[5ګD1N $|qJ}K NP\kJ5yuTrCfBD·eig[i=Fw~u}bSǡ?},l0%3xS,.k>ax`dwZ ^2Gf8E"py]i+hk &BƟ~H xȔ֭| ȫz؍_Y=B[-e]FyPfǚX(ԲO|yX`x#STFV2$|`A, mibELI{h\aKڿ6H͚EKmcmF~b5.=zٟ漴A;kdwcL!fN0AG1d"D#ϵ8gPig Ax>W)8@w% aKCϦ z)ԥXbG fHODha,Rj%)򐸬efbץ6|G:\]NhGLaII>Mn'CFOGwFa!T^eiՑ0s::'zQTgi~]{}EA>|ڑE~9­Z1J(,sA2o}J‰Y~hX&[#I;s#]a~YMqrpPWW*ᱟPt8'h LzhMD ,rz!Sq{JsHQ#K l.!TNv[VW&jEbP0 Pw]^*5]BL4+l,N 03"`ud};4%j|5g`Vo\rv %\ixp )If#Hr|MRoZ$EH]N|45PW[ۻt)gjUkv>X@+$+9߷;?{0}酤>p'bď3n"2ظ~Ocz=4#G|g9d|Pjra'wa4??hU4poO-srcQndrZ l߽l?C WdbdhDNQ&|m\of;T֢k`B&;[|) H%~6q޳>xREbGP͆lYGpG}M1-yF;pw3Ǫ ?u麋5ʳ~_ҡ7yѳ?#W} u4WpGwa}M`QN ::8CwÈ NJ$SWhxooTHS!T~B(jDWg9)Č;0_brݔѪ;"?Oc‚M[5 qEM-k-CA9)" oJ)sbS\[ /{vyVU, Ti"Za10 l??p'ZIzzU˹ "nZD~JS겒tvC!bdS$ bI qւ/Z, ywrcvjh-eSOP)T/`"E:am`e 9Zu&6a7SeSVxhp$(r1ޜ8 ^(#+ުMsŠ giE`x To'>$Έ-ZH_iLQ.lk&}OJ\AgP+u't_ܩދŅ{iqe M[PK( dh^QQ!E!㙎+FKĎblj- I/--+tM'H%0ЁI9jMR$;сIupNf(rmC11c8-[ˈHEWHTG֘ifwS>N7@CS}ʈlj\<>9|q9V/Oxeڣƥ(Mca4A@~rQ^hҮ'p Hl|14Bx`G" noC Z9B5 t)f.e/ pwlr6ۦI`*D/ـa1p;X(]ZVF!Y`vjnы1՚dSKߪ $@)gجY9M! 8&6Ex'=u0XI}g& +xbˬ?J|6.I7Rg{N7Dlٴ-gg(B5gx>)~U%$ԟb(~y]\'ET50{e' 4P 5G>T9BWyJC#7]ț79gV'$],L۠uf`8Ӷqr<ɰ1xR%el+&@4U߰+rTg$4~RXd_J3DZ=@X ɮf ͝u uuն>AQ# BV(6۷@a}.\I7 DֽDI0A!};^_W.Z cq=Ŋ Uf );x-6J LcŖ_S\d%hu }Uøx}ʝdzEo"$q.l`u}x  yg8[ K# @ɥGEnـ`4Y~{vub 'l~z33KmO$Ucjx]I `ԩ+\ 2%JΨ>%ׯ6:Fj e"{m,O-Kڸ{HB: x["Łi4<܆CA׉ * O& NQ4XP^^43..d\5v6 fNQFP`CE>h 25satѕWRt?岐+N(ΐfCU\fHSRt`R F^S1):Xe銇-, @I#A=9wdchkz2Jէ2yP׺ڮO,1oE@SEtufN\)7 cWF@ -$z>NX} }EPkIWD:o  Y=eT.^ lG ? *qwkԍSC'@~uX=7'r7- TyzBC¯)׫,:hKLC-ˊ`WBSN6&ӨS1%b-'`ߝT%Z\oRvOTpJL0GI~Gb2V 15AIh)d$CY<Ƭ)9V['/Q1bjKflhQRF]+d\[Yh Pz@Oj\j2E=2$X|HwV#47sf^b?{c3H4x@ /?Ǖ~H#ۚfn{tL I74 PЯ8Qf&enJhHڧ!W gBk)& ;'\X;,6.eELAK7lqm3̌ M.| c_9ڎM 3e#i=*X-֭e< -2PZ yLMB/M@1 %qWR8p7U"pPZ=ꎸAzPr.ofo)ԧSiȝF$?IVB` T0w$Iy(So<Ĥwj&۽>mhMʤo!~" Ov ;$L)it~'T!` d9qKSBw^٥ZᾕXj eʊ [~چw=Cd@mmc;H L(~Vs<*+(6`R ٠P]hȾrD #}ςesqLp~1Yrz0\GT0^;Խ\Q6?Qk~x:,,x:} F@$ua͝.t!)wS48 ^)9/', )Y sj(N&*! V[wb중ij1Idap ThW&M_`}!хWgڙctLl-%j3r9gX.v欚Ljhr/"ޡ"Lt%C@x?*SwM橾[E8Q5V#m ^%mT\;.fEs:۸!40B@ě,?4\YTVMpGE0XbLvXٝu"'HtH^;6_+w@-FY C3fwA(Z_KJHQ|MR0RgBUEɷf_H71pvTPʏIN0ܭC5RS*P08!9i];VE 0ō.v*m̚vI-6>䨙-yI&j3,#@(mlmxmWjUAS.LsJ;:ߙ1dGd R\0赣zhv^GɜYάh!?Br| aX|uVAZwgPJn Mڱfőss?Ԧb٤(2T%}?\w~ԾU-{eu?Xos6λ|̚$X'zB=D肻!ʃ@I2bU T7HͬJ=sY"WDÃ[#p vbQ;4|GHeW 7 9I0^Q%)[gLPFn;嘻\![sagFՋ}(V"2NJ,ƙEJS 4O%Luj* }51V)F9xRElw/Q;%k-ot5LA$ApB"}e&ڡ֢G;M3½t@%66$4&`o*.>XH'}!dkbqX7AlwkcGO,i؈ClW=j@S/۹;_~e5Ԫr7g vߛJ&ܻh8SPjd#\~d)Õh֑1lU+BsV4ťZݣ \6 P UQ@DžJ_m R`>TXSJ1AzOC]ρ`9&;рw=yicS^LefmqURm6aĎaϣH]oI/i @:mB%婱F^zh{i=xH\+ȉx1K~=vBGvQr[4j6T?2>Gr~FQa[k-w~t$[wHS0tPyg",qdСѓ_kpJ ֤0ɳCgE}%~1Z\ 'b7u˷ Pu{kGBˋ_# GAvL׿|hWAy]ki vJn9WmкhUX76;Iқ ^7g',1'"p-:AhyKfiobV@SOa pQ}ѫV)S PTlNPyy,~fIE96c/?r+;Μ{^GX( $k rNĶIu=5Ỵ~ 崜E]:]vW GJ[(`L?d"]D $߆L;Ȟ &.ە|.k+{"[DB6Bysx]5nj_nGGQwD{}b[ʚnjUA |FE?29wO<^]89 RЫ/ g@B[]Z !%B{lkJk2@h? a; }*ut8؜.n\풺;3?26*a]dYz[y[1jT J\oAhN2E]ww[Pd0᣼;Eɮ8"9[;h[,B#"}Zѵ˚.%'z # a{rM^B7V^QX}C/*FimI*6wKIJP+W^VpJgk  ֎vC7xq=~]^6u-IusAlQp'סX'y Hl[ASCZ\Y6:V|^dP[ 9e".YyfS'OPŎU ܍Oe0ȼ2e8J9c^u]ۭ$5vay=BE7nc3A=cq*ن:%GқׅK@b^J4Փ;HȇR MphP+n%૭i ن?r͵j1MxȐn'IȪ>Q, f^U2ZBBt#xTH2@_RFpVP&Q$4N*1t&yTsF+VĻOS+7ץ;:g~+}=jZrXrkNACaﮂ_|kKc3兵[xҹ:B7TQ Hyjc8BMXcE(x٨u﫨aۛHThm"!5>c(ی|6YS'[tMI&.X7^O˹)n7OlS m<4W,RaQ053QڈMY ^athiӱ⿠_tp,M!dNgx iJi8Ҵdd$0cSGST[y`w[Y>^=*vidi3$DŬ'*P(nN& 0H:^]q1vޢUz(%zU!.)Cf~/\ܥ 4(fjrj̬eJhER 9m,^Q"{Av+𪂪b %"lH;r*O& (O]5J gPʴzxF{.wʟN˙ f=al&IyOs|LRi;fQcMq03II6cҪ\1A?Do[/je7Hz5:Z]H߰seuHկn o.^m6Z)m0Rt2_ގ;|TE6EßZ+> ࠐxYC3iqYHt uT8pTǞ"ilFCjԧr))6Ƭ]4l?E^8H~ l7 (H~T?58A*~5NDr89kp`R/ls7*}E@ GC+Jt t;ġmkxpQOQ݉|t ۭwT FڮG ^Ļ{춗 3yed)B,?[;n!U5\FD60aUhizSӤ.VAKtH@n'tɾuLAJ q倁߅K= vxwI;Y#M؉+'*ap?+wІMNn_ipCucfLzizx|a8gZn zA 2Gӟծ/YimJ^f.3NKu4ef Mqm_$F"/=ɶ/dLz5#2)X(~gDmY6zYby b$JI?ZmC18p!dBr!ພ!EG2kA8Of*UӋ|/PR#uziBఙKHHΛ7dT7PdgI\ M#vs{S%$whȼ2 = uY&b5s:Ms+e82D`MzLF&RjPxV ڀ]UA{a肵:Í!Xa3Ge2m5,z@%aQNhyW'\kOޤ33yf]$ܑC{@ZJWFjg@!#1v@#SJ}x3'RPyAWLES]y@͏7ի@|Ŭ{;ZN} [7 cm5;О bH?"yH܉:D#J{tN+5?yOd]߽3j}8WDgB{撮"Pz:Hn% |qKmФC?C ~Cf>)|FcEŽ$(k`t8ܲyx9WiVVhzQEҼr @szCq79fy 7y"$Xt *mōyZ5/M"ȅ]WHA;b8>Is8|WLKA/@ҌzJP6'4 9ZlY> kP!6S MdMgС5 d攫QQ4 7mf4mg2jp 8Xb.vP&-RU!\acX,xvRZS7u׼rEܖ60C+;hܜ>=ו|o,iOM@ E ~66"8༛5*JF) Ro?9P ! cgED<ݠ kpQG BBUZY $G%>G1 %bǷ\A}6 R`P28`kɾS+͟DȮ,d;j#p;TB )I'AA1_1GHH6<=iCG6!&? Uڨ 8n@MKg/̎rL,m)LfduJڱ\ )߽^,˫6/bN eh,S[r-i) A!d#*FX?ۙbq~o?2“/:ƊP J{>y=`q-WZ~̶pET@W0nshAPLЮ1Mtpng-0|O? \pS}P!uwW.,6fq40OCA%8 &JNw H6}Td5i!g62W(d Q= ryFq&7c8g砿WΤB{>{oa89#-Fxiߛp=TAvTh&-d~"ldAWL| /51HT_S^Iv lݿۄIgD&# ٫k7:l+qӒ{sEc&)l(&-o3D7Kl)@U"lNULyߺQ̀#YWLEz+ؽ\0  } j 3.RU-F*iϪ^$e0hQ1'=ktPO~a2mVTz L+/2aMDzJkP,8H~hig >se7&AR+-Nֱ AFn ξZnr=G:Tޙ.k|".%s4cVhP*V~aE؞….t>`oV9uJ)@ rb:6MHԑ i-aJ_k.w݈OQ Q6iqp7w:Un}?Ωpt55Y8TKdPw"[7PYM+)kA { ro `і:wJ JNwoI$LB^W=k*gKNؚ8x\-c{/@wyNf(IPYzmNKvM; UG=~K:>1&'rx~ѰU/hڄG7FHb0%^`Q#ʕp7!270M\t9Z. "gz ŻP@%G0$2'jafr% o"YϚ]x.@KMi_݆h:?}1V+PC|IЏ`}fzڙ,>#,fsBD<^((Cjrw2\gϖwJ#dߜq񡁕7m${ QЇPf83lMs1(!F\%kǙS1Y+`Su+' YΉ~?KE)Z'~zէ9d~xF ĈuUC:0/ri4Wq;"#p 3`q. V%& dUjvۆJc} #aR^J֪3kj>h#y"OKXY(kEy:6;%tOG+.`Uֳk0QrUu&=c!ɒ,zĒ!&V5cҽxec~3ATpqy/7";8r38˜"t#Aa2 7hEp& s~rOG]2N/cHÕŬ |=@󍤈u~" uMWnYUY-pIR6M߇p|Mah \GxۛqƠ1[4.k4D+BĆ Y﨨낁Fet]g)WXN\ıW-ZIr˼%C\lu΅S ȍ"Vގ.JS q29qMGɽ\n7|,_K@|B4A$W \ _)Bq=c;:,>P>IPzيB]nY g z EӟT!񣋪TF=܁3(pF>FZ<"G\|Z(Оqvym,sM:2R[ {d%5Gm9٪fiP_9 wi 茹RKwi6M) f ccTHYdl~ o>@UZ3$܅4Idp<+<ӉAkap=v41"ͪ75If hE\f=WT45Yqwan +cW#qVg>=2TuAPFsݬ:C/z?ݟK:ԁoZȯgL6kꏓ&ZLzux]nd~L;>TW`_)/֬J[ʮY$/JeJ׼[qw @|.1(NJ]DPyɸ#qL8;a6G Sy+6aS)*7̈r},oVR˰]}Gur藐QYzA9"AH<.tI )%{&>\r"O2egjj?"Bi: &)1|+b]9NCòOK&gy36j'UU=[`-o'&0*1cK[֌1|$Fׯ&k0czO uw47L9MPZ!U*64xo5+(h/JPXojb9,~H aIC擐~iPJ _ӂPl{ T|v#G3 7sgX܌E 8ҚTm+Ӡqw!ڔ'x s,VF'c¨3 RdM|hV3ތ)KhE*rwAHM s}T5`l! 穡b:46һbt+fݰĥ @2<`<ntB([PpZSG+mvNnkPCQQot{#DMLM_BV]/x ?bƍvsQԁ'E EGžxE;VK<.F$g(G*>CCr҃xm#MNBҮ!^3-CNkb 4AlzfʭՎDH;jBrR}YW݂h )]xo׷%UDrF=X?Kzpu`__f4wõYI;DsQ(QMRre4oWS[M\)=6wA9C%z)'Y\Nw#Xt{cðyE,JX5f4mb@ɢJC[p+r=8TYBC&oOpVܐ`M(bwBOԳ0 }׾w,@qJt/U a Ud[ƊllaIQBA %n[Ԓ&fW$]'eA N-$eiSūx_CrʧZ /5$:7zא{xyxB=S7ԞaE WG0+_j~UP|&us-H&1F4$1oʌU* 8Dؽ#& Y\sg!\o3NLW"`!"@2}W'6h[! #'d?[bS@qoptK4H~=cx/r[lBUI^h7\a7ncf)e 6dPJ\}'/nz3N,y ' Nng"> ?&)g*'n"Ϗ't ڣW/QZ3OlQ]04bo =N9 ]?>sʅ \vԧҙvÖ&/48h4AVگwgQ ;3ƪm 1^`|*:2Va!?`g;$%(Wكԋ#й=[cNU)xFxC $Uґo.EPG>)!o̠={d{ `"mLqwOw-hnjtKmhӲ/0?Ue]ΙRq.ؠ:HՇ.m $~̠Ie$<y1mOv}BuРf-##SߒI4%23d (T+H@W%LF_U~WPS(ౣ"6iݡX{LS2y ʪk413 mDm4 8*>Ņ\#g^|&m?}]$b]%nAFL;QqtF˗@:~S _s~ՉSZFPYyڦr g:CKrSB.md豷T˷}+Kg@xv[ gDBI5lOxKt])D9舃PhPU TѕK:Ljk0>kgGőzY|ʋ174n4_e D,3 W@몬+ޅuen 2 3E3SP‹e~:bp4 ߮5ɸ:Иr=K#12TzqtQ>i*WY̺G#{3pOmWp١b  PRAfc^N{5n+m^9"5Zn|~*)G̦ pj09!siPSZ'Ї+N,/{[6p4jA:ca6z<1o#v楸W9ZkGbROO}A O{,495Vv!$II@;UHøGAxG libsv[uH% eǿVc%ܮǝ ۖY7:V1VKvZi/8aa{XvMSS)PLrWLr0Xp !쒿iYj;sv/Uymdge,nKY3E(Y7/4ScJ8$tMpLUCfN(xU*:=(R;&/w OSI7T>OYkoI·MYȡ319QLEgd 1~0Nj   臋HMփǼJLEF[0YRVvw./ X;۞۟LXCvCgW = E9E,\͘p'0c9xKn0~u,tu߯nCpd7KBnm7mJYsD, xl/0 Gv w&dgS @ G*ؼ1nBf˕k1S1?< p o>ߨIITah`\Vcm=nV!q\N-FV= ...~Eflͧ6%; &o, P}@A~a=3.c>2sv ?aL\  bDĹXRLXe M2GEW*2 Yq8х*1x^CASD$vSOP$k*q8ٻ:< A4+QgԵ®%vX(Z*N,`IEI2>0+~k!y-#u8&/o(ntM]iHfeZxUئ@83e,|c(b݂@C*>^5g.Z~O3-ЦBUoe I77J[X#2L@]RIEvL?\AtyhMU/$Z(;NwL}O}5[f/\ &0`dC<3CaW*u+Xe`A+>rf+APdbV%MOMdU(L-z* `1yy:\cR:rL 4;~ h>3(-P <6hdo'^tqZ+\ {nGz^Kn _ZlGuү$q,Ai4g#wYzM٘Jfty~K3_S7胺 @6Ș4a!6R_*;-,r бNA: ZoȄ{gW-/ U.9V;tywEvvMUk1>ညVT5kάEC ͭ'5qQKydw!Aq _g˃-z?{ ib:".+Jx$%XJBINxFc0ݟ/8."ꢪbz׿H7B*+>4(^)F= +Kqy^?I`B(rCNB97Y0mgVKUzWjT ah]q^,z.leb$Lā^A)sފ۠4u:beTT^RҐY%NY]pRQP 8[V֦JI-'"9ɇ*3Eh膣"z2}rD6˦ vԂ*XUlwjY;h;ERhÝb^S%`Ƒ¼S#8T> :y {iYW{A[qS?T*ns, Tm_{g9/][BubR[D63APvyu (5at]BD0Q,pbC냣IPjdCOp{8D-=„44- *۳E~) @^ p q1M*wh֤+r*u A|;x z*9]]|ן&)^a6ڥi_?P1鉆 5jRK}-a 4bqU \Z."ҡFVB #Nmģ3H `Q#dMixE Zh5ݙuHSxyGy$Oq"i8}\P{ˎK_NGu >U2xW F C'uȾR)/a5`1w>fr˫kܻeJ Ey} zxО2D7Z X aJ,/P*H >N-u+Lu`RbnVw{规[8Xɡ?LiJ,}YJC0:BnѮ9b zs،-@CZafˡ`%H}=&C!aU^Y-Fa*F3A.T1(yψ=K3!h:#[];ViA2Y8N.$7[ˬ7_ln'JǪ.> y,0i]n93JHR2J7A]:X%3N dΏI⽘^EPuVtqzDM[H`;fU2KQeNήGqvCPr)^JFŰ(pcXɍn얉lGnH~=JͭG/矪41Yi[$T4 %tdl&DIݑ6)]Z'~c`oE.^Le c+ƚʂ6nvfutCEF0g3+`zyi8VxY,b?:6ϜqX8*rjᖉ5C?8rRe#CS Nj˒ >U47:f j(A 9'|Bt~Xbu3;pQ =eO)#zo{W5P 9nU6bv-80#bTތʲI]c9G̹{2޽N Rht ?Aykšd [zŜ!BPqoK'zDnt09}GY](Yc@_Qw6d%zu`! Hi&+ѱ4&Haь 0[9?Vu$[ U#iF[)# UCcfneWk3bAkNqqL#Hۤ!S|6dire;Orᆸ*^"H/Н4Ato Q;I;h 1?=8SV"saY*ƣ6:t$2T>Gr#Chk* $QUBTj+E==}`x=oll:Y:lEt(:V{)a^/nIsYF07aa)#hcBd_]R56ֿ] Td3jc0uE (oh?H1߯8,;ȋ>qv }T\䊟O>GDH0H:HI0Qo5޳ȔPyʽTfZ""#EAޔFU=P ġaQ=z{T?_v }XR,^IĶ_PYNFٝI=r2.t&4Z:;ƽ΀S`<+;6<'iQJphǧPo6/D^ BԯZF.taa0t@b ØwwO7s]8qRi^y7ye(5S6@:nߕ("#q[s-syu]oQo)Y(4)U €3vD=O{%SJ:kjy^]m8WlM͐) ,}r m s/qV`@wPK?2CLmfVusX 5!hoGm*Bs/i{O".d aVr|שqDFbޗB2&FTV;aںPo&j PD('ApflP u 7]uWMI,n($X$xCsUJϤh ҃%x}N*ȹkj{Cܯ,k]kL?zFŽ6eNs# GJxE4?R؝: S[W0%ՠ_̛" CPkvʼGqv@\ %owSq.&}D:]F ?vG&H|YwS*>AQgҥ2;l_lmHGk苠],F4l:hV` "Ѕ\M~E.C g{pE?Qa;;Ztٌ^վ>auRڂ;E||zK,@v!Gguy%bln^kNIF3#J0;ZL9Lݗqn,VdqORFnF5%eHGBl'A% 0EdgJ6o ݾČq"iX = D$G9p? SϽNYՁQoqvlʉ )BHO@nm}кrh1i`ҢQ㳭~~s i#(^v@ VXu(}Ҙ'8 +ܓm+\&s i ׽+QUp<n\l8~٪)L8je1SZ)\BSo@A ([ߡ2wlO}NӤˣPO@hw}uC [||1Gҕ/UΦ,Fkږ>wEl0J@y3צI,B_;JV@pF*)GrBG:7*FSHNUݡ3bx`}-eМbp$1KT 7XMԜp!2Xu#74[zpljܒ{5pFGX3t M?m^PRye$T$OĚ3@ w3_{Ӂ7;'GtDo=E^KYHyJsr_7&RQHlۖ g&)m|sin}X4tf0#ޒ 6鄀T@/Hh-ŀBD^9ܰY^:R.n^xaLl7KB"fu8IǟJ Cc;샃W)z;Bs ̥؛ QW=vhs]s*f߃kQcxjpŰMQx1xq@`#s쾥hT|yL/O#[/1QMTР3pk f5ټ܈֣]8?ϻiVO D $C/#^ e['O:"xvYWdEfBOt9yU6K^h 7\ȑ[*)YńqLNZ DGaP;?b)؉Ӌ ; }rOgxj># ƛc cN,BaB+6wN̴˃i&fl]BH|? }3"oqBXV/M(hyZ)u׍I5Qt} 6.j>p.s*U?x\^<d-=A*gjnb=<A8pPU9lR|ː#."BM qbGVSrmœǁr+)ODGBU;K)f&F6k)1X%<@2Ub$ Zude& ݅*Xž)=tb OMeǯF#sl(P*Sij>ˌw JTD*h\jZ)Vl+IlO0ōq1=0ym`;BGbG3K$[8sKwJ| b8+Ob,{\RmAmLk<+鱊BD?vܹQkТ3&S$ ;^ޡ#~K(%ewd]NzagCz-U7هNu_hOugE2 T! 79*rsRNA# ̺U2ܦ&Ip:Q,nXc@"6/84!m3НBN|0d?((h@$үPB D Mo:Q+֎$>-&hNQ`wž@<U'SK9PBĜ1*MwMͧxL_`?%+Ȍ0xcQ$nTgpr:YMxw,I偞bͣ _!dV~}Pc̆ ꌈ}IEJ6zENqYf)BeL5i$/ ˇõQ]v&'P`j!:Ҕֲ<385R5#6I ԡ9IX pv,Q;"k<~ǕDplޱۃ#LO3gO1E~ UI/-:Ckis&_feH#GfsjDy9)+[SI2]pbj+%|zQSߏ;,pP!sbGy7}xΌ?C%t Zw:2& -٠lֈ4%ORGQPhZԬsc.`'Ua5}Ooy6 n^)CQ>LD${в\o?+eIxP ń7ur391?87C?boomZ$XٹhdX'#JpҲ (d7Z1fT2/n)@̌dxk3)¸/A)ZVSXE79GRhf888pqxkӿ&.]xLto#Xd9&5'359<݄|!QHv& l0cT17~xjH˳dg;L//t@˥lZ{t^r@ES5DړvX )y83iMcjeZ0D&Ցڢx`L%Rټڎ|y97jik23ȹEsYoMø 1KONj)z#hZduʴ;?%aN ;SI}s~_l{O< /yx&|O|FۖIJ&൑SgU1e[߫'fS gZOף̛%MG1mSEVE9dΐ 1w()!Gi>Iw~[[v{a Gl):^;]{IMτ#htrm <\-Jv]hhQpohkG0(ĄʃqA+۵F\% )$H?QO [_}+ ]NR}m:(6Xk:`Şp"<PʓR?bJp!*>y-+//᎛8ccqb BSHREE<-q3;3)`?zB:q\OQc98+rkUG]s1 b BfBg->/^*(gݤЍ=\_@@y 5\? $^{9p{M.*U惡 B&Ϧea(}¾u . w+|c6H9?W:P]R8$pp{J,\ (ejXpf <JU|qp\[ w4K }oS>rtQ[C5ve8 )" 8Eo.Mζ [}[@zOyOU:b&hgϣMAJP'Uz+a׼5u+.!*٥} "drm)8F %~cf{U ?\]x7]&"}6AמZ[RrkP8,j~߇ &1b/Ll|:YEb4dL1}Hkw9eã:#".6 de ɇ 灨=5 zD͍1Z)U2>ewO\. "Wf={ldzm;'&?Ӓn=m$S|_c#Q ^Fo ufJ⎹N\į&hQ(A0`U G:K?T1-(^}d굧 r.'.mO9:+QP[ zMԿ'"*CLڡqH@PO&E"bSPAYUhBA 1śeU:<Evma2&jz yGvs-E?4ac|>Bf pt (lltjwS /z:am?~=odp) {j&CG^ɉD&q%^C MqwTzˤ*,le/Knd>`@EFȢ!Ēu|nnB _sM`~%ܙUӤ8wC&ӥRkO|ze>zh^wIbENT#Ԏ53UQ!oJB-|tN34ӺTzi8n3Ŷ,ܜ7l,4Ĝ vEJ(=OFDqMߧƥ#~Z&M-RZ(*Ow^5.0F60ehKP!&758&лRMO|2hҚp-EV4>%sGoB=i2 +$Lv6샨CN_0-l߫'%$'Hgk`9nۀUER``cJ ]t<˭Cg%O@ Y,1rBV r؇P0bvO0 Y;[l:N@L[|Q `6n~Svq0NMiA Zf \D srC9^Ԍmn=H+k/8ml4+%xz-k}o~(lYc[no Vy-iI3 ^~`?QD ?H y?Zz9Qg5-d9 c)}O|K‰* nY5}Lt>aIr/& g?*H 6WR0R[!AWIEyo +MTӄ.%[ LMLideo1ia Rav󏶝G J2~Q!!BF}i+7c)A@9Y)l$oβ b`~ƞ =D!Rыh]4P,it/ %k0ʡn Q3k Dsd0gF\2-*S;9V>3{ #h1ub;Ϳ{:ޡѥRo(B<79`oNmls;MUo2 ~fmsehrM}Wp}BDk92**M1rC* xXm.{$]v_ _lڷzПj#^2VG4Һ3 M&pfא|☀RZΘrOLoz5#s7fx)寖sQe;-vr&ޥۣ+5AS ukejц}: %< WV"&- D>. UPztL=rS#zvc'r}oFp;Gs3EijZKݽ6U-7;%6doۗW$jv&trTKD-7C&cK,Ya)9Xd]Ϗ :z'0-~Yn?h_e)-/X-bPBNu[pyn<6ДR[[xbؤV2O䰒H '( 6]odw_Rn0ՑۗoNqUC%&e7EqRqa@_6,J7'X13iI%FM/U|myr";"KF>%";CmƎIhi[s;+ {eq*R2m4I -s߮󶄦)U^AWWh$؟4aLl 6PZv8N:D ВFI5 v@˄NQ$yAM #%t*icKX^V,3>XpEw:A2+d`ڶ͉Fx_$> EB+r~A8sx>W,E8S<?/U *5o=ˮlyj1]sa| 6\\?#)W|n1f29p4$ w670)=LGIW' ,wK'$] ss Ɵxf}|a_7EH/O)%'$bnuJ Cq$o=!wVN#8bg}j׫)J%~ ?F6KGƖ4x=|X{6035fuHԋY p n)+q'*=>OGI`|@d]+41Z7gA[6;`k3 bHVovL[V?zXqhVOԁ@㥂3qXBd4wv{nDij q NVpgr6lUs[.![`mY rٶk~-#©pY9N-4+:]#[rt5Y#:<EpC8~{lP2ؖRU-u3Qc1 Ƞ"$?|?}AZfyH3vܞi ='M>qS&f3Űy j6oedI k.]T|•--]$lji(DÆeճm\i);EK4F ZJ1f0.Lƅ"۬ym.=ge# B|/߆K9H&M6Ok@ɢ[QSB8eUgU*Enǽx8 UK+KƸ[Dp?YtHų8j<{#,0_{KRϣ-s1gJ dg4y)͈%;EsJb"2@؉KY/LxžF X"z_~ou柒Mt9xz!@M&`YˤfM*Pb'bic$DJ =m;o*FżjHY ).n̓]Q\نo_e%ekX'$i6ꔋEkjʛIJBxϕ {Wav3 5^@mE5TDMK,A0?fg~]AuDОRDҭð njEM&)6,7sz Zn7gGwXDmRAfAa[::5jUruCS  ~5>-3jWC\jR@9u .i̵wb>ZMq.@CB:TM!y}'rSòU\za2z409*5=GU/X~W,"c?t;}-{ 2c.S"i0ևyL$ʒ6dB:9蚜KdbQa*Xq  Hi1f(׈8U4mGl@Ъq.H5]Fl>ݦi5:L;6e<)_G0d 9mKOG]wj3kحʄkT;qzb~uE# cڃW[^oPvۘSaġP}E8C/LL1l;|M^un(P@.@s`nWcgv)&".6vBs nfo7x~k 6rʤFCeZN(F#Kl+A!R<x?:(PP?彻9JuBdo¢r]\/>y-[]rSBjG8UM =4M,N G^ a2~U={uؿxO0<-31s0/TL#ԄJޙ3sk#~.Q(\-3l%ߣ8P< L 0'Qi kDfŁjޖXW-m" k L}`X)X/%Fp5G wJaL?xB[ᅊ줫֩ )|YUn_ẁbp;]lCƳTq1\?/iDx?W<*!3vF6uO>nk qAR\jAߪ)^ !,a k:@/,dC)VD/ 8qW [;$Y^uQμcş픇.Ni?}u1y]i?" ۵Ք>mOBah=u()DRRljHx6/zQco5'͐NBfWÍ3}^MLv|> g /!N4NL6_q0'S%G:5r1xm]W;wNJ=qo|=AlpU5VةD#'YA{=jMFͣ>wvXa)j+M!9U՜h3=QOϢq4~z4Yg+8\T۹9\$r,3|mhV.l!^|poxJ`艘M:Ȳd10!]-?4YPAOntYJff,y(7d!{$ &naˑph.NhuiyFko:I9^A,NK\ﴛտ77jl4 滜 p!6H ;E]15h3e( rZRcČZW6oD2P)]`[ʚ;OʉB%!&k}tYQQUւ@E)tm\eSzR!Q"#N_7aF,(P !琓S2n'zZce 3IĄnN&:T`1upќ6ՎI5%i$Tڈ$"_Lj^nkY{8Me:a_-iM'|pnQcNt%ًV @[aKCr4HUINt!$F\(i@3kSö .{.cQ:\3 -A{U.\i`T/) KŸ8a+MF^4C'wQ@1'S r Lqt LW2&d}6Ս\$UaI|: ĪY$xw|&O|>x~7+:cyT3|>Uh{`g0-Ύt:hKWX9{ͭup0 AnG2Zx+ښm;{;Pt 6"ǚ! V!".& \5GPVH;;AIE9(xn2Eα)x pIV{Vs!K%d8Soh#y~1B2Hi!|Ql3>Zݺ_(tkJcX_ŦUT͒itF̕CfX”5d@'5)yt%~|ezeR^q}R`jƎЃEI! oh#m:\>ggJVF¸Gm}:ݛDM9̩r6% xֺuL #3 tvͅ3&uJnN(\x»@UE`:05FѣUs*qw j{k6`*Me^@7p%"MR]>8tvSҿ܁ IE'i‡{s lMhsJ<.mn}!„)lƭ^0X~:WgN2=Q۝_NhrكrLUK51@Te&[:rSsj4Mn'RAhn\v%&sv&'=4Cϙ Mߠ-D!SODEIz6?jGE(Yu𚤇y!gE;#c&AL5b"~vv-=Scâed^;ެqa0{_P+ŵs{38p`hBeFDdd#5|q"SqpfXC@"IQ$' zI69$W>qЎɡxͤ&p{1b<)V ؜wؘk8e yGԹTZu8j7 riY㙃dNO n2>[PB~L/>pmK{/`*Ӌx O )% ͱ!myQEoXM1r'@IRZD׎l_"Iy.(cLpx*1Av= XDe M>O1RUtExa2ҭ:6/^ZGVS?nuKiM!Wee,Yӹo5M)HKfHbۢΥz&Z 8붫G@ 4q܇pnw ƫSLdom A(P|yV]:\f`f{T{wܔf Ļ[\h0l]V-Cb;NZ*\͛K0VۋqQN}$Ba |zSI5dLdhr$J }VHe`̢]Dt7bE#Dֈ}(" vr7ycdMOe)Z"Cp}__L m=J8NPhjp)r|`ZEtb&Ɨ/\s79syσ_yy5q6`WhI߁}̓xvI^t[\Yl)TQfP1b"o_DBCG5vִ,?_, eBU~I̙(YeV]wyJJV1O =]N<7TXkf0`B24N4FMGhYֻ1[88jR4 F.#7iekk@-B4|6hzng7͋lYg,Y^Q*P XnU*(sw}T5[-ɬrtkoo?_7[>MmqD}|B5"UX^f&xEI%Y% +\8=EyTZX /(P30UA1 VT|h@.δ;̀< K[؝]|[g6lmQ--L#&XSSƓM񕕟5舏|X\XEڽ3zn_~"BryY/K=mp^-%#wwU j=>_}W[@!k4Q4u?݋Զ2v&䒲vLiv݊P uw [tgѤ\2>6Ԧ>wmwUl1ƵOj[4P $QvgaadfY~~#2+"惪{lIe,n):1}E2Tܯ'̑bR1TTX(1%I.`+"RT63S' feۀ͌2b>c X$@dRa;iDT3Hy:%  ME0VPDE0> b0~3DZ24  TW1[6|AX(UcDׂ\l.0-Qݽ_7FTU鍭!)^(bqV *"" b}B> qQUVEPJv<=k.?;*cXt*,b,PHkWvlEQ0,]vY,DءY9uJ3gn40U FMLEՅ.$?eQq7k7>R)P|\~UD SCV(R#h/]o~v_h/|v*cUg7Xj0]K;[* @rg:.ІQFeOab9<<,G[~fr_~Ytޤch.;Z+)L+-E3ˠ냋 5Oku=|?}@@A ͯ};~.-y Η!c3hDNQhxFy~gfse)bphM.4ܡCj!}ǟ.yyG?>hv*AAXD  $(DH$)}Y7ɍqLv>η.wWϓd|gJz7 ٟU?33Y>Cr:;Y쎲ZgQ]/kiPU_nz_m͡c.Y,/u] l>;ixxWoApx<kkkkkn[{%3lw  (!' W?;ʑfJO8#44Ŋ⯒->٘R[`3xK-%k_(bE#b0UQ`+FQ3=BK # jK^I  "R"UQ9=%~G=[ (TkQ+x_֯gsfLkal#?w>`aƌ.dcd͛#1 ]) 4T,̌-l`ll%:fMg*{jPj(L:oǼf%Z,+<)$b" =e͓)ޗx J+mvlb,0p% [*w:\uL3h(F"#2*K1Ek<՛,w8h5M}&  D8r?EIKFRm,fm*(Dz6*K sv7\I:V~529Y!X9X<(B,;9)s6x!+Ss|}g&mt/fx'kr/y8Y C D$40X,Y*DIM1XyG0=7T=G>a󽥑BM[=ˇkYoLUWa`#)gNN_KOÒٰ76PDxoH$ V^$  #Ca5- h{[-2˖( -Q׃mhȩą3Yfc_F^㫱ه糹n173V<#3)B4YOE!!/s6ulZ_;TcKs[l4B4YĢB} DH) _4_PU͝jYLưIz@4u]CUڍ۰$@ E 2xhgmE`mׅs-PFA""ER DXD Ŋ(1$X< г"H,QA`,DU dT)~y|MjVCvlԨQQO;p"" QD eY^DV+`A"0E@F ,TH`h/GT"`) Q@RPX,QAZ,EDPbA^,q/?˸;{tNng=zr: Ύ[K2%zukбPpsrhasy""y8y@*BbG98@$̞CVE*8ND s*'mRhD3[J RH}ְ)~E:_uӏdd/p4I$p#T3”W S *"Bч`p OrJ?WH?' ٢g`"QD",M-9R9Vu0 bW'+^>U,-jp|@*|l9ry  7,Ix7/,l?ByURF?C.$E*I (j]ɠHR"f䊸J,@f# p)Ҷi(˽ %ɪ7@/c -j=ͯbMn5 Ħ7&SA͢*XIM%$`Mڅ|Â%tmxOȘPek(be:T,2&S4EiH2oi;ughUTPU(,UQTDTE1X E">_ճ~A_M $6?&˦޸xÇ֌5 ^WEftv仃'oջdh1W/-[wզ5A$lld[IIIIIL///e_ssssu]=CCCCkOOIH*NjbSe|bw|* '%~ֶ' 6D7Dwc3Ƞ* X "d^mpUf_~aolԑ2-yܽm}~gqyxnSw?o~ _KxUV,`HAi]nͽu}3YCO=޷]ϫq6^?ka6l6㩸X+uZEvtfhgM}k~3'+LeoVvx﷖{?u5|3<3nJE|I?Ǐz)%!EJ AX)!@P)6i i8?;ݎu7zc{=|qZ`QVuGrܧTVo,׈kM5ĥy/S+H#P#b`ھ|oޝ|9*#:l3(Kk^xf5025=(TSE/-hlWX) BR_jB肄]ݿd f}ό MFHZq۷~{/&ywon֖ʋ5V3_Ӹh~g{O7%[L_V3؋<= I2 v N;n[s{dR|S2~^S%6ILy&4F'LV!QVT2&W~0[60+LD(D 50td&)9e` {j:4ue 'WoRB$Y=/޿gsou{.M? CW E{ҡ[*ag c05Da|tޮ rϽ:M;on˹O/}z|Yδ1B %!L⪉~YÔ$ߐ7ϖ.V+D ̍{&Mm'?f^u4\Z甲h+^ gjeTwҩy6Sͼyظz>W""@#N8BYYBEIH*1HH+(5agq1TED*P1F1~5b5H>7{剬" ;{v-<nrKN3&nY>scѼ.# (D (do?_գU**̞ŏ_ =carF}с7uQ$|7Y#rwxĢ D`W,\WTTfeF5Mjo,To7)^뿰4ox>|V9dY̡BQڹe=8(uՎn QJ"nC[P\ŋBUrAgl$Yj(,䊿~l5il~F{_50Qy {ImEL 6s o_,sj~m)*EٟUV,VDX2(*`C꒘HUTQ)EOƱ{!^|kv,bAis-]7sׄ.܅6dѺu8ԐW+[>wC^]u_[""""6f%]lc?{Y+#eWm#2cFn@逿aoh%4 ;Z XU * =IwՏUGNh'|9>f(78n1/={d:}7Իywu}_V;l yOgS77ݽp"j5;^^kxnOwYxϓC_Ÿq|v:&svywbsA16O`l&W?^W5^GqaGydDb,Ec E^V nw=&[,-םe2 ,bitVP/gB$i?_>vj~0GMyK:lw([roAh^Gu~+WA "0O̽T72Vr&YytagldWxHiȊSP5}e9õ%סpB6>%kp!p}^ё>BZ 5!l3e㏬[\t($s5[9;'la\$cܺɩL=CIw|(plBPK6se$7 ; brñj6(*P &A?e YxUd~߬|4ڻk&$܂6Q F u7hsIYὬUM!ŵ8^_%Rg!J\CDj|E-+a̧ǢoJ?W [l߆5n[JJ}{s vzERuT 0l=E7'8BbZtYP|$ݑ,GpďI}:q.`?ȥ.PXǹ 3gL!5>l[>kȹe5ms%`z܏=.(1[1E̙Y3#5Ycg"$5*UOL,0ș':V^WQL}2ݼ}ry?vݵFQh"ƨUř="I VP7|)g º>tDȱ]WPJBLpKԨR2-qea ¹bخۅm[Ke׭ (U_B)DbTAw 7x{O~Wy:5&gkwzx_p,תe~1djK V-Q7*شǰi^kfR.b+Ì&NǠ|0>} $K=k {éx_M+ҩ{u5ڻAW|˂&>4K-+1AywKUk|v̅^../k~uNNOU\W[ 沾v;g2,DĿ#x ß/&2 MMް>2Z<>Ѩ0` `!5}b'4H^k&=лp>g?ͮ[{棳t_Oӝ=>ѻUrnv) J x@"AbgR}ͫ[?;o<}to=#ͲaK&Cwݺ:|uOw>]o5*5`FkWL djL\p cD؀~*k%DԹEAD^QݥW jsU?6(LƀHS Q]#p@H @J$ 7bJ@Vx ȮR!'?7OcSSL5^>0u5@$ӓQT$iE!0@;|cg&;9K]ng @A@Z)xVK\{]/d@䦶Hǫ7cҸ[,HQ1N@&pxmӺ"Lv$:{(/*)RT-C"G~.o|^ﻋ##"H?[Gϛ/KZ!,Jh*P1V)qMP;m*8aOkZN}qۺi+{YA*$Qԅ(mj!L*%zyNqhlդ䨶[! I( <ǏT{Jč$4JmB*Xv:+mk_eN{ɪ=SMnfM 7ijH2[^J%8R4=9v-.Q eec/ h<^o:Z^X-$rvb aģuAp ܬP[v租MsR7ênA^ݹfu<5s:S{]"U8u&8Y HɕA501ċ;ܥPxa38:niii3F_+o/s4)DA4-duQw] \)raxQ޵О6dle#z4DJJq!AlSڀ4CG#țC1M(Ȯ:eYP: zu7{utvx_bFDD@A;!DKal㼦cjf}^N'v#C+9B]^W&iH"X E(P%i_,CCX>?_w쯃*!>)igA=iϟ%aK35v}:=3VHau3ܮ3B=&%rcH*@}< XdbƭbƳ!]hQz·^c!``(&0KHDmǝW&U(R${L?~ǶZ6}{(ٔb[L@r8̅֬f][8:hc{"wr;XJVܳ%hRZw,^S\F+_;26EP}][|?IV֯^+M99UJj`f#wux1J9w`I־N]u\IĦɔ;(,4H L)D;~ϫܳGy#j<|EhfO9ςz]Gʪz^*X0Xd,E1Q_JzxH4A-*)QX3;\Aτ+tb T} nia`AOH%u{YwIiSV#.+m:553t.45#b]xb/1h7[0^30iׁsa#H5EцɗREe4^3bsSMY횇`jI6s{0Y!G"Q .H`f5 +i:׸圡@dBQ}/ͮ8njVAŕ]Z/AOX@! .=Y -bzfW KSˋTky'mqcJ9<b b@  ȀvBq~V an=?ᇲ.4ړu^]l~E\ dDGѭ8 PV^*Nxf 1)7?ˮF×EHě(zcdcڄ@npA  ໼?O@Su< 'bz6X'XڇLƻP$\+_H:m^z300fv6!oCl6k!Gz;}5>ǒY WyG4Qձ|tݼ{ZKat]I$ny=y7$57*\KEށ6xRZui)U\zTمQֵD _5J==KcUd"Zʹ_uRmTۼMmyޮNg St{?^{񣣣Qk- RRSmo8MFrrs)i~~J+,pYv=e:7l'i,31f߲yVxrigb7*օ]AZ~754wԆ^^}NϟI|?._Ot@ _=~mUO% ,b clc(Adߝz{/Z:Zu~n;mpN:gF3gx6} \Vǫa &[}^\E=Caif2{^ 8g7\p'_M>*Xb]ZR5Cq1B)SŸ`I~4Ho-Y?+Qi& 0BŽ!yV¾Īu?]W1 &UuaYk`}[/Qm)Di X*&L'}gOwKv;GvD}'o}[ M-Cxיߤj,bfv1q<TVaS`L@ T'$Oa#YP@%U[/x%1 m(Iſ* E5IX<̙DSSNNͷ5 O ف!{qyx}>V1o-fqt)}0K]SUx*şłX2*`Q]s0يzy^ )灁#?oIL*2'P2g?#uDU~d˞5죵U[mr\\Cqִ3!TKfoR p =,_ 3h[(Lࡐ-`SǕa0 gā *3&X,PdgVFQBȒr,( Py$xIPaO`d1oI\^XNM H72.)ǠImy^+dv+i;{ YS=l&kMRd5A P( U)Eb A,E`G]H 2x#gsyjUz&䃗M mm=ixnѧR/abFMڜf5D *=p=JܱDX+JYZv*EF KZG`z]')GWsD=:iGuW5c]DGý'P^5Dga=:L1r)TT%^PQvKe&ԡݳ7@H""!JU1*{ B($"Ͽnj{8?f='yfl}7"DH"<=sdO}mow?;j<в)T^ZF6p1|w޾1_z0 G)\~i -?YVUBmGjb/"H) ,*QTBFo Qo)LKPXG5+*P$y~okKEWvVbk E%"B(IDPDDF 0^73SeEb$V+>?\*n+U,j\j3g9z4Wr|{*\?ɉ77 D-gL5!g>ި~Yrd¼#g+,3EN1WD@X( V (,+TYR"EE)U,NO㺹Ͱ2l w2CmaFE{窿f{4cX(,Q~,,c$.փ]eN)mq[}n-տB D;H 4`AFn]K%c }^̄a=QZV`T;]-~ .ӳoshz{ #E6OeU^y?_g+~?ӃpOq*旂Y$ yD LdTEXxDcF#( QR H,b"db E "H/<=ϺB~l=w71ws NowV8 [on-?ݗz>MEeUy&EKx:/q; 5'ڡfryW-ew&fyLWY|\&snnnnnnnyN<%:MKN3.=t@Z@(z'0e`Kjo}UpC䈛jwB @zR f#j0 ,Mpb(>[M%߳Kط uST1"{yt'5o{mU7J<1CF][P`7RRڲq0J0?Z\XazVdȡDp$Ks5_Db,Db`EA"EX",(,V(g:Sy`]?o6.2Z6.1)Ͱ%l$Xg=W/'N 2]2mTB{/*cfIɴ$Z{DuUgh-k%B<Ŷ(e/b0I=쭺) R#uAE~(I$n#lhaQ 0E5{E魚jMJŖ9zhKUS0ZoP5{WvUv:|é(6ekX BEMQ}lƘ&שּׁj)K.niwPl]abtYѾד~ Sc~1= x# |nelu剑9a )&D3RDLG9Eg3ykȣQXDX,Y",@V ,`ή%>Yeҭ5^?|^'1zRz@%p^e$#2Yɏ4~ۿ}-za2_F膳]QZkb*}㲅I#2i5Qb*gN#fW|AQllwoi;ET`b Y/r`(o?g{?%0h@Rrׇ0EmnQFHwvӞocF9g@_Sća*wwN.-,s:o+Kqw#t讍/Ѽߵ61Kf-+']3Hu:X,Q+L8Ȁ'thD!r4 ƥi|J_T+[Jf:*&ʘo+4c`GS#T`#'sW\?7^y ^@DH#`{$ Լ@UUUbQO /O`]pyά3 mcw V_&WՕ }@[1fVQRJ _~5k~/ӔdbX0fdUX 5_[(WCHx\\ua[i-bٳ*֪KS{]H >G: 3_|eQQV}0夆g;[C_hJOz՘wW 2 hܷO\u>iӲTiT0U Y0g)3@[{9jRY7iIfߖ}U4n"Y̔lǭg " ]#ỜGN tB̼CU=vp:_-8a5gM[n%s2w CG}E0EOeԧjaƑӍykƫ#]7]Qћ nyt7763yE{ GI)+맢^qۗm3~O燈]f/-ŗl1;ٻ䝭~6k#2n>wZl0ھ9ZKōﳻOc{H!0"|lY"K HRG"<[P*BpZu ꢻ2| ?0]G˗&ȗ?xkI*lf^||m2#Nbb)2trd8:ܿ*G _aIWui}NpM"kh2F}|"$̮l<(q1P9ߥmb]dWn|KRJ)o20=AF;n<^#7m:GW +znJź %x)V= 6ߟ8(b%5m/HOX%a##Zrl_bjq4wDXF̗y*LR ?jL{ؘQ^.`?2\=㒨X0"{_3wYP1b&wcrV&פC߱c2+* 1G " * gՖbX1i$a7`bmV*ԣ|TX,E"DPa)A",GDTQ@`sػP Z(4*֪yO>?vUbw_7(v'E{)fSF/B2x;ow>n O 1 !3HF0G iDb`KQ۴agzs=ĉR6#7W"!@$=NmF$08NxJj-jd+O.,{'aF=ptp%( >k>s]eCMF k TxG>}fugڦws62gqEDTO?=Cw{=$b@,j||vןq.Hޕɖ6L{DQڋ~g`3oyD H+sgP28\+=`%v(ѣyZk/v_b].z؝ buIH !iL4•k=<).Ww_/7)vYV)ARC素 @pf>*Ԧt ](%q*ROOz3; 4Q^uxzYfvRغo#&P @D,AQ 1EYLIH"MS?{&G>cUA .y 0cXr%¥*” A@|N !l3+fDа`3#ƄօPwW6 Lq$'IT|w`ё7h' i.o (W)6+SpR Y`vNj4&wjFQ0N 'ҚE}ۍwZyHN1DǪB#qIh*XtzTcjy G ceG kdA2jC=9 H36yv;%k_/[֌ML$$$Y̼VlG|[#\.7mslhro.#9#Mн0*϶cR3@NtzLf7s=>G<| [>ߋkD4 "  Ap$bkoUu/۷v<޿6Re>Fk7zv~%ouHݘsl ;_ wt;MIP*nC'2}=VCf1v؋l7#v=ׯt8mmmmmmxno7q~IID4O&Bϗϝ7c%"65FY(/~n8lRJgOqCR@7!\≠oJm]L=n3(.) +qTHvr~wF޶rM v<~?jZ6[4Gp'̾Uikfipfa9vkT}Oe[_Wʵys1HUmuV%1Nl$y۲[{vom3vs˲UԿ].O^UodGɖWw ز"GMvn :3'WF6ھy2Nu~}xˍtp9}ȬG0Os`x,)&^~dJwIq¤Ӷ+-TBoHA~oAmMwoI$7UDD(,Uc***-JE";/G?a(Qd|t]0ҀG]f\eFYX((1b6[O$b*( (̳l1_}/lqOnqrwxd(( D%0[e>8cXHڃWxm#kptxtM*-zD6Fo}/̩q'螲i"q6N(\''N!%Ĕcg IRMPbY8M  -g,kqsr)JQ<9cCfFDIh\ #y$A3-z`sz'z-rjz3~Cz%)ijSa4Lw]`mӧ;={z.?K?38ft\\ 8hl4 jg!(㥉V"z٧TSХ% e՞SRYLAN;2X&nљ!eK{4~9>#c5,c[=J rCϥc@Y14ĉ&<#hTp *kH;AE*h@ 9n%OKLfﲔd9[}yn/\ҋx 쀍X:4`B&=Zn`9j\8 Vca+ ymT 9vb"_h4RO{[X\Ab OadVD "$V*,8:QUc (#DQE (UE|:A/=t0Qq_^*&5m78'~b͉o]xiipn2egM(c)i4EÖ8SBlɩD:EƜZ¬Lxأ" )we|p&҃=Ji֏%.gy&#>|vP!J43d{)Zp}@RA"Ij[C:D_J36 nHx)Fbiz шJ 8좶[olMV ײpUs8TmI!}HH`) O?]BdTEI~G:Mz}$ΨI([=*~!(**$Qh4~7]/v9/)uN/lLyk$_YD@H.eQlyܔpbYµ3G :p%  *Nz=cy_,DLE ,"XDNwg~Vϳ;#9"*>sb(X\JqɓponnU75I6/60ϠTkg:6.0Rb֊2,5XdY(a+#,Xb"Ep7>떺!rOEs{v;%*|X@6x lGWkx SoؘQzi8ke -$ p̺)yn&R7ww 1ff",Oʴiݷ7gb$Ӟ|&Bf?Ԅ imX$YB߶^6S aA@A`UhVr**IŦ]^~46EœȻr風""EQ}. C@EE`1FL9y. Lo~9|bfoPSeIW|7fFLRA(EUcU[yڟ|;ٲ\rm 3,·V2+cCPK'<=>?AHHHHu\I>$o-QQ\*28|NھXDއk@u+&9}mQhPyq g<"A,hpQ<5)Pb0qJ&z{o7?K>ǟp}O{zZ v0ǯG@ P"1UUTb #?ʟ!ߴσMs]^Yr~7oe>\.nz8W6oؿz/Kc0yMvCA+S=Hĵ{W;]BO]_n<] п#y/K a)^}msD Rh^ #h[|{mNUumjR(}Xo/p9ADd`FEdXQYR[~>yFQ~DsFLTm,0ia@@i(=^  <Mg F C+N^sGƝKb>kh,6׸cu0*{r}5U h[ @D10IBEAi|:3@& v us)?d~=gZUQ.WCt F]dqŜ)LN6o|\}?x41UQ>O\'*1v4dM)1>.pma v6meޟ D!X5[lU1Z Sib_ڸIcr k"ȊgU[_|90?>зD)4 a ~C*TTQbУR:/_q0ۛZ+Qc.Df3&}}"'`{hk]Т=%PS``_|?:xco%Rr flM:Ze^(2]N8œ->-Z=6ZG0½GDkpV>;_zOrJ,ĕ$ a7#%N-𱰁?oϹgl=Cs3ןgecgqv.JvӃ%KZa7s(=T!Dh ys^ 8M(fwTac3;u}/m5 փ|:S/mpf9l#S}B_5PED@D@@DH#qGꭽ^~nr2Zt&o5g3͵`og_r\~#]}iɋjw&f>_Sp9MTtꌮO' {oylKdsx b~3\mˋ}sNH7BZwN!TB NL ϋEf4Y}~I=qIZbRx{g²SB Iɣik5uسy(cuE5Gy4g)C}j.f'oZ˦)Q5햔u"q?U#0tk}w:[Ĉ$_iu 4e.1kv.TA3Q.XGݟkA0GiyqRTopԸ#b9 Uިbݞ#%ujf,*QPb(AT5h'g^w.{+W5m9]ܘ\>?ӕ; J @\gሦH ٵDIa((F \N{>8XzPS Ւ#3 ]yL+ijB❱Mx͒OWGYGS~CA"A숑vWEv+;_HWNYo 0yX+ v9n?׏ %dJ_X&F ,@XԼ:B k~sL@sD^1,!ʈV U"dXEXXR,?{OIu{kX͹U+9QmoF8ĸfy*FB7h4 Ȣ!V ,v:N8b;񽑚&Eg>GSؐpIB1 xqa: 3Ia""_6vm0D6-ltCWYDR,`,eEK^fHS E(1D”]_7m`PЃ]XAkv8Gr]PC0Ї=3 5q}Bۢ7螝%c(OvdjC.sd]/or;%rݻfv;O;95lgIT DCCg&*TT"rk{,@m"~OqA(w:+Ǔr#iZz/fzY#͐NxC[}Sī0=V w8E3ߟ{U 2;+}nؐKA-` [Sq1؛v\n%o.'&aeAgQD !jP_gǏ6zqj]ab )J/qo]A@G[ZB׋M uƃ7j"p6e0VtHrO+&?;h_y6;{8f0ަ0U"+XPQH 8yn#k6uXGoT:!B&r>Mv_[M}z= M09Up&^j)@HK5nzR $i~0׵`?sI;H5Kh6.wF"U{AR.rxwU;4 (pQ'ƷWo{E:J .%Ay_:=t=Q1FxDL/In @j`%qhzAΟVeGj&  1 X'~SD8HLd9>]̞YDAF--qz3ҾyR1 }YO-oc3{O5~Oooіl "Ȥc(,AcX$dTb1bB)X]QUQXQE ,QA`łDPQdX d"E` *E!A@X"Ud$$d#l?Ã7Xm{p -TK?3'-a5CC[Xe.t504pe @j#L!>ͺy@ #2a?s_}y>;ҟOV5B* #uڮDqdr/ѷ۹;,N}hT46 QPzrpE, DZU$cV<)|͗J 6|~ȣ3qp7cʎI'H9[H'[l!0faΡ=NeV?Czqi`Π.luwwRIPĕ[r|=j3ZEZLF1K"֞3";_-7S|&pb; mmOiU;M,PNF (o2bD%S+S⸗#4d ma6`A ATAV EYKlQU"an> 3ee)PxVɽ]PR:bHf;O.敖\m\JaU~TT}AF TcGz?wo6 gQ\9nw[aY%0/op=)x.trㄩX>T}k:Zܖ닛b=ZFFFFFG񒒒5Nw|299} |Z. f h|{}^NI=8-6n5=Cͦ*(SI !]tmŘDR>qF *DbA(E((2 (h`"(QV*#DDb(QA",XDE"*QE0w>En坶װXJS" œ,-fR^23+m)Muh{gWϠh%^Z`mvb"tㄫZ## ~.!)8!I~G%{O/xQ:uQgRB@_*9U^H҈ԩR9tWzѹ7_BO1lޗD^ȷ RC2 T*Ac q~WٯO@R\ue>|W$4ǬtI4%_$@:HR=iA^),PQB Q EMe0Ԑľ]!c\=\&py/5H>):F.9WeIהŔ,2Z,K7o;30srEBK6{y5ooWSs9H@aOǞ|-l[_eάNa&9 ",>N^%9 ?g2g_"G+tI)NaY9j@B:kda_u\݈("5rsnncǠoY<mɏ#aG%:%Ȫ(XȿxԒP 6V2!$S?ecJ߂2aJMH& `[-HK7Oj $%n@#X,PQVnGRyMOQl\"#YT"`,14ar6XnՕ7 Ϛ-*Kb(D5X4V)TX/Dwq={ϛw: ve,1aH$ H( FY_|ZwuF `b1!/@9y U~8oL@L-6c/ nLÄwTɫeJ=0T37`d*K0=aQ0F$%b.HRⅵj"̕Rɑꋗ[i_"]V/r_b6\oF&oś*t:ュ K|gPMzC@.Hbu뱫d A`42TPwbj1ḺėU$”N'9ilâ6Mc_YkuDW}f+"T`5(9&z' !ojSA EDu_r`ź2t?*D_ 1P*EX*꒕b\\_Y2٤00 5FUF%M A E XTb*X(>u h+9X^ݿp4DG]`4NƝD寈-(h~>QR![ S Y|/}*{",8'@;5Yasm,ZXB ǀI(MIP~N0#.s-P X2˒.6|W3X>E7P[Sґ!Ks"_#2QS$4U6% v_ImtS[1&dtQUܴ/eYS/dK9SU",y\i2;OZڿ.hIHZb)4znld h_=z%W #=gQN\?/zroT2RRyB<.2`0#z{^`>۰(PcA;\.-u\lgjh.+,bqQ1OszM3a}Ot[W3x=zyɆ?yFh@D""@7VjaYu,=[ZZ/Ay:_i~w- {nv6l'o쓥{| o@q8N9šcQrtrdy|cAo2Y[ffϞzujZ~{{{{~UoMr;9}a>#Ci8 DȭYٵ Z {rD+lÚ#P &' #i4XЉ \{Fd:\t&^3MFkVa(F:t g6c=OymFߝ\<|[:ˡf.cF@c$ nʸ4hX5? GWO_+`03y>7QqqJ#YS#%?JpVeiĪv~F|l,Xifi{핊>t|/).w|\۹Θ[jz7Uʤ7葃ucKwSۺgQ900 mӖ?.omYnIoô݁ڪF"V0TEK~a_ÆL-EKKZ?bbEPo_wji5 ! U1b˩RYZTU7agqonV=lEEX*HX*c25$B65jUlG[i5왪MȢ=1j%I$+T(,0ŗxGKptJaЉdc8 Pbam0DjV +UJ E4%%=VMfw9uV5sXvR__jʰ"SAo8w2x! *>ǣDhJ ~>D( kgUG~X:}Բl$d%OUuѾTŖ)'QKAMF"Y"6`rMqj5Ha5RPP;nO+_SLm)G[}OZ>a>$PlϲǞu$I?](A$qQY\J"JS5&]!2 uQvi9sKj]a\ w)M)bF9Jkw"Xtg X^.rޖ>,UdzVwTf\zQ >-,@O@ R/{_ MVJEFcSn`1D(EUX #Xc mtgSRSTC*|+wNSJ}DPQH1X,;9 ƱghIfoe,lԑ izmm|-cF=1T1TEcDDLEsjw 3by3͕(uW}@€ܶ"б"1TQ@c@R(1`GsiPR²wB|?V.h+F!NT0(E2Z>v֊M|DXnY]YlrZM>PP^\kT;AEGO(zTnDb2wgcj[5Z9Ȕ6w6+K"*  (:L<rk^7L>CXWi E8 FN(gsn>Sku0Q%#Ƅ.JFZ[~kT4ykikýx}v']lu2$'''a}ŭoA谕.>6aLIl>h( ~[~wi[[ۗogb5, ay?Ԙ6)PNGD$Cٞj?Xnصt6߽6Qvq8wjq;#`]^<3 PX(*DAUb$R*X*P̢'$TŊEPUb0R"(PAY TcEb"D,,HPV"/?gx?zV]Ȼw>g޹_ ϟ߳-<<3C4O'㦸}>OEӳp6? ax_ggju\K'Y)>P8dtd<1y|DGM!DkrJ/IMIhrq]tz$5dlMJmhCԠ59t)NiZ3J>6?c 9ǰiW6H Yomhg掲v=5iXx@g2Rb4 '"ӗ[QCz(ڋ/ 57n-/ɇ)@DD纮`,\Ɍc%۪/٧I "@_gqjZB__o9Ȉ*ʼnA egouyk?JeVH@_c}/%bMKqʜrI(B 1](l I9hH|:yT>|P!mvs~=n{r_ᷥwW}^]!|ʏ ` BEJ77hZ3p(PA N|7^OOO$?)A͵"gu|^polmb-/=nY$i3\¯ [x)`2l RFs * ZPLwZz?+^~$vgT$UAbŀQX H(D%ƞ\͕}7y 2?m4F9HE" ,T\H4ks`MNq2ߡڑmtHPi85ŬB.Nˆɭ`*8ܬQA *( *7H5j<[kc`uKei{AT` (AMggC߼4*Mٳݳ̋.`ȒVI$|KgqMuC}YO*+K6f9@jfGǍ5EWHleRAu D (-1LNm= 1g1K|؝̕4fiif+.wW\1]]Z8||^FL! "_,aqO6_ YV/k=|_lD<"B8;μZACQˆPۜO5ЯO_GP#yjQKG1{Oo^Hx!ꊔ҆VBؕ^O{&u)jm :z=SǴl} ظGr 4 hإgD"c~EMUU UZF*`iw)YO3_֊k7fv5NxKWBw*;z4;<V'݈{׍c:.oɕ 6OOIP m^|-8<)s}PDTQgeTETE>gj@_7u}~-"sQZ^[c*(4+KW79x^Z-DISn RAv|_PܿӁt*|KQ\U}Sl,+}7⼹\das'gڋi&Gocdp>ۂnj`hbTg% E 53_9^QЄkDτD99O~,C$iqM\,O*Ա[еԵȲ 1 TEX1QTQbQAF0X)E"V( Q"R XAdPYAqc<Ɖ Oh^aqoV5ԽE'7렩A @"iٳYx4TmePEď'!VrOpc5185 bJT=I[ i(&'de=]%oQaD`#()Q6G|]vLi١WPtdF*g/f27#we,Hk4z~&v B#~Kz%fa$zZϷ9^&C~+c####78=< ly΍^^!OQP|N7tRӂ W+KۆMК_q}¶Ǫ7og>?N6ѿE|cX>?py>d5io9;gdED^pĠnr|#`ү^>Oc`IBEI$ZGe/ɫ}=noe㣮")MLkM\WƲ+cgiLyske1!`m³^G Xi20|tFo)Tq _-ض0c&IwXf|9ӑ,測CE'jnV΂Ps)T^>5R]h8?쯃ƦC->*Ruzɝ"H0\X-)/v8l䴇8tfб~>}:BQ)B[TӁ*cAanwnP(͍.}݃"@J؂< Ro-nT*iGV|iW6/ۃ5ZNMh :fm]zPUs`I_1j $!EEyɞ8|Eό` `ސH |{1&@0  1b" HQb\o/cW[l}i-ATX(,PR `"X)#[nW|7fx4t,tXEAHEEdU X, `,QE "UEŋ$EQ"`*"QXQIU)X"b* ,GN03 WOL'v(;ߠКEͳc欄,0{JUqJ,Un!NZj[?_633k`RjQEE ]uү[Rc4PDױ<_bC<"әʔ,[*b0=-=~53_큹n=qiR,Hm|Ske`sWSOs0[Ԝ0aQj`L`# Z?^˥%Ouz>0S Co+qfKyHiUV,`,j!c ^[ũJ&Z}%pۀc/#55$y4nA3(^R{V'Ԑ,̬Ez9jZM!#}*TH&Yc H AP  1QdbA`I#R2Aa(# (EQbȫ"D,c@EAF1U`W_oDH&R X`/@Sٱ_Hyy\0^զBan%1)x=}<Yu5n~h83i(ӟ=}LRddU \fnae5 }@"2ziY. lgJL3[%+^eZR,A*8)G!txryO-M_Rz8Ynw44=7 r)<9ৌykt5T惉zV˵m?|6iPn;KhhPkIys7ªѧSSp9tN^hsirh6H bA`(A (  HY#SU҇Y3 %p]Pf^y\;ɹ&FCTW{Փ*# Yޟ3?|o=dz5;Tc>CxǚdU93vye~le""@*>Sل1AHPX(" (*&T1bU2,V QUkۓ_-ާuɛìa =)+#|+3}MB1Y B* rF0řg?goˑt OKPF@b!"mq0\Sw~1G =G#y MPh2QSمQloEe ~ rOx!wf7slrQZpmMDi D}y<%;98yk~/x;ӷJO̍.ZwnǙk?yTU(DR"X,F `"*1W'~>m']=;+.Nxζ/ w6#CioImr; `½c- 煼q?_WUsᶶ=k1:z,և9:,$CUcp@ <I'!c/GD6(NsqQ,O)e!_ܚ_kP%J,DRb3pJ^j(!&O%.}Az0.@Py~a7`^sXƹz!wpL+($V#=|]e5YtZ758NoՇW,~N/'P <` /TV+o8g:9/u)J:,eVL!eQ(c@a 8)UDR+A >0bܥϦجpzai(B092RĎ3XQLF6N5ohʀV)+cs9w/d11wz}gyCD=K'"w$}7#Lf#j) gm\qHOQze /;? ,~[EP-(H4h~WEq Uf9Y[;_;)]Z4pb a?%\XT'J;k=_0Fuz7LduQ,D*BAqJ-@(B0NJUSH={[oDgQvZw?pkh9x 4镀3xV ޳cͬC'^) t3=l&Une-["ud`!Qk3js`ܼGs45R f=I6Wu7K'4ŭ"W%5GzeD҄K*F0}+Q.4We '<$ch~s21h)m_K C2KbRolW>ҁ{ G3B3˯e,Xh:~eLmJ2;gZY%T⩯-Qr1$/} 7h4v gDD @!.KitK,'U2h\ZX!*AK1c۞03 tӚtF]+rfdtdLy|(5Dsa+2A߉Ze[c~3^{~RiRq.jbj/dಹqe8pճ (|@_(c2FsB,ehl'x@Q MT24;]w9USt~*04,/lcB3iMlyDQ1J^Q xaw=y9J7gՀ8q 0Ŭngw|1za]jYGm"" $ ߐC劬ײ 1XMh^>/oӿz{ g\ٓ5L [o~;><^I|IɀBJq\]M!S;X0j L~!~S1b{DH@D$" 2A>~g!Ϸn9":mkaA"$D! 2+""Mz² [S/si|P@dP4uf/ OS\;7nb&}A$[f^A=2YnY-K fU)49V`]}2K/#ca1{bxq\"Lh494'tҠJ.[tV!qFy|0 1ќ͙U&_F&!JM' 9&D6 !;TC5q`JRbL[_o MRh~Crp܄%>"Qjrթ#0 Zy_}'Wʂp<metjۻ" Y~a:8_`lwYwlf=E}==N1+ ӡQg63PD>Xm2 nC7[q, Sq , nCE&>u6!7ovQJi4rҦRQ6Y GK,=s6_6ezkN[>~ߗf:;F+2$m+^zw3]Уlom1o^Se6-m~G䴙\U;o^4$Z4Og%Fz~ $e{{O'`' uSIוG}yw?W8gpN?W"Mo9D'4HY3sH/.j,3$)AMme9٦LAk (v+~Z&GgT|D?S+{r -51HN24C(`/2#*N`g$7pi%wpk4UOc8 o :lu߈{) "ц{1A (OV?eY؎`(= F2&|( :ʹ#eH\,ɍ`}T 8>u$3!@8 *[Vwe D4>~?جG%9) wD`v6(f [Ng&Q@pj aN v gy%{`_o"痽10 i 4x=afq]V3[|qwVw`<6)O4h I-|~9%ׁo9 * "R;+6ݗ @п_ZRAj)KÏ0ZW#DŒ >hht.* ԆS܍fV ɯXM]2ʖC IPuX]t>MC]{cfWeӰC ЀzݚP=%Lˣ F(Pì[0lbgsFK4{ iˠV7p3ݏ]gt׆qRƫҰfao9< D~zdg4 %*y8#*Yo9k_ΰ^wJFy6w'w-.UCYcg1{ZERf3j1*^= :(,Y㦲2kOT^Wӣ.r5^eypMj@.]j) FaJPͅ Hm.HY Q햋Ua}@GE,/9rQޅkl<̻yWW"X7F M=*EDV SAqGxD@M0t^u}g]G/97sI$cy7Ïx6s2DdA",5]y[fa@Fa@ӯP*T@ۖ' ;l!aZ]iW'@6UOдC{7m%8ZJD9,$^*RPR">n r듇6߽T\$R }L @H"$ 0q&a}yMZQ]) @.Rf!D8B+|% t齼f9Cό7|&rj2=;'vԭU@BHSK:ez5-Ev}%M[g7_B\ Wa _{ +]^[]^xi csT("E"ބ3b" ĉ(o}c\ + E(LH2mdթ@Ih %eZH)b,sA~3kYv3gb^g2wJjAp,MIñZoPE;kp/K6҇!O`j٠v7>YqǎyMp vGw@?phVxUάvgWs,0X?o & M W3|V;kLVH~Y:6homgDr/NYsJ㲱\X?_`j0g9!q3G6QVN?]^~|7Ga~666붎Grk2yޤ`o}EegQQ:?M^6"!dw֖ܛe+y;n:4aZ@ N1<)@Q /dTj]c~oho7gt<ǁu|q'Tp: !E:lx1J@ޟ7ulS#8[o6wW[384-ΈM ($(0.M! .Nsjt%5w%690S0$Aw;vgڷ b̍r9Šsj4H|)u,wJf6;LfNѸ#IVk4M?joo*r/Vz:( 1@Ȓ҂*@dZoBxi&DSh)Gu7^&^ "ՍCЃ18ѫŒ`?I.3H ?'4h zR/Y=q.[C31ōih*Sh.ĢHGzdxTFb5~( (?A'PMXb륔H74\LW=%B#UBJQsٴm(JfgMu~}⌃(Tslu.zKW)S蚃MDȩ  YBH1#hPa`< ;.qm5{Z| BΤVp8$+}&BS.Mb|355.uwk]ĐH֬,@i)O.lHBFjJY]m{;b"$"!x 4!iRT m`rp(*@# /I&LDMXb8 "A! )C"#7F,y`CXk\9}6b]RS _V ;:y2\u ݕ瞤3s:Cɗ;@Tg9"𱶘yBp|?ڍL6pݝٝz4RVLEhYZ=N#DDYElKYHOVp;۸zzdoLVMVs==>>} l Sk[^MRrY/g6{M a N#e.Lmor7'''' +lN?W!NPl7177dȥ: 7{*,o,UظcC; ʡI.jeR355WSTC9xhqeʦ 7 WRgH@P~^}xM1qAhj$[>5*QsjAK)H@ Qm*Z elJl):P} ҃go[3?VDϴ/ޕ}OQ_J(}nT*ҙ׊H{NOyN+|Ї. #wBe?ʻ[ІYm[7]({MA"C;U8z!u&|f@D1}Ҩ!tT-(-G''0n !>15QW_ߗ:yW$'哃Q'o3 .S@Dz+X"$W,;q/SӫE] 9RЂ(W'}x`!Q*suk_5ѻ/cU:٫laVrom0Lq)j*0 aN$(!`ت},;~?#ʹs;5T Bt"A"#0RDb(1b*H,`D$2BED`Ab HUU?M;OX?E*F&-;󠝅 %@O i ~-?'=E!8/Ώe-_ogv+v{?Gܥ<܊l:Ƃ!{-,c@SBoA Jfn^ޡ?屵 Zյ9QH(#QHSaDbb* R0I{];KD 8Bj{P4! tsg WߨgPݴihXFN-R]"ɪbΦ<@UX(>UR V"@ "ȤbEEPUU 2NjNuRvOo ܿ,+5>Kg\Ud[ÅW5ҵH,"X k[?ZnР5} ɫRqB%o Q?N/qQbtܘh{۱RK\b۳ Ά9gNvy@ ɀa87N?sp g5"7h7ZPJ4sDkXﬨܥ&d.jʮoqϔ)޳ipȼ߽mQZlD␀ bt[j|Rt=S_}t\I8|VRnW!׸(LȕGL0Cݶ.|+x Dw 1X+, @r$4J,faؔƂU3mzk eTJ* Cam_^;$0I_raD۴LauVcMh 2|]9 h~1߂&S+B `ES4!H ޮ >8֏O^3YSN5՚Dt 1YA|ϳwTՔp|\lL/fjFX-` @T !!Dyzq31FǏgb$#{*LTTz:0Z @B D8ez !lҿid8:.U& XHezVu:~{! /|96?oKmd=[ u %-Oi0=T~YBE"Hk }-/u_wU{exÏd= F6Qf'S'nt% TOu1;Ey,.uLИJml%-H@(|&֭rib7 20 ;}Ƕ,1O͊2JCc^?H5SOgxbLeF߮){Kߖ[2ha$RF.]uhQaCiMqePk;9VREI#l++v9ܴ #U|[.JY?\;ؖp3^|EHU?ɟg9f5Q '0113k{shxq 鐐ILy7{HW+]7}wKG$$$+tR28LWmf7k=[cvZZZ[[]%]6 ewȸ'N'qY5 5ԲRå )o/̲e(ⱊ`)4=nrO9=mlI?Z6.ջ W " "@ 4lO0&P "M[[+ZmWu/_i]]ʽz6[yWzi-> A b>픥XTu^vWnKo ypXOkOfY\c/i9}=7/4:l IJRtwݍfy; a |;^({hf@~S3.{ڨi{N}E0EL.Cs-E(P9_u[~_Yޯg|O]ࠒlN2EqY8A;jpK+]% ZrN$'!"0o5Eg󺖼c/EH(%)yv(U@*4Z%F+seX<@}#>U+u)J[֨uivx.6"*hDD>NE4!ш.s.T#W*!@ˑ ;>^CC &Xm8I_>[P,<[ݦ-?om]Xf@|]͖?sTo ]SQ+&$[_y.sLܔD<N^g.tqn0UӲ(<01@CK'k6lf 4ZBZudkK(!n*r"T @;6}KɡY2I%Ǫ6 }Č< RP!!Wm+̗:` 2~" Y'I$ %lwb@8[a2{ ۲kqű/p,@D & J`cц#t>ӯ;%t1!J̩W(rQ7!^6@gV0QgQ(ηu5&i-S Y#؛U3j8`lbF!7ƙ!# .beXo2-cYOvvUcxP* zrb i)+JeVXD6%n2 o'4n8ڊ:F:qa0˚SL4'b38#!k2K@7xOv DI'R$௑V ɋȵFy( hVG iӎcUo){8J]=){[h| & 9g#|Q~]7,q$@b)Hl}0/3 ?Νp%cq̏>cD!Za6p/ NEIu]I`Y5^U-ѝnx}-=oQ,b2}S:) IórjS79)tuG ]d?wԇF}VD0eټLQhEyTol- 2@3A"st܏mI@B+ VMagmoFbf|@>TWׂᷣ\" gAe(#EU47/hmHu]z8=.g>Y %i}aDVJW"-sf=mow\™|1˘rFXPo8W 52*tQGp B䰅{:0`K<6َcKćJE ugm忧s(;E\?v|q@SJ~gRuM5JK(_gu2W@8m]F^LTyۀҶ z%%2t`S,gl^C?YA|e9: ,>(d:!vΆmlc#[dvew0_4nC_FyfyGԯP\ʶzk f"C޵ޑȢg䶘9>eO'Q/ UTko3s9J$VJt`fZa]6"I򮱧ov>Oml) Js0J·b&bQlqJ c`N!m~d2 \UwF6k0cC]6q 2]Rp2(\ťծ}њFť^F+tm1NOoExzXF,!@HAbWLw;d|s|(I׮+jo?h$l!ccq`R Md`F\?>Fӥ=gnvԱD!"~adH) IIbo ׹{>@W0?Qׇ`fpm,;!2|ߋ,D jh$@dwqi0@R,ϰb{z;>5ڞ7= .<( "E$X$REY"PAEz?Pzs*>"(;7QќK}nW;o$k $!-A5]cd0_.~Dgy~.ʳѣ~~~BBBĻ٨hhiG3npǟ$;\j"?`1^.|{og eޯ[Y@$Ib*G 7=nվ3gsgO_+At|/ۗw:tNϳyd=sB.4gPrN;R o1Xg Kwa<<['Ӳe?yt{Aҵzlr,39_IݝVJsnzUywj'v:FN㲹,?/ovL> }Z^y<^z;/umn'7ޟN= _J2pM8n#$[L9*K$Sj7F|eA3l ?Qլ$5R|/:O5"G)2h󓔷1$j,8މg j4Ć5Bꑢ0 DJSMNفilVSgYs7ۻxxϿYMSt˵ZqVRٛJQdNGek~5ӣ^MzzSv(:zK(¢RfLvĥ}zV>S ٺ5#odlėl/H#%(D-9zMHHrFFa @6< b;BGtzK1\y~N<)͘996#!f𺜝;z \>묭sq̰rm):Ʈ^R3:-2ü KbF&#L$*lgSo?S vٳܳ\>RKYYkJO;>U9LD;o c@,Zm@m=gfkts} |z]w~7 |vsm8[kYlҞ"^?RJI` E1{QРb+^hߠk{˾wxT ΠƜ;oW,KdsO3z\ٵyfg~Zۣg,]_ew=djyX.yi;;=ũ+ p⊨ҙ7[k,nPYC4"ˢռM;|W"?~Kqxzr2ˎs1}cm<$mMm[X᤻hG~I>aW4jő'{n q}f$zfh*r٘"Y)$@O&L yOV'\ 1j48^p▻٧6^.}ibE1/qC6 2~]dy ܯvO}rێG  E}'k9JI Aoz2uz7ޅ06 ό]nsҹW]}iiQź.A(Ho0 PKo]N#=nݮ~SmogPLB6-+o{嶣IU!WNjMs|lhr UHuwr_/E-#G D{~IO_VN%'u`:)>u~g_/7S-*T/dz#'g7eIqqmY-~uޓ?8g_2!ޡf3 *(">M`qvlrḿqRHUVb@#yA"F(D*g8ғ(.i!;6AQĈ`fOR2 C??(i[Blz5mY[?"iJK_ pMSӜY5>K\]ٗǿ[riG?Yz#'Ǣ'L Ni"4*T"r&<+4/«Ā<Q{pA՛Vdn/͸_E"y 0*60pF |w{-_x?k6^kndD @J3x ^=y>щH HQ^!ǻA+)C,=l0x.'(y!TZB*Wn~e_6$CS#zg2k _PxX%dk|ܮXpЬL\|q",Y8BouhdXAIcA`llt,f2T (TXCmEMtt7O.-K6If"Zhn.޳M`jaPJ56TCLR:#46tFx2ĢW>(sPѾMO /8zqj~yu>D\$vy_WS3? ª|v׍5^&JJJJK######c+eeezkdo=]M .u}/_.䴖qMOܤx0>mo;< [q?[>ʘpWںWg‡ @fv_ϻ6{+D<ޮVtv>^os <wZ3 ~z7_x h$)ڠ yDo@s-w}cU[}>]9wvێW֎_c5ͤ=E|m%>g}8뎏W;f>Q4n~tvǡ0!@' 8rǭ{V]RfQR|$C/dd6П6M $M(]-!?II6RKί`[mdԄ)HJGϤ)QlaUQafHwGN4rR0*wG 42N qI2HEyM+M/@֔6 ? BL$ $W28"m*wII3(o( 4N, A /Q)fŽfx%sX)R}^,R!{P-0&P=3ճG/"_6G)yjfVDl"硋 o}5HԺbHzR'hūp_Zu(S npUWDd*J ?EF 1ݲ8:$(d/#b$łL~ir} T^PKU@."DªÛadgsy32ՕbFs$:QXB\D]T~,y(U"SMiXXYOh[׵Իsλ=WoyM<T?Pgb"7$Ĺ G/s8#PG$ih)O{T;vyQrAZk7VPXLZ(zMDUdޮeX+c?Mf"IyQjm>]\VYGc&Ҩ;PȢX 7ɓ ~_hS 8lzڂN5h+cXB` XA7]]m4Y̓}؏9]n>v JSb>vтdNF?7nwyر=an.C;})FUG7Ɏ«bL'esza6CjAʙHðf'uVbW54er/J("0( *v"%Q>$C?,5Up{v%8;բa}n޺UwJ &8q{k\$2{{S0"sڋe58GCP̀$gu Wm%(krG?V~ڰ+Y;趷>mFv7͗[h..FN]p,$ւ)&j* M4 ajQ $ ˝I;KU݅]IcJbr+)$#Vk2]VuVwba(LS`@WR![Ys΍&Zl^˦ `ZbяOBp5GǴ?Ops ^g(ژkyދFʑD[g"6<<ҙs0 < R/wh*Iꈵ$h{=DbIn}NjM~&JR}0lj<`w%I}uٽA~aQ[< &*iN3VaCn#,1N ]/cM6؏ٟPg%O&{&{EPY,!ʝ+7o yP7!X6tF&W oiKsX!YSG|QXЁlOOBiŪO#v˽u: "w+Smwkb?9t&>Di{~{_8L0KʢlשS.4/ QB0ZIfT Yׯm浀O[YRu:`G*-(e a=O2 .' CXT@(>>"i sn)%]EbEsqhk`$"a"E$I(XX# Dd})1Z 釂wSg?3lb9.c'9e/xuls)#"H (XcG'`n> (Fo~1LLڮNQAmfq2(0(lGs-Rhh g+w ,+%ef?f[}RKbee* RXד~oh2wE8zaw_ݯaR_2r#,PuǪ! Ҙsϼ#Y6AVEɡ!Uxz:4&('4H3OT2dyտ2yN=vi$X^F,21Ir@}[N=}jqŸb( rS٢,&QKE*KfzlN.Ӌ+a:ʨybbj9.̒EAgQ`,kW\v?UۘdFu)YYJd@l;;B߯|0sg%Dd.wӦ"5%8WN"ԂUW{rso}up087,HYQ|ph߾@7`«ze@t|*m9f'@Ţj0(:VIH@$ ͏ h)zS:P…f{9) HL.9괓8ަ]ZXK53'ՠϽvB p͛4ۂD>>az;? X*7ݧQkm\{Ym׾ŰT YklXz;&l~頂Ďsp4< E5-f즁 {Aj^̿ozǯLEt_]* ,1PH+e!eȬ*4strQ9~4ӭTRF|w˚2U_(KcWN٫8,oz4e1RP ɆgJdstd lK\jU# b@Y;c]8QaY.)t-U4N I20v}HE9K$@7JHJ3jܡ%f>[8.LY;ִӁɯ1v3g`.lY`4.Nι6{Qˆ1{݃`c,[_ucL }[ڌI1}g?EIWų-rI]0$Bc+.V׾V.dAZQ2( &}W~wSMU~,z'̟İEQb <`Zpn`5gf'J}z=Wr10=Pm‹ˀ"WDOeJiB8f|)䪬૆VXgI@20&"N}fYЗl'A). KRd̑lժvdɡ_hb[\Xy³.mG&uMz57w us;/IF͝s.IƩԢin_ rc6_H`~{ƅ<2[)CY@*@ 𛁠_% !幾f8CuԱS4X1BUL:W! t1T$`N|y/JB꽐˱eZ[2Ѥ׽NLHd̨ -VUWYF2I8ּTuP4[M/%^x9!;gv#nd|dnaSc$ @ R"=JHbUMPIt_צ:Ŋ/b`u 6ƀp lKW@>,z=yb(gXfgDF UF(SOLT>3z Fm.U N޷?8^d/<ɦfU:*3O[~]ѝxXÅsgM/? OZmR\͚N 2$$1S!e^h4/u0srQf<_qCbk2X&.h>¯H,Z#T26$xvNt󚴛>ELi[dYQsզ'}Wcs%47![-x @%@$F0g|~1icMzn;viS! JB]|Ш9"B01Y{SQO%9Uu>Ȥ\, Bj?V a PTlpwVP?G@8'O"p;Bh:P-?n贸*og+B③.w(b5q)|Np dt<>ή h3K~b2[ƦtqI}0;t29Gݷ@ן$";>E0X_xwа5@+6ZaXYA_@/fc4R9Gy0\|@v?[qZ88 QNDD@䲐1T)18*$SeIoS0A¹?O#_(g/4'ըJ^x:ݣ7iND$^lB-rLӋZ_f ,"RB((3;'3dB`"S Yd '~fq@*eMr) _ rm1ĐkIBc{ 3Cj "[-݁6:C3Ze?7(X{(gH C \,7?G}ׅ ~3T[}z)6_J,^[$MN+JM5*o`8ڼ;{R󧥡 ;Cs/=3dO]v~ߖ qL~19 3'gK|~]ZWwKh"=A"-{ؕ;վu:rz@%DWdvz_ї|FܭLU2ãe m7Oz_O5|3S=r#zmǣѾ_/lne /]o =Y I B@ERXE "Ad@Ea dHCiߍ@1W \eFٚf7c&QZcS~t9t `}Ra}kF>1<Ō~mu61QØu|l(o2{,5Rʨ #dU^E)|,(6J ϖS2@+56pUg?x.jZ2| =It#NR6@X"Kv );vYXNg?:;,LUTiJU5H\A< ٫+Ka 8Oo^|CQ(Ilf2㡉{'wÞdynBxt ࣴeMORg59~Q#L7/̓ ibH:o7:5Ia5Io؈aQ%&1'0 ׁ]&k=չP5mⰲ_%[5j{[sKDu 9jy<裧4J!{ Aq}_}rT{]2d p6+A 3~jtݶF~:+bimƸխ[542Jޅ%yoo vp^@ e.y3Q ۓ(fM8ϴqqJE7wltYAGĄXçyfPϛ]ԡyxt9x'F!eK"9[km"AF)-Sm.u'&.e]toZUדQUt.\@`߰P'ƣ-tY.~L|KT!Agx}Ѣj,}W!}'=Z ?4I8hUhyMz8]SiLY4fh.?X%g_vu"̨[b. g u+٤.IoUtOX1Ja$J4*x =m!F3\$HE)1ATL&H/W{ V_Dt?,UzPGui OŚ" \p1g[d+~{0jq(TG($n)*9? E('e%~P7X; [L8%R#* dLJ cJpT,Nn9d sPc뾝.}ZKwl?ɌtƼ~s_0QR|}wJ'c='$<6拾jo211m kE (2b H,=OݤU'Rܯ9}۹Lc5L#v( ptk¨xMԒ:KYfG^i t!V;g,vEm Wdַ2uN7, jdoRF 7&Ěk558'1"w(Ɋem:-^fԪui ެ3[Jwfc J\Ƞo'_N̫-ت[B-q+t9㠼DžD=eܚ+|IA%E麨{zx6MJ!jKUSN  X8}YcuwV2Ft#&#%f㤺mcw_Mw]k4B.5* FpxFuWRAPW;(so{Y􀂺&@`B6LV@'&s(KgAL UԨ1q_~=͋fEkgKI+z%}mLDZDP5hҐYP82k93=n\IlXB`"Ȑ dCBh,UfCTzEɛHGf?CeĐH;_0@Ȁ: =L[NTll9Fp$d2o(}(0†۬0CG 󰞦987EM￶WwuT n iA4%A`͗Ik\v0 !N#jZTpa-nz-F.ڹc ^\'}S"v7=6=?= %%#y^MzY Yr䯩>AX3q͇QTeG"z'TPu: TiU8/n~kTȢ)94GN}-j^&ąaPBmP.m.bQmk߼q:Sm_-]1wFmmtɔn2agUW-5܊ w0(6RY3 :2Y1i \l)ٖbg˱g¶ͨʀSJɻfHi>߱1Wi@5Yj9\l+vk;k)F֝jd%!A6 $3ɥ)Pcq7 Mxӧbv! V+ӫj+[fuG1n̞3F:3/#ZSQ]q&WNvQb?mtƴyFnAN3}X\>bF\-?>I߃"<FBW3'yM#EβL(Sw=YE3{^&VKr6KĔ vDb4ƽL׫XS);l@TVZb2, qJ;"7R0!L$6d(^ t:݉[rǼ#Kf lʄ.E@yBr)@C9C ̢DF9jhmNDHM1TZP%&Iuu :6+(Re b9,!N5-|F j!RteJjۮnRrIܰWlX Z_vk{~i.Tɕ $RH;MSYlsKW!,:WoS5n~.b |Za% =BۺKj*֌TmJ7@pca&vd({U ˶1uWvHnW.@r|J+ 8!5\f )V !zέ Rd3tU[fXj5HUrub n,%d 5ؚ|` J%2:`>s &ηeP&ȸ'-og؛sc4;zY/gYl:7O4{=6{d$XEk;n%Za9쥨…\=?"qoպvdy}a,b7Wf{'ȿ @E17<#*h Il̰}LU:"-ts߆d;迉ZBX6dB au]q+CPm 8D xQ/mp؇8ojI[寣idh5ESpͶ+ajd88< L2lYe:&N\ 3(I .ć]5}$<.qEP4[pcSpslm!TTdo69!e2"3!oiFt@(Y*PGauv^fبjM9,sUoZ<=qc 9Lk'H:m඘mV2) .XlF쮧bAnNhs*, gzpN4c,/%c?jP!=M (ۭ*0 ]3\P#Fvl|3vUUAAb+a-*ЃdoC&ymhŽbA#T1Rrt ϱ" V(x_ʱkQF,|c"v٨PEV)y*`/#c8Q+f- tX+ؘfc̑ڶ e8$'D @WF gV.`emIj/GCfX.5 VvY!r²x+Xx(AS;6UJTFj @Δ4Aװ<`;Dw3hmDGZ*zucgLJ$fpBJiqO"5y5uTPR{BUcd2J0Fe64f*\(\ZQ^Ti% 1Qj*L7zHV|{3EbW` 2L ѵY @%`*T*^)vDjv]i.>kpa'UٕDlcSh"^Y`3*&\@i)ZK䠴Y1Ql}%_ |GkmG-qmegZ0(MB,WJ1e#p, Bov"Q2Y@,crТVWޝYX) Qs ǥ-4%9@DPdõ@1Bhٍ>c7 LZ9QҠlBN)",$F?ͭ2u݊3x A$APIIM-ιwg[ KS PDQQ$E I$рW7:d̿4/0ps~7˳Z{)_ tJaIt u?0Cxg0-0VSI3MG}~J<ݾ~P|՛Ӂ=ܽs-&z'5ڄn>t泌kd!m]6Gm"Pn}42nüupϧy*s|fvʹXݏ*PJJ̽tW0J3Ǡޓ\t[N9tYXt1m3 qbMH$R;ٔP1860#0̶u,[]PfQ>w9}!||~szkt los8uB=FHA 3`\5Fy }Snjf(<9tɯ|[pt BG[9 q gf1Эdu׸zc5,s1ȘY-m;keȩ~XϏ.ŃwGm,"Ϫ'iC,@E) 46 SpWgX 7G(slx2\CܪD'u޶ѭ[Rg*o$n-gwA:O^>W.,; uXѫ1=zd4x9E\?h"eH|ptPmn;6WzXgcZqN,_E8X5}m-^E 7l-9Xɸ}b{hMu"_@h ķH`EG'=Y x:ǷI6*>~Nm1呟=\ P *8$_}pT A(W@z_ڍg[lB0ÿ=/}OJ8t2nCbk ڱ;|#urC8^&X9leHU! @X+ [p3MR]3OaL]CS<;102}45!\2oW럲n>~;}'x]zyAM]ͪ9AZi{`C)oJ,a9WvOyqva0[WDĴ5䁖tj8DKoT;1Azg|9*F#cG?( K_0yQ;5+BX׍ԛ.ßx@ͬii4R>{a8nsb2b2f1fi2k\_ZC_L)xWp甏!ͪ-4.򴯩vnX1Pskc6DOL*uZ"uj-L h}9@ċ~_ZDBwC1r'?z$wuZSb B"HVCX2 $1` S!!6zuW7%Ž^ZmABEqNL &aEZ*.jbg0@2L5;k4e}0̼YJWoB ;9E\s/pJ eHhzqE~_l2$ M׃_#MFk_~^$Kc9B5&(]t"i^퐚iCw} [eC* nx&Mg,ȊJ$ ת}C:jyK 7;0 9C`M_bcɔa; u/4>s ;z=:YҙZgBI%D G]PGuX^M80V8' 8'F=ngFf; 4G DS9ZMF ,%0&2C! lT Ĭi  Lɾ˞@j+ɡ%u*\3<7K)DH@t )2?ZXS6IQ#^Ɂ0VYzXZ`B2};6[*K+mWkU ^l<~0Y@&|J^mz|~ n9/ѕNk)ߕڰ b>TUGWoi^)oIp #i2Sivxp <ŬCCyVmjaп{w{S$E0AP=vl2+W>IMlW(ؐETNб~ sz D7B euꈶ^qrd>#dD  i"Sδa1U*Ԩ+8; .0;ar98gq<]?I L-}??4b6}xQP<x/Gf?ScGp(TCi}OGA41jjʘOJ1'.2f}SD@:`v_R;TeW\'E,:Ӌ>j"@1%@: 4zp"n-FI,095bNdK}ѶL7Emy*5^zo;jaYeԆD"5G(7~gNVR/Έ oVM>,q)^]=f˅Ҳ<&˥cI H6q LlL*<@M2L\"L8fl Ok~/0kxðLMJĽHeak6R[p#0 (R] @(N痥R> VȀ[L_E H aXOpP :%ZA@XA`S $Y&!_5Ff*bV)'[ȻEem?y}\S+}D@!Dwdvy ugvE:96gn`O2zG|Dih>ZWW៥/|a/dVӍ96t ~&@C`A!1̅5  }pzj}SWg_$͑d 24{e^7^}_*Mɣ)vf4԰+xjӛ" {IRLψM)ɪgG3YRȸ2(eW5,@B KH3ݜL6k;ПuiBkc./7gM(:V[u(0"|lTg]Eo%˰C&#WaC@SQ\Du Ess "Vt56 :Gw= !@pQacM>8~?r'NtK '2Ha.|wāW\CְEk@:@ H {*=bݱmAJELdUt,$"˲;fC$CSz{p΢CYJ`svRA}QvSW_L ?;^d:'ZzeRCq+D`H;]VEOh?kC}g:M.qꎑ1NPj}_Wu@PmUAQe!R\uu t!Y Ą;1aZ"<8 *6A FE(DfpHEcT,Y%ЖQ1e2sqdE|ÃY%w:y7: sHxtA9rNB8f(_Q,D$-]hp.d@ȊjAeTp?7OR9ɭbEN;i߃(S&L:'!MàUd P.E9znhL<$F]D HQW>*9p&q;[RVp`k ( *dA1>eTJgSB]ӿlBrw?ce &)3*pP/ h48_ hMk8 G0 %< L3_@rGi};?dX 75h6wnfznisA!%{.K\wñ"{z&U@?__\>(r@>R>k} ȸ`VZnyw&]Ǒ~iYdKn35 ,giۈp3-0Dh2k#ZMiV*T2nzסofOo]':ʸٿsX9UJ͂" nAu&CЎ"6lx(7XsB`f"ҋȣLNJId;W&r1ٳ]] `ut&/GtD n N}{D KQUDQ/fH8zi^TpHž[pȣkmbo`>_B J/"LT6yGOMϤʺ` 2'L1UUgMeԍ&Z؞"DE]n)ِ6^O/&Ҏ>q,7끢bvZoŲɑYMإ)خ%ojJXu,v{J$P8]JZ@K}"t4i@CdM3Roe~<}GV́k{ 3bQ|"ZGʿd#-EmZҫ۹<):VF칌-nԂS,vFD֡aZ^Ȋ QP>_GwO/HW5q-L{ *0;Ma% #'9$Wh!vu:8Г aGJ԰9xIuβ|i33eh`~jz] +yg;>nmtzB@%4upy[ቆz9;J- z^<ؙFϱ9K !5_emi`2. 륽Zu_ǹC"hD#ψF=U;Jwy6ūuhK կ{-e^P(oV-2HQ[G[Vho[9E?D'g~;'SGХ" Q}ܖ<iar- PM Օ_\?o,9u9R>3|Y3N| ,] CW[?Qp>?lvcc8 RymG3: hF ԘSҢd_-$P4)kFR|ro-TY̻WQfs`T~$Gc#M teg}VqT%GGY)ݏC? M=flۚW?2(7+qK/kٸN{SaYc UJWs@KhSNz8;9  xDN0hІP~wƴ{f^XU>5ArPWp %)`Y>k2w/n4dk酾uE饩zDQ3 { Go3K8bٚ;>(p`a{PݬOi&} c[5bAPc}xƠ˅&Bѷ`iRߍ[F[b@(⻀ P~ĒdeN˸5*Sf"3z7ѩtx1KOOJDSFO*s n!5-8W # $V{•^tPNVÝG ZKflpC`cr ]k{U.C q-Kb~xCm )r?K:ͣ+Y ͛:@tmq%~hY\Uw,7dj6i2h{t˅Z]_41v:$t H@<`^Dm?90IegugQ@U;[_~j^F%7L|<otևy7KI8u`e-Xg}MgmyЁNa49pR ?~VF(2qَH[c@i 6Ҧj*<[K#өaD0/e"n~_&\f:dr2kej7u1"ŀ`ıdaUD1Iv̅1n&iC'2.WSbTC8FR"  XJ~;?2Ch]$tޜ&R1AKkF L!ɶP~k  bAYt)1Tne]sz^+P]ٽWXN,}+ݲTz , 0R:VS(Dc"j EQb MM(⴩5R~z־X&uQՈbM첼.Byz7(JU7j*LjFAP9" QRs\Tv8ե7X()( @"# cZD 1PSDݽ )CjΛRU*F!uJR XT0)TA(`DDAbCM| b *EƊ-To+Ϫՙ`A[ z͚Y&6&t{gcwYǗ{,;]IH`! ZSaȗ"b+܋YgY^Ft?FDbɓ$ᲁ (mAEyT#O{;3y H_[f\%Xb-~5"db* *W"Zbg(ګaF÷;r4V30D1 E`4:Ȍ Hk)ˈ$_-_2"6CYKCfl>?>2&z:Ch;p8* oeYYf ,F{bIqAٺ 8l&rYƓLT1*ٵ Y$)XEt@:!q@ R*A@U`1E 1$]!H1Q[@, BlVXE,FaբYҔ UXR*EZݭ GN`U/in bT#PYHPEDE3luX1f66T0fUPXXk3uaL*o(gV A3; 0HH٥0AC:X`mRP&z&E ͷkY3ҩaArH E&Phi0x݊JF!E)aAWMQM"-$bKikN]C.ɵC THΓn2+ 8jX,JA9)<`Q8z \lءoTp6U )GNظxJ1hx@Z4FkታU\=0/)@WdQІTBD וxj {XL6 (Ҹꁅ[d|U$~3mPP2fҴk!A6 h!eCb3T" 83mDmKȌ ,bccݨRwut"UͨIE([ YTY*1 3-$A `TbD2AEUPU)*JFonݖ:|^)qr޿O\/d€^LiM'm˙.Aqrnd FR|vjuկ:xxbsOaQ\MKQ@wߓ%oOMO;:i&A1l u)}#F̐,ʓ.xF!&7ҵfm:Kk jZ.qyeS}ڔsrP=T(aW*C@R%PuB9)ŕ܎'#RquI+RX{0֋cv׊ s}z>*J8zs Cp4)OsGG񂬛hnB Hbv (*?TVb_IdixaP.q{:/#  )#jnVUL p۹Ha꽄XtM,Tt~_^т+]*aP 2itU.r ~ a5O`!??4O(t{|+cDϰ&r#q<܋XU$XʂA gm>iܞICaے 2`j> ~?+黟w^ۍQ6& x&thLve2_&<ƧChTG12QЄ%Mi%(A`?1 ߺ`F5*߷ǟwo< T?1uGki2 UqoJB(Q3wW*EuH U@?}n 7Q7#-_13{y?c5)+e|^"qKtx{_yT kd@xw[hہ5#EX1hs%e0!,Y7O3bf43ǷӖ/&߉+Sh[wMSr ׊o@` ueK2 @ D:8% ӳÏ[e?ǽC^msgtƉ"&Ε5Amա+ď im W[3\{XbvrE{;>|'si/{$|GqL/Spžvp\lIxZq<3?`o>e}4tH_ꯕ~>362LxGtUu X6ڒ^FG BU E QCNϛq&ԣE)蚶}nF9Ş*vvڙV+Bl>̮":g&A6ΏJ~c}~鐉r5 ::=TױѴs+ 6+qȇp͆Z%.D d;[}M5sT!xn `be{ .nz˵s+LD׽\KV(%C2Xʇ Z6 *,TMX aeVXUE T^ֶtP.^]hys'svbI҅Z:4\ kIrQgI97x .BJݦP<3ּr4MN+ZPMn-_~q4{~Ċp< W]i]y}hՅP@<sv"7?;"|F)F [pZwL]^F6摀J3Uw:6w"tOsm&Z*5$ZWH TfEgEvU)vB R{}ӿbBb !/`y^fٴcD zf|i^ &N!9Ss~nu|۹cw^_y}/"M 5SsrC4:y &IT>N9|gsjk`~ Q0g4qndUu-o'uqi惙FZA5Na9Rov9gZu cئ&9=4UY3uu0syLxfwFNsz16o4CZaHDmd>0ϸ뻮7qoW26@P*"I=nw;ÕiSƥs2Ǵm6뇑G0GLfOzL B (cu, dZTToZe "dm3% u-N}.Q9 4H*\0orJQK .޿#@_ TgZkڋ2S/p.2fbժCO_CnQB=zҠFQzU2b "q628n ҁ_(P6P+EڤCmQ':]y>'V!\D$b3n׵2vl*1uPpY!O5QFyPEæQ(]U_,TJ6  |RBםH{zGG"XmM}3@}sjbsq)3g*8"+83Tba2#fL+!C2dw 0o@*2_]I)3Vu -Þ.dDŽٖ鷂G?fpn!o׹ (cAاKT`0+$rK2tm'c #f-e%cuR,C-ߧގ>;QbOoQWH!Ȧku~/O.dWAiS =^ۅ{iR光ۆgeهaWȎ7 [#:Pوxqz 5|Zag9f<\Y~ڎ+R@M2;$3\@ &Ym9_A! D]h5\Q?,W2 Y65h&h-_1ޒDEU>LMR`PhE j"&ʨ@:DgtgA yˈX}WJvך-zIp-r{/n}>O|}4{f2SEήWyJSnr}xiӹQEnwݟv>owG' r㶎e-wFs)Zjb/>>{5H]SJ*#[Z+]huxOx^=9e$")AF-=Uaك }d- noetP۵,ukT$JM]w{5ܯs+>YUn|܃ҝ 5%,+w#w;nzm@u{J^d'֯<Ͼ|{e}%`)",(4|{>@}V^von{\u{AAwꎇ>ozaij+*}x}<܋j'Yλc3:htw/Eٓ*OOs25K{7wDp} `|4 mJwz{mϮ:snk>7eD  `/uVr.{O==Փє%R><5Jpgn|u}o8l(X|Ǐ]x>^so{}{gڶu/\O^κֽ@EgRkӰ*nͶEiYwnWۻs|4Ai &i42hL&ɂM a11OM4dф4ѣI5414L M @&! iLSMLLF?Jy=44O%==2@14f&zmF&TO)4!@#dhGF&#ShhO@=2d&MOf m==C2?SѪ~hL2HGQ|Ώ՞N33=!ÿC%U%U2EE`*ETX8ouuUǠ(@ND ^Y8߽ Pӹ8~7Grc uPk0CP%'krku@.jАަ,_N)/ȁSՔ˃3^6Vg.e 0xakfQ]ߋGo] f{ı] i~E/tkNσ'{4ɗ ^ڭ9ںًc0R 87k~.GS:6omjCa :uwC!Rؙv}> `P0)Wi['v(V &qɍL nC _TC@2 }yY1P̴8'χ:O[%>CWyW"nD2\ r|qե[|SNqܛϞa|Q 8q޸읠;駩M),} TzMsr7JG!3y )OĠ{~Ϲ^ϕx.Zr$wLO|҄qYUlt,?Ӎ8/eK(u6fAΩ rnّ?.Crlw ݖίo`  >`| `E\؊J${Lh!KBZKMUU4],EvC̩b# e@ҹ`->8Rt؅ϭE9rĨHwg@V=y;gt?3g(rCB@ $S1[gQ*+"Oi&Ƽ{^!2uC̙3Tn.&/&ȧڂ+S4* c.:wcRw[FB6^ [tf@x޷/4ʀ H(| 9oY@QX1DTDy IHH^g'Hu7춝Xhe8X ;tac\l=s7q^d`_ÔClhJ8I55bL;`J>!s8OϻA2'v.@c2꫼HHH$ 2 , U(L+yb'[$;%d%ГФ$&:`l.6Сa?>(Yv'g ),m:yMx" i8d9mпGG0"-[qw0%Z@]l,+ZfV DDDG)cԓQcgk\]65=U:x`D #[Ao8Ss# c;~Ytv ekU:hP2 raG?|̞Oh>6)tPJhӝxZz;pHɁz[?l|sH>D8ٺG$D0 >F(dw{1G}`iaG& PBD-Bĕy,qP>@ک"@ h^,J.4+"P<~h+tE6 on)JR)JR)JR)T@+ZֵiJRPrƮVu{}97Ⱦ7:3GWPY:e!TQH*}' }u-Ϻ FBٱ^ t)M׺^JlѺ] &+[~FE9m>uuNM9T C%Pa;b٧۽VM|kԁ׺bY{}{&PFz8G7 ar EZqbdabSJL\]8__QQm *Hf|2qc\.6Ά }SXA&BӋ6/-VUsV@V}#Xj`RqBƉ#5@UUGfgWTa>Pg7ŷe9 S+s u9m+ي/7/6з;` :`ڀiݽP.mE p[;#B2Qr-d\; ?|E=L].(3``0Wt΢H*ox\}ph)lPfdd `9% o^z0( ":e!x{϶ 0E}׹bJŊe/>Ip*ᨩ~6h8N4RڂRBx)],@@nHB*p _sQ!RwM $>W]D#bl1BMb$DzEw1B0B1#Dc $   V0 E!00N'V$2ChڐeYE @"7ܐ#1g]3ֻ̨F\IA20wyy 'ዡ!f(} Nvܩq*SNvgcˣZ╌µiG XojV I}Rw Pz);H ` ^U\el 2F@K2LH4kףi){޻b- h{ܺ&-X!5i-1g \CMX6]^|mjA= 9)ZPچQx\:Mg9P'̀2呈>"&B|o!4bGy;~ewvoƝ8)j&.sO `YpTҜNE6,FA@+Cy#j3;`g~|M m4s~ytL$yGI b1,bJ:W'Ov>g\'OQ#m_";ɪ6~bMl |>+š";M0 #}Q8ń0 bk_℃pflq'B|^,u vGjƌlcX!V;ʫǹL}ͩAS圍}C;6WE;@S9-OH}h$( Hh],x p$'Cc"(^9CϰWwc{+`WU&YhE-U#fT^3:3γ+&Azbrc]<:y#)gJU.8ϖ[-d#y~MsnytÓѷ np"U2 (m+{Jb CzeQRgÞ⪣! I&n2tΎ&>Z./#C6aoZ3#!g)u =StPf'{]* #77[ E(5 eE_tw@3U@Dmf*A)#_7<18|d4:Qj2܏ -6|g ]<fD|GDwIf,ؗq8ix$,U0/TO֜.Om63X)PǰYInʹ@~?@) |=o:` w@#Dz Z@Z, .m@M}߉R$ { U&*!iz,PFDʀl:^["haYhD&KO00z \i<:DEe'Z !pl;Oo] =yi]׈!9)]{ @FcsRm^ll3\!VxwV'Yr*%*AL1{ woD/ҁmOPy`_ߝXeQ4U L3;G2SnSCq&#EɧA^W6(Mzvz5ҺY{ڕ]6|ǖ5q4;ZjqwG ;taz]@ J5 *,d ~ͦi[g4p7n:dtv; p6(z3'XFe'5 ײ# }UBIsh Ћgm?3µW?\No|:ֲA3}>'D^-T;g$϶>; Q,a}Ϧ0lsIuFB2V}_:̈Y Sit^B^xxaӍ~@p|iAu۫ѽ3"g@ٛ`DnmqM5Z/S:M,;evð۱ICBM{ѻ+v&4c3; a|.Nլ^7h~__ T^-mQ@jTk7p׮-O:(OrYdO\[s/@ECSFcj4>O3>Ɵ *OmϲD:2 ;/]'52z"Z %@@Sg=f , "33`=)F`tq9?@dh@!s jJثqHhCSm͸4G{|?+J#SBL8rՆeӚ@xi]P7[=D4F!:|s,,6vwB@o,V|ψlRj6Up0 7\6F-N>p_Lོd64c?59Π8nh9 |$1k퐻WfBd7 }=_mĭ.!woGDd^ ̾fX25#egʛ%FB,p#g{A<@ ([9 %glUĵz;;2 aG]s6Rz& e;2۴%PݥLV2F5^JX9D =TW@ B ѩ"d"n<+e a*RVˏ$_Kq!"5p5q2b"Vb0:r,YJd^[2 o2<5k fBg5p@x,l#Pol[d<ȅ>vrq0Av wPd\Z{9,WGv1dI!.D9LW'SD{t5Tn2>я[nā8Lj؍[ϧDEի|pₜlپ@ET4GowC[+K^@̧yo)I )'& +ǣXzط 0d$ulDGw  RCW$o@t\UoB :oBZ oZ!LI gfX0 #q;~hBhǻ]uRf'X4 (숩(P8Kpyw, .lx[.V%j"i̴M5/biZ+J(!eNcѧͨ$`Ѵ03C=_bsilh܉i-Qvݿnb{zˇܪ(0o H"P e`v EX.5 BQdb5C+NB~A 'BJrjx3l6Ǐ҂,Q-* 4`5W!r֌;6q!eh66sPbHvЁ#2(E2w (zijQ5ѵmsS!MRZjc,NyR[5i3]m (:ùpmGE< j,m.D>xV=4U3>%[`O#`oB܀,^tBDe8*~ R"**GsGؑyd BR`!vr xCUmMܿ& yoO]ُw3# SL.: uof2u|(ƖhZ?X䶄xqo+pT$eKösR3/i;M o?A1GyCӧ'&d}i֓&з*C!) ̑}܌g% IJ R]dHB3~vc;9* M5>20uZGk0a[ŪbJ*Z#.m+=:0 єVl@錸.}mk=!3rh+aaSv)-QѤ 1X!5EwEϣC7Eq]"ï+<~ _׃". &>ً ӀiAc|LY23pB1..!&2# 2hv!]2騇]䟗v aE܈1 ؋i7GAw4ʍ#} E0iřr  3җ 9F2_DҔAY?z$z)I=մ|"ҍud`Uh.PH(+A+_~w<576b6KWb$;4 smtq]8ң5YqӤfdQ<[Np>\˗n#v߫8!['+֥(A&5IhD~.ޔxo/F Oi7 ' Bz?>D59[ ,ż@ߵ9١kdMy vA "̳Ӳ͌0M{g?FFrTH3"3G8KN:oo#M6j˅U3l"CSAhh˘t @S> l--nڴ{8׵g\F:8ErRI |b>j ORN6ٸl@~,1Wo&E5~811c JTD, kշ>9;uꬹcڦK|9%QG {`'~-5ҋy xЩsR54[9VNDv /\UY}v}r0̦ЖI)-3sX+G׾ޔon1 Wm'OA!gEq5,xzw{o6P> ;nf`c̄ Fwƃ~@SjޢUb]p@4 [-dYljXIX˄9ߓ֫|x)|c4Go_6J+sJi^&ey=#y5v<c" BBR 'lzlRIkWhVȶ};lfcHluVPFq qVN}r$3xOTqcy2:zn(ە*ӊjN:@UU3BcBohYzi$ 7HE SNp k9_ W37Xnqpc^(ﬦ_Gw$Se853*?D* 97L=rz_au|XETaHD.% 0o,np#7qw|<}^{vk&hP&w9!#mA*2AT,66/EH,hU!iܖjm RDbdC0 jY)PXFK8 `F)G*\1i̕X^V4YQ2DVqn2<⣸^+õb! =tlH#Ok`‚urUr gQ_KG6zt?.Ux!/t_c.OW9K".Ey/v$] | `  'E@OAn/ qcy4saGoi؞-]ƈrYpW7A %\p շ_}o6^FOz_燝{wx=]?<.[o7O!Nb B=M[1 B}kOiqA}aYE A?o?em[j}? T>f"hw}f\@@`ݳ;?!x6)'}}wO?u?)"w᱋;˥[ߕŸy__?t<ʉ­.׻6 f?_.\?Q H?c>{sjrznQ̜!jEI6Mp9}_=. 6z fHA@(0*~?ĽZ|u_gǩz"e@6*KZ7#糂{8dC7h33A H0&ۇ͕3^O_x~t~%h=ۄ0I3́TGc ./V?x|Oz6X@k\SQRO?D{7RIF3@0 G>";q(XikͭYK~U&TZB!f`9`sQP.b332]Q~_lBmdKfsZ+z1E^AͳNP+'Q5Bvah\!IVﲘ;eA['jBbwNc4j\ 6*W[/ :cʯL[׃醻6xtۏpMPgf_j5$a$DB@Aa#J D@csC8v̊Yj߀Ve0 e5e}05¤̨8D̤\B Ѐ+SAMe4^%Nނ} MF>T0RxT9RCMhУq)t4p+Iaŝ< a`;LHm@`l9#=8:Z<ɻzȚiәux'CHh1E M0}̦V]x!8k G)1+ȑ09D5}.zVg`dX88SVrFKd04"%xS7Pȏiv17) 2F2'}R-=Y:i)L5t͡OAI(td8V{R^L4a7K+[cwqNEJ {,iz؂ZH7Aj.3 ]"B^eU0j 0܆9t$ayKJ8L #ɏjpzu}:v w%2{O÷v|R@<\P7F$a]=7uҀ 8$.=<^tPfe"dfEUpd;t(]3ovfx5akT;gPq@m S}ór|LmKv:+JS0L)={(hټ>>dP8I&c!WKv~L҄8e8NRn^_Wg2Y )5-1y8ٽ\w  h!{UTizCsX..YnXU̹, U*0xv^pb(݂O['.c [;0&DېMٯ}Y%Cxu:\(`n08h21xtI`w9v H"D`Q H223a%% %V0XP*T${9zS4uo0-*4)N˲6SCa3KF6īT"KڮQ*+UCfVTT*RR84,Y{Z<=Fwe BUC0f JOnLeC'!Ǟag`f/[M΋Q[ ג H E86U˭``- v$HbNCUZ]GOb& N[29cӯog8rBb2ZimJ]e1.$#`* Vȃ: d(Vs# TqۢL b.0ZXz &p X:ǮbMfFDnb_^pZ JD|XᯛXkv~:Q)GnJhͳgc4 ?ScօVH1yw.XNޯ Ur8Aȁkp8Sߒ]20١qe(8M:3,R t:Y:+kV{9w: % +xcl}),)d TRyʼ)D]VTb"B &b%,.5`22׃{tt9f ^:{:>c\;2ȉkZ  #Dc"KmV^]2½3RSgPD@Lw1N!XD0mâqRX Nʯm` u_y>_?KO>,6}},E; $Rfn%"aA;`}Gv(5#۲PK8L<\Дʼh3;?y>+ *ly&]aJFb$L\YnɥyQrs[REy63<7/he9wAv% LWX؊0mVņFu'Wg25l˾_4ttZULh5j%V Ѐ+C^>[O [7ϸj,=ݶAE ڪ\n\{nHuaѺD)ܗ^}qfYcp"@nO\1 q2w=Cwx՟AUル:OTdR0ٕ`vd; 7}0KJF;jPN$*-ݨbl\@x&fq' |xywɀbOSA3K(f0]@$!PNOb¼x!mMNWOrS2^piDFЫb:HȞNPqu4\ 4Vn! J\`-E [C.cS"ě yB@ EX H"ݱm !2eGmmqZ("p)Cf|SV"idƯ킩WndŸ~t3Ȅ.賵GІ4b1IGPeҠxX6THlk]ݦwF9(!0B@Jx;s#,GsXHuF&EĊp*``Ŭ RduAdKKBa#6$B]{Y {O fRYdtjDN;7;+(1$3z=:h{(ɹy|  J6E˼ÚnOB`$nnSiFV ,Dn]l͆< `kjZY7ѝvjn=3ǏǜCMbA,grqtNTeׯ[CxUlfNB{ev* nNgO&Q ӴfZ;h 8BsV)׶RUc?V` g*Cz 𾾸iFnE|;=mmGWΗ˅usZɾ.>6GOG'/KjvnuCͧ.!d9|HŪ 3آ4t'kU HƲ B{O|cے?GşWd+df qqXasljö[^!u"VZ#v8T!u!w>e u\IT;3dοdق5ԯQlYzT5 3ghv! {T7sk_4Spʂh f v3^ {OcQO`~T<8 @:g4x1IqbEގW^Ӳ~)T+4cm.YUѧ QpR:s1/t ܔO(ajlk"j^ ʷʭǺ VRSf3`M>{.7o'ȗnq[}9}=2C|O<%kGM9ڇua!up0"1N!fZiyE[,.\U$+ J@F=ܼ؜ /<0Lr/'Y;4me.' 4q`:T)RYpfGg!hͦ,14UM/C&R( fZun)2֬;jX9Zg[dh-RjQFGW@*"e)Se۠f);Ze(`.MeNLq` 6vg)w7=夈ATN"[7yab=DF\Djfx^:}F 8أv^^ Iʠk YI (B6PRyF s5sg7&cgD =[ț_֦ОS%dD, 0醣s?dɗyEF[9ZL)XՕrwn8ëf9n.ReCqlRCT {z(&eCBqx^0ǨygR¬ؕF#eyV~g~1$6T)b鲐˶JVêBaR!n%*\v[ Ubڥ& @d̋z`OdtŐx)2_ѝ.adzu7bA@ºɂ)`$5X(IL$ʀBN. ,knu">-Ьq _ c@z/cup{,D)`z&LP1yOm/D,~/SNJ*hNtV"7/mׂhw0 TR*kNQ({6OZ ѲQ%IbkV6=5 f'"Gƀ(#,؈x1WEEO"|+iC:+=OUA hz> jx{>_G7QSQ6|ɠt P{ Ev1lM27wx@ [3F F@#SZ 1ˏNdw{0$p{@ـGg`\DY[s|wjvz ]nd8ܒ;eӡc<U- ZAZ>'6BEii!<H"%aꃻBED//҇vY 30>N$E+~Cg59SӘ#"@A?Ѩ采ՆWGKi.XhXDdDbXb:֯m: ?_@wDEWzRD ?>P=U_Ci7~7}hsh{o T~سkQ<'#Ud;{<˰>*A&-17WxM6hIa!HzEE?,8J!I‰p J;8G R(*ᘖy^zna.I1  qlAp/ C`74` pOm~R(RQUi,Ȁ |!*o:LX>})NBI`sY`y/ B2)(C(pnY(a!u ЂO/ѝ?Se2o*k̆\8paU rB [NiW4sdn; <7ƿ_ehu>f|/6]RyڀkGC5,A磿\:ljQE _{@rبzYQ>tΊX\gı҂e{QW@>Oa; ȃ!=Zuf^Dw^ǫ,U)1*Q E2Gv0fTd!`:妷pI˄a$$~*~#cPXfftR2QPnzEjґɓK/Ы Yt)[ : C.V@[dsdm\SVx' [ cp;K*„[aEn~Ux؟ uX6g[nnVǴ^ވ7 ܁p5tuqb14ZS ZcʋT/e#$ q@˲H ,2PMTH6!7bݚЄeJݕ8EPۊ3YMtT)B~9$W?tBcn"(\" VD`Xcs9'4.3"tT1M@<*EȨg~} s6{cTg^)ze\2Lk{;fS\x];eڍ:a"yybf6wQUmY$lcC8甀(p{n%A-& uUd3LS&ǖeP8XT ywӘdƭԔuqfě3ۇ+-NJnQ|ba/*peLƘ~{J煗*byCBNv$P2s?LUFWqɮy] b 8کu4 QkY,RW/FQzVCYՂ 5<D/NKd[h.ȓ\kpaQXdUxDc Bhg5!}iNI >ϾٿYZ߿bԩ/ g]T7gdlL#S_"-ؘw("gdee]ƳH676h0Ct~&:ʻ(YBCi3@ΊeuTZJ,̀触 /9@ΕU52h&G+gxvAde |Y'KX@8YCP آ7LJPD GF fEj΍"}(<^ H5 d Dm&؂[oa/wWnR0;N~<茁0:F9X b7F1fӽfcSd&08ql˵2h̾ƭ yG$1*3+z<Úlf #\c}&kzօ#E!'Y<UGނnu+s=F6jEu gA93Nޟ>d77.ꒊ"DQFS%ӺDZclLORa9 8v=,*<7=l#Oi瞎> rfk>k/7NGBP/U{(x+NId ~3&2ФNKp4c5ź%;ݦmpor=ȖRdQbg}{gD7E[Z[2q>`|aPN,qV]ۮzt=2K/S[9Wt)z)1bT,{{/74ͻ+#"kvJF7c٣?VTc`<[jגH͏̭<;r3OEh\fV<,G67"!1Crqlf2̈vRoM~釃$rdkᓋTD xpoCo[;i.]zѣcm55 bi9g9uHӛ)4˿U|)X&]z ̀)ň`mm!  "nΆQbz15"8;wn{{|wiLKe$[b͕v)z򘢉o5izD8bty4DLhclnހh <( &({f4^yg#ygJ<+ڏWs^N Z͆hW/LJAm=.CPWz9eϦlpi8c4ѨE:D FiYSƌVD)Y 77qLg=/^)1@8mYew5L\tnIXyuf&.ve' Q(RmW,iz"b7hK5rkƝW.":'PNv\vB?^u]Pmlt?rR"FB}mLͥ2Dd8 qW?kw׍^fC}s!2/୛Ƅ֯YW37.V%" F0?K ױDKhoUF˹Z.)m΃ X=e6^]!\pcS39Gn6@&s|*M4"gػnRe=IN C$8݆nmWD؀CEɃXLy4K^9Kb+ t1:he1MSE{/(yŠ !Nvdh^l#}KGW sߵrGu[n'ftDZDkzł:Q2;wbeVF٦|0]*"Dv߭/F䡨!\dsldXk@.%9iSJhc!,D:(yra2( bF" N[Y0uLt/wn:82Qã!AM P{)RoV p &O]E"x(ےm+kMݚZr6llF$ oW7ݘ}>].fE 0k_k[-#&Bdz6} q:dmȃ]}Ք6"(C,W}H&|W,ը X<&vl(]ߖՔXE͒>}ؓsؘz>KֱY^P#U|L渊sMGCHϐZ\|O[=o-}D+v '0Ot:Qt}#gX.[hrGS+GVVYJfjA0{[q l)m vS]lkz'6ԅ?0fBF arMS+ˠ3*f 7[sv 61x RI 3E;}k3E]$2{\lRn~0\+] lrUD9kWu)K|?"ԥk'/C+eLAfW5FQWs b! ɇ5OcͶ;{;=TIJ4P?ISҰە/sY.AAg> 1I%j׹VUMtjʂQx`y[lQ c ؾ`Rqg˙͆[d=\6'Q S5wmޠ4$7=zϧ<U2-qdup<Cf 6`cؕ*F(Ԟ+A#Vxo; }Zjc[lGd=ٛ P^>QpgXV+5zNqQ$J!ϜD9ڂ7*(}ؒU$A!W$Lg5a~U$dプ@?T}\)W-4BzXFvdɪ>+'5qp.6)ǣp[Ny֍uQX#u27a\VSOe-33!!p]8qX%FG:%ۘ^ȿwS5lp*>oxgݙo`mhlEUUQ\oω BӦ.* bt?OwK1߯]^no+-2YO\VqsJͅ(;r_ ;WA<3L;6{9%iZKz,E5#L ItC$ p̛b0țJ@ hhpY+[izl/Y/D xzk;v8Otmtԟ]qsNX5XQO^7N\'׼C}Z (l? |@geOnch-u+v1I[ZQ\iudnm*`!">8^%e]l{'EHX=Ec$"HwDkI3yifX/VK=Q9=֭SpE!˙T'aR\C\Á \+&̑ 5F2dTUe/Tts7x+%K`7!aAw%68seRcc3iB;*O rG :欬Wo i!$hnj>ap ϋ#9xY'+]nPXNB.S#yZ?Hd'#rxBmS5c+]^{s9M>Cb*nD9ZgKj3QT:L[HQ7(nd Vr]rQ=Lzp+@+f"mMϳt h5oZdrD>FnyݚshűTjSiBv m7:̼MZjF5Qo׶]#df %6$A#q 긌ׄI*8F% 9JA0JM:f'*o wN~"[tH\5; 0n$c%: r3bkk drD=ng-3ht?ۂ<>,/٧"1 I*Y氁NL-!/h^Kٻo[3K,9X pi͎ rxf.h .7fv6T^d:hڳc]P0 o83}d96/LL¨ZFS%iU_6Hv[Τ+t/+6I>p@]LB{|W􇮓$ل9ƭ#A]7Qg *ð.тȅhD %SNj\VջX]uvCWe (o 4mƗLG=cy?c:6]}2@i(7ghBeY2%g2i@-)-zGXu89"Q~x7lP@o0F"l! {Np:_Ew;`nWJڵ5B_a:e@AVMMw`~fx KL(s8=h,.IC4ZNk9|dM0h Ȋ %U[pg!}¾g% s>BDC,V#oAԿ-~UD1/]UyP dO\XYaB-\ACu'z^pOn آ%S@I}quxFݟJ)\DT {]ΌQ!rr:\T)-8\Ո p3]qi$qlD-wyV^% ҝQsސp;* U0{Zff"e&\KREr29yQt27an66 nkbv_ W ^vy\#c$'!xi+h1. Ndбp˗.,#98vFP}LLu͇u@qL#moqT0Kn. : )gP;AP?Te.>ڊX-ȸ0@UmDz5Rǒ؟!.'86hp) EavB׻-Л| Y.xWMCR^*ibap Qbñ]Bh~9yeJ4RnB})ge^f3Y }z9F aMhr1b%O=_coD9S W<ĸ[s~<4VBz"}:䰘qy}2 (vӊh@!&AڔZ~CKɄ >VDVݚ)a\ Odv T)[gon~\<[Mσ\'jO{,lOTR__Ax1r.2x tDr )]0pDK'dRy\rg:5LSJHFouǪ757HBJ :c(. 3 C .Yyy鸨%wfBϷցҪagcF,~&LmTGY>PSGhL>y;eۣ%!:[+k2O":\h;=w}'ts1IuT6i`{`w\4_Cc4}$Ƹfs* - €U/z ]סm/G5 6/I 2*Jg+䰁 "#K0dmOƼ" !YMqAHVkdYvdgjF& f?\,$%{ϓhzh:Q_Wi}Yڡ끋n2U|ʖ;qSTUnJpX~!ni|ъ L5j 65~'Ik5 qܔQ{WɊr﵈=\<#]лfU`GM>ǩ4͙`x%<%[Lu(M oi/xlW :r%a2oAFWQ`.n E&Ɉ ]ֹ5Ba%pZ Oh4o x<)7P-ȕiw#o !N;fZª05${n$I$ jw,B+=qؚշ2Tpq)N _̲|8gx_ PhesPh9y+Jw.Ψ{6#TXLѳ6M7xԔjA;8d}y0,j!p@F2h?M0;4EmͫU6/)JSgyu-?g Tms>Ta>)Zeq#px+TUfblv~X:HL~&eM_1LWq*F.PmU(, $}֑J`OZ$$ fʀSS ~i^N̔o0wyIzK[SGr*wO=bIT72v`9,{ "I,D,3y}~&uq\q$̉׫S9ٮAʼS qGJU|odݒ2i;ʟPz#0;쉈`VˮğMAKauX'Q)yUpYt@3Dmcؗ?- 4%f-?v*Z>JWIwΕiIGwJx ZDK*y?e| 0$oXzn/LMs3Sν(N_l:ׯ@QH)< "Da&*\\[rPERTPVkЕ<r<{9{ ww0=AU77:z@ }PlЕIc"Ķ䛛#< NbQ ϥ@-`tcD);Ѯor~6xS󚒤/GY tE +7r\s: KĨE'p wr~*_l3%0B- {1j8\`H<ѣ EKp<ã/g1Ѩ4ݱ'_] q"GȈ$XMn#?HV`>?Etuvo~3ƒ3ϪkX5PL%t&J"1>gCތÚiv=\0x>Ʋ~!uMtC\aϧ&!h&=]Vhxк'/2ҳ)*6-T@8Z6:k ["_^F}#i*:VQ 9 hm>\ }*ҥ]ł%Z<{FBl{Mą+ )ʇ#RD~[iX{E/k{wuBd4W:bp +C3Β}'ch Riоj5/x}K_:N3;NG!Qeթ=:nƂfndz!YDq5g~B^T@ɏ2 YCwX{vPo'c3RZ;dH<gvsǯaIx/ lCPe@^Ďo0MIFB*e!:o~N+y;;sFsNKeǺz4eN;-<N`9 ڮ=ğgxm*xyfh˜-A22V>ϵQ(x819ִ y?j=PS=eVb<zRK췢z8. Q&0]ܱ{\̙t 3ꔴC6+5x3G>n0rl?0 3 &^ 5+ES{oy7pr &VsSA>H* ꈐ7.BAV6<ytY)CAp]~{|.| ?xw/eDfQƘp19+*| g h+e:dz~pj_[G97K  BDET|F2aͨ"*U/mLVۿ ?*N'{N+!;Ure} ^wjdgY&JV8r?m-gcճ9%;nzEWxp>sAf P&R2WRv=ghǣ:ޫJeS~g Hso= P\xƧ{3Ǫ\Ǽ ;fny+AslFB( orzuCN<|*i2;P[ep-_ȿ,{g W砷+`KI Ch*q޷mI" l;ۅ)ΖFr:`nߔnدvj9!.S{r;zoBȠvthOf_8~4!H?]v3 %t ߂7A7@>3C\z6qn&Ri;w'M`qap}%9\*6txpWy,EOZo ̴㙃Ev11 .>M:#ί],cFz^?=$+Ѻ)VPӻE?Ğ-LF7DH)T㺴Ťs2e, /Vm7}ayzy*C}h6W3i,=jN \层vo(^YӘ`«)08ۣ(UFL[2[e.?[@Ok3.X lQX M^]o>yİUf쮰ps ;z t+Ιʯ9a> xLn}'g omv8.IMkrĎ͡xz+*1Ci/{X9-h_wD8Nt G8 jE`с'o:*K:KsRu 66B߳/ƅr(S{p~d7E␃I?ݙJ-f.th ] l7<fAA_@If*Dّh!u8"^1`9 Ke9R <O8E;`ѻ,9vgoD?!)Χ7ÔGHƏj`I+ =vdu.yMg7`5׺<%]Ř] !5fH".c+jTO ":{+@_H"A1KHt J`4 \h4xoMu* pE>z|3^TFǶGVTXlPzۣO&؀*FFm$_/\vAd .[2$"7&¸QMJP3aO^5/D1 MVۃl~~$CE8Y!{H/nk2.JpP|;ɺROŕM'ӜRS3&0ΝiP{dis)cD6hk |Hq;4?JU0#qBxQ9x2)JvyY!:&67p4~I 2xT]´(~B~ټ)sF1Q?WZvmowu #,UR5CT/?7N TVee?)87NáRU ^87P9IuԾ\,jY3Yð{Z9^Qn?q.!KՅIP>~sMP~dcx =f=gAiM4l yW|Q}xY3 9%5.u9p]ʷ5_RNVdޑSKBPѐV޲j(%ʾ1ԲsFy\D+f]T-iXޒ#_l:fJZlVvWk NhOTȶG_(JKTAK71#b6!Y}f k:/NcڽFWhZHgXVozصH._שGSA23;(NvOE&>ɿh}ӵJ|lWDE(#!xRS-A]/!$?𲚧M9ZbƹBۜC+5)=K߅mE҄<6=ay@KC0B}z8zh7tQ֥] fVu 8C!2BX ->:mhQi *9$xGƹ2L*vaaT/Pxs,S8!"Y gn=˄<3zve ݯ^Ռ]Yz7PB9H$ kK*NUSvҜ¨0j5FY.##^E&\4G zы+VK*,RZtׅtqTeW . cF7k8[_lH_5O2}*TJc:LدoثkcL:OkjxhL1 ^Ccv9ix]t C *eh:- 03#<.3긳i,wcf*֠^jMr+Ump '5r`})O+RI0j8iZ{=P$:ᆯkytQ ׷Id6x7u kСx`a_QQu'/ ƳiW`*MZD0@[4G mx1 ͕e$鄃C s jLBQm0)*,)GS i)j7/ G9 Y'I:-"HOb誰_9w7!C/ȢN@>|omxgklhik/u1UK>hSVBGX,z8YG Xw(og.=(LR /PN5s)S='3lטs%Xk{ٿEW7M Z K_|#Z6VI+f= Laa?hm)P24_GS.ԍ_Vu7z~x` MUn? KW86S)5m1=C aPCc@_FBT8l#n Mt{ M{v:xΣ'W1ؘaE-Ⱥph ӢuZ}t-?Ҥ*}n1KKkG<6܇dvh - Djw.P붦"|xL><5a#^U94ԧ䩎 HșĆf\oP> 8c:)Fb=f;uCNm7rµ7"CEVdv. 8֔w9b;=S%'-Gf|"ntQ[3x4WW7|El`tv0%G5ae mgmoo4NȷX/ Av7]`L~KމG))kEPW(d^K׊(E$s=1~x8#8F,Kl;&Pڹ`PL퀽2ˣz]7W]KB(9A[o@%eh*z'ChJD*r&)rN\yD v~yG)T%\FvVAޅr=R }ݿ\b02.Bd:ӬnK`NSmYBDx%S>ߕ^n*QPu;gV4ߒѾ XϺ0aތ pGTq\1J=nN3֥wT}U2 CԖ3i*TX3=xUNHc;9D^yxƌVk=0oD}ڀZ#X*W/sElkWB@c>* ꟅaV9 _ Rt&'NnL̾!^ ܻÛt>&dUVnV'[ "^|/- O *k>t\93B$n*ًͮp`뎉“?nD.ͳh;YuM_R;3^rz1^c׍@H:Gv8ШV8x+0 dܻF QF1' 'ksa0oWMo`۷$ccɛkA?ߢ9 V,4Vzydᆀ3 |6J;ݶ\}DJ 6T*LF5ח:$Cp&Nr׊7 ZV 8 rtUQVa^ ȹ1]TC4xo߫)|F}/Kf'Чa-%88*f/  8"XO<-4Qj /mngs59_Io"ZhU 5 < o?!1H&i[4:{)ّCNU6a9A`ӺOut~:M~?=1!#AȽMkGH QMnDL2>Բèm庬$Xp7y }eu1 Z3 ,tE8ԡVFaGJ` bNO (bWA"{ jrj< u`}s{Z}Oh.ToBt7svmB7ȧDD)v&Ŝ9{Lv]{Nr5^HtrOV@z} Di2c}1=%SH/VW?#j)qf>ŗ99+jw vn߅5 EmU4VPZvJ嶽g [OC2Iqŏ ^m'wR6, rmgZ]^إ3ە.lUnd<t* (yÌǩ.bȐENz}a/}gCnq0?p"TjfۈL-j)h8ŪRtN,;-|Du7a8Džz.A?}2>T[n} uMnTm [",6MxM؜8#eXXh 1?:_Kᯢ^b y(KeEDJxuaS4,X$σLA*:lluE_WqZ%tՐ &9~FyJj71C$NkS4Ő`R17""wXӢf)<؃9W2|VYhccFùĨ3/6A~0CT`;6\g漝.RM/|h%M_g<A d 8o_AkRXNKO!?Au'32b{K)R4bue{bνFpT@"T- cY8'ޡGDd<ˤ3|@p~R,).+gg\f5`zߑ%U1x6C[nyZLlDX#.O&Y iz!U* DF.D}¨U;6BJ^1|LinX,Џij}Ƴ ŦF\αA1Ga"֢)%Mi)߽DM<$ЬǘngbP?$hTUg$Pg<sQ4kF3͆l]Ml-z\R@zIW\ʴұA*"9%W:@ bIaT|ۉUׯN-@\S:mUv,3ڲLrw`QJǍ+g6 "@ilk_M}}396RF֜\6Leb_ ֋e ۳&9Vx*[BCS\NVv 171V7*Fl"i*xj4,ΆQ"3`yBq'W(HWrVvTILu.j١(x cs'S@F⮬QsӔܲ%,`֣&iQ>e zOmTGߧٮf,^_?h=Ϡ'EBǷ).mB+?.gTH'plV0& 7:]XbOHMdbQ^&u?xm̽z1N6QMO֎hR;` כszc@'k7}]Ҁ_졎UdR1dؙ6l,B9+ ]gS+Z-x׊ G&/$X_e 2IQ51,ϣ4M!zvvWV+ęZ29G^HR qL5T:Iݛ]&qwC%Orj,=(U]a4ԳFjД.5' ėUkכ`2T'€^S͔&]>kPE`L̠31ʹwQLdh8s 3 o(xSܶ< oJ^:; YjS¼`ޛfcWm]<媨mNIПP$2ի&vt9)ۗƚ9G^VrMf"`OԜPii? qe>˸y]1%dF+8^p*׾Al3Qx] N`ADU]~'hp1[g1&džMu3a&#>;fuV3gR 0>% ]ի/w m%mYd? sM}M:y m෾?[FEI^Tq%89Nj~PUuh-o$ 1\Ɛ7bZR*dH6G޸Y)W\^7S8JX?RZ,h̢ *Z墺c7\BQ{ E__&/2M@Ug(R[۰ℬ}sX~vS@Ncaze;%^*-Ղ'Oq<Ȼf&ֱiPY{~Չ+$t ?ՉL:('oSE D:3O]uk83P9% ,/k*<hyy(7YcxW(R9Ȼ!Ahh7SxAx,XӢ3b ?ћk NI8oↈqbADn?bd2$"%߄`U$ZBkgy~Igi7/sx=2i'MDWzZ\"g"B +z\DbT#7&o|1UQhmfc%&XsgµO-k#qRx-xVmrQ8|Ғr#!LlIK6^mX+ Wqcjg:dw봩6})zj_x-*gJQ&01ݔH11a37D_06S€F`%-~Fr=}%|؎C.CD=N;-݋quJ&f)={" lER)9HiP|;c!M!k7F2q񰹏6 >7[ihȣi ^itKiN@soNPF3 Glcj/㣍XߍA^' .Ld W,T%7bQYwDN'$MimGx/iҎZ=rMiQPkmBW#s3jnȄa:'R3Sݾx8"9 v[ '$^@cW 4I4"<"YQlȴp`(PT}l!?rތ׿(`6$@iF4ebPƦU_"T'ýxEy( z8R`?ދuRykG#uD$1 Ji+Z@]ORL qY;1\+`e,t>$T!l+IsT!:w\%RmrNP 6%MGMt8b$"Uuu`&^W^ZQ CTY,]z]XI^M*O9=0a鼯 q]s X"%^uM̅5RGɤ&ХU GNhhlWȃe_h7vE(3(rah`(zW-t6xdPjMw}g.};hO")%5iŐa+b۵+EXV$Po!G *ǎLT_14# )BLzZ2N,Fp7\HnrhAH(>&%Ob"~ePy9~tO2;}fG8 L{hޮxڻk z wRsFdA[>Ϩ: kĆ9a=p9\~Ⱦ$HR197F%#Gfn #L.l&Sy6~,MTWHd/K2!ٮxN=2V[X(B\ Bht׊ϸBj!|4~hD#PrY {zP#,$kOɀTE~yCxiq豵o'ΐXX|wjRrnπ>;`%=}2׌mkO \ ^4u+ \|xXM:u/쎕G(NM[ }5-}OJlMN@ KsEDIDұ3 3aE`T:tbP]_ÙcN]*؜cq٩8}b4}7bn3h5ep} 5S4<ۡKB:Ucʛ_*oBǞͽ<*9MHZ2A-4],{ڐAgPV|58BaȴV9Av`[@Yx\;D?:@Vx:cwIU.bH_* =%TaT:xh1r^\ j&lU 6m|uWMvm$ :I %ʅ[9XZnR kgԁh3d\B!PiCW{qoRķԛu@IUuTJ ]P/zh%{Hn%"@Q} { WA.7i]wT{5$ n'`wܜ^)̰) b qc*/BOcݎ?yya)ŴsX4Z%_ex/oR[7˯t. Rfc5CeA qN4H2ZGza*Tt{8|/:g=p33:D#`/woXTq>PE-,\M# m!~{&$a"+|8ݡWeb{c0/&RχR#}.^^w+a#y'{CŐ72)otMV0 YB%71=Ս+ʆo{ YX فҎS# /"CbLiIQf"ib0.8~EV XɄY_ v!H糰 1 *<{@mB&ItpjfYΝ-]ӱkxpzO([uOPFM_XU`u9< ,s¯Ųx zUL}TPu Dbg ĵRuvy^F,?sO5UbũyuS&f_ot/ǐ#dG$|FG8[il\o#Gc~Ɠ=; R8G#gky]]z3'|r[@l.S*JEĻƽx~"HXVs[tC3PB~F0ڜ F @9ll 4O@^WO ilț-#r,KEJ?rRAD`ܱ9Go[Ut/.Q/wC3 )y@eI Bów3:AH!)%"֧km|)qCLn] 2yxurEW8>?ξP)G6E@5u6v[9"X7eRYWUz<,#k[Γ`޵pau5=(x)}+W ACsowF޷CkwWjԜ?9{VGĚd2@I禄49Аqul~!ݟkZQXq2;ikӮ!]$I?x9m9$GEZ #81Eg^rQTPxf"3vڐץ4 /|f0]ƾjJRGE E]eȞ]i۳<~X)nu凘QB?YSuv;Vyp4 nLLB{,Ìg4sAk~:@_^Aq!%dAj8K0ʐInK޼wD^lJi>Ǟ—ūK1-]1V16JJiI9e07PSjg"5)nGz*t!/~xNZ5*袛V^30%øS -DS 2ϒNAd G5o$~͇rЌ 6wpT+nwe3~}Y5B[:rHA:9ASn* @+jҊm@tDb9iY< 4T+Ä7tR;'nBDV=w֘J81FRDŽ˩mg[R`I#e~PdG c1D1^)҅b!m>sS躼cH;v!&3[08EDWzu"Y JՀhWᨋew'/YSM;;drA"2,Bi \=)M9vJ\uSM oskn}05#;ї]9O7~)*"ޮ vp ؅,4) _H/#b4dE失xcR8Zdo ],8٣o1 4N0ߧ$,M 7q/Z\TqBf/,*\P. g6&Mg"w҉(rEoѺ}m#xEU0E:?.8gGi~;̤"Vzх5d0՝lc:ywqr"b&OI+!|遍`*c ˑ ($} W4yD9lUTAuTb:g@$-I@HudBQf8Eټ8#MY]C5{{uc{~LXD*zEfZPl)(rx.^ݢ kvp{_o`,Pۮ2eY쏢Nɋ NX#3hLuUhN ]+a7/Akq^@ҍ9LCg%x[>>K* !,da!w*,4Dlj7.D׊וjZuMslQQ-D]?#{@z:GjƲ,篦Ia:9E oϲ̨}]e %AM>W UpOUCӆ/\b#J|FDbSO9`>1dx p4.pתp4oogK85A}tS;tan'-WqPߴ .~ۯ> ٸzya=f5@N=ۮ,'D]^@aLf8b|-_QWP=t'Uoz7-/]o@ 1Rʼ~g-$չ)25xObEcmYCE?0Ñс²w j0sޡ/oV|!"[=:HnEu'k~ xb۱Ö)a  -?9n'M&{yfܓ x(3,;Q\\%\}K\nj-94"# $NKw#lN/O7tll #NSF>f&tD_צsK1Q%JGYpn&X =ۋ{k;2mY2i 0@OR5e?JO-St1%㬫_g/*]N9Tl& ƺ#oI+-ga?I6}q +G(vsZ"^X"7)n5N)ڤvI8;QQчbCZ2zahFZwDhxH/rM3WEGQOGΔuLٖCWs2Q :n5X>a?t 8"$A.[m ?:rC&)Ⱦ ZʾXXMh_eM^.|~mT=OVG8L۸ ^%#@8KS]p} "-|^TPthSx-ɥw܆E %'" A( 22-H /Y!znΪg&C+1)&n!P~Ep1Xh P%$2T+<#m=c9(:bSݡ>H;'v|CV< txq|7IN9JRo=Z0C Ǹ2m[kc4H;BŚ"K Ce~ `R\bs;xAeWg6@Pfp1 \.U- 7kd(1r>52|'TY_Pgh-5 .~ֆ, g&tuTT'h\O%Jnʖ9(؆6hOe w:vFk4!?S ZpilP]⫒(Er15xNoz8܏r]ܛ fj5m_ҕk:`@H2Bb⥂,Y(LXgto(\6c7rTYj>i{xRIK|kkR5q:S _+Z`9-u6ٟ_97N"x/PVpPXp2YߜdGlg$۴@Lf4@cIKF;)GjFϲ3'Q#7>Ek8+ +#;QPLu<:(N̨*G!H&ǀ]I}#,+NJoeQ\H9DMfnsI .łJJ9FOIl׻ 4>i=g55wIOxh*BeM:de5049#2HlrZYp5#>im;}I64|` ȋH>Vmu5,2<[U7lDB1s-էz08*sE_:Q) ?}9DpDDƗKY(׈T@HMRLc\!TG}zM1 j*IR7ۮA٢Ά~E,h.Yc!2^hf/ZѢCpͅgVx% 6 mrUrڙÑogcO (oR',ϡ٧OLj̸].LQq@;~2T]KЕXQ=WU4,N;x/NhŨN:sC­Iqюy54dُϖt9O7|3:ұ~}SSXV)-M(hېZg.6^&Qiįޠo\A BtM=R_1iP8Li[}v ]CGN96*X@ӣmk.' @8~9^e3̋9{!]E 60 oXwh rA> B~९KJ&)'8J3<2E  y-)@lI熎g˃-g*Mk ߑ N6f#,Q`Ghɷyͷ屵!f-\ ,oC ֒WqzilEJĎ1[ט*+ٚ?TӄEx@_{ؒO)Y%'k|5N"Ɯb ' `E=t햯rj?]NcSVw%%gJ{+lo]; NwybO!#VxX \vz rŶα rn7ж cǨ&;^Pwmyv&nL54$%<8ZdMgd(QDb*.'Y+ ~g%[d_._2K>_r Z@^J#uJ,']yP&W5?.R:&Ba؏F;#dsKʿ- @KoucfI{4ÁުU+[K%K4&̶th ;ȶV `T;qim-{9''n!=7v5TMKތrFG/~Fa@!w"m d*zJb t+o/dgԳ, FsjbW; |&H 1lXw6_`yOװ1Wmm{U/#ߞwsfJ = +~[ʯ[+zt#,K OMfbbw!5Ͱy;>aU慙.˺ Xi}^àsϑܗ/c-Ys z矾Q=AS qL_)Xq?Q]pdj ; \ 73;e;d~L/.Z~fd1?mz$Xl9]BHAâl5?; NwYUfm%vbUg#Yf̓ P}ԂݍpVu̳mq̵-?ǖ.Ctj@6y`rV[a;;{?v?1 M,;,e߂zQ௉47])O+YI@_'r;uG'<vXio?WsHST ~8sX^AC ѺFul,iqf;c'QcvDtiBPE94W_ب!=Q(ҚUw{#Xsʤ1T"g!#ȗ}9mш\0^-m[ϣ?-G:IKm5S"U2FNdDZ­Pj0Rst&]Y g,R%W|j5-OO[ Wq̺8@|Ժ_&r^P+Șb  :DkjXA(L'"$Z:A_hr#"3&W#LS}+&ډ}D\&&>s}CӍDؔMsLn%9,̇Yd55fR$zL"Ej8d}seB'E,(mt[J.ynK\0Ɏ?w h![‘l$sһ4S.ߓϠ񉗄',kB9}յ ʠ?r 4&`{1gaWMABr$L)tT[$Q5u8O: ?Ҟpe%+ e]{֐iKRB~,):n9e%qOԦ@;rLqM;6} RVL-Pl9I_Xlּ#4X-\! tsx-/J3;_լîI%eqyʄQk隐8$Bu-P90sn{a`c,Γ7Yx5ƫbH+Bg-ǹ{n4@`nnggU,H]+oX*x ~ti<x1缧I ^è rQ茛 "ߎDm F(b Z)ӚUB"2ϝuyk9JQ[.mD+>C;Y=xlǍ'"ZoD^ԅ;UL]K yEPѭ@YǦIAՀpXe3XJ="k|M+"Q<3ߏh '(T)lrfmyf%4Gq }р.G~Zx϶(;Jcvy:__J"vDn8xX7A|VIf5#q+1Pzc'xywe+E2 P}xs>֧lT+Ǧ4v_65IS zMh1knE&[2$؊1%m;8ᎊ.|7z1m;wMbGcI2mM'ܾn9ݷ&ϻvyUAן[ A@Wx `DnԤp{wfvb|~No7e(" 0?!cP 9xoz_,"z7xjH|& 1JPp>cDIX;RNӃW!]ϧMRbxgu 5]D gɕAAWu:s-6QEd&GX3+P#}aqI. Am˩5PzNPY0}m^8B#PՔ]z Tl ~^M3h:@O9Q#5#9 7aU~ ;'Zj0̰`6(@Fo&eC'vXiG!)CtuS pַ }Œ K>::i4Tvh@~ $}AJ&jOzO[idڅJs(fJWLT+$T`H}jd=XTc\.?._Jj8IcGפ nq81 FTpXKأG/9 )ty=]']7HϫPsevfv,s|+H='Rһ/=ihEJa:P+OeviDd #T7Xӯ$Jw$WU-J c2=n\v03;)x'"ԙAF@.nR\,Ojs=Dm0*Oib_C,#R#ËH^Xe{׹XutJ\2Ry`ax81.Oy}vΉE"(KZӀmJϕ2F _).}[8;q %A)xw x\11G" GJVow=Ag<Žz>fHo,"#Fջ>bov%9Ҡ9\{9[B)[ D7w L[5*N.b6N,N( dP 245:tJC O $nWpwmHTH򂾢G6E)f/׈cVR1+|s.D\Ap:"Z=zcYb'pcAy % n0^7Fz} K8RŶww^4Ӄ=璆Jvj[c9NƌQkY?yĜBV3lJNlHo1 GHRf 2MҒ'#jrm'+2ᠦL4No%H]EEaSe8 䭧wT<{r␫^o?z#^V_3wWӰmo9P5{=dʄMN<&FMݽ׊hY4k6w.q%l^ 3;AO J[}g8Q^.tmbl̈́kjh-,Kc7k<3'Eu/$م'zB2 3F@dLY +멜Ml&)Z̝=sxZSn{=vԟ;K19Owe!,8pY*}:(k+%N!62H3}:_}M2Sq"j]xd:—[!4FtIq1i+zcUp0$]D?xs*Vz;!gB㨏OȤ7P]߱u6!ohw} hޔX4m. .J%Q)hR?DzW*.yrrxKᇧCEijw0 e"*!нzz'${;837q{c~eK;mϚ1i h)k'Rw%*#=\V#st<-}Jq O0h0yHhu?d67?(P=˙UlB$Y;Tz3;p~# 0F~8ZExj|Aff$`1J)0ʆmHƥswn!8ro#L'BMOkb XY/+#0l 8t~sI%q+ﺋzn!QrvQCw|lnkf'dBY;e!]F@D$HW<7D:KhUA HAKY5t9CT_yS\ᇒF'HF5NZ(]Qjh/J-)$S0hh{EF],8S#IWrEg}86GW1)anM{ U*(?aȶ'KycF=y6lP"-%l /wgtrM 6{vS_kYe29T흼լ&}m{#rmEM4(OtF2<=g:ɢ+WqP3iCs#bq! ?K|cPoX%#02=xL M8:OX@PU%3nC``{o!j|ps%M@P=z"yEӓ\16|BF^/h؁g^-Nߓ,6+t:\!vdřO?$s0|]k؟LZӝXPEX6`Y"-ECPK\v̡b,ςn1ݾh9mb YZb%AhVW'ATxLG1Ʋ; ð;5[, @!]2GN CM'7Lі73 Qme}/ƺq#?gE55vcJK-/v:p !i`y)@_mQMذ-?^W@Cĝ_\oV 4QdM$ldv)EOL5E#ϫ $~L$z*ӓ{[<^ uS+ SI>tSz:NEdavdv,'T] fQ+!K<9?HA/ pI=$=6,Çn|yWWPOW;*wӷ`$M1&߃Dy"XD.ѳ}m&Rȅ?%8%,P7S޸!g 5[h# dt^7 UQ0qq/@aq@B.N#dp"!,uT$K7*1-8efxu?(ZJfHQ )gԖd s;SSN>_ iC2}'03-F^닇 I'XJ7iFEz lĂ a$( ]_E^1<^q_`P+EnН_bW,J V8jCg+G[Ԥu0[ΔSM(H>i=:E`&yYp鎄3PiN}î. Y4ْH|[s1I%7ƚKsMc *Kt2/7JL$:C]˙ݞ QYAhNeKM|DTxZB9#;Ob)D,xêg7u«ԙ:Rzw]]]qV9=|ܾP%KLR,X4|C m')Ҷf)We.2q߯|D\ӁjX|^ly5.;dȍ/B;"Lf +,]| 닺F䳑|?:M葙#|ŽnL2}8Kᰜbs.vVGsJ-" aoH҇)+y1 a}VwOܽYs#{Sy->u_8TXl;Pwgޓp.&!io]b^Q&voMF&'fi KVCq݃ȎD/O7C(bU]\' Z 4p}$@DpŇv&q;bTlR.ڀ3^>&{vsd P$$^˽9iG7uM_OSv޻;:ySUu) `Dq5ht]=#s_e+-勋d@K۪^e0]63ŝ"P!7XԕQ\àsƛ2~2sHJ%do.eu$"c0"E2j]ۛҹ-3[8LbǻzNPWF2h.e{3ѩoT!qTwԈZ:HVv4)?ꊄȖH Ba0-xSdTy,۴䤖"މppU׏|8pt H>HQxJS1vh=fBbQ?@]fXz'P։'gz M <-äChB. W0:B%qžUwiD?QE^inӞיwҰ`9{%۫ O]+yOCd<IRNJ:pOPoQq}*4PUK; !d;F,YB Sr|TYdv e$q ?~۵ ODsU~-D[0pqڬ;yІ6VRNX/Wx<֎'6방ZgĚw(]lYr&_ obr3fC|Fa `pPۇi},b#X[fz^:uK`LtkmRD &H)zZݡ;h{J4_R>.NzEUgpH*\]:m15u!I&؋~S"1  =DAQ|,vʁp WFpczY:\]lj0zpl:޹S,ird< hVʉ'F8ٺfFSH)q!vѠA'#Zh `%I4) p\9xjdPTAHC-D%oN?B//Pe8nհ/?E]Q,_Z6ڔgQ~$z^ǿu KG┡7EQae9P)uv|2Bn~Vp+R  ZS窓 =8z?s1`wپ)xwa]u=5Ό2:8 }< - 9^8x"%CûCӀb|+ ^^ pV'vz;Ew.^P}m%#{X}$!b,@NXQJe08nb.H$Jɖ~uEnqw8KXRKq y|YX_:yֺ~U@Qw.)R;e%9\-`KNHx}9ptEu]ңVfeM7Dn^z{FXxLк².y~iiإ/̃C 11Ѧq:=n6AW8<^>|`,ލ (uۭ@=O$41d}+[PӞSApSfX,Q eY zu`n6 _+`bB F?lgb%MTm'0()u3-s83hJ0L:g;יR{r+CeRKMuwi}[ $-Xp,3WQtR* Ҏe'J-QMjc](;V ٥s9"cmiA7hQHݨ8$ ]pČKZlJOZb3Opsc<*jLB.% 0ۦl(ϠX\ kj*KdP-@:.1L_{Fpê,6+UTٚ7TJB`^Rv ~@_q* `C[c \:E}.,$y뭸 <~R:2&ußOJ\yTxjz3R>ğcbO<\-H&n!q̨=r0<'1=ADwv0y# X A0lJhVi^ 4+$WǦG!0Xe»_^uL|[O 5t ֠SV{tР+= !7oH@nU}{ɊnVL.|^w5w]; armh޼>|AIտm}Mc 2*)Ş2h3>E8I sA )AA  r@ K;E }שmfaYac*51~1?3ҸĬO+9d\OL ambZL=N$`:r$ }ViX]ojFc% xk>#'z9(Ggyc3kڢ?5_)dMLi70R9a<Φ+g Pau)21TqfY͍hG`I*爩fS]r;E`!ł%MK^7*Ϛ03B=ct`z Mɜ :HQ}#DKϢ'x|XٻW^&ᜭjF`6QPV_hBX[>aLD_TQs1<TIJߢտY~z}_0]8㷶|bmYJAō$~,h2G7q"37i!#` }Ps=iP6\ᥱxWTlڎ^L՚X/J i260rfIہ=0hTE0dqY8Z<·\%j) m&[P20 bhr9u.ߓۍDo,6y1HlzZTӄ ު2 ETJCiSFGH&i{Jَb@+vRyos u8S Xqq2Z2|g䡣rƐ<~Q!A?*w3Fe |jۤ!ӁŨnG[' sP%m.1!,=Mr[.WeFB&SuȁhPabƒ˓V~lTa K7֌Q7P+@f]jMr1|WwR:Zb61 Km.asHyKF0MO۝2|Wq( ";DH(g`p8k"M[72v'Vc"f~XS2^)iD/Y4#P3Q!lIb4Wln~lFÒQ( WNǵma״e⨠RԐl zhn:p')r?.xxT#08F&!eL)7C'юvܳZ#I~ ̧zY8BOCvfEdI@)4g{ & }`Ɉy 1ktN>vBDn3c8:Σ.u z{G\)70*]JTDLQGl:^0C>EUM5t7b4/۝l0"<m^ۙ2${Ln˿? +h}s`JLKDF"x0h^Bm3Րip2| 2afUq90cF pܪr3K4nG…'WPI+MYlv$-SsWU`۾c32_u+|oK% ۻk]\_FI@7HՅ~}:򼲯/ ])!ޝ,@F9K>շm2v?ڈC%%2:bAb> #Q|}x7׹#Df]t1L(F)DJ.:J}tUEW7 ;:^e:f%(IIca!;UNKg:`>s3L@]!t^1ťv| ’վ[g]LDJu9kxKTĎښ3KA멖+4DYZ=_=Y\ChR`5p<׾#ځB&yTv̢diC,Q{VPw]B qƉEI%*?mCNM)dn`R5 bHR a A-l+ }uo _ ѹԍץpMwD ? ">cq{n-XaDEk^osbS=O Dty~}F-m?z!sj 0j^G7esP?vI`*y QoE9۾C_.HUTH\a$"_n=X)\# &9VYm#Uų7[!'qIQxI Q&S6#K)fAЩ"qNdj@E蘆ի9((oRnV1@ N xFݪ^e+g} FMպyne-BqQJQ$ݤ9`\)/2,O'!G\̿ü6%<1$x2jOژ5[R^u|w+b`m?;JqO9jUAUnD1?JSe~eY.bmYEC!*jA dJdOlU$*Fʷߋ֋ăQJTTHAA(o‰_4c9y_j*9_k03Pqo1㸵/~aM $U<=6دޟ+Gr#S;0fvJsUIB^lEr>#HryFXVf2JRiڥ'z'M'Q;2ob8ƍj>?܉u}͝?5ee˶J1aے:~Tl-6csFP*6E04`6ϢN`EjRO|Ƭm{Qp N<9_>p*~jA]q4r|lv<tUm9O7#j: W ^G궄MimE>`S@՞3AH>-DYWul}Mkީbc~mTqhb('&\Uw.wΏJcU'>%wiL/v̼ࣵXd3R1S1l;EY7ȢO.p!ǬSd *XO@S}IX(&C6o,/FGTKV0eϳ=m,_99I" ѥ>9G~sEg>uF$-C]!Ž(P{4m<( Y.Osy(*>U^6r2:RkDxC(uxr\.+}l-DV3z8gG-R*:+2S-цxDDuf m\bzb\b]b1wԉuȔOβ++/MW=95#neH&ZLji;jef3CXINB]#OɤWqCHȀ5 cUe^aE|JOQ|܏:7C@.b%!b&֑;g;6 ¨{R~a.XobNK L{_c`sf8lRk,H RpR {h]$X2#E eM{ӪEԢRx 鱄&P=K V2zW-PIZΤC~n#*^bԕz7!ZrYLmâh dEy_f}wv_Fo'ҙ6^flxxZFϦ7HD]SĪ}S%|Z3dB0**wy*{}ڭ$&m5g;?Y6ޚ G^ZD-~prmb\0w(N69|*j+i1b~8Rz! Bs67O>FʏA8G{GyxE2eE*!e pf[QȚ2 ArALŀ=˜w<;Ҏ:i"ýx^@(ˡ6u8Tmo̵y "U ۯMoLhϺIb[,-jGƍfVգ"fRNcħb,W%m2`Ja'L{R$d-Y,{} D9\- >_ NpeyV8%A AKCN겛[=^dDX2-JhWTKK$!"vQ&{<&~sw\T{De1zNIK;eK4*h_iMR 4PŒ:& R6>A?h'(gG:/&vZ4` ѩ)-JյtHzuPt'zD$8K6)լ?Y/S;U٧[S+f"h_IΟ 3g~;ce Q@кcOݸaLhk fK͟HBx1)=Ũztcp_B`x 'j8|X^8Kx;mhsDY"4NS z*fsJ֯ W&ꈷ#tj =o3k w30Np5lp -gK9q{B'Un:1|xhW[=9+ƉM(хmDbr T66LNo$Vc@C  ^_@mINq89).ERYvA;T38tx:<޶\lr4C1Ynm&ŝRC=CͰ MCZ$mPyKt$ǭA<TNELt! U Jf_:2."Ho_9-DBeգQX U`ʲa0=8kVL:ig%f-_Z`e=Wqt*NSYpJل@jWCL,,h2Hz57]40ꖀʋ/,Hu4c\{Kd=;#,^31Io9qtANԉsDK ge > ߕc ɧұ?I[P 'L0J 4-P<ۢ[荋 p-ȴbí:@}kHǣo z39b*3D7&E7wP 'QEkx '32QBO-7ּ!#=<$NlZ]r5[/ϟbxtWP)ڹB467䈸E6 p>Pg@?ԉDVx|f C#xΔbU rO E\7 \@R3֒JOV2Y?^47[2ȵ / |L nqPknz&D`^%n9qH&߼D>BqSNB vI/ NT1,PLvQ':)Z^EV#8ڿБJx 67~5=w2 %^!7ATJ)|xnr腋t"ΨcS7w.? $^U9uY]dZfRodx= `}5 q$1n2&}!1+ى'NְL!&O+JVMFv}JmnffJ*S)YӞ'xQf14Y#A-B98Z h9pĮO5 #>\&dO~ה v: Lt@pHcRV|gbWN}Pssт&w&",`FɽW%K,j:̕t /O8o%@ؘke370{Œ$V6ŔPR hkHCA"ΝkLh?@ԤbYwI=qXRI)\'v7K89#=i{J}2pG;܆Gm~V'N5znsyEw?ϤKRT+k92XYy]/XT#at Rsz4]?1LQbχ`f [=V,Wq?'cׇ\_DAMc+>>N?0mlљh mà3=tTnNteGEbQdJEW~q(;ǒ`xsI ^o鯪"88?յq5I<'~s"}2aRGzj$c> zA~VtΔ58yN2؟ *mZl<NVNY+xtGs?Oħˇ7[3}n?P j8ʧXGjO.~b+R¿ ۶f9iښvХ|`u˒G1"/l^Mm{|O`Zacw:1ƛ:U||'B.^*~zůK:Q+l7>r/v.?UC6|gM νw i7i-mCm҃М7$uN~)&`a^*W5tIo$|[sfDzb`Ģ|%zAiROV!ڕޥ/b%.2Ox=QY/{7%lͭŜ~ֺU;%~#\% ʯz (Jhe>^x(+*<$ٮ 5X%$ld\eG=}fc ρ7V'8Nn]6n^uԞ ^jX[%\yI8sr>6mB&ږD~=v1N pů-94+ْGNn%g=-E3zy=Ph;S^U 1ryM- /*4&,o,;{q "<^A #gl:.w)f$z7a$3jy7GNg%sf6.XM!9ZҝA{uEZTdi+tNv7A/hDIy[L?*ev\M+GcRiN펏9jʼ0Tbp"Lɛ @~kjL@fKQ8 Jӝ'?ݭ1fm BkkPh2_a%E6lmT&DYUIClĩzz !ի #3m6Y1!ѧ^kQT!˝S2O5kR.(R'~y"K kj٧.Y@լC/e71'$tF !x9HLcqxvKHq" oӿ"_7jmnc4M"Mh27DehIcb[OA `\ivpWvq^ '=1e(O22͵m&ԾU՚ s8 +?r{ X|߆wQ 1 ҦKzN80-'%[b R na~9@׈%u LqRltqGO?֢;!]F9|g9.Uf$%XڶÉ-MZ^eSERГ|yVX`@=@mm1p,y2Ը#mBCV AhʅL&4Twx~7Zb$JU5qrFfc(~4̊~5ðAX'IY'a ʦb'|d|/z>QiPS kYń>܌@h,b1a{h# (',V<6m!{H0Sdd*)6!xR;1/ As,`F046QM3+.3m.ŧ{kh:}-v'|%3FLR&ɇ1ۏQ8N ĭF8^_ܕˮ[Tkl1ߪhr$k?: ʣkl<,tfzxkE樓 ځ?>D{rPo@,)cŨ5e3\#ӺG\Y(-mX&15O+i@9:E<$j}KỤʹ \zԢc{ #}B!Guk~b+C&%E7W,Gp (/ SQswpb)PwhRڏ ͇gzݛ)c$>Po!K~ Fo 5jǤM9>uϐCK8gԢan%;4gn$z`>ila}ƋND[(IC%՟$T i, ־{'^aW^,(>x\aS_1]kH'*ͦƛv/iBtY14/&ْ^s:Sq"zOiXYxDHX+3q1B8+K;&''ůr: 3\{GS(7U{6N6S`fW0-`ŕr]4VD8wU!6+Fe}R~z'/yl3BtMyQV %rLPb.Hpv˴s7 j{dsz ]#EyRq_Ԋ9r~DQ_@Rq'pҙzW)e:@d9֤Ψ/Y+bpV>H|3tmM_r{=XDn߄Ѱ)Ghb-*nrOk?Iĵ࿙1)z;W$os1;?CY 3pI vn^\1uKP<Y}ߓe-Y>=:XO}:y杽?zoU~KTb=~ߦӆEE7ѱnfhRwmCx×Ud_O]=L*Y^GH0 'Q(\Y vMzԻRʽPw.W7ȈD6O68LΥ4R6ю_2A4 Ew ՙ'cM8&GkjRN.G!.KllovWxƧ84,TeFO΍gLz8d(dž!&Hҧ]8E3̣ݐ+N=}q5~e6<!=#[&}V Aux杵_w6t$N'0pSV52 Z#c41Vwa<-K 8"X7&0bdtL_}2B/6 Yvߜ$;~?֯` ]+OA+Z0N^2-0DŇ4ǹlKg+#b*xӯ iAb&Mˌuث=]n;:cGd&!UfEnE+X'"n,| ouUЕTeRHaK4c%rq]&b=L4(BFhjZt!-}r?[/[g[ CST[2^/ez^XuHwCak ~qbgmh]"j u=Uh &RBoj=w9xv$MT2Vl"3J۰NG|_5"\3[P,>}A`kOQ7rJ-2/! Žl\>޿}qRӅjSCGT~'#+8 |feg1 XYe?PB=`#ṅTMxAHM]4*F5_(s_;|#̱}PϿ"VE,A/$ϳx]B*3Ym.u_~0luvUѰVJS!ad\Y ԕA…&Q?cR ZI϶\6OeC1rLYCψDF0! ^;&\7$t4[ h/,Y;jkl|+^zdvx\j' M)m:yo:8]@+Nz5MceBBS}3]sUl0ALiWGtQS f tܖ'ʛ9_66w8"{ h=k4Q,^lڏ7`{Xzίڔ?yQ3 He_%=.B2ԩ̄BqLJ>0t$ o ̷%rWE^đH8<) q(~Y_{5.h.f2@%6Ne {KHY/Ȃ">s[Mj9vnFI&FՅux)ujLy*c3,\=E;!R)Y?w^iC-#UecDkN\I0{Fs[fܯD1w3팹)"MxN}*OP@h 3Bz<hYuiaiUn`?f.0Ò%E;xE#b%-peE8(axX&zNvM9߿Jh@HA4fEě"%dMN:S^UH0lbdPۡuELJB fp[x8GVu+Mrj<jx&^P2-72 T8y&,k 2e$ʃ i=X!t ݄x`Pm=M7>Kc,Mu<14$vd-YIrp-oRk8 [LpCܸbI PD`u̱zQKt#VjW P]ڕ:0Hj}gkO",JާOc/Slrt*3`B`6 i?#y_MWw,#kDlvih& tx_^:3y6C폩o_60/GGLl6S@bE]Ms?&0rBf(r}RnςFАGuRɩ.%Zo m'9 !e[5~gۻ;IܐF]l@h!34BŸg7x/OJz_8ejżjp'DkՒ?MɍRFt3z-U89'+9ìg'Ov\W9ҭ e['Ih@StAb2g&l@ ?)R(i*.Bu/‚%BM$0jfi ha܄“:,1n u `VOJܖ1`4>:lhe#ZKY[4_*QWCm3q Q[O:oXTHY^pNƂbܷ֒+uRTf,_ʅ_6\n7 tMY+>%}øN9lx_>oRM ލ] v\p6 xL*?v\X<.Qv'(6Ӥŵ0oRȅ}'յxaN:rEq#g7Gۻ)U rB4,: WpWy 86=]nIC$ÚV!5ɉ)["&WLIez{smXCS߀yzYGUҼjBG" >$RFO%C+72-&s]X=Nhd0S>K_I8 ;O1q)*(N y*n%Mv_L©-`_¾G]E3wbF&n$H B?~/7K[97-ś}$_Iw)pe&!ٶֳ|$鏔j`0~aį.gMM 1Kj#! pplo/P+t}Z}!D'u1{ v31DsgG,ː]eK~H*qQNdJ7rZN5w,Po5{IYSfo,8>vxC؏*Ʊ1,O﷕(m~MMl17uM\?k'TuF+1;Gcuuv&5[+nUIϥ W-XzjH.\|o;!彾OcWm  j\-΋+A!b𚆓TS&V`aJ|z^Τ? #;`ZqMccsr ^k?AU'/4hC^@H_9ʹћA-y0+.С5JYr#9=5S'a@ؓ*0j }e8yiO6K8ߢ{5cM:B$C367I`"ܻe`Bf[1 a C]jYSQMH/2Uxl^!!6{M~NAzÇb◾(6߀G;Yل)@<~L.oaɫoDE%u@H+3 X綐^$*3G4Z O@X˾VTEMA*XO?$oD|sqe`Jdc8Jm.<]̖$Fc\8E=!Ejd /e RU%CJv|iˠ]釪XLӭ$蔊h&4GƝg~OA$#YLot=ǒuY 5?* 9% Sڵ̾.]gZgXs+dIdPSϠ#PcV'T6"4c15cݛ]:o3}%:vثJzUtƬRo =Ù֟r3"̀*E=%ʋj]M">;<4M3 YKp=.#mQ3٩|}”!T4šX  ݋cCe7o3r}bIEf.O 쎚Lb U.Ew!%#Wr)tIA7$^ jD8`' ޹m:g' Ifb \ (8۫P !PxE}#^[rP֢b޸2u̅˭Q^(B}_RIt93*>[:cZ?MXl '!Hyc`Ə7ݴƉE.͏oz9c\t`,sgh* 3b[B2VU]5Rͽ^u_ם](|^LMގW|e#[zTgƪ|LDIFƁ\õ?g@#4Q>TinuH/]Cpcl2-~ ԩo2 W @tHQi`4C09{HK=3n>TD_d ]7&RExW[PI@W!r@_E\koöo fI2}LB*3y"uVhW9$_+Qr;yGףM0#:!u*Q:l>^. T5o*;}BHxfq^~9]/S|骯8)YWhHl5Ǻo>A/9L)%ڏǤA\0@W53NJӓQ C Tџ Ӭ kEhM5wE'S\ަԠ]!C6Bx@2@{x7N&"Nm7*CiX{$"؄"tzan%W<{!~iCV>xzK$iN%qDW%^†䏛+ݫɍWSn~ &!dl!:e\@#W~ "VаFġfWJx~W̮ #Xɭ0m2g|\Rx2䈪ɏ!swYkM}} ~z7q+@aRuEH:P}e~ <+$5\S6ʑ;2kAHU5_ՌObUEi1hK^1%J>w[ȱY࿢%O'NqctwM2i&V)Z\Y<Io[w1g-G42ro5 ' 0qP:ʟ{oƐ:P_ʷee`d?Baw2NY?eP3~=VU:ft57pUP6duk>L\W:r~B51Y_]v)^6T]!4ZXg >zq (~.7Lic<:4yX6q86|I2SۣdYD_y+0KMs[L/pJ3cm4q PF=[VqR.欮3Xr:{qh Hn# A[)R5vQ O qX0LYp̕!_1Jh)s1̄{[(((>X)_w'ǂX{ ޒ mn JI*w|v[ȮцﺄJ54%YLV>ƣ5 OIP2fii2T{8L9@Әp0IL"1<*t o;p/7J8%ąkA㻈J,V&VuP.9UR&cj+&%DoBj sf:FbNCJ\ZևHlVBt߰pJ-ot&!vdQ ~w*N*R;sySSDmO/_8( KfB8ǟ|+ҝ~۩89!slŇ~]W#q3>Sc4;g:Z>m\U&lqAj1Pyb>}4W)r\V+)F53nĎ"s\{zFwŶ@ŀqM3Ŀ&ry=ǘ϶{G9tkSm*_sL! ZGHvh(Xޝ-G@"0&o%|Y^jg 32q:ؖJF<~y wYQuMh&ҷSe5Mg?ּzFoX8u TZF[ 9*B3,|"tO܉HbUWey'o} -Qo<5q' 6!sN\"Ud)ݏ4nn>+ *UMښU*J"ArfLW3zo\[|V]+*t8=:lZ{N?;Zal:lvC+^,_z'Y˻ǂy+A;?\r0@DӯΨR^1kpu9<8_ #}ܶPfu*u?Fcꑃ,pmH} 5ZUْ .Ӯfi` ~V%qmSOq D&* M>n^4j)jIS#Spsv֓MT{X0'8 M.d9>U1> {&L+bWz+a?MT]V ɷl_%\pjU'LV-!@2VmWhif9qZ/L .L'^od38S:pu Ŵ*HQp`aS3;Z8M!=,J`e: n<&a$TXJ't؄cʪ#fL%t` W3@ڄ̟h X!wH\䳘;T *70=`ʀ' AX 8/'zmߥ?]p:&noG)f@&wҪ2wy[3kVxI5ZV>)JI~a׀#s)V`睃9 fIQhwe%4ŗl85n\?S?QgGKTA0{͔;yE?7/*BXlXdkQeJ~Axxl,fo0Th1$*hdAlT,ӯP}Ok aecM($=%t\$WPo59\69r]""X.i$O.RA?DuE֙䕥d|`b3詏M7 MjVZEz0&g̙r`ibKFvq [Cz 'q m;KKcғOqaNc&/N xՠm_\tz/z6lng5u L"q\^+^OZY")\6'%: ?/<<:kF: bOp53E2RYjg }Zm bz+}QYYľ tA NTocI\cm3ﵨ%%+]ܟ,Fâ9.X)rMuT#2+$q*4xV\dٝSn2y*j[r_2ˀX_ZN**w`%-Z+$9qtwnJ׆g\Os[bD2ǏC29|_o,.ݒ[NƕE4!M<edݱLkb ﲏbk;foㄙ=[z `/*T4 -ǧnjvWAOX1Iƚ3$A;²˶ %5U t;qqD&wwv"d:h6i^sϸ ŵO>˛MJN@OG seSvS7TgN mF ŻL )il |+RMՊ'%K}#a>q\J4_:9f[.p'X$ViS#ěo/f}*+>S3Um5B]F=u fA~BN5"FMxk٬ nP,bg.t+uX#E:{,EUi)߷{np zŠB4G:3cT&)gKѺvso1X f`a'^?BmvikPv9 ^0,(IT:N)X3D ȢJZhϐ+j82ϹC8$]'fOcq~C :*QU4:w@R$PJaA~T}Uv0^yF3J4 !!q7(,mw ݎs ݒ,dwv{*=9lB<.s=yw,HƲު\%wXI"}tm!jB'~ֿ>鲂CX'OӰ) vkFOx N$.Hbjdg9$vU(Q#9`M!jyaX PY [~tU* zMҒVɮ]*-46 3rFq1J8nT"jX`uٜ)@yd,[ӭ cG{V \.hxvHr;Tӽevir[cɰŪZs AgIEct #[-uL uTå ?䁲hB ~{=lďP7oaOo+$!u #>dJYX@fvs*vDH"+v*2= 4:[65plSA Ost!݂r 1> r" h1%XD{#UZG[EtE42&Xɉ!j&VXw 9+3 ۭ/cfJyͧ~0Dق]SRYGѰiқq濌9+p,9%wJE'PFJ!&)zBkbN/"dHKGU(i\# -s,2pcR[Ȋ{:!"Etu"qnJ X{c{GnC:0X0Z.$\r;oԜhZdM%@ c_2OmDe4@9IoΔ@H gޔ \(Y E`bI>ymkWSC?Z˞n3{CPl8h85i {C(LB#cNB)q'4z meS9DvbMĮ٨Lޭ!\' 5(cl]BbPfz\vvH; K*9`kر̶2&!Ţrf ])txi4Թ{3sЁY)V-fhK>ZFkm CiVTjVSEޞuaˈ/E~X$ÝF! r4e?_~{ʮm_{Hp_FF:j Ԡz{W2s5RE ]ܩf?{ M]mdz{202ӯFn@1ԚVqT  &Аn%^V<(JmBLjeeffV9K6=K~_))Aƌ܈pG}- ?M{1eoT|,p=tSk/pQt;WL ~=%6MC 6wuy}ذKZ+ [υ#i֤( l52e`Ґ bp4ﭪ0?A[V O_4|&hh:?ZYkMA_j9J1XU=-5sWrZ/V^&lE<\#H2y3_sK#7O)$[ڸ?r\18p_,' Ÿpp͕v6el=}RP(Cmp9-;6S6L}VmΔ\;teխgxQN(gʔz}䖵"ϣפ!r nEո_VSے!lp+k/4i [˼zkJWʩ+ XeV-q>xaXo\kRPGgvkEbN'P:򇎦Χ d]o~'5ce:g40vN/f(|ᮼsoS([׳^p,_yT/:䇩`2,ۨqC&y.HCs` 8[Y)Xy0* T]MD=K3]lgSVnOWJL%7ʶE\}z}'(O$146ČT"Fid]ND6Xo@,#^5/PYvSm|j/^?։t/|3<i'kXzTTJ;saP͔;&n:JuAe2=3%?h"X'E/*,:FuD=cQ;DO[G_?];}حR$]coHVv_ C3<텶J$BҚI^hIg -P""4IiBz`A8/|g*S)hv_ސD!@P4CG|kdQ:,Ef,dc&:jIF%pűvQ%XdHpkD"Zm"\LifˈLGxxjrqn^vDUҠڛ(?m:#vk$A a~0uCd{=OFjIֆ⺛V/* /1六5kϽwXS3+}ڱ6*KԀʎTB֓p0"Ȳ?8n04gOTO |Xdτȗ=DCVݣ-3~W<9xogyswRE| "3t(c^޶ZCVY%QTW5GV`V^ek܃Fb >㙰v%s3Aőb +544`(~~I![b6YCoITN! WflH(^2[?<)P=:8JmZ|V/< B*WnpSsZ )B~yIA'EvQȡdQuKg@ҳd~pr^3n1[ ¸~"h|>U|;<6(*;t0Q9HHX[n;Dhfi>X( 5?g5[ZȎg1"ZX9z{T/w/e^oI,WC\Wa2ך+Y)7LA1үx$`-S &&D[Q @b=Pȟl\'%=,U Y]G7:Y6A| eI6th+Gk.yhM#vM]'b ygϻ04M5!cmʣ}bܠ(cx<cܗ-U,GLSml&oi;q;&s+yd*E$ gUZlI.bj+vZ4i41E@IoV9|O aqYÆ۴~X©grlV"aH{B1_n. s_%<g(viskX?pp;x8wކě5Fy {c,jz\_A'Sѝ1c:n_>(1t"ßm}(̲J8va!㝟oEI-C Yٯ}_wn=Ni$:|CQH=6VP$[ljaR 5:}4f7l)Ki֌{+zz(H,[r8W92;sͨfZ_Nt78G9C=E/[lNy7ӑ pΗE-]#u ռ5y29D 8@uXkQm OZd40'热@1;tc{/ɇ>x{U 8(6ClI% ҳI_} zttL^*WP%1m%y 5':z5}i3Df L7E7ˏ&p%i !nYW{_ y:kM\=vOzV>㸌BVBqcEf4ZN 2kO4@LDu)l<}4RR6yURa&rY*vWo l1[\Ɵ;I2$Ub.f0 Y3+!Qڒ0q. )Eځ9}֫I@DҰWHb^ԡHNv,ȅzƁZ"LO1ydݨ<싷-3黷CVCJ*_kaW64dO-Ef2[l?DuG_"d200_c9}r!]FD$TĄeïD2jF !p&Ԃ0D'tτF,E1#C2ݙTNyJP-Г҂Xă.Z'f.&J H3&s$3]$|+]ف(Z!og~ YZ