python-idle-2.7.18-150000.77.1<>,?@gҕp9|9d4,_a ׿O+y30"EUj<5R"N!}~hE,S%q:5jܝJƇa2OaξOͽ^s<\WݎZSλi(ZDw' 㰿2 Pˣfpm4IdwV- o9[=hl!zH;{*$Kc͊>H?8d ! R04@D]~ 11  1  l1 01 [a1 ]1a1g1mm1rs sL t$ (ti8tpu9vDu:}uFG1H1I1XY\,1]1^bDcdfekfnlpu1v Hw41x1yz4Cpython-idle2.7.18150000.77.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.gҕh04-armsrv2!zESUSE Linux Enterprise 15SUSE LLC Python-2.0https://www.suse.com/Development/Languages/Pythonhttps://www.python.org/linuxaarch64 a ]#LLC00 C WWJ<IW%% &"""G<DDݴw(M)UHgHgx[MN  lf`}OIUE%??Dpp:  HL6'%_Z-p??+ffLLMM! RR F!!' n nO! e==:EE*#44YY 44nn f++~rrCC :+///p3t51818= ? ?-60J0J:/c/c ww'' _WW877 K ; ;4NNw%!- - PPM,1i1iX  QBB0// NTTv2u4k41HHH I!: fA큤A큤A큤큤큤A큤A큤gҕgҕgҕgҕgҕgҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgҕgw@gҕgҕgw@gҕgҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgҕgw@gҕgҕgw@gҕgҕgҕgҕgҕgҕgҕgҕgҕgҕgҕgҕgҕgҕgҕgҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgҕgҕgҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgҕgҕgw@gҕgҕgҕgҕgw@gҕgҕgҕgҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgw@gҕgҕgҕgҕ^^^^^gҕgҕgҕgҕe9a0afb565dd64cc30f062eaa9d6378b184ef6bb02c1b8df395c3b950b3abb0a3370804a789de79c9633e2ac3920aaca50fc589d729aee49b584817aff266245bcefe0cb4c5fa37d80f7508bc7c8efcc028d7fd74752860831d43650dff02b0a2749ea4c95c05856fe745d26d20d6354c2ea1cb5dc9fad7be2b21a2b7a0970f8553d04d748fe166c4997868f7ab6d1d9d780e1ebab3025f62508db00eff8e2b3a3ffd0d82f4b642a4dd737e13d25c7273e1c83239354ae7ba23b6a0e0229f155721b9e0fd11398b09e3b997eaad49a43444d8bc6d1544a42282a82e591638c02721b9e0fd11398b09e3b997eaad49a43444d8bc6d1544a42282a82e591638c02aa9f2ffbc70d9eca20409b661312e833f6d19656f66d4d161debfd972faace1cd2ec0cac18869e1e1b2ee1fb4ad01551daacc26aad871e26a6f7c2d739354733eaae7335776232039f7416e247c221d8801396d5948aa43089e051fdb2ea0ef68447e6928e7be6d9bd2213609c645b2a353b69a8c8b915e1ebc8cf4f3db0578b33dcb6d70b9271cccfa4a7d27e5c0f19f792ef3daa547b40117544d5af383e1b33dcb6d70b9271cccfa4a7d27e5c0f19f792ef3daa547b40117544d5af383e1b0f8ade6353b9241672db6c81f619cf5e70f8b373098d56c060ecac2b8bfe4cd16cac94a38db4eb5a20efbcd21adf6fe94e58120e017fdcd87ebeadffdfc2c03e6cac94a38db4eb5a20efbcd21adf6fe94e58120e017fdcd87ebeadffdfc2c03ec7a0cc61079c6e2df53457e63b413e0389f2c0061eb55e80229da932c8f8dbd6067f359b48e53ff378f4a3a022515325c570ec4033ed2370ae8358f00663ff8fd4fd126acc61a86a97a34792fa9f651f7a86c31b6bbaba57a7fbea47dbb040ead4fd126acc61a86a97a34792fa9f651f7a86c31b6bbaba57a7fbea47dbb040ead1db52cc42a6e67cd375248b34b335b432475a4676ff193bb9308916c1f09ef5f18fdc7ed6aaef005f4b2f9fd06e7bd984d5eb2c17bed8bf6bf568428aab23e7f18fdc7ed6aaef005f4b2f9fd06e7bd984d5eb2c17bed8bf6bf568428aab23e7f8d8896b5a64164249bc8c2875bf4bd854d2acaaad9c526abc5cfc48f17c795704dbda8d418068055b5fbdf905359677ef4d9937a75ff648d3a56b09f5ca3cd0dfaf8a7012d82bff496b8862907edb71e6f7b42cfd1dc8c44c8a4218dd1118aedfaf8a7012d82bff496b8862907edb71e6f7b42cfd1dc8c44c8a4218dd1118ae16a3f0024f70618a2ce5f9d4b07c0ee8b097c1a491855b165dc03e38c081d90b8780b98c29bab04937d0966ba13dbaf41a12d4ccf2f5e5bb27cd298bb0d9b07e18a5c29c53febb4d6067d8f57458bb7fc7408cdb8c90b00ec649ddd78e0bf986e59a93dd15b8a9914d785066e4f876ded9a26e1b26ba8ab4a3869c005dcdf5eb24c2959bc3e22d777f0048ca7385092bd4cf0e89992ea70f161e7b959688e52c24c2959bc3e22d777f0048ca7385092bd4cf0e89992ea70f161e7b959688e52c1780833e989c613bb4fb79940acc57e64521ae038a9c3753bd9b68ef8d0ec46552c83c671ce5686b2d6f1db93860dbe1c5e0ba25d7e598f90e749a931ba0691752c83c671ce5686b2d6f1db93860dbe1c5e0ba25d7e598f90e749a931ba069171a92680bcf6975a4ed05b7ce32b0f8cc7a19d6f10302c61baab60caf4a457fd922b11ee329cbfd42aef8e00311e1552e6408cfffb7ec507c24166a2b529a04a322b11ee329cbfd42aef8e00311e1552e6408cfffb7ec507c24166a2b529a04a3fa09ef6317bcb667d1de85c5b5b4d8b3872ff77f238936e86d54241f0996ab833e65609b2ceeb4b63dcbda5e843b295baf365fa1159dcaa494a24ba07b880b2a9e9fc8c3c87fca43c22cbe1638d14b7cd64bdcdeea8c9ab90b9b1aed5163f13b77ed0038bba5fc3e977f3effbba5fb59b6a78598f95e437701423efe19fe28cf0ddfa62e0e9b36b58314430eb71c4461b384c95214f344c2a4f0696f1abc3b026963f4bb305e0a0354267d007a4295a081d79c96229f83e9ce8829e005dec8a226939bfaf123309a329f82ec593b5074a445776657e8b3ee4e747f254fa49e249bb9b859294e0c66f92ddcc13a7514ab4fe77ea2575a49af49f36e339b03ebe19bb9b859294e0c66f92ddcc13a7514ab4fe77ea2575a49af49f36e339b03ebe13f9304e8cdc1d2474b494eb0d22c91c51842bcf77c7b45e0e976a2dd80fd7c0bd475b2c172e8fc2e348714b87db2b25ae2d8bea1e671b1fd6e7f5b1fbce54b21d475b2c172e8fc2e348714b87db2b25ae2d8bea1e671b1fd6e7f5b1fbce54b214f3354076dc3aa8961f963c267e66e6507e267734bf501f0cf6fb678116d15f54460462cc57607c1991775e6721b7bd2f79df70ed16b9da59a5ae8ac8df1eb1fc436cb8777c264d03138336c8dc9d081dac81439a363f68a60b96c152fa78a90c436cb8777c264d03138336c8dc9d081dac81439a363f68a60b96c152fa78a900493c6e200f420232a619ee8d918d169adf4229ac9c1adf61fe6efbce6317cb39e6574f77e58c9632c6ae1674f1c85981dc3515ecbed156b43107a160d4491449e6574f77e58c9632c6ae1674f1c85981dc3515ecbed156b43107a160d4491447c98d566a13fd599d1c11a375f387fef69b6c595c4f18c5d88c188a860be0e55bfe9c9b62bf4a4b1cb8419282f78bc98f4cde453a0d6bbfce8a7b76177a1af94ae74eb8119aa88532734a84dd782830f8f5cb4dff01cfa4372b1e4afa35653134ad97f34e64abd93e1e32aff017ff8914e3204a76044f1486bc9fbefa07bfdbb26999728e6eefa83b486188a3af6900a464741307e7e4fbe4c6bb030eb765042963d5f8d5d1259e9874a263a6621ca6dd1d57608faa5f28f7d61f349583e07814a404d5bcb1109a33329f0e099fa8c07a8b02401da4e531bbc6de733a90e45aa37484901eb40eefa846308e1da3ff6f240ea98f769a2afc3cf4fdba00327ecbef9b54f0a6c4a21daea6f41263e8df267367f5b491094bea56179a9c3b4ebd65afc11c3d934f8de7d3285f616d0a9129f8113b158157501829c2e452101d067a49a59e2abf1840156e9db8f85a38822fd56ab79a139eb95ec86f1fba1bb87326bfcea17dee8413652327d3d1f7565ac6b32b392a5e424947ede2088e27600346909878665b07bcb76fb3222ea1b4947a553ad0af76fc12b31651d1707980791dca932fd307c4bdc223ae39165f413b2a530b2dbf6323e8a272865da6627535ea3bf69ddebc20a0e6820941d9f96776738019f4eb99858834390ce17cf96d13010b5ece236eadb98a345bef0b166e66a0d3a183abff5a6469ae1874287f633b81db5ece236eadb98a345bef0b166e66a0d3a183abff5a6469ae1874287f633b81de4553bbf2717bc92627040459aef992aaddeaed0c92d1f58847cd4cd7f20c91111d6e27e5dada4951706f41d3973ae00fabd47060c9dc979eb3c2e0600a16716fed453f602130a1b17c1ecdecb4f6528c70b5c8dd67189a6b7b743e7985df8c9cc57937d546d1d56776ade6b00f59ea6a478ee711b4e5cf69c0a1d822ed29a7e2b35d6859145c907bb56a0d8f939c5ee5cf5cb03738d70ca227cda0d2d5ee0b32b35d6859145c907bb56a0d8f939c5ee5cf5cb03738d70ca227cda0d2d5ee0b3d77d55936a0e60586102820034a6222cd4687f0c61b3f41cf121a45ec2bc4606c2606b972224ca3122621b22ca4cb3b914a42dc440974e4c4033447ee9ef57c2d200bf0ff11149e049c21ae3a07a00b4d4f3c976bd8f071f99ca79bfa9b6542dd200bf0ff11149e049c21ae3a07a00b4d4f3c976bd8f071f99ca79bfa9b6542d86a87afa7ff7d0e74abffd39d5e924b4624fd6ec1cbd1f7c52570ad1673ef098c2bbeab76c8ce960a7b6d9c961e888f0e12e277085621262103c85d3ddbe0c83c2bbeab76c8ce960a7b6d9c961e888f0e12e277085621262103c85d3ddbe0c83091aa52b4cea5ced27e9293252d0dcedf8838e2608bb1090f267da09385a90f16fe4793d3dafc388dc6cfd86b12d45dbddf835dc8661c80cc338d205408f7d3b6fe4793d3dafc388dc6cfd86b12d45dbddf835dc8661c80cc338d205408f7d3b5f2444b5056b1520decd5db0dda6cd75817eefaada6e16b1802d49403070a08dd18a7323e5de5ef350f07f58a76513162cf4419d71ce9d091885ff5296e47c0dd18a7323e5de5ef350f07f58a76513162cf4419d71ce9d091885ff5296e47c0d2c86fc8d91a10e769aa3e93119dcea7c1ffec2e21c26c7cdf4122ce4d68222d0ac82c34901c07169d5af76decb1e4c16fc2f75a6d7d8dc8526e290f10e97abc4f8c70d99280885b681052e454f0b69e1842c3aaf7f96fc9a29e49f23c92e8f1dd937a665872aaa592f157b28157b04e49da798c0dd36aec253abf65064bcf44c7961e4cafaa35741dbe9f2388df30ab1d5d8fda2405f432e8ef6cb4918f38ddc9202c4185b0c5ac2e0661ef5fcb1629c08cc0a66a7fe1982560d93162540bcafcd466b0516c363cedbdfa293a2285d812299473ee37f7d0a3244055b73936b91c7bf1e7263c1306741f7ef55e9e170fa16a5fa11df3a24677d639233fbc7e92d829e77444c2af14b29b13b3d022aa2fd9637897df7d9718e21213b8ef407b3884d4a20c039b4fdcfb7a242eb932675b32a6200700eea0bc23891dc8689979a7bf3a73dea8234f66af391835d0b8894ec5a851bc5bf806696419020f105d064721b796d87a041ecfeed810243d0b6c7b3d279660d3f361634ddc481f841120b52f3861be526f46552aaed374876146ff147a028e574baf691807b59c48b1e84096f6f145e2c2274621776f32a1e8cfbc2778078dd50b18628465323e5dc4cfd7f96da49f4ccaa39ea9fded44d7081f7565c8bc0f40227abc40bb7649f0adc375096da49f4ccaa39ea9fded44d7081f7565c8bc0f40227abc40bb7649f0adc3750d8277df4c8d68e74f83bd58ba8b94a2718537ab6fc0a31b1bd578e9da3d9b6964ef9434e176daad58493324af5305b43b2eebcc5f901c91251d859f94852195a4ef9434e176daad58493324af5305b43b2eebcc5f901c91251d859f94852195a7d31fe0d400ad9a42aa87399bb85f02b0f107e8224a7956e88671a0355ae88111f7fa9204f3c989590d5404afa33eda9a5937d01eba09e5dead1bd8c9780a9221f7fa9204f3c989590d5404afa33eda9a5937d01eba09e5dead1bd8c9780a9224e5d320a6c34bea34f1746bf8a85d00cf77d6d8a3b52d8649c93b2282d3f64e6ff517361aaef83499ce5658ed938edfc346e3adb098f6dfe51a8217bce618255ff517361aaef83499ce5658ed938edfc346e3adb098f6dfe51a8217bce6182558b24c7cd67e4ba93352aea4a3afd17d7d0a7c05bc4e9d2105265b91940d28f67c559070a20abf91eac98fc46fb3cf2c0556941d3730f9ee62dbe5065ee05648fc559070a20abf91eac98fc46fb3cf2c0556941d3730f9ee62dbe5065ee05648f5ccd3fc356db47046ded0c041b4035c2d6ae459e53972908fe8aacb7458c44de43f927aef8dfad09a3b8c895bab2dd53551e9541bfc7d4c1fb38895206c9901f43f927aef8dfad09a3b8c895bab2dd53551e9541bfc7d4c1fb38895206c9901f1beaad785e59b21a9b784d4116c31b54e6138d98a4f5ba55123398a52a8a08ba074b3877e7e5e9ea9f3c9ab70eaf7176f7b1934ac69a64bb909b6d17454e8b52074b3877e7e5e9ea9f3c9ab70eaf7176f7b1934ac69a64bb909b6d17454e8b52e5d1e6a2d08ee3e35fb162c881b6bc73d3a87b403e92b01a7847eed37516e87e351a42ad25c67b7938238e89d4c5fa236e56d709afea6bc1f66d2e1c82c57666351a42ad25c67b7938238e89d4c5fa236e56d709afea6bc1f66d2e1c82c576669c78b6d0b1f41a33d7d04efa27de9b6f120d195ab4657e97b3557d2d9d69b2d4459aff189719e133a25776673c9c5ffee2d932893c8e538fcf2ed718e5f50ae1459aff189719e133a25776673c9c5ffee2d932893c8e538fcf2ed718e5f50ae1f88e0fb30fa0ab5d0dc3030442ed92713f34170336c4dd2623723dc34829df89318e74f6b14f4668093431e14f1336049d2342e83ba348266de97a9dbad8886e87a95c2492a85a333113642416e666e79d42c11c1e493eed4f28299b37123f4287a95c2492a85a333113642416e666e79d42c11c1e493eed4f28299b37123f429ba9f979dfd7ec5f82a4014fe0c839aa3076904f14498050e69af79894299b7fec9acd9ea64ad6ee6795b3db14d9393776dd5063f22698be5a1d15e9d284e0ecec9acd9ea64ad6ee6795b3db14d9393776dd5063f22698be5a1d15e9d284e0ecb63326878babe4bb3102c821add39922746b94b0334a78e22ef00647d45eb1a1de0beb10ffc3cb8b2adf44d3e404e94f012d3bc21ef745245da26b8d25494939de0beb10ffc3cb8b2adf44d3e404e94f012d3bc21ef745245da26b8d254949390cfdeeeadc50b94d3d599a708549d71332feeeca6f6757c1a19d0b6fff4c882ae7c15177d568d2d8913eb0d218e505ec452982e2c95422e5530cf5386ab7b3ece7c15177d568d2d8913eb0d218e505ec452982e2c95422e5530cf5386ab7b3ece6270c2efb4d1b77e88276c2afc1325b9817cd68c8cc71a98afcbff72ac70ed20885a0d44fe40d664d4d92d34dccd420257058b639b5bf77055ed3eb4d1dbcea0885a0d44fe40d664d4d92d34dccd420257058b639b5bf77055ed3eb4d1dbcea8e337755af548c7dfdb8b237d469a241109019f49b8f574f9ff53a1166c36440878d3457454da8262915830eff06457b8a5ad1b068129fc35e326f29248a1200878d3457454da8262915830eff06457b8a5ad1b068129fc35e326f29248a1200ecd580374d51e2ed1e0b4bd1269214eebf9aae2d7d54213040a9034dc471e8f2f361ca421ae11105d977c56f1bc3d13042cde22da4e10c57cf6492d503c6776df361ca421ae11105d977c56f1bc3d13042cde22da4e10c57cf6492d503c6776dd05ee2cbe1b243ff6d299683d6077bc940de43c1e42313e94863108debe587e11c48c24b1ab236b90faaea584713b582d25e2c3aa517d674a72f12e215c8182c1c48c24b1ab236b90faaea584713b582d25e2c3aa517d674a72f12e215c8182c8963ecfa7dca22827835e9aade13bf055ac04d9170a346a55a0f22945f2000d0af8c79e86ac2bd561fd8f5a4b825d30f4926ee22afa2f76bb2d36169ef5b2a01af8c79e86ac2bd561fd8f5a4b825d30f4926ee22afa2f76bb2d36169ef5b2a011d609492fcdb473230de2309f7767675962811d6b855f5d013040ad8be62b7573bef0d99ca7a39ed08c6bc549280fa9710f7f4b54df903dd36c603ccdda926d33bef0d99ca7a39ed08c6bc549280fa9710f7f4b54df903dd36c603ccdda926d307146d1dc8afa51062e31308a4082508dbffde14c7f7871bdc58e38975c183a480a45200a9cb75da3bf585d3c5247ee2690f2c766e4a4aed8fc173cff4d8f6c880a45200a9cb75da3bf585d3c5247ee2690f2c766e4a4aed8fc173cff4d8f6c8562d13ba5a1f9d8ff5ae5cc7d391272071412cda384217bca4440edf0a9084202ca36f069c6b99c2110b90e308bb5585d437391f63bcd93bb5fb93b549d594252ca36f069c6b99c2110b90e308bb5585d437391f63bcd93bb5fb93b549d59425b4928fd09e9e7209a234cc6d8d7551e940317b3f17a96db621695d30543ba9f1825ac1182564e131b09efd65e62e8a5a40383d12c9f8a7bd9a774e6b1c444af6825ac1182564e131b09efd65e62e8a5a40383d12c9f8a7bd9a774e6b1c444af6ffecdbd3f9ba0d71c6e59984f8384817f0fe5b0ac69ba62e1e40a31faf596a6c630a25b6f93762f8ec4d6b1b9a69a4f70d88c9dbde91925c45073937f74977971c05a4494e6738e5225149326b2359e7beff32094dfba7d72ae94c95f1592b9de0e31f8714ad9fa191e8d6a7999c9656d5d5b0c8f06dadace80c84ef8d84338fe0e31f8714ad9fa191e8d6a7999c9656d5d5b0c8f06dadace80c84ef8d84338fffb96214d4975050127530bc58f0326fc7dae119b9da01de5d49ddc2e08c15f915a3977f0d2c6a8e87db2ef7050ea10afb3a88b064bf5ef95439924e424641145013f7a6875bec61c30478ba35b9d34dea1662a81d61589a22e2baed81bd25e352266a613c7c9d2368a8a0212634c693e070c8ec9ee2d96d5bf95b7bb40a5b4d52266a613c7c9d2368a8a0212634c693e070c8ec9ee2d96d5bf95b7bb40a5b4dca13c01f83239d042a2a43d541176c637032e73aca10bd9b2ae761558f035d43b7f9403044b4693c05d081f5d79b842b9de4f1dd37c3904407906560c6c4908a7667920f545d0bb0ccb5bae12d130f9f52fca3e259b5486b4c1bdcb6c6f2bd9b43f3fdb0d3bb9a9d6968e722acb944c37e3b46a8f32eef39ffe582a6d8e7084543f3fdb0d3bb9a9d6968e722acb944c37e3b46a8f32eef39ffe582a6d8e7084570801546822d7300d72667225aa310b7dcdbb3bf5133c66e801e5b7dc4b9f8e1dc03d442b4d5c994d7565c1cb7dcdf856364a924d4cb34572c27489e77932ca3dc03d442b4d5c994d7565c1cb7dcdf856364a924d4cb34572c27489e77932ca3f188303acd1b5f5275a33fcd1883de537fd35ed886ec610e971331a58da2ed538e122b7b71285ff8a7adf8c8099d0f6c2d852f3892ca29c9d9d4722b53aa57b98e122b7b71285ff8a7adf8c8099d0f6c2d852f3892ca29c9d9d4722b53aa57b929082169d71910d4e09cb76b6cb578c6011ccba4c1c86f6f23db814a72ba58626a0ada8e8388b3b4e88f88c2e155fee1e036ac43dc59b7f430fc60a240a98b4c6a0ada8e8388b3b4e88f88c2e155fee1e036ac43dc59b7f430fc60a240a98b4c080bfa30a9672749d9d8aa7296ec165c339b81d338c846ec3b8f1f491ceab2e259edd9ce5e2bc528433ab3734949f9f7add63a0de90953c41e68f38aa1da9b6e59edd9ce5e2bc528433ab3734949f9f7add63a0de90953c41e68f38aa1da9b6e9f6183a68b2b3a980cb18b5516c35baf81f4e5bbfd67e77fb6919942b260ad63fa769fbde85986f675f6304a73511207ab6ad2e9c1a08169fe1fb1c525e85b87fa769fbde85986f675f6304a73511207ab6ad2e9c1a08169fe1fb1c525e85b87f18ff1d8e6693e36ba442f343ee823038a9a91bf33f5640665b993f509c36255dfb3dea8536448ca677c6a48fc8339a5433503eb5ea577588a0627f86017abb6dfb3dea8536448ca677c6a48fc8339a5433503eb5ea577588a0627f86017abb63bf0211c1a60483a99fcfaa61c163b1fa8cf4fca8bbda294102763e47dcc2fc47a59ac3bf658bd5f2f7a7436dfca45f44e53772fceaf20eaab017cda1397d6a47a59ac3bf658bd5f2f7a7436dfca45f44e53772fceaf20eaab017cda1397d6a4b09f5b109cafb693758cea77ea3a7d24e5849aa891a672ab21d598ff04ac7a1341379c5c664f1fe8eefbb34cef2336ea1ea1ddf11f5f6bd0c0f688dd8797e4dd41379c5c664f1fe8eefbb34cef2336ea1ea1ddf11f5f6bd0c0f688dd8797e4dd630dd2206a4ffe5b8b194e0e674a8ff4808a31a65f412bfd62387a09a05685bb3eaea0f8ab044afa1f5d13ed6c0e4ffac7d493fa93b8b0c5f3fe742b898df0a03eaea0f8ab044afa1f5d13ed6c0e4ffac7d493fa93b8b0c5f3fe742b898df0a06e8c706653671c627bca47ca3751ed3e73279bcc888eb39d5fffbd25f0bb0da776ceacc3328892435ea8733e8a8cabe1b1d1667ace5dc2f625df9023e918334576ceacc3328892435ea8733e8a8cabe1b1d1667ace5dc2f625df9023e918334595320c34909ab5b53edebc454bd1c10cf00e489944171be3514532252f1197761a52326477ff90f9e743c3179d2d70c05c6b3ba21d6a96bbe75f682f7837e5611a52326477ff90f9e743c3179d2d70c05c6b3ba21d6a96bbe75f682f7837e5612435f6d51ad27e1a096cb193d4a2809c7806e243269e788cb383ff49afd6375b8515bb7bfef2be01cac2b5299669f40ec172dd29f285c745fb848f55397d537d8515bb7bfef2be01cac2b5299669f40ec172dd29f285c745fb848f55397d537df72ce58dbb0ece4b2d4fa3f81c50bef1bfea7b89b8e7043907d8d5a39b4acde5e45481ef3f32087411e50e9e07f384e51e15e57e41a41dcc5e20c6e9cddb9c61e45481ef3f32087411e50e9e07f384e51e15e57e41a41dcc5e20c6e9cddb9c61106176ab4686f13c09b5fba64f91e3c0e2006954b1d38ac1bbb6e94cf3af6486b179320207b8cbea842ebae065e0754ea1ad8b73ad17ee313ff506bbfe87509eb179320207b8cbea842ebae065e0754ea1ad8b73ad17ee313ff506bbfe87509efd5372282f97eed305c94cd36ed2042ae157e14470a31355c304db295328e5b208e7c631c07fcf60aebffcc6ba0dc07be4107d72e288cc59bbf9d3a2606684cd08e7c631c07fcf60aebffcc6ba0dc07be4107d72e288cc59bbf9d3a2606684cdb4553759e7941625bb83083e17810e1a3f950f31ae6d94037873c9302572607a8ebc5cf7a1e1138394fdb407b6f82770a9817c363cddec2d3d3ea43517f529608ebc5cf7a1e1138394fdb407b6f82770a9817c363cddec2d3d3ea43517f52960be656645a0aa1d7578a11dbfd6985094b6bfdcbdfcf40d4bf48f4924b3bfb89b61acbe98174d295f3b24cc247a7066ec0705eba7c0810c09ff7895c7dc4816a761acbe98174d295f3b24cc247a7066ec0705eba7c0810c09ff7895c7dc4816a76d1616aabe21b118f7881202fb11b825bf2ab7d5e12651e75bbc36f4f68eee2b0aec915d7e2554cd8167465b5cd75fd5246f6bab03a5e7746ac7ffe557e7d48b0aec915d7e2554cd8167465b5cd75fd5246f6bab03a5e7746ac7ffe557e7d48b516a23b27c2e2f063535f2f878b5f8e6b44762955fe0ffe63e833476d172f368d644501ac22074a38ac61c42676ce4ddaae49304fd191a42e69ba589a0927cd3d644501ac22074a38ac61c42676ce4ddaae49304fd191a42e69ba589a0927cd3d8f7dc682ad8cbc6960cc4ab8d7bbc50e3b7b7af07c41c20e668aaaf35f1f8ea1641ceb5cda017cc90a6eee264c8dc249a36dfb4c3449b43ddbdb191583e2b161641ceb5cda017cc90a6eee264c8dc249a36dfb4c3449b43ddbdb191583e2b169ad085b1826dbddb85fd854190192d5d2ee3026be7a279ed08cc56aeb57a94b139e9c324290346cf27ee0ffe3d365bbe871a16f528f82a4eb36fc80ce77d167439e9c324290346cf27ee0ffe3d365bbe871a16f528f82a4eb36fc80ce77d16748e76c888a9a5d2e625e709008e85fa8332ed98aec468c7f22f04197f8c34608639c91168b94fcfc22926a47ec035ded033bab0c72421b95c2fe6a1224636d8ae39c91168b94fcfc22926a47ec035ded033bab0c72421b95c2fe6a1224636d8aedc5b655bbc0b742f403173499cd29c1928927439a193506833b1ee5df14ec8db159f47faaf60018843f9cc874dbbb7ccdcd32c57d85638cf3ca61e32291b987c159f47faaf60018843f9cc874dbbb7ccdcd32c57d85638cf3ca61e32291b987c54854231e1411d0420ec65445242ab876b99f371f1b317885d9a480c3e8f5c41af52ea88aac6a8afcf8edda71b79705afb4e7c1f839609c9851d43ce10ed513baf52ea88aac6a8afcf8edda71b79705afb4e7c1f839609c9851d43ce10ed513b02fac1b063673cabb30180460745fa67758f1830a8ed0bea8de250d668055f1398ee42b3d2a3595f4724da28911280686f1141b1d1bc99e17a718a63a61b56d298ee42b3d2a3595f4724da28911280686f1141b1d1bc99e17a718a63a61b56d2a9e59a629d4ee97cc7223a074d78887c16aea625760652960f61fedad2c3583f031a30b4ce5495727f4f8d89e081fafb14cdb0efa86cc79ed2546b3a6fabc4c4031a30b4ce5495727f4f8d89e081fafb14cdb0efa86cc79ed2546b3a6fabc4c4106ba4e8ae1ee7c4c780f2f23526147d80a372be0f5f289425af6dd05eb3e7824424e59a01c9c987b5bae91f1d35a707fe89368fab7e6e310cc76cd5efc33da64424e59a01c9c987b5bae91f1d35a707fe89368fab7e6e310cc76cd5efc33da60e7592d2e6ee0838e408ec43a9c1ac4cc37d19af859e17f9b3d698424688e4e9850bf78b1c1c1b6b6663447923c2a05f4876e3e6bfd26ac27477e1c3275de668ab9d64784ad4c52e9283d85e4295a7705632673d2f45849df05d1eb66716734eea1db3464072e9b70baa5c940bd0b9d30180c0ea21f72681e749a2efb9485674b2fa66c47793520fdfc5a48adb00ca293e53685e665eaeb81637997766adacd2b5e05b579afab5dccc064230d75f91e91c72bf44079e16135d2d585a543761809ee08c2fe1f88be79aa8578d36a779f600a86549c5b1711c8a43600ccca687db8a56888b75b68d73e4118ed404c632133e7c9df9cda7b1095fa0497e12984a5ffe3f19de43ff81a69fbccf5af1366497eb022be076e717a7912798696a6bf4d513ab20e0c42f5c0f2ff10334436b310208080949a20283dbd1f92e124cbeb253a4cee0de2d42d06e94132eccd9bdf731c60c77713c436b60dd458a4099d3a11aa4cee0de2d42d06e94132eccd9bdf731c60c77713c436b60dd458a4099d3a11a32c07432df422e856420d31a461cefa0d28a6f8e03bc58189873e6eda61f5751e23d738bed7928c6a0c381d1b3da30efa446234a16d8a9bc4881ce95e07da6b6e23d738bed7928c6a0c381d1b3da30efa446234a16d8a9bc4881ce95e07da6b6faa2bd4db391d2fb44828da3f865ccd3bbb8a8300c31ff7081db8310c5b1d650f8d8896b5a64164249bc8c2875bf4bd854d2acaaad9c526abc5cfc48f17c7957d77d55936a0e60586102820034a6222cd4687f0c61b3f41cf121a45ec2bc46064d4a20c039b4fdcfb7a242eb932675b32a6200700eea0bc23891dc8689979a7bf88e0fb30fa0ab5d0dc3030442ed92713f34170336c4dd2623723dc34829df89ffecdbd3f9ba0d71c6e59984f8384817f0fe5b0ac69ba62e1e40a31faf596a6c26999728e6eefa83b486188a3af6900a464741307e7e4fbe4c6bb030eb7650424a404d5bcb1109a33329f0e099fa8c07a8b02401da4e531bbc6de733a90e45aaf9b54f0a6c4a21daea6f41263e8df267367f5b491094bea56179a9c3b4ebd65a5a1f4e4d0f2f0ff28b47955356a6767cc24b9e09f2eeaf1f69a18a332b7bffe4/etc/idle/config-extensions.def/etc/idle/config-highlight.def/etc/idle/config-keys.def/etc/idle/config-main.defrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootpython-2.7.18-150000.77.1.src.rpmapplication()application(idle.desktop)config(python-idle)mimehandler(text/x-python)python-idlepython-idle(aarch-64)python2-idle@@@     /usr/bin/python/usr/bin/python2.7config(python-idle)python(abi)python-basepython-tkrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PartialHardlinkSets)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)2.7.18-150000.77.12.72.7.183.0.4-14.6.0-14.0.4-14.0-15.2-14.14.1gw@g@g@g4f@fH@f?]fh@e,e @eedeeeRd˖dD@dq@du@dtdm@dxdc>@cӼc0c|ck@c pcbbb@b@b@ba@a@a(@aim@aI@a'@a#aj@a`t`8`_T^J^@^@^>^>^;^8 @^.^g@^ @]f@]@]]]d@]d@]@]z@]V]y@]9]1]\t@\\7\7\\J@\J@\C@\2[[#@[6@[@[ @[Za@Z@ZxG@ZtRZp^@Z, gh#python/cpython#103848#issuecomment-2708135083).- Modify CVE-2025-0938-sq-brackets-domain-names.patch: we don't use bracketed_host variable any more (correction of the fix for bsc#1236705, discovered during analysis for bsc#1223694).- Add CVE-2025-0938-sq-brackets-domain-names.patch which disallows square brackets ([ and ]) in domain names for parsed URLs (bsc#1236705, CVE-2025-0938, gh#python/cpython#105704)- Add CVE-2024-11168-validation-IPv6-addrs.patch fixing bsc#1233307 (CVE-2024-11168, gh#python/cpython#103848): Improper validation of IPv6 and IPvFuture addresses. - Add ipaddress module from https://github.com/phihag/ipaddress - Remove -IVendor/ from python-config boo#1231795- Stop using %%defattr, it seems to be breaking proper executable attributes on /usr/bin/ scripts (bsc#1227378).- bsc#1221854 (CVE-2024-0450) Add CVE-2024-0450-zipfile-avoid-quoted-overlap-zipbomb.patch detecting the vulnerability of the "quoted-overlap" zipbomb (from gh#python/cpython!110016).- Switch to using the system libexpat (bsc#1219559, CVE-2023-52425) - Make sure to remove all embedded versions of other packages (including expat). - Add CVE-2023-52425-libexpat-2.6.0-remove-failing-tests.patch removing failing test fixing bpo#3151, which we just not support. - Remove patches over those embedded packages (cffi): - python-2.7-libffi-aarch64.patch - sparc_longdouble.patch- Modify CVE-2023-27043-email-parsing-errors.patch to fix the unicode string handling in email.utils.parseaddr() (bsc#1222537). - Revert CVE-2022-48560-after-free-heappushpop.patch, the fix was unneeded.- Switch off tests. ONLY FOR FACTORY!!! (bsc#1219306)- Build with -std=gnu89 to build correctly with gcc14, bsc#1220970- Add CVE-2023-27043-email-parsing-errors.patch to gh#python/cpython!111116, fixing bsc#1210638 (CVE-2023-27043).- Add CVE-2022-48560-after-free-heappushpop.patch fixing use-after-free in Python via heappushpop in heapq (bsc#1214675, CVE-2022-48560). - switch from %patchN style to the %patch -P N one.- (bsc#1214691, CVE-2022-48566) Add CVE-2022-48566-compare_digest-more-constant.patch to make compare_digest more constant-time. - Allow nis.so for SLE-12.- (bsc#1214685, CVE-2022-48565) Add CVE-2022-48565-plistlib-XML-vulns.patch (from gh#python/cpython#86217) reject XML entity declarations in plist files. - Remove BOTH CVE-2023-27043-email-parsing-errors.patch and Revert-gh105127-left-tests.patch (as per discussion on bsc#1210638).- Add CVE-2023-40217-avoid-ssl-pre-close.patch fixing gh#python/cpython#108310, backport from upstream patch gh#python/cpython#108315 (bsc#1214692, CVE-2023-40217)- IT MEANS THAT bsc#1210638 STILL HAS NOT BEEN FIXED! - Add Revert-gh105127-left-tests.patch (gh#python/cpython!106941) partially reverting CVE-2023-27043-email-parsing-errors.patch, because of the regression in gh#python/cpython#106669.- (bsc#1210638, CVE-2023-27043) Add CVE-2023-27043-email-parsing-errors.patch, which detects email address parsing errors and returns empty tuple to indicate the parsing error (old API).- Fix the application of the python-2.7.17-switch-off-failing-SSL-tests.patch.- python-2.7.5-multilib.patch: Update for riscv64 - Don't fail if _ctypes or dl extension was not built- The condition around libnsl-devel BuildRequires is NOT switching off NIS support on SLE < 15, support for NIS used to be in the glibc itself. Partial revert of sr#1061583.- Add PygmentsBridge-trime_doctest_flags.patch to allow build of the documentation even with the current Sphinx. (SUSE-ONLY PATCH, DO NOT SEND UPSTREAM!)- Enable --with-system-ffi for non-standard architectures.- SLE-12 builds nis.so as well.- Add CVE-2023-24329-blank-URL-bypass.patch (CVE-2023-24329, bsc#1208471) blocklists bypass via the urllib.parse component when supplying a URL that starts with blank characters- Disable NIS for new products, it's deprecated and gets removed- Add skip_unverified_test.patch because apparently switching off SSL verification doesn't work on older SLE.- Restore python-2.7.9-sles-disable-verification-by-default.patch for SLE-12.- 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 bpo34990-2038-problem-compileall.patch making compileall.py compliant with year 2038 (bsc#1202666, gh#python/cpython#79171), backport of fix to Python 2.7.- Add patch CVE-2021-28861-double-slash-path.patch: * BaseHTTPServer: Fix an open redirection vulnerability in the HTTP server when an URI path starts with //. (bsc#1202624, CVE-2021-28861)- 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.- Filter out executable-stack error that is triggered for i586 target.- Update bundled pip wheel to the latest SLE version patched against bsc#1186819 (CVE-2021-3572). - Recover again proper value of %python2_package_prefix (bsc#1175619).- 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.- Older SLE versions should use old OpenSSL.- Add CVE-2022-0391-urllib_parse-newline-parsing.patch (bsc#1195396, CVE-2022-0391, bpo#43882) sanitizing URLs containing ASCII newline and tabs in urlparse.- Add CVE-2021-4189-ftplib-trust-PASV-resp.patch (bsc#1194146, bpo#43285, CVE-2021-4189, gh#python/cpython#24838) make ftplib not trust the PASV response.- build against openssl 1.1.x (incompatible with openssl 3.0x) for now.- on sle12, python2 modules will still be called python-xxxx until EOL, for newer SLE versions they will be python2-xxxx- 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.- 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. - Provide the newest setuptools wheel (bsc#1176262, CVE-2019-20916) in their correct form (bsc#1180686). - Add CVE-2020-26116-httplib-header-injection.patch fixing bsc#1177211 (CVE-2020-26116, bpo#39603) no longer allowing special characters in the method parameter of HTTPConnection.putrequest in httplib, stopping injection of headers. Such characters now raise ValueError.- Renamed patch for assigned CVE: * bpo44022-fix-http-client-infinite-line-reading-after-a-HTTP-100-Continue.patch -> CVE-2021-3737-fix-HTTP-client-infinite-line-reading-after-a-HTTP-100-Continue.patch (boo#1189241, CVE-2021-3737)- Renamed patch for assigned CVE: * bpo43075-fix-ReDoS-in-request.patch -> CVE-2021-3733-fix-ReDoS-in-request.patch (boo#1189287, CVE-2021-3733) - Fix python-doc build (bpo#35293): * sphinx-update-removed-function.patch - Update documentation formatting for Sphinx 3.0 (bpo#40204).- Add bpo43075-fix-ReDoS-in-request.patch which fixes ReDoS in request (bpo#43075, boo#1189287). - Add missing security announcement to bpo44022-fix-http-client-infinite-line-reading-after-a-HTTP-100-Continue.patch.- Add bpo44022-fix-http-client-infinite-line-reading-after-a-HTTP-100-Continue.patch which fixes http client infinite line reading (DoS) after a http 100 (bpo#44022, boo#1189241).- Modify Lib/ensurepip/__init__.py to contain the same version numbers as are in reality the ones in the bundled wheels (bsc#1187668).- Add CVE-2021-23336-only-amp-as-query-sep.patch which forbids use of semicolon as a query string separator (bpo#42967, bsc#1182379, CVE-2021-23336).- 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.- Add patch configure_PYTHON_FOR_REGEN.patch which makes configure.ac to consider the correct version of PYTHON_FO_REGEN (bsc#1078326).- Use python3-Sphinx on anything more recent than SLE-15 (inclusive).- Update to 2.7.18, final release of Python 2. Ever.: - Newline characters have been escaped when performing uu encoding to prevent them from overflowing into to content section of the encoded file. This prevents malicious or accidental modification of data during the decoding process. - Fixes a ReDoS vulnerability in `http.cookiejar`. Patch by Ben Caller. - Fixed line numbers and column offsets for AST nodes for calls without arguments in decorators. - bsc#1155094 (CVE-2019-18348) Disallow control characters in hostnames in http.client. Such potentially malicious header injection URLs now cause a InvalidURL to be raised. - Fix urllib.urlretrieve failing on subsequent ftp transfers from the same host. - Fix problems identified by GCC's -Wstringop-truncation warning. - AddRefActCtx() was needlessly being checked for failure in PC/dl_nt.c. - Prevent failure of test_relative_path in test_py_compile on macOS Catalina. - Fixed possible leak in `PyArg_Parse` and similar functions for format units "es#" and "et#" when the macro `PY_SSIZE_T_CLEAN` is not defined. - Remove upstreamed patches: - CVE-2019-18348-CRLF_injection_via_host_part.patch - python-2.7.14-CVE-2017-1000158.patch - CVE-2018-14647_XML_SetHashSalt-in_elementtree.patch - CVE-2018-1061-DOS-via-regexp-difflib.patch - CVE-2019-10160-netloc-port-regression.patch - CVE-2019-16056-email-parse-addr.patch- Add CVE-2019-9674-zip-bomb.patch to improve documentation warning about dangers of zip-bombs and other security problems with zipfile library. (bsc#1162825 CVE-2019-9674)- Change to Requires: libpython%{so_version} == %{version}-%{release} to python-base to keep both packages always synchronized (add %{so_version}) (bsc#1162224).- 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)- Provide python-testsuite from devel subkg to ease py2->py3 dependencies- Add python-2.7.17-switch-off-failing-SSL-tests.patch to switch off tests coliding with the combination of modern Python and ancient OpenSSL on SLE-12.- libnsl is required only on more recent SLEs and openSUSE, older glibc supported NIS on its own.- Add provides in gdbm subpackage to provide dbm symbols. This allows us to use %%{python_module dbm} as a dependency and have it properly resolved for both python2 and python3- Drop appstream-glib BuildRequires and no longer call appstream-util validate-relax: eliminate a build cycle between as-glib and python. The only thing would would gain by calling as-uril is catching if upstream breaks the appdata.xml file in a future release. Considering py2 is dying, chances for a new release, let alone one breaking the xml file, are slim.- Unify packages among openSUSE:Factory and SLE versions. (bsc#1159035) ; add missing records to this changelog. - Add idle.desktop and idle.appdata.xml to provide IDLE in menus (bsc#1153830)- Add python2_split_startup Provide to make it possible to conflict older packages by shared-python-startup.- Move /etc/pythonstart script to shared-python-startup package.- Add bpo-36576-skip_tests_for_OpenSSL-111.patch (originally from bpo#36576) skipping tests failing with OpenSSL 1.1.1. Fixes bsc#1149792- Add adapted-from-F00251-change-user-install-location.patch fixing pip/distutils to install into /usr/local.- Update to 2.7.17: - a bug fix release in the Python 2.7.x series. It is expected to be the penultimate release for Python 2.7. - Removed patches included upstream: - CVE-2018-20852-cookie-domain-check.patch - CVE-2019-16935-xmlrpc-doc-server_title.patch - CVE-2019-9636-netloc-no-decompose-characters.patch - CVE-2019-9947-no-ctrl-char-http.patch - CVE-2019-9948-avoid_local-file.patch - python-2.7.14-CVE-2018-1000030-1.patch - python-2.7.14-CVE-2018-1000030-2.patch - Renamed remove-static-libpython.diff and python-bsddb6.diff to remove-static-libpython.patch and python-bsddb6.patch to unify filenames.- Add CVE-2019-16935-xmlrpc-doc-server_title.patch fixing bsc#1153238 (aka CVE-2019-16935) fixing a reflected XSS in python/Lib/DocXMLRPCServer.py- Add bpo36302-sort-module-sources.patch (boo#1041090)- Add CVE-2019-16056-email-parse-addr.patch fixing the email module wrongly parses email addresses [bsc#1149955, CVE-2019-16056]- boo#1141853 (CVE-2018-20852) add CVE-2018-20852-cookie-domain-check.patch fixing http.cookiejar.DefaultPolicy.domain_return_ok which did not correctly validate the domain: it could be tricked into sending cookies to the wrong server.- Skip test_urllib2_localnet that randomly fails in OBS- bsc#1138459: add CVE-2019-10160-netloc-port-regression.patch which fixes regression introduced by the previous patch. (CVE-2019-10160) Upstream gh#python/cpython#13812- Set _lto_cflags to nil as it will prevent to propage LTO for Python modules that are built in a separate package.- 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.- bsc#1130847 (CVE-2019-9948) add CVE-2019-9948-avoid_local-file.patch removing unnecessary (and potentially harmful) URL scheme local-file://.- bsc#1129346: add CVE-2019-9636-netloc-no-decompose-characters.patch Characters in the netloc attribute that decompose under NFKC normalization (as used by the IDNA encoding) into any of ``/``, ``?``, ``#``, ``@``, or ``:`` will raise a ValueError. If the URL is decomposed before parsing, or is not a Unicode string, no error will be raised (CVE-2019-9636). Upstream commits e37ef41 and 507bd8c.- (bsc#1111793) Update to 2.7.16: * bugfix-only release: complete list of changes on https://github.com/python/cpython/blob/2.7/Misc/NEWS.d/2.7.16rc1.rst * Removed openssl-111.patch and CVE-2018-1000802-shutil_use_subprocess_no_spawn.patch which are fully included in the tarball. * Updated patches to apply cleanly: CVE-2019-5010-null-defer-x509-cert-DOS.patch bpo36160-init-sysconfig_vars.patch do-not-use-non-ascii-in-test_ssl.patch openssl-111-middlebox-compat.patch openssl-111-ssl_options.patch python-2.5.1-sqlite.patch python-2.6-gettext-plurals.patch python-2.7-dirs.patch python-2.7.2-fix_date_time_compiler.patch python-2.7.4-canonicalize2.patch python-2.7.5-multilib.patch python-2.7.9-ssl_ca_path.patch python-bsddb6.diff remove-static-libpython.patch * Update python-2.7.5-multilib.patch to pass with new platlib regime.- bsc#1109847 (CVE-2018-14647): add CVE-2018-14647_XML_SetHashSalt-in_elementtree.patch fixing bpo-34623.- bsc#1073748: add bpo-29347-dereferencing-undefined-pointers.patch PyWeakref_NewProxy@Objects/weakrefobject.c creates new isntance of PyWeakReference struct and does not intialize wr_prev and wr_next of new isntance. These pointers can have garbage and point to random memory locations. Python should not crash while destroying the isntance created in the same interpreter function. As per my understanding, both wr_prev and wr_next of PyWeakReference instance should be initialized to NULL to avoid segfault.- bsc#1122191: add CVE-2019-5010-null-defer-x509-cert-DOS.patch fixing bpo-35746 (CVE-2019-5010). 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.- Use upstream-recommended %{_rpmconfigdir}/macros.d directory for the rpm macros.- Add patch openssl-111.patch to work with openssl-1.1.1 (bsc#1113755)- Apply "CVE-2018-1000802-shutil_use_subprocess_no_spawn.patch" which converts shutil._call_external_zip to use subprocess rather than distutils.spawn. [bsc#1109663, CVE-2018-1000802]- Apply "CVE-2018-1061-DOS-via-regexp-difflib.patch" to prevent low-grade poplib REDOS (CVE-2018-1060) and to prevent difflib REDOS (CVE-2018-1061). Prior to this patch mail server's timestamp was susceptible to catastrophic backtracking on long evil response from the server. Also, it was susceptible to catastrophic backtracking, which was a potential DOS vector. [bsc#1088004 and bsc#1088009, CVE-2018-1061 and CVE-2018-1060]- Apply "CVE-2017-18207.patch" to add a check to Lib/wave.py that verifies that at least one channel is provided. Prior to this check, attackers could cause a denial of service (divide-by-zero error and application crash) via a crafted wav format audio file. [bsc#1083507, CVE-2017-18207]- Apply "python-sorted_tar.patch" (bsc#1086001, boo#1081750) sort tarfile output directory listing- update to 2.7.15 * dozens of bugfixes, see NEWS for details - removed obsolete patches: * python-ncurses-6.0-accessors.patch * python-fix-shebang.patch * gcc8-miscompilation-fix.patch - add patch from upstream: * do-not-use-non-ascii-in-test_ssl.patch- Add gcc8-miscompilation-fix.patch (boo#1084650).- Apply "python-2.7.14-CVE-2017-1000158.patch" to prevent integer overflows in PyString_DecodeEscape that could have resulted in heap-based buffer overflow attacks and possible arbitrary code execution. [bsc#1068664, CVE-2017-1000158]- exclude test_socket & test_subprocess for PowerPC boo#1078485 (same ref as previous change)- Add python-skip_random_failing_tests.patch bypass boo#1078485 and exclude many tests for PowerPC- Add patch python-fix-shebang.patch to fix bsc#1078326- exclude test_regrtest for s390, where it does not segfault as it should (fixes bsc#1073269) - fix segfault while creating weakref - bsc#1073748, bpo#29347 (this is actually fixed by the 2.7.14 update; mentioning this for purposes of bugfix tracking)- update to 2.7.14 * dozens of bugfixes, see NEWS for details * fixed possible integer overflow in PyString_DecodeEscape (CVE-2017-1000158, bsc#1068664) * fixed segfaults with dict mutated during search * fixed possible free-after-use problems with buffer objects with custom indexing * fixed urllib.splithost to correctly parse fragments (bpo-30500) - drop upstreamed python-2.7.13-overflow_check.patch - drop unneeded python-2.7.12-makeopcode.patch - drop upstreamed 0001-2.7-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-3094.patch - Apply "python-2.7.14-CVE-2018-1000030-1.patch" and "python-2.7.14-CVE-2018-1000030-2.patch" to remedy a bug that would crash the Python interpreter when multiple threads used the same I/O stream concurrently. This issue is not classified as a security vulnerability due to the fact that an attacker must be able to run code, however in some situations -- such as function as a service -- this vulnerability can potentially be used by an attacker to violate a trust boundary. [bsc#1079300, CVE-2018-1000030]- Call python2 instead of python in macros- Fix test broken with OpenSSL 1.1 (bsc#1042670) * add 0001-2.7-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-3094.patch- drop SUSE_ASNEEDED=0 as it is not needed anymore- Add libnsl-devel build requires for glibc obsoleting libnsl- obsolete/provide python-argparse and provide python2-argparse, because the argparse module is available from python 2.7 up- SLE package update (bsc#1027282) - refresh python-2.7.5-multilib.patch - dropped upstreamed patches: python-fix-short-dh.patch python-2.7.7-mhlib-linkcount.patch python-2.7-urllib2-localnet-ssl.patch CVE-2016-0772-smtplib-starttls.patch CVE-2016-5699-http-header-injection.patch CVE-2016-5636-zipimporter-overflow.patch python-2.7-httpoxy.patch - Add python-ncurses-6.0-accessors.patch: Fix build with NCurses 6.0 and OPAQUE_WINDOW set to 1. (dimstar@opensuse.org)- Add reproducible.patch to allow reproducible builds of various python packages like python-amqp Upstream: https://github.com/python/cpython/pull/296- update to 2.7.13 * dozens of bugfixes, see NEWS for details * updated cipher lists for openssl wrapper, support openssl >= 1.1.0 * properly fix HTTPoxy (CVE-2016-1000110) * profile-opt build now applies PGO to modules as well - update python-2.7.10-overflow_check.patch with python-2.7.13-overflow_check.patch, incorporating upstream changes (bnc#964182) - add "-fwrapv" to optflags explicitly because upstream code still relies on it in many places- provide python2-* symbols, for support of new packages built as python2-foo - rename macros.python to macros.python2 accordingly - require python-rpm-macros package, drop macro definitions from macros.python2- initial packaging of `python27` side-by-side variant (fate#321075, bsc#997436) - renamed `python` to `python27` in package names and requires - removed Provides and Obsoletes clauses - dropped SLE12-only patch python-2.7.9-sles-disable-verification-by-default.patch, companion sle_tls_checks_policy.py file and the python-strict-tls-checks subpackage - dropped profile files - removed /usr/bin/python and /usr/bin/python2, along with other unversioned aliases - rewrote macros file to enable stand-alone packages depending on py2.7 - re-included downloaded version of HTML documentation- update to 2.7.12 * dozens of bugfixes, see NEWS for details * fixes multiple security issues: CVE-2016-0772 TLS stripping attack on smtplib (bsc#984751) CVE-2016-5636 zipimporter heap overflow (bsc#985177) CVE-2016-5699 httplib header injection (bsc#985348) (this one is actually fixed since 2.7.10) - removed upstreamed python-2.7.7-mhlib-linkcount.patch - refreshed multilib patch - python-2.7.12-makeopcode.patch - run newly-built python interpreter to make opcodes, in order not to require pre-built python - update LD_LIBRARY_PATH to use $PWD instead of "." because the test process escapes to its own directory - modify shebang-fixing scriptlet to ignore makeopcodetargets.py- CVE-2016-0772-smtplib-starttls.patch: smtplib vulnerability opens startTLS stripping attack (CVE-2016-0772, bsc#984751) - CVE-2016-5636-zipimporter-overflow.patch: heap overflow when importing malformed zip files (CVE-2016-5636, bsc#985177) - CVE-2016-5699-http-header-injection.patch: incorrect validation of HTTP headers allow header injection (CVE-2016-5699, bsc#985348) - python-2.7-httpoxy.patch: HTTPoxy vulnerability in urllib, fixed by disregarding HTTP_PROXY when REQUEST_METHOD is also set (CVE-2016-1000110, bsc#989523)- Add python-2.7.10-overflow_check.patch to fix broken overflow checks. [bnc#964182]- copy strict-tls-checks subpackage from SLE to retain future compatibility (not built in openSUSE) - do this properly to fix bnc#945401 - update SLE check to exclude Leap which also has version 1315, just to be sure- Add python-ncurses-6.0-accessors.patch: Fix build with NCurses 6.0 and OPAQUE_WINDOW set to 1.- add missing ssl.pyc and ssl.pyo to package - implement python-strict-tls-checks subpackage * when present, Python will perform TLS certificate checking by default. it is possible to remove the package to turn off the checks for compatibility with legacy scripts. * as discussed in fate#318300 * this is not built for openSUSE, but retained here in case we want to build the package for a SLE system- python-fix-short-dh.patch: Bump DH parameters to 2048 bit to fix logjam security issue. bsc#935856- add __python2 compatibility macro (used by Fedora) (fate#318838)- update to 2.7.10 - removed obsolete python-2.7-urllib2-localnet-ssl.patch- Reenable test_posix on aarch64- python-2.7.4-aarch64.patch: Remove obsolete patch - python-2.7-libffi-aarch64.patch: Fix argument passing in libffi for aarch64- update to 2.7.9 * contains full backport of ssl module from Python 3.4 (PEP466) * HTTPS certificate validation enabled by default (PEP476) * SSLv3 disabled by default (bnc#901715) * backported ensurepip module (PEP477) * fixes several missing CVEs from last release: CVE-2013-1752, CVE-2013-1753 * dozens of minor bugfixes - dropped upstreamed patches: python-2.7.6-poplib.patch, smtplib_maxline-2.7.patch, xmlrpc_gzip_27.patch - dropped patch python-2.7.3-ssl_ca_path.patch because we don't need it with ssl module from Python 3 - libffi was upgraded upstream, seems to contain our changes, so dropping libffi-ppc64le.diff as well - python-2.7-urllib2-localnet-ssl.patch - properly remove unconditional "import ssl" from test_urllib2_localnet that caused it to fail without ssl- skip test_thread in qemu_linux_user modeh04-armsrv2 1741854169  !"##%&&())+,-./01224557899;<<>?@ABCDEFGHIJKLMNNPQRSTTVWXXZ[[]^^`aacdefghijklmnopqqsttvwwyzz|}}       !""$%%'()*+,-./012.7.18-150000.77.12.7.18-150000.77.12.7.18-150000.77.12.7.18 idleconfig-extensions.defconfig-highlight.defconfig-keys.defconfig-main.defidleidlelibAutoComplete.pyAutoComplete.pycAutoComplete.pyoAutoCompleteWindow.pyAutoCompleteWindow.pycAutoCompleteWindow.pyoAutoExpand.pyAutoExpand.pycAutoExpand.pyoBindings.pyBindings.pycBindings.pyoCREDITS.txtCallTipWindow.pyCallTipWindow.pycCallTipWindow.pyoCallTips.pyCallTips.pycCallTips.pyoChangeLogClassBrowser.pyClassBrowser.pycClassBrowser.pyoCodeContext.pyCodeContext.pycCodeContext.pyoColorDelegator.pyColorDelegator.pycColorDelegator.pyoDebugger.pyDebugger.pycDebugger.pyoDelegator.pyDelegator.pycDelegator.pyoEditorWindow.pyEditorWindow.pycEditorWindow.pyoFileList.pyFileList.pycFileList.pyoFormatParagraph.pyFormatParagraph.pycFormatParagraph.pyoGrepDialog.pyGrepDialog.pycGrepDialog.pyoHISTORY.txtHyperParser.pyHyperParser.pycHyperParser.pyoIOBinding.pyIOBinding.pycIOBinding.pyoIconsfolder.gifidle.icnsidle.icoidle_16.gifidle_16.pngidle_32.gifidle_32.pngidle_48.gifidle_48.pngminusnode.gifopenfolder.gifplusnode.gifpython.giftk.gifIdleHistory.pyIdleHistory.pycIdleHistory.pyoMultiCall.pyMultiCall.pycMultiCall.pyoMultiStatusBar.pyMultiStatusBar.pycMultiStatusBar.pyoNEWS.txtObjectBrowser.pyObjectBrowser.pycObjectBrowser.pyoOutputWindow.pyOutputWindow.pycOutputWindow.pyoParenMatch.pyParenMatch.pycParenMatch.pyoPathBrowser.pyPathBrowser.pycPathBrowser.pyoPercolator.pyPercolator.pycPercolator.pyoPyParse.pyPyParse.pycPyParse.pyoPyShell.pyPyShell.pycPyShell.pyoREADME.txtRemoteDebugger.pyRemoteDebugger.pycRemoteDebugger.pyoRemoteObjectBrowser.pyRemoteObjectBrowser.pycRemoteObjectBrowser.pyoReplaceDialog.pyReplaceDialog.pycReplaceDialog.pyoRstripExtension.pyRstripExtension.pycRstripExtension.pyoScriptBinding.pyScriptBinding.pycScriptBinding.pyoScrolledList.pyScrolledList.pycScrolledList.pyoSearchDialog.pySearchDialog.pycSearchDialog.pyoSearchDialogBase.pySearchDialogBase.pycSearchDialogBase.pyoSearchEngine.pySearchEngine.pycSearchEngine.pyoStackViewer.pyStackViewer.pycStackViewer.pyoTODO.txtToolTip.pyToolTip.pycToolTip.pyoTreeWidget.pyTreeWidget.pycTreeWidget.pyoUndoDelegator.pyUndoDelegator.pycUndoDelegator.pyoWidgetRedirector.pyWidgetRedirector.pycWidgetRedirector.pyoWindowList.pyWindowList.pycWindowList.pyoZoomHeight.pyZoomHeight.pycZoomHeight.pyo__init__.py__init__.pyc__init__.pyoaboutDialog.pyaboutDialog.pycaboutDialog.pyoconfig-extensions.defconfig-highlight.defconfig-keys.defconfig-main.defconfigDialog.pyconfigDialog.pycconfigDialog.pyoconfigHandler.pyconfigHandler.pycconfigHandler.pyoconfigHelpSourceEdit.pyconfigHelpSourceEdit.pycconfigHelpSourceEdit.pyoconfigSectionNameDialog.pyconfigSectionNameDialog.pycconfigSectionNameDialog.pyodynOptionMenuWidget.pydynOptionMenuWidget.pycdynOptionMenuWidget.pyoextend.txthelp.htmlhelp.pyhelp.pychelp.pyohelp.txtidle.batidle.pyidle.pycidle.pyoidle.pywidle_testREADME.txt__init__.py__init__.pyc__init__.pyohtest.pyhtest.pychtest.pyomock_idle.pymock_idle.pycmock_idle.pyomock_tk.pymock_tk.pycmock_tk.pyotest_autocomplete.pytest_autocomplete.pyctest_autocomplete.pyotest_autoexpand.pytest_autoexpand.pyctest_autoexpand.pyotest_calltips.pytest_calltips.pyctest_calltips.pyotest_config_name.pytest_config_name.pyctest_config_name.pyotest_configdialog.pytest_configdialog.pyctest_configdialog.pyotest_delegator.pytest_delegator.pyctest_delegator.pyotest_editmenu.pytest_editmenu.pyctest_editmenu.pyotest_formatparagraph.pytest_formatparagraph.pyctest_formatparagraph.pyotest_grep.pytest_grep.pyctest_grep.pyotest_helpabout.pytest_helpabout.pyctest_helpabout.pyotest_hyperparser.pytest_hyperparser.pyctest_hyperparser.pyotest_idlehistory.pytest_idlehistory.pyctest_idlehistory.pyotest_io.pytest_io.pyctest_io.pyotest_parenmatch.pytest_parenmatch.pyctest_parenmatch.pyotest_pathbrowser.pytest_pathbrowser.pyctest_pathbrowser.pyotest_rstrip.pytest_rstrip.pyctest_rstrip.pyotest_searchdialogbase.pytest_searchdialogbase.pyctest_searchdialogbase.pyotest_searchengine.pytest_searchengine.pyctest_searchengine.pyotest_text.pytest_text.pyctest_text.pyotest_textview.pytest_textview.pyctest_textview.pyotest_warning.pytest_warning.pyctest_warning.pyotest_widgetredir.pytest_widgetredir.pyctest_widgetredir.pyoidlever.pyidlever.pycidlever.pyokeybindingDialog.pykeybindingDialog.pyckeybindingDialog.pyomacosxSupport.pymacosxSupport.pycmacosxSupport.pyorpc.pyrpc.pycrpc.pyorun.pyrun.pycrun.pyotabbedpages.pytabbedpages.pyctabbedpages.pyotextView.pytextView.pyctextView.pyoidle.desktoppython-idleChangeLogNEWS.txtREADME.txtTODO.txtextend.txtidle.pngidle.pngidle.pngidle.appdata.xml/etc//etc/idle//usr/bin//usr/lib64/python2.7//usr/lib64/python2.7/idlelib//usr/lib64/python2.7/idlelib/Icons//usr/lib64/python2.7/idlelib/idle_test//usr/share/applications//usr/share/doc/packages//usr/share/doc/packages/python-idle//usr/share/icons/hicolor/16x16/apps//usr/share/icons/hicolor/32x32/apps//usr/share/icons/hicolor/48x48/apps//usr/share/mime/packages/-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:37853/SUSE_SLE-15_Update/8c888c25b91864677ec64a46e057680c-python.SUSE_SLE-15_Updatedrpmxz5aarch64-suse-linux  directoryASCII textPython script, ASCII text executablepython 2.7 byte-compiledUTF-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, 16-bit/color RGBA, non-interlacedGIF image data, version 89a, 32 x 32PNG image data, 32 x 32, 16-bit/color RGBA, non-interlacedGIF image data, version 89a, 48 x 48PNG image data, 48 x 48, 16-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 11Non-ISO extended-ASCII textHTML document, UTF-8 Unicode text, with very long linesDOS batch file, ASCII text, with CRLF line terminatorsXML 1.0 document, UTF-8 Unicode text  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRPPPpsc!;utf-8d1a5fbcf53feff37ff8eefaf4eac671772d1aefe5c5cd3f67a61277d4e6501a7? 7zXZ !t/``]"k%%)  $;c\qd?os<~Z`>YA`ڇP ,[+2)戌 {O`lA"BJa.rz/1؁nwюF7 s}[DUGB0)Be-k^gR%eЋ(ei8jNMlIᡖbƙČ%s{W[ҧi ?GT+ IYFA3y2[G>p)hn:SѸ[%^M% 6 YWNxlB{xd)#?-c 72H/sKwC&e+V[Dz)!@y1Ha1ۇ:HArY/7{x{pqQ70h UY:hޏ%~v~x2!_uÞ|6R1 {'`U3y̵3o5p]̜ۛh]ȘG6!AqQP=ySAz nVu؊䇤%[0b#?bgVhୱW] 615Ck<@MOŋ/B _V\x#Mig.)h4c>OIjmeu6H> ujr88+MZGcw!2#0 2& IZR$<5悬t6WʴGa/)떱@rFZHd{>v_}-k@ Wu'5>njej9VCìb~%Cz0+*ֹ:ֈnHP\ѻwR gb/(C:b(W Mj[YJ-o3?d+=U~B ,n fޛ/P Sn6ѹ1?pHjPkmQ B51BYd !˃|Jo#ti@7 T"ųH̗j!Gd}HP7jȗq#_b"gqP|([=#L^L?P(<%#Ub0ZfsqJ0nȱPU8#OS7]u:&'>BH0 0Jղ{zD%}Zk4iuA5E K%A(gO榪W5Vb*)2gM9J&K d|0|_x^'c"OfRW7;%Sb8"QO1R~`Uh FiIw)t:V- ^ǜnyQ&[~:f &%>/lL1uM{Ȑ脧9Kp2E+ ߀q+/c錘=CǑ1"~|}jΙZ" 0K:"QS+4 S?%bO$x2{\et VXAd АC?_I%,o_#}/CEFh&^Vo˟k]cȲ{B*8/ֿ?L) &;3V׆ay6Q-=gZs.{iRv٢߰c;"V#̯3 $U-=lzs4+9N;2wli:?d%#V)d7 GtϋDjs]kak9IM-Ӛ!HȔF6a:Ջ\?ǧ'7Ə|4U.[Sv\Des#/5nT̛۪ >n\Җ4JMc9K̉&)C['p/ѥnɹ(B*yb{+43E <2&騔A+_͆/YVѨwWJ| AW"UiT[J5X<&,$ *{\IV>|j0I iL{PN̑|xcn*<]\Rww{R譈]ƮΩC4pMlϸEȍlU=d ׏!ĞMnBͪkk~TzH,M{e׷0FbgD܍zVX\\C[x[t5imÄ_xT#%cױ'5I[u }za[VdJV%;tdN$ITYmŽ% ~UQ˘tLՂm 49RVp˷` 9>(ho ۭtXg ; ^{i\8)+Y L:Ӫa3hQwD(=oA7^„_aҵ6\ǒ~3&ޫtH?OOHB첼b!?U Y!*IR-f-s'f ,?<nEs|dsi^ӛfF :ML $HAFscYpZI_G,M[‚Q`~ „dZ{ȨUA(jT_ݟۊu74]e K3I=}#[gyX?ΠŖ(sCRĀDpe(q!Z`ep85G}/]|x6 h͏\ya"m<0*jrHS2 y<1+9U A='/%;o~ L<]12H[FI>kTHUҞ6P׊i:N&vzk<9n tc!pz_(9cbso*y&Y1~p&-cXjQ> IխG*pS]mFNs2*NC:慈 D0l[:rL'iNբ`QQT*>Tktli_E."KG*D!?С3ќDːö88.?MEM^"5jzn,49:`=٧ֵwjBY=JJ0IUPy ct&Dg+q&1`kNk5aq '@`r7.;H &̲g'uK"B>/ Y GXhhELbzvB_+{P2[؀V֬z,O{doq H| "hg{)Ꜣ$>RʈFزS@nnJ8i&g%0m["Jh'&Tj2,Pa`_ !-FKZ9~k\2Yr*%|JqʚДtAst zJPx"={,[8ʀ~zɾD.vTllq#ѮKٯ$,?ց[T)>M~F^+(hyC\,ysK* sՋ֊XtY};xqT=QF;mۜYq_-ꫩ-ӶJ"XD0EGr|0Gm_ =Crwl@`ADXxd]\Bj}"F K |.<(61vq2<I}+CMqmp'16hMјE]Ng|74zLB2=*t7f`j &ROdM C/D5 rz`󫙣O$Ë-nV-Ae.Ͷ+ 'ŪPGK<,)t+6VIhD^bRGl?T3U/QTXlҰB46Pz88X49y ΋W^uTyeb̙``wG9LJ 2ןcT&9M,[JfE`ΝlD⼘YŮui#FQVw٬ ֋k[Ԩ[^U48i OQ>B&;+¨9 -ag2<>33w/P6>Xߍk_ ֆҼK:O4+CJb/U4:pnm>eS,bcE7G .Y -(pA4fI3#1$y&kD>mK T؏$!k>0=Y\0>r7e8ݿ/r(+ }._{feeyȯM`ږgM*mA cGymhcwF2p\D#>4 ̨ߊHKeRs)*WD(z+ E\( ]{~E9j,O&7jIH|O;|ǨahWAπCd)lE`H,yJd+$4;MAQ’Uk&mS35Œ#8~3=h{fպ]=1c><-u}D42ִsx:j?֣s1TBR +X-Mw+tTٿLA8-I;4_nŽ)G 6^j-+Z'INRB)@oGT-ދy\E>sH~rTV5рW:(kl$/=f6-fY'H0D "Gm'&B(5iy3-^wǏԘ)Q [ZLy`YWpO[%1V\%ҟ>q| ź 難-VlԔR AABߑFMjb91Ng%k&Qk/9=%e)kN.!3,V.р qrY6g5op*1SY&=0d1cze58f ;erp!ȷ\kj~ \b5+ ӳ gs-XV1^82Dr`} @U_ '`o;唬 `BNJdע7J%&!4+Εx3ؗPGAA'm 5e;@|=y6?֐ үVފtc v!|v6ߒ؈:P/^QSRNF%cZ{p Ѻ4jle| eBzg0?LpiQ//[J kit91db{^Cac~ \W9&үblVe`cz<-cs?w[B 8+Ѥ?h';\o|qp!h^ v 5gSm ̷Y8(;\__[,8 8T;0=BT5[?lӂ%ɺ֊l^R(YH󜨊ZLG0LcwKgQբÀyEҩB e;~ YZ