python39-idle-3.9.15-150300.4.21.1<>,Icrp9|01Cl\'c-UzŁ9h$?|V0+/u^6?@WAya$ ;^ v}V.Plbmsxj$n%n 7J3ێM>t?dd % V48@D]~ . . . @. . &. ..n.T|.4   (8 9<:FG.HP.I.X8YX\.]T.^&bc4deflu.vw.x `.yz`Cpython39-idle3.9.15150300.4.21.1An Integrated Development Environment for PythonIDLE is a Tkinter based integrated development environment for Python. It features a multi-window text editor with multiple undo, Python colorizing, and many other things, as well as a Python shell window and a debugger.crsheep03;+SUSE Linux Enterprise 15SUSE LLC Python-2.0https://www.suse.com/Unspecifiedhttps://www.python.org/linuxx86_64 0* `]J((Hxz%lK}N|Hj$%!  <+(+  %%,,"{"((tMt,'@,93977U76+,6|. A K4B%4B)Q)k D{ Dw\wJJJ--p-Z :J1 :sJk/ ]-.D#20'20 &$q$L>LG>G2 r2  vv*%?*%2%G?\=R8H=R*M*M*M"F"  #Q zc,3"!8 J/:/$=7 .K#|2S:"SS6h-l6h N N**$$% $% l<l""x"IaHI,+,/c/3/cb_b*' *,N"N g : gY*Y00 _ **PMPs`s&MM $ X 3 Xx''   ++5N5"5NmMJMg?g555//EE &:& &:.-.>x9>x  ''uu#"#QaQ v M v9s9 c  cZ/ZjDW;_-*3>:}.%0;! c\:Q#zt tf%. vK{<^P k%6  ;-D3NtmB 4 3i=%ZHM$ y :M:&GRTR6 Qq52f?+& 8k(%!/A큤A큤A큤A큤A큤A큤A큤AAA큤AA큤AA큤crcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcrcEEcEEcEEcEEcEEcrcrcrcrcrcrcrcrcrcrcre75df0b77ff61253be457af636d5eb7c55a3ff2b6a733beea844d2b294972ebf609eada44ff4aa9d5cd10ad8b4c29bb76db8ebc74912a0ae86f5ea3cd19b7547bee81ba5c5abec1e35e313268f8d8fe72d305d0ad73abfba3d2ea1e2b2308710e783704ad5cd9b3f44c026f55c98be2c52190bf9b7832251283f3e953ba80f87aa104c98adadbe2718e334b20635d898c414a2589850041c912d240b0fba0f58c7a0cc61079c6e2df53457e63b413e0389f2c0061eb55e80229da932c8f8dbd6b7f42699e5e5a7c82ebdf2a2962946b7228c933ece0ea7c0d7789f21a7dd7e64531067a78ad392f25631aba1d885f40786cf5f47854577162c9f90ff1f33164c60399d6129e3e486ce6b437bbf614ff4838bd4e7f42d461c3e5467cf3b4fa2727c98d566a13fd599d1c11a375f387fef69b6c595c4f18c5d88c188a860be0e557f13eeb5dca39d05e24b9eb069c6dcb2748633822d67288a8bf8b7e21cdddf55fe3af292b38660a8a58b1a8b4fa4240aa190602e7e9a700ea0536b3181fc968e78fb3fb0ec11f61bc6cf0947f3c3923aa18e1c6513684058ed0fa01ac858143e3f517467d12e0e3ecf20f9bd68ce4bd18a2b8088f32308fd978fd80e87d3628bfe70991cfccd1267922e94d91e02e9a58d2d29fd3382a2f4975280b9023cb7b9797cd05f1964d57c4c6c248ac7f7ea6a38019ada32a9ab7e6c28d060f87b03de37484901eb40eefa846308e1da3ff6f240ea98f769a2afc3cf4fdba00327ecbea09f433197c8870b12bb7859cc4c3fe2068908cb1ddbd4880ab0f6fee91b6c23efa5aa1d1e3439ab85425bd2aa3a25b9e6c21309e672690cfb32219e1eb7a7f39a59e2abf1840156e9db8f85a38822fd56ab79a139eb95ec86f1fba1bb87326b6ace9e90a2bcb16d06c4d78837137f2c14bc26b3bd9f24b7b6afeadb689bdafb158c31382f8e5b41fded0c2aa9cc66a382928b003cdd8b5b0518836ad9c893777f16cb2e322891dbd9101302c09ffda0c2a3a72d053bb8c0927d507414c59cad25ff879f7875854ce68824f4e6dd2f5a68d7c1d94a2bbfeba8462ee6190faa3dc89a3b513501ebace8e428aea68dce39d0af9f29196e08fc9ea49c99605e79e749f1916c72abf67bd30a78ad7b364c2ae6c8b3d234eaa7ee5ae6bc837cdbe7f5f88e0fb30fa0ab5d0dc3030442ed92713f34170336c4dd2623723dc34829df893f8058df4fec56eb20ff67ff84c86fd3d9697e2384c5a290ed696f6d3187aa45f8f55514d26791588de02fe685af0ab129174b32ab93efa39faf6140b6795d9d7a671bc0fae57e89d57191776eaa6201f1a77b776d844bcca0f99de42412d25bdfcd6a0adb7702fb96436356efe0bd2b1eb326f6b2f069b0a06a8ebf5a46a5ac7a671bc0fae57e89d57191776eaa6201f1a77b776d844bcca0f99de42412d25b8f2f443d7aea7976cf370dab004db6f2f88a1e436e05c96e77813eed687580cda42c772a4974724b286db4b8d975f72d3dbebf2ae984b84350d01a9ffa3a62d38f2f443d7aea7976cf370dab004db6f2f88a1e436e05c96e77813eed687580cd7728c5c7b980a653b5e305e1782a71c578ef4ae348611a58cb7f46ab3d9e1f8df1146aacbac0dcaf46250ceb6d5919e312019854b1211f20dccea4df21baf5ac7728c5c7b980a653b5e305e1782a71c578ef4ae348611a58cb7f46ab3d9e1f8d0bd1bd8cbc86d5dd03e821412023e62bbbe6bcbae91c0a4645f0239ad7e2a1bdd34d8d454884820dc82f7df0b462932108bdab5799cef2f4c3082cf65396205b4675f0cc682240bf7cd7345e25cd08441d77778653e56d6a90a765d6b725dfb71890c3511bd0615112c03640f8160ccc022074b90d50f1666f64e15d0ce28b0e0a714077ddbaf52710afb43a0168db747a7205dfb06e174ad744722fe52d709e1890c3511bd0615112c03640f8160ccc022074b90d50f1666f64e15d0ce28b0e73c0e4cba11f50c680d603abc2fa945e1e600aa7786085c755fe224f37b0f565617b048840c930f8d2e57e38f1fe50894a4a4c99bb234de28b1503c943be0e5373c0e4cba11f50c680d603abc2fa945e1e600aa7786085c755fe224f37b0f56526c2e218d876fe49fa777317906c84e162fae5fd3e2951d0fdab89a34086beaf410b1be8358c746929454583f96cfdcd0d30f9689c5d8545504f8e74642064d326c2e218d876fe49fa777317906c84e162fae5fd3e2951d0fdab89a34086beafe20677e8ff443680b78c16a5f2f8cce6f7a9b02ebd809ab4c3cb5dcd8cded7c2d4e3d7fa2b05f9544f79f3566c3f14f00d5e7de9c046b86640f33abd3337788de20677e8ff443680b78c16a5f2f8cce6f7a9b02ebd809ab4c3cb5dcd8cded7c2bf459b3ea70cf75ad0162c84297a610baaf0254ce976f7a4778364f27b6edc8535dea90c3667a94d8a8308a19488063007cef2e3adf75a87d73a26c9aa1163a401f5ec267d4f4f957fa2215dd4256f41eb2203cd05377278cc9b4847d0e3e7dd340d1a99dbd759607d2c79480ed37675d6c627bf9fdb7faf284dbd90300de70b30614a09e5a2e31ff4ceef3d8a10e460ef3cbbbd228dbce1781aebdcf0d360e7340d1a99dbd759607d2c79480ed37675d6c627bf9fdb7faf284dbd90300de70ba0b6872d544d2a126ede8ff151668a10bb8bffc738fb534d3c2c00a188b528c9e823869a16cf4e7833fd22c33b1e9cde9d674e170bee6fdab0af2020bc2f9540718a736effa6094d909d3d09f795c736b458ab40e2c5e43023e86b7b451935628b9883f1bb7e380bb5f498aecc0ed5c72c705952eef7b6ed70f8c686a3606734d0b014a1bca70e5329c22373bf367635de23aa5024ad102df27cd48db882bd318b9883f1bb7e380bb5f498aecc0ed5c72c705952eef7b6ed70f8c686a3606734dba1361c357911f45f706348c1e9b6cb462ea8ae5fbfe0ed50046f5c023d0b8438243bf8a55cd44c0edbfa164e316e06eb3a9e9405c16a9dc216b3480df4e1b9dba1361c357911f45f706348c1e9b6cb462ea8ae5fbfe0ed50046f5c023d0b84520bc297f75633f0484c8f3d87761649777804cfbde7cbc66dc7f96b2c19ecaae7173a6e95c0f0aee99868abca898177545b627995b570d4cabbd60c4b7e492f520bc297f75633f0484c8f3d87761649777804cfbde7cbc66dc7f96b2c19ecaa5d92198c2ec9c83c546a8a17413797c8c751f1d1a885cf31aa046c669aa24d57955fe3d48b2ce40f159ee5d350d10637655919196738b913381885dcabbc8176813ad63900f69ef21923d3ec0cdb2fcc95c7ee5bcf925beef9287c51a3d0a88612465b7394cfe89ee96d5f3a709a2467a8853b57e383ac5bfa61ef464a93192e12465b7394cfe89ee96d5f3a709a2467a8853b57e383ac5bfa61ef464a93192e12465b7394cfe89ee96d5f3a709a2467a8853b57e383ac5bfa61ef464a93192e325227af8993e580db0491822a3edb77764fb358e2207194e01456d601ba8a37325227af8993e580db0491822a3edb77764fb358e2207194e01456d601ba8a37325227af8993e580db0491822a3edb77764fb358e2207194e01456d601ba8a37f64a6a0de9dc8ed7cf7c5ef56f41ecabfb5959d89e735bc657bd2f1125385b994aba0975a6e9650b15154f43595fc810d82528288c398bdba9d48d21681438b5f64a6a0de9dc8ed7cf7c5ef56f41ecabfb5959d89e735bc657bd2f1125385b991c87129c1a210d51db73f4add7705daeaf1bf887e9e1c395518bb0d84532074bdd421390c1e77e3b1f634b22f11d5d92427f0b14bf0eb3a56559911d08eb61eb1c87129c1a210d51db73f4add7705daeaf1bf887e9e1c395518bb0d84532074bcdf770443cf56c11fcd854eda0c0986be7dbe9776df1b86870e4b0a73e48a3a85ad9228f69cbca9674234026edb365631b5c211e3690ad3af9252eab98b1961ab24b713b7bee3b3c29ace7588561098353b6321f99893bc48639073b86bc552eec84816cf4dda7d4dd1c3a6f3b854ae045162d88b637ce9e0b2fc3f044ffdbccdd600cb68cdf6d12fd6ff1c2a7a1a12f898a497d210adcc98871d48794b8c0e2496260925099a340f0745532a2136420db22b4c3358b942f0a95a5436270c2997a500b028a6f57de9c32333102cb727c0cf4afe2e1eebe6b7ea14ee7eb350842bdf53e7fcdf20b7909b884d5009daf0c9ac625353bfe46036990317a341654437a500b028a6f57de9c32333102cb727c0cf4afe2e1eebe6b7ea14ee7eb350842cbc9854b26556a077f316f01a406c507480aedd7e755850bb151e130948e06b2ad24f2bf18863a3606916bd76281320aeca791a0f0c3da70b3046eae9da30f9acbc9854b26556a077f316f01a406c507480aedd7e755850bb151e130948e06b2be03ea10fff08fd2e6495f2237c5a273df24b909979b9dca83c4e5cd344c4fa3580c80204d65a1862f1d1299567d9b20e7be0f9e2ad47f1fc1456b76c9dcd1ff70811619e4203fb9eb11152c21dae8ff8e4c63c4e16dc73ee0b733191c6ffb2e87092a6ae1331f1b961b0e6bd9bc2fd50aef4c7d858f2563b19f92ad100cb88e4fe84bfff6ecb5d15e40bdfedb607c952a6fb4b7423dfdd19a0c701a6c08fda587092a6ae1331f1b961b0e6bd9bc2fd50aef4c7d858f2563b19f92ad100cb88e8f46fbbe7510d89edb86184ebc01fc75a65e34f38c3805e545d3f51aef1b10c7df52a44506b61e05cb944cca14964b336edfdf1cae0225e4dc2e9f8afb00ffba8f46fbbe7510d89edb86184ebc01fc75a65e34f38c3805e545d3f51aef1b10c7826677cf1134b27350cf6bc5d2186542a436ea9c00969442f2d7fb85f8e4ee72fc042c2476bbd709c3bdb7fa6466dccf839fd2e5736332469d0f748a49ec365d826677cf1134b27350cf6bc5d2186542a436ea9c00969442f2d7fb85f8e4ee72f9c47dbce2531005a25a201c6ea07931e26c32b684e98934404932f1e30f90bef9c47dbce2531005a25a201c6ea07931e26c32b684e98934404932f1e30f90bef9c47dbce2531005a25a201c6ea07931e26c32b684e98934404932f1e30f90be81928fc11f1de4546d4069a21ece495b5e18c1f85c0a8f71b8941c3de264c890ce2dd413f6b79b3af3d37ae3a359de3e90a76d65462efdb079c2f930fd2ff01781928fc11f1de4546d4069a21ece495b5e18c1f85c0a8f71b8941c3de264c89037d54dccd92f64664e2e358ed10a58e2c483a25c624119e91e86d3739368059b16887e5ddb64aebddce3ad05d722d76d275b2fe95603f2567dbe17f8ce35734c37d54dccd92f64664e2e358ed10a58e2c483a25c624119e91e86d3739368059b983ed81316f15117e2ecb40dbb2521ccba8cdc39248256e9992da484b8ebacb9c73b857848aed73dfbbed5cc877a9bd7fe1cf714cb51d6811c80ab5d60beefff983ed81316f15117e2ecb40dbb2521ccba8cdc39248256e9992da484b8ebacb94696ee58aa590152604b197035ce9c481c60d301c43750168063b7370251a54568a0c34d0bfd3c74893a934f5aa3bf02ca59666fb75187ca273cab423abc3a3f7c84772dc1225ad3586db83accc4b5f77b814e96b41c197f7e91cb6022e1a55881ffcfa01445a81c4d1bb52764538ce82a102b54ac7acad32d99e29d4d7c1a87dd868f48661e03e13919fa0791ef2bfd9e840d6830821aad6665c140b70da61c60c97289af824c98ed23661851646cc4fc1a8dac12b4511948bd4f8f064884c2835e764dbee8d962dc67eef9784adb2fb77f1a2153cdc08bd604459adc1f2b66c843ae105d3e7d424e1532d9c3cf2f747c1068c39a6c19dda75292e2c6fc450a835e764dbee8d962dc67eef9784adb2fb77f1a2153cdc08bd604459adc1f2b667c2286c6993f18cd5d069caccbd53d2d395bd29d21f6d27eaa083b5c73ec79f9f9759563c4936cfd45f0ec8b9609dcf779293b5f5a113731d8fa6b802b7b7f367c2286c6993f18cd5d069caccbd53d2d395bd29d21f6d27eaa083b5c73ec79f910a1a7fe8eca8f1f0648d637067e0e0a9a40a0357615a3bbe8dd9421a98004cb10a1a7fe8eca8f1f0648d637067e0e0a9a40a0357615a3bbe8dd9421a98004cb6261c5d22af2091ca85bd4b351ab249cda9a1a5d06bd861ee4d12d16d1c8e70ddb655375f86e9cc26435e73c6d441da85a48a0f20fe2bd3da3d4abc6898a8b7fbae62f4210ef338c953fc906fca0642caa660b111e81e04680e6332b97b7c4de72e171e76a8be64b4e9add22624474358f997cfd9720a8fee0bf00db2d2833db4d06aa29a5d26a0839a8c584d2c5052e8696450609764e8811d131e8f9c33a6134f722914ab0f90db016f74e696b619c41fbba877146f1b8c17058f4f56b67609bca4ad465f0995155f34065a6cbd4bdfa35ac45e2a3471620439a3fa951f021fe813017c539649ccd2b7aa7bc3ac61d345877562c144c45beef5d2ec788071235c7ca771eda2f5f83a6fe478ba6b86b3cbf5d001131ff74bfc74f312bfeb617fe813017c539649ccd2b7aa7bc3ac61d345877562c144c45beef5d2ec7880712aaf3d503b887c275599e482f088b8e21d0c160479268286a8765866eee398f65ffe2a27bf20fb9c987c08895cdd638957db970ad46b4ff85441899d5cc273fd2aaf3d503b887c275599e482f088b8e21d0c160479268286a8765866eee398f6506aec72900ed59d5c9b831851002cd29a076cc44431ed9a855b9b3ee889a23349430759a9652bb67943f70f3e891ccf6eb23f10d0e439c68a9039cafb9a9790c06aec72900ed59d5c9b831851002cd29a076cc44431ed9a855b9b3ee889a2334931b14026881c77e722ba6575bd1eca5e2d6dd4300fde3ca67e0078d1e1fdcf772f18a6610f2f39171065afea0833e8c36ec5810075514bce0595ace765b89ceb80b654d545e7e1bb3be72e2070d21bac303f26fa43ad736d79859b52a6538c9b25a54b6b7f02b48b6859cb91b4de5027452548e49e95aef64b6d70be488d28f33f86858f33ab5fb5a40a82511b8ac27c565e1855a72b12209f52e7c1a78d6209c3beb81fb0ffe37b05924e3c1582281aeacd7f30aae7e49afccc2f089122b8d26ff4c79f2433bc57d68f71819ed202805d05b08bc7416dd52ea5d5f9f091c32d0002baa6b903b5da820766636fb903192e2b1b88b2472a9994626a5a2b9023f26ff4c79f2433bc57d68f71819ed202805d05b08bc7416dd52ea5d5f9f091c328be5af92b774a549bba25ce1f8b75a6f2a0ce62ddb2430f8edc0ca28df4f2dac8be5af92b774a549bba25ce1f8b75a6f2a0ce62ddb2430f8edc0ca28df4f2dac8be5af92b774a549bba25ce1f8b75a6f2a0ce62ddb2430f8edc0ca28df4f2dacb43cb7ec19b01f45dd8ff87713a81c0d07fbf625e35503ce707b679bbc9d8db8a7c397b83ca978084e70ee0bcd516ccc29f967cb4ef29833d49a9aa81f5e1b86b43cb7ec19b01f45dd8ff87713a81c0d07fbf625e35503ce707b679bbc9d8db802ab93b0acce3252b3b629bd05bf73dd09bb4f4e2b4374ca027313646f96673ef8c0e1145452eeea2e3f939ca5811cfce4be831ffd457413ca19cf54e108809902ab93b0acce3252b3b629bd05bf73dd09bb4f4e2b4374ca027313646f96673eb686df32114bdcac40deb919b06ca35e61601390f5f932a34ac48b460084d46e84c9a32a434dfe2637e44727d8887eec359f4e0e17e309604317f36d68967735b686df32114bdcac40deb919b06ca35e61601390f5f932a34ac48b460084d46e36b6ef4ad9aaf7612beb9ba10c30398fd8ab44d5b83bb9d5585a61dcbba25c1b2b65ad99849f961d4ee3bdeb1870538f4590f3cdcfe87c8cfc8e8116aee0221d36b6ef4ad9aaf7612beb9ba10c30398fd8ab44d5b83bb9d5585a61dcbba25c1bc19bc69c241aa279160855421c6c1aba41a249fea39b662eca01ef52c740df4940932fefdeb8279db74245f9ef39667860552b925e2a0e459c81648123240c6dcb26f7c0ae4c3016c00dd0fd4081741f068efdae8fed1e98318004ff2a05174181c2096e58fdce61ccc07d57445068eee7f1256db683b2ce3e40d24418a1cbc581c2096e58fdce61ccc07d57445068eee7f1256db683b2ce3e40d24418a1cbc581c2096e58fdce61ccc07d57445068eee7f1256db683b2ce3e40d24418a1cbc59c04b24cfaa7e28059213b190b698ae7467ccf2cf62c75a3870d31b05ccbbc399c04b24cfaa7e28059213b190b698ae7467ccf2cf62c75a3870d31b05ccbbc399c04b24cfaa7e28059213b190b698ae7467ccf2cf62c75a3870d31b05ccbbc3974d266b9e237dd8513f694f1579bcfe398be14f77b4726f389fcf579a2aa10e09ff4d4e8f4f384821f962e4ee592fc8c60c993fa719a1674ff380615449e127a74d266b9e237dd8513f694f1579bcfe398be14f77b4726f389fcf579a2aa10e0562b6a1b75a143b0fef240b79def752551a5c5a97b66ab21eb72ad5fbd00f249a867ec47914d6cd70bdc0979bd40558ad88cd9cb7ca85caa0430b38907b24af3562b6a1b75a143b0fef240b79def752551a5c5a97b66ab21eb72ad5fbd00f2498fc994487ba473af3a0fd67dc6643a786e615654d48ba4cf88895babeaf691e53a57313eb880f9dcec0e644a9a0eb6455f72dd41787d32a3caa9dacabcf2714a8fc994487ba473af3a0fd67dc6643a786e615654d48ba4cf88895babeaf691e50172a36975fe45ac7b23348f082f6e846f1f66e06c1b6222383380d2f2ae3f890172a36975fe45ac7b23348f082f6e846f1f66e06c1b6222383380d2f2ae3f890172a36975fe45ac7b23348f082f6e846f1f66e06c1b6222383380d2f2ae3f89bbd188e16e73f3fe3456fd2ad0f462f90733b914e3fe2e0b6c789b05c14fec7163a50a609e589a7fea10a511a6869f6bbef9349aa1c7c189025d8f8cecd25253bbd188e16e73f3fe3456fd2ad0f462f90733b914e3fe2e0b6c789b05c14fec71f91ef84bc54f136ef352adbeac3b2780b349d50dd7ab2e85e8cea3728a5d3baef91ef84bc54f136ef352adbeac3b2780b349d50dd7ab2e85e8cea3728a5d3baef91ef84bc54f136ef352adbeac3b2780b349d50dd7ab2e85e8cea3728a5d3bae0babf1f49c61e0f7125aa59a697db175823b8119bf871f0d9c1679ef9ebd510b31f199a20beb80898a1eaa7122ba47462161b1558b3f79d49429893a1895c65f0babf1f49c61e0f7125aa59a697db175823b8119bf871f0d9c1679ef9ebd510b58e943a989100c7fd159ecfcd058219e38006eaa3398392821ee083e4b11da570b73d6485652d9b47823203f0e6af9e0877a7456b62be98f3fe2c9022ddf2fb558e943a989100c7fd159ecfcd058219e38006eaa3398392821ee083e4b11da57aea7f05434b2d007abf89b4316a7961e3663747d25812f2df57da986677451e36aed67daa243db8258edbe04a74d21d9649b731169a4d8a332a6dd216a80c586c8eb28ef7addf5a664a7e3addfbfebe29040a8695e1db515828305aacba2ee4e1ed86d69babfddef46e725ca8ed3521ee711867cf312868b465bcc383ce7f8e63a723fdf88c0018dfadd19757142a643b01b785c6df17a50bbe21463663ab590f60fde563751ad8d77dfcd892558d6c4306764d9affade5018147e84c7246900628a13325b3bf2f76dea9254b20178b3232261f83c660f0e33785e6215dd64928aa3fcbcec10b0cdf0238ea95c0ce75304dfd92f408110994be3859c8af68080593a992db63dcaa31afcd8477dad4c1b74e4f1e636c01bb845ad6b74f722ce748362050d410d0fa0b2e5a51242dd61dff6e858a8ed4d5f7324ad71e8677fd20c55352c6a5cc42027629e667d3596b692a7be31cf6f22b2c4e690fd81e645b552126415c89631586d2f51931274a2d8c3dde2c9a4132e8a1f6954c97de78aa417ca94d058b89af51dbad41ae8b7e20973fdaa0c31e1fb29b141499e6339d29f55db8add0abc885fc629c6746aca77cd40026b2dac8d7edb93f1fcf6ea9d28334f4e583b43fdf9bd4a731d70e074ee597aba03f3c8c36302bdc7e74650fb1fcc113b79bbd9ef3bc789559f5af7b0c844d5292ae02368d167dd5751ead2343109d51595e2034eaa93c2ca61854038e64197541906b3402c448b176e34a5af9b6b092655932beb3956110133adadb8c867f1646b9b9b351f8b54938deade3287e9ed5bceaf660c46faf8f9fbf2be5e23389d6e6477d1e458fee680e606bcc95d2853b2923b72d89db91bda3abdfc9a7a42789e4a20a70f4ff8cab0a737995249f0d3dc2b00fb239f38543bf973d94daef2c52457b905d4d89c640993823127b7923cfb50ba574b03745100cdaed82ae64105baac6a43cfb52ed4af5e7c2a9579ee9fb606f1551c9ccfa6774548117cc0f08d37fdf1d4de98e7835babc60628ad84f1f7b1d6913c9f1c3c9b50e281070d3a74107ff73c34e679a562acc0d8437361df9d2934a2c3b8b6caded0f6c49822a3145c4b1a8e74614c8023648323a9e80ade8d5bfe68f86077f533d16672ca4012c39f3da3e73579832489dbfacf9c4dafabdd5ab81a21fb930667df540b076fb1bc29680a22053ec8d24a6265a51a0345c415a3977f0d2c6a8e87db2ef7050ea10afb3a88b064bf5ef95439924e4246411433ffa2f718e123fd1c4e536bb4a471978515787ee9fbf7806a92073a787a733a26101d297127132c5e9634499f41ad00e125ea308343a20b278bee9e9225eb5cbfe6188362a0bc7db8b94c3dd313b97c83ad6d10b79451fd2a8a4bd773cd392b228f8efbf4c316bd701b09a72b084a08248e26a346c6a7636a142391a8b3e67418a76919749ff7b040c8da45f4dd403e3f6fa6f5788cf59d74c1c48e8916c6a07d53c923449dd205c4a65da5693319ef6a16b74170af6bc1fcd461e07ba5210b18a76919749ff7b040c8da45f4dd403e3f6fa6f5788cf59d74c1c48e8916c6a0370189be0d8152b8b64b4d5d648945ff6ceb289fb7f1ae336a20406e88bae8331609384b87c1beb01c0e7856e0fb4f764ea7e8e586251cfaf33eca7208f814fe370189be0d8152b8b64b4d5d648945ff6ceb289fb7f1ae336a20406e88bae833ae507aa702d9bdda0e87ac6e0a5fa6121887a67262648dcb3e21d0014f48f798fb7058e98a5e2dca61f051e568b13016ae36afab3debe50c66ae154621e47b40ae507aa702d9bdda0e87ac6e0a5fa6121887a67262648dcb3e21d0014f48f7982b885f5d5689501bb7da2c3a31e339bdedd29186ac3c246ae11c74444f521e2540090e6b81c3ab7e97271b9ef8f7ee96600fcc37196f106642c9cbf16d7ff4232b885f5d5689501bb7da2c3a31e339bdedd29186ac3c246ae11c74444f521e255cdc5d64c586d4d36f6961a44f7cc54c7fa33c68cf751b197bdcc4db15fed6586c3740ac7c6078ea53f7a22ffc53e4550c2dbc0592b4efae34186c60981efe265cdc5d64c586d4d36f6961a44f7cc54c7fa33c68cf751b197bdcc4db15fed658442ae13bb14e757cff84b7b1c5fcc4439fe619faae1a33d9282d6e48d8092837e8d158c8c965c92ad6aea335d36a3fc92954bb9569bb077747adf2ce9a5c9cd8442ae13bb14e757cff84b7b1c5fcc4439fe619faae1a33d9282d6e48d8092837d9d8383f2375c71019c56d89db264ee972c99090e37274e23279a70049a0612c856e7dd3c2b582d23abaf582d30151d4071b3de6079411ac0a458f3426c597bbd9d8383f2375c71019c56d89db264ee972c99090e37274e23279a70049a0612ce98de8b62d3e9defe29fa963220923dccc93ade6ea2627815bd5be9f5423aea66492b3898ccfe661d19e1727e37ca737355f3e2fe0d08c0040b038bb9da9f9cfe98de8b62d3e9defe29fa963220923dccc93ade6ea2627815bd5be9f5423aea69bfd43216eee41286b264749bcd0bcd039bcc234db014d9526c5a6b747b3ed3996bedb6c6695248b2075e0c8c31bf4a27ad7d1981eadd1349f54597dd83826409bfd43216eee41286b264749bcd0bcd039bcc234db014d9526c5a6b747b3ed39804973e449eeb8e9a0a344d51f06f46c564395d0b701b1bc41176d710f833460eede4af0a2935390f4f2beca0195ee30f7505673f0ef23b12e10a881ed0c033e716404106b0d9c27f4b2800e1893e46bcfd44b0bb14e64e868053dfd4d6e3d204c95856b4aad25588d8dae4994e7d10099c0c5a939ec6a14ab6937a223cbcc523b9e270528d0a2f86e34623ba2ab71cf6b594b054c71b526a2a1ca914fcb341f4c95856b4aad25588d8dae4994e7d10099c0c5a939ec6a14ab6937a223cbcc52081ad181d8df30921279c0d0c3538385f7a9f54b27b90ebf72846e48ea84c9c5de627d5257172fdaa587b926974090a83f886be18fdfab699ead3a967895d20d081ad181d8df30921279c0d0c3538385f7a9f54b27b90ebf72846e48ea84c9c51fb6cb2f1815a19016b5e62745290b9d8718e079af8bb8c9290dedb607784c00b517e902b720e61e45c333089f245c07ad5792264e48b56f58b7b0344d167edf1fb6cb2f1815a19016b5e62745290b9d8718e079af8bb8c9290dedb607784c00e4cadf12214875ffbe3a63fd7bbf3866558c94681718b478a5b22f5c2a9ab3b8225b6d1e414537b4bf84908bde6176edf163109be7ab0c14428db82a1ca2f0f5e4cadf12214875ffbe3a63fd7bbf3866558c94681718b478a5b22f5c2a9ab3b8310e9232011c21b2b033e175d72fddab63fd1c741faf9d9636e6420b79786436bc41a208ee53c48943a9f36fddf545f401356010519f6f3e1108d53f80937b9e310e9232011c21b2b033e175d72fddab63fd1c741faf9d9636e6420b79786436cb30c7048cb323eb51dcc4594d57599be051428c7f3c56a18073e7be21707f991e063e2355db3ce07d58d7e9d32e781928a1af3f055bbc6c6704cd5b5241ced4cb30c7048cb323eb51dcc4594d57599be051428c7f3c56a18073e7be21707f99206523f9cd12feece1e581cee5979d0054817f2f4f68bdeabdd686f7810c10dfafffc072dca5d966bcb64eb5c208b50e1742c369ee84d67926484195954c4786206523f9cd12feece1e581cee5979d0054817f2f4f68bdeabdd686f7810c10df3d5a4b6ec6a8f3fdc9ff1ef50cd50421a181e5c5e1a1b899ab3472dcd0c83e24f79a442e671e3c6ab76af165b07bdb79cf61ac92d911190a72c004b8bc0caec23d5a4b6ec6a8f3fdc9ff1ef50cd50421a181e5c5e1a1b899ab3472dcd0c83e24aa73f979b91c50929392e2dcd2de5f0ebd6c6982641a5dcfb528494ab3eeebda0bfa0cb3e0838be1e78de7c7a3213c4b54f6544bd8351f96301623a81efb37cbaa73f979b91c50929392e2dcd2de5f0ebd6c6982641a5dcfb528494ab3eeebda692d3a0c90c5559f2d6da9cc84c61a1544a811b88aed97012b18b9fe25a4c93337ede1321e45be27b87fa933c1ea9ff3a6ba903c63f903cbe9d642ed1e447323692d3a0c90c5559f2d6da9cc84c61a1544a811b88aed97012b18b9fe25a4c93342d7cc90ed3ddea38f4eb28a5ad1543b0b0cb1ed63b5f0f14b62462ac0b9bba5f0dc9e3cc1aeccce09e4b2ed4f828ab2f5a6b3040880862a4a1661f16be1970742d7cc90ed3ddea38f4eb28a5ad1543b0b0cb1ed63b5f0f14b62462ac0b9bba524a63a8bcc97cd17d28d429f9400f3b9922490b58a95d1617d32e4f4753a75d90c2cb01e6fe35820b5da538588cdaa7639b9c69c170c7e867b652b289efbecd524a63a8bcc97cd17d28d429f9400f3b9922490b58a95d1617d32e4f4753a75d9cde6cef64c2f63f88f8d0bef5478906c3f68025b2d4b7d19e212a43e0329b28b8d4381d87a7054f2f10776130c8472d7b387c51bea1ca6ed75500170d431799ccde6cef64c2f63f88f8d0bef5478906c3f68025b2d4b7d19e212a43e0329b28b15bf93a1722e20113b65ed6c3c9246fe694c259a245cabd37210031f0de29e1bffc1b74dcd6c061880babd2118535129ab1366aca2396a27c888b7caae4f622b15bf93a1722e20113b65ed6c3c9246fe694c259a245cabd37210031f0de29e1b5634c8207c4d2fff3800845e38a4b55b91643ee18cab8ade96c25ab515074c42a1ff669bb22630fc859f102c677a78cf414cb9b68958a96f50a4952711279cf95634c8207c4d2fff3800845e38a4b55b91643ee18cab8ade96c25ab515074c42d182f33d173d8cb39e5bf08a5026c6e7ff1b73563f68675a5487a6dde6fdd3ccf8d3d110e3dc36b1d6ace794a819809978e92e3565272f26fc45fa8250facae7d182f33d173d8cb39e5bf08a5026c6e7ff1b73563f68675a5487a6dde6fdd3cc6beba039107017984870d6261e001ed27dce355f99ecd6b3b27d54dd0669d4d21d157bf6e336106149927964ee1c456610ef651cb829063588005f332573e8936beba039107017984870d6261e001ed27dce355f99ecd6b3b27d54dd0669d4d28c19eab85cb44661ef52d268e8045e6c75ff1adf1e236071e434b2bffe26e32f24953ab1a4a789e52e1fd5ce39c64bf9eaa120271b4b9f71d94fbf8d3c96e97f8c19eab85cb44661ef52d268e8045e6c75ff1adf1e236071e434b2bffe26e32f5cc3f266d1e148bf063e1a289404bf9a3f3b785d9f0cdabedb030c5d038efb53849f18b5af73f3a506d8ec396a4cc77b6d338a4c326ccffcd780dc5f8bed8d425cc3f266d1e148bf063e1a289404bf9a3f3b785d9f0cdabedb030c5d038efb53e475d10921a7726aae8643d2484abe1e9801b0bd2e821be1f229575b9e4d55a01984a03b6a7acd246253735d5fa581423a15428ce849811b579dfdc796c255bfe475d10921a7726aae8643d2484abe1e9801b0bd2e821be1f229575b9e4d55a06a18b9a72f685c2e2af2a210074e9ae9ddd6de73f394a6dbf02489f7c6e35a821492423baf1bce7b4bea7ce7928442914539dbb769b59b6d0d4e918b93f0de4b6a18b9a72f685c2e2af2a210074e9ae9ddd6de73f394a6dbf02489f7c6e35a829f3faf79bec6c1c2906bb790258efd8d46a4cc319115c68aff12279fc1fc1e60e3f962d0de459e92a5736d197adbd00fa4c1409e199327b8d07bd21add38aaaf59cb14b7bdf294094d145dc58d175437be7170cfcf2f03449fab5da71d162835d9f5acb4c67aa29ef884b303c200272dab1dd01f0b171b2f813783f4aad23b86e4cefb20eca0ececdaecfea1de2f40d32934d4019282efec74cbf93bcbff93f1d9f5acb4c67aa29ef884b303c200272dab1dd01f0b171b2f813783f4aad23b8600f1216f0bc79f1a363919e3aba6243238f8f7f3f292ed219f2f35e8c6dd1e7bd91cbcc93702855ae716721a0252c14ef4aba9d19606bf41a602f2618f92652800f1216f0bc79f1a363919e3aba6243238f8f7f3f292ed219f2f35e8c6dd1e7b4d1bffc5621898597c3d3bae849de0b8f10944c0cae89524422fa6ed6e89e3f062e9b84a6567e4db584fc19924356090863a1048e050778f8f434085b1d2ec7c4d1bffc5621898597c3d3bae849de0b8f10944c0cae89524422fa6ed6e89e3f0fb7d1ab5e849fcfee27a34d2773db37ff7de4e14778777d89c891a350e82737c4868174afe2b2451989ceb96b54c18f1cce9a9c1c59dfcddc46023fd7157276dfb7d1ab5e849fcfee27a34d2773db37ff7de4e14778777d89c891a350e82737c522e15a80e95df3aa2fcb88ade06d3ed6e4233482cbbab5512337429f734d8449dfd05871dddc23c80538c061f0a5a1199fbee96f2a258e7ebdc57628ce08d51522e15a80e95df3aa2fcb88ade06d3ed6e4233482cbbab5512337429f734d844c6d0f1b1522b4740dc125743ea05e52472bb4536366a212c60542fff157d48db1baa39abde715aeee7b39af99549040d57b8c27830bad35b5a6cdc48bf8ce9aec6d0f1b1522b4740dc125743ea05e52472bb4536366a212c60542fff157d48db380e47a87df54be6410569055876208294d35feb3b94fed086fde02ecff4fc5eb4bf7d682afb255283284ac56b7026179e2ff664d6e0f8728f3e632108cb1aa0380e47a87df54be6410569055876208294d35feb3b94fed086fde02ecff4fc5ef082f3744ef5bfdfebd800e6ef47425ed08dfeb0dc3241fc7baa42c4a6b39e3de509e19d9baf4b9b161014a2798568addd824a5db1db0e17e7df14e35374a52bf082f3744ef5bfdfebd800e6ef47425ed08dfeb0dc3241fc7baa42c4a6b39e3d8299dee29d33c7dec2fd5e045bcd20f71d07a0eae92407ded2274b04a093153dff628f682dc0a1d147daefb9358ab4c8e9a8b9bfa3fb3bca7cc71f64179942c38299dee29d33c7dec2fd5e045bcd20f71d07a0eae92407ded2274b04a093153d388037d548e85279b71fc04be80c04dc1f389d48d426d0fcdda213c6f05cb44ba638e490886054af809348fd3791aeeacafb0cb731bad3a65d6761d19303a6f6388037d548e85279b71fc04be80c04dc1f389d48d426d0fcdda213c6f05cb44bab954286aea5cae36ed68d5f4c5e4050cfdba726d89a3badf5a9ce65144b59082380a7e6fd09e839b2a28661cce6102ef83e3c85a920c68809859d298be55f1dab954286aea5cae36ed68d5f4c5e4050cfdba726d89a3badf5a9ce65144b59080dba707c1cae8a9a564a76eaa64860707f36057fc79738a45a2ddb858fb47a0d07f332970a8557237a9c29e01f29540d1931ad81afe4efba70ee61c0e27c79a20dba707c1cae8a9a564a76eaa64860707f36057fc79738a45a2ddb858fb47a0d57921e13a5bd3b785e0dd8dbedd17e4d99818ca401ffaeac5be1749d3a7a574b8d54a5d2e08da77b20bd757b7c0023476f0a5771e391d1de063fa5cfd763d2803fa96309d9fe826ab6c401e0d7705788cd6b379eea9ba84dc2a496e7acc18d6f39a3b91005c151978f4e7b1943f00ae9690a9cceb7ba06177f9aae035aa94120ccd4f4aa61ad711d52aa4bb791197171d14622a406caaafc3a9fac46ddf90cd239a3b91005c151978f4e7b1943f00ae9690a9cceb7ba06177f9aae035aa94120131be280624c758435c38103aa44f2a3ac8ac17fef8d222ddb9e2db9e58b77fd95b4dfb2fbb1618f753ea220a162d8c886cbc4064ae68337958fc9ee2ba1e458131be280624c758435c38103aa44f2a3ac8ac17fef8d222ddb9e2db9e58b77fd2d00112a74276fe813dfed9da45dad050221da3dd998167feb82fbd0fb10aa0bb7add24429970908ed02b824fe0d78beea4555001cdf1280dfaae4d0c26f00952d00112a74276fe813dfed9da45dad050221da3dd998167feb82fbd0fb10aa0be53ffeea4df9bfee1840879c267b591fb1eb4dd3b545423cae9a6086619c19af0ddd01f06d7da02d3ef1e4cd3d5dda9945488fbc1d62be26410f9640c2457e61e53ffeea4df9bfee1840879c267b591fb1eb4dd3b545423cae9a6086619c19af3a7ad683c3fd8badc81bb3effe165cb02ddff0c252cd60e22ca5744abc8117158ccd75d29caacdc087c1768ecc21ac6ed7d41965ac12d7df28514f33ba9918c63a7ad683c3fd8badc81bb3effe165cb02ddff0c252cd60e22ca5744abc81171531d13243eef661898f88f4dd95a087e74972c747689a412f4d104ec72f8bcbc32a03d4f27ac213ddb832d52759b6557eed195ace0d2b95cf7df46f16d27e2d6831d13243eef661898f88f4dd95a087e74972c747689a412f4d104ec72f8bcbc3a95a746eef5bce1778790bc04cc5c6cc69aa2fc490b16523999492bdb8c0925467d4aa4693df42738e99ce03df555c2fe284908ad51bfb9583b38377c9583e22a95a746eef5bce1778790bc04cc5c6cc69aa2fc490b16523999492bdb8c0925401d34bcf41592379c9f9df5a23af31f1704038acd05d40e6b46a75a19df7dce0d8dc2eef1392b8022f229832a899b502ea5ef592a9f15c40dbb1fcfeaf526c1801d34bcf41592379c9f9df5a23af31f1704038acd05d40e6b46a75a19df7dce0e1f20770219be5b6f9bf11bb26f6138590c54444be0eb2bae2881800b86f7dd3c9f98025e51e7324b5991ca3dad406d398da8db073efad5bd3729f94013cd1b6e1f20770219be5b6f9bf11bb26f6138590c54444be0eb2bae2881800b86f7dd37ac45227f74497021ff5762f1778380ae0ef18e48387fe08d80046f126a487a1dbe8958ecd0d1ba8eb0fd2e6c3a27c213ffef0e21b09c52c991a14593633b9d67ac45227f74497021ff5762f1778380ae0ef18e48387fe08d80046f126a487a1c5e9efffb3edae30ede343fd6b3f86ba0b0a46f75806fc592326e9e7a17c1212d24d0f2125cc29722df18ecf50fca509b1be2ce31fcbf60a028a70e3c08316eac5e9efffb3edae30ede343fd6b3f86ba0b0a46f75806fc592326e9e7a17c12125da503c86a134e327c3227ca0e90a219d5bb855893ccfb82c95e1971d80b06087c28ada8c104bf0535671bc264b39e9bf4763e19d1cb2235300df022543ce9a75da503c86a134e327c3227ca0e90a219d5bb855893ccfb82c95e1971d80b0608cedbb71f97911aea43894b02c114545f53bb0916456f88a9fb00287950e00d8613848b4d3a200069ca3a9cab173bd8ee9cafb85db72946efabe49c8e2ce6aedecedbb71f97911aea43894b02c114545f53bb0916456f88a9fb00287950e00d869652113f0f8497777f929bc35dc64962bedd2e377887923bdd1e3d2d318a72587f8c755befa7e388ac21b9af5908761c646d7d4a4d5eb8481ca1f05770b373259652113f0f8497777f929bc35dc64962bedd2e377887923bdd1e3d2d318a7258a496a53412c3013ad5826eb1a6f73d4fc6bf9749e4cbb36f11222531a5babf00b41ad67976ee7cf515f48560660266ef85806f122ddffd82917a7cc0d0814557460a7ecc7730616f73ab0586c6f5f287fc794f666464b011be2bcbde8d01ef7e414d99f5042e30c0b1f9d0dc2ea437abb641c979d527f061081cdfd6e46f919267c05478126d87d36ba952d9c11f98d6e671bfb7ddcd0846a987c65462eca37c414d99f5042e30c0b1f9d0dc2ea437abb641c979d527f061081cdfd6e46f91928d7be78df0294943a8c3c93c9f6aa399ec26c490bff865cf2c664fefcd79b53c42363457a30ad153edf32e77e9a591b36fed55dd04ed9a9c88ce855d47b1dd708d7be78df0294943a8c3c93c9f6aa399ec26c490bff865cf2c664fefcd79b53cdf56b4decabe84ba08999e029dd6ab577820309ef62f26ddbb232df1d5a24011458d5a3a4ae38aa5022cfb2378aa881f6994e390a966686cafa4f8f31b552823df56b4decabe84ba08999e029dd6ab577820309ef62f26ddbb232df1d5a24011d6d6d261845bd675321cc9be2cf1cb9174cfb60d5fd3863575d119f958f459ecd3f71a856de539ea00d10c78823ae09166ebea0eccc063d751045b832c2e5e56d6d6d261845bd675321cc9be2cf1cb9174cfb60d5fd3863575d119f958f459ec526edff5d21fd1f1421f5ab6a706cb51732edcae235b9895f93a8f46e25505fe5546cf759222c0f6ad74c740c6bf9558a731ef75d57988a5233beed40aa3a28b48e03aae8546b4e1579edf21b47bd9835f11a6b097752d8226ca515c887e77e0637d74d26089c582fb784c2920f5bcb41e5b1fc8b9e0931ddc1cc8d92becbff47d60a26e82fd0469a95e02c2adda6607363a51ab67d5851cc323a58a595f74a743421286ad234a4240f8d4bc09f67bb58da0bf9d9b07bf93010989ef2c17f2f8fe590922db07a3d718241385c14ed103ae3b45edf9bffe3c49bd78a677f439a130ab335b5312af5ca57b26945c7297bec89f31e90d70e7c8cb0a2283599ab40f85f913f8cbd5dfd5d52d3b7d00eedec231ec3e4ee7d117db4a2bb714eb1a7243b23c6e6874f1d4d6acead3a3600dd64773e741f06d3641c5f29af92bfaa7b90f8fd994aed39f1b89a05137e2bf6e53401685ec408d5c424e267ff635bf8a6cdb7462c048c689f82c3ae6b5782a18776762f88055b80ae77a92243b6c0606e00484e6b890b22b2abcc0865c691162b93c6ffb9b4e17f05011bdaffa770a52fcf0aa4bb34f3f98e039f730033cf89d343281d41410af1c31d73ac5b291a59be1f398f856694b51330c729d4a87f5efd4c6c805db01edcea77d80b17f89d71bc0544c90f5869eea7116af135636529b262c7d7b8a4db4ccbf379945e3d7c90532dd520f4fc6cb52d8a6159565de605c3de008b8115da3f8db74cf2f9d466e288a541881dcf94b0a44fe355f2acabfe25d8d67871402bbc19aaab37c6ff955575f1ddbbc8f9c2f1b0f37625f2dc25d7322945ba4144708c9d17da256a6236acd6aace35a9f45b223d5c7e7f3bbfd8bc6495b1156c40b0ce3747ade0aed7b41aa23ac22d74368ba175175b9c14315f9d82fd7ddde60ae93d2e5572e9a647de7e869eb559d39df8c1ff38d177943f245b87f5379ee5ea93399fd6b5f7bfa882e6ed8caed3800137d48ffcf86ecb71afe5a24cd9ed381571f23036438ba8a97f502326a281f8597aef644910a5aad17cba6303e296378113f0ce24e5ea7346015e395ced4cea5fdba68fb9e361541820d44eed003c317f4ef14bb9df3406b8d2c53ef7cb356a2a8f5fe14c39c6af73623484df4ed930cc16ef4605f3b04fd9b618867a6ca64de882b5608e016b7df8f739089c9f262643bce09979b76399cc4be1ea12ce39288f4326136cadb4fab81fe31223187136bc3d9bdf65a9d67fd152e50a6e9d0268651a7c7b4aec72da3e81c45b8488d33de3459300b7226dccc31ad9563096319fe7810ed91786b503de80701a291a4f9abe54c9e101c19c0917b709e62f3cd2fbc788d4d75b514e53951dc90d00d41a8a87baad31bc1e380b7449bfcf183c26448d7b1cf7efa1fe2ccb61c7136baa2c566a879500d616b51e9d1bfa92125975e48ab453711c5072988e2e66a7fe51e716ac64e494f022a5ff82781ccd368faa064ffd9c8e30b1205e46bb4ede816c74b7948cfa34c7795ed19c35eac10d51bfb51912275d8e346dce0a40ab84316b15e3f142e66529a8c9cfd52210c1a1f255ae7e3271491d7bacb0cc32d0cc9b88c689c58d8543dad1bafec569109c7c664f4c6e0f47de1e833d5228fb36c72292280094b6c774cac52f3707c41bb6f16a7d9c5085ff5c64232897f6ee0a09258a41a35f153f47ff0f3b8fa97ec67be9e133b134a46b23cf2c635be3116415fd388e3a1c1581bf1a77d7f7f0aff3a725b8f386a9f535369afb495322e104077c66c5a3abb91917ec69f868b405120cf35ebdd6bb219641820ade89944b438bff446bbb89423e36139dc41e016d94c933b632c2dc13a158a5902e5b758166151ffa377db7f5a0c368bc3b0741a237876c3517c1fe16da359e01f3cdfdf3f7aead4283e8b8e1107522b72f59d4c4f3ade4c321333b3eaad9ecbf633186bc625d4a60c4c736def0fa00665add2ab899eecb11e2d997f442002389b3dadb47ed8134947c664a32ef637f43afdcbd1b5c138236cf27c336850035741d9dfc9f82dead5cc80781b078e50de397aba9fa049cb2b4264a834dc230d397725f398d905d0746321d543c56644e5c89af59fe3fedb61a84ec601c8786daf0564e978c97c0e14095c23f9a08bb64950f9cb541b074b3ac0550b241c99a566f61929515ca97aedf99f73568df3dfe93078ed22cb54892b2b8550dd411b75c6152c4da90843e1221094400080f9a1752e383d0b776f775b519ddd5633eb8732539594f79ed21a6544f65e599a0d5c8c84db3a488ccdad97e16f5f55d909fef8e3b59f84f0add8ca6c54d884343e983a482f1e9c46b4b59640f2459216a0a75b079145aa75a501b68aa8c5fa41210f334b9fb6e4c090e4d6483502cfbfce0ac87198cfd6d0ec7e5eec68834042ed949875730a35764c83ca0e9b262b9ad0046cbb0af1101a651fcb88cd1cba38e474b863abbb074b260a0296437194c674ad031297b060e590387062fa29455c2c7131ed9c7eaeb644db7be45b199106608c7c981c149d3b4ccf092e7a2e7e9430cc76887cd769b9aaf533b9a82e57761bbca3d4e07193652e8294895765092ef8a651f4dcf63acec7f15362ae68d64105485107e8173f94ce09739f276004bc8fa65efa5add2c6188e166c5178b2dd77d794938fa52adce719d4948a92ba1a689068cec1fb6888d033e0e300f627fc2199deb246ec793ef47b032de742d763a4170c8bb15e19ccbf602a5d1efc442b3fb93de89fb0988c73f8536fc5099afb761d2b69ec101c239c8c193336f2b6994f5aacca9689f32249db20a8dac36934314b7d5ba391d94169d63c66300aa47014a5c2dfc9bc0d6c3fb234dff4e4b60a6527d4cdfbb8c416f99df44b36aa909cd737b2ab252f6735c083928283633063e742e130550e6ba37247057058157c474314a2c6e95b6a4ca7fe36fc9ff1c4528694fa8881ae95339b916ecfe034060194d98567fa9f1cce67488fc6d13d9385bd4a070b4f9cf352f178faa4043c70f2394019c86793250dbb21492e68e7e88b171a419afc0119a5332d50a277f16699b17c3fd176c1b259959ed235bb9bb59d54731203c9c33c2e0e4317239a6018927b4543c3fcbd857f3bd1de7097c8f185bdee8f3373c7c3c4da70e84f122e13c385a135cbbbe8b1d87efeed43ddd3e0be9ddd8aa24b267b61fac42870d0bf5c92b0f2a5fe25ddf95729f6cba8a9ac48c7c0d1c2fdd7a7532586f2ea46be7d55a95c96f5bdffc7869acfea19c33c62a23ef9515d4f2f9e5b93b38b90521c6bf43370998d5a5a6670f7b13409335e9a2c1a350ed586bbe63be5f2266483d8a4278eff863cf0821f8247effa46279ef53a5f3689b88a011436aa6f1ade2a8984d77e39ffa556b775cb915fa38d4d8de8fb7afa20c10e47ff62c2f191b29f9bd3a01148a0d6627692f4ef22f93361cd19e4e279510c45a522ef10ff6650d14cc63d77057a20a35e235ce12e2ff851e3ddff3fd8e3497dfa8d76215fcc917b2c2cfc240e07330f7c5901feb7853734845d2a26ee01ab0282d0ddd29f163d1950382e4f9b3f90e94029d42967e58a827456cefdd332512b89a0e9a66fb8fb9b92740fddc7b1d603b1736a135bd15518081f20c0db1e1a779cab715ee9120fefd08b385ac576e43fa8dc10efb644425b9847d6b70b19f0b2ef484d7c0776f8285db5685f1d80d59ff013e045a963057e03af2588994b9805806385309847fe65e13c99d9f264166d9204eeff0492d43d03f2afd8f66494b3e110d7665ab29cc7981c39d8eef04d1afe30cbf47661b31504d85530550377d38df3d8d61c775afb09cc00aa56e0ef2fd7222620a03202eb00e35d31c39a0c236be7aaac6dc5b22bc5dce511181c72b336363bd7e0b59e7a1a40959e8718ec58aed9604c82675da926a667aa9936ec65cd80b2650d2f0f3434c2ee54f0be91939259add06ef7fd47847dfee4e6e1a025ae8b5bfe7d4503d86cf731653dc452804429c3b96c709eb7351da2057dfbfb1523cb1f80bb4965bdb7d9f4271a557571e511f373688d269dff2c8d2225e5737ffbc37e8ec7c49ece4fd6bfbd6e910e4e79ffc01b91f71452daa545a8e3c1988ef653a2f4f42e6338f793a245cb1e3d82226159ff9a08347915f353f4eb7052a48cc63f202816bdd3345a03598fb871ff5966304f255d7399aa32fd58162d796d46657ec6172dfca991a0403af846480e1346bee5765777cca31d8c01c9b468fcad0a4e529c8e205c1e4ecf30520545db654d466bd7158bd5f6ff83cb0df3ee5e7d997ffe23efb341b994bfbaf00b79a4832d54231a095dd5e248f0ea4f35052d23bb2c43564aa567b8cebaf91fd63ba0be8fef2f4167945a8dc901aa0420f8b1febd6c80bf0b27df6e06ff6fd967d8b5a10bd0d98196e75b7f42699e5e5a7c82ebdf2a2962946b7228c933ece0ea7c0d7789f21a7dd7e6425ff879f7875854ce68824f4e6dd2f5a68d7c1d94a2bbfeba8462ee6190faa3d49f1916c72abf67bd30a78ad7b364c2ae6c8b3d234eaa7ee5ae6bc837cdbe7f5f88e0fb30fa0ab5d0dc3030442ed92713f34170336c4dd2623723dc34829df895bceaf660c46faf8f9fbf2be5e23389d6e6477d1e458fee680e606bcc95d285378fb3fb0ec11f61bc6cf0947f3c3923aa18e1c6513684058ed0fa01ac858143e797cd05f1964d57c4c6c248ac7f7ea6a38019ada32a9ab7e6c28d060f87b03dea09f433197c8870b12bb7859cc4c3fe2068908cb1ddbd4880ab0f6fee91b6c23dfe31bb9d4e49098dc8ba76926cb370fd4cec6fb4e2895318405c5af2219d602/etc/idle3.9/config-extensions.def/etc/idle3.9/config-highlight.def/etc/idle3.9/config-keys.def/etc/idle3.9/config-main.defrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootpython39-3.9.15-150300.4.21.1.src.rpmapplication()application(idle3.9.desktop)config(python39-idle)metainfo()metainfo(idle3.9.appdata.xml)mimehandler(text/x-python)python39-idlepython39-idle(x86-64)@@     /usr/bin/python3.9config(python39-idle)python(abi)python39python39-tkrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PartialHardlinkSets)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.9.15-150300.4.21.13.93.9.153.0.4-14.6.0-14.0.4-14.0-15.2-14.14.3ck@cc@cRcOccb?bbb?@b@a@aaan@a}3af@a.a(a'@aa@`@`g@``r```@`N@`/@`"y@`!'`_T__԰_ _v@_u@_P_|\@_m_O@_N7_>e__@__A@___ @_X@_X@_X@_X@_X@_X@_X@_X@_X@^z^z^z^z^)@^^^^@^(@^3^@^'@^H^|@^h^`^>^>^8 @^8 @^ P@^[]f@]f@]]]]W]]c@]]]z@](]]]@]V]w@]i]g@]W@]Ik]6]!]G@\\9\~\@\\@\7\+@\\s\b@\b@\Q\C@\4\4\,\2\\\\&@[[@[^[ @[ͻ[ͻ[$@[ā@[/[[@["@[D[;e@[6@[4ZnZ@Z@ZZԐ@Zx@Z@Z Z Z Zz@ZxG@Zhu@Z`@ZLZ"Z }YYX@Yo@YY@YY@Y@YP@YI@XӸXƉXqX@Xv@W@V@Vm@VVhVCV }@U@U@U@U@UU[%UT@UT@UCjU@TeTBV@T;mcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comsteven.kowalik@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comsteven.kowalik@suse.commcepl@suse.commcepl@suse.comsteven.kowalik@suse.commcepl@suse.commcepl@suse.comdimstar@opensuse.orgmcepl@suse.commcepl@suse.comschwab@suse.deqydwhotmail@gmail.commcepl@suse.commcepl@suse.commcepl@suse.comdmueller@suse.comdcermak@suse.commcepl@suse.commcepl@suse.comcode@bnavigator.demcepl@suse.commcepl@suse.comsteven.kowalik@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comcode@bnavigator.demcepl@suse.commcepl@suse.comdimstar@opensuse.orgmcepl@suse.comdimstar@opensuse.orgmcepl@suse.commcepl@suse.comschwab@suse.decallumjfarmer13@gmail.commcepl@suse.comcallumjfarmer13@gmail.comcallumjfarmer13@gmail.comtchvatal@suse.comtchvatal@suse.commcepl@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.commcepl@suse.comtchvatal@suse.commcepl@suse.comtchvatal@suse.commcepl@suse.comdmueller@suse.comandreas.stieger@gmx.decallumjfarmer13@gmail.commcepl@suse.commcepl@suse.comschwab@suse.demcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.commliska@suse.czmcepl@suse.commcepl@suse.comtchvatal@suse.commcepl@suse.comstefan.bruens@rwth-aachen.destefan.bruens@rwth-aachen.demcepl@suse.commcepl@suse.commgorse@suse.comtchvatal@suse.commcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.commcepl@suse.combwiedemann@suse.comtchvatal@suse.commcepl@suse.comguillaume.gardet@opensuse.orgjayvdb@gmail.commcepl@suse.commcepl@suse.commcepl@suse.comschwab@suse.demcepl@suse.commliska@suse.czmcepl@suse.commcepl@suse.commcepl@suse.comjayvdb@gmail.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.comtchvatal@suse.commcepl@suse.comtoddrme2178@gmail.commcepl@suse.comjengelh@inai.demcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.commcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.commcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.commimi.vx@gmail.comhpj@urpla.netjengelh@inai.detchvatal@suse.comtchvatal@suse.comtchvatal@suse.commimi.vx@gmail.comadam@mizerski.plschwab@suse.debwiedemann@suse.comtchvatal@suse.comtchvatal@suse.comnormand@linux.vnet.ibm.comjmatejek@suse.comnormand@linux.vnet.ibm.comjmatejek@suse.comdimstar@opensuse.orgmimi.vx@gmail.comjmatejek@suse.comdmueller@suse.comvcizek@suse.comjengelh@inai.deschwab@suse.dejmatejek@suse.comkukuk@suse.dejmatejek@suse.comjmatejek@suse.comasn@cryptomilk.orgjmatejek@suse.comjmatejek@suse.combwiedemann@suse.comjmatejek@suse.comjmatejek@suse.comjmatejek@suse.comschwab@suse.detoddrme2178@gmail.comarichardson.kde@gmail.comtoddrme2178@gmail.comtoddrme2178@gmail.comjmatejek@suse.comdimstar@opensuse.orgjmatejek@suse.comfisiu@opensuse.orgdimstar@opensuse.orgmeissner@suse.comschwab@suse.dejmatejek@suse.comjmatejek@suse.commailaender@opensuse.orgrguenther@suse.comp.drouand@gmail.comcrrodriguez@opensuse.orgjmatejek@suse.com- Add CVE-2022-45061-DoS-by-IDNA-decode.patch to avoid CVE-2022-45061 (bsc#1205244) allowing DoS by IDNA decoding extremely long domain names.- Add CVE-2022-42919-loc-priv-mulitproc-forksrv.patch to avoid CVE-2022-42919 (bsc#1204886) avoiding Linux specific local privilege escalation via the multiprocessing forkserver start method.- Add 98437-sphinx.locale._-as-gettext-in-pyspecific.patch to allow building of documentation with the latest Sphinx 5.3.0 (gh#python/cpython#98366).- Update to 3.9.15: - Fix multiplying a list by an integer (list *= int): detect the integer overflow when the new allocated length is close to the maximum size. - Fix a shell code injection vulnerability in the get-remote-certificate.py example script. The script no longer uses a shell to run openssl commands. (originally filed as CVE-2022-37460, later withdrawn) - Fix command line parsing: reject -X int_max_str_digits option with no value (invalid) when the PYTHONINTMAXSTRDIGITS environment variable is set to a valid limit. - When ValueError is raised if an integer is larger than the limit, mention the sys.set_int_max_str_digits() function in the error message. - Update bundled libexpat to 2.4.9- Update to 3.9.14: - (CVE-2020-10735, bsc#1203125). Converting between int and str in bases other than 2 (binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base 10 (decimal) now raises a ValueError if the number of digits in string form is above a limit to avoid potential denial of service attacks due to the algorithmic complexity. This new limit can be configured or disabled by environment variable, command line flag, or sys APIs. See the integer string conversion length limitation documentation. The default limit is 4300 digits in string form. - Also other bug fixes: - http.server: Fix an open redirection vulnerability in the HTTP server when an URI path starts with //. Vulnerability discovered, and initial fix proposed, by Hamza Avvan. - Fix contextvars HAMT implementation to handle iteration over deep trees. The bug was discovered and fixed by Eli Libman. See MagicStack/immutables#84 for more details. - Fix binding of unix socket to empty address on Linux to use an available address from the abstract namespace, instead of “0”. - Suppress writing an XML declaration in open files in ElementTree.write() with encoding='unicode' and xml_declaration=None. - Fix the formatting for await x and not x in the operator precedence table when using the help() system. - Fix ensurepip environment isolation for subprocess running pip. - Fix problem with test_ssl test_get_ciphers on systems that require perfect forward secrecy (PFS) ciphers. - test_ssl is now checking for supported TLS version and protocols in more tests. - Removed upstreamed patches: - CVE-2021-28861-double-slash-path.patch - Realign patches: - bpo-31046_ensurepip_honours_prefix.patch - sphinx-update-removed-function.patch- Add patch CVE-2021-28861-double-slash-path.patch: * http.server: Fix an open redirection vulnerability in the HTTP server when an URI path starts with //. (bsc#1202624, CVE-2021-28861)- Switch from %primary_interpreter to prjconf-defined %primary_python (gh#openSUSE/python-rpm-macros#127).- Add CVE-2015-20107-mailcap-unsafe-filenames.patch to avoid CVE-2015-20107 (bsc#1198511, gh#python/cpython#68966), the command injection in the mailcap module. - Fix building of documentation and the universal configuration of the %primary_interpreter. - (bsc#1196784, CVE-2022-25236) Rename patch: support-expat-245.patch to support-expat-CVE-2022-25236-patched.patch and update the patch to detect expat >= 2.4.4 instead of >= 2.4.5 as it was fully patched against CVE-2022-25236.- Update to 3.9.13: - Core and Builtins - gh-92311: Fixed a bug where setting frame.f_lineno to jump over a list comprehension could misbehave or crash. - gh-92112: Fix crash triggered by an evil custom mro() on a metaclass. - gh-92036: Fix a crash in subinterpreters related to the garbage collector. When a subinterpreter is deleted, untrack all objects tracked by its GC. To prevent a crash in deallocator functions expecting objects to be tracked by the GC, leak a strong reference to these objects on purpose, so they are never deleted and their deallocator functions are not called. Patch by Victor Stinner. - gh-91421: Fix a potential integer overflow in _Py_DecodeUTF8Ex. - bpo-46775: Some Windows system error codes(>= 10000) are now mapped into the correct errno and may now raise a subclass of OSError. Patch by Dong-hee Na. - bpo-46962: Classes and functions that unconditionally declared their docstrings ignoring the - -without-doc-strings compilation flag no longer do so. - The classes affected are pickle.PickleBuffer, testcapi.RecursingInfinitelyError, and types.GenericAlias. - The functions affected are 24 methods in ctypes. - Patch by Oleg Iarygin. - bpo-36819: Fix crashes in built-in encoders with error handlers that return position less or equal than the starting position of non-encodable characters. - Library - gh-91581: utcfromtimestamp() no longer attempts to resolve fold in the pure Python implementation, since the fold is never 1 in UTC. In addition to being slightly faster in the common case, this also prevents some errors when the timestamp is close to datetime.min. Patch by Paul Ganssle. - gh-92530: Fix an issue that occurred after interrupting threading.Condition.notify(). - gh-92049: Forbid pickling constants re._constants.SUCCESS etc. Previously, pickling did not fail, but the result could not be unpickled. - bpo-47029: Always close the read end of the pipe used by multiprocessing.Queue after the last write of buffered data to the write end of the pipe to avoid BrokenPipeError at garbage collection and at multiprocessing.Queue.close() calls. Patch by Géry Ogam. - gh-91910: Add missing f prefix to f-strings in error messages from the multiprocessing and asyncio modules. - gh-91810: ElementTree method write() and function tostring() now use the text file’s encoding (“UTF-8” if not available) instead of locale encoding in XML declaration when encoding="unicode" is specified. - gh-91832: Add required attribute to argparse.Action repr output. - gh-91734: Fix OSS audio support on Solaris. - gh-91700: Compilation of regular expression containing a conditional expression (?(group)...) now raises an appropriate re.error if the group number refers to not defined group. Previously an internal RuntimeError was raised. - gh-91676: Fix unittest.IsolatedAsyncioTestCase to shutdown the per test event loop executor before returning from its run method so that a not yet stopped or garbage collected executor state does not persist beyond the test. - gh-90568: Parsing \N escapes of Unicode Named Character Sequences in a regular expression raises now re.error instead of TypeError. - gh-91595: Fix the comparison of character and integer inside Tools.gdb.libpython.write_repr(). Patch by Yu Liu. - gh-90622: Worker processes for concurrent.futures.ProcessPoolExecutor are no longer spawned on demand (a feature added in 3.9) when the multiprocessing context start method is "fork" as that can lead to deadlocks in the child processes due to a fork happening while threads are running. - gh-91575: Update case-insensitive matching in the re module to the latest Unicode version. - gh-91581: Remove an unhandled error case in the C implementation of calls to datetime.fromtimestamp with no time zone (i.e. getting a local time from an epoch timestamp). This should have no user-facing effect other than giving a possibly more accurate error message when called with timestamps that fall on 10000-01-01 in the local time. Patch by Paul Ganssle. - bpo-34480: Fix a bug where _markupbase raised an UnboundLocalError when an invalid keyword was found in marked section. Patch by Marek Suscak. - bpo-27929: Fix asyncio.loop.sock_connect() to only resolve names for socket.AF_INET or socket.AF_INET6 families. Resolution may not make sense for other families, like socket.AF_BLUETOOTH and socket.AF_UNIX. - bpo-43323: Fix errors in the email module if the charset itself contains undecodable/unencodable characters. - bpo-46787: Fix concurrent.futures.ProcessPoolExecutor exception memory leak - bpo-46415: Fix ipaddress.ip_{address,interface,network} raising TypeError instead of ValueError if given invalid tuple as address parameter. - bpo-44911: IsolatedAsyncioTestCase will no longer throw an exception while cancelling leaked tasks. Patch by Bar Harel. - bpo-44493: Add missing terminated NUL in sockaddr_un’s length - This was potentially observable when using non-abstract AF_UNIX datagram sockets to processes written in another programming language. - bpo-42627: Fix incorrect parsing of Windows registry proxy settings - bpo-36073: Raise ProgrammingError instead of segfaulting on recursive usage of cursors in sqlite3 converters. Patch by Sergey Fedoseev. - Documentation - gh-91888: Add a new gh role to the documentation to link to GitHub issues. - gh-91783: Document security issues concerning the use of the function shutil.unpack_archive() - gh-91547: Remove “Undocumented modules” page. - bpo-44347: Clarify the meaning of dirs_exist_ok, a kwarg of shutil.copytree(). - bpo-38668: Update the introduction to documentation for os.path to remove warnings that became irrelevant after the implementations of PEP 383 and PEP 529. - bpo-47138: Pin Jinja to a version compatible with Sphinx version 2.4.4. - bpo-46962: All docstrings in code snippets are now wrapped into PyDoc_STR() to follow the guideline of PEP 7’s Documentation Strings paragraph. Patch by Oleg Iarygin. - bpo-26792: Improve the docstrings of runpy.run_module() and runpy.run_path(). Original patch by Andrew Brezovsky. - bpo-45790: Adjust inaccurate phrasing in Defining Extension Types: Tutorial about the ob_base field and the macros used to access its contents. - bpo-42340: Document that in some circumstances KeyboardInterrupt may cause the code to enter an inconsistent state. Provided a sample workaround to avoid it if needed. - bpo-41233: Link the errnos referenced in Doc/library/exceptions.rst to their respective section in Doc/library/errno.rst, and vice versa. Previously this was only done for EINTR and InterruptedError. Patch by Yan “yyyyyyyan” Orestes. - bpo-38056: Overhaul the Error Handlers documentation in codecs. - bpo-13553: Document tkinter.Tk args. - Tests - gh-91607: Fix test_concurrent_futures to test the correct multiprocessing start method context in several cases where the test logic mixed this up. - bpo-47205: Skip test for sched_getaffinity() and sched_setaffinity() error case on FreeBSD. - bpo-29890: Add tests for ipaddress.IPv4Interface and ipaddress.IPv6Interface construction with tuple arguments. Original patch and tests by louisom. - Build - bpo-47103: Windows PGInstrument builds now copy a required DLL into the output directory, making it easier to run the profile stage of a PGO build. - Windows - bpo-47194: Update zlib to v1.2.12 to resolve CVE-2018-25032. - bpo-46785: Fix race condition between os.stat() and unlinking a file on Windows, by using errors codes returned by FindFirstFileW() when appropriate in win32_xstat_impl. - bpo-40859: Update Windows build to use xz-5.2.5 - Tools/Demos - gh-91583: Fix regression in the code generated by Argument Clinic for functions with the defining_class parameter. - Add patch support-expat-245.patch: * Support Expat >= 2.4.4 (jsc#SLE-21253)- Update to 3.9.12: - bpo-46968: Check for the existence of the “sys/auxv.h” header in faulthandler to avoid compilation problems in systems where this header doesn’t exist. Patch by Pablo Galindo - bpo-47101: hashlib.algorithms_available now lists only algorithms that are provided by activated crypto providers on OpenSSL 3.0. Legacy algorithms are not listed unless the legacy provider has been loaded into the default OSSL context. - bpo-23691: Protect the re.finditer() iterator from re-entering. - bpo-42369: Fix thread safety of zipfile._SharedFile.tell() to avoid a “zipfile.BadZipFile: Bad CRC-32 for file” exception when reading a ZipFile from multiple threads. - bpo-38256: Fix binascii.crc32() when it is compiled to use zlib’c crc32 to work properly on inputs 4+GiB in length instead of returning the wrong result. The workaround prior to this was to always feed the function data in increments smaller than 4GiB or to just call the zlib module function. - bpo-39394: A warning about inline flags not at the start of the regular expression now contains the position of the flag. - bpo-47061: Deprecate the various modules listed by PEP 594: - aifc, asynchat, asyncore, audioop, cgi, cgitb, chunk, crypt, imghdr, msilib, nntplib, nis, ossaudiodev, pipes, smtpd, sndhdr, spwd, sunau, telnetlib, uu, xdrlib - bpo-2604: Fix bug where doctests using globals would fail when run multiple times. - bpo-45997: Fix asyncio.Semaphore re-aquiring FIFO order. - bpo-47022: The asynchat, asyncore and smtpd modules have been deprecated since at least Python 3.6. Their documentation has now been updated to note they will removed in Python 3.12 (PEP 594). - bpo-46421: Fix a unittest issue where if the command was invoked as python -m unittest and the filename(s) began with a dot (.), a ValueError is returned. - bpo-40296: Fix supporting generic aliases in pydoc. - bpo-14156: argparse.FileType now supports an argument of ‘-’ in binary mode, returning the .buffer attribute of sys.stdin/sys.stdout as appropriate. Modes including ‘x’ and ‘a’ are treated equivalently to ‘w’ when argument is ‘-’. Patch contributed by Josh Rosenberg - Update to 3.9.11: - bpo-46852: Rename the private undocumented float.__set_format__() method to float.__setformat__() to fix a typo introduced in Python 3.7. The method is only used by test_float. Patch by Victor Stinner. - bpo-46794: Bump up the libexpat version into 2.4.6 - bpo-46762: Fix an assert failure in debug builds when a ‘<’, ‘>’, or ‘=’ is the last character in an f-string that’s missing a closing right brace. - bpo-46732: Correct the docstring for the __bool__() method. Patch by Jelle Zijlstra. - bpo-40479: Add a missing call to va_end() in Modules/_hashopenssl.c. - bpo-46615: When iterating over sets internally in setobject.c, acquire strong references to the resulting items from the set. This prevents crashes in corner-cases of various set operations where the set gets mutated. - bpo-43721: Fix docstrings of getter, setter, and deleter to clarify that they create a new copy of the property. - bpo-46503: Fix an assert when parsing some invalid N escape sequences in f-strings. - bpo-46417: Fix a race condition on setting a type __bases__ attribute: the internal function add_subclass() now gets the PyTypeObject.tp_subclasses member after calling PyWeakref_NewRef() which can trigger a garbage collection which can indirectly modify PyTypeObject.tp_subclasses. Patch by Victor Stinner. - bpo-46383: Fix invalid signature of _zoneinfo’s module_free function to resolve a crash on wasm32-emscripten platform. - bpo-43253: Fix a crash when closing transports where the underlying socket handle is already invalid on the Proactor event loop. - bpo-47004: Apply bugfixes from importlib_metadata 4.11.3, including bugfix for EntryPoint.extras, which was returning match objects and not the extras strings. - bpo-46985: Upgrade pip wheel bundled with ensurepip (pip 22.0.4, bnc#1186819, CVE-2021-3572) - bpo-46968: faulthandler: On Linux 5.14 and newer, dynamically determine size of signal handler stack size CPython allocates using getauxval(AT_MINSIGSTKSZ). This changes allows for Python extension’s request to Linux kernel to use AMX_TILE instruction set on Sapphire Rapids Xeon processor to succeed, unblocking use of the ISA in frameworks. - bpo-46955: Expose asyncio.base_events.Server as asyncio.Server. Patch by Stefan Zabka. - bpo-46932: Update bundled libexpat to 2.4.7 - bpo-25707: Fixed a file leak in xml.etree.ElementTree.iterparse() when the iterator is not exhausted. Patch by Jacob Walls. - bpo-44886: Inherit asyncio proactor datagram transport from asyncio.DatagramTransport. - bpo-46827: Support UDP sockets in asyncio.loop.sock_connect() for selector-based event loops. Patch by Thomas Grainger. - bpo-46811: Make test suite support Expat >=2.4.5 - bpo-46252: Raise TypeError if ssl.SSLSocket is passed to transport-based APIs. - bpo-46784: Fix libexpat symbols collisions with user dynamically loaded or statically linked libexpat in embedded Python. - bpo-39327: shutil.rmtree() can now work with VirtualBox shared folders when running from the guest operating-system. - bpo-46756: Fix a bug in urllib.request.HTTPPasswordMgr.find_user_password() and urllib.request.HTTPPasswordMgrWithPriorAuth.is_authenticated() which allowed to bypass authorization. For example, access to URI example.org/foobar was allowed if the user was authorized for URI example.org/foo. - bpo-45863: When the tarfile module creates a pax format archive, it will put an integer representation of timestamps in the ustar header (if possible) for the benefit of older unarchivers, in addition to the existing full-precision timestamps in the pax extended header. - bpo-46672: Fix NameError in asyncio.gather() when initial type check fails. - bpo-45948: Fixed a discrepancy in the C implementation of the xml.etree.ElementTree module. Now, instantiating an xml.etree.ElementTree.XMLParser with a target=None keyword provides a default xml.etree.ElementTree.TreeBuilder target as the Python implementation does. - bpo-46591: Make the IDLE doc URL on the About IDLE dialog clickable. - bpo-46400: expat: Update libexpat from 2.4.1 to 2.4.4 - bpo-46487: Add the get_write_buffer_limits method to asyncio.transports.WriteTransport and to the SSL transport. - bpo-46539: In typing.get_type_hints(), support evaluating stringified ClassVar and Final annotations inside Annotated. Patch by Gregory Beauregard. - bpo-46491: Allow typing.Annotated to wrap typing.Final and typing.ClassVar. Patch by Gregory Beauregard. - bpo-46436: Fix command-line option -d/--directory in module http.server which is ignored when combined with command-line option --cgi. Patch by Géry Ogam. - bpo-41403: Make mock.patch() raise a TypeError with a relevant error message on invalid arg. Previously it allowed a cryptic AttributeError to escape. - bpo-46474: In importlib.metadata.EntryPoint.pattern, avoid potential REDoS by limiting ambiguity in consecutive whitespace. - bpo-46469: asyncio generic classes now return types.GenericAlias in __class_getitem__ instead of the same class. - bpo-46434: pdb now gracefully handles help when __doc__ is missing, for example when run with pregenerated optimized .pyc files. - bpo-46333: The __eq__() and __hash__() methods of typing.ForwardRef now honor the module parameter of typing.ForwardRef. Forward references from different modules are now differentiated. - bpo-43118: Fix a bug in inspect.signature() that was causing it to fail on some subclasses of classes with a __text_signature__ referencing module globals. Patch by Weipeng Hong. - bpo-21987: Fix an issue with tarfile.TarFile.getmember() getting a directory name with a trailing slash. - bpo-20392: Fix inconsistency with uppercase file extensions in MimeTypes.guess_type(). Patch by Kumar Aditya. - bpo-46080: Fix exception in argparse help text generation if a argparse.BooleanOptionalAction argument’s default is argparse.SUPPRESS and it has help specified. Patch by Felix Fontein. - bpo-44439: Fix .write() method of a member file in ZipFile, when the input data is an object that supports the buffer protocol, the file length may be wrong. - bpo-45703: When a namespace package is imported before another module from the same namespace is created/installed in a different sys.path location while the program is running, calling the importlib.invalidate_caches() function will now also guarantee the new module is noticed. - bpo-24959: Fix bug where unittest sometimes drops frames from tracebacks of exceptions raised in tests. - bpo-46463: Fixes escape4chm.py script used when building the CHM documentation file - bpo-46913: Fix test_faulthandler.test_sigfpe() if Python is built with undefined behavior sanitizer (UBSAN): disable UBSAN on the faulthandler_sigfpe() function. Patch by Victor Stinner. - bpo-46708: Prevent default asyncio event loop policy modification warning after test_asyncio execution. - bpo-46616: Ensures test_importlib.test_windows cleans up registry keys after completion. - bpo-44359: test_ftplib now silently ignores socket errors to prevent logging unhandled threading exceptions. Patch by Victor Stinner. - bpo-46542: Fix a Python crash in test_lib2to3 when using Python built in debug mode: limit the recursion limit. Patch by Victor Stinner. - bpo-46576: test_peg_generator now disables compiler optimization when testing compilation of its own C extensions to significantly speed up the testing on non-debug builds of CPython. - bpo-46542: Fix test_json tests checking for RecursionError: modify these tests to use support.infinite_recursion(). Patch by Victor Stinner. - bpo-13886: Skip test_builtin PTY tests on non-ASCII characters if the readline module is loaded. The readline module changes input() behavior, but test_builtin is not intented to test the readline module. Patch by Victor Stinner. - bpo-38472: Fix GCC detection in setup.py when cross-compiling. The C compiler is now run with LC_ALL=C. Previously, the detection failed with a German locale. - bpo-46513: configure no longer uses AC_C_CHAR_UNSIGNED macro and pyconfig.h no longer defines reserved symbol __CHAR_UNSIGNED__. - bpo-45925: Update Windows installer to use SQLite 3.37.2. - bpo-45296: Clarify close, quit, and exit in IDLE. In the File menu, ‘Close’ and ‘Exit’ are now ‘Close Window’ (the current one) and ‘Exit’ is now ‘Exit IDLE’ (by closing all windows). In Shell, ‘quit()’ and ‘exit()’ mean ‘close Shell’. If there are no other windows, this also exits IDLE. - bpo-45447: Apply IDLE syntax highlighting to pyi files. Patch by Alex Waygood and Terry Jan Reedy. - Removed upstreamed patches: - support-expat-245.patch- Add patch support-expat-245.patch: * Support Expat >= 2.4.5- Update to 3.9.10: Bugfix-only release- Remove shebangs from from python-base libraries in _libdir (bsc#1193179, bsc#1192249). - Readjust patches: - bpo-31046_ensurepip_honours_prefix.patch - decimal.patch - python-3.3.0b1-fix_date_time_compiler.patch- Update to 3.9.9: * Core and Builtins + bpo-30570: Fixed a crash in issubclass() from infinite recursion when searching pathological __bases__ tuples. + bpo-45494: Fix parser crash when reporting errors involving invalid continuation characters. Patch by Pablo Galindo. + bpo-45385: Fix reference leak from descr_check. Patch by Dong-hee Na. + bpo-45167: Fix deepcopying of types.GenericAlias objects. + bpo-44219: Release the GIL while performing isatty system calls on arbitrary file descriptors. In particular, this affects os.isatty(), os.device_encoding() and io.TextIOWrapper. By extension, io.open() in text mode is also affected. This change solves a deadlock in os.isatty(). Patch by Vincent Michel in bpo-44219. + bpo-44959: Added fallback to extension modules with ‘.sl’ suffix on HP-UX + bpo-44050: Extensions that indicate they use global state (by setting m_size to -1) can again be used in multiple interpreters. This reverts to behavior of Python 3.8. + bpo-45121: Fix issue where Protocol.__init__ raises RecursionError when it’s called directly or via super(). Patch provided by Yurii Karabas. + bpo-45083: When the interpreter renders an exception, its name now has a complete qualname. Previously only the class name was concatenated to the module name, which sometimes resulted in an incorrect full name being displayed. + bpo-45738: Fix computation of error location for invalid continuation characters in the parser. Patch by Pablo Galindo. + Library + bpo-45678: Fix bug in Python 3.9 that meant functools.singledispatchmethod failed to properly wrap the attributes of the target method. Patch by Alex Waygood. + bpo-45679: Fix caching of multi-value typing.Literal. Literal[True, 2] is no longer equal to Literal[1, 2]. + bpo-45438: Fix typing.Signature string representation for generic builtin types. + bpo-45581: sqlite3.connect() now correctly raises MemoryError if the underlying SQLite API signals memory error. Patch by Erlend E. Aasland. + bpo-39679: Fix bug in functools.singledispatchmethod that caused it to fail when attempting to register a classmethod() or staticmethod() using type annotations. Patch contributed by Alex Waygood. + bpo-45515: Add references to zoneinfo in the datetime documentation, mostly replacing outdated references to dateutil.tz. Change by Paul Ganssle. + bpo-45467: Fix incremental decoder and stream reader in the “raw-unicode-escape” codec. Previously they failed if the escape sequence was split. + bpo-45461: Fix incremental decoder and stream reader in the “unicode-escape” codec. Previously they failed if the escape sequence was split. + bpo-45239: Fixed email.utils.parsedate_tz() crashing with UnboundLocalError on certain invalid input instead of returning None. Patch by Ben Hoyt. + bpo-44904: Fix bug in the doctest module that caused it to fail if a docstring included an example with a classmethod property. Patch by Alex Waygood. + bpo-45406: Make inspect.getmodule() catch FileNotFoundError raised by :’func:inspect.getabsfile, and return None to indicate that the module could not be determined. + bpo-45262: Prevent use-after-free in asyncio. Make sure the cached running loop holder gets cleared on dealloc to prevent use-after-free in get_running_loop + bpo-45386: Make xmlrpc.client more robust to C runtimes where the underlying C strftime function results in a ValueError when testing for year formatting options. + bpo-45371: Fix clang rpath issue in distutils. The UnixCCompiler now uses correct clang option to add a runtime library directory (rpath) to a shared library. + bpo-20028: Improve error message of csv.Dialect when initializing. Patch by Vajrasky Kok and Dong-hee Na. + bpo-45343: Update bundled pip to 21.2.4 and setuptools to 58.1.0 + bpo-41710: On Unix, if the sem_clockwait() function is available in the C library (glibc 2.30 and newer), the threading.Lock.acquire() method now uses the monotonic clock (time.CLOCK_MONOTONIC) for the timeout, rather than using the system clock (time.CLOCK_REALTIME), to not be affected by system clock changes. Patch by Victor Stinner. + bpo-45328: Fixed http.client.HTTPConnection to work properly in OSs that don’t support the TCP_NODELAY socket option. + bpo-1596321: Fix the threading._shutdown() function when the threading module was imported first from a thread different than the main thread: no longer log an error at Python exit. + bpo-45274: Fix a race condition in the Thread.join() method of the threading module. If the function is interrupted by a signal and the signal handler raises an exception, make sure that the thread remains in a consistent state to prevent a deadlock. Patch by Victor Stinner. + bpo-45238: Fix unittest.IsolatedAsyncioTestCase.debug(): it runs now asynchronous methods and callbacks. + bpo-36674: unittest.TestCase.debug() raises now a unittest.SkipTest if the class or the test method are decorated with the skipping decorator. + bpo-45235: Fix an issue where argparse would not preserve values in a provided namespace when using a subparser with defaults. + bpo-45234: Fixed a regression in copyfile(), copy(), copy2() raising FileNotFoundError when source is a directory, which should raise IsADirectoryError + bpo-45228: Fix stack buffer overflow in parsing J1939 network address. + bpo-45192: Fix the tempfile._infer_return_type function so that the dir argument of the tempfile functions accepts an object implementing the os.PathLike protocol. + bpo-45160: When tracing a tkinter variable used by a ttk OptionMenu, callbacks are no longer made twice. + bpo-35474: Calling mimetypes.guess_all_extensions() with strict=False no longer affects the result of the following call with strict=True. Also, mutating the returned list no longer affects the global state. + bpo-45166: typing.get_type_hints() now works with Final wrapped in ForwardRef. + bpo-45097: Remove deprecation warnings about the loop argument in asyncio incorrectly emitted in cases when the user does not pass the loop argument. + bpo-45081: Fix issue when dataclasses that inherit from typing.Protocol subclasses have wrong __init__. Patch provided by Yurii Karabas. + bpo-24444: Fixed an error raised in argparse help display when help for an option is set to 1+ blank spaces or when choices arg is an empty container. + bpo-45021: Fix a potential deadlock at shutdown of forked children when using concurrent.futures module + bpo-45030: Fix integer overflow in pickling and copying the range iterator. + bpo-39039: tarfile.open raises ReadError when a zlib error occurs during file extraction. + bpo-44594: Fix an edge case of ExitStack and AsyncExitStack exception chaining. They will now match with block behavior when __context__ is explicitly set to None when the exception is in flight. * Documentation + bpo-45726: Improve documentation for functools.singledispatch() and functools.singledispatchmethod. + bpo-45680: Amend the docs on GenericAlias objects to clarify that non-container classes can also implement __class_getitem__. Patch contributed by Alex Waygood. + bpo-45655: Add a new “relevant PEPs” section to the top of the documentation for the typing module. Patch by Alex Waygood. + bpo-45604: Add level argument to multiprocessing.log_to_stderr function docs. + bpo-45464: Mention in the documentation of Built-in Exceptions that inheriting from multiple exception types in a single subclass is not recommended due to possible memory layout incompatibility. + bpo-45449: Add note about PEP 585 in collections.abc. + bpo-45516: Add protocol description to the importlib.abc.Traversable documentation. + bpo-20692: Add Programming FAQ entry explaining that int literal attribute access requires either a space after or parentheses around the literal. + bpo-45216: Remove extra documentation listing methods in difflib. It was rendering twice in pydoc and was outdated in some places. + bpo-45772: socket.socket documentation is corrected to a class from a function. + bpo-45392: Update the docstring of the type built-in to remove a redundant line and to mention keyword arguments for the constructor. * Tests + bpo-45578: Add tests for dis.distb() + bpo-45577: Add subtests for all pickle protocols in test_zoneinfo. + bpo-43592: test.libregrtest now raises the soft resource limit for the maximum number of file descriptors when the default is too low for our test suite as was often the case on macOS. + bpo-40173: Fix test.support.import_helper.import_fresh_module(). + bpo-45280: Add a test case for empty typing.NamedTuple. + bpo-45269: Cover case when invalid markers type is supplied to c_make_encoder. + bpo-45209: Fix UserWarning: resource_tracker warning in _test_multiprocessing._TestSharedMemory.test_shared_memory_cleaned_after_process_termination + bpo-45195: Fix test_readline.test_nonascii(): sometimes, the newline character is not written at the end, so don’t expect it in the output. Patch by Victor Stinner. + bpo-45156: Fixes infinite loop on unittest.mock.seal() of mocks created by create_autospec(). + bpo-45042: Fixes that test classes decorated with @hashlib_helper.requires_hashdigest were skipped all the time. + bpo-45235: Reverted an argparse bugfix that caused regression in the handling of default arguments for subparsers. This prevented leaf level arguments from taking precedence over root level arguments. + bpo-45765: In importlib.metadata, fix distribution discovery for an empty path. + bpo-45644: In-place JSON file formatting using python3 -m json.tool infile infile now works correctly, previously it left the file empty. Patch by Chris Wesseling. * Build + bpo-43158: setup.py now uses values from configure script to build the _uuid extension module. Configure now detects util-linux’s libuuid, too. + bpo-45571: Modules/Setup now use PY_CFLAGS_NODIST instead of PY_CFLAGS to compile shared modules. + bpo-45532: Update sys.version to use main as fallback information. Patch by Jeong YunWon. + bpo-45405: Prevent internal configure error when running configure with recent versions of non-Apple clang. Patch by David Bohman. + bpo-45220: Avoid building with the Windows 11 SDK previews automatically. This may be overridden by setting the DefaultWindowsSDKVersion environment variable before building. * C API + bpo-44687: BufferedReader.peek() no longer raises ValueError when the entire file has already been buffered. + bpo-44751: Remove crypt.h include from the public Python.h header. - Drop patch incorrect-deprecation-warn-asyncio.patch, fix included.- rpm-build-python dependency is available on the current Factory, not with SLE.- Add incorrect-deprecation-warn-asyncio.patch to fix bpo#45097 (from gh#python/cpython#28153) to remove incorrect deprecation warnings in asyncio.- BuildRequire rpm-build-python: The provider to inject python(abi) has been moved there. rpm-build pulls rpm-build-python automatically in when building anything against python3-base, but this implies that the initial build of python3-base does not trigger the automatic installation.- Update to 3.9.7: - Security - Replaced usage of tempfile.mktemp() with TemporaryDirectory to avoid a potential race condition. - Add auditing events to the marshal module, and stop raising code.__init__ events for every unmarshalled code object. Directly instantiated code objects will continue to raise an event, and audit event handlers should inspect or collect the raw marshal data. This reduces a significant performance overhead when loading from .pyc files. - Made the internal putcmd function in smtplib sanitize input for presence of \r and \n characters to avoid (unlikely) command injection. - Core and Builtins - Fixed pickling of range iterators that iterated for over 2**32 times. - Fix a race in WeakKeyDictionary, WeakValueDictionary and WeakSet when two threads attempt to commit the last pending removal. This fixes asyncio.create_task and fixes a data loss in asyncio.run where shutdown_asyncgens is not run - Fixed a corner case bug where the result of float.fromhex('0x.8p-1074') was rounded the wrong way. - Refine the syntax error for trailing commas in import statements. Patch by Pablo Galindo. - Restore behaviour of complex exponentiation with integer-valued exponent of type float or complex. - Correct the ast locations of f-strings with format specs and repeated expressions. Patch by Pablo Galindo - Use new trashcan macros (Py_TRASHCAN_BEGIN/END) in frameobject.c instead of the old ones (Py_TRASHCAN_SAFE_BEGIN/END). - Fix segmentation fault with deep recursion when cleaning method objects. Patch by Augusto Goulart and Pablo Galindo. - Fix bug where PyErr_SetObject hangs when the current exception has a cycle in its context chain. - Fix reference leaks in the error paths of update_bases() and __build_class__. Patch by Pablo Galindo. - Fix undefined behaviour in complex object exponentiation. - Remove uses of PyObject_GC_Del() in error path when initializing types.GenericAlias. - Remove the pass-through for hash() of weakref.proxy objects to prevent unintended consequences when the original referred object dies while the proxy is part of a hashable object. Patch by Pablo Galindo. - Fix ltrace functionality when exceptions are raised. Patch by Pablo Galindo - Fix a crash at Python exit when a deallocator function removes the last strong reference to a heap type. Patch by Victor Stinner. - Fix crash when using passing a non-exception to a generator’s throw() method. Patch by Noah Oxer - Library - run() now always return a TestResult instance. Previously it returned None if the test class or method was decorated with a skipping decorator. - Fix bugs in cleaning up classes and modules in unittest: - Functions registered with addModuleCleanup() were not called unless the user defines tearDownModule() in their test module. - Functions registered with addClassCleanup() were not called if tearDownClass is set to None. - Buffering in TestResult did not work with functions registered with addClassCleanup() and addModuleCleanup(). - Errors in functions registered with addClassCleanup() and addModuleCleanup() were not handled correctly in buffered and debug modes. - Errors in setUpModule() and functions registered with addModuleCleanup() were reported in wrong order. - And several lesser bugs. - Made email date parsing more robust against malformed input, namely a whitespace-only Date: header. Patch by Wouter Bolsterlee. - Fix a crash in the signal handler of the faulthandler module: no longer modify the reference count of frame objects. Patch by Victor Stinner. - Method stopTestRun() is now always called in pair with method startTestRun() for TestResult objects implicitly created in run(). Previously it was not called for test methods and classes decorated with a skipping decorator. - argparse.BooleanOptionalAction’s default value is no longer printed twice when used with argparse.ArgumentDefaultsHelpFormatter. - Upgrade bundled pip to 21.2.3 and setuptools to 57.4.0 - Fix the os.set_inheritable() function on FreeBSD 14 for file descriptor opened with the O_PATH flag: ignore the EBADF error on ioctl(), fallback on the fcntl() implementation. Patch by Victor Stinner. - The @functools.total_ordering() decorator now works with metaclasses. - sqlite3 user-defined functions and aggregators returning strings with embedded NUL characters are no longer truncated. Patch by Erlend E. Aasland. - Always show loop= arg deprecations in asyncio.gather() and asyncio.sleep() - Non-protocol subclasses of typing.Protocol ignore now the __init__ method inherited from protocol base classes. - The tokenize.tokenize() doesn’t incorrectly generate a NEWLINE token if the source doesn’t end with a new line character but the last line is a comment, as the function is already generating a NL token. Patch by Pablo Galindo - Fix http.client.HTTPSConnection fails to download >2GiB data. - rcompleter does not call getattr() on property objects to avoid the side-effect of evaluating the corresponding method. - weakref.proxy objects referencing non-iterators now raise TypeError rather than dereferencing the null tp_iternext slot and crashing. - The implementation of collections.abc.Set._hash() now matches that of frozenset.__hash__(). - Fixed issue in compileall.compile_file() when sys.stdout is redirected. Patch by Stefan Hölzl. - Give priority to using the current class constructor in inspect.signature(). Patch by Weipeng Hong. - Fix memory leak in _tkinter._flatten() if it is called with a sequence or set, but not list or tuple. - Update shutil.copyfile() to raise FileNotFoundError instead of confusing IsADirectoryError when a path ending with a os.path.sep does not exist; shutil.copy() and shutil.copy2() are also affected. - handle StopIteration subclass raised from @contextlib.contextmanager generator - Make the implementation consistency of indexOf() between C and Python versions. Patch by Dong-hee Na. - Fixes TypedDict to work with typing.get_type_hints() and postponed evaluation of annotations across modules. - Fix bug with pdb’s handling of import error due to a package which does not have a __main__ module - Fixed an exception thrown while parsing a malformed multipart email by email.message.EmailMessage. - pathlib.PureWindowsPath.is_reserved() now identifies a greater range of reserved filenames, including those with trailing spaces or colons. - Handle exceptions from parsing the arg of pdb’s run/restart command. - The sqlite3 context manager now performs a rollback (thus releasing the database lock) if commit failed. Patch by Luca Citi and Erlend E. Aasland. - Improved string handling for sqlite3 user-defined functions and aggregates: - It is now possible to pass strings with embedded null characters to UDFs - Conversion failures now correctly raise MemoryError - Patch by Erlend E. Aasland. - Handle RecursionError in TracebackException’s constructor, so that long exceptions chains are truncated instead of causing traceback formatting to fail. - Fix email.message.EmailMessage.set_content() when called with binary data and 7bit content transfer encoding. - The compresslevel and preset keyword arguments of tarfile.open() are now both documented and tested. - Fixed a Y2k38 bug in the compileall module where it would fail to compile files with a modification time after the year 2038. - Fix test___all__ on platforms lacking a shared memory implementation. - Pass multiprocessing BaseProxy argument manager_owned through AutoProxy. - email.utils.getaddresses() now accepts email.header.Header objects along with string values. Patch by Zackery Spytz. - lib2to3 now recognizes async generators everywhere. - Fix TypeError when required subparsers without dest do not receive arguments. Patch by Anthony Sottile. - Documentation - Removed the othergui.rst file, any references to it, and the list of GUI frameworks in the FAQ. In their place I’ve added links to the Python Wiki page on GUI frameworks. - Update the definition of __future__ in the glossary by replacing the confusing word “pseudo-module” with a more accurate description. - Add typical examples to os.path.splitext docs - Clarify that shutil.make_archive() is not thread-safe due to reliance on changing the current working directory. - Update of three expired hyperlinks in Doc/distributing/index.rst: “Project structure”, “Building and packaging the project”, and “Uploading the project to the Python Packaging Index”. - Updated the docstring and docs of filecmp.cmp() to be more accurate and less confusing especially in respect to shallow arg. - Match the docstring and python implementation of countOf() to the behavior of its c implementation. - List all kwargs for textwrap.wrap(), textwrap.fill(), and textwrap.shorten(). Now, there are nav links to attributes of TextWrap, which makes navigation much easier while minimizing duplication in the documentation. - Clarify that atexit uses equality comparisons internally. - Documentation of csv.Dialect is more descriptive. - Fix documentation for the return type of sysconfig.get_path(). - Add a “Security Considerations” index which links to standard library modules that have explicitly documented security considerations. - Remove the unqualified claim that tkinter is threadsafe. It has not been true for several years and likely never was. An explanation of what is true may be added later, after more discussion, and possibly after patching _tkinter.c, - Tests - Add calls of gc.collect() in tests to support PyPy. - Made tests relying on the _asyncio C extension module optional to allow running on alternative Python implementations. Patch by Serhiy Storchaka. - Fix auto history tests of test_readline: sometimes, the newline character is not written at the end, so don’t expect it in the output. - Add ability to wholesale silence DeprecationWarnings while running the regression test suite. - Notify users running test_decimal regression tests on macOS of potential harmless “malloc can’t allocate region” messages spewed by test_decimal. - Fixed floating point precision issue in turtle tests. - Regression tests, when run with -w, are now re-running only the affected test methods instead of re-running the entire test file. - Add test for nested queues when using multiprocessing shared objects AutoProxy[Queue] inside ListProxy and DictProxy- Add decimal.patch to add building with --with-system-libmpdec option (bsc#1189356).- test_faulthandler is still problematic under qemu linux-user emulation, disable it there - Reenable profileopt with qemu emulation, test_faulthandler is no longer run during profiling- Update to 3.9.6: * Security - bpo-44022 (bsc#1189241, CVE-2021-3737): http.client now avoids infinitely reading potential HTTP headers after a 100 Continue status response from the server. * Core and Builtins - bpo-44168: Fix error message in the parser involving keyword arguments with invalid expressions. Patch by Pablo Galindo - bpo-44114: Fix incorrect dictkeys_reversed and dictitems_reversed function signatures in C code, which broke webassembly builds. - bpo-44070: No longer eagerly makes import filenames absolute, except for extension modules, which was introduced in 3.9.5. - bpo-28146: Fix a confusing error message in str.format(). - bpo-11105: When compiling ast.AST objects with recursive references through compile(), the interpreter doesn’t crash anymore instead it raises a RecursionError. * Library - bpo-43972: When http.server.SimpleHTTPRequestHandler sends a 301 (Moved Permanently) for a directory path not ending with /, add a Content-Length: 0 header. This improves the behavior for certain clients. - bpo-43776: When subprocess.Popen args are provided as a string or as pathlib.Path, the Popen instance repr now shows the right thing. - bpo-43318: Fix a bug where pdb does not always echo cleared breakpoints. - bpo-43295: datetime.datetime.strptime() now raises ValueError instead of IndexError when matching 'z' with the %z format specifier. - bpo-37022: pdb now displays exceptions from repr() with its p and pp commands. * IDLE - bpo-33962: Move the indent space setting from the Font tab to the new Windows tab. Patch by Mark Roseman and Terry Jan Reedy. - bpo-40468: Split the settings dialog General tab into Windows and Shell/ED tabs. Move help sources, which extend the Help menu, to the Extensions tab. Make space for new options and shorten the dialog. The latter makes the dialog better fit small screens. - bpo-41611: Avoid uncaught exceptions in AutoCompleteWindow.winconfig_event(). - bpo-41611: Fix IDLE sometimes freezing upon tab-completion on macOS. * Tools/Demos - bpo-44074: Make patchcheck automatically detect the correct base branch name (previously it was hardcoded to ‘master’) - Upstreamed patches were removed: - bpo44426-complex-keyword-sphinx.patch - Refreshed patches: - subprocess-raise-timeout.patch- Use versioned python-Sphinx to avoid dependency on other version of Python (bsc#1183858).- Add bpo44426-complex-keyword-sphinx.patch allowing generating documentation with Sphinx 4 (bpo#44426).- Revert previous skip over test_capi - Add skip-test_pyobject_freed_is_freed.patch to skip failing test on SLE-15.- allow build with Sphinx >= 3.x- Exclude test_capi on Leap (test fails there)- Stop providing "python" symbol (bsc#1185588), which means python2 currently.- Update to 3.9.5: * Security - bpo-43434: Creating a sqlite3.Connection object now also produces a sqlite3.connect auditing event. Previously this event was only produced by sqlite3.connect() calls. Patch by Erlend E. Aasland. - bpo-43882: The presence of newline or tab characters in parts of a URL could allow some forms of attacks. - Following the controlling specification for URLs defined by WHATWG urllib.parse() now removes ASCII newlines and tabs from URLs, preventing such attacks. - bpo-43472: Ensures interpreter-level audit hooks receive the cpython.PyInterpreterState_New event when called through the _xxsubinterpreters module. - bpo-36384 (bsc#1185706, CVE-2021-29921): ipaddress module no longer accepts any leading zeros in IPv4 address strings. Leading zeros are ambiguous and interpreted as octal notation by some libraries. For example the legacy function socket.inet_aton() treats leading zeros as octal notatation. glibc implementation of modern inet_pton() does not accept any leading zeros. For a while the ipaddress module used to accept ambiguous leading zeros. - bpo-43075 (CVE-2021-3733, bsc#1189287): Fix Regular Expression Denial of Service (ReDoS) vulnerability in urllib.request.AbstractBasicAuthHandler. The ReDoS-vulnerable regex has quadratic worst-case complexity and it allows cause a denial of service when identifying crafted invalid RFCs. This ReDoS issue is on the client side and needs remote attackers to control the HTTP server. - bpo-42800: Audit hooks are now fired for frame.f_code, traceback.tb_frame, and generator code/frame attribute access. * Core and Builtins - bpo-43105: Importlib now resolves relative paths when creating module spec objects from file locations. - bpo-42924: Fix bytearray repetition incorrectly copying data from the start of the buffer, even if the data is offset within the buffer (e.g. after reassigning a slice at the start of the bytearray to a shorter byte string). * Library - bpo-43993: Update bundled pip to 21.1.1. - bpo-43937: Fixed the turtle module working with non-default root window. - bpo-43930: Update bundled pip to 21.1 and setuptools to 56.0.0 - bpo-43920: OpenSSL 3.0.0: load_verify_locations() now returns a consistent error message when cadata contains no valid certificate. - bpo-43607: urllib can now convert Windows paths with \\?\ prefixes into URL paths. - bpo-43284: platform.win32_ver derives the windows version from sys.getwindowsversion().platform_version which in turn derives the version from kernel32.dll (which can be of a different version than Windows itself). Therefore change the platform.win32_ver to determine the version using the platform module’s _syscmd_ver private function to return an accurate version. - bpo-42248: [Enum] ensure exceptions raised in _missing__ are released - bpo-43799: OpenSSL 3.0.0: define OPENSSL_API_COMPAT 1.1.1 to suppress deprecation warnings. Python requires OpenSSL 1.1.1 APIs. - bpo-43794: Add ssl.OP_IGNORE_UNEXPECTED_EOF constants (OpenSSL 3.0.0) - bpo-43789: OpenSSL 3.0.0: Don’t call the password callback function a second time when first call has signaled an error condition. - bpo-43788: The header files for ssl error codes are now OpenSSL version-specific. Exceptions will now show correct reason and library codes. The make_ssl_data.py script has been rewritten to use OpenSSL’s text file with error codes. - bpo-43655: tkinter dialog windows are now recognized as dialogs by window managers on macOS and X Window. - bpo-43534: turtle.textinput() and turtle.numinput() create now a transient window working on behalf of the canvas window. - bpo-43522: Fix problem with hostname_checks_common_name. OpenSSL does not copy hostflags from struct SSL_CTX to struct SSL. - bpo-42967: Allow bytes separator argument in urllib.parse.parse_qs and urllib.parse.parse_qsl when parsing str query strings. Previously, this raised a TypeError. - bpo-43176: Fixed processing of a dataclass that inherits from a frozen dataclass with no fields. It is now correctly detected as an error. - bpo-41735: Fix thread locks in zlib module may go wrong in rare case. Patch by Ma Lin. - bpo-36470: Fix dataclasses with InitVars and replace(). Patch by Claudiu Popa. - bpo-32745: Fix a regression in the handling of ctypes’ ctypes.c_wchar_p type: embedded null characters would cause a ValueError to be raised. Patch by Zackery Spytz. * Documentation - bpo-43959: The documentation on the PyContextVar C-API was clarified. - bpo-43938: Update dataclasses documentation to express that FrozenInstanceError is derived from AttributeError. - bpo-43755: Update documentation to reflect that unparenthesized lambda expressions can no longer be the expression part in an if clause in comprehensions and generator expressions since Python 3.9. - bpo-43739: Fixing the example code in Doc/extending/extending.rst to declare and initialize the pmodule variable to be of the right type. * Tests - bpo-43961: Fix test_logging.test_namer_rotator_inheritance() on Windows: use os.replace() rather than os.rename(). Patch by Victor Stinner. - bpo-43842: Fix a race condition in the SMTP test of test_logging. Don’t close a file descriptor (socket) from a different thread while asyncore.loop() is polling the file descriptor. Patch by Victor Stinner. - bpo-43811: Tests multiple OpenSSL versions on GitHub Actions. Use ccache to speed up testing. - bpo-43791: OpenSSL 3.0.0: Disable testing of legacy protocols TLS 1.0 and 1.1. Tests are failing with TLSV1_ALERT_INTERNAL_ERROR. - Refreshed patches: - bpo-31046_ensurepip_honours_prefix.patch - python-3.3.0b1-fix_date_time_compiler.patch - Add vendorized files from bluez-devel to enable building support for Bluetooth.- Make sure to close the import_failed.map file after the exception has been raised in order to avoid ResourceWarnings when the failing import is part of a try...except block.- Update to 3.9.4: - bpo#43710: Reverted the fix for https://bugs.python.org/issue42500 as it changed the PyThreadState struct size and broke the 3.9.x ABI in the 3.9.3 release (visible on 32-bit platforms using binaries compiled using an earlier version of Python 3.9.x headers). - bpo#26053: Fixed bug where the pdb interactive run command echoed the args from the shell command line, even if those have been overridden at the pdb prompt. - bpo#42988 (bsc#1183374) CVE-2021-3426: Remove the getfile feature of the pydoc module which could be abused to read arbitrary files on the disk (directory traversal vulnerability). Moreover, even source code of Python modules can contain sensitive data like passwords. Vulnerability reported by David Schwörer. - bpo#43285: ftplib no longer trusts the IP address value returned from the server in response to the PASV command by default. This prevents a malicious FTP server from using the response to probe IPv4 address and port combinations on the client network. Code that requires the former vulnerable behavior may set a trust_server_pasv_ipv4_address attribute on their ftplib.FTP instances to True to re-enable it. - bpo#43439: Add audit hooks for gc.get_objects(), gc.get_referrers() and gc.get_referents(). Patch by Pablo Galindo. - bpo#43660: Fix crash that happens when replacing sys.stderr with a callable that can remove the object while an exception is being printed. Patch by Pablo Galindo. - bpo#43555: Report the column offset for SyntaxError for invalid line continuation characters. Patch by Pablo Galindo. - bpo#43517: Fix misdetection of circular imports when using from pkg.mod import attr, which caused false positives in non-trivial multi-threaded code. - bpo#35883: Python no longer fails at startup with a fatal error if a command line argument contains an invalid Unicode character. The Py_DecodeLocale() function now escapes byte sequences which would be decoded as Unicode characters outside the [U+0000; U+10ffff] range. - bpo#43406: Fix a possible race condition where PyErr_CheckSignals tries to execute a non-Python signal handler. - bpo#42500: Improve handling of exceptions near recursion limit. Converts a number of Fatal Errors in RecursionErrors. - bpo#43433: xmlrpc.client.ServerProxy no longer ignores query and fragment in the URL of the server. - bpo#35930: Raising an exception raised in a “future” instance will create reference cycles. - bpo#43577: Fix deadlock when using ssl.SSLContext debug callback with ssl.SSLContext.sni_callback(). - bpo#43521: ast.unparse can now render NaNs and empty sets. - bpo#43423: subprocess.communicate() no longer raises an IndexError when there is an empty stdout or stderr IO buffer during a timeout on Windows. - bpo#27820: Fixed long-standing bug of smtplib.SMTP where doing AUTH LOGIN with initial_response_ok=False will fail. The cause is that SMTP.auth_login _always_ returns a password if provided with a challenge string, thus non-compliant with the standard for AUTH LOGIN. Also fixes bug with the test for smtpd. - bpo#43332: Improves the networking efficiency of http.client when using a proxy via set_tunnel(). Fewer small send calls are made during connection setup. - bpo#43399: Fix ElementTree.extend not working on iterators when using the Python implementation - bpo#43316: The python -m gzip command line application now properly fails when detecting an unsupported extension. It exits with a non-zero exit code and prints an error message to stderr. - bpo#43260: Fix TextIOWrapper can not flush internal buffer forever after very large text is written. - bpo#42782: Fail fast in shutil.move() to avoid creating destination directories on failure. - bpo#37193: Fixed memory leak in socketserver.ThreadingMixIn introduced in Python 3.7. - bpo#43199: Answer “Why is there no goto?” in the Design and History FAQ. - bpo#43407: Clarified that a result from time.monotonic(), time.perf_counter(), time.process_time(), or time.thread_time() can be compared with the result from any following call to the same function - not just the next immediate call. - bpo#27646: Clarify that ‘yield from ’ works with any iterable, not just iterators. - bpo#36346: Update some deprecated unicode APIs which are documented as “will be removed in 4.0” to “3.12”. See PEP 623 for detail. - bpo#37945: Fix test_getsetlocale_issue1813() of test_locale: skip the test if setlocale() fails. Patch by Victor Stinner. - bpo#41561: Add workaround for Ubuntu’s custom OpenSSL security level policy. - bpo#43288: Fix test_importlib to correctly skip Unicode file tests if the fileystem does not support them. - bpo#43617: Improve configure.ac: Check for presence of autoconf-archive package and remove our copies of M4 macros. - bpo#42225: Document that IDLE can fail on Unix either from misconfigured IP masquerage rules or failure displaying complex colored (non-ascii) characters. - bpo#43283: Document why printing to IDLE’s Shell is often slower than printing to a system terminal and that it can be made faster by pre-formatting a single string before printing.- Update to 3.9.2: - bpo#42938 (bsc#1181126): Avoid static buffers when computing the repr of ctypes.c_double and ctypes.c_longdouble values. This issue was assigned CVE-2021-3177. - bpo#42967 (bsc#1182379): Fix web cache poisoning vulnerability by defaulting the query args separator to &, and allowing the user to choose a custom separator. This issue was assigned CVE-2021-23336. - Upstreamed patches were removed: - CVE-2021-3177-buf_ovrfl_PyCArg_repr.patch - bsc1167501-invalid-alignment.patch - skip_random_failing_tests.patch - CVE-2019-5010-null-defer-x509-cert-DOS.patch- Add Obsoletes for python3-base when primary interpreter is set to properly replace it during upgrades. (bsc#1181324)- Update to 3.9.1: Security bugs: - Prevented potential DoS attack via CPU and RAM exhaustion when processing malformed Apple Property List files in binary format. - The plistlib module no longer accepts entity declarations in XML plist files to avoid XML vulnerabilities. This should not affect users as entity declarations are not used in regular plist files. - Add volatile to the accumulator variable in hmac.compare_digest, making constant-time-defeating optimizations less likely. Core and Builtins - Allow assignment expressions in set literals and set comprehensions as per PEP 572. Patch by Pablo Galindo. - Fix a regression introduced by the new parser, where an unparenthesized walrus operator was not allowed within generator expressions. - types.GenericAlias objects can now be the targets of weakrefs. - Fixed a bug in the PEG parser that was causing crashes in debug mode. Now errors are checked in left-recursive rules to avoid cases where such errors do not get handled in time and appear as long-distance crashes in other places. - Fixed a possible crash in the PEG parser when checking for the ‘!=’ token in the barry_as_flufl rule. Patch by Pablo Galindo. - Fix handling of errors during creation of PyFunctionObject, which resulted in operations on uninitialized memory. Patch by Yonatan Goldschmidt. - Fix a bug in the parser, where a curly brace following a primary didn’t fail immediately. This led to invalid expressions like a {b} to throw a SyntaxError with a wrong offset, or invalid expressions ending with a curly brace like a { to not fail immediately in the REPL. - Fix possible buffer overflow in the new parser when checking for continuation lines. Patch by Pablo Galindo. - Run the parser two times. On the first run, disable all the rules that only generate better error messages to gain performance. If there’s a parse failure, run the parser a second time with those enabled. - Document the default implementation of object.__eq__. - Fix peephole optimizer misoptimize conditional jump + JUMP_IF_NOT_EXC_MATCH pair. - The garbage collector now tracks all user-defined classes. Patch by Brandt Bucher. - Fixed potential issues with removing not completely initialized module from sys.modules when import fails. - Star-unpacking is now allowed for with item’s targets in the PEG parser. - Fixed stack overflow in issubclass() and isinstance() when getting the __bases__ attribute leads to infinite recursion. - When loading a native module and a load failure occurs, prevent a possible UnicodeDecodeError when not running in a UTF-8 locale by decoding the load error message using the current locale’s encoding. - Correctly count control blocks in ‘except’ in compiler. Ensures that a syntax error, rather a fatal error, occurs for deeply nested, named exception handlers. Library - types.GenericAlias will now raise a TypeError when attempting to initialize with a keyword argument. Previously, this would cause the interpreter to crash if the interpreter was compiled with debug symbols. This does not affect interpreters compiled for release. Patch by Ken Jin. - CGIHTTPRequestHandler.run_cgi() HTTP_ACCEPT improperly parsed. Replace the special purpose getallmatchingheaders with generic get_all method and add relevant tests. - inspect.findsource() now raises OSError instead of IndexError when co_lineno of a code object is greater than the file length. This can happen, for example, when a file is edited after it was imported. PR by Irit Katriel. - Fix handling of trailing comments by inspect.getsource(). - ChainMap.__iter__ no longer calls __getitem__ on underlying maps - TracebackException no longer holds a reference to the exception’s traceback object. Consequently, instances of TracebackException for equivalent but non-equal exceptions now compare as equal. - We fixed an issue in pickle.whichmodule in which importing multiprocessing could change the how pickle identifies which module an object belongs to, potentially breaking the unpickling of those objects. - Clarify the error message for asyncio.IncompleteReadError when expected is None. - Extracting a symlink from a tarball should succeed and overwrite the symlink if it already exists. The fix is to remove the existing file or symlink before extraction. Based on patch by Chris AtLee, Jeffrey Kintscher, and Senthil Kumaran. - Fixed tkinter.ttk.Style.map(). The function accepts now the representation of the default state as empty sequence (as returned by Style.map()). The structure of the result is now the same on all platform and does not depend on the value of wantobjects. - Fix various issues with typing.Literal parameter handling (flatten, deduplicate, use type to cache key). Patch provided by Yurii Karabas. - Fix the threading.Thread class at fork: do nothing if the thread is already stopped (ex: fork called at Python exit). Previously, an error was logged in the child process. - The onerror callback from shutil.rmtree now receives correct function when os.open fails. - Fix os.sendfile() on illumos. - Fixed writing binary Plist files larger than 4 GiB. - The repr() of typing types containing Generic Alias Types previously did not show the parameterized types in the GenericAlias. They have now been changed to do so. - webbrowser: Ignore NotADirectoryError when calling xdg-settings. - binhex.binhex() consisently writes macOS 9 line endings. - Fix a stack overflow error for asyncio Task or Future repr(). - The overflow occurs under some circumstances when a Task or Future recursively returns itself. - Fix memory leak in subprocess.Popen() in case an uid (gid) specified in user (group, extra_groups) overflows uid_t (gid_t). - Improve asyncio.wait function to create the futures set just one time. - InvalidFileException and RecursionError are now the only errors caused by loading malformed binary Plist file (previously ValueError and TypeError could be raised in some specific cases). - Pickling heap types implemented in C with protocols 0 and 1 raises now an error instead of producing incorrect data. - plistlib: fix parsing XML plists with hexadecimal integer values - Fix an incorrectly formatted error from _codecs.charmap_decode() when called with a mapped value outside the range of valid Unicode code points. PR by Max Bernstein. - Fix pickling pure Python datetime.time subclasses. Patch by Dean Inwood. - Fixed a bug that was causing ctypes.util.find_library() to return None when triying to locate a library in an environment when gcc>=9 is available and ldconfig is not. Patch by Pablo Galindo - C14N 2.0 serialisation in xml.etree.ElementTree failed for unprefixed attributes when a default namespace was defined. - Fix a bug in the symtable module that was causing module-scope global variables to not be reported as both local and global. Patch by Pablo Galindo. - str() for the type attribute of the tkinter.Event object always returns now the numeric code returned by Tk instead of the name of the event type. - fix tkinter.EventType Enum so all members are strings, and none are tuples - Fix SQLite3 segfault when backing up closed database. Patch contributed by Peter David McCormick. - Fix the tarfile module to write only basename of TAR file to GZIP compression header. - Allow ctypes.wintypes to be imported on non-Windows systems. - shutil.which() now ignores empty entries in PATHEXT instead of treating them as a match. - Fix time-of-check/time-of-action issue in subprocess.Popen.send_signal. - Fix --outfile for cProfile / profile not writing the output file in the original directory when the program being profiled changes the working directory. PR by Anthony Sottile. - ZipFile truncates files to avoid corruption when a shorter comment is provided in append (“a”) mode. Patch by Jan Mazur. - Fixed KeyError exception when flattening an email to a string attempts to replace a non-existent Content-Transfer-Encoding header. Documentation - Fix the URL for the IMAP protocol documents. - Document __format__ functionality for IP addresses. - Clarify that subscription expressions are also valid for certain classes and types in the standard library, and for user-defined classes and types if the classmethod __class_getitem__() is provided. - Documented generic alias type and types.GenericAlias. Also added an entry in glossary for generic types. - In Programming FAQ “Sequences (Tuples/Lists)” section, add “How do you remove multiple items from a list”. - Fix RemovedInSphinx40Warning when building the documentation. Patch by Dong-hee Na. - Update the refcounts info of PyType_FromModuleAndSpec. - Fix tarfile’s extractfile documentation - Document some restrictions on the default string representations of numeric classes. Tests - Reenable test_gdb on gdb 9.2 and newer: https://bugzilla.redhat.com/show_bug.cgi?id=1866884 bug is fixed in gdb 10.1. - Fix test_asyncio.test_call_later() race condition: don’t measure asyncio performance in the call_later() unit test. The test failed randomly on the CI. - Include _testinternalcapi module in Windows installer for test suite - Fix test_logging.test_race_between_set_target_and_flush(): the test now waits until all threads complete to avoid leaking running threads. - Avoid a test failure in test_lib2to3 if the module has already imported at the time the test executes. Patch by Pablo Galindo. - Tests for CJK codecs no longer call eval() on content received via HTTP. - Fix test_site.test_license_exists_at_url(): call urllib.request.urlcleanup() to reset the global urllib.request._opener. Patch by Victor Stinner. - test_ssl: skip test_min_max_version_mismatch when TLS 1.0 is not available - Add tests for SIGINT handling in the runpy module. - Fixed a failure in test_tk.test_widgets.ScaleTest happening when executing the test with Tk 8.6.10. Build - Fix a race condition in “make regen-all” when make -jN option is used to run jobs in parallel. The clinic.py script now only use atomic write to write files. Moveover, generated files are now left unchanged if the content does not change, to not change the file modification time. - Update Py_UNREACHABLE to use __builtin_unreachable() if only the compiler is able to use it. Patch by Dong-hee Na. - Addressed three compiler warnings found by undefined behavior sanitizer (ubsan). IDLE - Fix reporting offset of the RE error in searchengine. - Get docstrings for IDLE calltips more often by using inspect.getdoc. - Mostly finish using ttk widgets, mainly for editor, settings, and searches. Some patches by Mark Roseman. - Use ‘IDLE Shell’ as shell title - Rewrite the Calltips doc section. - In calltips, stop reminding that ‘/’ marks the end of positional-only arguments. - Typing opening and closing parentheses inside the parentheses of a function call will no longer cause unnecessary “flashing” off and on of an existing open call-tip, e.g. when typed in a string literal. C API - Fix potential crash in deallocating method objects when dynamically allocated PyMethodDef’s lifetime is managed through the self argument of a PyCFunction. - Py_FileSystemDefaultEncodeErrors and Py_UTF8Mode are available again in limited API. - Readjustet and reapplied patches: - CVE-2021-3177-buf_ovrfl_PyCArg_repr.patch - bpo-31046_ensurepip_honours_prefix.patch - python-3.3.0b1-fix_date_time_compiler.patch - skip_random_failing_tests.patch - sphinx-update-removed-function.patch- Add CVE-2021-3177-buf_ovrfl_PyCArg_repr.patch fixing bsc#1181126 (CVE-2021-3177) buffer overflow in PyCArg_repr in _ctypes/callproc.c, which may lead to remote code execution.- (bsc#1180125) We really don't Require python-rpm-macros package. Unnecessary dependency.- Make python39-doc building again - Add no-skipif-doctests.patch, because SLE-15 version of Sphinx doesn't know about skipif directive in doctests.- Update sphinx-update-removed-function.patch patch to the latest version in python36.- Last try before this results in an editwar: * remove importlib_resources and importlib-metadata provides/obsoletes * import importlib_resources is not the same as import importlib.resources, same for metadata * The backport packages from PyPI needed for older flavors are specified as such for setuptools or in pyproject.toml. If a package requires them they typically add them with a python version qualifier and the packages have their own version numbers.- Add patch sphinx-update-removed-function.patch to no longer call a now removed function and to make documentation build independent of the Sphinx version (bsc#1179630, gh#python/cpython#13236).- Don't require packages which break build on SLE-15 although we really don't need them (python3-python-docs-theme and python3-sphinxcontrib-qthelp).- Fix build with RPM 4.16: error: bare words are no longer supported, please use "...": x86 == ppc.- Update to the final version 3.9.0: Complete changelog with all (many) changes from previous version is on https://docs.python.org/release/3.9.0/whatsnew/3.9.html Changes from the previous RC versions (not that many) are on https://docs.python.org/release/3.9.0/whatsnew/changelog.html#changelog- Buildrequire timezone only for general flavor. It's used in this flavor for the test suite.- Update to 3.9.0rc1: * Core and Builtins - bpo-38156: Handle interrupts that come after EOF correctly in PyOS_StdioReadline. * Library - bpo-41497: Fix potential UnicodeDecodeError in dis module. - bpo-41490: Update ensurepip to install pip 20.2.1 and setuptools 49.2.1. - bpo-41467: On Windows, fix asyncio recv_into() return value when the socket/pipe is closed (BrokenPipeError): return 0 rather than an empty byte string (b''). - bpo-41425: Make tkinter doc example runnable. - bpo-41384: Raise TclError instead of TypeError when an unknown option is passed to tkinter.OptionMenu. - bpo-38731: Fix NameError in command-line interface of py_compile. - bpo-41317: Use add_done_callback() in asyncio.loop.sock_accept() to unsubscribe reader early on cancellation. - bpo-41364: Reduce import overhead of uuid. - bpo-41341: Recursive evaluation of typing.ForwardRef in get_type_hints. - bpo-41182: selector: use DefaultSelector based upon implementation - bpo-40726: Handle cases where the end_lineno is None on ast.increment_lineno(). * Documentation - bpo-41045: Add documentation for debug feature of f-strings. - bpo-41314: Changed the release when from __future__ import annotations becomes the default from 4.0 to 3.10 (following a change in PEP 563). * Windows - bpo-41492: Fixes the description that appears in UAC prompts. - bpo-40948: Improve post-install message to direct people to the “py” command. - bpo-41412: The installer will now fail to install on Windows 7 and Windows 8. Further, the UCRT dependency is now always downloaded on demand. - bpo-40741: Update Windows release to include SQLite 3.32.3. * IDLE - bpo-41468: Improve IDLE run crash error message (which users should never see). - bpo-41373: Save files loaded with no line ending, as when blank, or different line endings, by setting its line ending to the system default. Fix regression in 3.8.4 and 3.9.0b4.- Synchronize formatting and fixes with python38.- Increase testsuite timeout to account for super long running test_peg_generator- Removed CVE-2019-20907_tarfile-inf-loop.patch: fixed in upstream - Removed recursion.tar: contained in upstream - Update to 3.9.0b5: - bpo-41304: Fixes python3x._pth being ignored on Windows, caused by the fix for bpo-29778 (CVE-2020-15801). - bpo-41162: Audit hooks are now cleared later during finalization to avoid missing events. - bpo-29778: Ensure python3.dll is loaded from correct locations when Python is embedded (CVE-2020-15523). - bpo-39603: Prevent http header injection by rejecting control characters in http.client.putrequest(…). - bpo-41295: Resolve a regression in CPython 3.8.4 where defining “__setattr__” in a multi-inheritance setup and calling up the hierarchy chain could fail if builtins/extension types were involved in the base types. - bpo-41247: Always cache the running loop holder when running asyncio.set_running_loop. - bpo-41252: Fix incorrect refcounting in _ssl.c’s _servername_callback(). - bpo-41215: Use non-NULL default values in the PEG parser keyword list to overcome a bug that was ' preventing Python from being properly compiled when using the XLC compiler. Patch by Pablo Galindo. - bpo-41218: Python 3.8.3 had a regression where compiling with ast.PyCF_ALLOW_TOP_LEVEL_AWAIT would aggressively mark list comprehension with CO_COROUTINE. Now only list comprehension making use of async/await will tagged as so. - bpo-41175: Guard against a NULL pointer dereference within bytearrayobject triggered by the bytearray() + bytearray() operation. - bpo-39960: The “hackcheck” that prevents sneaking around a type’s __setattr__() by calling the superclass method was rewritten to allow C implemented heap types. - bpo-41288: Unpickling invalid NEWOBJ_EX opcode with the C implementation raises now UnpicklingError instead of crashing. - bpo-39017: Avoid infinite loop when reading specially crafted TAR files using the tarfile module (CVE-2019-20907, bsc#1174091). - bpo-41235: Fix the error handling in ssl.SSLContext.load_dh_params(). - bpo-41207: In distutils.spawn, restore expectation that DistutilsExecError is raised when the command is not found. - bpo-39168: Remove the __new__ method of typing.Generic. - bpo-41194: Fix a crash in the _ast module: it can no longer be loaded more than once. It now uses a global state rather than a module state. - bpo-39384: Fixed email.contentmanager to allow set_content() to set a null string. - bpo-41300: Save files with non-ascii chars. Fix regression released in 3.9.0b4 and 3.8.4. - bpo-37765: Add keywords to module name completion list. Rewrite Completions section of IDLE doc. - bpo-40170: Revert PyType_HasFeature() change: it reads again directly the PyTypeObject.tp_flags member when the limited C API is not used, rather than always calling PyType_GetFlags() which hides implementation details.- Add CVE-2019-20907_tarfile-inf-loop.patch fixing bsc#1174091 (CVE-2019-20907, bpo#39017) avoiding possible infinite loop in specifically crafted tarball. Add recursion.tar as a testing tarball for the patch.- Changed bpo-31046_ensurepip_honours_prefix.patch to include fix from py3.8- Spec file fixes - Re-added subprocess-raise-timeout.patch: now compatible - Removed bpo34022-stop_hash-based_invalidation_w_SOURCE_DATE_EPOCH.patch: contained in upstream- Fix minor issues found in the staging.- Do not set ourselves as primary interpreter- Update to 3.9.0b4: - PEP 584, Union Operators in dict - PEP 585, Type Hinting Generics In Standard Collections - PEP 593, Flexible function and variable annotations - PEP 602, Python adopts a stable annual release cadence - PEP 615, Support for the IANA Time Zone Database in the Standard Library - PEP 616, String methods to remove prefixes and suffixes - PEP 617, New PEG parser for CPython - bpo#38379, garbage collection does not block on resurrected objects; - bpo#38692, os.pidfd_open added that allows process management without races and signals; - bpo#39926, Unicode support updated to version 13.0.0; - bpo#1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore; - A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall; - A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489; - A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384. - Remove upstreamed patches: - F00102-lib64.patch - SUSE-FEDORA-multilib.patch - OBS_dev-shm.patch - subprocess-raise-timeout.patch - bpo36302-sort-module-sources.patch - bpo40784-Fix-sqlite3-deterministic-test.patch- Update pre_checkin.sh and regenerate- Convert few dependencies to their pkgconfig counterparts- Remove release requirement on libpython, it is not really needed to be equal as the abi changes with versions- Add provides python3-bla on all the subpkgs in case we are primary provider of the functionality- Remove unversioned files from devel subpkg too - Remove main python3 files from -base based whether we are primary interpreter or not - Fix idle to be co-installable - Add condition to be primary to provide/obsolete python3-* - Fix doc to build in versioned folder so the pythons can be installed next to each other- Revert the full versioning of calls on the macros. These are generic so they should really just call python3 X- For the doc package we can build with generic flavor, we don't need the our-interpreter based one- Add provides for pytohn3X-typing/etc to allow BR on those still to work when needed- Change macros.python3 to use full versioned 3.8 instead of just 3 for python interpreter- Reduce some now unused conditionals- Redux the -base dependencies to match up pre-merge layout- Generate baselibs in pre-checkin too- Generate the importlib-failed using pre_checking again - Add back the information about skipped tests on the pre_checkin output- Use %python_pkg_name instead of hardcoding python3 where applicable - Sort out preamble with spec-cleaner- Calculate required variables instead of relying on their continuous manual update- Fix the -base module build again to generate only the deps we need- Replace OBS_dev-shm.patch with the upstream PR#20944- Use the %{python_pkg_name} on more places to allow easier multiversioning - Switch to _multibuild approach for easier maintenance of this package. All is now in one spec file with 3 conditionals: * bcond_with base * bcond_with doc * bcond_with general- add requires python3-base on libpython subpackage (bsc#1167008)- build against Sphinx 2.x until python is compatible with Sphinx 3.x (see gh#python/cpython#19397, bpo#40204)- Fix build with SQLite 3.32 (bpo#40783) add bpo40784-Fix-sqlite3-deterministic-test.patch- Update to version 3.8.3: - Complete list of changes is available at https://docs.python.org/release/3.8.3/whatsnew/changelog.html#python-3-8-3-final, but most of them are just bugfixes. - Removed patch CVE-2020-8492-urllib-ReDoS.patch: contained in upstream- Add #!BuildIgnore: gdk-pixbuf-loader-rsvg to python3 SPEC- Add patch bsc1167501-invalid-alignment.patch (bsc#1167501, bpo#40052) to fix alignment in abstract.h header file.- Update list of skipped tests for qemu linux-user build, test_setegid (test.test_os.PosixUidGidTests) is confusing it- Update to 3.8.2: - Complete list of changes is available at https://docs.python.org/release/3.8.2/whatsnew/changelog.html#python-3-8-2-final, but most of them are just bugfixes. - Updated patches: - F00102-lib64.patch - OBS_dev-shm.patch - SUSE-FEDORA-multilib.patch - subprocess-raise-timeout.patch- Add CVE-2020-8492-urllib-ReDoS.patch fixing the security bug "Python urrlib allowed an HTTP server to conduct Regular Expression Denial of Service (ReDoS)" (bsc#1162367)- Add Requires: libpython%{so_version} == %{version}-%{release} to python3-base to keep both packages always synchronized (bsc#1162224).- Do not pull in bluez in base again, explain the cycle, it needs to be solved by bluez maintainer for us by providing just the headers separately- Reame idle icons to idle3 in order to not conflict with python2 variant of the package * renamed the icons * renamed icon load in desktop file- Add importlib_resources provide/obsolete as it is integral part of the lang since 3.7 release- Add -fno-semantic-interposition as it brings speed up: https://fedoraproject.org/wiki/Changes/PythonNoSemanticInterpositionSpeedup- Update to 3.8.1: - This is mainly bugfix release and no significant changes to API are expected. The full changelog is available on https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-1 - Remove bpo-38688_shutil.copytree_prevent-infinite-recursion.patch, which is included in the upstream tarball.- Add bpo-31046_ensurepip_honours_prefix.patch which makes ensurepip to honour the value of $(prefix). Proposed fix for bpo#31046..- Move bluez-devel dependency to base as it is needed for socket.AF_BLUETOOTH and otherwise does not work- Reintroduce QtHelp with the help of the new BR python-sphinxcontrib-qthelp.- Fix SUSE-FEDORA-multilib.patch, the platform agnostic infix for library installation is "lib", not "dir".- Move idle subpackage build from python3-base to python3. appstream-glib required for packaging introduces considerable extra dependencies and a build loop via rust/librsvg. - Correct installation of idle IDE icons: + idle.png is not the target directory + non-GNOME-specific icons belong into icons/hicolor - Add required Name key to idle3 desktop file- Update to the final release 3.8.0. . - New Features: - Assignment expressions - Positional-only parameters - Parallel filesystem cache for compiled bytecode files - Debug build uses the same ABI as release build - f-strings support = for self-documenting expressions and debugging - PEP 578: Python Runtime Audit Hooks - PEP 587: Python Initialization Configuration - Vectorcall: a fast calling protocol for CPython - Pickle protocol 5 with out-of-band data buffers - New modules: - importlib.metadata - Improved modules: - ast asyncio, builtins, collections, curses, ctypes, datetime, functools, gc, gettext, gzip, idelib and IDLE, inspect, io, json.tool, math, mmap, multiprocessing, os, os.path, pathlib, pickle, plistlib, py_compile, shlex, shutil, socket, ssl, statistics, sys, tarfile, threading, tokenize, tkinter, time, typing, unicodedata, unittest, venv, weakref, xml - C API improvements - bdist_winnst command has been deprecated (use bdist_wheel) - https://docs.python.org/3.8/whatsnew/3.8.html remains rest of changes including documentation on how to port your programs to the current version of Python.- Add idle3.appdata.xml and idle3.desktop (originally from Fedora) to make Idle3 full GUI desktop application. (bsc#1153830)- Drop intltool from BuildRequires. Doesn't appear to be used.- Add folder version to allow tarball downloads even for beta/rc releases- Revert patches from Fedora (F00102-lib64.patch and F00251-change-user-install-location.patch) into their original prisitine Fedora versions, SUSE-FEDORA-multilib.patch refreshed accordingly.- Correct quotation of platsubdir in Lib/distutils/command/install.py- Replace python-3.6.0-multilib.patch with two patches from Fedora (F00102-lib64.patch and F00251-change-user-install-location.patch), and our own SUSE-FEDORA-multilib.patch to allow better cooperation with Fedora and better upstreaming. - Add OBS_dev-shm.patch fixing bpo#38377- Pull in just gettext and let solver to sort out between: gettext-runtime-mini and gettext-runtime- Update to 3.8.0rc1. Overall changes from 3.7: - PEP 572, Assignment expressions - PEP 570, Positional-only arguments - PEP 587, Python Initialization Configuration (improved embedding) - PEP 590, Vectorcall: a fast calling protocol for CPython - PEP 578, Runtime audit hooks - PEP 574, Pickle protocol 5 with out-of-band data - Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict) - Parallel filesystem cache for compiled bytecode - Debug builds share ABI as release builds, also the 'm' ABI tag was removed (irrelevant since 3.4), bpo#36707 - f-strings support a handy = specifier for debugging - continue is now legal in finally: blocks - on Windows, the default asyncio event loop is now ProactorEventLoop - on macOS, the spawn start method is now used by default in multiprocessing - multiprocessing can now use shared memory segments to avoid pickling costs between processes - typed_ast is merged back to CPython - LOAD_GLOBAL is now 40% faster - pickle now uses Protocol 4 by default, improving performance - Refreshed patches: - CVE-2019-5010-null-defer-x509-cert-DOS.patch - python-3.3.0b1-fix_date_time_compiler.patch - python-3.6.0-multilib.patch - subprocess-raise-timeout.patch- Add bpo36302-sort-module-sources.patch (boo#1041090)- Try harder obsoleting importlib-metadata- Update to 3.8.0b4: Many bugfixes, full list on https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-beta-4- Re-enable test_threading on aarch64- Remove xrpm from subpackage tk description- Update to 3.8.0b3: Many bugfixes, full list on https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-beta-3 - Patches reapplied: - python-3.3.0b1-fix_date_time_compiler.patch - python-3.3.0b1-test-posix_fadvise.patch - python-3.6.0-multilib.patch - subprocess-raise-timeout.patch- Add Provides: python3-importlib-metadata- Update to 3.8.0b2: Many bugfixes, full list on https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-beta-2 - Patches included in upstream: - bpo-37169_PyObject_IsFreed.patch - Patches reapplied: - 00251-change-user-install-location.patch - distutils-reproducible-compile.patch - python-3.3.0b1-localpath.patch - python-3.6.0-multilib.patch- Update list of skipped tests for qemu linux-user build - Don't do profiling in qemu linux-user build- Update to 3.8.0b1 (changes since 3.7.*): - PEP 572, Assignment expressions - PEP 570, Positional-only arguments - PEP 587, Python Initialization Configuration (improved embedding) - PEP 590, Vectorcall: a fast calling protocol for CPython - PEP 578, Runtime audit hooks - PEP 574, Pickle protocol 5 with out-of-band data - Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict) - Parallel filesystem cache for compiled bytecode - Debug builds share ABI as release builds - f-strings support a handy = specifier for debugging - continue is now legal in finally: blocks - multiprocessing can now use shared memory segments to avoid pickling costs between processes - typed_ast is merged back to CPython - LOAD_GLOBAL is now 40% faster - pickle now uses Protocol 4 by default, improving performance - Remove patches which were included in the upstream: - 00251-change-user-install-location.patch - 00316-mark-bdist_wininst-unsupported.patch - CVE-2019-9947-no-ctrl-char-http.patch - raise_SIGING_not_handled.patch- Set _lto_cflags to nil as the package is using LTO via --enable-lto. That will prevent to propage LTO for Python modules that are built in a separate package.- Update to 3.8.0.a3: - PEP 572: Assignment Expressions. - Other (mostly small) changes are on https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-alpha-3- bsc#1130840 (CVE-2019-9947): add CVE-2019-9947-no-ctrl-char-http.patch Address the issue by disallowing URL paths with embedded whitespace or control characters through into the underlying http client request. Such potentially malicious header injection URLs now cause a ValueError to be raised.- Fix metadata of patches. - Rename boo1071941-make-install-in-sep-loc.patch to 00251-change-user-install-location.patch which is the original name, so it can be looked up in the Fedora VCS.- Mark distutils bdist_wininst command unsupported with 00316-mark-bdist_wininst-unsupported.patch - Remove Windows bdist_wininst executables from runtime package- Update to 3.7.3, which is the maintenance release without any significant changes in API. - Updated patches: - CVE-2019-5010-null-defer-x509-cert-DOS.patch - distutils-reproducible-compile.patch - python-3.3.0b1-fix_date_time_compiler.patch - python-3.6.0-multilib.patch - raise_SIGING_not_handled.patch- Remove building of Qt Develop help files.- Return distutils-reproducible-compile.patch which is still missing (still unfinished bpo#29708).- Update to 3.8.0a2: * List of all (mostly small) changes are on https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-alpha-2- Build nis module again.- Update to 3.8.0a1: * The most visible change so far is probably the implementation of PEP 572: Assignment Expressions. For a detailed list of changes, see: https://docs.python.org/3.8/whatsnew/changelog.html * Recover building of nis module properly in python3 package - Update patches: * CVE-2019-5010-null-defer-x509-cert-DOS.patch * python-3.3.0b1-fix_date_time_compiler.patch * python-3.3.0b1-test-posix_fadvise.patch * python-3.6.0-multilib.patch * raise_SIGING_not_handled.patch- Put LICENSE file where it belongs (bsc#1121852)- bsc#1122191: add CVE-2019-5010-null-defer-x509-cert-DOS.patch fixing bpo-35746. An exploitable denial-of-service vulnerability exists in the X509 certificate parser of Python.org Python 2.7.11 / 3.7.2. A specially crafted X509 certificate can cause a NULL pointer dereference, resulting in a denial of service. An attacker can initiate or accept TLS connections using crafted certificates to trigger this vulnerability.- Do not require full gettext in order to avoid pulling in the glib2 as a dependency- Update to 3.7.2: * bugfix release: https://docs.python.org/3.7/whatsnew/changelog.html#changelog- Stop applying python-3.6.0-multilib-new.patch (which is still WIP), and apply the old proven python-3.6.0-multilib.patch instead.- Use upstream-recommended %{_rpmconfigdir}/macros.d directory for the rpm macros.- Upgrade to 3.7.2rc1: * bugfix release, for the full list of all changes see https://docs.python.org/3.7/whatsnew/changelog.html#changelog - Make run of the test suite more verbose- Write summaries without em dashes.- Remove python-3.3.0b1-curses-panel.patch it is unnecessary anymore. - Add boo1071941-make-install-in-sep-loc.patch to make pip and distutils in user environment install into separate location (boo#1071941) Set values of prefix and exec_prefix in distutils install command to /usr/local if executable is /usr/bin/python* and RPM build is not detected to make pip and distutils install into separate location - Remove finally python-3.3.3-skip-distutils-test_sysconfig_module.patch - Remove distutils-reproducible-compile.patch which doesn't make really much difference in reproducibility (see gh#python/cpython#8057 and discussion there).- Rename Stop_hash-based_invalidation_w_SOURCE_DATE_EPOCH.patch to bpo34022-stop_hash-based_invalidation_w_SOURCE_DATE_EPOCH.patch- Add dependency on bluez-devel to build support for Bluetooth (boo#1109998)- Add devhelp subpackage and split qthelp into another subpackage.- Remove python-3.0b1-record-rpm.patch and Python-3.0b1-record-rpm.patch, as they are not needed anymore- Switch off test_threading for optimization builds.- Update to python-3.7.1. This is just a brief overview, complete changelog available at https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-1-final: Library bpo-34970: Protect tasks weak set manipulation in asyncio.all_tasks() - Patches already accepted upstream are removed: * 00307-allow-to-call-Py_Main-after-Py_Initialize.patch * 00308-tls-1.3.patch - New patches added: * Stop_hash-based_invalidation_w_SOURCE_DATE_EPOCH.patch * raise_SIGING_not_handled.patch - All other patches refreshed via quilt.- Add raise_SIGING_not_handled.patch to fix bsc#1094814- Add patch to fix importlib return types: * python3-imp-returntype.patch- bpo-34022 still not completely fixed, so we have to keep excluding test_cmd_line_script, test_multiprocessing_main_handling, and test_runpy from the test suite.- Update to python 3.7.1~rc2: Core and Builtins bpo-34879: Fix a possible null pointer dereference in bytesobject.c. Patch by Zackery Spytz. bpo-34854: Fixed a crash in compiling string annotations containing a lambda with a keyword-only argument that doesn’t have a default value. bpo-34320: Fix dict(od) didn’t copy iteration order of OrderedDict. Library bpo-34769: Fix for async generators not finalizing when event loop is in debug mode and garbage collector runs in another thread. bpo-34922: Fixed integer overflow in the digest() and hexdigest() methods for the SHAKE algorithm in the hashlib module. bpo-34900: Fixed unittest.TestCase.debug() when used to call test methods with subtests. Patch by Bruno Oliveira. bpo-34871: Fix inspect module polluted sys.modules when parsing __text_signature__ of callable. bpo-34872: Fix self-cancellation in C implementation of asyncio.Task bpo-34819: Use a monotonic clock to compute timeouts in Executor.map() and as_completed(), in order to prevent timeouts from deviating when the system clock is adjusted. bpo-34334: In QueueHandler, clear exc_text from LogRecord to prevent traceback from being written twice. bpo-6721: Acquire the logging module’s commonly used internal locks while fork()ing to avoid deadlocks in the child process. bpo-34172: Fix a reference issue inside multiprocessing.Pool that caused the pool to remain alive if it was deleted without being closed or terminated explicitly. Documentation bpo-32174: chm document displays non-ASCII charaters properly on some MBCS Windows systems. Tests bpo-32962: Fixed test_gdb when Python is compiled with flags - mcet -fcf-protection -O0. C API bpo-34910: Ensure that PyObject_Print() always returns -1 on error. Patch by Zackery Spytz.- Add Stop_hash-based_invalidation_w_SOURCE_DATE_EPOCH.patch to fix problems with SOURCE_DATE_EPOCH variable (bpo-34022)- Add patch to fix build with tls1.3 supported openssl * 00308-tls-1.3.patch - Add patch to fix Py_Main calls after Py_initialize * 00307-allow-to-call-Py_Main-after-Py_Initialize.patch- Add -fwrapv to OPTS, which is default for python3 anyway See for example https://github.com/zopefoundation/persistent/issues/86 for bugs which are caused by avoiding it.- Fix ownership of _contextvars, _queue, and _xxtestfuzz- Switch off LTO for distros with older GCC - Fix %files- Add dependency over libuuid-devel- update to python 3.7.0 Complete overview of changes is available on https://docs.python.org/3/whatsnew/3.7.html, these are just highlights: * PEP 563, postponed evaluation of type annotations. * async and await are now reserved keywords. * New library modules: contextvars: PEP 567 – Context Variables dataclasses: PEP 557 – Data Classes importlib.resources * New built-in features: PEP 553, the new breakpoint() function. * Python data model improvements: PEP 562, customization of access to module attributes. PEP 560, core support for typing module and generic types. the insertion-order preservation nature of dict objects has been declared to be an official part of the Python language spec. * Significant improvements in the standard library: The asyncio module has received new features, significant usability and performance improvements. The time module gained support for functions with nanosecond resolution. * CPython implementation improvements: Avoiding the use of ASCII as a default text encoding: PEP 538, legacy C locale coercion PEP 540, forced UTF-8 runtime mode PEP 552, deterministic .pycs the new development runtime mode PEP 565, improved DeprecationWarning handling * C API improvements: PEP 539, new C API for thread-local storage * Documentation improvements: PEP 545, Python documentation translations New documentation translations: Japanese, French, and Korean. - drop python3-sorted_tar.patch - drop 0001-allow-for-reproducible-builds-of-python-packages.patch - refresh python-3.6.0-multilib-new.patch - refresh subprocess-raise-timeout.patch * new C API for thread-local storage * Deterministic pyc files * Built-in breakpoint() * Data Classes * Core support for typing module and generic types * Customization of access to module attributes * Postponed evaluation of annotations * Time functions with nanosecond resolution * Improved DeprecationWarning handling * Context Variables * Avoiding the use of ASCII as a default text encoding (PEP 538, legacy C locale coercion and PEP 540, forced UTF-8 runtime mode) * The insertion-order preservation nature of dict objects is now an official part of the Python language spec. * Notable performance improvements in many areas.- disable lto with gcc versions below 7 (results in link failures)- Use faster find subcommand execution strategies.- Do not mention the testsuite disabling in opts as it was moved to main pkg so base is test-free- As we run in main python package do not generate the pre_checkin from both now- Move the tests from base to generic package wrt bsc#1088573 * We still fail the whole distro if python3 is not build * The other archs than x86_64 took couple of hours to unblock build of other software, this way we work around the issue - Some tests are still run in -base for the LTO tweaking, but at least it is not run twice- update to 3.6.5 * bugfix release * see Misc/NEWS for details - drop ctypes-pass-by-value.patch - drop fix-localeconv-encoding-for-LC_NUMERIC.patch - refresh python-3.6.0-multilib-new.patch- Created %so_major and %so_minor macros - Put Tools/gdb/libpython.py script into proper place and ship it with devel subpackage.- ctypes-pass-by-value.patch: Fix pass by value for structs on aarch64- Add python3-sorted_tar.patch (boo#1081750)- Drop python3-tk and python3-idle recommends to reduce python3 always pulling X stack bsc#1081751- Add patch to fix glibc 2.27 fail bsc#1079761: * fix-localeconv-encoding-for-LC_NUMERIC.patch- Update skip_random_failing_tests.patch (for PowerPC) to avoid test_call_later failure- move XML modules and python3-xml provide to python3-base (fixes bsc#1077230) - move ensurepip to base- Add skip_random_failing_tests.patch only for PowerPC- update to 3.6.4 * bugfix release, over a hundred bugs fixed * see Misc/NEWS for details - drop upstreamed python3-ncurses-6.0-accessors.patch - drop PYTHONSTARTUP hooks that cause spurious startup errors * fixes bsc#1070738 * the relevant feature (REPL history) is now built into Python itself- Install 2to3-%{python_version} executable (override defattr of the -tools package). 2to3 (unversioned) is a symlink and does not carry permissions (bsc#1070853).- move 2to3 to python3-tools package- update to 3.6.3 * bugfix release, over a hundred bugs fixed * see Misc/NEWS for details - drop upstreamed 0001-3.6-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-3093.patch- drop python-2.7-libffi-aarch64.patch: this patches the intree copy of libffi which is unused/deleted in the line afterwards - fix build against system libffi: include flags weren't set so it actually used the in-tree libffi headers.- Fix test broken with OpenSSL 1.1 (bsc#1042670) * add 0001-3.6-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-3093.patch- Update RPM group for python documentation.- fix missing %{?armsuffix}- distutils-reproducible-compile.patch: ensure distutils order files before compiling, which works around bsc#1049186- Add libnsl-devel build requires for glibc obsoleting libnsl- update to 3.6.2 * bugfix release, over a hundred bugs fixed * see Misc/NEWS for details - drop upstreamed test-socket-aead-kernel49.patch - add Provides: python3-typing (fixes bsc#1050653) - drop duplicate Provides: python3- drop db-devel from requirements- Add missing link to python library in config dir (bsc#1040164)- update to 3.6.1 * bugfix release, over a hundred bugs fixed * never add import location's parent directory to sys.path * switch to git for version control, build changes related to that * fix "failed to get random numbers" on old kernels (bsc#1029902) * several crashes and memory leaks corrected * f-string are no longer accepted as docstrings- prevent regenerating AST at build-time more robustly - add "--without profileopt" and "--without testsuite" options to python3-base to allow short circuiting when working on the package- Add 0001-allow-for-reproducible-builds-of-python-packages.patch upstream https://github.com/python/cpython/pull/296- reenable test_socket with AEAD patch (test-socket-aead-kernel49.patch) - reintroduce %py3_soflags macro (and better named %cpython3_soabi equivalent)- update to 3.6.0 * PEP 498 Formated string literals * PEP 515 Underscores in numeric literals * PEP 526 Syntax for variable annotations * PEP 525 Asynchronous generators * PEP 530 Asynchronous comprehensions * PEP 506 New "secrets" module for safe key generation * less memory consumed by dicts * dtrace and systemtap support * improved asyncio module * better defaults for ssl * new hashing algorithms in hashlib * bytecode format changed to allow more optimizations * "async" and "await" are on track to be reserved words * StopIteration from generators is deprecated * support for openssl < 1.0.2 is deprecated * os.urandom now blocks when getrandom() blocks * huge number of new features, bugfixes and optimizations * see https://docs.python.org/3.6/whatsnew/3.6.html for details - rework multilib patch: drop Python-3.5.0-multilib.patch, implement upstreamable python-3.6.0-multilib-new.patch - refresh python-3.3.0b1-localpath.patch, subprocess-raise-timeout.patch - drop upstreamed Python-3.5.1-fix_lru_cache_copying.patch - finally drop python-2.6b1-canonicalize2.patch that was not applied in source and only kept around in case we needed it in the future. (which we don't, as it seems) - update import_failed map and baselibs - build ctypes against system libffi (buildrequire libffi-devel in python3-base) - add new key to keyring (signed by keys already in keyring) - introduced common configure section between python3 and python3-base - moved pyconfig.h and Makefile to devel subpackage as distutils no longer need it at runtime - added python-rpm-macros dependency, regenerated macros file, drop macros.python3.py because it is not used now - improve summaries and descriptions (fixes bsc#917607) - enabled Link-Time Optimization, see what happens - including skipped_tests.py in pre_checkin.sh run - run specs through spec-cleaner, rearrange sections- move _hashlib and _ssl modules and tests to python3-base - recommend python3- Skip test_asyncio under qemu_user_space_build- Add Python-3.5.1-fix_lru_cache_copying.patch Fix copying the lru_cache() wrapper object. Fixes deep-copying lru_cache regression, which worked on previous versions of python but fails on python 3.5. This fixes a bunch of packages in devel:languages:python3. See: https://bugs.python.org/issue25447- Build the docs in .qch format as well- update to 3.5.1 * bugfix-only release, dozens of bugs fixed - Drop upstreamed Python-3.5.0-_Py_atomic_xxx-symbols.patch - "Python3" to "Python 3" in summary * This seems cleaner and fixes and rpmlint warning- Add Python-3.5.0-_Py_atomic_xxx-symbols.patch This fixes a build error for many packages that use the Python, C-API. This patch is already accepted upstream and is slated to appear in python 3.5.1.- update to 3.5.0 * coroutines with async/await syntax * matrix multiplication operator `@` * unpacking generalizations * new modules `typing` and `zipapp` * type annotations * .pyo files replaced by custom suffixes for optimization levels in __pycache__ * support for memory BIO in ssl module * performance improvements in several modules * and many more - removals and behavior changes * deprecated `__version__` is removed * support for .pyo files was removed * system calls are auto-retried on EINTR * bare generator expressions in function calls now cause SyntaxError (change "f(x for x in i)" to "f((x for x in i))" to fix) * removed undocumented `format` member of private `PyMemoryViewObject` struct * renamed `PyMemAllocator` to `PyMemAllocatorEx` - redefine %dynlib macro to reflect that modules now have arch+os as part of name - module `time` is now built-in - dropped upstreamed patches: python-3.4.1-fix-faulthandler.patch python-3.4.3-test-conditional-ssl.patch python-fix-short-dh.patch (also dropped dh2048.pem required for this patch) - updated patch Python-3.3.0b2-multilib.patch to Python-3.5.0-multilib.patch - python-ncurses-6.0-accessors.patch taken from python 2 to fix build failure with new gcc + ncurses- Add python3-ncurses-6.0-accessors.patch: Fix build with NCurses 6.0 and OPAQUE_WINDOW set to 1.- improve import_failed hook to do the right thing when invoking missing modules with "python3 -m modulename" (boo#942751)- Build with --enable-loadable-sqlite-extensions to make it works as geospatial database.- Fix source list for previous change (add dh2048.pem).- dh2048.pem: added generated 2048 dh parameter set to fix ssl test (bsc#935856) - python-fix-short-dh.patch: replace the 512 bits dh parameter set by 2048 bits to fix build with new openssl 1.0.2c (bsc#935856)- ctypes-libffi-aarch64.patch: remove upstreamed patch - python-2.7-libffi-aarch64.patch: Fix argument passing in libffi for aarch64- drop the PDF subpackage (removes the massive texlive dependency, and most likely nobody is using the PDFs anyway)- python-3.4.3-test-conditional-ssl.patch - restore tests failing because test_urllib was unconditionally importing ssl (without really needing it) - restore functionality of multilib patch - drop libffi-ppc64le.diff because upstream completely changed everything yet again (sorry ppc64 folks :| )- Update to version 3.4.3 - Drop upstreamed CVE-2014-4650-CGIHTTPServer-traversal.patch (bpo#21766)- Add python-3.4.1-fix-faulthandler.patch, upstream patch for bogus faulthandler which fails with GCC 5.- asyncio has been merged in python3 main package; provide and obsolete it - Remove obsolete AUTHORS section - Remove redundant %clean section- Only pkgconfig(x11) is required for build, not the whole set of packages provided by xorg-x11-devel metapackage.- add %python3_version rpm macro for Fedora compatibility - add missing argument in import_failed, rename Novell Bugzilla to SUSE Bugzillasheep03 1668423628  !"#$#&'&)*),-./0/232565898;<=>?>ABCDEDGHGJKJMNOPPPSSSVWVYZY\]^_`abcbefehijklknonqrqtttwxwz{z}~}      !"!$%$'('*+*-.-0103436769:9<=<?@?BCBEFEHIHKLKNONQRQTUTWXWZ[\]^]`a`cdcfgfijilmloporsruvuxyx{|{~~      !"#$%&'()*+,-./3.9.15-150300.4.21.13.9.15-150300.4.21.13.9.15-150300.4.21.1   idle3.9config-extensions.defconfig-highlight.defconfig-keys.defconfig-main.defidle3.9idlelibCREDITS.txtChangeLogHISTORY.txtIconsREADME.txtfolder.gifidle.icoidle_16.gifidle_16.pngidle_256.pngidle_32.gifidle_32.pngidle_48.gifidle_48.pngminusnode.gifopenfolder.gifplusnode.gifpython.giftk.gifNEWS.txtNEWS2x.txtREADME.txtTODO.txt__init__.py__main__.py__pycache____init__.cpython-39.opt-1.pyc__init__.cpython-39.opt-2.pyc__init__.cpython-39.pyc__main__.cpython-39.opt-1.pyc__main__.cpython-39.opt-2.pyc__main__.cpython-39.pycautocomplete.cpython-39.opt-1.pycautocomplete.cpython-39.opt-2.pycautocomplete.cpython-39.pycautocomplete_w.cpython-39.opt-1.pycautocomplete_w.cpython-39.opt-2.pycautocomplete_w.cpython-39.pycautoexpand.cpython-39.opt-1.pycautoexpand.cpython-39.opt-2.pycautoexpand.cpython-39.pycbrowser.cpython-39.opt-1.pycbrowser.cpython-39.opt-2.pycbrowser.cpython-39.pyccalltip.cpython-39.opt-1.pyccalltip.cpython-39.opt-2.pyccalltip.cpython-39.pyccalltip_w.cpython-39.opt-1.pyccalltip_w.cpython-39.opt-2.pyccalltip_w.cpython-39.pyccodecontext.cpython-39.opt-1.pyccodecontext.cpython-39.opt-2.pyccodecontext.cpython-39.pyccolorizer.cpython-39.opt-1.pyccolorizer.cpython-39.opt-2.pyccolorizer.cpython-39.pycconfig.cpython-39.opt-1.pycconfig.cpython-39.opt-2.pycconfig.cpython-39.pycconfig_key.cpython-39.opt-1.pycconfig_key.cpython-39.opt-2.pycconfig_key.cpython-39.pycconfigdialog.cpython-39.opt-1.pycconfigdialog.cpython-39.opt-2.pycconfigdialog.cpython-39.pycdebugger.cpython-39.opt-1.pycdebugger.cpython-39.opt-2.pycdebugger.cpython-39.pycdebugger_r.cpython-39.opt-1.pycdebugger_r.cpython-39.opt-2.pycdebugger_r.cpython-39.pycdebugobj.cpython-39.opt-1.pycdebugobj.cpython-39.opt-2.pycdebugobj.cpython-39.pycdebugobj_r.cpython-39.opt-1.pycdebugobj_r.cpython-39.opt-2.pycdebugobj_r.cpython-39.pycdelegator.cpython-39.opt-1.pycdelegator.cpython-39.opt-2.pycdelegator.cpython-39.pycdynoption.cpython-39.opt-1.pycdynoption.cpython-39.opt-2.pycdynoption.cpython-39.pyceditor.cpython-39.opt-1.pyceditor.cpython-39.opt-2.pyceditor.cpython-39.pycfilelist.cpython-39.opt-1.pycfilelist.cpython-39.opt-2.pycfilelist.cpython-39.pycformat.cpython-39.opt-1.pycformat.cpython-39.opt-2.pycformat.cpython-39.pycgrep.cpython-39.opt-1.pycgrep.cpython-39.opt-2.pycgrep.cpython-39.pychelp.cpython-39.opt-1.pychelp.cpython-39.opt-2.pychelp.cpython-39.pychelp_about.cpython-39.opt-1.pychelp_about.cpython-39.opt-2.pychelp_about.cpython-39.pychistory.cpython-39.opt-1.pychistory.cpython-39.opt-2.pychistory.cpython-39.pychyperparser.cpython-39.opt-1.pychyperparser.cpython-39.opt-2.pychyperparser.cpython-39.pycidle.cpython-39.opt-1.pycidle.cpython-39.opt-2.pycidle.cpython-39.pyciomenu.cpython-39.opt-1.pyciomenu.cpython-39.opt-2.pyciomenu.cpython-39.pycmacosx.cpython-39.opt-1.pycmacosx.cpython-39.opt-2.pycmacosx.cpython-39.pycmainmenu.cpython-39.opt-1.pycmainmenu.cpython-39.opt-2.pycmainmenu.cpython-39.pycmulticall.cpython-39.opt-1.pycmulticall.cpython-39.opt-2.pycmulticall.cpython-39.pycoutwin.cpython-39.opt-1.pycoutwin.cpython-39.opt-2.pycoutwin.cpython-39.pycparenmatch.cpython-39.opt-1.pycparenmatch.cpython-39.opt-2.pycparenmatch.cpython-39.pycpathbrowser.cpython-39.opt-1.pycpathbrowser.cpython-39.opt-2.pycpathbrowser.cpython-39.pycpercolator.cpython-39.opt-1.pycpercolator.cpython-39.opt-2.pycpercolator.cpython-39.pycpyparse.cpython-39.opt-1.pycpyparse.cpython-39.opt-2.pycpyparse.cpython-39.pycpyshell.cpython-39.opt-1.pycpyshell.cpython-39.opt-2.pycpyshell.cpython-39.pycquery.cpython-39.opt-1.pycquery.cpython-39.opt-2.pycquery.cpython-39.pycredirector.cpython-39.opt-1.pycredirector.cpython-39.opt-2.pycredirector.cpython-39.pycreplace.cpython-39.opt-1.pycreplace.cpython-39.opt-2.pycreplace.cpython-39.pycrpc.cpython-39.opt-1.pycrpc.cpython-39.opt-2.pycrpc.cpython-39.pycrun.cpython-39.opt-1.pycrun.cpython-39.opt-2.pycrun.cpython-39.pycrunscript.cpython-39.opt-1.pycrunscript.cpython-39.opt-2.pycrunscript.cpython-39.pycscrolledlist.cpython-39.opt-1.pycscrolledlist.cpython-39.opt-2.pycscrolledlist.cpython-39.pycsearch.cpython-39.opt-1.pycsearch.cpython-39.opt-2.pycsearch.cpython-39.pycsearchbase.cpython-39.opt-1.pycsearchbase.cpython-39.opt-2.pycsearchbase.cpython-39.pycsearchengine.cpython-39.opt-1.pycsearchengine.cpython-39.opt-2.pycsearchengine.cpython-39.pycsidebar.cpython-39.opt-1.pycsidebar.cpython-39.opt-2.pycsidebar.cpython-39.pycsqueezer.cpython-39.opt-1.pycsqueezer.cpython-39.opt-2.pycsqueezer.cpython-39.pycstackviewer.cpython-39.opt-1.pycstackviewer.cpython-39.opt-2.pycstackviewer.cpython-39.pycstatusbar.cpython-39.opt-1.pycstatusbar.cpython-39.opt-2.pycstatusbar.cpython-39.pyctextview.cpython-39.opt-1.pyctextview.cpython-39.opt-2.pyctextview.cpython-39.pyctooltip.cpython-39.opt-1.pyctooltip.cpython-39.opt-2.pyctooltip.cpython-39.pyctree.cpython-39.opt-1.pyctree.cpython-39.opt-2.pyctree.cpython-39.pycundo.cpython-39.opt-1.pycundo.cpython-39.opt-2.pycundo.cpython-39.pycutil.cpython-39.opt-1.pycutil.cpython-39.opt-2.pycutil.cpython-39.pycwindow.cpython-39.opt-1.pycwindow.cpython-39.opt-2.pycwindow.cpython-39.pyczoomheight.cpython-39.opt-1.pyczoomheight.cpython-39.opt-2.pyczoomheight.cpython-39.pyczzdummy.cpython-39.opt-1.pyczzdummy.cpython-39.opt-2.pyczzdummy.cpython-39.pycautocomplete.pyautocomplete_w.pyautoexpand.pybrowser.pycalltip.pycalltip_w.pycodecontext.pycolorizer.pyconfig-extensions.defconfig-highlight.defconfig-keys.defconfig-main.defconfig.pyconfig_key.pyconfigdialog.pydebugger.pydebugger_r.pydebugobj.pydebugobj_r.pydelegator.pydynoption.pyeditor.pyextend.txtfilelist.pyformat.pygrep.pyhelp.htmlhelp.pyhelp_about.pyhistory.pyhyperparser.pyidle.batidle.pyidle.pywidle_testREADME.txt__init__.py__pycache____init__.cpython-39.opt-1.pyc__init__.cpython-39.opt-2.pyc__init__.cpython-39.pychtest.cpython-39.opt-1.pychtest.cpython-39.opt-2.pychtest.cpython-39.pycmock_idle.cpython-39.opt-1.pycmock_idle.cpython-39.opt-2.pycmock_idle.cpython-39.pycmock_tk.cpython-39.opt-1.pycmock_tk.cpython-39.opt-2.pycmock_tk.cpython-39.pyctemplate.cpython-39.opt-1.pyctemplate.cpython-39.opt-2.pyctemplate.cpython-39.pyctest_autocomplete.cpython-39.opt-1.pyctest_autocomplete.cpython-39.opt-2.pyctest_autocomplete.cpython-39.pyctest_autocomplete_w.cpython-39.opt-1.pyctest_autocomplete_w.cpython-39.opt-2.pyctest_autocomplete_w.cpython-39.pyctest_autoexpand.cpython-39.opt-1.pyctest_autoexpand.cpython-39.opt-2.pyctest_autoexpand.cpython-39.pyctest_browser.cpython-39.opt-1.pyctest_browser.cpython-39.opt-2.pyctest_browser.cpython-39.pyctest_calltip.cpython-39.opt-1.pyctest_calltip.cpython-39.opt-2.pyctest_calltip.cpython-39.pyctest_calltip_w.cpython-39.opt-1.pyctest_calltip_w.cpython-39.opt-2.pyctest_calltip_w.cpython-39.pyctest_codecontext.cpython-39.opt-1.pyctest_codecontext.cpython-39.opt-2.pyctest_codecontext.cpython-39.pyctest_colorizer.cpython-39.opt-1.pyctest_colorizer.cpython-39.opt-2.pyctest_colorizer.cpython-39.pyctest_config.cpython-39.opt-1.pyctest_config.cpython-39.opt-2.pyctest_config.cpython-39.pyctest_config_key.cpython-39.opt-1.pyctest_config_key.cpython-39.opt-2.pyctest_config_key.cpython-39.pyctest_configdialog.cpython-39.opt-1.pyctest_configdialog.cpython-39.opt-2.pyctest_configdialog.cpython-39.pyctest_debugger.cpython-39.opt-1.pyctest_debugger.cpython-39.opt-2.pyctest_debugger.cpython-39.pyctest_debugger_r.cpython-39.opt-1.pyctest_debugger_r.cpython-39.opt-2.pyctest_debugger_r.cpython-39.pyctest_debugobj.cpython-39.opt-1.pyctest_debugobj.cpython-39.opt-2.pyctest_debugobj.cpython-39.pyctest_debugobj_r.cpython-39.opt-1.pyctest_debugobj_r.cpython-39.opt-2.pyctest_debugobj_r.cpython-39.pyctest_delegator.cpython-39.opt-1.pyctest_delegator.cpython-39.opt-2.pyctest_delegator.cpython-39.pyctest_editmenu.cpython-39.opt-1.pyctest_editmenu.cpython-39.opt-2.pyctest_editmenu.cpython-39.pyctest_editor.cpython-39.opt-1.pyctest_editor.cpython-39.opt-2.pyctest_editor.cpython-39.pyctest_filelist.cpython-39.opt-1.pyctest_filelist.cpython-39.opt-2.pyctest_filelist.cpython-39.pyctest_format.cpython-39.opt-1.pyctest_format.cpython-39.opt-2.pyctest_format.cpython-39.pyctest_grep.cpython-39.opt-1.pyctest_grep.cpython-39.opt-2.pyctest_grep.cpython-39.pyctest_help.cpython-39.opt-1.pyctest_help.cpython-39.opt-2.pyctest_help.cpython-39.pyctest_help_about.cpython-39.opt-1.pyctest_help_about.cpython-39.opt-2.pyctest_help_about.cpython-39.pyctest_history.cpython-39.opt-1.pyctest_history.cpython-39.opt-2.pyctest_history.cpython-39.pyctest_hyperparser.cpython-39.opt-1.pyctest_hyperparser.cpython-39.opt-2.pyctest_hyperparser.cpython-39.pyctest_iomenu.cpython-39.opt-1.pyctest_iomenu.cpython-39.opt-2.pyctest_iomenu.cpython-39.pyctest_macosx.cpython-39.opt-1.pyctest_macosx.cpython-39.opt-2.pyctest_macosx.cpython-39.pyctest_mainmenu.cpython-39.opt-1.pyctest_mainmenu.cpython-39.opt-2.pyctest_mainmenu.cpython-39.pyctest_multicall.cpython-39.opt-1.pyctest_multicall.cpython-39.opt-2.pyctest_multicall.cpython-39.pyctest_outwin.cpython-39.opt-1.pyctest_outwin.cpython-39.opt-2.pyctest_outwin.cpython-39.pyctest_parenmatch.cpython-39.opt-1.pyctest_parenmatch.cpython-39.opt-2.pyctest_parenmatch.cpython-39.pyctest_pathbrowser.cpython-39.opt-1.pyctest_pathbrowser.cpython-39.opt-2.pyctest_pathbrowser.cpython-39.pyctest_percolator.cpython-39.opt-1.pyctest_percolator.cpython-39.opt-2.pyctest_percolator.cpython-39.pyctest_pyparse.cpython-39.opt-1.pyctest_pyparse.cpython-39.opt-2.pyctest_pyparse.cpython-39.pyctest_pyshell.cpython-39.opt-1.pyctest_pyshell.cpython-39.opt-2.pyctest_pyshell.cpython-39.pyctest_query.cpython-39.opt-1.pyctest_query.cpython-39.opt-2.pyctest_query.cpython-39.pyctest_redirector.cpython-39.opt-1.pyctest_redirector.cpython-39.opt-2.pyctest_redirector.cpython-39.pyctest_replace.cpython-39.opt-1.pyctest_replace.cpython-39.opt-2.pyctest_replace.cpython-39.pyctest_rpc.cpython-39.opt-1.pyctest_rpc.cpython-39.opt-2.pyctest_rpc.cpython-39.pyctest_run.cpython-39.opt-1.pyctest_run.cpython-39.opt-2.pyctest_run.cpython-39.pyctest_runscript.cpython-39.opt-1.pyctest_runscript.cpython-39.opt-2.pyctest_runscript.cpython-39.pyctest_scrolledlist.cpython-39.opt-1.pyctest_scrolledlist.cpython-39.opt-2.pyctest_scrolledlist.cpython-39.pyctest_search.cpython-39.opt-1.pyctest_search.cpython-39.opt-2.pyctest_search.cpython-39.pyctest_searchbase.cpython-39.opt-1.pyctest_searchbase.cpython-39.opt-2.pyctest_searchbase.cpython-39.pyctest_searchengine.cpython-39.opt-1.pyctest_searchengine.cpython-39.opt-2.pyctest_searchengine.cpython-39.pyctest_sidebar.cpython-39.opt-1.pyctest_sidebar.cpython-39.opt-2.pyctest_sidebar.cpython-39.pyctest_squeezer.cpython-39.opt-1.pyctest_squeezer.cpython-39.opt-2.pyctest_squeezer.cpython-39.pyctest_stackviewer.cpython-39.opt-1.pyctest_stackviewer.cpython-39.opt-2.pyctest_stackviewer.cpython-39.pyctest_statusbar.cpython-39.opt-1.pyctest_statusbar.cpython-39.opt-2.pyctest_statusbar.cpython-39.pyctest_text.cpython-39.opt-1.pyctest_text.cpython-39.opt-2.pyctest_text.cpython-39.pyctest_textview.cpython-39.opt-1.pyctest_textview.cpython-39.opt-2.pyctest_textview.cpython-39.pyctest_tooltip.cpython-39.opt-1.pyctest_tooltip.cpython-39.opt-2.pyctest_tooltip.cpython-39.pyctest_tree.cpython-39.opt-1.pyctest_tree.cpython-39.opt-2.pyctest_tree.cpython-39.pyctest_undo.cpython-39.opt-1.pyctest_undo.cpython-39.opt-2.pyctest_undo.cpython-39.pyctest_util.cpython-39.opt-1.pyctest_util.cpython-39.opt-2.pyctest_util.cpython-39.pyctest_warning.cpython-39.opt-1.pyctest_warning.cpython-39.opt-2.pyctest_warning.cpython-39.pyctest_window.cpython-39.opt-1.pyctest_window.cpython-39.opt-2.pyctest_window.cpython-39.pyctest_zoomheight.cpython-39.opt-1.pyctest_zoomheight.cpython-39.opt-2.pyctest_zoomheight.cpython-39.pyctest_zzdummy.cpython-39.opt-1.pyctest_zzdummy.cpython-39.opt-2.pyctest_zzdummy.cpython-39.pycexample_noextexample_stub.pyihtest.pymock_idle.pymock_tk.pytemplate.pytest_autocomplete.pytest_autocomplete_w.pytest_autoexpand.pytest_browser.pytest_calltip.pytest_calltip_w.pytest_codecontext.pytest_colorizer.pytest_config.pytest_config_key.pytest_configdialog.pytest_debugger.pytest_debugger_r.pytest_debugobj.pytest_debugobj_r.pytest_delegator.pytest_editmenu.pytest_editor.pytest_filelist.pytest_format.pytest_grep.pytest_help.pytest_help_about.pytest_history.pytest_hyperparser.pytest_iomenu.pytest_macosx.pytest_mainmenu.pytest_multicall.pytest_outwin.pytest_parenmatch.pytest_pathbrowser.pytest_percolator.pytest_pyparse.pytest_pyshell.pytest_query.pytest_redirector.pytest_replace.pytest_rpc.pytest_run.pytest_runscript.pytest_scrolledlist.pytest_search.pytest_searchbase.pytest_searchengine.pytest_sidebar.pytest_squeezer.pytest_stackviewer.pytest_statusbar.pytest_text.pytest_textview.pytest_tooltip.pytest_tree.pytest_undo.pytest_util.pytest_warning.pytest_window.pytest_zoomheight.pytest_zzdummy.pyiomenu.pymacosx.pymainmenu.pymulticall.pyoutwin.pyparenmatch.pypathbrowser.pypercolator.pypyparse.pypyshell.pyquery.pyredirector.pyreplace.pyrpc.pyrun.pyrunscript.pyscrolledlist.pysearch.pysearchbase.pysearchengine.pysidebar.pysqueezer.pystackviewer.pystatusbar.pytextview.pytooltip.pytree.pyundo.pyutil.pywindow.pyzoomheight.pyzzdummy.pyidle3.9.desktoppython39-idleChangeLogNEWS.txtREADME.txtTODO.txtextend.txthicolor16x16appsidle3.9.png32x32appsidle3.9.png48x48appsidle3.9.pngidle3.9.appdata.xml/etc//etc/idle3.9//usr/bin//usr/lib64/python3.9//usr/lib64/python3.9/idlelib//usr/lib64/python3.9/idlelib/Icons//usr/lib64/python3.9/idlelib/__pycache__//usr/lib64/python3.9/idlelib/idle_test//usr/lib64/python3.9/idlelib/idle_test/__pycache__//usr/share/applications//usr/share/doc/packages//usr/share/doc/packages/python39-idle//usr/share/icons//usr/share/icons/hicolor//usr/share/icons/hicolor/16x16//usr/share/icons/hicolor/16x16/apps//usr/share/icons/hicolor/32x32//usr/share/icons/hicolor/32x32/apps//usr/share/icons/hicolor/48x48//usr/share/icons/hicolor/48x48/apps//usr/share/metainfo/-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:26740/SUSE_SLE-15-SP3_Update/46830a52e437121aaf83c93ebea4c70a-python39.SUSE_SLE-15-SP3_Updatedrpmxz5x86_64-suse-linux  directoryASCII textPython script, ASCII text executableUTF-8 Unicode textASCII text, with very long linesGIF image data, version 89a, 15 x 13GIF image data, version 89a, 16 x 16PNG image data, 16 x 16, 8-bit colormap, non-interlacedPNG image data, 256 x 256, 8-bit/color RGBA, non-interlacedGIF image data, version 89a, 32 x 32PNG image data, 32 x 32, 8-bit/color RGBA, non-interlacedGIF image data, version 89a, 48 x 48PNG image data, 48 x 48, 8-bit/color RGBA, non-interlacedGIF image data, version 89a, 11 x 11GIF image data, version 89a, 16 x 13GIF image data, version 89a, 14 x 11HTML document, UTF-8 Unicode text, with very long linesDOS batch file, ASCII text, with CRLF line terminatorsPython script, UTF-8 Unicode text executableXML 1.0 document, UTF-8 Unicode text  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRPPPPP-#悇Hutf-8897d4069f1dd79217881755587971f5699ece9583ca309270783da3688269ad4? 7zXZ !t/U*]"k%a WJM^""";˾͛XYy1ƨQ;< )z|YX,ƾm1 >cUVfXd3bIJfy9spZ{b ,@-P*CjR\$RT[H``Ekz*E/oF]*ru/^e_EE ƀipզ(v1zq(# ,TȎø_B73K9eULFXn-F?wy8|mMk7W(pj]z]͚iz"bWsǁa30]ޝtK`Nm^[eotl_4" 9?cP>IY=[n1A|"Fں?&t~ִ֜1N!RroZHibtۮ'/qTE\ t9:kH▔W-MV_2upfYM닋4#E%ՌN[ FJJi'?xg(&W;&#YX@]lU6$S5~MW?310U]aM}Y.\tp ,|-ܔ ]D@vjR጗C, ]%OP_ݽ7~kpOdne}Cq T @slf'9[!nR''0 k960UZATIH} Oo6RB4鰨C&V`oDn`N.!%X 2 k{lRٮ!2tsIvۻD(Nz87ɿE-}_Xt!iMZҶCEi}g9X/<0Ų=4}ޒwh9bH6NSuŔvy;6@*d rzt!z9۠y !Xj;{yed*9Pg?tiw 3 sz:hF6& {f)edѨt\"}|Uj3;νB0v?\b = M(kx&CHAyGK^2b`U2]],Pa+Avʶw'eکfbHTQAx2aNO;Lr.;U}IQPq+ LvBka° UUeisF=r7G4xpT_l 43[fDSÂ"'Yf2UoѨ S x^N٥uuX ЬVPJMH,\uyJaZ!;],H]P4= oKjł%Qg ~-<(f>Q~u9l B u:RW|XIljDoNJI_ ۵ZU bC,-N!Ar8_̥Һ minj:{|3S w\8WՀG&owB2Dz>EZN\euM3Q\u`ҲWQwɁp?A8?~AHҷbm&)!3Կ=,WS~z"+pvk-=zWoίF},M.{kM3)>ҢElٕ7Ar>icd'Z]M%H6L|` :ljX!l% A\nKsn-E~骾A`.5u-'a2,VtcV,= *.n@MFvȣw&ExO*gz !j+"ߖhn]u13 Һv#, .lߋ|,XEiGS^!5R>h$NJ@rn'ϦVQk|]%E{ctS)=2[[tOj&عf &֓Z%P *:s=A]qNZeޞ>fc4^ʥlTO?S'f: ^/3$]v*Kܒ:a\;^0wb>ۦvig]8_f g%P؞l.Z!QX36cEDAL$'w :~D=}6DhYf%;O8"[;_yQbe@x+q'fJh;T _{~&w+@]ƹc| 6qh,NȎgh0CHfoRIgv[+h-2VS^acmQJ67b[߆ l-rf}T~Y40\L0ͯpoKKrOJ Y`T4+C\ki؁!nB!H`Gđ>'^ m+3vpr82zZh`kd7%q&{N$|xiRߗ F} ?D6NkDu5G _ z\S/6,Po]y# - 7qg' ڍ}m\ph;XZWlK=p}5ƎDb])wxNBX4Yփ^F7 wi~mha;~wS: lq=r7j*P=Mc)nbCg jrayz*MnSPY //=Nd6[e7ӄW튲0goux G\28qvIt{Hω$XcE{">nZ;xVq l1RI>fC7 gT+rgh¹U6~DmfX4~f'Fww­:;nńc\[?XQ_IsI?%T}åS#;\>rG^Iq Vg#6Kd8'BaLx(ZC>hl6.x32HW䢱߃U<5)_oAMY});1N,Ö&_UV kw_NFN դ< o"#'dM՚˅,VLX啍qR1r!75jH"8q**Dz.`VbوW$*u`k@ɣrsq;uJe+abQʦZL$wJrM tAjWkIj,IܳR:0*l?Mu Z~,k(& ÍGɁ ޱTuPp(qDG`!i#2ȾLJPʹWj?Ttn3 #'B$oS'9Kz)RiS/%~Ƌ80-~Uwf& 蜠p:cQF'_#+]Q7PXS]YBXmEQ.r;{ӕR%2}^3~)"pZܳkpj`ԀF—V')E?-CKդicod'*. Wb̒[ P$jM7ZKt8m,&4gyr:\A)}ߴ(DrJs\:ɒ{fz;#ńxrA 0>9az"eɒXՍO8s$PYl So~4.BT\5 C;;:o_8 Mqlz`EkN]7k¦+R_a Xu*\B渓c/O}B&/}7t1bxNcv{X.]$β*YU;81hAQ*c(֦w= txabR9qA7qﹹ-sXs3Hoִ,ܔkZX}ȃl" _I`|Mi=y6(T}{PdsLJ*ޯP[EepTʺX5Bu.=֣KQ5$#$ΎS^ N%Rmcc)-jhQH55m!hһ˵e;"q&:9|W2PNÛٮw[C!9^lJ_ɱu`#t4 }_ݙu;̖֝bZ-_;n[~ߗYufiRl7vQ*?_f'񗯸UD4Dus.Jؒ2G- IܬBYn:p#> !hYl`->F7h8stK83hEwgy"NJ 6O8n %ޘGH"uN-rR+]>_gu2/$:>_CU<*C{ʓDw kA yѦv7.7f7< kM> ES/`} Aj&n=X+3~KcQ9ND*=G&Ek nt^G_J8߫D9Å^ ;n[U`X JnаPp98u93g*]LIHR\l,blv#m2]DQJY'Eib|6_Ԫ`) ʔVSݣW PͣZT{DCvtK5Lmnca=*$1z{=^be SgD}ٝ떞L:؃t*q syrVڴKNM_##5}۫bwn$,Fl?scxS97k*LORP-W<%GR4#1'tK^8s]oMz8w3GV6COc@(>OjAEDP!-cNHΜ_SZ#Lxc )ƭkfwoͽ-@y0;j.} e:4>4s/ͱsN+LUm?"B~vYBiv]<L CsgXCB?&~/8$9j8ْP8Fx 4%ߗۘ7 >lFVWk@tӰ"X~}͕>ƒ/MV7R4I|\yA)tfٴ?LeD_@a{qzhsJvGN] c DCp4,=0ffҊzhWVƷƚ{&mjDfN7nG-{2m %,s-X l+.3>KsT(꿝eECyPwH-A뷦[ q6hlU]fE,/Z`h+$!霓gI[gm[ǺFZpv0;'-6 rp'Wyi\#1FmX\ff 2'B A* e` ]lris7q}꽉m34baWzFG6||]!eHN#VWedk8Bi'(̧gWOwnTo"0 v~$P)We]^Td%/ >fώ3~. Y㻖4`qV!H|>% v OP=EI%92OW9Ɠt Y6t Cݩea0E$~Urh3 Z-q>jWMtQ>hP0 cE9!$['SLI9 tJ!TAta(fS"yLHϸjdXAx.'}>XϿ8fxn\٫} ժD0̐1)ٽzo})2H|dH&q7NR39fbV Xu:I+\<ptRlqk/yB+C]|YEh&VΏ ҦOsl4Ҏ~V'.r]s~ ʬy&?Lş2s(WTuA1u  [^!j7L+kKۺWz>lG܆H4corfN_)t3Xg, ̚KZ[lE(Uy2RH۟jp1CV_`!aukVj"'FO :vp)-id&Ѭehh\Յq)ƾ" /RG$oc Gn>i4Vwm OG:A]ٗoR15^H^-r%j@qx&B57DC ŋ *PoPz9I3璋;CDcReCݙ6yh6EPVu&`KkMӴ[1u/;w˘+w\|dWMՔj͚zr Y1T݉]Lѵt*P3ϲY'݈?\ED~e9n;j>Vca tzc/xU{y G#(b{PY914Y6b5C\CEG}t֋376yv nu4q7v|1VG⡙!e he*ǵ%23( r[8]xM-Md 6lxigDfKR=!FkA d_ï߳9QkU3>q#ai?X0rֲXY Eõ|U>bֳ_Ak؄G|ޡλUedC΋BFq9q"&Q79j~C> C'Y2 㳆iU_L!rwzH!j~~n/AN˹ST\7wD)GIj/3fPB,ŊbGWq|ژF' ǀ Ely2G.Wqj'yQ,S n?Ȑ9aE*^Cht鱧eeT|D[%))s# C dilZ谦n@ϑW\s޷)n2t ^SL,TFZW ^4{8ک9W`Ք^8GY==!{ӷ;ȭ|bx޴APMыTG(4liD0 0xB6H0ɬ*BIYB\4[-2/`#:ݮt}lb72}tnw&礐~ir/Y[p]}>3@U#j pPy+׃ץ1T P#4L[0At?I7zG y#t!pg`P5kf"w#OndTEYfl$֮g"6Wh[t -L`@FsGI0)Q/Ef0Y$أ4w֪"z}[F|L"B@=u2CTwDpsjըqXXtuOrδ؊aѶwo4 mL~!twf.x]ZO芌DK88":bGv\]7Qb?6V*z~V:\*5jJSoDѥ?RW Td > D0H0uޡkpGxY١-O*‰}ijӸ:X'Vֆ#) YZ