python3-oslo.utils-4.1.1-150200.8.7.1<>,hop9|x+D#K`b4:P@x e R=B2[7|kö$ y"s±?;h=bdYAJW˼kO7(av.W>-{_%Q$ wEG-p5xu:w uB$LQ$P^ʼ)humTewwO; 2o)Ȋ_a>#fmh([pU>>h?Xd ( @ 5Va w4 l    ,p - /|255848H 8| 9p (989(9:p(:=p(F_GtHITXY\]x^-bTcdefluv w xy~z TCpython3-oslo.utils4.1.1150200.8.7.1OpenStack Utils LibraryThe oslo.utils library provides support for common utility type functions, such as encoding, exception handling, string manipulation, and time handling. This package contains the Python 3.x module.hoh04-ch1cNSUSE Linux Enterprise 15SUSE LLC Apache-2.0https://www.suse.com/Development/Languages/Pythonhttps://launchpad.net/oslo.utilslinuxnoarch . hh ''//;; + +,, A A//=u=u?e?e   O OW!6 s (> 7[T: U U '' >>@t@t@w@ws@s@ccAA##![ #j H'HE+ N0/^ ?(E$ l\'A큤A큤A큤AAA큤AA큤AA큤A큤A큤A큤A큤A큤A큤A큤hoho^QXho^QX^QXhohoho^Q hohohohohohohohohohohohohohohohohohohohohohohohohohohohohohohohohohohohohohohohoho^Q ^Q ^Q ^Q ^Q ^Q ^Q ^Q ^Q ^Q hohoho^Q hoho^Q hoho^Q ^Q ^Q ^Q ^Q hoho^Q hohohohohohohohohohohohohohohohohohohohohohohohohohohohohohohohohohohohohohoho^Q ho^Q hohohoho^Q hohohohoho^Q ^Q ^Q ^Q ^Q ^Q ^Q ^Q ^Q ^Q ^Q ^Q ^Q ho^Q ^Q ^Q ^Q ^Q ^Q ^Q ^Q ho^QX^Q ^Q 08d18bcc317ca4f59b41e34f1c4e1b32cf327854488235c255c94e4390b3247cc5d455312590279fcebf530997a67e71423b484b4673d868eaed62047e2f82dc01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b809fa6f16120b99820582eb15924358dd05b30504ff486c9172a22ef365ca8967dd4a61093e8d613cf6834a5b8333e202662c8bf6b2b6151b48d3bd7149a53c9df6a3b6d1d83b9d05b705608a133f5e7927fe429d36073d56479e0466efb61fae3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855758091a6ed2dee196cc18d7d1acf67f82e50f4833db4eecea8d2dca34548d5c8758091a6ed2dee196cc18d7d1acf67f82e50f4833db4eecea8d2dca34548d5c862e4be0995774d294f791f69adffc4b44a829341ec5bb6a63affc44abfd8682cb37cc7fc666155da2d275addf8426bf0cb0455d553336955597fa9aa734e82cd80bbb4984d8706c323eb0923d39a4d08ef1f3000267ac4df6eab9ad1975df6b9fe44c782c4416cf504e75f7f4ae1a80c19dd80ea662561794d1229111c5224c24a76f7418a880a0ea505a1f6a86655c98f85b09ea15a35d6b56a7156c01a508d3a112b6268b18b6b039a9e76852edec2aa94678edc326c1e4ccd562d431428a4f80d4c2c0a4ac07722e816c8684fa2eb6869bf1a974575c8d1805403ad941c7fdf4e1aa1d31410b2a72f514ef9fbc7551b7a0108b7ec05b35bb5ba699be5bdf099a1c470c0d90b09cfb84617d80f5b3b6beaeb89bc16f846b90085f29627a4af514a495c226e7c2b9784856c598c1ee41fb00ebe741d3ae4087181f501a53dcf93c20b77bacc698e940ce2c980d089aab5101b0c41abfcea8f55a69f4410ea938456931635d1b2dd636b2ccde6515e11c494a56bd8cdf77b181f26770a917d9df7dfe4ad801339fe623e0513fd903f362f6fefa62918217018ae78062223aa5b78adaf8afffb00918bfe5f2c0c4146febde0752ae037bf3033e994602973b0f36d80df67f206993a750208a9330965901d7381145d39477da9c61dd5ffbb992593b6de3064d658d1f1ed768c3599566d2db23b37c783bd4aa756bfe34fb637f3f0e56e3ccf8264a002aed371495b0fc1f25b63af89b207c397dce5cb2ae0860b1e0e947a63009329565645562ed7ca28f875948899736826357f17abcfb34c13d7ff96b59334b189e0b7445e09098a04589152e582f935118d35d470dd6a9a74e6619f1fc4a6dce497fc6d765903882deaf26fca9520b586fb1a8fcd0d581dc580efbcb12543f119733eb8cd180f57fe871779e37df5e28197a94ac8345f58f7d02bc7ee5d58cc50e293a875be912fa9081c81562d3b1ea2b480627543bfc2d669345f0627c9623235601385660da69e5ceb3799246543dc96bd2d5c40e6e5920ae9ffdea1373a5e8d35abcdc34b507e8e65fb1151423f1e310eea415ab82bf39c94f66d6d4f6f8114889a060715927f4f0f813449856f71924ddc61ef7e235c6a10f4dbcdd2d63976f4f6e52dc6ac78e1f54e13fc6317e4521c6ef0a7cd9c615b3d76d9686f6794dd56306f83ae34a119553f8f050dce63a892c1b8403afdb20a6c263d81656ffee2de17a7e0003ba1387b3f4aad344ff9ead0de497261370d7f426e0212c0fced9db55f29205895d2d6842fa93803e8bb8f72d8a16490657d409a2eee1148716cc2ecbb8ac6993c8734c23cf28c6f12f5807de53a20c376a4356e471a0656dd570d3c78c9223e558ee4c15fe3830ea8eb95808b039f1276d0715201dd6dab52a5a143bd5698ebd7dccc7cbf4b0725e56fe0c61fbb86903af56c0aefd2bf681655db52fc88929985165b3fae93f54452b6ad6c8e1076d91a266854f5a18a8d7457c3a37987bf72465dac2dda2ed46d914cf7071f2e281ce658c25ecc4227efe689c3bca9a95c42d2c6915f4903e00ff0ee8451d91b22297705ac3b1f2a1169c6d6afa6c7a546190cb7935ae67f863b9e973da4ee4b7e3cb4871edd832cb57cbd1b891b1b9a5d27c62acfa94b91b50121fbb81cc18e3aabf8a0c26ef9b109a06a4c786190823317e9ffaccaadbb1fdb5936dafd905308013a5669519e9fbac48cd745b51cc80d3313aca7bb35013f56dcfee2cb70056e6a63c4673941ad305942b7bcd1dad8388a9b546ef4603ea631405c367309317e2f28c4fefcde63f8e3fb5bd661f1a08871f9c71d7f5163fb53d2c540d181bbcb269b1360be46dc5b7ea91436df82e4611e3d9de4918c3aa7563b4e29c151a00be86260bdeb15ad110b0b5940e27c97474fa26a5eeaec9cd56b0fc66072e93dfb34975ec7f05965cfaf08d071dd8d29a1e509d0f0a83a3a9990b5c5a8844fa2fb8c85b2b5158c9265c0c13acf9d20dc7cd3a4b0200994a530703fd6454f10ddcc543e35b04d206a9cbfe783541d228bc7ed680c0f5f90af06b40006a822a4959f01b5bfca9dfd9336ceebf3c00713125ef12345f7d3f19d62e601c48bf17107d0072d2bc64ba997033944b52ac905a61bd737d364481725b00879ced07fe1b351a6be3b08fd1b9cd3a8cd92f75aa8d1f5f8abfa4af71ae81bb3ba5dd5d16a87efee60ee738ecb899fcd37e3ee874781ab9399b76e238a8ba4ece9d5573d844e3542b227d06c2b0cc67cb68ed28b39561d3b57f2e5171bf0a512c90e82f0890a4f3c5dec58732c34a6ecb2e58390f0d067955f22be3bb37de15361b984094868e104028127b234f17c941b5f38d5bb234e46e8d8900b0f41714d5f8b523a8016a128b4e9dfd6c08614ced092f58beebea29ab7482de3f648ddba4f1934843f6c93b48f7bd6e4154872ecc9abde60b2d5e24bb9a37c59fa44013fb13969010b471b366bfa0bfa8faaa22f6d722dbc776006d27f522ddf81af4ffa5a97cb17e29b3e56f887cdf0d9a70cc5a3348f1e5e2550e53c3f412ac594b63aaa7dd6708795fb7638ba01632b74c7cd850631c6af6ae712c61dc7449643db0fb8a49d0c4af4c5d911e901632b74c7cd850631c6af6ae712c61dc7449643db0fb8a49d0c4af4c5d911e9febaa05cf22ce38d7f568dc9ec4481b00a18f2a2ab5e03662dd834a253c3c7471f955ed13c27ee3703e62ce2b89844fa7d0c85f9a7ec2e2c2c6fb69ca9ef90cd5a74bf7f751ff780ce72c2cf9d22841073ddfaa1fbecf199ca9e3aaed08ce2134aeebab6ce0704364970ba1e5e3425cb8035ad54d99aae6d0f9a5466493883cbe23d1c5469f93078c8da84a1dd8f03ae1bd72851bc993907db9b6bf589e0c6cf5ce61a238f779d3fad4c875cf7a1da76109359a0364a3d21acd63b34d5b5ab6fc56b4a4ba7c50316d7b3254d8d703bf2cc570624433fa8866396692084b3e7e2b25f2d258d0ae26e8a38f15bb6bb09fa8a2916571a9212afa8a34118490580b3fb7a185cb666e21c0ebd822b4078d55f6366a87136f6972ec1c999b66aa2bf1f82c4745be3033bb697c22f2285e2587771e60740eb1938bce10059587625929844cbb58715abd60e95a4f125cecb6051e554b2834a942257eded294e01163d69fcc92110555b5ae38ed7be08e3896b1286e08d93c3268f8fe3db66a0373470fa9bbb4d584a961e389067be9387f352d6dc8d267a07ec2efc5c96f0bbfc8e5cde9ca4cb5116eaebfa206dcec8edf703e93b24b847b3ec9f469d3d9c52083a1403e0e671b4713ec7ae5a427d7e0c59af885d2307c557f080354bdc615ec60e35ce904cc25d3f82342470cb75b76b8fdb6c89779a8f2fb8fba373e7f17406c42f43a49f63e9d1fa2719717e9fe59179342a0b52bf3e945528d7b917696107444d8334729264b26f5aa90c86139ef5f91237fdbcfc852718e95937448ab1033cabd01ca88b4066d809c1c0e4b75465e9f3e30d40c95d4c7c7c5cec8bf0267a436ba8abd1afc93ec2ea828f60a8ea682093ff21b703e08ba62f4a6fab7ca537c029c00cc039a85b840f891c5bada2a60cba4f84d11abd6bb58fb0caf3d2f99da0700ff1d677fce4b446d2502db93a997a11c3a23906fadc0f833bef86a7f35d4f91a13916620a17bb05809d07d4c40eab0600dc67bf81efdee05bb4267f132c5611dba690a2743535954af5d15cb5e904e1c68d9a49e41ce84f7f19d2f2a4f7534f04973ce0a8ed3ebac13f8c403a6af20c8ca14fd709ef5b4eabac44e0e00090745d6ef088a2a875aae33ebc22cd6ab4b98060a8280fe37f0f9a99d7092a9f5f07eb5282f7071d2485f7f602aa0c72edda2df503c502a840144af811c374c4b955f5a9276466565b712d18a3376c9bd6ce0bd3dec147f427cceaaeed20a918d7f5549d78f00897c7c356c025bcaf103f15e55f36517075bf064b6bdb73a4b48fb2db275dc015f7a93cd92fc0069fed19e2d25dd003aa9d4be14d04a1b082fe5c8ea4265dcc8b70cf8a0c0f802eb2a53630bf71430a2f244880a615ca7d709545e9287fd7ad15a2bc9ae4722d1bbb9dd37353731a1ebfcafd74869b9d3bb203c5ad52a577ceb16db268552a9d3ce0c24078317e7a4486191fa3ae8bde4b80c23cb3cb4b050deb236dc404e8946c722c3c8c1ac9380e559efcf998fac26127f11d77f218692354ad3322fe8a54688541c4f866404a43a39e46c0496ddb42c0844890e260f5a9545173aed2d139ffc49d0e1c1e9ca4b61dc70436ae74609e75746feede8d019d5e59760b5be475879172ebdc2cef4971820e368ee3db4173c7af47bf59e67e946f3bded73a9aae599a609c5af22f9cb8586078cbcd8b4d36134b676eddcc8b082cf08ea908622f736d46a9aa50599b470ae7c0c06ffa3c1bb1c9f2147acc8b082cf08ea908622f736d46a9aa50599b470ae7c0c06ffa3c1bb1c9f2147ae3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855342bddc0eb7b3c69d9976c600d34fbb5a8fd56ad571b633d1c6d1ca188cbd0b6342bddc0eb7b3c69d9976c600d34fbb5a8fd56ad571b633d1c6d1ca188cbd0b6cf78e35083716f0ccac74b59b27e8ab5402bec179d2c2df861e316cdeed5de74cf78e35083716f0ccac74b59b27e8ab5402bec179d2c2df861e316cdeed5de7406ea969093b215e3cb0d16784848d26334788c60c307b00f91ff88aa69e557cec6bbe8cc7c9bf319a04f946178de6c60be5a40ec637ba9f9f725653c5453f84ae8c759c4c971e427409bf6db80f4c7aa98cd0409c767c2cb357a2713d4751161ada8aa7bcaa662fb91194a78c3f916e88f50c34acb53575f8436edc746ced41c8f827b9629c13ec9b53f442f743f454c48d8d89130727ac249c3c68937ae3e74d00d776b8fd10b28f12635045650bc2cb0b65b0f5c157f974b0c66e4d59aee3dff93d524fa53c616e58cf0aa41bb91631b71ba5994c1847c75b066e1f541d074fee0c44394940870183221edfb6c470e4c13d512317829441ad6c73f49e8fe45443467bb084f002554c44d154e43e67b3d82b582ea5f6140b0a98b314ceffa547941fab8e19f0848a8a594cca387ac49302b8b5019ddc7417ca6579c759bfcb03a72bfe24048b6570520170fdc44427a25d18e51b879107b1a9b3365d2ac5e04ce8a03244e733cfc1f615b463adeaab5a0eb1fb386f08fba33b4afd1503238fe014a35f2a4291cd061e359af2a87074adc1988145094ce7bfeacd54d92dbc433daa8a08dcb7f6c49d6132db5d1ed569160af144a934ab114753bf1649092bad2ed09f68ae82e1915118e7cb121496ec1d13702707eb52587490f6beee1eb11a2aa44696135c49ed3aa2cd0410ad9ad980b66365a0484bc4bc6249632396a989e3e4debfce725c0645d4fab6a23dde0918ef24983f217b3719acae682abd618cfa48ef494ad9b1a95791e52de931868659a9c3fd1ab94d64e52e80381dc2c82fb4688c63c3469b4a10b53149ba64081fee25bc925f7ca3a28f64b96981ce9a7e6ea95f3088d01139e30cd9dbd71c2cca13b16a346b9451ff802d7f6d204ad546d5d8f04fe034ae3478a2a8c3646f4f5eb21d3bb9d83dc28d6951e20f9ad6c8fd0c4f6d4d9916d4d6cb80f4283cc9b47eebda27d78b8ac05d643147271f2abd27886b8f49069ca8f704b51f9299cb46a16c4cd1eca6be8fe59453403bf5a02254c09e8a9bcec8067104652c168685ab0931e7868f9c8284b66f5ae6edae5f1130bdca8380fb968fc04c25be1f5e821bf100aeceded440a24209f278d7032dfcd14rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootpython-oslo.utils-4.1.1-150200.8.7.1.src.rpmpython3-oslo.utils@     python(abi)python3-debtcollectorpython3-iso8601python3-netaddrpython3-netifacespython3-oslo.i18npython3-pyparsingpython3-pytzpython3-sixrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.61.2.00.1.110.7.180.10.43.15.32.1.02013.61.10.03.0.4-14.6.0-14.0-15.2-14.14.1ho@^^r @^p^j$@]\7["@Z@Z@Zp^@Z\Z1@Z YV@X@W@WE@W@WzOWQq@V'@V`VwVqR@VO @U@U6@Uc@U@UnUU@UuUKSTTgTZ@T@T@daniel.garcia@suse.comcloud-devel@suse.decloud-devel@suse.decloud-devel@suse.dedmueller@suse.comcloud-devel@suse.decloud-devel@suse.decloud-devel@suse.detbechtold@suse.comdmueller@suse.comcloud-devel@suse.decloud-devel@suse.decloud-devel@suse.decloud-devel@suse.decloud-devel@suse.decloud-devel@suse.detbechtold@suse.comdmueller@suse.comtbechtold@suse.comtbechtold@suse.comtbechtold@suse.comtbechtold@suse.comdmueller@suse.comdmueller@suse.combwiedemann@suse.combwiedemann@suse.comtbechtold@suse.comtbechtold@suse.comtbechtold@suse.comtbechtold@suse.comtbechtold@suse.comdmueller@suse.comdmueller@suse.comtbechtold@suse.comtbechtold@suse.comtbechtold@suse.comtbechtold@suse.comdmueller@suse.comdmueller@suse.comdmueller@suse.com- Add upstream patch CVE-2022-0718.patch to fix incorrect password masking in debug output https://opendev.org/openstack/oslo.utils/commit/6e17ae1f7959c64dfd20a5f67edf422e702426aa (CVE-2022-0718, bsc#1196454)- update to version 4.1.1 - trivial: Move setup code into setUp helper - Switch to Ussuri jobs - Remove universal wheel configuration - tests: Convert remaining tests to mock - tox: Use upper-constraints for docs jobs - Make mask_password case insensitive, and add new patterns - Ignore releasenote cache within git untracked files - Ignore the .eggs directory - Support "qemu-img info" virtual size in QEMU 4.1 and later - reword releasenote for py27 support dropping - Bump the openstackdocstheme extension to 1.20 - tox: Keeping going with docs - Update master for stable/train - Add test to check scientific notation on disk virtual size - Update hacking for Python3 - Use unittest.mock instead of third party mock - remove outdated header - Fix invalid escapes in regular expression strings - tox: Trivial cleanup - imageutils: Report format specific details when using JSON output format - Verify the sanitize keys are lowered - Update the constraints url - Make mask_dict_password case insensitive and add new patterns - Fix regex to correctly recognize scientific notation with QemuImgInfo - Flatten test case - [ussuri][goal] Drop python 2.7 support and testing- update to version 3.41.5 - Fix regex to correctly recognize scientific notation with QemuImgInfo- update to version 3.41.4 - Update .gitreview for stable/train - Support "qemu-img info" virtual size in QEMU 4.1 and later - Make mask_password case insensitive, and add new patterns - Verify the sanitize keys are lowered - Make mask_dict_password case insensitive and add new patterns - Update TOX/UPPER_CONSTRAINTS_FILE for stable/train- switch to python 3.x only client- update to version 3.41.1 - Add Python 3 Train unit tests - Cap Bandit below 1.6.0 and update Sphinx requirement - Add digestmod when using hmac - Dropping the py35 testing - Replace git.openstack.org URLs with opendev.org URLs - eventletutils: Optimise EventletEvent.clear() - OpenDev Migration Patch - Update master for stable/stein - Mask encryption_key_id- update to version 3.40.3 - Update mailinglist from dev to discuss - Fix docstring formatting nit in uuidsentinel - Fix race condition in eventletutils Event - Use template for lower-constraints - Remove extra copy.deepcopy - Fix exception raise at rpdb session - Expose eventlet Event wrapper class - add lib-forward-testing-python3 test job - add python 3.7 unit test job - Remove moxstubout usage - Avoid calling eventlet.event.Event.reset() - Avoid double-setting event - Update reno for stable/rocky - Support non-dict mappings in mask_dict_password - Clean up .gitignore references to personal tools - Update hacking version - UUID sentinel - add python 3.6 unit test job - Don't use monotonic on Python >=3.3 - import zuul job settings from project-config- update to version 3.36.4 - Update reno for stable/queens - Switch to stestr - Imported Translations from Zanata - Add release notes link to README - Replace 'assertFalse(a in b)' with 'assertNotIn(a, b)' - Fix breaking unit tests due to iso8601 changes - Capitalize Oslo - Add private_key to the list of sanitized keys - Fix exception with secretutils - Clean imports in code - Remove stale pip-missing-reqs tox test - Update links in README - Add bindep.txt file to prevent fallback to generic list - Trivial: Update pypi url to new url - Add -W for document build - Handle non-string keys appropriately - eventletutils: Fix behavior discrepency when reusing Events - Clean old output before new doc builds - Document specs_matcher.py functions - set default python to python3 - fix tox python3 overrides - Fix project name in user docs - Remove sphinx settings from setup.cfg - Updated from global requirements - add lower-constraints job - remove 0001-Fix-breaking-unit-tests-due-to-iso8601-changes.patch (upstream)- Switch to stable/queens spec template- add 0001-Fix-breaking-unit-tests-due-to-iso8601-changes.patch- update to version 3.35.0 - Add a mixed mode parser to string_to_bytes- update to version 3.34.0 - Follow the new PTI for document build - Add method validate_integer - improve docstring for last_bytes() - Add method to escape ipv6 ip addresses - Add missing information in docstring of validate_integer - Add method last_bytes in fileutils - Cleanup test-requirements - Updated from global requirements- update to version 3.32.0 - Fix some reST field lists in docstrings - Remove setting of version/release from releasenotes - Updated from global requirements - Avoid tox_install.sh for constraints support- update to version 3.31.0 - Update reno for stable/pike - Imported Translations from Zanata - Prevent deprecation error messages from pkg_resources - Add method to compute a file's checksum to fileutils - Use six.binary_type to point to the right type - Updated from global requirements- update to version 3.28.0 - rearrange existing documentation to fit the new standard layout - Remove log translations - Allow scoped ipv6 addresses - Add missing documentation for secretutils - [Fix gate]Update test requirement - switch from oslosphinx to openstackdocstheme - Update reno for stable/ocata - Remove split conversion to tuple - Adding a check of string type for hmacs - Update URLs in documents according to document migration - Updated from global requirements - Use Sphinx 1.5 warning-is-error- update to version 3.22.0: - Make method import_versioned_module work - Add option to not truncate built-ins - Add method is_valid_ipv6_cidr - Add method is_valid_mac - Show team and repo badges on README - Extend specs matcher to support ">" and "<" - Added the token 'encrypted_key' to mask_password list - doc: Fix docstring of method bool_from_string - Remove discover from test-requirements - Remove references to Python 3.4 - Change assertTrue(isinstance()) by optimal assert - Add __ne__ built-in function - Restore operator - [TrivialFix] Replace 'assertEqual(None, ...)' with 'assertIsNone(...)' - Trivial fixes to the usage doc - Update homepage with developer documentation page - Add missing specs_matcher documentation - Allow 'get_all_class_names' to pass kwargs - Improve eventlet check when selecting Event backend - Add reno for release notes management - Add Constraints support - Add method is_valid_boolstr - Add threading<->eventlet compatible Event - Add utils for validating and splitting quotes - Create dictutils and add 'flatten_dict_to_keypairs' - Add toggle 'dashed' to 'generate_uuid' function - Updated from global requirements- Adjust Requires and BuildRequires- update to 3.16.0: * Fix mask_dict_password for non string/dict type key in dict * More unit tests for specs matcher * Imported Translations from Zanata * Add Python 3.5 classifier and venv * Use an actual well defined parser for spec matching * Remove unused LOG to keep code clean * Updated from global requirements- update 3.15.0: * Add basic docstrings to stopwatch has_started/stopped methods * Make mask_dict_password consistent with mask_password * Updated from global requirements * improve tests for mask_password and mask_dict_password * Simplify boolean expression in executils.py- update to 3.14.0: * Support json format output from qemu command * Fix flake8 issues * Use is_valid_ipv4 in get_ipv6_addr_by_EUI64 * Imported Translations from Zanata * Allow assigning "0" to port * Updated from global requirements * Fix method split_path's docstring 'versionadded' * Updated from global requirements * Updated from global requirements * Avoid catching generic exception * Remove method total_seconds in timeuitls * Fix is_valid_cidr raises TypeError- update to 3.11.0: * Trivial: ignore openstack/common in flake8 exclude list * Move method split_path into oslo.utils * Imported Translations from Zanata * Updated from global requirements * Imported Translations from Zanata * Provide single step check if eventlet is monkey_patched * Add method is_valid_cidr to netutils * Updated from global requirements * Updated from global requirements * Add importutils.import_any method * Add excutils.exception_filter * Explicitly exclude tests from bandit scan * Add CHAPPASSWORD to list of sanitize keys * Enable bandit in gate * Updated from global requirements * Add method check_string_length * Add missing versionchanged for configdrive - use renderspec source service - update spec from upstream- Switch to .spec from rpm-packaging upstream project- update to 3.6.0: * remove bandit.conf- update to 3.5.0: * Updated from global requirements * Narrow mock for getfilesystemencoding * Update translation setup * Add excutils.save_and_reraise_exception force_reraise + capture * Add encodeutils.to_utf8() function * Create secretutils and include 'constant_time_compare' function * Fix coverage * Add a mechanism to mask passwords in dictionaries * Add "configdrive" to the list of keys used by mask_password() * fix fnmatch.filter in non-posix system * fix fileutils ut code random failure * Add missing doc index for imageutils and fnmatch * re-implement thread safe fnmatch * Fix the bug of can't get the desired image info- Update to version 3.2.0 * Remove Babel from requirements * Remove duplicated profiles section from bandit.yaml * Allow get_class_name to accept bound method and class method * deprecate timeutils.total_seconds() * Move imageutils from oslo-incubator to oslo.utils * networkutils: drop python 2.6 support * Remove python 2.6 classifier * Fix wrong bug tracking link * Refactor Port number validation * Add useful 'time_it' decorator 2.8.0- update to 2.8.0: * Fix get_class_name() on Python 3 * Added ICMP 'type' and 'code' checking capability to 'netutils' module * Imported Translations from Zanata * comment in write_to_tempfile * Use versionadded and versionchanged in doc * Write document for each unit of oslo_utils.utils * Fix usage of "deprecated" markup in docstrings * Just use 'exception_to_unicode' to handle exception to string * Add 'secret' to sensitive keys * Fix coverage configuration and execution * Use a stopwatch in 'forever_retry_uncaught_exceptions' * No need for Oslo Incubator Sync * Make forever_retry_uncaught_exceptions handle its own failures * Ensure stopwatch __enter__, __exit__ are in docs * Add some timeutils stop watch examples * Imported Translations from Zanata * Move 'history' -> release notes section * Fix bad acting classes and 'is_bound_method' check * Change ignore-errors to ignore_errors * If 'bool_from_string' provided a boolean just return it * Imported Translations from Zanata * only capture the ImportError when importing * Add 'token' to list of fields to be santized by mask_password- update to 2.5.0: * Updated from global requirements * Imported Translations from Transifex * Updated from global requirements * Updated from global requirements- update to 2.4.0: * Updated from global requirements * Updated from global requirements * flake8 - remove unused rules * Bump monotonic to 0.3 to remove exception catching on import * Provide a common exception caused by base class * Imported Translations from Transifex * Allow access to reflection 'get_members' * Updated from global requirements * Imported Translations from Transifex * Updated from global requirements- Unify spec file #2 - Remove test requirements - Add -doc package- Unify spec file. Use fedora compatible files macros- update to 2.1.0: * Imported Translations from Transifex * Updated from global requirements * Adding checking around the monotonic import * Updated from global requirements * Updated from global requirements * Add oslo.config to test requirements * Remove oslo namespace package * Updated from global requirements - update Requires according to requirements.txt - remove 0001-Disable-deprecation-warning.patch- fix requires- update to 1.9.0: * Updated from global requirements * Imported Translations from Transifex * Add write_to_tempfile back to fileutils * Use monotonic library to avoid finding monotonic time function * Fix exception_to_unicode() for oslo_i18n Message * Add fileutils to oslo_utils * Updated from global requirements * Add tox target to find missing requirements * Updated from global requirements * Updated from global requirements * Switch badges from 'pypip.in' to 'shields.io' * timeutils: fix newer/older comparison with TZ aware datetime * Replace parse_strtime with parse_isotime in older/newer- update to 1.6.0: * Add pytz to requirements * Imported Translations from Transifex * timeutils: utcnow() can return a value with a timezone * Add 'raise_with_cause' chaining helper to excutils * timeutils: deprecate isotime() * timeutils: make marshall timezone aware * Advertise support for Python3.4 / Remove support for Python 3.3 * Updated from global requirements * Add exception_to_unicode() function * Remove run_cross_tests.sh * Imported Translations from Transifex * Move versionutils into place and remove deprecation tools * Denote monotonic import ordering + usage * Add liberty release name to versionutils * Expose opts entry point for version_utils * Switch from oslo.config to oslo_config * Remove oslo.log code and clean up versionutils API * Remove code that moved to oslo.i18n * Enhance versionutils.deprecated to work with classes * Add Kilo release name to versionutils * Allow deprecated decorator to specify no plan for removal * Uncap library requirements for liberty * Add JUNO as a target to versionutils module * Add missing reflection + uuidutils docs * timeutils: avoid passing leap second to datetime * Add pypi download + version badges * Cleanup README.rst and setup.cfg * pep8: fixed multiple violations * Use oslotest instead of common test module * Use hacking import_exceptions for gettextutils._ * fixed typos * Fix violations of H302:import only modules * Adds decorator to deprecate functions and methods * Remove vim header * Add `versionutils` for version compatibility checks * Update hacking setting * Updated from global requirements * Imported Translations from Transifex * Clean up TestIsIPv6Enabled * Fix test_netutils: stop patches * Add a new string to the list of masked patterns * Provide common `fetch_current_thread_functor` function * Imported Translations from Transifex - Adjust Requires according to requirements.txt - Add python_requires to _services- Add 0001-Disable-deprecation-warning.patch- update to 1.4.0: * Add a stopwatch + split for duration(s) * Allow providing a logger to save_and_reraise_exception * Updated from global requirements * Utility API to generate EUI-64 IPv6 address - update Requires- update to version 1.3.0: * Add a eventlet utils helper module * Add microsecond support to iso8601_from_timestamp * Updated from global requirements * Update Oslo imports to remove namespace package * Add TimeFixture * Add microsecond support to timeutils.utcnow_ts() * Make setup.cfg packages include oslo.utils - adjust Requires according to requirements.txt- fix requires- update to 1.2.1: * Return LOCALHOST if no default interface * Improve performance of strutils.mask_password * Move files out of the namespace package * Add method is_valid_port in netutils * Support non-lowercase uuids in is_uuid_like * Add 'secret_uuid' in _SANITIZE_KEYS for strutils * Imported Translations from Transifex * Workflow documentation is now in infra-manual- update to 1.1.0: * Add get_my_ip() * Updated from global requirements * Add 'auth_password' in _SANITIZE_KEYS for strutils * Updated from global requirements * Activate pep8 check that _ is imported * Add uuidutils to oslo.utils * Add pbr to installation requirements * Updated from global requirements * Add is_int_like() function * Hide auth_token and new_pass * Imported Translations from Transifex * Add history/changelog to docs * Imported Translations from Transifex * Support building wheels (PEP-427) * Imported Translations from Transifex * Improve docstrings for IP verification functions * Imported Translations from Transifex * Add ip address validation * Fix how it appears we need to use mock_anything to avoid 'self' errors * Updated from global requirements * Move over a reflection module that taskflow uses * Make safe_encode func case-insensitive * Enable mask_password to handle byte code strings * Updated from global requirementsh04-ch1c 1752141255  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~4.1.1-150200.8.7.1    oslo.utils-4.1.1-py3.6.egg-infoPKG-INFOSOURCES.txtdependency_links.txtnot-zip-safepbr.jsonrequires.txttop_level.txtoslo_utils__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyc_i18n.cpython-36.opt-1.pyc_i18n.cpython-36.pycdictutils.cpython-36.opt-1.pycdictutils.cpython-36.pycencodeutils.cpython-36.opt-1.pycencodeutils.cpython-36.pyceventletutils.cpython-36.opt-1.pyceventletutils.cpython-36.pycexcutils.cpython-36.opt-1.pycexcutils.cpython-36.pycfileutils.cpython-36.opt-1.pycfileutils.cpython-36.pycfixture.cpython-36.opt-1.pycfixture.cpython-36.pycfnmatch.cpython-36.opt-1.pycfnmatch.cpython-36.pycimageutils.cpython-36.opt-1.pycimageutils.cpython-36.pycimportutils.cpython-36.opt-1.pycimportutils.cpython-36.pycnetutils.cpython-36.opt-1.pycnetutils.cpython-36.pycreflection.cpython-36.opt-1.pycreflection.cpython-36.pycsecretutils.cpython-36.opt-1.pycsecretutils.cpython-36.pycspecs_matcher.cpython-36.opt-1.pycspecs_matcher.cpython-36.pycstrutils.cpython-36.opt-1.pycstrutils.cpython-36.pyctimeutils.cpython-36.opt-1.pyctimeutils.cpython-36.pycunits.cpython-36.opt-1.pycunits.cpython-36.pycuuidutils.cpython-36.opt-1.pycuuidutils.cpython-36.pycversionutils.cpython-36.opt-1.pycversionutils.cpython-36.pyc_i18n.pydictutils.pyencodeutils.pyeventletutils.pyexcutils.pyfileutils.pyfixture.pyfnmatch.pyimageutils.pyimportutils.pylocaledeLC_MESSAGESoslo_utils.poen_GBLC_MESSAGESoslo_utils.pofrLC_MESSAGESoslo_utils.ponetutils.pyreflection.pysecretutils.pyspecs_matcher.pystrutils.pytests__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycbase.cpython-36.opt-1.pycbase.cpython-36.pyctest_dictutils.cpython-36.opt-1.pyctest_dictutils.cpython-36.pyctest_eventletutils.cpython-36.opt-1.pyctest_eventletutils.cpython-36.pyctest_excutils.cpython-36.opt-1.pyctest_excutils.cpython-36.pyctest_fileutils.cpython-36.opt-1.pyctest_fileutils.cpython-36.pyctest_fixture.cpython-36.opt-1.pyctest_fixture.cpython-36.pyctest_fnmatch.cpython-36.opt-1.pyctest_fnmatch.cpython-36.pyctest_imageutils.cpython-36.opt-1.pyctest_imageutils.cpython-36.pyctest_importutils.cpython-36.opt-1.pyctest_importutils.cpython-36.pyctest_netutils.cpython-36.opt-1.pyctest_netutils.cpython-36.pyctest_reflection.cpython-36.opt-1.pyctest_reflection.cpython-36.pyctest_secretutils.cpython-36.opt-1.pyctest_secretutils.cpython-36.pyctest_specs_matcher.cpython-36.opt-1.pyctest_specs_matcher.cpython-36.pyctest_strutils.cpython-36.opt-1.pyctest_strutils.cpython-36.pyctest_timeutils.cpython-36.opt-1.pyctest_timeutils.cpython-36.pyctest_uuidutils.cpython-36.opt-1.pyctest_uuidutils.cpython-36.pyctest_versionutils.cpython-36.opt-1.pyctest_versionutils.cpython-36.pyctests_encodeutils.cpython-36.opt-1.pyctests_encodeutils.cpython-36.pycbase.pyfake__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycv2__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycdummpy.cpython-36.opt-1.pycdummpy.cpython-36.pycdummpy.pytest_dictutils.pytest_eventletutils.pytest_excutils.pytest_fileutils.pytest_fixture.pytest_fnmatch.pytest_imageutils.pytest_importutils.pytest_netutils.pytest_reflection.pytest_secretutils.pytest_specs_matcher.pytest_strutils.pytest_timeutils.pytest_uuidutils.pytest_versionutils.pytests_encodeutils.pytimeutils.pyunits.pyuuidutils.pyversionutils.pypython3-oslo.utilsChangeLogLICENSEREADME.rst/usr/lib/python3.6/site-packages//usr/lib/python3.6/site-packages/oslo.utils-4.1.1-py3.6.egg-info//usr/lib/python3.6/site-packages/oslo_utils//usr/lib/python3.6/site-packages/oslo_utils/__pycache__//usr/lib/python3.6/site-packages/oslo_utils/locale//usr/lib/python3.6/site-packages/oslo_utils/locale/de//usr/lib/python3.6/site-packages/oslo_utils/locale/de/LC_MESSAGES//usr/lib/python3.6/site-packages/oslo_utils/locale/en_GB//usr/lib/python3.6/site-packages/oslo_utils/locale/en_GB/LC_MESSAGES//usr/lib/python3.6/site-packages/oslo_utils/locale/fr//usr/lib/python3.6/site-packages/oslo_utils/locale/fr/LC_MESSAGES//usr/lib/python3.6/site-packages/oslo_utils/tests//usr/lib/python3.6/site-packages/oslo_utils/tests/__pycache__//usr/lib/python3.6/site-packages/oslo_utils/tests/fake//usr/lib/python3.6/site-packages/oslo_utils/tests/fake/__pycache__//usr/lib/python3.6/site-packages/oslo_utils/tests/fake/v2//usr/lib/python3.6/site-packages/oslo_utils/tests/fake/v2/__pycache__//usr/share/doc/packages//usr/share/doc/packages/python3-oslo.utils/-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:39639/SUSE_SLE-15-SP2_Update/b8cb2b248e48fd0d122e6acf73bfa8b9-python-oslo.utils.SUSE_SLE-15-SP2_Updatedrpmxz5noarch-suse-linux directoryASCII textASCII text, with no line terminatorsemptypython 3.6 byte-compiledPython script, ASCII text executableGNU gettext message catalogue, UTF-8 Unicode textGNU gettext message catalogue, ASCII textPython script, UTF-8 Unicode text executable  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJ TG޸r{*utf-81279a405c6adace042552a4645293cc23ec4f8cca20f389a115b27bd36f2c00b? 7zXZ !t/kn3]"k%%) `>C|78R XSvU:O( ]DvjYn+8E)C>a^' I]_RͿ#9Yxә$jb6x&{&@Q]Cqh\_u%WɕuP LƳ>)7{A{E{o#$d[=x~Zk7R"TWYZ {-Ճt;Cyu<63(t I;巒 ,i#ZcxŖ;OrT־Ϛ$2;hQ;~4Fm<'Oq7T%h LĻ>Ņ) #0gX 'E)7s ٌƾ믒Xi1BCڕ&q&G;)tp&L,V\,DJL;afwr>/#T/>mABt<ߤstA!5w @ѰDO|]dW[V|_(Ϊ(yT =48K [)#ӻU}=s<,HO!y\ 8]UqWt۫E6>㳚ģ@)3L&gnf3V;#y|nN&p5 ֓Ǟ7N[xUMC\-9eGbkS" 9F{J PxXmc/ j ((Z|.*^>c[c]F` 9*ͷFcwF@$a9oug f?{}&:%KA$kˊ(SrL2Ǘ`Ji0yO5ƐCmDGQ%)+M [pLki=Zj4rd&7/Hv/sf^$"Rz&"NcZҏҲE<8RE{ fןp [#yM .j<ʪ+ڧtne@L|!76sJŁUXI i1p+Ņ*lޑ/An2)ӆNCJl4fc^?n Vn2tW~Tn8i$Eo6Ф%o!dϔlF}~+ch,wlGM. %@z51+lsDxW7C#_V_ XA.tZ.ә_ljmTx@|ʕi%7hE]f6Swu^>'`5B&8c09ǟ;2U&MWМg%j"2F c[%G A >:ky9`Qv͈OsImAMv}8ˮ{+p߁A`:]ˍ"8l-6[oJ8DwI;o9;^Z'eY[m1]+olmdӕп"a 6X kez>ofs`:# w'qE9.iĦmp+YHepAJ%|@lRvke^4$SYG8W}dQez+nS-JY]z-ϼm|=r@v uБb&^Bbʼ~z⩇: ѽM&`l%qsm$VF'W:Juv_Zq̔<߽rP4H[kł'̗W?62(m &3ϭb;g-52%P'a?'rfGX6;@saYG+{仨֑7^N)ՃhSQD^NIR(9!HVRriSpEz]YkCJpd \5 lW\0˘e@nd5˰@(dTklcY$@aLX2_P]f nZXc_f J\wQHuFv &\rD]h$J.{wӖYjGӎ?xuߘ߇dz]Se3mI j[F XFlE:J*IݧW-#Zkez &SA^ȹ65rʘwp t >Q2"d2S)czq66'iZTw_''=I_;:~XCy\AlbNp$ߧ t+kE$8Uw?o"Tbm* ZNCtCC<—Zؿ, hz8J/s^l<3o ?CQzJs1aK?EZfQ!h6H$ =ȐpjεF9~.¦mI}8̘·\-:L]=#!<.%Pr@7&{nqܲy$͵kt }D0h}cbzc ֨hӉ]`ɚx/єR2<}2"!<4& B#=*i~3JJҽJm+⚞o'gHڧɷln6ȟ2]o;j! %LM 8#x^:p)"h'=Sz݇c߲ :峳h38d5VAċ o˜ga6 (Z\%kʦWK5XL:ȦT)2 V|*!n@AgVǂ6mپ-JYӍclnȊZk֋!nlz`N gb[2w#xf$|ORL-qux P! }( K/S!d. Ygxu8<[IDvN|~Y)}q6YoeX,g&gIXbǗÙw`mknrF0h 44.a̽{ U amǏ͋poڱ/2f?KR/XTP*zP'q!Uz^OV(7/C&R` n^ &/Z'l>2=~v f,$ZsO]\tSt%hN+W\Z[iY~IL4F0lp"I0dytMSfj<Ľ JR+g׷]#OpNվQNb 7|V@ZTv _LBR]g"e;N^fcsJaAe 4C>bU?GtEsg,N*WG<^ j 'SXStHIR38?sf$rBr?,9fOebW٤󐶯EE,wmsЖ{Uv;u!>Iy{U#a*$7 c#RK۪Gt}fgbE[;;vaȀ=Mi@MH|H>; D;>Q$)խl(.Zjfx:a@z.u үefQ:Ί!ks p ` mphGaf'Z$BC&R4BPu>)]Y<|k&$CU+ A0Yx|> |D?NORf}\8 ecoK YKd'Xé3oba jcZ%HaV<|\aqjbtww6g4?6ҸgR+H՚o{ZH2]+kDb)|(y.^n>" Zdl~l3/^"tyDO@rTZHtkR0 cצ9s\ɿWL[|6iZj8MoHZԭZ{~Cע$zNْzF%Q@&t&K U$a{[\ˁ:G0%=0֠#-[[L=OXQI([g;0-'% jfVHx/@1'\*>L7M~\ *\8H*J 0sMAYvNw\%|~Sa8f41<ڒSМ^+x?jv01dK&̬ɓ'i/*M"pkSxs*2wW}p}U<I"V2!m`IQ gB@qgXYg9a9rP@͒cfH9t<{YgmGfAw{1bR~ϏpIiNi. ?CyǟLXNeJzCG}HVEyaHo? WS#~M|$)'P~R^Rʎ2B܂q <S_}:7 ֻX2{{b@F3/|P j E$4r5"Ai#n M~Z=+SL굴Ki{}TFۦQAQ7csLSO qA^9 {{LquHj@;$fsj`:\(9o IAlel5KA0ȯb8e\AAUG(DYҨ'GFi'2qި4~k V|o(/yfoVbl6X39cPhѵ{_zVsEm!N47L>>]Tγm ztGݿ:Zi]=T6 ;4ճCf5J3"\(tLnLn[/^(I)hzvOJ%VaO_ζf?f!TiСO%{FM|C;W`Jpcj][ +G U#Wjnf65ZpTep˶pgr"P4A"˥)a6tl,\U;4A k4heTぐDWr1D 0iТ/D0 H/Fh?Sˎ/hGTچa OB_IG0RKØ09=oo5kjEpI{P<:e:#I_rLF!3@O3c]Ҡ]ka*U WKQNk]s"&xR,(Sf]@Kt\GrƳ¼&}-0`elpD_k5Yh,qPTjMGCgcy:@GSM" )<Nib@Q_ %qS Vkpn -q-s:m@u1ę Y5·V4n|Fs);f !J~~C´3moV){. x>$*9 ٩x`x.nI|=:m~hnďi Q&kdW4Tt< ӂ풷B_\.P7L նRe9z_{5އv= ~Q/ grMQ-80tX$bˇ|4ǻ`2e)wTgzY{d,L BNp@ :GH|nF|nK:D|_"+R }opP_^+3Td$=߸VP3@zPJ2.+=,N+qvp}\z<}OѱI4͌:#1t0=x1YEٯ9N%#陻T> EZ[}3lBpԝʹ޷;Re.^CG,»3nrajFܫtCj6)Ilp7mZD/]Te=Z2ÈL?Ƚjq FD},42LLU~7/c\+*b.F"tx}Q*wr^Y&Q~7aޅ@0u!]-bL OqW)ĊT,됭F| dՋԔ"/|g3ybk𪛍 rulHπv.`6 fB$a*6=;/\ֽ3^/hZ*EJч0eV渧6RQΝBֈ k\h@͘E7AfA/p!kNNdo?$ۏ}Xη mŒ*({pH7C`xz|Eg 5T(J]/lmCM !BbM>šBbe}\?2(i`B`XfIJK8;+BW6ϜRvlFȣG G-\jM5|PqUfrJYJI(==]R/mPD;j$UbgV= ]Aj#Cq6>h7UO;]nQ)Gq %\'Wezm ZlOb~Je QF \7xY vM'M ,s9.i5)->4q5q30Fnֶ&CĠgQY;9ʐHN2ZGVssT0Esm_rdYW )*Y@:=3\ |n_vwR2f~xg^cBh,9Ffw+CTY8yHlk.uf^t#%xhC~6a;y#7( DxW6ǂ1B jGLe]0❨X<ަbߩU+q|ifٔLJw)Btj -&W:=FnLD ՌYm$lUB+1T$ݡa^#R"ՙ`$ 7@Mg}d9izP0JtܝJG:T4|rrjMB_mO7x9cmJCP"݆٫IPQ98Y|Bb|g0is(~(؆cZ'#Goӈg:AB)pиIQ҉}B)A:UNȄM\DnLHV9Gp ԤVmc ywp˽Pޑޖo tm @7D1F"7=ةRJQ7&1Sٽ5ͻ}yWp4R|;;MNs24?Eo ."TIWƱggvȒon>yDI|3 =k=haK`]˗dk`B:螦{Iumߔ*JU5kdH'e<2arDpр;-Hǐs?)&яE=@]0,B;l.5Z|bp L-FڇchkӢeEt+#nEù_'=AYh3F|c*΢De.c+Ae)g 2P2dJ,g n4H#?ܻp\ g%a8._@IUl-?5}ծqCc{YnF=-;ί[}$iұ= E 'w'yG7M 񄙤i 7pz52BD>ФY=c?-=UĂG皚E>[#!F *>У+`$TE:uBXk@K"1˃$'}vRB]GtvS3^PN, ~L9,˻zfO'xg$9]oU*Yrο?QqN$`埒71=qym)H/W Ğ<ޭ?(OZ ߄HSEIзoͫ[vk\l66ۈXfO-'W'Tw - +`-?urv\A}Bck<(gc`k}5p^?8?}$0a/`q4.{3hCL̇wQ@a| @[[j6|bo)39EA#[>:s'!ؾ Oh$`@HJShQrB1&}/ˌ2(6#S7v,V(+Q-ܕ*Zd!Vt]A%[_$6Y&~=DXӳRfUfʔHw5%M `Gy1_MRutXy4%؜n1xJc9jMKen{8Y"󬰇uSGrE6fw&$Qrz@91{ )07Fbj1Q 2EܾGbLVT@GHU=֦XuWfLLz5 (]g`r!VIpR=7}FRr?]O53Q+vzoN}ns#bhQwӜYhϨ$.F[ *3zIjՁGk㻺!}.Qh^zc6wr=cYwxhPDw{cU,= !nkFdh\uFY4d[෰1%͜Zd_VgOJMZC;F/~?kx7ef(^JFFw:c'8HJGu 1Zʂq'Ub_MXh>˪NxPI 4 ;T2Pdxt1GX^^S} ++v湸N JPs[$4jB qu>(3ma͝mss^MFDm|)6JJ'Y |ҔkA k4AJ\e59mh9ir8jHb-q\F~)mb: ّ}K ܚ>9\x52xJƦЌjY$dSE8ob Ŕggg;Y E4^MZ&Cj36 yPp",i&whb@2heF^@=ck)ṙrq6r`~:n4f6O1c6Vh{OFBrhn cfV=\kFqFq[ [tW0DSnD1>Y;܌pO^AHec@ <_CCM8)/<#IzNRݝ1]y=:zQ!{ J=-n_C xb32v3mrvL^)}?@EO÷L;k*.o_m"̾ U䐠XZmC9+kA9=Y:TEa j11EO`bvp"L{ٷ aqAJۭ_xWЋ@y人E S+ZL;$ĩ;MoXm`f=} HlW½y+L%tB9&P=Rܵ9~.QXr7h"%U$oٶACOaǃ٪PU`9ҹIWIۦZ@pA^mb) sG! PQj'g0qxY\5j.qh 'Y[\ :\Oy[Սr Z3)%37cvzv\W#9}Ms}wD۳OꃐXN),kSkR!V-, 3S0 %?p f̜LBuy ӕ\v <--,G3uaY:asaqiP/{qwGnӌ}}T̐a5Y.v9hyaIXﻔPJ˱q I q.jDR%2w̚v*|.b|fk3r ypL|糠'ƭr61Vo($=%d f!m?7穭{ܬRxGOMB GRGi$ ^\LXtdik\Y 8fBW/B:s :G>o:̋͹de6eNb7vK;ZY|WW Q-3k cAO|ǚBEҍ$':8/3]5]iOXU.s=.@Y?Nr[7B6h4Lt>zo҃\sD7뺪m'7|J[ 07;;Y@iv{dV 7B37y_ Zb%y} IV%Yh핖]fdDC2s eqԪog*A=t߉|dJ<ݞZ! A` F~ÝmnOdF^eWvTxGHii!LI,YFX%v` |,Q.v#`;(4rS0tWUDΙH:ū)ZpVCn懒.fSiq75CASZ\O(>P|lxw뫠V*Mc ^L#v\'v' ONKTa<69蛘 ))[<^J&y3I$v1it\ƪo5Rm*˹bAtq Yxʰ$m@ӔGX6\Yf;/6:J *W#ɷ~ʁ:^G~3trQLP2yQs<6;⸧_H' k꣕* ȋU&Z@P~vhu6l.]RdСCeV&}E̝oH깠JrU7yG4[vL-CL993E%`6JDG)©;XyY0f 4Ht0芑CA*s-UoG;߹'< 4_;vP~"/pngYzL=lj-KHv%LYve.jwL։"#n?ԿqT2m! \kESճY0Fo_n1>Jac\zxR=}:M6]Y2mV@^' >@"5Nk`K+OH>"#3 ^ld:*,Od?S:NѴ3`wx/724)~Tp g}Ȕ/Z:{ĝ7y0gXŻ kF*ad)Ŕ.WHD34tcnRץjۙ")ֈ +gQp0PoLuAg& 0wAǻA~y&7n,J?\=wO3S4E,3(9Bqҙ;enY1k)߮:C;L%Q vE ǿlDix KoҜq%=+pRΖrA͜^h<_#%ݵ.3Οf(+摓Z@bee<A aNB*{Ɇ;,UaGVJ9Eʳt7E,NE6%Hm/0=q0"R"!D8˕/(n:0wkي9`)sC&Tq?S") M -q|{pp>J)́q#eƯټ>[y.`OIZ0tXYpepN{qI?P, ] FGj__dGJIu!8c٧հaܞ jM$.">jQqaLl\a,T4ΫBypp=#;J&ZqJZȗIAdvRl|d6#ewxs@϶|աFF4k IZh! f$iNI&;!R"H/, v'kQGaU^$O_ #܃VLL7*kV6"hBp4>zT"^9cVیp{@Yxf tC;tQ!f㦏[6պYT3=6T[A4B4-"9ϥcB`f>ZZ4hԽ̦/QV ^y9T|E!2S ; )ؓmnvt /(!nW 6[y]{8D»Uԍsy^ t/@,!B[v#&~p;O5Jak[:VԠᘁ|ܳ=9_hG(Djc Lw=HeZxu^QǜLfˆjeGH WSEto"DAa>A{ X>  {SJ>~dmX*QhaLδh%tdȦUEa.Х|ǥFsBp␮.xԛ9ǰ.3Qf!LpQ~ )kn%_w1YFf7y:ܷ& /-yZ6yS4C8$dCã(i <!|_BtҺbv}f)Zb8nzC1̍iC>.=~]۾&3l,|BhE]oR )Vi~1MN"HgsIBJ2鷗B2 uD>rCUZ@I60X7?Qf9}u\֔\_Gl`be%8F[i)6޼)[NFFԄۂ`7i'Ι4CdvnQA7u6.sa8i,Dt/F\;("B沋$ RY~eB [é8gSoq?j;πc *iurW]F:"7hEFKP\̨5iB/ ͱ(ᇋNOdyCN-c&SvZV'>W]kާؒ<5LLddes|rzTH:ohN(J k*˗y:/^4m_3[~^A*cI/I&Y"(a?w&I!_ƻ` u˵eJ ++65wlyU?F.FIp""֧ 'I8vS4F{k@pbl)FX٦`2Ԝ$ɹ ,;G M< QR%#:IsbaPXuqZkxowPS*^P'^y"ϔž,C}pucx])yիTj߰GQ`R=OkM0αvZ<Y: C&d{!2g6MD2% |\ &Ra.],I }^*Eojf }ҕ 8U0$@(7>gS\B}z|fxL..]Qѥ!C%J>Hyv"Q#M ?"0;'2d#`@Ȳ9i(r*cd.`3({ «S[)H\'\@e(:Q;x0.ްvǹW0~M >,J|-;'k~e&ñu{y(ބl7v2[ 9BkU<ѥԲF(鴌B9YN@]VTϗ~(5/="];ߢG~|XpWR'2k܋A@~|"bPnL)c@Fh쫽vaq%cl])'cAv92AaD/Dw>uTr*<p8bVQ XV_vorN@iPEj鹿BghKu L5NU6V^OܻjX'c\k%wa܇f%lzsq|$_kjX!fÄ~#]HWB@ J`tp#S#׎7sMBؗkܣ^$+ eE?&mΏW \f77j<`iPQI7ڑCTs%Jd:6^U" `E<9,J6݈:R:U@&@H'u qk@pO8- a2Pn>cM"'S^h)X8mSYqAhaĶcZ}x.]R@\dw'Z7TAoȗt#"ZΧ ܌n./M.T{/y ғwJWʉ4x(G{W\S1.NcZ9}$Rr-9/"![i}w?boeCҢOjbMp416 Do.N\8ralHؕE2&0^فo A8-AC(}qQ]E0gBQ-V.DCzRYʯjt|ue$ d+-j/M%nĺ xJj08?S;׽IA:yVAjd 41) #O#JbGBg6 'x(jW@.w8N* 5Gb&_@I~wQhcck;DmapZlظll<X1zAE=)Nό:=s:+U0Hcb%}N"͝T_6T 40gJPI ދ^WRgd\/O{gy zS2!麲]j" *L/KO3xa9 'Z}9K Ʋ4,$cRj'oQ0Kb.=ϼ_IsIrőp҅갤{]\cmMa6fꅲÑ2"l6+"ˠ2vx%?Bj8n !7䧽H1gɪ~dGF4{^q.-&"ѮL_ oz%vC|kFQJ\ll@ra(>8ldtSqt ebg5LgՂD7|Qrx5iAwL~^7mYW8aJ0Ӕ =6`Y'O^E$Qci[QBGecGopj>Ynuw|fUD9z7c-,.Uݠ:1YCoGUZ]7${}N*eTd!aZu5Ն]eS4+5ݙ?ޅDϠG<^_g;MU^1 khd @>{(~;36SGWX%kH6H {42P-YOyV፜i:).71e/Kvip7!a' urOu4T8,/Ճ/=1cW}x`. f^z:Q߈)ğgq뇋11CX.|\i%Ԛ2ÙU^V-"<F̜Xjq`XnsH! 3G@h0"&8>peaMJAѵ#9[?R56vQX[ڮ]y8\ln33'dHτ~舙MTQ}^?OAu_t@׏ƿ]rD4yr-WVwvRn.c5.v5?d@=bnêTݴ#غJ':Eb2nlxd, \riz%~1HDnǢ$mBE4W6EGTQ*aFxu̖=2ogԫnK@&L̢85T(Ձ,_PېR9B7^9chd"'_91#@4C7̽D'>-l~X2 E'J~̋㽇Zٔ&TUy)[wT9Tw%ZCAWȆĶGҢOiբ,4J!KaE6oBwx*ѵ϶WϛMhYdz; ±5y!t y(JtQ^^A|IT$"sl *oL/uItQ -Lۓ `)_z/hu(0 z܎C+E3~85:;| }v6l |-bW!I( icXE[. C;EI*m@:l*KY4|wE*T+ D[?7 +ΧqFas)疰l5ZlȁG4M࠘qhD˞r`u_K"_ eZEM hwThzT\nL &;-ʼn0,󞷡p'T>L ג5iί咘 Xd}+ܮu? @VBj$zXBShr.deqR=gO7!(Z&x4 3* 9{h2$<(I⏷UG?eO0. PNޔ2XVV@;gh`%jQ\j?Y%666:PQx ?{qb Ρc wK #8!)Nk=udZ z]MsHfu)=[ݑAモYYMwNГn R=xXD"Y”eOS#s?It-{n@܃ꂻ_gtMq\^N>_iK Lx>.a"ӃlfWQt۶Y=2Tx Qm4Wx>MS] Ä=-rؤB@GGƯg|9äD- \U!9 h6b_ Fvp%v/F]נ֣GʱMj ]fj:Ջuw i?n, vOPhUBOX2H=Z`$9ǢpWPQZxi;g>;HlKyى4 1Ư> M-3M-+a9#Uwi (QGc͒#$ˏs'|ԁ~ [av69cp.;Vgi:`|oSU;6me ^n*Mrޟ 6+u.Xvn]n,e'&6P96Ny˂Z,h;9[ g"J\QFCoyY";I >4t?$_l0W%mCL`5Ul@+? lQ e4z?eO*?ӝڊ˂/b'~ EX^h[х ׸jb ᑋ8zbZDe]F6}E`4LJoͩ%o>sriO P#׉_O6 $8붙>Y;_~թɔoFaZ翂@ޅ}BNxPݹ([F$‘9`2bsO giO E^~>+l.;{fxZ%3;]=qЦe ḇY($X !řmT \+흇6¡e'ӎڥB5RÀ/##1:̲i enbji.#dڬ%jDc|bP K IN GJXjb`h@+5![I0~AfZ@(gRw9 UX'0+Vt-F@n8_ͮv>{y+C/]'u\$kP"<>J[1B.wΝOcuVJhs#lfd7_mpqC|fMa,RO9I_,O|MI-떃nkC=Z] 7t |fAʘ&yi>FrkMH>:F4J#eiq\WV@@g .j' OTKuk߿xiSa*נ%؁l(< se a7l0CE/h ,` 4{8[ӰΆ~uZsʼn|g7``cUbZSWяWjJ8yZVjfBGu<2ۂټC)jP:8@ΙAG,Jr9gջqTN-]t ޣSpZpjZ[K%D`D.Fݡa,K˹$jY+^ |1ˮL{k [C*l-WQG4ze&t@R3BP/:@k9Al 탨 kl\7U0Z$zv,f;IƯbM7C4XLӔ.< M5p-w]mFtG8YjGL`):^mSKfAk߂WH$35[Hzw@ʃO>=*w_2nJ|gQ@ίܡS 49d|| H)viSsgiڛ!:V"wq̏N 2ߩ,~|OIKWoWqn&&ʾG2T7, rVL ?syheUǃ嶡rV}~L(̀L70Mj_9mE[īMZ$|Lj ڼ1 @lgF$R(k[EKmGN, `f̪Yݣ|Ake)"ə@QL'5F^Vm!ղj2|mhuoOi%p4# GHja~g*Ա2 /t 2M>Kra-}}AHGfeXh2eeTKd`ĔlbT%ݼ"~下QDG/ӹ Qeùɥ>mwT9^cE;(+AV"EâT$ X٭aavpW@F3L}0d,>H(ydU5EHrǬ紖̒ ' YZ