ansible-core-2.18.3-150400.9.11.1<>,㸉hp9|;/swY) HK r"7 sPJJ^4_n^DyA!2 !l2㳍N$er25L1tĊŲF~o)>br{ _. Vv R]%!4'J -QSCP=BaPZ}#&f:F.i*l |tWrlT?HqDpnlZ}PwA0K`}=+Zxo'NIJ.Ds[m>D4?$d $ C  !-BHPNN .$N <N YN N  N)LNMNrXrNY(8898:i8FGNH-NIK$NXRtYRx\RN]oN^Zb0c1d2e2$f2'l2)u2<NvOt wQlNxnNyz Cansible-core2.18.3150400.9.11.1Radically simple IT automationAnsible is a radically simple IT automation system. It handles configuration management, application deployment, cloud provisioning, ad-hoc task execution, network automation, and multi-node orchestration. Ansible makes complex changes like zero-downtime rolling updates with load balancers easy. More information on the Ansible website .hh03-ch2czSUSE Linux Enterprise 15SUSE LLC GPL-3.0-or-laterhttps://www.suse.com/Unspecifiedhttps://ansible.com/linuxnoarchpp+ + HHDDm*Q*QAAaaYY\\//X3X3__llH8sUsAg*[CqOO3OZ8 9eeQQ< Tq&:_ISIS t t00yy99UQUQ!!&~9D=D=S8, h'C h#R--'9 lHV@ ~ ~SS``$ $   4mm~~ 5=5=s$}t:6HHEA,DHH?ZEA,D~0HHE+jDZH D 5 )E+DBBz6z6VVrrnn][{{oR2Q2Q77)Z&s&jj]]))--  ##< DQ  dd??#l#l  II  44__.  <77::2{LUpllKK)])]- 1@4KK9 bkk66 : :QQ// 0 0 9| 00NN--11)q)q//)   '%!8Z)q   D Dccff\\99DD OO\\uud o}q13 > Hu  : EE qq $ $  GG   ffSS  gg.  M 5f I  '}c [ " "  6l6l Y Y >>  E P I K%NG P f29Ei 47J (]$-%%O.O.+&+& ,,;;EE99BB~~GG,>,>  MM ++&&r:r: R Rttoo$$ ffLL **?{?{`'`'ZZ33 ||773%3% ( (XXrr  *v*v55V@V@CTCT]]] ] 77 ~~ss 6 6|| N NooFzb$) -c<[7K}jf=$ \@q ${_O\ j \ pp'{Y cB8g\eA .-$m:GY Q+ J4aa6+n j '_  mm7b7b)V)Vgg " "Q9!!+ AAww} ||//SS (""LL $$1+1+&&bbII.. C C!! \\ii@ )q o<-+<6Dty#y#$~$~ 2 2[[ff%N &M ]T|!!,,55 CCYY cc NN'j'j))gg;;iinn + +)),!,!))|| -lW S'#f-5>*V!" &a  @@%% 0UU^^ c cmd4BBhhNNA5 z XjjI_`_`225533((OO j; e e   66 PP)) '    sAx<x<--bb ()b  [ZC4 9WMN] t}I u iCF 58- H Pee < <%l%l  D,D,;;22$$x wD/|%s"%H! ! ) ) a a  %%''  x x  ZZPP > >AA&&ll   ++  = # " YD >%o #XBOO#--**H8H8 u uz=,3gg<<ccGGAXSFYDggpp0w0wTT&u##!THTH ooR*[@WA 3BBD$0$0QQ-/ &FF F Fyy33$&$& J Jee??``""GG $$wwqq#v#v2"2"!)aass ؆v X5 kf;/ DIaL1%8MM  ooz 5,=M }6\uL,=M  < , AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤AA큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AAAAAAAAAAAAAAAAAAAAAAA큤A큤hththththththththththshrhrhthshshththththshshthththrhththththrhthththththththththththththththththththththrhthrhthththththrhrhrhrhrhrhrhrhthrhthththththrhrhshrhthshshshshrhshrhthshshshshshshrhrhshrhthshshshshrhrhrhrhrhthrhthththththrhthrhthththththththththththththththththththththrhthrhthththththrhrhrhrhrhthrhthththththrhrhrhrhrhrhrhrhrhrhthrhthththththrhrhrhrhrhthrhthththththththththththrhthrhthththththththththrhrhrhrhrhrhrhrhrhrhthrhthrhrhrhrhrhrhthrhthrhrhrhthrhrhrhrhthrhthrhrhrhrhthrhrhrhrhrhthrhrhrhrhrhrhrhrhrhthrhthrhthrhrhrhrhthrhththrhrhthrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhthrhthththththththththththththththrhrhrhrhrhrhrhrhrhthrhthththththththththththththrhrhrhrhrhrhthrhthshshshshshshshshshshshshshshshshshshshshshshshshshshshrhthshshshrhthshshshshshshrhrhrhrhrhrhshrhthshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshrhrhrhrhrhrhrhrhrhrhrhrhrhshrhthshshshshshshrhrhrhrhrhshrhthshshshshshshshshshshshshshshshshrhrhrhrhrhrhrhrhshrhrhrhrhrhrhthshshshrhthshshshshrhrhshrhthshshshshshshshshshshshshshshshshshshshshrhrhrhrhshrhthshshshshshshshshshshshshshshshshshshshshshshshshrhrhrhrhrhrhrhrhrhrhrhrhshrhthshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhshrhthshshshshshshrhrhrhrhshrhthshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhshrhthshshshshshshshshshshshshshshshshshshshshrhrhrhrhrhrhrhrhrhrhshrhthshshshshrhshrhrhrhrhrhrhrhrhrhrhrhrhthshshrhrhshrhthshshrhrhrhthrhthshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhthrhthththththththththththththththrhrhrhrhrhrhthrhthththththththththrhrhrhthrhththththrhthththththththththththrhrhrhrhshrhthththththththththshshththshshththththththththshshththththththththththththththththrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhthrhthththththththththththrhrhrhrhrhrhrhrhshrhthshshshshshshshrhthshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhshrhthshshshshshshshshrhrhrhshrhthshshshshshshshshrhrhrhshrhthshshshshshshshshshshshshrhrhrhrhrhshrhthshshshrhthshshshshshshshshshshshshrhrhrhrhrhshrhthshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhshrhthshshshshshshshshshshshshrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhshrhthshshshrhthshshshshshshshshshshshshshshshshshshshshrhrhrhrhrhrhrhrhrhrhrhshrhthshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhshrhthshshshrhthshshshshshshshshrhrhrhshrhthshshshshshshshshshshrhrhrhrhshrhthshshthrhthshshshshshshshshshshrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhshrhthshshshshrhrhshrhthshshshshshshshshrhrhrhthrhthththththththththththththththththththththththththththththththththththththththththththththththththththththththrhrhthrhthththththththththrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhthrhthththththththththththththththrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhththththththththththththththththththththththhihihhihihihihihththththththththte011c854443b18b41eeb53f6dc8d12c934e5e9ae83ce461e52cc12e339ccd243f09a7569b3d40cdeeaff03eaeafbbcfb9f1d772365664059c56453a949c001267ecefd218e775e665e149f194d632abb0299b3e7d64b0f2432f71911c5f8ca50060c2d4f36feccb85fbc7f50be9ca052ec6198806d2370fb1e439b8f5a52897b859f9c67c8b9c93a5086c9d8eb9485d8af82264f714a434b99e4bf465322d1d17105f901c557bd6fcb997eb5d1479ba47a34a75a598f11fa42b4c5f5c9a708415c544c0ebb11cc28bd53e3f3fae078c77006741fe4162133bf80ddc8092af3662134c8db39c9ae8072809b2479bf3ac2012704a6fa9d0e7881b446d6e5e60855840c5f2364bc9037a4e8f8f42134dd804b4d1426083ee2f9eb3d30eecac26e0195c37a2b446f885f6727a6d4b6f9b0a76e86104cbb0b3c988af149e8922cce20db88feefe613e256767e657cd090fe551a18067c51ed8a0ffd53fea2b26d0edde5a2cf388282098600b3cbc50aad1ae57538f1da9c642fb3ee7d0b5763bd0ab7e5a2cf388282098600b3cbc50aad1ae57538f1da9c642fb3ee7d0b5763bd0ab7b882454fd3d42691c113a4d628933b8337984323c131c816ee64bee099aba3f8b882454fd3d42691c113a4d628933b8337984323c131c816ee64bee099aba3f8197b32dbdce00580d50f8fcd2234e25647384cb01f331e86ce2186906d632caf197b32dbdce00580d50f8fcd2234e25647384cb01f331e86ce2186906d632caf0445a6bfffa25e62c44813fff52d4cb7f3cbb9464755fd2751a45d96502d65f40445a6bfffa25e62c44813fff52d4cb7f3cbb9464755fd2751a45d96502d65f480b21b29e59e3fe53d8141fd76f587c7dc3fa72bda8fdece5141b4683172881d80b21b29e59e3fe53d8141fd76f587c7dc3fa72bda8fdece5141b4683172881dd9005e0704fbb86eccdc0c3ea48742a6de973ed1cc0a96c429f00260a03bc4881b5df469f63e6b05e97f21e01b5cf806b1f1637cb893b4e9b45d925735a99d561b5df469f63e6b05e97f21e01b5cf806b1f1637cb893b4e9b45d925735a99d567b42a378b7c6d4a7ad6f097eb8e990fb35e8ab7fc497cd0b9c74c6bbcd1dd60b3aa4ea31ad1d6aba9f7a99598846eefa5ce6eaeb39402f5c29dfdc45cd4841273aa4ea31ad1d6aba9f7a99598846eefa5ce6eaeb39402f5c29dfdc45cd4841275c2faac08b889e649eb0fa1044eb4084b23d792eb4ae549bc27d6ed6505e8e365c2faac08b889e649eb0fa1044eb4084b23d792eb4ae549bc27d6ed6505e8e36de043caeee0f23bef84fac5dc52898539f53a79c77b5c1c2d68adf0c7b5ed01ede043caeee0f23bef84fac5dc52898539f53a79c77b5c1c2d68adf0c7b5ed01e66547bf1ddd94d55db9e437df2f3757fbd818e67462a977f14ea8db891039ccb66547bf1ddd94d55db9e437df2f3757fbd818e67462a977f14ea8db891039ccbc354909ce452a774c039eaafb20cafe4ad14ba522980ad98e212fb0ab6e095d3c354909ce452a774c039eaafb20cafe4ad14ba522980ad98e212fb0ab6e095d3888d6d6a2016daa681042e78a6fa9f0e4db0bee6873b9c9920dd48b2cb15beb9888d6d6a2016daa681042e78a6fa9f0e4db0bee6873b9c9920dd48b2cb15beb9a890d7fe39c90c808bf83a6bf62b03605246e181d83dd1d6d40479636bae5cada890d7fe39c90c808bf83a6bf62b03605246e181d83dd1d6d40479636bae5cadb5bdc17a2e92941edb0041211964823d0c88223d2fbd87fb49119c8afeb113e5b5bdc17a2e92941edb0041211964823d0c88223d2fbd87fb49119c8afeb113e5149b58a47022c6580842c0778c352de42171a1a73b5daf4b02e173617d4f21cb149b58a47022c6580842c0778c352de42171a1a73b5daf4b02e173617d4f21cb7af16b5369bf8955c92002f8d50ec201ae37d55ed31e404c201612d92b7b72eb7af16b5369bf8955c92002f8d50ec201ae37d55ed31e404c201612d92b7b72eb21d25e5e48210693eec573b84620e28eae8c6ff87168946f4bde1c43d19eb9c2ff8b5a4fcda164a293ce17572a6220ab15b0b86db55d9c45f3be15da4d5edeeb532ff68d2e36e36e36dc2faf6ffe57aa3ac344ce06a4907f17c7f94f73df8eae532ff68d2e36e36e36dc2faf6ffe57aa3ac344ce06a4907f17c7f94f73df8eaee13250f549f5b3ef0a28123c013e66ad3b2288b3a8a2de524fa3d8eb9b34a369e13250f549f5b3ef0a28123c013e66ad3b2288b3a8a2de524fa3d8eb9b34a3696228860edb17230160f2664f7909d81ec11482c8d47de2c246ba64b3c85473f42bb06f00747aa2afac91ef5c34d6192de244dcf9f04fae2168a476550fc7cb50e08f06756dc7e01fdcebf334e3c912f6cb72b19a08cb4f3862cfa16f37bac1638187c809ce4c63235f914a2f13f3df3d1fa15784c9cc2ab4e410f6eb396a046a87e47e93163c7cab1314a83f5def24946f940fa014ead1f2ef4f0e691bcd5b67681cfb7481015a42a01fed3912b71e56b7107e9d292805c2024c41ac82b68ff4c50fd079f363722926a0896d51e2decd5342329c69ad7a16a0b1663d092248910cacf38ae5831964a5ed93c2d56fecacd008c725f87f474e51951bf798681145e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8550219258d51e273914d7c75b6f69e46415e3720629398b56e904cf6fb2eed20840219258d51e273914d7c75b6f69e46415e3720629398b56e904cf6fb2eed20849265eb7a61f6a2926223c7f5498e2028f98192c64c3e3fc023cef334ba8b7fe89265eb7a61f6a2926223c7f5498e2028f98192c64c3e3fc023cef334ba8b7fe8328c7f1a1408522b7e5ec860d9417a74a0a56768660076ff7203d9c8c9fd2c38d2389b136bb0312ed161e140cccdc772dadf60bcdb934bcb43a451abd99cb393e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855b4348b955bd86829c25517b7611e8c7686c045e8fe84c399dc3a003e23131811b4348b955bd86829c25517b7611e8c7686c045e8fe84c399dc3a003e2313181119f3b821205753a91d4f9bf4a804e2a8978c6933eec8adeda7b633ba3ebaaf2519f3b821205753a91d4f9bf4a804e2a8978c6933eec8adeda7b633ba3ebaaf253e1414e9fefe6e27a0f3ddae5a74a0ffc0a0e1eb5b0e74146d1e5ae923a7c9d969531128fe5c2d275c416c6f4e9b03dc9275eabd78e9db89eea8792b9f06ad627df5d096defcd2b7a29954301fac378459865d4f7bb55d07bea03657fe7d97297df5d096defcd2b7a29954301fac378459865d4f7bb55d07bea03657fe7d9729584f6c32bf6f39b9e1d2ce517f992be477763bf050db01f3b5883d47a2102c61584f6c32bf6f39b9e1d2ce517f992be477763bf050db01f3b5883d47a2102c61c6009d86849fda7780ca4fab65f5575815b6c84ad5ca7966ee7823b2ff7bd91dc6009d86849fda7780ca4fab65f5575815b6c84ad5ca7966ee7823b2ff7bd91da028ecbbc7e80033a430dc11b968910a34313bccc439cf8e95cd9b2a8f8a821da5b236407d9f4f65803ad98405b77a0a9db25f20816dbe532d1ee28adaa70245e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855fa791048668ed81d8c0ebad9a24b4eb766f0b7215932cfc6ae84851b90f1b6f1fa791048668ed81d8c0ebad9a24b4eb766f0b7215932cfc6ae84851b90f1b6f1cd1b183c44d307f28ae3d1eb10e5339f5e6d868e8de7469c327f66e9ddef6ff1cd1b183c44d307f28ae3d1eb10e5339f5e6d868e8de7469c327f66e9ddef6ff19f02fffaba84126a6e487c591fbd29241884a2c0ca38f91821ba07dffecb5446b82d00a46edc0397af8e320d20c1f8f77eb67e1308fe9dbef81a7f6916c42e3edbbfc65c66f74b15f44a1a9fe58b47bc34a8c9c8a7cec0c08da3eac0fb1b639a75281baf336c9a161ce0640e599bd19b85ca81ffbefcc51670c6bff7fee5e4f7a0a6327e37d6a72f2f0de3eba2da9f9ea4a6ba28ffb7be7fe5ee6dd14fe143580ddfa387b255c1fc1e89c1e0ea2ac1f6e82b2baeaf1c04eff5e8916c47a9e1d30840c8633f322910b432ed5dfb2531cc6468da97f92a6118ac9e53e9b96da7f30840c8633f322910b432ed5dfb2531cc6468da97f92a6118ac9e53e9b96da7f35cb9d177bad7a98b3b513db2c0bb18c15b378d9632bc4b6a4f99fa51964251735cb9d177bad7a98b3b513db2c0bb18c15b378d9632bc4b6a4f99fa51964251737ca7e00f7ac2d35eddc8c69c913a6ef8b92f6ec767b1f040282c4c1fe7c3b488991bdb0893c0fbfbde486e646b7bf4e06e6fb1aacb543781dc4585b2eea07922063ae945e88bd8487f07baecf47f656b5573e3e6c46a5b4c2a2d2ada90f049f8063ae945e88bd8487f07baecf47f656b5573e3e6c46a5b4c2a2d2ada90f049f8563d2125b7a876e016e87d68254fb75584889d6547a2386cbd1e9047e9977762563d2125b7a876e016e87d68254fb75584889d6547a2386cbd1e9047e99777625a884c99336621e2a3705b156513587f6fa4e10b933897875a553d69d902cc505a884c99336621e2a3705b156513587f6fa4e10b933897875a553d69d902cc503173ecc33fba606424072700e25f75a9fffabc30d96a5944cf3625f765fa14973173ecc33fba606424072700e25f75a9fffabc30d96a5944cf3625f765fa149750798cccbbd5774f92a4c2f0db1efab0fcf6def87cea6a2045abfc930a739fc250798cccbbd5774f92a4c2f0db1efab0fcf6def87cea6a2045abfc930a739fc2947fc811f785a0cbb301e7a0a38ec6f9833ad2722ef4e5c9f10255ff93a3adc2947fc811f785a0cbb301e7a0a38ec6f9833ad2722ef4e5c9f10255ff93a3adc2a89136d2d730f182bb7088c173f0c2b84ab1dd7adc69fe15cea4f757953e5db0a89136d2d730f182bb7088c173f0c2b84ab1dd7adc69fe15cea4f757953e5db022229f92e19ee0322706e8efdf79fe2ad95da0a1b0ccaf65260ed166e3aab86122229f92e19ee0322706e8efdf79fe2ad95da0a1b0ccaf65260ed166e3aab861fc5e00ff4ddc2423366b0852db30032e05a81ba0c6c0009bb4eba003ae8ca5cffc5e00ff4ddc2423366b0852db30032e05a81ba0c6c0009bb4eba003ae8ca5cf127bcb5ee4183f59d94cdb1ac4ce8722dbe5e0ede7eb4e76cebd2ecfedd20962127bcb5ee4183f59d94cdb1ac4ce8722dbe5e0ede7eb4e76cebd2ecfedd209620dc8c2bd110b973e5dc940f10a30990958f2e3e8f8bb4cbe60d818f7476f6c6de3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8556a69f62c663ba361789c0152e7bd57ba6b4c0ae7e968f8869c4f24cebd96c5ba6a69f62c663ba361789c0152e7bd57ba6b4c0ae7e968f8869c4f24cebd96c5ba9875330048b1bff7f0a34074b89acc2fa3ccc38197acb6e2949daf70997e072f9875330048b1bff7f0a34074b89acc2fa3ccc38197acb6e2949daf70997e072f196d2d166c6bef9bf21712802339c90c47e37d2cf51da19ba91a545227f52d3ecf47a4c2af6b343d700190a11ce60d7dabfbc9c4ef9e481514f11e93c6978fe2e2955f8cc80295ef6db406537aec12c7729d8b4ae58da8321c2d758b85670a5e39acddf5a5b2e3307aeeecb6eec620e01bde171fd47ffb48b1b843efa84c736faaead90625a301659161c1dbded8b8b0123cfd6a2d398bd34436abe090b795e1e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855831fd0a3fe8445bbfc840100d67ca7d6b25476ce07d842fc3ae3d066bbcf1cfa831fd0a3fe8445bbfc840100d67ca7d6b25476ce07d842fc3ae3d066bbcf1cfaeb5904ee49c897912b794425d46a5aebcbbbde681d22ad5574eca937311a44b8eb5904ee49c897912b794425d46a5aebcbbbde681d22ad5574eca937311a44b809b0a27663ce26989af29d3fa2cfc77a63ed188d1b3e5a45ed0afe01824c083c5f0605e12f85def014047778e4ef46393728fa8189b459d6f8a48230518b1855e269a009f64a25b1f82b5b2f6ab3be0e5bf940b51abe2cfa3b508d0f130663f6c94d4f997e181c2cc6a65cebad7b568de6afde01c933688a6451a5960b7ef3af10ce17d2d116c36bccacd550a317a7eb2f2b6314c1f24123c773c7a07e0cc797f0f547aa56ba772187e9da2006fdc8515a0ee299ecfd539ad707db42738db0d0886b058f984e628039d505ab763aac65f42408c49420016f7310c06f597ae99b0241dc7d6faac7900952a674d86bdbf74ee8080612a6d470a9bf11572349bc784e1d4a4e3284dda3ae97a91132e9d48f411715fec99fb58e1fe6f209aa7da6a52852101cf367cc0f3c638964ce7dc1dcb1f7a33fb80006a3537ea3bbd019c7d8991bdb0893c0fbfbde486e646b7bf4e06e6fb1aacb543781dc4585b2eea07922bdb3d0806a4d9c45cbe35d6fe28a189dff13880364bb98be8b93694f64211bb6bdb3d0806a4d9c45cbe35d6fe28a189dff13880364bb98be8b93694f64211bb6c47ce7d49d4167014382d3ff37c452ba174ecf2ea0a7d5c4206dc1ee234e60d3c47ce7d49d4167014382d3ff37c452ba174ecf2ea0a7d5c4206dc1ee234e60d3044555dd94926b0b2e252401d67176ab66f9f317084bd5a49a798710c4193c0281c061250ad94e013de7bdfb77a940ac9dc5a5395b01f56de8632112ab3964f56c60f9235b0a4d8db328c8466ab4c112f3a0de7b1c3e8f1925317058dfc5cbe88419d3ff001e4bd18d7254fc2172665e6ea531540a921ca3d928428bae96fd50e3ccd95a9c4288cd19fcc546f73190182c472cdcecd61a2b4faf1099f6bebfff6f6d41c52aeee6b18a0dc16ca2502767c188bf20e60f81a3d673000a767b1cafb2f3df266c61423099cc4533919278fd5b9dcafc76442dbb6a25f43ee3dcaa42b2f3df266c61423099cc4533919278fd5b9dcafc76442dbb6a25f43ee3dcaa4233768eed48e73d72d5fe396944c593838bf9f4ee87c0933221839bf20a00e45033768eed48e73d72d5fe396944c593838bf9f4ee87c0933221839bf20a00e4502713ee4182b26a41a5c5bbf877692689742c2a69be7ad13d99fbf5c6ce8d01c42713ee4182b26a41a5c5bbf877692689742c2a69be7ad13d99fbf5c6ce8d01c476719aabb0b4806b7e76517483660c885b0644f55f634fd440c2219d3aeff8b576719aabb0b4806b7e76517483660c885b0644f55f634fd440c2219d3aeff8b55d42df9e0bdd632583cefa24fa6e1980990fd46f01848233b2f21f4eb2d978de5d42df9e0bdd632583cefa24fa6e1980990fd46f01848233b2f21f4eb2d978deeefea87a33dcf181be7a6e658b83d349630af8326a80d23781978549ea13e6cbb16219e9a82c8d6a6d9a6952e1902c80abb78d94f29d27c796fc19789dbaa8ebbb8d0be6099686ac6a88f5b0b1c923826d0b49158b02999898f6dfbceebc5e35bb8d0be6099686ac6a88f5b0b1c923826d0b49158b02999898f6dfbceebc5e3548f969d40f86b9614b52286b03f8ee309f7d73eb47e3767f6f4100381c45265d48f969d40f86b9614b52286b03f8ee309f7d73eb47e3767f6f4100381c45265d7da26844691a58d12c1586470c81676a477baf8bd0e1db81359a7936324fcd6f7da26844691a58d12c1586470c81676a477baf8bd0e1db81359a7936324fcd6fb1d30dc10c2e378869d2a72709cffded9cc46ee8a4a13fcfdcf246b93db283e1b1d30dc10c2e378869d2a72709cffded9cc46ee8a4a13fcfdcf246b93db283e1b4e9eacc155d15ab644cde38b627c43ec088646c1f89e3791b56e34c4217f4cd8abfc99d3c47e424ef9a09ecc0f91aa9b12030481a6735b7175d6dfcdae15ac79b8fc0b593d9c8cfc3ef601166a00a6be1deafd5d62026f889ee8a704879d8cfbf2d84f9b14085995353f342c8c48800235697bc89484086756ad19dc435356b5b9f3829e06c3acdc7ff41f6b9001bc61d2303136491302776b3170fbe49147772c8c4b0060d20b0e3ff256c1c36e4615ac5ea4fb711cab474494ffd5f0a1e5f6eca0cc2efd5c35b7f312e4f5416349508f37107060ba13b0ba361d114986c7ab434b9c39bd04e500a77cc885fa5ad8fa9a01f1393b24f812b1577701195fc51b60dc791cb8d303615e402d8956a9d55d626c4b3567a14350ce4de8e75983eac5a32b6a3ba1ee394342a7eca034bf4c4e12ab6c49e25067b17d71015a9f9244297dfd60c66090fa4f2f5a696c79e2b2b942880920a7e37bc92ca5f62fc6f0af79ad1ff25df86f49087f0bf0cbde3dd24772c8ec583202bd76cbc47e1bc9776f5b8fbc84eb1a67a2bef8176c9c8919e2f7156afccdc57f38c9ec9b6506403bb0b2223cd53e397e4ee335615360c4f675679e6e2acbd650a12b8dfec11bf6cc99e17aadff93255b00cc0fcf2f45c48a25d0be383668bdf201f684636714cd4d15a5fbb38564855271feb530971871d86c12cd90d9db39197446fedf66daf02c2b559f723d64020a35aa104f41be100ecab91206ac7c140ea6b7b7b6dd3a145cb3ddc8e1040e16048ddc2489d82d6a4453de455bf6dd27b079de4562fc327d4177437c81364e7d7ce2cd182b0e5f333721eea915f9a0421e7818195451b7fe7abd7e176f07496d5afc098e76a9247e88be54833383c937d386f958f33ec12dbd76ab60dc791cb8d303615e402d8956a9d55d626c4b3567a14350ce4de8e75983eac5a32b6a3ba1ee394342a7eca034bf4c4e12ab6c49e25067b17d71015a9f924420945b375a39b70699c0ddd3728956bdd6e69af8b8f3491f547048273b7d48f5f308d04f3d4d406c58db64a519dd4771de801a7a68ff1e91e73e17d2da4f9037c2223cd53e397e4ee335615360c4f675679e6e2acbd650a12b8dfec11bf6cc99e17aadff93255b00cc0fcf2f45c48a25d0be383668bdf201f684636714cd4d15a5fbb38564855271feb530971871d86c12cd90d9db39197446fedf66daf02c2b559f723d64020a35aa104f41be100ecab91206ac7c140ea6b7b7b6dd3a145cb3ddc8e1040e16048ddc2489d82d6a4453de455bf6dd27b079de4562fc327d41774d43afdc0fdbd0cad4ca8d6cd78ce3fc1e8fda127693263d3df91b3a3a1801f6b5f8134861df1f7ea8d7adf670dbae4f6ecb9c02ed38a5754c970432b0d2873d2b7120b2e4c1fb414f2ceaf843ff02be924839d58911560c1f6658c63ca3581cbee498d0d9eb822fc9784ec8586aaa21905d532b2954c606e8eda513266b5d7e6cc751d75266f757a38189f15d54e548dc87706f14a39756995c27b49eaca8a07b60dc791cb8d303615e402d8956a9d55d626c4b3567a14350ce4de8e75983eac5a32b6a3ba1ee394342a7eca034bf4c4e12ab6c49e25067b17d71015a9f92442bbe10a6c1908575429e79b9f377e4a92881cb238f0206e3e366962de2eb4305f2223cd53e397e4ee335615360c4f675679e6e2acbd650a12b8dfec11bf6cc99e0ff94a2f3ae5fa1b8dd2993ebf452fc0aa234e3b1e8260479e436ec4563105575ccde6d8a4f7511401d06d7d0d811760682ccc9fbcbcbf2665290b1cab0b48d6dc8e1040e16048ddc2489d82d6a4453de455bf6dd27b079de4562fc327d4177487db2f393efb0c34137fbf7a4c74f23668dc806e2dc4c4bd5ed24b31d435663e2f0eef88fb82272b3f94b6c560074df8d3475c9620cede897422a2e0d67970c6b60dc791cb8d303615e402d8956a9d55d626c4b3567a14350ce4de8e75983eac9677ca689ef5971c642077d403307593ea2cea7cad0ee6abd85c6275aede5f946989e5b9f292676d7855c9e763ca54459067013c5afad2a0c16dcffd6a50f2ac2f439cc3979e923ff84727003717a195bba3f026a5f334b47ffb6313ae75208f960a7196655863ed1b0720f4826b977dd0b869018e513071be62003ee9e7098d32b84b47040dd21f17bb64196422c83397e55f60f47fb5e467e921829d78a6930a5d7c37e777b9a6b884aee895b195f09edd35b2f9025ce64d000b7763d4bbdc2223cd53e397e4ee335615360c4f675679e6e2acbd650a12b8dfec11bf6cc99edc60f4c80888d2ca8ed47035c6e6b3a7d75ff63627589743d6cd4c2c2bc075f30ff94a2f3ae5fa1b8dd2993ebf452fc0aa234e3b1e8260479e436ec456310557fcf211827d83f1109e0668870f1a60d87e06379c81e209c931a012f5af15fdf0dc8e1040e16048ddc2489d82d6a4453de455bf6dd27b079de4562fc327d41774ff44ace78d71fc43e8720d5bfdaad4a6a169721003b5f430880c3ed41ee7a84159938effd2e17cbc6ed2739576532741c5d5bf043e76188b5c7b6e46fe8971b459938effd2e17cbc6ed2739576532741c5d5bf043e76188b5c7b6e46fe8971b4d41b5d58bd3554e4c2ad17525ef20739d3967f03f5e903ca0e38d99ab1a2f6b4d41b5d58bd3554e4c2ad17525ef20739d3967f03f5e903ca0e38d99ab1a2f6b41755f6946ca7b263a6be7ea3fa2f1f390a538dca806ebb31c731dbf0310a32b51755f6946ca7b263a6be7ea3fa2f1f390a538dca806ebb31c731dbf0310a32b523cc1222d29afb34f71b2c521a88eae02b3d937e7541ecbdd42968d84120f77123cc1222d29afb34f71b2c521a88eae02b3d937e7541ecbdd42968d84120f771c6cb8bfc54c4187fd024983cd7ca27d0e98c1bf3fb2951c4c6ba57374015d752c6cb8bfc54c4187fd024983cd7ca27d0e98c1bf3fb2951c4c6ba57374015d7524bd5dad67d88e51fc720fe138940bc5f9f9db0a0189d98febfe7bf5575c7106f4bd5dad67d88e51fc720fe138940bc5f9f9db0a0189d98febfe7bf5575c7106fccee15a31e44371b5a3d664859f78405637fd6f5ec7f4505d272400b21379646ccee15a31e44371b5a3d664859f78405637fd6f5ec7f4505d272400b21379646000a3e328e9ed87a956b42b9b8f16853e5b00db905aeee2d42dee6931a17955cb7d452ca308d69e07d8a9cd6fd499903de920c794c874bf922ca9b3752ff2d0e6f3ee6600888d85df75dc77e2d7156999896dd2bbb099cc8a0175f90898107aab60b78eef6a4a497067fbb57b5200d213883f13a6002ee745dbd6e6597e3f22b354b4a4f020131e8283247e16f1280fc2385d1b4ac5cc08b929f1ca88d192860408a51c386a784085714559b47200b22b081460c2f5fb48c8030f0e2c12125058d32178b286016adb9bd69d5535f0ba1623351d86a1d202b293bd80bdb86151853a538fa372c8d929d0f88ae00b1a1dc040f73cd4ddff7e1a9f4a947050e0096fd5af864957c1cd5e149b870fddbd4af7efc3a315dca1b4b447cb2c028c653a8e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855196d0c6cb4797b344c829557b7ab0b961d56cbfcd94218c74f2f09ca1372c4dd196d0c6cb4797b344c829557b7ab0b961d56cbfcd94218c74f2f09ca1372c4dd1e7a9ef8af7732ec1251b722d8ff8d65be09707f7796ec757d95953e92a623c81e7a9ef8af7732ec1251b722d8ff8d65be09707f7796ec757d95953e92a623c8d07a553b4a26e36dad388deb7cb06be7d0f5b720ed73223fd948462d78d910abd07a553b4a26e36dad388deb7cb06be7d0f5b720ed73223fd948462d78d910ab149877267506b9fd835344898de3187cac4b7114e5f30fabc33b128bb7420443149877267506b9fd835344898de3187cac4b7114e5f30fabc33b128bb7420443dd6be5f354c4a6d03ec8f87b51729652077e01aea9a65652a924fe1a0feb91d9dd6be5f354c4a6d03ec8f87b51729652077e01aea9a65652a924fe1a0feb91d94f1283558690d7006ae6d2fcecb9241927ee9dbca86142aebfc3ddfbc44578c94f1283558690d7006ae6d2fcecb9241927ee9dbca86142aebfc3ddfbc44578c9e1b92a46ba3c97aa0473de50dd25466e1b195a72fa382319ab9dd801373729c4e43c8fde5f9186763bcb475f5590d3d8db6e635f4e6ae34b480ed8d9021642deda615e9f0cd3994427660f9a2fe21422ace931ade69940506738a74d9d60ccb83c36f9393a6585fa5422f74788fd8172450e075814977d3637edec5b4fec4f28e399878194c0910dc88c0b6b82c373257bf29c2f87204a2bf89244f95df15cdec43f8c44c07c99245a8f6003c119e32046cec0929b73a05869da2e18f7d2d262e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85524c7f789bba88f66c5b827edd7baf3c2820d01c951834418aba21bbfe7878bd324c7f789bba88f66c5b827edd7baf3c2820d01c951834418aba21bbfe7878bd30ebd4203ee3573f344b7737d883ba3adce0da43d91aeb0c3d50c9bd90d828d400ebd4203ee3573f344b7737d883ba3adce0da43d91aeb0c3d50c9bd90d828d403213ba67821628845e23629fa08073523cb9fb024126481e783fe7a1bb93d6383213ba67821628845e23629fa08073523cb9fb024126481e783fe7a1bb93d63837fe2daa57832cf44d64fe2e350110ea6d6e57d9378fe6aab044729b022a0cc937fe2daa57832cf44d64fe2e350110ea6d6e57d9378fe6aab044729b022a0cc9df4dad6622a8070ddc5876caa80dfea7b89d839a0655f3783f8c4bc0f97d6ecedf4dad6622a8070ddc5876caa80dfea7b89d839a0655f3783f8c4bc0f97d6eceb1563840897f15b8059c6e2f303815ecdcbd241cfdd7c7b7a69d152f2e1bb6f8b1563840897f15b8059c6e2f303815ecdcbd241cfdd7c7b7a69d152f2e1bb6f833b2be0d359ccec34bdd0a441d672c7108741ccab971c26d8295b08faff9832e33b2be0d359ccec34bdd0a441d672c7108741ccab971c26d8295b08faff9832e19f01636b89bec3ad090430b9bfcf1daa5a65edde7c1eeb1f430861a79f44a4819f01636b89bec3ad090430b9bfcf1daa5a65edde7c1eeb1f430861a79f44a486f52d327433568799a12d96410f489fc22fefcbd8c52eaecc906a9a0bd9d08c86f52d327433568799a12d96410f489fc22fefcbd8c52eaecc906a9a0bd9d08c89dd44832c002e6e981d371ad47f7a5c11d6bd2e7ea13c9a63c0e107aed1cbe4c9dd44832c002e6e981d371ad47f7a5c11d6bd2e7ea13c9a63c0e107aed1cbe4c5957d999a2dfcc9df11e3951f6a35bde249f34df12731f3016fec327da91a0805957d999a2dfcc9df11e3951f6a35bde249f34df12731f3016fec327da91a080667670c2717457bd29d2fd0ce4e75ccbfbceb2dc2f33108d4cc3120870c94b53667670c2717457bd29d2fd0ce4e75ccbfbceb2dc2f33108d4cc3120870c94b53d5939ed0551fc396b611b16f6b9cfb97f476bf66762c9056445c03407939253ed5939ed0551fc396b611b16f6b9cfb97f476bf66762c9056445c03407939253ee3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855bfd76a3b1bed6cbe4688c6f86b48e176cf0b3342873bd250f505c848f9a8dd01bfd76a3b1bed6cbe4688c6f86b48e176cf0b3342873bd250f505c848f9a8dd01e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8558c2b5bda73b0f60a3235d58f885c729b3548fcae7d3385d069efb3269df6fc668c2b5bda73b0f60a3235d58f885c729b3548fcae7d3385d069efb3269df6fc66b82b4e6c90ae4afa0ada1d54b2527b6b76021d7cc8ee84c85aa7ca8a932f362cb82b4e6c90ae4afa0ada1d54b2527b6b76021d7cc8ee84c85aa7ca8a932f362c313e619b0b9bcaaa4e346fdba39396f4112f070b3f72fc4d17a6b21fe7f23403313e619b0b9bcaaa4e346fdba39396f4112f070b3f72fc4d17a6b21fe7f23403dc09a07fdd0faf56fab0a5465d7e8d1d490abc514b498237c39fa916e97db22e6348691f54176af65b283b9d7b963ca189713ef3a141aac185341173dee8755b5645a002748d5426d342a66096550e6c116c1f7b8ce04516e6cae5d5447db758f090ddaf7c683cff7a701b6b927580e6ceb69d05f7e0a64dc1396415ff7de060af8c1de976468549f1305e35e91cba79b82af012218c23d23cebced99b6b63117e881fa68fe5ec9b52df85af830c0e79b98f7cc8458d06893790b08ca8142551e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855fb620a6a5a83630794d9a78d743939e5b485d6ab81fbde786083c9c796100c8afb620a6a5a83630794d9a78d743939e5b485d6ab81fbde786083c9c796100c8add9adf4b17ace740dd6153e46f03fe10faecdd7f44e5ed72ef0daf3a32d8615ddd9adf4b17ace740dd6153e46f03fe10faecdd7f44e5ed72ef0daf3a32d8615dd422f1f09573bd76d2a3e74905ad9d15899de0c04bc13d75d6ad102ded78ead9d422f1f09573bd76d2a3e74905ad9d15899de0c04bc13d75d6ad102ded78ead986f6e467f4de567953d43b1e526d38e6c6049bd6b251df94ba174502237784fc86f6e467f4de567953d43b1e526d38e6c6049bd6b251df94ba174502237784fc1403f77182540dd1a8f810101578ed355b9ecc63cd6a9c55acf842cfb38a8a771403f77182540dd1a8f810101578ed355b9ecc63cd6a9c55acf842cfb38a8a7775cae5846f884c0b5b2d60322ee95820c589546680222e27742037e8c9d6a37c75cae5846f884c0b5b2d60322ee95820c589546680222e27742037e8c9d6a37c2d2af4d0008d70b42e704fbdb07d6e564b7effa68877e50ceeedf0ea64df57e62d2af4d0008d70b42e704fbdb07d6e564b7effa68877e50ceeedf0ea64df57e60fd0080589fc678768b17545c2608c364d07e5b6909d440dfe8155c91bd1615a0fd0080589fc678768b17545c2608c364d07e5b6909d440dfe8155c91bd1615a32d2b11b81c67db94491b29f19a4b0ee327ebad89d3ec51380ba7bfaa853e38932d2b11b81c67db94491b29f19a4b0ee327ebad89d3ec51380ba7bfaa853e389e0e94357a5d8f5b88b3cb7df74b32bdcacb01b7971ce91c56c1a689e8e46f50fe0e94357a5d8f5b88b3cb7df74b32bdcacb01b7971ce91c56c1a689e8e46f50f0bfd1b7e015da987e51e344b7ccb4711b7a363e8c47e5389e47c6bcd1127b23b0bfd1b7e015da987e51e344b7ccb4711b7a363e8c47e5389e47c6bcd1127b23b42b99e97939a5d379e994655032b79d839527cc2725bbc0a43d6760b775d018c42b99e97939a5d379e994655032b79d839527cc2725bbc0a43d6760b775d018c241ae60e6312e90358dc833c9b392c887d419cf86381d1938474a031250b114e241ae60e6312e90358dc833c9b392c887d419cf86381d1938474a031250b114ea4aa3754d86b45721ab4f34b10b0ac2383d8b7b53666165ea0ebca2105ecde37a4aa3754d86b45721ab4f34b10b0ac2383d8b7b53666165ea0ebca2105ecde373838c88110114658a5ceb8f4879f4aae417baaf15424bfd9e18cce723cdc29523838c88110114658a5ceb8f4879f4aae417baaf15424bfd9e18cce723cdc2952a96f7a28f2c07f15200a31afb0ed8c217dcf50edd783939a403a81ae7e2c2296a96f7a28f2c07f15200a31afb0ed8c217dcf50edd783939a403a81ae7e2c229624808ab1ccfb9989fb94d4061238f37d3b7bcdb518ca87b7e785d094b753ec8724808ab1ccfb9989fb94d4061238f37d3b7bcdb518ca87b7e785d094b753ec87e3be867e9e033f5839b2c396fcff8515a914c42ee96a523fd53201b670c1b1f9e5220d2f1af6500d33484ce01c944f40591da69e800c37321fbabe850953781840ed2b485b7a732b6bc6de01473b3ab085403015a721bb39bb6f74d17afac49c0a0fc5072ef6d41616c9d5aafbcfe876bd55c941c9706a016cb6d001c2772af686991c861c995eb8b0582b99b53891a1ea6864c3674e4ed15ea39537725686ec9bd49704889affbfd4ea1266a53ff0e45ec8c69d3b5a3e85d018934bfeb6dbb37da030a418e672117c3eabe05bfa4ea30d4eca82a246d7b86b44ed900b14563894b414f8253861f4d52bc1249cc6fe3cb28801fe5e0230f4670138011aa425147df16b06b88d3c7143b253f9e0d44ddd0689003116046ede0a0bf973b45c387b571152c5c21e63eedba96a1a9812101cbd40377ac95f148749c051739818e513c3b46a672e51baa58a18467a1a50371dbf1e3e44b7f9cc4ceb902c9ca14145faab5cc9c89d43d222ca20d0b8f24cc758e0d99c87e97a340ece5777e00fcccb2378eb4dc8bf123131440ea8d2f0faef2a2692791abdd85cff6b08a2d8aff3e9a1e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855baab29d1552f53d9af71ea95677d8c5ded0430f0cd7ccdda670f32d1ffeb58edbaab29d1552f53d9af71ea95677d8c5ded0430f0cd7ccdda670f32d1ffeb58ed61d96905bc4df53928399be7dc4b714d1c50408ac794902bfcb7ff97907d7f7a61d96905bc4df53928399be7dc4b714d1c50408ac794902bfcb7ff97907d7f7aa81f220f487f5c48521f862ba68e7c22b7a723d9d8c442577a9de27cebc21fafa81f220f487f5c48521f862ba68e7c22b7a723d9d8c442577a9de27cebc21faf2964178888d7107cfcf88282f8d02cee947f30e255f91085efc9345e059c39bdeabd601c519654b3c775496873cf6d523c7f4c9be3782f4d28999e9f8855e93782c8d8f68a1f0891d6a14e5fbcd06382f3c6e6e4d35744bc372968742454d96f89f5b0c348a7d63a1dfb77df241ecd990485d1e69e8f1c00998616cd4621911ca47c9f68cc99278133910c72efa1bc16c3d83480150374a1bfe52286705746ece3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8553f337d85143b10450e7ce41ef5764b840ce5a620166c784d34a7fcf7e0d6305d3f337d85143b10450e7ce41ef5764b840ce5a620166c784d34a7fcf7e0d6305d1ab85b784d144aa750c517763a7f5054fc59b0a5864e95183a7a632b0ff162701ab85b784d144aa750c517763a7f5054fc59b0a5864e95183a7a632b0ff1627076d7e0d130e70f8fa7c487e5d0a2b75fcb9f526c79583761f03cac5cd3a1404876d7e0d130e70f8fa7c487e5d0a2b75fcb9f526c79583761f03cac5cd3a14048719311d486e8a60f198749da001d8b07f0ef1146d8470a83e46758959bac9de6719311d486e8a60f198749da001d8b07f0ef1146d8470a83e46758959bac9de6258252be2f19bc221f36ddcf0298341db812f8dc303b80d8745a65b8a9d1a274258252be2f19bc221f36ddcf0298341db812f8dc303b80d8745a65b8a9d1a2740a644a25263642e1706c1e3492a3266876e70dc0a0df4f8134e8864051ddc44f0a644a25263642e1706c1e3492a3266876e70dc0a0df4f8134e8864051ddc44faa086529119973fadf36aac59a3b6e3cd1d063d5e3cfad732be3139d90ddf275aa086529119973fadf36aac59a3b6e3cd1d063d5e3cfad732be3139d90ddf2752f7a4cd7a2a19e9987e6efd7f7ec7e47d833bc0b8b0782b5097ab09983071a512f7a4cd7a2a19e9987e6efd7f7ec7e47d833bc0b8b0782b5097ab09983071a51958d797a82b9cd89c084c1b42028468bc851a44cfefff54a2a448e69c0a4da3bdd1592d675b7d2e345d31a8c6d3f5d0e53720ce14a581d5b3fe25d3d9cc41a9433d6e141b4bdc9c8290f0cc05877ec79fa9fef4585a901b9e108b5e13aade43339c47c0024ba0abf52865165bfcb02dd0419eea51a3f95a12881731e890ac6b3f5bab650c4c4fcf20b10776f52c5cf93ff38a167ca88ca69cab66ceea1f88dd227f2bd46ed7e7f429228efd68561910a1d1604d5a5ea352640ad7fd3261864eb89f724dcc1fd2e1c4c10da595ceae7b44a97e9bed7f2c8649eddc5c1e83a0334f13be2c02b9c43b77f2482f06941c4e2d0ae35f477535585926c4b33159af11c4c83a9471e25bfd16584cc967c74b7d0220c46d337baa47cfaee91bf45f51d617f37a8417bb6d5200f584e4c4b0df74ffebe8990e84c3907daa7445755dfdb0c83417200c3b7925d7ce881a180009084d00c3fca365073735d552fd049dabb6cedee3a9daea4eb281d470379ddbcdf212f0ef88c1f3354c5feae437851f667cd6ce37a844c61481f92476a76af21598fa914ddae53c689c5bf8f7cc20d897bdfe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855a0cafc2ba8593b391fa1c425dd33218295fb2889cd123b634fd133b50bae123da0cafc2ba8593b391fa1c425dd33218295fb2889cd123b634fd133b50bae123d9b44e6a66083f498f0528fa48e71906d6faa301cd9db38abf9069045071cd95b3d50a28f72a46689b50d190fa093621e8124433d1fefc5239e8e25055a448f723d50a28f72a46689b50d190fa093621e8124433d1fefc5239e8e25055a448f72af3ba755d2e57679fe2e974638087f6108c419ca95e2f53150f00749e911a4c0cdbc8b0e1ce35ce99b5127b8db0317990b2e2c34554dffb40664459cf5c41f9302e4b9aa0a428e79b548c26343c794919051fcfe7b35162bb33d715e16d70fcb70e5405196904de61a48684a9d8b13dcbf2fb216b24076c25f3913e872158bfa5729dd9a8fbbad48c6f925f78501c6a2f8a4b02fc378a4a28d9dad1431122004455f1b12cba85698fe3fe6c31e90c9680063fb7be529fad53cbfeb80e4f3f243455f1b12cba85698fe3fe6c31e90c9680063fb7be529fad53cbfeb80e4f3f2433a90e33c50c28897525fbd753c3d7d77abc4a6ce156b983d6c02500a1db33b163a90e33c50c28897525fbd753c3d7d77abc4a6ce156b983d6c02500a1db33b16654739c3a9a2e3a01e440be6e6b9b0c336f7af1a78e5d656d18a92d4092a8cf0654739c3a9a2e3a01e440be6e6b9b0c336f7af1a78e5d656d18a92d4092a8cf0a8d8f9983527e0ec332be998479b5268504308e75b08e21238a7cd181d4606bfa8d8f9983527e0ec332be998479b5268504308e75b08e21238a7cd181d4606bfc9f1f1198b148273c8fe046932c17f520320ca9580e1271d83d0ef0b8edfdbb1c9f1f1198b148273c8fe046932c17f520320ca9580e1271d83d0ef0b8edfdbb10e94764c8a8bf8dd3badaabff54c858f78cb92dc91e8278c9fc5fbef4ea839d50e94764c8a8bf8dd3badaabff54c858f78cb92dc91e8278c9fc5fbef4ea839d5b2ec394048e4b4ba7d1b388975b16ce89f0e7cb5288075c03a462868d7e3678db2ec394048e4b4ba7d1b388975b16ce89f0e7cb5288075c03a462868d7e3678d45c0a3f7d64786d066bd78f35b252eb05d048aea50542ac610580ba5ce05ac7845c0a3f7d64786d066bd78f35b252eb05d048aea50542ac610580ba5ce05ac7869a40d6e6db9506286d035c03cea9e658db32c68faa8b435a6b5523e1603aaf769a40d6e6db9506286d035c03cea9e658db32c68faa8b435a6b5523e1603aaf7672754a28541d10d2fe35bd5bb3cafe8bc41e6a70aca31e39122b893c229bcd0672754a28541d10d2fe35bd5bb3cafe8bc41e6a70aca31e39122b893c229bcd009dbd6baedbf255d739173fe0dab3c3faa8c33f0a1e7a89dab639369a4eeb7ee814e0bfb3925371de94be1b544ec7c9e46efac0293dcb3d7fa74122e879239e48d7f05b0c4e965c76b171218b31695ac7627ebd3eeee15aa7a153dee771a0b6088a79f55e20d6d0ba15e8936f07c6e4fe30d8431cc1c341d346be00f64aa9a84e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855d61ac0f36c2909fd3df1771aff9e0c297f4ff5eb7a4a14a59571b062cb960636d61ac0f36c2909fd3df1771aff9e0c297f4ff5eb7a4a14a59571b062cb960636bbb7dcc45aff7a47e256d93d12957a97df78130229bd30390a392d27f55f44afbbb7dcc45aff7a47e256d93d12957a97df78130229bd30390a392d27f55f44af6cae281270c19a9caffaf7e3aec4f394ee874bce22309f77a9a150e94960c3b26cae281270c19a9caffaf7e3aec4f394ee874bce22309f77a9a150e94960c3b25636b84a67eb3f27bc3c0bfe75d2c57bea1632d1217a599a4695bf145a14ac325636b84a67eb3f27bc3c0bfe75d2c57bea1632d1217a599a4695bf145a14ac324a3847388bc3ecee19f836d02660904e3aa5c7ca1636189f7527de7c703edcf24a3847388bc3ecee19f836d02660904e3aa5c7ca1636189f7527de7c703edcf2db1e3e3171b4e4b1a45a308612a3b3810703f721c958414e6a85604d34c4daccdb1e3e3171b4e4b1a45a308612a3b3810703f721c958414e6a85604d34c4dacce83f9503427884e0750a38a228c085d0afc6f9278c4e13912a88809b029410c9e83f9503427884e0750a38a228c085d0afc6f9278c4e13912a88809b029410c94f69c809ea410cb83978bd6c8eccba128562df7bc2babd51b000c29cfabc4e194f69c809ea410cb83978bd6c8eccba128562df7bc2babd51b000c29cfabc4e1930c93968300fbb65bc2678c3dab8674d6f472f3fde164dc6ca9a09ac7c934ae630c93968300fbb65bc2678c3dab8674d6f472f3fde164dc6ca9a09ac7c934ae6d0c6ab2c6a43169d1bf7b904bb2e1e90df440f25174a9af556b60c5c0f78a88ed0c6ab2c6a43169d1bf7b904bb2e1e90df440f25174a9af556b60c5c0f78a88e43e0ec245f3675194bef066b6bc32999b4c80aafd1912e4ca55ad4c7f9fbc4ad43e0ec245f3675194bef066b6bc32999b4c80aafd1912e4ca55ad4c7f9fbc4add5a8aa08f50b15209b4133b4183b9538b2d0cbf4432eba0323e36514e959531bd5a8aa08f50b15209b4133b4183b9538b2d0cbf4432eba0323e36514e959531bafdadbfd0cfe74f6037990c3a38f60a8742b7fa1ee9872e7c5923a0a41a05710acb98aaef7c0e5ef42047171c20b3d3f38273a2be4df537c60317b5cfa31760180fec0a4449cda58f591cfed128159492d5f8e580ed9ae2983fe5410c30060fddcab1b509fbc21a3e715fdb6844e98397dfd89c8b7d7bb37b4ec3b4fec1b3d219a8f6b2f3626339a6562404e83c7caae306a8df1a74d1bcbec453c191d3c5d395bbd1966357efddbfd2597ecefb7b7d5360820611f183c49c5b54e21a737a2d812f47e72f84b6b341e7f4896b9c5978c142dda19e7b86e2512f1170c454aedd24c540ce7fcea0e8f53e6c289e3b780596660e8b5bb7d14e5ff77c325c1c3260cbfe295eae390311c152272accb3cc1275a4811c26df686910a5cd4aea2d8cd364963d4a74f3ee4ec55cff399e6999ec5329afa6db2bf4a7f93a4a7fdf319851b677bbcbad66206d7fb90a880c339f21110b34c166ce18f0fdaab24b1f4500e17100cd64e843bb4fe781a877398576d12fcf242b73ed9d79684e510e651aca029e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8557f8ee04b936f1453d57672030ce2f751c00c5a91556d41cd4e2f0ccaad80d1067f8ee04b936f1453d57672030ce2f751c00c5a91556d41cd4e2f0ccaad80d10689942f78da85a0b16b79ab310a20f07dcb90ecd1fecfd3ad631d646329d1f77989942f78da85a0b16b79ab310a20f07dcb90ecd1fecfd3ad631d646329d1f779a1a81e7e6f5a31329cb59a309053315de614fe38de8020850d09d50a07dc4adaa1a81e7e6f5a31329cb59a309053315de614fe38de8020850d09d50a07dc4adaef578071795c517712e3d030889c0f813c462389f5f57899a5910df5364e9137ef578071795c517712e3d030889c0f813c462389f5f57899a5910df5364e9137c51db765065d2616f63873935464777ab3c1c97f61f6bd0399a44dfda224a77cc51db765065d2616f63873935464777ab3c1c97f61f6bd0399a44dfda224a77c29342c6e7fb7d8ce562f1bf0685e466ac8d026f371794686fb7e1984de58730429342c6e7fb7d8ce562f1bf0685e466ac8d026f371794686fb7e1984de58730458727b851d6adf855cb3c03f0a46677a92b8ae36d048e247e0270a28fce7c9e858727b851d6adf855cb3c03f0a46677a92b8ae36d048e247e0270a28fce7c9e86a0bee34312ecdda625048f3ce4e2fad92bc7d17a49d7437b838ae6afea93f416a0bee34312ecdda625048f3ce4e2fad92bc7d17a49d7437b838ae6afea93f41fb39222dfaaa35fca31007e13d8aa4e0223822095df88471d816b9fc3a00d611fb39222dfaaa35fca31007e13d8aa4e0223822095df88471d816b9fc3a00d61154ffba0dc5c3bcd44b90a3f6fb968035a191fa3016b5c834f7efda268b7e0a0c54ffba0dc5c3bcd44b90a3f6fb968035a191fa3016b5c834f7efda268b7e0a0c5cc3b276b9292541a23cd2f91c7369a507bdfe88b10b26354c6413ba6528b86d5cc3b276b9292541a23cd2f91c7369a507bdfe88b10b26354c6413ba6528b86d24b8dd0853bc187fd1dffc73596786ae2ca37d9a302b8134ebf050c4ff1213ab24b8dd0853bc187fd1dffc73596786ae2ca37d9a302b8134ebf050c4ff1213ab7d923a71e37f752886d62767ccf0b2fe020c15026668d0d6fa2c654d3d3d3ab37d923a71e37f752886d62767ccf0b2fe020c15026668d0d6fa2c654d3d3d3ab3ca67b1163d3d4ac4a7a424000605e12014711dd63aadd2ebc89015e98ad7310bca67b1163d3d4ac4a7a424000605e12014711dd63aadd2ebc89015e98ad7310b77db062551ec0d1538d18014546ed6e8a49c8828604a4338b6f424a16300719577db062551ec0d1538d18014546ed6e8a49c8828604a4338b6f424a16300719563346692f933c0a6091de4fb962f8d3f92e19091070bf09d1897347dddb70be563346692f933c0a6091de4fb962f8d3f92e19091070bf09d1897347dddb70be57da39478819d0c9d7033ef256ac43179914f0cae64b3272e90989a539cf8a5ee1129b31f77c10cfa22c7a490b38722f6799c2d21cd2ab4bc9c8ebdb154e4477e79e1f761e53dd37c378db0a2bb16138dee1bb619c31d9638de5853b681896a70bd4792d195c09fffc7235ffc060299024a8b325a20929a1a87fa5b00fac6f3104268aeb0eb764dce0a75e25388c96083cc1411f0b84b242e392a1ca81205d1512e97f5339ab9f46c6a6bfba7a7cfc77a1548bbbd5ac6ec0f8ab42a1e054fe22066b21beb8cedbd637cd2bb2ea1028b95523b38c1c3bb4ef0a39cf3619407bbe9ee344e4cccedc29c41ad2ddc6dd37a191485cc0b73c0fc2f141188e42cca65211cab1d75b6aaf3d1e4511f20e5432c523bb6fd53d4ed585928d42029aa93bed6874186e102bd27034231b48d4edf663ab3af1f149fe7b9cfd2ebeaab133e7da3696185a7789cb438b5e745117503577fb454eac52b5253d0b9dec7452078f6d2af7c88dbcee9a3f5a2612361191c72cff73961d16f470dedf0614d60a09b41464e9f19284fd08666847ccfd21f7b4925204ce91a6b67b27a0347a043cb8b7a8f67e384ec2ccf73bf357b01b8eba2dedd37a0bc836d34e91e25980f8b57efdac113537b08bd8f43150f3e20e689d93b1f9260ac7a6d56690ef4faabdedf559582e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85536a3a5af18093e170622fc72b3f68609adcb23ee9208debc557c354ef055431536a3a5af18093e170622fc72b3f68609adcb23ee9208debc557c354ef05543154f8cbbcf4b4cff451e22ced7070710550653a1f6db48efe46dfe0e8883d0bfd84f8cbbcf4b4cff451e22ced7070710550653a1f6db48efe46dfe0e8883d0bfd841284df0c9ed3e9b3ec2712c0dca944d26a8cb20413a1f829330e7b4565e5ac341284df0c9ed3e9b3ec2712c0dca944d26a8cb20413a1f829330e7b4565e5ac38655495980025b5cf65fd4131ef9422843a39ec0c982b167daee935407b64cee922066d2cd1e9b04d6ff3e8e95773b9b8aed9ed69fea59b5c0a04d420afb6c1357ff79688730dd96af715c4d0916aa70b63a46fda0606de5d1165a80887a0298e46dcc1400cd818f8abe61492ed08e5cc56a9d460504b666f564efe984ba8b92e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855ec628f6d764d37494cc3d92f754d842cb06de8984a40566b488fc02f067ebf41ec628f6d764d37494cc3d92f754d842cb06de8984a40566b488fc02f067ebf41d5573da51ec6980e73e4771f8501048fe1c8b45458536ec21ab35ea1620dccd4d5573da51ec6980e73e4771f8501048fe1c8b45458536ec21ab35ea1620dccd42d5cc2a0f5a2731d384fcfeec70c6989753be6af64c3e0271c4735bd897286442d5cc2a0f5a2731d384fcfeec70c6989753be6af64c3e0271c4735bd897286449acdc1d9cc008e48a87e8aa767eb54f1c5c1e988c3ec08ca7ffe739f039a015c9acdc1d9cc008e48a87e8aa767eb54f1c5c1e988c3ec08ca7ffe739f039a015ce9cfdaf62b8e94d04f97ee0db12c6001f21f6d141fb00f1ef607b5d999458d7be9cfdaf62b8e94d04f97ee0db12c6001f21f6d141fb00f1ef607b5d999458d7b5b9ae33d870a220370ecf199b7a9c9a2f6c560d8c41e849b8d5d4e2e0691d3475b9ae33d870a220370ecf199b7a9c9a2f6c560d8c41e849b8d5d4e2e0691d3479a9dc44191e7ced4751c06df8eb6e73b404cb57acbfd586eaac83c08266ec8f89a9dc44191e7ced4751c06df8eb6e73b404cb57acbfd586eaac83c08266ec8f8848f03b115e48c1b0a3e7c774371c88e7b73457f2bd6b1201588dec9c5a56558848f03b115e48c1b0a3e7c774371c88e7b73457f2bd6b1201588dec9c5a56558b8aa0ba4448f7ae304f245b3aa39a42fe3908551415fa220028cde9619e6e484b8aa0ba4448f7ae304f245b3aa39a42fe3908551415fa220028cde9619e6e484eda7b00ad71d739be97236698402a102fb1359d15256a49bff097c933b40ad1beda7b00ad71d739be97236698402a102fb1359d15256a49bff097c933b40ad1b127f973a825a80b73f71c57e46b57228c0f77e2c81f5e1c90ff878131fdc7022127f973a825a80b73f71c57e46b57228c0f77e2c81f5e1c90ff878131fdc7022875fc02cc6cecbfc4d7b68d17ae02fd6b067282e0cb3ca776e18f100eeaf4987875fc02cc6cecbfc4d7b68d17ae02fd6b067282e0cb3ca776e18f100eeaf4987d11d74e955d5f998e9a24053377c2b8e6b3db297bd700675ee845affacb5a7ccd11d74e955d5f998e9a24053377c2b8e6b3db297bd700675ee845affacb5a7cc5ff4f41ac41d5dc0533dc440494a9262067b8d5b714bece6ff22182e8cc3dac05ff4f41ac41d5dc0533dc440494a9262067b8d5b714bece6ff22182e8cc3dac05126c25fafc98b76afbc65ec9f5d5dad580046e41b1fbd67333421bc2d816f9e5126c25fafc98b76afbc65ec9f5d5dad580046e41b1fbd67333421bc2d816f9e7acafe772bde17711da66f6d4b2a6a1be48b2ebaa1c000602327cb5d59abd1737acafe772bde17711da66f6d4b2a6a1be48b2ebaa1c000602327cb5d59abd173e0e52e67cbf190a1420c773d38a98639c86a1d1f3f7c87471aecca9d3d101f1be0e52e67cbf190a1420c773d38a98639c86a1d1f3f7c87471aecca9d3d101f1b1580f5eea707a18ca363304b68de895b9a796ab06a17a049ae02251b007e32a81580f5eea707a18ca363304b68de895b9a796ab06a17a049ae02251b007e32a8dcdc869ebb1fee18b474b245b4376f1f4cd8ed0209a788eb77e498da88d619f1dcdc869ebb1fee18b474b245b4376f1f4cd8ed0209a788eb77e498da88d619f1fd138da82c2f29462f5dd6b2bf6a10c3d329264be631da8ec03bb253f7b14e9cfd138da82c2f29462f5dd6b2bf6a10c3d329264be631da8ec03bb253f7b14e9c029fd4af88ce8b69aacc5e68fb6c7a3541c80e34fdb30526f08ddd294db4342f029fd4af88ce8b69aacc5e68fb6c7a3541c80e34fdb30526f08ddd294db4342fb18d09016d1c2fe8b4c85ea002f9ced067d437cef0a5b257d77bd41aca338534ca6a0b631f11161ef9757e0e0c471de5a19ca508587168d6d06d2e5c26495f5b28104e5ce64e02fb172c2018883db8936bcabfcc7ebd13d81c0147f0a9be6dd4ad2b5c3b2d8d5f96aceb6a1197053e392d101960be6b58832c9349c2e0e61569a03794cb8f77048433a77255064a03d431edbbf9bea1358a771711e02fdd6fe45201d48b45d8f9c84b76eaee724bb456ad8be5c4ec650a65e9136431dfe5203afd46887062c4692b790dde753be25347cd924f57b18139bf0e9a4269926785272cf3d3c68e3a69a7f7d28fae3067ad0f5f6fe975ac68f2498065b0c628e7dab783d81babf6c7836e646ef44b7b03a7d5ba315ec6f99dec22fc7863f83d8a66fec4530de1652c1a9e4a7eaa7d2ff475c227b67c8d582675446b5e54feba846e136e6eb7edaeaaefbe8ed67c8f93eca0cefc3971c6eea299c7b71e8f150c3bd5c4939877e06e9c21ab3d5392eaf63b473b41a97eaf24f0763d1f8fac58b455bcaf064e38d31dbf7d290e3a985df42ee9212de49e829ba5ddf01d72270b29d23251d60814a38a05b8847d4eaa0af24cd2b9d3e201ae4e564bce308e57b3186e14335483f48d1849dc5ae787be4b841eb7c69a9d03542efbdc5a795da87c602d6df34fab53fbfb88115b1fdf7e02701725a77fcbec8cfc140abf88c357bac7149013ce1444655f11b6e6910c0294e8f1c6db32e0f2a9bc12d93c7e4b4a7c47e3a1c8712b0792316fddaf3a98969a91f7bf6dd1912217974236ee86e0b4da50374e144be24fb57629966993e068c057f62e31b47d5c02bfbded8d040953f1c00a0b31d264417c31147191f226c6577d380b16a709d6734c0145bf8f4c2ef278b7244fac63a790c68b22fac20ca7c225e43cade7fd8da878b6c0f3776e0a67e0453d2f70a91af77255e4b74c43f51e73bee9ec3cf23df481862b57d407d1d26e6fec39e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8556b5b762ae5ba02e24b6a005fc4db48bca6f7ebc3852c936fb955f7ff10728db36b5b762ae5ba02e24b6a005fc4db48bca6f7ebc3852c936fb955f7ff10728db3b2111d528bfe63e483c400b914e274686243226545c4185af383a2cb012d58b9b2111d528bfe63e483c400b914e274686243226545c4185af383a2cb012d58b9e2df4ce904fe01a50e73d7f14e4e198ce7550902bdf43eab10cd69921cfd9ab9e2df4ce904fe01a50e73d7f14e4e198ce7550902bdf43eab10cd69921cfd9ab9cb3de5745e4b1f16ad23a3e53f09d5fb7172ca423863bb6f552c5d0d005484e1cb3de5745e4b1f16ad23a3e53f09d5fb7172ca423863bb6f552c5d0d005484e123edf67ff4551e330364bf4acd3c8d73be9580511ce1804dc598a366b1ac9f4623edf67ff4551e330364bf4acd3c8d73be9580511ce1804dc598a366b1ac9f4665799b805d9f7187ae537b26d57ad4e677a1aa450fcc22f7733ea5a873a82b9b65799b805d9f7187ae537b26d57ad4e677a1aa450fcc22f7733ea5a873a82b9b5286d3bd847e0d5e6481e27606d3584d8fe91af258eed1027d71b3d8ca7bde375286d3bd847e0d5e6481e27606d3584d8fe91af258eed1027d71b3d8ca7bde37e0acb8855083f74d940987d928d665664273a8eee4c6a8e4495aefd5b5712e50e0acb8855083f74d940987d928d665664273a8eee4c6a8e4495aefd5b5712e5049e73bf56d983c198536ebe4c9aa76901d8a53eaa1600e8b1879f38b6f62d8d749e73bf56d983c198536ebe4c9aa76901d8a53eaa1600e8b1879f38b6f62d8d7576a2f0c8024bf96874a2bb2117de372ac911b2d25571ceabc166b2ca9e9b2ae576a2f0c8024bf96874a2bb2117de372ac911b2d25571ceabc166b2ca9e9b2ae57558cf37d5a2ee7929ce3798c96d14f4a17ec95bfb1da33f3259000aaf612bd7f1f0c663cba16a7d2a6c8719cfc86b3907815ece6605aaa4ebd5789b59649e159cde18ecc6b8d69cb6991415f7ccce25669786cb8652e414ce5d3b3d49137e234b41f5295c4ec687e79915f2f2ba0be79c98d61481aff71aa30bfcd5e032cac89fbc9b99e92d0880548b547dda8c27e45f6785bf683971a8ef89ded41420111e779f713dbe8c22f2409b1728fbbc378aa1c677394fd32d548a449454f127a7127c3b0ef1dc9e59b8715386a03021d01d4cb57557dbcdfd4f7ae50df84c0bcd039c4f6c9e994294805f251f330d913a82c03e12707c204c403acd7de5277f40d9474746fef7ed701494e654788addd459f2fdccb9ec14e279fec7e868161bbe1d96b91efdccea1554fe33a3c8b3b70cc4fe4d897576b0a5687ce7962174f2035e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8550cafa103d7a718a53b0c5a0dcaedd57c8a1ef84b4700d531873dda7b4c4cd0720cafa103d7a718a53b0c5a0dcaedd57c8a1ef84b4700d531873dda7b4c4cd072377fc9e4e2e312f2ad83d27ccc01e0c9878da27f6e977c35292347581e410ecd377fc9e4e2e312f2ad83d27ccc01e0c9878da27f6e977c35292347581e410ecd6447b8e224bef5d2e75882b84401eb7938e1e079ceda1311e760b454b63aabd22cbe297defd85495f057db0bdbdcba558e2c050d6d6e254bacd63347a6f1338bc7dc135798cea680ad15ba595ba1a864410b74bdd134e85d63dd503a163126a979b829ada08d98fc2cc252c74a1822be24e4dad870f1c8777a41799ff23f7178cdb72676d56192c762e0102e53a180cde3d8bf4fd9a58db95f96149444a14d699d92ecbdac1ea9aac640d660176fede304c69e5cb81d0c687fffbccda720acaf9ea308ce4d931e00970ec8295dc4af5b5106580c1f165952c5b56aca5e42c8faa8c3ebbda1bf2caba6ae9230f0ac48cd0cf0db27c48e073c05a723640a361d458f0be16dbed3192a5844a258e2ce3ba48a0161ab9e7ebef6eb0a40585ec96179d6ebeff7ca0db36aff3fa95ba0c64b0774c54195b0a8c3896e1cc79082a64bc84d7ef48fd76583f48655c6f61eb1f16a4ae4673b32c4fb5a21e29a45ebe0cb9ef68956fc62fe56c855a5addb7cf1cf5c5ada84cc0a041b9e59fe691cb1f494e3e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855ed27bae0fd8da2330fc9430eb1106cf6b19718d21456358e73a62d46cd89d2d5ed27bae0fd8da2330fc9430eb1106cf6b19718d21456358e73a62d46cd89d2d5c01c5c8b2e72858ae5bfdad812c74c5bb1ede1051b32a04c642ca413bf043de6cf6f83474f0a6db2f8206658d31acfba279415ccf276c3ad47966ba1c19e2a743bfb8d0ca74c33e6161ee6d63145e17eff417d0dd123442ac4c73c18d2813fb9e23f0fcefb7eaa9ac0914b93f03157021f557f1247cb0ccf6ccac4188bd69621e23f0fcefb7eaa9ac0914b93f03157021f557f1247cb0ccf6ccac4188bd6962172e70afc6ea3795293149df555d27bcf5c4db1640a5475d7fca95306d26c39337ff31794aba6f0f99e8562ed1351d2f17ce9ce4722056ea37f536c1922651b37760306d804a3e42756824c6df2c904c3d91332de9c4156a786be2854148c1fb3e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855cfce0d7295b188626b03a4a0ca438e92d06cbd1339eaf9c759f648340fdc2bfdcfce0d7295b188626b03a4a0ca438e92d06cbd1339eaf9c759f648340fdc2bfdb1a7024167171beb9485181841c19bed1ca25cace3e07ba609ee135c446e6317b1a7024167171beb9485181841c19bed1ca25cace3e07ba609ee135c446e63178f10a5e8d5ed849341608f8d7cce5612b09d3581f3e789b89afa0e43ba22a51f8f10a5e8d5ed849341608f8d7cce5612b09d3581f3e789b89afa0e43ba22a51fa9f994d77216e5a2418078340dd353d9a00f1fddaa9350ba7d31e6905ab92905a9f994d77216e5a2418078340dd353d9a00f1fddaa9350ba7d31e6905ab929054821004f739837c04f2871dab3223f567b4087df689130598f8242fa7286d6144821004f739837c04f2871dab3223f567b4087df689130598f8242fa7286d61467adba83e8ec1384ff52b040b8d5c70e125d07bc4cf8bdfee2905f0b7b0648f567adba83e8ec1384ff52b040b8d5c70e125d07bc4cf8bdfee2905f0b7b0648f5111c69d437f3ca7856ec42c9f78ce13a0a019f8e9338a8e953a509aed3335c42111c69d437f3ca7856ec42c9f78ce13a0a019f8e9338a8e953a509aed3335c428c5ae75302ee5cb9fa0b4e0b02b17a075e9a59dbfa38108488e99ff2ede816ea8c5ae75302ee5cb9fa0b4e0b02b17a075e9a59dbfa38108488e99ff2ede816eaf9fadad166d3473df3a98f77a7bd58babbf68785db5c1d6e4b53e2d8c79bcf78f9fadad166d3473df3a98f77a7bd58babbf68785db5c1d6e4b53e2d8c79bcf78b4ceb2bd786edc0afd291339e94661d40fbd2a95b5305bfdf0c04e1facde4ce8b4ceb2bd786edc0afd291339e94661d40fbd2a95b5305bfdf0c04e1facde4ce8978592800fe7ed2c297e7a59458ec6bd5a9acfc9054474120f629104f9778a7f978592800fe7ed2c297e7a59458ec6bd5a9acfc9054474120f629104f9778a7ff1a68b989954b855fbd317e15505713782ea87ddc7abaf84d84689bbbcf76010f1a68b989954b855fbd317e15505713782ea87ddc7abaf84d84689bbbcf76010ca50dd190646c1f14a8ca4aa7c1f8c3f3ded90b4533c902c706693bbecda3232ca50dd190646c1f14a8ca4aa7c1f8c3f3ded90b4533c902c706693bbecda3232f6d1c777861a09aa727a6e77d3717b88889649ee813cb954efcf87dd3d93836ef6d1c777861a09aa727a6e77d3717b88889649ee813cb954efcf87dd3d93836eb2667d77febe74985b3cf561d62974e7916b383613cdf38db51fa1b248741402b2667d77febe74985b3cf561d62974e7916b383613cdf38db51fa1b248741402b5722655fe74f2402c1b62ba4578d4087a4b99f8976d5bdc05487c36567608e2b5722655fe74f2402c1b62ba4578d4087a4b99f8976d5bdc05487c36567608e28014d020064d81fcf476d94d78f53bcfff999b8867967e3ec9bc3645c833c2ad8014d020064d81fcf476d94d78f53bcfff999b8867967e3ec9bc3645c833c2ad830e062f1c8645474812d88c718442d8d1b90451ce8deb9851d36069e5e060b4830e062f1c8645474812d88c718442d8d1b90451ce8deb9851d36069e5e060b4356068d744b03431383c50907df771506928d1c6c8f8303f90d8c6bec5e59e05356068d744b03431383c50907df771506928d1c6c8f8303f90d8c6bec5e59e058f1e0b7b3f0b6d08be8d43f00045e8c046ee6dd687446144317ab74d142e67bf8f1e0b7b3f0b6d08be8d43f00045e8c046ee6dd687446144317ab74d142e67bfe0d20b5be687cbec1652795dd8fcbe3b98487b14fc23c85728b744ebe85d2af7e0d20b5be687cbec1652795dd8fcbe3b98487b14fc23c85728b744ebe85d2af7c6909b229efdf8763dc091b287d657736854c4e9cc5d0d0b8a0201dda6ea1f54c6909b229efdf8763dc091b287d657736854c4e9cc5d0d0b8a0201dda6ea1f5442e5242342e2015f6ef1f8a5a79e15bf872df20c186aa751948a4486efadd64242e5242342e2015f6ef1f8a5a79e15bf872df20c186aa751948a4486efadd642069b745c862ea99657a1167bd2e86675ee0b26ff4a1ae86835d048ee98ea5f4b069b745c862ea99657a1167bd2e86675ee0b26ff4a1ae86835d048ee98ea5f4b25eede99a8be4e733ff87681c13e983e4c8725808496f47d1ab5ed205db44e3b25eede99a8be4e733ff87681c13e983e4c8725808496f47d1ab5ed205db44e3b37661f510edf295b07540ef88e91ba37ff7571658310fdc79fd79dadb6f248d337661f510edf295b07540ef88e91ba37ff7571658310fdc79fd79dadb6f248d32c500fa056e8091d4e4ec07690e6757b81b4945066c454cd1fe5921892a552a22c500fa056e8091d4e4ec07690e6757b81b4945066c454cd1fe5921892a552a25671cac1de7205c4dc9a005ac1199ff20e692f4e1e8e7bf5a7305340b1d6ed335671cac1de7205c4dc9a005ac1199ff20e692f4e1e8e7bf5a7305340b1d6ed3339c123ff1074bbee7b611feeeefa62a462d1fa673e1b776a4c577aa2d3ad83f839c123ff1074bbee7b611feeeefa62a462d1fa673e1b776a4c577aa2d3ad83f82c0b2276add34cf4eddc16e502b4e43061616bad8a1276fd25212cd9790c39552c0b2276add34cf4eddc16e502b4e43061616bad8a1276fd25212cd9790c3955ae10e3f14222d0bd94a68bc0a447cb467917d8d800f07edd3cb96977bed0b873ae10e3f14222d0bd94a68bc0a447cb467917d8d800f07edd3cb96977bed0b8738a63d0f1a4cc1ff9acd34dfe82143c93ac3e0b431d1ea640c5cc27edf03928198a63d0f1a4cc1ff9acd34dfe82143c93ac3e0b431d1ea640c5cc27edf0392819ba636d5f20a82658adf103902951f80af28f6013cd2fe6a81ca185a69ef3af21ba636d5f20a82658adf103902951f80af28f6013cd2fe6a81ca185a69ef3af216d586a765e74ae57608580eb0027a006d56ec41539356c5be3f2e3f67df1fdff6d586a765e74ae57608580eb0027a006d56ec41539356c5be3f2e3f67df1fdff885fce260c41b1c9e5ded850ef048552fb7bf6881a232fef1168c7054f16afa0885fce260c41b1c9e5ded850ef048552fb7bf6881a232fef1168c7054f16afa03553b970b2ec5411319f5edc9cd5bc58b8a97803029a31103d725cc12e75e6db3553b970b2ec5411319f5edc9cd5bc58b8a97803029a31103d725cc12e75e6db242861c006e9baa030a89cea0fc018e6605ac3703d4c5c04bfe3985e1a6d3647242861c006e9baa030a89cea0fc018e6605ac3703d4c5c04bfe3985e1a6d36472edeff3f3df6cd9319594a542f2fb2023bb7e024d9495c707fac28d0d3d0915e2edeff3f3df6cd9319594a542f2fb2023bb7e024d9495c707fac28d0d3d0915e1be61a70823b8989073afb66ea09b614eab686f73e85793171c92046513ef1641be61a70823b8989073afb66ea09b614eab686f73e85793171c92046513ef164c4e80622c23c34b95e4d528ee73294d15fd7503662abfaaca294cb9b629881f7c4e80622c23c34b95e4d528ee73294d15fd7503662abfaaca294cb9b629881f73ef497dfacd67568900076c14beb85e48a76cbb2dcfa47026c198bca871b5ca13ef497dfacd67568900076c14beb85e48a76cbb2dcfa47026c198bca871b5ca1025a6059466a2a9c29b2590b78bf8675352db24fb5cebf7d7b7e61be4b14f7ee025a6059466a2a9c29b2590b78bf8675352db24fb5cebf7d7b7e61be4b14f7eec92d182d8d58560aeaf7e681a02e6c3e0c3f54a571081f8e474aebb425598a44c92d182d8d58560aeaf7e681a02e6c3e0c3f54a571081f8e474aebb425598a44d4e8b44a0a823e37a23ab92b48d5b8ccd8224987507fce8cefe85ebb7cf75433d4e8b44a0a823e37a23ab92b48d5b8ccd8224987507fce8cefe85ebb7cf754335558c6e17c603a636ee4575744966246e6b1195401b6adf113e0502708c968fc5558c6e17c603a636ee4575744966246e6b1195401b6adf113e0502708c968fccd0602bf788238fd61b68db356e357fe2559a0c30dbc04f029b8802e3c050b0dcd0602bf788238fd61b68db356e357fe2559a0c30dbc04f029b8802e3c050b0d8106d9bfde2cab07a40378e9326a09c2563cd93b636fdb109ebdd6a9fec18cf48106d9bfde2cab07a40378e9326a09c2563cd93b636fdb109ebdd6a9fec18cf4c0bd971f651d85788ec54b67b70e97719c14c988ad861874772c01b1b5e5b2d4c0bd971f651d85788ec54b67b70e97719c14c988ad861874772c01b1b5e5b2d42d0612a27eb7ab8811ea55b98312f51e6aa15f16cecaca5302e479320b9ad1382d0612a27eb7ab8811ea55b98312f51e6aa15f16cecaca5302e479320b9ad138720ed1a6a955c19450c368b7cc977b6727985c153c86ebb168194242944e8cfa720ed1a6a955c19450c368b7cc977b6727985c153c86ebb168194242944e8cfa8957c47240ad1225a96d3359be839c5241cd835b1317aa2b1ae4669ca4c9780d8957c47240ad1225a96d3359be839c5241cd835b1317aa2b1ae4669ca4c9780d9bce82b3638f4b3c6005c8ef418af6cb579cab52da70e294c742365746237dff9bce82b3638f4b3c6005c8ef418af6cb579cab52da70e294c742365746237dff5885e6d2cfc48d1b4daee61daec68708843370a83b95c83ea6612105a9789f795885e6d2cfc48d1b4daee61daec68708843370a83b95c83ea6612105a9789f79cc525470e0100d5c7c8e9a487a363c8a4c00425f5a20e0f8ecc8072ab27bbe79cc525470e0100d5c7c8e9a487a363c8a4c00425f5a20e0f8ecc8072ab27bbe79979aa13152c5a6120fc5ce6ca5a88311bf48d89da93d4652efc3647c06286fe9979aa13152c5a6120fc5ce6ca5a88311bf48d89da93d4652efc3647c06286fe9739f1afe7161cfe5f00bbf8db7682ce3a7953b8bb6a9c37360bba1b284b816b4739f1afe7161cfe5f00bbf8db7682ce3a7953b8bb6a9c37360bba1b284b816b416ac43b9d620f8b3b08c6a87f5a38e310ce9c3b7cb17af362f51d88ed76e509f16ac43b9d620f8b3b08c6a87f5a38e310ce9c3b7cb17af362f51d88ed76e509ffde8e111b7e80a16117f79cbb40b8cc6a98999decfdaeb906f1c5b5d7aed9210fde8e111b7e80a16117f79cbb40b8cc6a98999decfdaeb906f1c5b5d7aed921006583465e395a1b04b0709a2f2eee533b64dd07a9dd494a3c7b1252e2ea6bb0606583465e395a1b04b0709a2f2eee533b64dd07a9dd494a3c7b1252e2ea6bb06981569b7c7954ae79b040b766f327b09ea06ecb408262decfffb800e0f852eff981569b7c7954ae79b040b766f327b09ea06ecb408262decfffb800e0f852effb25a18a5ef1bd23d48ba8ea9d69658026085e9d73abd907fd17fa20c46691f24b25a18a5ef1bd23d48ba8ea9d69658026085e9d73abd907fd17fa20c46691f2403c7bbf7291bf1ddf2f7e7ebb6e55390d6dbb7c4569aa81eaa559febc322f47103c7bbf7291bf1ddf2f7e7ebb6e55390d6dbb7c4569aa81eaa559febc322f4716886c9b183f4326221d39f061e827186324e580b84c441c41c8abcfd792036f86886c9b183f4326221d39f061e827186324e580b84c441c41c8abcfd792036f847a8c49874978a5dfc32c599e86b840968c8ae24d4aa7d8a86d288c1fe2ce7a047a8c49874978a5dfc32c599e86b840968c8ae24d4aa7d8a86d288c1fe2ce7a095e435860c96c74989ff69e4a55234c27667ea570cd18ae0ef5f31b1171e4d2595e435860c96c74989ff69e4a55234c27667ea570cd18ae0ef5f31b1171e4d2594675b56a6666cfd2a5165b8172a5a05f27db30f36dbbe4a67b805b16ea08d0f94675b56a6666cfd2a5165b8172a5a05f27db30f36dbbe4a67b805b16ea08d0f84e4c06b789f840a9b11089cd922ca4afac7fc5c8a81200bf363e780f29771c284e4c06b789f840a9b11089cd922ca4afac7fc5c8a81200bf363e780f29771c2f497ec661811d93217680ce5f567dde7bc6990e5d21c1e77974314d7a8a73405f497ec661811d93217680ce5f567dde7bc6990e5d21c1e77974314d7a8a73405201bba8597e396020821071437db5f9ff73bbd3d85720b488700d09e7481a4cb201bba8597e396020821071437db5f9ff73bbd3d85720b488700d09e7481a4cbba5eeab8ccd62a9e3e101a68c908ab79a78d3e8f5af85a4dc1b62e2e55fb01a8ba5eeab8ccd62a9e3e101a68c908ab79a78d3e8f5af85a4dc1b62e2e55fb01a8943b1cde74ce2964a58c97315fc31a50d28c4b50bde3d479a4b634ed779bd3a8943b1cde74ce2964a58c97315fc31a50d28c4b50bde3d479a4b634ed779bd3a800199ce0827ff6d298881b680bef26e4af65899a0545d10787c8a707f977fb0b00199ce0827ff6d298881b680bef26e4af65899a0545d10787c8a707f977fb0bc126861a1447423ad0b53fb7c493a7bf30ea92bb3474f3c56fb97b5e89bc638ac126861a1447423ad0b53fb7c493a7bf30ea92bb3474f3c56fb97b5e89bc638ad6cc6283cd8ee2be60cb433c49ef5722ae0bb7a9302852292525ede9ec7cd01e901d01d7863b69626f8671e802bb4e472464420e8912208a0daf4b7da735b1c0c48144fb750614c04af67759c55c757a3d0b01532d334b3ddf91500cd999acc2f1a1534fc69bb6bf239c7ad1005970f59321407a1acf243d733c6d230d7bfc11a792ecf4783476516e71eaa7a26eb4cf09d5c59829e56ef71f8adfce4a67e7371007c9110db5a6074aaa1a90008fe97c92103f2297d1710fd813fa90980b0a058ae34c39ba75a622c86a83beed98ae794362b64fb90835bdde5f6254fa9de7723a303413b966f26be5c5703bebe1d5be373f1f57c769ed04ba1db97b163a804703fe9bf991ca58807c1b99a09faac525e65fa14b6a50ef34a2b1f1e63e5304f622d9d8aaf8a3fe7e14391df8e047ad27dc67fda6c2023e7faa4949fabce537c0d80d6b87d32997ca05813792ef1995494675bfddb423ad2330482b9307c1c328a91e5e3dd23719941e0520a7f58ab14f15a53446e509a4c59c1459a8b8ed9cfa48b24cf1b04b73bd1662edfe380ebbc1de6131fb77a739d800c2227583ad9945638f54e6933a5292af600bc36ce8587ba92640501ac6397b6286273eb39a18650456f3ad4fef97e4ebcb90ee2d5db4fec2e0ab110994f57db8eae002d6f2d9efaec6f6f248cc3274eefab3d6d0f7676ecd913f2bdf7615a05de50e4544a0cc4272c79ba1ffc6fbff473c3449c3ae5b9d6bf8f768d72f93a6ecee1a770e70d178953581866545adfe8fb15e3f068476df055324e968087d5834f7009f49bb0d363b87a6468274f62dce2e6557e63f3858790629683a6cccad6296651313ab4a67f79cfc8c5c956a2cf0c2ea5271ed38923d70c273a66ccd28a145fb99796ea325170d64c12a1cb398bef56b6ad438946a5a2148a9ca0ceda63f4f8da5e9a4cb12e5ea85ea46a1e34ba4f4970add41a94b7a1de5a65819e1d3693d2295ad13554c7db90ae50ce967e439020f6b4bcc1e849ef12ffc9e23748d047ff0defc344d0c506aa49293fa29de78af553414af09d656f64341b2baebb160cb76ff80c472879e24c8bb3673f104a33441afc7a8cb6ea0eba2757f9f5c7ebb6592ef42031c33cf311e24ceb81ae21272845190b81084b262134d993310283a786a5503bc28bfd2570847d7e2b0f36740950bac889c69743aa219b7fff8bddd91e8466dc8ff97921bfb3955de374ef15537fd5dffa47b59e005523474476ad5c58721e834af4a06fa8c8a5ea9548fa4daebcbba36263b7b894c614ffbb16f55e61dbf98b86432c726f719dce4cccaaf0c07f9a1e8b9c807878afd1c2a53b51537ce609c985b689c395f491e1cba989576aec4beb0028030dafacdd01238706072dc3396ff8e0d616444fca4dc9e525b8bac5ab4e2e8635391a123da7fdf27456da36c51c91cb5d6c84562ffc3fc0b322329143cfe140fe0378d27d9ff63872950576daa036e7fa4084bd8b33e320246b479a3cb50a4cbed995241794e93951ca95f9e13ccd01197154b2ff484db74d1429c13d6ad50a877f6108be1cce174aabe0bce2d2a8c662322e3863229c023deb3dcad43b6f31ac2e025142e88e16ab7c9f34d485c9e67f009fdd8d53ae65f0bb308f93ed7f8158aa613b642e1b1644cf20f9860d6093940f0c4420a151d22c066b7efe33aef4d46bae70e4322fc1219a39cc3d48f4c6f64052865025825ee07308b6678b9ab19358a3a84ff43492e38f18453d62bd9890d096f1f8ad0181bd1237cef177ac727b9525cf123c09c83ae5a884eb85face14db445bf3e79054e3bdce239485b7c7124115577eeebe309e646bba27e3a1246a0946c2cae14f68c6c5b858d00b31e1a63e15a9656f4db0c82cc30cf769df313deefc3394e7b872a7bcb5a9cb137c17fea161b592a536f53f86f4e431762c2aa33e042aaa9142af48faa9b74abf6896b458cfb703edb5542e194c781fb59d3d7fb149bab75ccf9bbc48a9c7be8dcd65c82bd68711bf0b52ad07a4bc8bbad36e69ef049f3abf5c21b8e54c6afb98443834e7ce6eecad2889db751d1c8630b6bcadfe0a045d28943de07ddbd0659adbde917d868c8db2ff2d8c2eba3adc4a29d84570f43ba5e5959401654ba641fcf460ae9bd1d571237922c0fa156b4e2c8bd222fb248dd5158e0d28f95002ddacdbbb278070454862d51bf976b1652ac1e91c9057148018e853b10392c2beee916a77953eacd5aa9b45e6175698574943adc186dc9f80b706e0afc0413511b73b200e4d18e8c4726922024c7c8c10e3432380c90b45f8c4d8db3df45c2863c821e62dbcdc0ac11957165c88ebc5ddcfb031edcf409984f27be11fa40acba25389a08153401ecc773687eded1307450a5d169c3893ee44165dd5284985ae7bae9d9aa603516ef8b3fc1494eedd8b19dac0f920b465659b8c278696d59f046daeecfb20e50711e75d2d763a66288963a8a320f363b2277697adb556e726f0a7222203e3334b63de5ff5c62bb5691bdb1a1e98c56a08027f51c52363a3fa8981a61c2541b38bbbd4dc206ce5cfb21477a3433349753d874cf73b1937f53292919f528af1b4e5644a060bd5b6d60529d698eab6beb7dc425e80edc75e04e606085a0ee6b287d9f5d8124f0fba8af43dc0d8897665d598ecf71c74c31452155a5c8845a75e60c13024c9b5efc9dc859f93b34e8af6a9a4590b394028f60c006c74f89ba075dd5090c3894021736f348842f5eb642469a4590b394028f60c006c74f89ba075dd5090c3894021736f348842f5eb6424679cdad0a5865dc8d3cb2fcd0e94762b9a2e6b0109c27bef159d08a570b3a58fd940f5ef25c855dff49e6e77447a264b7cb0817245c3b0ce173d273fb9fc739940f5b26dfa181fe6122987d027d6ab5709e30d5e46fa5cb07c19fae7d5cc2fc6b24b2ca0f8857703d4b83de1b7cedcb9964ab809a7da43f56e41e9b3ac4c39534ae1c9b2d2c25722c04bd36f14cebe045366076b0ab98f68b49fa1276222ed17ac34455b73f3d100d89a408706affc9fb698614a9c47d6eccc424ca7ae83eaf5e5db5a552be049602df771a37a8237b33e2044bf5f68939770206b0cc238c429a5571457181bcf042555e7ac97dad1fce1f6b0ffda5b92b72fffa9dcd1b930101f324b3e5b84aecb192693ffb2739378ef0027279e0c91da0ff38b214b2a4e91914fc8dad6ed23816469730baddd3f4dd0f8709c1a1602236a4b96a614435ab2f34c3fd6642b9f5235d424b70efa6960175409b95363ce5cb8002bbc07fb5874826bf956e15f26e215fbfb66e3132c510b816cc9f7d6c02d5793608e344e06bb726bf956e15f26e215fbfb66e3132c510b816cc9f7d6c02d5793608e344e06bb773dadfb4ec1270709f07fa2aea0f293a8cfb355a8f3901b8db7ce3653706752473dadfb4ec1270709f07fa2aea0f293a8cfb355a8f3901b8db7ce365370675241d422d5cdc891a1fae1c28bd1a669910c0e5a190109880a4796a85f9ad26dfb21d422d5cdc891a1fae1c28bd1a669910c0e5a190109880a4796a85f9ad26dfb29d8e919be81869d004b79dd31b415bbc08044c276417bd1dc27fd16f3921f1b09d8e919be81869d004b79dd31b415bbc08044c276417bd1dc27fd16f3921f1b0d25d51f47765daea24c3bde37d2dc6e79217f3864f68c81fd06389ff492f0cddd25d51f47765daea24c3bde37d2dc6e79217f3864f68c81fd06389ff492f0cdd15b09fa3103e997c526613767f0e6c95a30cfac8c85b4d860248a3df49b1de0815b09fa3103e997c526613767f0e6c95a30cfac8c85b4d860248a3df49b1de0828f6f56083376ac910ddf9d5f91d2ff497c7521600395600179d80276a1d727d28f6f56083376ac910ddf9d5f91d2ff497c7521600395600179d80276a1d727dc2bd77c116322bf54f055922fb9862b096592b08b54f8ad28b7ee05a3ef3ace561550a693048e6aff722b94292aade63e639377c41236dd120472fc70c3ed2e406033b5ace8c556855896e2449d633c217e0d24d7e2afc8b0b8e5f2753126e725c1a5e1002c2f9e04e6493cce233cfc5b2aed1d603443c941b84930d4b2b7fda268909a33cc593b343c431934d97ab7c19ed065b35373356c8aec0420b07e42f81136e464004b1ffa4a4619ecebafba053b62643544b1672dec9001731b2a004991bdb0893c0fbfbde486e646b7bf4e06e6fb1aacb543781dc4585b2eea079229d013b33797c008f903d7b7ad69f115748c5a0fa1e4c95955eeac4787d0fbe8c9d013b33797c008f903d7b7ad69f115748c5a0fa1e4c95955eeac4787d0fbe8c79e42f00f3c0c18370b216b21b72b0a01fe3f7fad23171c3b704963f3ad6963d79e42f00f3c0c18370b216b21b72b0a01fe3f7fad23171c3b704963f3ad6963d9688d0fe0c0dc72f3ec0f2d0ded9476430c155e1ada5160ba140285b21f165629688d0fe0c0dc72f3ec0f2d0ded9476430c155e1ada5160ba140285b21f16562792ac920de3019bb131ff5ab55ef1a992b4f956f8609036d2a5f56d770ff2bb2792ac920de3019bb131ff5ab55ef1a992b4f956f8609036d2a5f56d770ff2bb265de4e63e77ccd692e3265d5ce711396ff36b078612c81131983caebdcd34ad6c3b83b2d5ba4d68a7ef6042c9cf30b9da2c34bb6df34e388cab59931d94f6fecae04fe8f00d3836799c45a80cb2dc5d467ca8c9acdd54f886c07d17bfff1c610eea95b533b1568fe1c2a93db1c35a227d9644b1784f4534c863db99dce99f2cb7c442793e932ea2ed0c85606be592edd346d7f61d6779e2c7859203907a938857c442793e932ea2ed0c85606be592edd346d7f61d6779e2c7859203907a93885991bdb0893c0fbfbde486e646b7bf4e06e6fb1aacb543781dc4585b2eea07922db48a11fce347c6b0416ee77ebd534477907be0a2af2df94d9f75bfdf8d783d7db48a11fce347c6b0416ee77ebd534477907be0a2af2df94d9f75bfdf8d783d71ae30c302bbbd689fbc14d7422ce49b75f2f56ff62f81a562fc116f3eeb37e8d1ae30c302bbbd689fbc14d7422ce49b75f2f56ff62f81a562fc116f3eeb37e8dbd572ff821fe5db2e66c12583f757a6e1ac5bef1121eeb0cca53fb7cb0c640b2bd572ff821fe5db2e66c12583f757a6e1ac5bef1121eeb0cca53fb7cb0c640b256184410229484f7544f1d1c80d33d0a7b68fe7d9ea42db3c2d375891de1876656184410229484f7544f1d1c80d33d0a7b68fe7d9ea42db3c2d375891de18766151c50d8f6620053e378abf06e9bf3c456b2481500a2cb58efcd5aeb512ba76e151c50d8f6620053e378abf06e9bf3c456b2481500a2cb58efcd5aeb512ba76ef20c49271d8acbf639a671e7e3c24ad0ac3c478ad6f6808cebe21f7690a02bd4ad2bca395decb5a6b159035c90475a82d6ea7f15616324d5bca23224bcd249694b7b005f79f67badb23dfd2f8a879d687e59c67d18872a67ce1d87d9da30b5e63d01f03c2a7e2baf8077fcad3bc342ce8828c021687587788b921dfc66c8339a1a6f282249fdcfdcd204b61754988f7179df2e39359495ee1cfdef4497501795b0e04ae6c10c34818bc1bf29e8fac7b2994ee9f3c3f9a94322126fbb2fce8591b0e04ae6c10c34818bc1bf29e8fac7b2994ee9f3c3f9a94322126fbb2fce859112bfe502d891dafb0fc93ff62e9031be5c06a3ff4f77ecf7076b65d48eecc30312bfe502d891dafb0fc93ff62e9031be5c06a3ff4f77ecf7076b65d48eecc30386e8b8cd032e4d484b2c97f8a661c2a3ca914f0cb070cc5824ab77be514f9f0986e8b8cd032e4d484b2c97f8a661c2a3ca914f0cb070cc5824ab77be514f9f095c66d898c63d330ec5b888fe0447dc4c95aaf58a9dbd7346d271c08f244a380e5c66d898c63d330ec5b888fe0447dc4c95aaf58a9dbd7346d271c08f244a380e04eab49b94e8a5a31c0b10105ae55a9263a286079f1b9feec54eb9836d9c937004eab49b94e8a5a31c0b10105ae55a9263a286079f1b9feec54eb9836d9c9370d30b82ed6c4b5114f01031f8b526db97df14b246ab29b44b86c13d026812514cd30b82ed6c4b5114f01031f8b526db97df14b246ab29b44b86c13d026812514c8d0fd4613d113afc42a87aa0b3e26849db9822cd0e5132ec9e8a64de418cfb4c8d0fd4613d113afc42a87aa0b3e26849db9822cd0e5132ec9e8a64de418cfb4c8e494a404abe916536404fd6dc1c8bac8fe09240b2cee852c3b3d7415e0119bb8e494a404abe916536404fd6dc1c8bac8fe09240b2cee852c3b3d7415e0119bb99f4375458a9af81ce359e561a7994f3c05ea5ab75d1246c99f2b7248397eed499f4375458a9af81ce359e561a7994f3c05ea5ab75d1246c99f2b7248397eed41b865da41dd3edc7bea4418b3a9025b96f4048f5df3b4e316437695799999acb1b865da41dd3edc7bea4418b3a9025b96f4048f5df3b4e316437695799999acb97c019b13ee48e81984b040ed2998b57cfb927c27207cc645224cacf3648e33a97c019b13ee48e81984b040ed2998b57cfb927c27207cc645224cacf3648e33aee32c4d95633add5d35e99f43df477974c12aa938133a46446b37f20ae644e65ee32c4d95633add5d35e99f43df477974c12aa938133a46446b37f20ae644e65b1cfba0d8a6983289f8f684a759f22f1cdbfdf9a5250bbbcc55d783951d7648fb1cfba0d8a6983289f8f684a759f22f1cdbfdf9a5250bbbcc55d783951d7648f14d90b8defe797b6fd4ac2fccf481c14a4b2e68bb935cdd7833dd7bdddbc00bb14d90b8defe797b6fd4ac2fccf481c14a4b2e68bb935cdd7833dd7bdddbc00bbec93bf77541b62d9a2dfb75ee56ff48118d279d7e8b6a976ff0a046db5a6bb75ec93bf77541b62d9a2dfb75ee56ff48118d279d7e8b6a976ff0a046db5a6bb7515dc116bc70e2cf8c4a5ca6e967896c0f4ea3fd810a7263a4f1df739fcc5840315dc116bc70e2cf8c4a5ca6e967896c0f4ea3fd810a7263a4f1df739fcc58403654da99b6f0d9402b9ad475aa3b3272b438920775a8a5142071a834c287e80d9654da99b6f0d9402b9ad475aa3b3272b438920775a8a5142071a834c287e80d95c332a32ec03aa6ee98640c544a79f8730350f9deb7553c71a97a1c2ce3b155e5c332a32ec03aa6ee98640c544a79f8730350f9deb7553c71a97a1c2ce3b155e45c271390100be887fc0642b2886dd1314737f0aea6f33cc1db7205ce1fbf08c45c271390100be887fc0642b2886dd1314737f0aea6f33cc1db7205ce1fbf08c638178b8facbd0658f8b56e714f27483b09a08ce233c7087af61dbaf634bf266638178b8facbd0658f8b56e714f27483b09a08ce233c7087af61dbaf634bf26674cad912146ac193d4d936d69c4b4edfff6d8256cedc212275b56377b62096e4b7f037e65e832c99891ea0149b5483161d7f24849a1300f747c5c3babeffcb8c65081bc33aa1e9073129b8d0916b55208fa44a259e00c3e5221fd4ef91fe4c3db4937813d9bc75173fe943648b6d61b628ad89538c8fc4f8191d51080ad132a2caabf57e3404af4d66c8d5bb95e8d629f0a5e3de8812dbec214a09dfe794fd75041730d8653ce55ee899eeea5f429183ebd9ca3bf627cf749041e36103b2a1391172839bd14410f8679e78b3dd9b446909540b3165da77b6f80af8d54f304f65902ac14e1ce621158a69e70b97d50d07c541bed54f23476df1e1e906576c9e568c550cf7b8a00106acb65068f31d3e4a6c2c4d518ed5fd123d8e7cf7a68c80f8f8f776d20bcebf61595ba45e6a889c8e322566227549ceb4eeb167c2daeac9c617d721e1f21c62485bbee30a655a86ab3c73ba30d471c897a03a17ed12b8e13a310cf8559b8e81adf954b71d53155df45415cc583e763b50661b34f434b68ee01630dae5d66260cd37d604d6ff82d26e07595cc499c5f523038cf8039cdb5bf9044397237c5fa85c39003feb78a6c9ba5a71246830606fa32efb3c458e1241b822a755144e45ede1270ad97bf37f5cfeb87dcae7380383b3e622321b50eda6d58331c50578062a9aa29aceae70ae4293188bbc7c50f4ab7659c738d5131e361455798e05013823a24d0060c590082c016e44b1fdc3e94b40b9c78b96e78c80fa55798e05013823a24d0060c590082c016e44b1fdc3e94b40b9c78b96e78c80fa84833e6d35060b6891d3f841ee8261caa89cb6a1cd51a5c2c4a0dcec47cc4b2d84833e6d35060b6891d3f841ee8261caa89cb6a1cd51a5c2c4a0dcec47cc4b2d109769474ac17af2b1c79cad520c89c9154caf5d7a568cd95a08d8832c5fed41109769474ac17af2b1c79cad520c89c9154caf5d7a568cd95a08d8832c5fed41586c4d78888488a1cbea6469104836d43e1b601f0141d526a8724c1059a0a5c7586c4d78888488a1cbea6469104836d43e1b601f0141d526a8724c1059a0a5c7f60a076d940f16e7ea1fdc8e5b9fcfc3a3c0091f79b5852075755ea9dd50bb79f60a076d940f16e7ea1fdc8e5b9fcfc3a3c0091f79b5852075755ea9dd50bb7964ab3d148de4a89113147321fbc94e1fac4663f836b22b93c588108f95647039f5ee08be70f7257a89515fa107bae21a0ab44a3aea4064070e0f9cb89d6f4e5a1d4b91e7008a030fbabab9004780cac5478e56ca857e54831e366e59d0429b1a08d80b6b427acd9936610fda7802e78d0bde8649055e1acaf0b41066ced9b7373428031ed5e53a5b49d175d28064d3c4356b2c2e8805efddf5280d197b6c236d3df6e24210c369fc0a8dadb22249c94c40073eca5beed3e60910c43bff209af68f94db7d9dbb203af5b12243a6cd525597c35b39f337260908ef617887846523447ab3b291cc03bc2e22cc0377ab336580b2997895a96945d498a5ff6c91333e0eebfce892193eeebe967f8c3f305bab4f04c74b3a3ae2bb9cfce8866d1c30f5218e43cceba44946333cd84c588eddd34312e3a3b788a69df1576149bed9073f218e43cceba44946333cd84c588eddd34312e3a3b788a69df1576149bed9073f7280a5d3fd434fc1cc0952e68101d67989255acb0ee03a8f2ed6d1172a1606e47280a5d3fd434fc1cc0952e68101d67989255acb0ee03a8f2ed6d1172a1606e448e70a0b84e4302e764df007e578fce8104ecd440aa3118dc38e31eb80a0ce7748e70a0b84e4302e764df007e578fce8104ecd440aa3118dc38e31eb80a0ce774fa4c6dea2d72feb83e9a3477e50f4e510a240413b6114f367c59205ee4852599f66581cd41d822adf39d19cd4224bb2cf3362f18bb978834697743c3cc4514c9f66581cd41d822adf39d19cd4224bb2cf3362f18bb978834697743c3cc4514c59b40ccb3a53dba6264dd693b20537e6f5982077e0038ba2e0c09831270c446859b40ccb3a53dba6264dd693b20537e6f5982077e0038ba2e0c09831270c44686df27bc71cbb26be450ed53090c5c5eaa6a68bb516622e0853dc83d1e21729b76df27bc71cbb26be450ed53090c5c5eaa6a68bb516622e0853dc83d1e21729b786cec362e4c28f760fd18fee6150f83866b6e50098cccb4a08eb5df3694c900e86cec362e4c28f760fd18fee6150f83866b6e50098cccb4a08eb5df3694c900e43e342212f1f1ec9ba0994aa19c3aeb996be6c77e0fe5ac109a1c216a2f17e2843e342212f1f1ec9ba0994aa19c3aeb996be6c77e0fe5ac109a1c216a2f17e2855e0d758a0d02d4554d225043191ee1118ad59a6634e74844f5e992a9056009355e0d758a0d02d4554d225043191ee1118ad59a6634e74844f5e992a90560093e8ac294aad65439ad0b40fc29dacdb3232a9b3a6f12a827d0cbb732dcf654e75e8ac294aad65439ad0b40fc29dacdb3232a9b3a6f12a827d0cbb732dcf654e7583ac32458b2d6e11bfc1901b7bd14a777fe51548ca34396dd8d62ac42273cd5b83ac32458b2d6e11bfc1901b7bd14a777fe51548ca34396dd8d62ac42273cd5b1b511cb3800ca65961d4eee94bb26130726afd3ab8bf83b248403e2ee67281e71b511cb3800ca65961d4eee94bb26130726afd3ab8bf83b248403e2ee67281e78b519a038f216ae894715450b7fbd5568abf4eaa2d041861a5276c614db684278b519a038f216ae894715450b7fbd5568abf4eaa2d041861a5276c614db68427bcbcc3a1217fe6080f32f08cd90ca7a98f7ce9a53a1e9fdf4e494c315046b254bcbcc3a1217fe6080f32f08cd90ca7a98f7ce9a53a1e9fdf4e494c315046b2546a80dc9259f6b4bae4a5bc0085b0d5bb616c2595f8dc226f61235dc4b4ade0366a80dc9259f6b4bae4a5bc0085b0d5bb616c2595f8dc226f61235dc4b4ade03608d6dc69286f2706db5de0ce018d79fdb5ef411c55f46dacb8506f6eb32af93a08d6dc69286f2706db5de0ce018d79fdb5ef411c55f46dacb8506f6eb32af93af5aa51d0d0b0a9d3c49f71d479fd8dae13464df5650d8147e520ad0f2d5253d8f5aa51d0d0b0a9d3c49f71d479fd8dae13464df5650d8147e520ad0f2d5253d800cb2aa0fc4045385190d56df66bb1eeba3006fe383adac825b98070b428dbed00cb2aa0fc4045385190d56df66bb1eeba3006fe383adac825b98070b428dbed6172ccee584e47904dfecb640cbe0fe2bea0042c6f57467dad45fb0542c89f796172ccee584e47904dfecb640cbe0fe2bea0042c6f57467dad45fb0542c89f79517ded59d1d60e49442d4b8e87b4befc50bf9b7f10396e6ff713fb89c396a647517ded59d1d60e49442d4b8e87b4befc50bf9b7f10396e6ff713fb89c396a6470906490ca8c516227c4c9d1383fcb23637475b6f0c34618f514b90dee3e357d20906490ca8c516227c4c9d1383fcb23637475b6f0c34618f514b90dee3e357d2a44ca595924359e454ed5b8ae4081e6d47de6baaa790012de2b97e46a94cbeb0a44ca595924359e454ed5b8ae4081e6d47de6baaa790012de2b97e46a94cbeb05074290fd8735d9e7a147684b3c0688412d1ad4920f7bbe5253c29d949397f265074290fd8735d9e7a147684b3c0688412d1ad4920f7bbe5253c29d949397f26fdd74bac936e8c2c5cfeda0db4bfe4bcd126444b0eaee4be6ba1b89388c0e11ffdd74bac936e8c2c5cfeda0db4bfe4bcd126444b0eaee4be6ba1b89388c0e11f69472eb379097388362e79f5b60a8240457181d7f9954f1547910ea0206f04eb69472eb379097388362e79f5b60a8240457181d7f9954f1547910ea0206f04eb3c12627386ff3d55abc2f09718c669a5ec5f6d3755e417b6237ce21c347b227d3c12627386ff3d55abc2f09718c669a5ec5f6d3755e417b6237ce21c347b227d5cf7cfeaec06e7866c9e6ffbfc6090ed57a1d3a3be2251a54fff74db5708a4eb5cf7cfeaec06e7866c9e6ffbfc6090ed57a1d3a3be2251a54fff74db5708a4ebe00056c24196a50f6b9a0d4f7397cbf81d301128c5d456308094867ecd035e78e00056c24196a50f6b9a0d4f7397cbf81d301128c5d456308094867ecd035e78f37efc65b7b3e9e0863c46af2747cb5f614106a4b5b822c23dbdd3377fd76ec6f37efc65b7b3e9e0863c46af2747cb5f614106a4b5b822c23dbdd3377fd76ec6f11011f6846297eccae7b6ca92658381c451a5625e9587292729d951999262d8f11011f6846297eccae7b6ca92658381c451a5625e9587292729d951999262d8e5e4948cfeb5238b75beb778afc9d26511d53db26243e25d369314ef81003d72e5e4948cfeb5238b75beb778afc9d26511d53db26243e25d369314ef81003d720a3e98939295a3b683a80734d0d6ae6f850f7721511051c4eec65f28c0c223800a3e98939295a3b683a80734d0d6ae6f850f7721511051c4eec65f28c0c223801adc05e2e103ae370596e222eea97b0246ad60e6e8246229e2c1f5d1ca8f3c7a7de32cdebd81020406427a4f9b3248188ec149f3949747a2c93570967ed35ab79803c7c90d3741bea7c4816e162507586479e9b4f0d2d03ad5f617db6ff639320afe9d2edf7867a6083d9a4f203852ff20bbcaa2ad4f5dc7c8375a20e34c5025374f557f6432a41319e8d4a9b5019b7fa10037e91fa8b0913863e4392815dd2654a9ff38c3f3fbf07c29a2a5e21b6525e767f7944cae99863bfb56385220eb2bbcf98721f3006eeaa91dbd9aab4412eccfe0ec5bb9a454f032862308a0806b61375d145ce94582acf0420a107f396aa5720080707af4e66f7f0a02fa6dbe81e3ff526e4b467c63c101e05286d6eeca74feb132e2e86d11c9b26b739af3760a457100265161063038df55f1c6be236db13e22d3aae7a2e6cbdc482b3a55196cbcc8d52b04f773749a00e9ebaacba93e816a52ffac92d26fa204dab8dfc3ec6ca9f7b7784c5f68eef4b9cb4b351df1a0be1ef4976824436b941b1cb49279689396ff13eb3ff05e1aa6e1be92584050d491110bf54cd9e98e2afc09c2b21bec9f507021eb677cf6901ff09e748d92624725670935181da319cb50d7877b1f8ff03151693b4fe846e86a2a8b1814cf3d620d3d7a854436f9b336e8867ec39db1a12e03f53c16119e15d68e5d469d10cf8cbf8daff65c2c8e7c4f384ec4c6f11f975be2498035d75c0705c5461bbccc8c01bb7f76404fa9ed645e3b80d60f56039c651054e7f0ab5ac05238137f023a1e79ff28037b4be4a48fef31d1c3341281e5aacc199df2f196889a553b915f97f1aed1d5ad94839e3ce5e90a6de7f4ff80f631d40f824c84312171ef9aecfc42fdf6ad1d158bcdbb80083171dfe1086bff38ebe0bff2b9de835b71f7fac06714a35d11be94862cb5208261b8f7bbc86aa9003a95f5b7bb9cd52e3c0ce3c6512d56cff8584fdfa4e6b967dedd5d265bf7e5f5afa5dec39ba80065758d02a00d77b1131d2b3dd257bb5570317bba41f7b4ffcf058d1d9257a4fcc72b82888efb3cc186dd6e4f9a192bd3619524926fa0b00253922c1b1fb3b87334e400aa55d10dfd7fd16777837fdb38dfd3db1c7a32dc545553df6e54684bbb398e325e7223f1cd58d2c07fedbbb3a77a104683435498303e0d1d9b074359406c6e3209c2e9d7b90d7099e791550b596a44cce5ad5fa5539c7d32cf96049350c068d8020cb6487cf9c7e670a3e2e4d9fef663dbd6a2dc57010d8a9e7f33a8010ed9838f17e8feb5f603f3391a6bd8b82b2552468c770ad9021ed6f9ac02bface8ecdbbcb2bcd2e38d54460fafa4aac31db21872dfbd645833aed6f9ac02bface8ecdbbcb2bcd2e38d54460fafa4aac31db21872dfbd645833ae84ca39ff784efadff52b04072bbf79d0fa8d0ea2e41a1f9538fb214492a4ff6984ca39ff784efadff52b04072bbf79d0fa8d0ea2e41a1f9538fb214492a4ff69ae55efd61bebd86b135f9f466da5c7889f15592ff0db424320ca2e9a15a6af02ae55efd61bebd86b135f9f466da5c7889f15592ff0db424320ca2e9a15a6af02587b82fdeb15d85f4e815b9a9819376bf5a17cf7d3ab384051988ff815540d03587b82fdeb15d85f4e815b9a9819376bf5a17cf7d3ab384051988ff815540d03df27b304390e18c35905d889a919274918850b9612ac33db1b3cc242b404fbadf7c55825dfadaf4b92219ff584ec7b833498332ff420f036d8abf6700d5dbe753b6535becf833d2569717bbd18f1f16cb7753eed4cfc69ea619745a811ff7ffe6720427ae79df0bfd5863b2661362765d655bc1df262f6a92f0e7523607b2dd48fbf671870ca8e18362d9df44b294cf4026c1b0fd5c278923c582e914f1c414e8fbf671870ca8e18362d9df44b294cf4026c1b0fd5c278923c582e914f1c414e795061a50b6945697b5adc278b2c876851dfbdbaa787d8352afd0581ba423c8a795061a50b6945697b5adc278b2c876851dfbdbaa787d8352afd0581ba423c8a3e0cee35805cf5f7c8f80ceb75e0b9f1d12a30c6210764a0a41a26227c28d0db3e0cee35805cf5f7c8f80ceb75e0b9f1d12a30c6210764a0a41a26227c28d0db2a180e1b522c0f3917a8058b4402ebc26ddcb22c58bedff6ed1383c93e1904ce2a180e1b522c0f3917a8058b4402ebc26ddcb22c58bedff6ed1383c93e1904ce80c26596c4b10402ec9e9f269fc669070e88934cffc70283e16edf0c384206165daa011b0ba9909fdcef013e3edcde108c7c5175ab3e121312be663af510562ed18ca4b4958bd68f44f49754fa53357eb81a99a9c6fae18ea3f4dc8a2ee70fd0c071fd4969a72578d4887e4a51c33e4bab311287a78e90f27dcf0717c9811ea5f943baa95a844bf343d4d9cd05f65523f6e3df3843e78583513f42789eff62f4f943baa95a844bf343d4d9cd05f65523f6e3df3843e78583513f42789eff62f4266f04be24d0006b5f1d9d6a94299d3665d36de42313f25e899c259f278fc543266f04be24d0006b5f1d9d6a94299d3665d36de42313f25e899c259f278fc543a4a78ac2d8c46a2b1aa5de4c0fd7e2d2571c674b673a796fde25c0d354adb04ca4a78ac2d8c46a2b1aa5de4c0fd7e2d2571c674b673a796fde25c0d354adb04c607df2ee450b0244fa19052ce4ca32fae1f2651601618578090cbb02dfe37c8b607df2ee450b0244fa19052ce4ca32fae1f2651601618578090cbb02dfe37c8b4809e8517121348d6e2eacdd6ab2a3e71f78df4ad8488c2861051b72c4d144c64809e8517121348d6e2eacdd6ab2a3e71f78df4ad8488c2861051b72c4d144c6ce73c49b75b43669db2da123308bf89211bebc7a66007b363e7fa26579c73ed2ce73c49b75b43669db2da123308bf89211bebc7a66007b363e7fa26579c73ed2a42f506f0fb8f90f0d14797896f1fd8ebea3368a74d5bead8f198e586cb97e6548471fb96c41aa6dd2a5e66565b9e8f1487ed42d0d9e63d7b1c516818b42c884e75a53617c270809b86784d86d64eefb0abc80aa5809eab502e483f0f0b4852a164134944a07fec668c52823780bdcd1e1fa46de24d108ba7d5f4fb5ef1663142d147b02ad316066747d018269e9c4a2c944779ebaf722b6e7d510b3b6a2e2d2826726c58eecb276de31244d3bc777a9a83f426a8cf6f91c7414f8d8028ccb5128c1cac44134dcf05289d9ac0f645c095e6817922fe4ced99ddf2d6a6c977e0728c1cac44134dcf05289d9ac0f645c095e6817922fe4ced99ddf2d6a6c977e07cf715c7d449e9a5a14a14428902f0605eeae4d4bdf05e77abc8140cdba480f2c6b7b18b97ab803546bebde520596afacca056d32218aa6eb93fd40c1697fa7126b7b18b97ab803546bebde520596afacca056d32218aa6eb93fd40c1697fa712021317a9733cb74428b4306fe7eef997e059d042a761d8e21eb661de12f877fd021317a9733cb74428b4306fe7eef997e059d042a761d8e21eb661de12f877fdbceee484bbed74409c89765a3745229a0621625c006fdcecd0b64a50c1177d39bceee484bbed74409c89765a3745229a0621625c006fdcecd0b64a50c1177d39001b29cf23a24e520e9310f86bdbff47261bc63bc7ab2d3e9f16d98d1bf9bcd9001b29cf23a24e520e9310f86bdbff47261bc63bc7ab2d3e9f16d98d1bf9bcd90e920705de7f080377d6dc2a7b1b1c17110b183b48463ecf2138d69c689c9f510e920705de7f080377d6dc2a7b1b1c17110b183b48463ecf2138d69c689c9f51a9edff616c1cfc43a7b6b9b4290c07e23f377424501ad0149be2bd8dece97394a9edff616c1cfc43a7b6b9b4290c07e23f377424501ad0149be2bd8dece9739403e5d0cbfc08932d7ac6b8249b6296da3c992e9ce67143e334e3eda104270c98c3ce8b09576a20208ba85b533f151432a5c2cd0116ff4eab2c2005607c421e555600d579254500d32b9b848de66fc912c45a9cf27e574f1aa315d5b394408b1783200935bd2c8e47592e8010d617849bf4a3651f68873e1b2ec560bf668a13a65cb794942c6178f52c0ca5d4aeaff2a8dd5876ee117bc46c6d9593c5dcbc32e7e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855853145e26a4d532d2a27357c3d084230c6940bb18e4c1e881abb4a508820a626853145e26a4d532d2a27357c3d084230c6940bb18e4c1e881abb4a508820a626ca208feab0d28b717f20e30624e14cf6a285873a6b26b2c61126fb966ee8e076ca208feab0d28b717f20e30624e14cf6a285873a6b26b2c61126fb966ee8e076be6c13b214fb5708d616f9631badb56a5ac539aa3b6cb16178215ec49c9b157fbe6c13b214fb5708d616f9631badb56a5ac539aa3b6cb16178215ec49c9b157fd1ba2eaef8e8c0220233ce985880cf1213a93d42a07c4362140457b6c31e1bb3d1ba2eaef8e8c0220233ce985880cf1213a93d42a07c4362140457b6c31e1bb3d91e670d2e0d562559ae6b0b6b345c1b104d57d295853c1c365916dc77295bced91e670d2e0d562559ae6b0b6b345c1b104d57d295853c1c365916dc77295bce4e19396b965116a9bf857c96fa72f5eafc08d111d7d9153e4bc713ea9d666b654e19396b965116a9bf857c96fa72f5eafc08d111d7d9153e4bc713ea9d666b65805ab9da64b70adada803455aa304536200b86ce25c78f808b528415b28088bb805ab9da64b70adada803455aa304536200b86ce25c78f808b528415b28088bbec2e7f8d05194fc7accbeccaf51a286bc7b596f142bc65d54cd42bc090d8765bec2e7f8d05194fc7accbeccaf51a286bc7b596f142bc65d54cd42bc090d8765baf0b8f4e3ec4bac6506f24c04887ed7e5acec12841c91bc37a5699570f620337af0b8f4e3ec4bac6506f24c04887ed7e5acec12841c91bc37a5699570f6203377bf7849bc9b07d727a87af2375e5e18d2a48f4cbfb852dad89edef765909567d7bf7849bc9b07d727a87af2375e5e18d2a48f4cbfb852dad89edef765909567d7f951671b8ab16b98f44da02920242343d9f701a44eb8c4561879941f31a620d7f951671b8ab16b98f44da02920242343d9f701a44eb8c4561879941f31a620d2e5f7e18f967b77c9587ae622025a4920c649d48496abee650a19afbe46d3b7c2e5f7e18f967b77c9587ae622025a4920c649d48496abee650a19afbe46d3b7ceba415abec4324d70c3c7e837468579b440a2a01bed69903b5407c91f0edd45beba415abec4324d70c3c7e837468579b440a2a01bed69903b5407c91f0edd45b1460cb9964e9659b062a3a33656491e07fc6f780c75474cccc21402675b629b41460cb9964e9659b062a3a33656491e07fc6f780c75474cccc21402675b629b43a14fa5e60443807a398633fc3012b2e7dd72e718631bba5c588d76b7a2a52ba3a14fa5e60443807a398633fc3012b2e7dd72e718631bba5c588d76b7a2a52ba569b76c4c7cd53a8cc1bef10fbea481b6fec46af1dfd7fc5a219031b7f90bf09569b76c4c7cd53a8cc1bef10fbea481b6fec46af1dfd7fc5a219031b7f90bf091941de17994414a9876943735da575e01ea75992baf8c051fa4fcf015b1548201941de17994414a9876943735da575e01ea75992baf8c051fa4fcf015b154820f66f3580440713d9a0e159e0818ddc5d96af78ccd2d84372029a706ddbd7adbaf66f3580440713d9a0e159e0818ddc5d96af78ccd2d84372029a706ddbd7adba3dd5515f759294633859dcc659ca737bea35101c8fb98664b96169058c6b00cd3dd5515f759294633859dcc659ca737bea35101c8fb98664b96169058c6b00cd39a3f68acdabf709bf7fc81b2d98430c3c1c720d63a1732f24cef6bdb81c6c8adf61cc4025119190493db7982c17d1d229bd5af0ae0804807d25540e1dd0fadc715a55a75548606dc8af3f7cab23a4918b6d0117c3c82319f9f5c6b87f689394a9a9052135a80dc5964bdd1f2d9ec76c48256f206baa083cf427f9527e24d9a28e5b7d7a9e8521de0ee06cde7668cf2804f4bd8c017405bd625fa0f21e2f599259bc512fe4db6099d5061d07509e7fa57c1d9889de055d8bf64bfb41cf1f15ffcdc980d56b821b2b4d4d6408f4089caabaf897a6ef2a13b4830aeb73553d6a80b8e82fe85a6e671c770290186c23a77b9a46357d8c25bc96c8e96b8ccbba132ad800f1eebe376047881d806af4a07bb1000e2ffba96659a782b8c19f40b98c3d40190d6bd19375b218d040199c4c7f1df6d1ee53721bd9503743d4625171524a6c1e4b7e505cfbf798f8c2d65e0e9b2c83d7f3380df392e845390c98c89d12d3c1bc50df7028611280b656e30ce127ae2a66ef1a19eeedbb6e5d1beb1cbc7753df15ea27bd82891012e059450622f8d5618dfb471f4ec9d601db8f5c2b1b1c165ee490e6a6da58bda6dfd408c36fa82fb859205a6d5a6a91ab70eb95202b34177c9f4fcd072e60a8cf0a029539226d92c67f2c6867fc060944bbea5f42cb09ca57ba3d18a06a70c588d9b4965abff86ee398213ed00d3bf9df0add11c80a489762fcbddc89afc6a28fc1abfbd4e4d3313dddfdc84ddde843c67a49e914cfb1e208658e16fa1677f25c0668d0c10781ce8a515b036fa8ab538f0d12b0354e4fd2796e64060b9b04e0c13edfd0853fe93bd6a712d1f44473b7a3488504d0b73b58d8aef0dac0ec66a20ea50fbc94cbee51dfca1325a5a6206e02c7de7ffffd3c51d8aef0dac0ec66a20ea50fbc94cbee51dfca1325a5a6206e02c7de7ffffd3c5190e263cb02dded22b7b9b0824018164481730277d26cc2c6a2a76b939467c27e90e263cb02dded22b7b9b0824018164481730277d26cc2c6a2a76b939467c27e16e98b1c2c32fe864d26078baee9956ff70ec71de6a40bfd0b85a42f7d6c60d916e98b1c2c32fe864d26078baee9956ff70ec71de6a40bfd0b85a42f7d6c60d9c64e8c6b142b9a914f2056e020131262d8120fe537ceaf81dacdba52fcc638e6c64e8c6b142b9a914f2056e020131262d8120fe537ceaf81dacdba52fcc638e6cf1224ca6dc6c8bc88a134d7a9bc8c342e5c3ff6b0342f5cb9321f84f96af648cf1224ca6dc6c8bc88a134d7a9bc8c342e5c3ff6b0342f5cb9321f84f96af64834975425c8e3f7cff3f2d5579a71aed6caa7cfd1f41a4e8ed5528385f6728ae534975425c8e3f7cff3f2d5579a71aed6caa7cfd1f41a4e8ed5528385f6728ae5716aaedd89440aa6f054500b0073018fb7c94779b948e8c5b2a6f8a13ab355b67e3141903c62353851c300c8db3af180a73891ef86421e599d20dc5960d331e1fd0e48c4e01ea4bb122fc10d0dddcc9a0097c5b8dacdf4a613c80149624094e5c2658b7f343381a4f659d02605c63b03fb6ee8bccec0a508aa3616646d6f860408c938a55b6f3961b25e8a87f7c2a5bc63a33333010cb4d897cd9293394e0b492edb6b2080a36a936d6475a7bc90fe0bd3efdcf20a3f5ea2f16017714ed348b2407db3cb8aabf703e9132afe5ca9a985b96ceb4338652740923eebddcbaf0b749c9573045d908b06bea90462a092b8d9c6d6b7745be4b6267ef18f86b854f11748fc777cfcb818f25a2a66364bc68923523cd3414e804ad800a5575757ada754cbfaca5bb35bf527487cce6bda478f8e2d3020231d73c14fe5363dd277ba85ac03780bdb97721ab4aa3f8e0fb6a42083aa5a527c11780cc2ec1ae4a9e97edfd16099c924c61e8c270168d8311418588fecfa3b2b111e6b2cd60520ac8241405967ba7b6b2f2cdff65e7ba808bbbaabe30502f9a9fb9702f0ba85668074022b2815ae32e2d7e0d6670d2787407b9f1143b5810f024c7edaf8dc15ea675ed03ee53ff003e280586c00ded9fee9cc78db9e433de6df0fd4eccdd12dc01cb4fa0bda2aab4c3ffa072d7b0a1711e7ff788a5f93cf195e65fb28565f58cf0feb0939e1bd9e0c2766e8b31ae2653095c8c0aa06cf395dccea44feab95e3d3d3e6f17d4d8d62cf2e1227432821964dac54924c5f84e9729711de8d587cefdc3e58bc6314a281ab61fc0e9945aca75c5437cc2bfa8e156e549d96bd93ca614a9ac7c152d7c977e22b029a14900b6e3db054019e64ff39e23d1f3e514d7b303442b7c944645e366678d0e0c79694a906456f47be473950c389fbe1751ed9c8bd83677b52cdb02a5b63ca154b40e3a353656a89b78ddf36c963f116f628efd73603154492995d813b526d98028e80383ba9da7e2e8225f15e4fcd1fd14b5d54a21c26c37af3c891e81f17087ad0a492c0f43e4aaca7a4e35cdff3e4961fc63bcc9043b54ab528ac4dffbb26166c7710b6d9c0b45d61cfc32a3a84fe7f9adc2f5fa6cc53deadf503627187bc68bdcb6f57f05d345efea9edbf3a90f27d4e45967b808f9b9d1ee7a1f5027bc2b7a3f617b501cb2707e97af9531f6aaf1b24b8630e5978361d31411925a4a6b8485b22bf6046ead224d6028cb6d8e8add866b2a229dbd9ee5f938c8c4c8efb9355bb8d50964051b072eafdca72289b8eee6f39fb56bd48ecbcd00064b61954daef3ddacf231ba70e54338c5ed90468b35cd51dc2eb79730e1ddcba10ba14815d58610eb04e303dc201d07060be77c621e09640acd58a084fcb06db2c6c984589ee1b26ad4f3efe1bdbf11fd52fcc9b5ec9c8f11097e9a37e2a192b6cc03257af81973bc40ccc02f2a61de5c9972c643faa8e3720760c7888217203762cfb2a3c8bc6dae4924b9cee40260af00e7fc1f00b71aee753c22140b133582b802cbb11a41ae2c3caed6784b6f4c88cbb663e5bf385dfa7363a9254715e66aa12a92a47c2d4df736f1f86bf28d930248f3835a19ca429f9786e0a319260c0ed7a5cd72ed6b532d67a47dd00473dcf2b210a94242da7bff220c5da79c09bd11b352f1a1ceae4dfab287a42e4dbc3f9ff0cf115e9297fea246c0b5ea717388d6f028956d3ddcef4bb33ada7db3f357838a313559338fb498358c86489c2e9f6be45c80372537b001201222ae8baf4aa61cbe69ea2ce85ba4a805604a130112f573a3abcea398a6446675627f6536a5634ee5a2371822dcdd72201a06606822b22a971eee8005d28937d38e2c412db0d7951b178a3bbb74306ea16d3f9e9aa828a5ae535119f8f5783e5b555c27d18d4cc5a107fc2a37abea1ea36807ed828fb6781696de27efa055b5736088db148fa986427e7a66962e3be4623383813a52085682d07a6ae7f4164c2f2824180e823cfe1e2cf1e645b94e4f6f939d687bdf3e2a0fef14178beabc0c432c9031969e841f0b51ae61e5c24412befff2aca2eb13d6db146793415fb2e3acf73ed3c3a683ffecce6f643a56a68af95f94927cf527fb83ed705d9e0a8736d9ece7e5072c228b5ba464e747101c651ce0bf50703adc76caec6617b9b4caad174d15f2485e71d54a9b31e71f0914a887484aba504acb1777624c3977671c460aa12d763a983d4c1992a9659f5af16cab2e3341bf1f0b9ce911753699c26f41e7ad0ab7fff0aae0f0cafa4a7f39ef2021c821c472d9ea9689c54fd2e086e00f63df0c54193f37eca68d4efae04479d54d453154dc524a1f2d864693a2e732d765546d999a08b3f27cb0312e011d2a893f5190b58b6d9eab32a8f190ad018eb1c5de5fef84c41cd859eab55e4158a631244efc382751d77da347aac45cebdf01040c4804ad75bcc2679585ce7fa729348932f07e358c66e98b8ff5c095fb93b34713b4cbc60a66e3add2705865edad247aad0d4cdf3848cf8a699f2a6643ec3d6e7e33cf578694af31434ad568f181e135b3dc3d8fdef479b0a42c66c0b161af5e4af0bbb91b20b956c605c151a77f46a502f6f59e6559cc95fac0407af7466b777f3f14e5b061833705a460c79d1cd6bd7424d12e36d440191a5dfa4b5d5985e916c61b5d8523b44d3b4d5b5a320f8617735762a931787f55a6bcf36b06d806ec9cebbd6ed634ffae9a5fdffed023ed15c84d23ed3c6bb35dc0b11f6557d8519aab1483853acc0a49a5818232ca54237a2bd807589a8121bc118ac6ec2261a2c6b2e3e980d85c94941b3899923b7fe1a26c6e1723d6a2a781d6779642820ef060507a094a8b2b495dad8eea77659bfcc953b5e7b73181a4d5a42ece6c83ae8f1e6ac4011fcdb0ca61bb1b169bc76079551c85b64f2ccf12f67a1c6739f5f8a02df14c247212a8a0a0475ca676c3587bf9d98d327f96f6666cb5890b83738c9b53842a451030d872f9c5e1b90f6910ad3d9bc9b88f318734873e6772abb181bef0dbae92d479884421dca686d4b7d4bacd1b40346506deb2de0db3760b5c84dcd4ac312d94dd393e353854a0209f22b5dc6535870d5840741641ae1f3450b39e84af7eed7ac58aaa0ec7c320f6eb0a007f16109a2089d51c033c894b9762573fc44f883bba803a1d99308199b80e08120be09d756d20b630f5d44c92f8cea3dae31dee0ca8957ed178687c8640c138b6bba404f89992c4b69f71456b8f8d60c7c87766d6b5586ded64f61771193a0bacdae24601dce5476999626db2a887d17d731a3d67b11a91e9651c0bc902c9625514b832afdca9396055cf2bb82e83ee8b908e608a135947970c63a375b91293e3039845674e1f0530ce60f456e006d76781a0e20ee2940983947c1da98ae897cdc4d8372b580f0530ce60f456e006d76781a0e20ee2940983947c1da98ae897cdc4d8372b580638486ac7661a5861ac4ae6a675c0ac9f2eed8f4cb770f9be6e3597bb5ac758c979362fccac146b02af891ea195d8896cfcd75b916bc2da147a4db39aa36e3f4979362fccac146b02af891ea195d8896cfcd75b916bc2da147a4db39aa36e3f46efa43e101b395afbcfc273b8b981d00fca3d1c86759ae0f52e6de73de9bf55c6efa43e101b395afbcfc273b8b981d00fca3d1c86759ae0f52e6de73de9bf55c8e1a67e4e5ae3d79142ffd48d3223dbd577e209acb9e186219424daba28b51138e1a67e4e5ae3d79142ffd48d3223dbd577e209acb9e186219424daba28b51133bc19a53c0174001604cfad3d2f13b3701e28089fda4177144aa5d27ea08a8653bc19a53c0174001604cfad3d2f13b3701e28089fda4177144aa5d27ea08a86528524193a111b85c5e02b72d738c98db9988a57c63d3473406dd6618d79e492828524193a111b85c5e02b72d738c98db9988a57c63d3473406dd6618d79e492884b5a3c4de58fb52443560c0138795bb26bd0ec3fd2ed9ddad3158a40e211ebd84b5a3c4de58fb52443560c0138795bb26bd0ec3fd2ed9ddad3158a40e211ebd091ccf93debc43d0347fef36d87874498dd1c474590de599e51798467b1f7d28091ccf93debc43d0347fef36d87874498dd1c474590de599e51798467b1f7d28ecaa5327829e4eb590cf37d144b4d7fd98ca083e4c74642954438ac87436b824ecaa5327829e4eb590cf37d144b4d7fd98ca083e4c74642954438ac87436b824fc25577fdade3166952f5133ffe19fa59e1ffc47366bb8771b77e0e1880fe92afc25577fdade3166952f5133ffe19fa59e1ffc47366bb8771b77e0e1880fe92a531eeef01265d3236cbdc7ce7c8d8ad57a621ffa207e95252098b7af75daff8a531eeef01265d3236cbdc7ce7c8d8ad57a621ffa207e95252098b7af75daff8a8a3a16770d45aa113002e176779d6a3fb02a4593dca9ad7e7c88b261214755f50771023b3ad7abf1df7ab1631557091a93b222410b10549e525045b45a56a8849f4143963b198ed71485d4ac9fd5540d82e3a9fddf31f466415e55c696fb6cf552477040e0dbda4fbb952cc4374b47a02d6b6ad0d754e57e36fc06d96dcbbf59440d1f3aa45e99388c8a6e7cc5b006d9dc0c15dfd5c1c5a09d39a8dae706d2556055bcb93d844425e18ad64ea17b8c822dd09c5e143c0340afecca8b2b84205ee56eee6247c8aec8e470fb000f533b53a8f1a36cecc115220733113ab296f8e656a344263af4238aa1340765896ddda287f4d7f0dc7d54946d8a57e7291a9f8e6c4bc28d47640ee30d13537aa3bfef4e6fb1994ebe487d89ce6928e20504abed12c4b1d96a6b1fed12b20024b543c171c3450fa55616fcf4e1dd61874f3d934f9aeb043dff8624aee5a47ba0250c9a30e6883f996cdf353dd109f6d030639d0795489f6169f26963caf8f70b187eb941ad27932176b28818dc62362c7974c8b6cb48a1c339e1a02c0edf9a2740d88a9b02f72714831de2928d50030917063f21cb48a1c339e1a02c0edf9a2740d88a9b02f72714831de2928d50030917063f216a179927d4d955491ea23ed9e9c6d9bf61946673f6909f537f35f1bbbea428fb6a179927d4d955491ea23ed9e9c6d9bf61946673f6909f537f35f1bbbea428fb26fa3898617cb6f70703c88f06b1de37b93aaedb03b58d23cd5a4c47e720ed5926fa3898617cb6f70703c88f06b1de37b93aaedb03b58d23cd5a4c47e720ed59bdfaf8228a850d94464f30b52200b51f50fcd31b48d1dddbad26662136f67480bdfaf8228a850d94464f30b52200b51f50fcd31b48d1dddbad26662136f6748066555a5f94257cf45e197b2d47314056d79994b00b6693ba2555143d4de567b166555a5f94257cf45e197b2d47314056d79994b00b6693ba2555143d4de567b112236c731a0fd3c8d99a45c46f56cb2289238810970f4ecde03ef34c89966c6412236c731a0fd3c8d99a45c46f56cb2289238810970f4ecde03ef34c89966c6402f6e91a4856449694acb76fbc0f5412f6d62bb40cd466c10a93a97b8a786bbd02f6e91a4856449694acb76fbc0f5412f6d62bb40cd466c10a93a97b8a786bbdf880ba535d55098df32747f15132e464211870038c8dc544581454b9eafe2d96f880ba535d55098df32747f15132e464211870038c8dc544581454b9eafe2d96bf2910bc6fdf1406592be93ef458db8d7065879ca61997acd7f0d50401826877bf2910bc6fdf1406592be93ef458db8d7065879ca61997acd7f0d504018268777ad87fe63d43e15814c37f6928a1f71b7f38687f1b1e6ff9924b32f1f32d92fa7ad87fe63d43e15814c37f6928a1f71b7f38687f1b1e6ff9924b32f1f32d92fa134e8b4c8a8962419c7fa42e1412eebad4f66cae27e6da35a67ceeaaf0f997b8134e8b4c8a8962419c7fa42e1412eebad4f66cae27e6da35a67ceeaaf0f997b8189eda640251f017580a4f414406ed8c7eafdaeae6e8cdbbc595171464d6616e189eda640251f017580a4f414406ed8c7eafdaeae6e8cdbbc595171464d6616e542c03841f768fba01344ad8b0c3e65a1fd19c48490c34746909c54ce8e519f4542c03841f768fba01344ad8b0c3e65a1fd19c48490c34746909c54ce8e519f4394bf53c2b0035787d1ff19f99998f8cece2391eba569779f37df25ff69e7ca9394bf53c2b0035787d1ff19f99998f8cece2391eba569779f37df25ff69e7ca9ba878701da2ce84497b41c85b10b3ca8bb4c692718ed16393b6f3228294533f0ba878701da2ce84497b41c85b10b3ca8bb4c692718ed16393b6f3228294533f0feba87a3255964b0dfe95c9a5f204f5eb407090fee0788edf2869ba9041f1fabfeba87a3255964b0dfe95c9a5f204f5eb407090fee0788edf2869ba9041f1fab62bf6d9ad8bae7ce8710a33804fa4504c65c98a0411a4b4ef978d651ddeb819062bf6d9ad8bae7ce8710a33804fa4504c65c98a0411a4b4ef978d651ddeb8190f09e396df3eae359957c893f11f9adba90699074fe11a408fce13d880c9c525bf09e396df3eae359957c893f11f9adba90699074fe11a408fce13d880c9c525b524e604d09d00190100068d4c806493d4a203c5ed87c4563f6efe7d9238b8b0c524e604d09d00190100068d4c806493d4a203c5ed87c4563f6efe7d9238b8b0cbfd731bd2f85c27f92fec1c7d023c8d7e121c62b1c48dae0699de221b4d226e1bfd731bd2f85c27f92fec1c7d023c8d7e121c62b1c48dae0699de221b4d226e133060c31e65ae5ebdaaf2d3152d97053450b1dc20fa509e23e3ce9e9ce56e1ed33060c31e65ae5ebdaaf2d3152d97053450b1dc20fa509e23e3ce9e9ce56e1ed55be793fba4625e7e3c4b7d7226fab793b97dc1dec1b252a8352cd27ddd3c6c755be793fba4625e7e3c4b7d7226fab793b97dc1dec1b252a8352cd27ddd3c6c773b08a58e42e68e4df6ead67b77b72f798b8977f4502a6d71408306e36210d5f73b08a58e42e68e4df6ead67b77b72f798b8977f4502a6d71408306e36210d5f03fcd49d732c599b42eddaaae4b5af587eaa738a265c48c992ccdf1b6d54de7e03fcd49d732c599b42eddaaae4b5af587eaa738a265c48c992ccdf1b6d54de7e92a512d9883bdf31f734e8fb96bb9d3f8a6d086fb327e0b8bc429e18a6f011c192a512d9883bdf31f734e8fb96bb9d3f8a6d086fb327e0b8bc429e18a6f011c1711d13940885b95b290504f253dc52a7b4702ba2e7c7aeab9a5872349f88a4cd711d13940885b95b290504f253dc52a7b4702ba2e7c7aeab9a5872349f88a4cd27494b6514530b577852b2c4bb52a1b5e78e0ac514defc6feb3cf68672af2b784adfe85475d5d79463c5b8fbd736744917fbf0178cd68acc0f8ba59afa8c1fc80dfd0fe5081c204d4bc2a0cf6ccd0bf02c2d06a24f56ba931f2dc0b9d16f43cedbc087a395419922524285ecd6dc5e8312eb35c1cea5fa4b31d07ec89243fd30125d63eaa8196f685d95536eb0c18ee9e69890769d7ee9bb90742e0f4e9953df143be688a56efb04b0ceb4f8935e2a54738568e4405055219163ef5f6f7527dbe992377e3c8eb5a18b800c45fb519cc41d9b25d94917c9538a8423118cf6ad983b84ff13d0dc6ae42ba4aabb809aee95e639cc9532647a0eb6960c162b9984f64c4afa1f7354a952365067c25c15d479e215b6a71bc1f4f54afddddeb0399f4c2614246a078420c7a6ad8b717339edf9e51eab1c923c9f31c13dfbc1775c9f4727b23e9bfa1cd544421614dc7a64d97b3fd498afaef4f749034040ac1ce3f889710a68e7302c9ab4e87b9cea2fbe10762b07569cf762165d5a3895d369464bc6325a5052397d6b4dfd10abc48d79048a20ceb209bec249a8e1a5737712c92c0e4c39c641b57484b5e1ce0edb8c771fe8434ffd4e790bd9ae71da3ac080550d1dd7ee0aaf16555085edc6a8e92ac284a475d3181d909160315b2457cca3966b7111e02be6ac647b2b2f67e732ccc0c78db63c898887ad7dc9b7a8c36925921eda77ba0a59f131b2f1ca036b4eb3ef145a758d945c6edf2de40e484a69a6933b1afeced8c41bb5128fe66cfa1d15183486e8b511e4ecaf67bee6c3ea8778e478c2d9d65d8df39ed3fc8d9183104435a5f3a785cade18a849b598e60674fb54044dc45616298f34f211cf8fb9c96da2ccda666ba3bf69e938e9157c807112b8011d4f82769a2a874e7ac33faf82ae5277c20234520c99c9855156b0d35b1de89696e4b53c2dfec6c74c9187ccf4bb582249791df77a64499df889b9284271c2b32cf09cf328eb96348e2cb7ef82c26259c7ed7aca41592a1719763e306f5cdad139e162921febb4667403e3baf6d1ce4e7a7686e9595a9a9ea7c1e219485389d1bf5bd6adda3df1064eb3e085df4aeb53107a9dcdb893235075b6e60e2dd77504c4e74c35836ae1528e8bfb1b62313db48db47c5b23a787035245dd8844d4a3357ebf06874007f3ef9683da5d1980456e375509cf02da829f612c4d7fe4c814387fbf06874007f3ef9683da5d1980456e375509cf02da829f612c4d7fe4c814387ff2973769bf753866e7bf3937a10fac53cb9731736835b8ed7426dd5e66584d66936f5d1f2336c1176e4bc2ac0ef4c763b7d5a7f45ebae2a1399a4106e9a1558a936f5d1f2336c1176e4bc2ac0ef4c763b7d5a7f45ebae2a1399a4106e9a1558a51511bbc37fbcbc0f16cb1baab9b1fc913813db4060be3d99342715ae4c2244251511bbc37fbcbc0f16cb1baab9b1fc913813db4060be3d99342715ae4c224423cf8598aebe390055085480e0e0fb8c0175f773b880a7f50fb03e3194ab9eec43cf8598aebe390055085480e0e0fb8c0175f773b880a7f50fb03e3194ab9eec494ee89cf38230e04dd7cd1b73dc8137409d9eb5088f3bcb3dd43143832d8e06a94ee89cf38230e04dd7cd1b73dc8137409d9eb5088f3bcb3dd43143832d8e06a90f0922ab249147e574e49ad7842373f50dae967cf497c439d5dfd545a600fe0720020d4716188ffdc6889f3526d1505268ace804d7f01163a1d18d400e33c82c1b95a636106740d8ed3480db93559560555d3c447d1efe0e15fc0904e74230bae47f25edbc1aaf4085e02fc4f85c28504d131a88b9e5893663e5c2ff3d8e326736c80322688a512eb4454371d23e479c315618b5d6249d87cbf48206128261c736c80322688a512eb4454371d23e479c315618b5d6249d87cbf48206128261c43c58ecf583d96df09c13c7c369c42e4c882af2dfb3ed127fd532b69d5d57a9843c58ecf583d96df09c13c7c369c42e4c882af2dfb3ed127fd532b69d5d57a98be912808b5f2c1d650389254f2f3214c784825f8e2b58b0078fdab9f6de5638dbe912808b5f2c1d650389254f2f3214c784825f8e2b58b0078fdab9f6de5638d7d16075b125a136625f7ffe86d5fbc76d01bf797b52dd392c2cd36ad0ecfbaca7d16075b125a136625f7ffe86d5fbc76d01bf797b52dd392c2cd36ad0ecfbacaf42661db32abd52f8a181e7e9fa8dabd0ab8d39b6c77dc88facf87c8ec7a62acf42661db32abd52f8a181e7e9fa8dabd0ab8d39b6c77dc88facf87c8ec7a62acc8c99f4fe9501df476cbd6d072aad23f3a87b9664ca3b57dcb8656397a1ba11158dae97e0d81f1f55c602e6abc1867e2e107d02735f94985cc11fa1e1b37bbf21ab0c3402b688669899f7b7d54e3dbd255192bf9d45b2d2cfffcf94eafeb1df258f9fc28a3592e78d101fb60a1ee845938acb628a9f78712adeb4c92520dc1c912a789a4ca24473b9430eebac9812b3d2ca78a78ea357d3fe6be79084913738add4b04b2fd1ea1344d03c3990dee5bd67ae522b3a8b4cf7ab4052899d0257474dd4b04b2fd1ea1344d03c3990dee5bd67ae522b3a8b4cf7ab4052899d02574749be5d3520594faa48b26866f1cddc0f398a012532385a049af30930eb53bce1b567e02500b875d7059531a408bc5e66c50c07d57460822355d2d352562fc7ba7567e02500b875d7059531a408bc5e66c50c07d57460822355d2d352562fc7ba7e15c37dc0077d961574f06a4c76526428ff4e4b1c2ef84cf0f72779159b56554e15c37dc0077d961574f06a4c76526428ff4e4b1c2ef84cf0f72779159b565547d25528cc36099abab6c9087ce212b0f15de8f6f2bed9b98cf4a75a6e55b1dd17d25528cc36099abab6c9087ce212b0f15de8f6f2bed9b98cf4a75a6e55b1dd1f8f7e6f8b547cc8332782671c4d68a5861a8ddc80f23918fa8b6b912f11064daf8f7e6f8b547cc8332782671c4d68a5861a8ddc80f23918fa8b6b912f11064da4aca7672bd6c6e4df3814ce7ea660efee49bc2784bdc151573e793692904a5174aca7672bd6c6e4df3814ce7ea660efee49bc2784bdc151573e793692904a5179590345cfd6804d83ffff0eee92a8d3a40de402f7121c66944e615e57246f5b89c4582cbb5306e697a980286eff8b81acf6ca54db7ed6df289797e7d9907b774bab07533d14afd15ce78df2824b74c7e7f3ce299c1eb2bf5c02d66740f38fef12b2c26d60ce7349442c5f1e66c2129d85e4a952323e43182e5629f1dbaf9ffd12b2c26d60ce7349442c5f1e66c2129d85e4a952323e43182e5629f1dbaf9ffd14dbfab08a906528e1f4a963796b025ca326bccdf07d00d94bf52cdfc730f3108ca7a3940394e6d84bba45687c304ad44a1711eb89549462a3aa73f135633c0f85291c1293613aaeb044ab97d3c0e65ca184876831791eeac7ffd73e67ce4283e47c96d78ef2e632f977a580aee72b753fb13503cf40eb4ced81014afc96d82b3953cd049dd2bf92667db2fe27d63b87acccf59def6a1e6bc7c2978e29edeac0d953cd049dd2bf92667db2fe27d63b87acccf59def6a1e6bc7c2978e29edeac0d485cdcf83034d0856b674aa17f5ef4615abd794d78830ebb726ec6a74eb69eceff20ac2d91fc8c785b1303b223f5f80f1622c6eb7a8bba111da7995a5b47e7476e3239d0ea883cd2c88a85890e4ea677b6bfe1df39a4f0e514a7c70f088025d47807e40a4e78b1207e1ba45e1bf35a607f1d1868a2c6167266ced2a053f809d49590345cfd6804d83ffff0eee92a8d3a40de402f7121c66944e615e57246f5b85291c1293613aaeb044ab97d3c0e65ca184876831791eeac7ffd73e67ce4283eff20ac2d91fc8c785b1303b223f5f80f1622c6eb7a8bba111da7995a5b47e747b44f7656b7d580cb6533678644c434304f8ae0f9cd2909ea165f2cdc9e70a1b382aee2ae3c575ca299a88e856c1679529af0cd33ef1402a0dc45bf502d03a60c657a8032c756667b60e0695d4844332ebb6c89bc7457943e3f13843f43e9b1267e920ff92968b9641c81da77c6eefba36ca385c41af792983d3f31d22760bea14ed39532818df78c280da44dd78a30544cf92dae15b85328f18b52ff3c27c04329c3f25aff8ca9111efe180a76294f263389d4eee11a01cb2d911fbc483509dfb44f7656b7d580cb6533678644c434304f8ae0f9cd2909ea165f2cdc9e70a1b36f41af092f91a705649cb0f627412bf609590d5343087a720299324b1043d346aedf703471af67ceea1e549b279140ed4f4c03ff2eec1544e3badd54d0e3866bbec94629461d4db813d4c70f29f6e5dc0911295a55b5e7fe8d4225561b5a29d482aee2ae3c575ca299a88e856c1679529af0cd33ef1402a0dc45bf502d03a60c7e920ff92968b9641c81da77c6eefba36ca385c41af792983d3f31d22760bea1ea0ca46b7a729e15e66f5eecae19e8604e9ff4d3e25cb15545b93a12d2c1aed573463b5704a3fe00ca0aa3c7249260f19a16aad100bc96414893c99d69076720657a8032c756667b60e0695d4844332ebb6c89bc7457943e3f13843f43e9b126b426481e4b732d673756a53d5aebf443e1fc2c26bacdaf576001872a33ee4f3629fe89c37a05913fe745fbaf2a4dd6b1fe6df8603ab949576a99798185a10d3b29fe89c37a05913fe745fbaf2a4dd6b1fe6df8603ab949576a99798185a10d3b07e4cd777c1e97f50b3d6cf2fa6857a14a4edee617fe723d8cca4db2b0df70724ed39532818df78c280da44dd78a30544cf92dae15b85328f18b52ff3c27c04360259ff5261e3c796a85f7d390a11550e5d630c9585830d519dca9c3d827823960259ff5261e3c796a85f7d390a11550e5d630c9585830d519dca9c3d827823960259ff5261e3c796a85f7d390a11550e5d630c9585830d519dca9c3d827823929c3f25aff8ca9111efe180a76294f263389d4eee11a01cb2d911fbc483509dfc3e41645dfe726a63da04e32a5de84ca2e28735da78080d924120206f5a8b2c5165825dd06b0b126c160adb87757224929ab5022709d645db7c608388f6ec8bc282aed4142e1e1867788e662134fbf486082a6a9e32037f79f91a8e70e5de7c9429a1e48d539a4016b8b0bf7ad6f05d2e20dc3711b7329e80df55f56dc97372c8ea6fe3e99beb907ce87e5e04e6ea25bc7715b5b3636f1691c1b0f06c58433335de959ed342bb7c6f6c4e31a261d451edf77bd3159a7f07793c96a55aa7d3125c80e7cc027ef9c3e0c95620702447f55ac59f7e1512a11949dc97f285ffc521d91883aa6c73e07b5ef94eb3d1776bdbc88920d059c6deb74ffc457be3f873827b2607def653f715a495e1598a83345ca7a741daa4cadf23e70a09f5f87f76637d9de791d91889e23eee77cfafdb5780b6ebfd6ca9100726a0b07ac394de66b7fd9de791d91889e23eee77cfafdb5780b6ebfd6ca9100726a0b07ac394de66b7f0f763054a0017ac0706a0f5eec6b0b3b19515aa10ee4d81f1c39984aad33ff59fbe4254f66e05cbce7ec5aee0de35af9a4fbea260963c12ec8428ad98a3f8333fbe4254f66e05cbce7ec5aee0de35af9a4fbea260963c12ec8428ad98a3f8333c99d87c32eedd2369eb87d78f4ef411eb5114eff61a7d3d84c89d9d540596336c99d87c32eedd2369eb87d78f4ef411eb5114eff61a7d3d84c89d9d540596336428bb276cfca384baa6b3e069536109d05315f24f2ca314c8fb99a4671fc9a25f090ddaf7c683cff7a701b6b927580e6ceb69d05f7e0a64dc1396415ff7de06045a8ffc6f52d20266745eab45216138895d0255702d7a43dab6890e3f29b51eaed9f3c9ac9e5191b972c7dc355bf22d5e48b2fcf48f9bec3ca0ea930e2155687ed9f3c9ac9e5191b972c7dc355bf22d5e48b2fcf48f9bec3ca0ea930e2155687242d14f9e03df038ca01128914cff25a49baa61d0802bd6e96b2e42f16445888242d14f9e03df038ca01128914cff25a49baa61d0802bd6e96b2e42f164458881764d7c9e218cb1d2ea23c914347a2ba0b6c221681c61e2fa3564406569ecc6c1764d7c9e218cb1d2ea23c914347a2ba0b6c221681c61e2fa3564406569ecc6c803c033142a8ce5b16562061a8b458b88bd9c0aed57e9c69d35abf16c09b0985803c033142a8ce5b16562061a8b458b88bd9c0aed57e9c69d35abf16c09b098597e268dbe1317a60a178af988be3512146242721ea0868d1b16d80353aea9ae4e3b76f5fd02a48a969ebe9f64113eb1f2848ddb6e85723a941e926418af2501e614095a8d2d2df08d81c00927a2edfe6ec193194414f08b28c681ed3d10fd341991bdb0893c0fbfbde486e646b7bf4e06e6fb1aacb543781dc4585b2eea07922076a0e0a7722a911ec7a506d39fb98f6644fc672f875117a17052d3aff6fcb4b076a0e0a7722a911ec7a506d39fb98f6644fc672f875117a17052d3aff6fcb4bbeeca0864e9f2ec93456d374c1228b16963c9fee8cb49f84e446b83f3ce3aba1beeca0864e9f2ec93456d374c1228b16963c9fee8cb49f84e446b83f3ce3aba127979f1924a74cb3081e21888e5b03b8a901cad6e05c7887d74362c91121595727979f1924a74cb3081e21888e5b03b8a901cad6e05c7887d74362c9112159576838a743f657ea590b5ca70c46a81d8fd2244fba434b8d7500da40c4ebde179e6838a743f657ea590b5ca70c46a81d8fd2244fba434b8d7500da40c4ebde179e347d1a8055aa8297aaee6d40f6a0c4fe914360b8e51b01b07fa3cc6c44335ce8347d1a8055aa8297aaee6d40f6a0c4fe914360b8e51b01b07fa3cc6c44335ce800f2cc5def0d81af9bc5c2c22a1a4acdb11b1a43dc6c9f758227f2815968d07800f2cc5def0d81af9bc5c2c22a1a4acdb11b1a43dc6c9f758227f2815968d0783bdfdbed83b89597e6a0bf094e3b8143b43d6a0099798963cf93ab9f6e99e5a13bdfdbed83b89597e6a0bf094e3b8143b43d6a0099798963cf93ab9f6e99e5a1e9717924d51450a4a4f75f5b5cfab62dffbba012471bbf6a519aefd06846021ae9717924d51450a4a4f75f5b5cfab62dffbba012471bbf6a519aefd06846021aa66dbf934043fc7990fa38aec88c40a49202f5d8d8c03a7d456d5b9eb417f207a66dbf934043fc7990fa38aec88c40a49202f5d8d8c03a7d456d5b9eb417f207e3d1768d85517ebaa66a5938c37148a5fc976f7f9da730b34f0c73027e5ff14ce3d1768d85517ebaa66a5938c37148a5fc976f7f9da730b34f0c73027e5ff14c4ebc2abcc1453cc5b3477405e474d0cccb142de8a74bb352dc174f78e01bc7e14ebc2abcc1453cc5b3477405e474d0cccb142de8a74bb352dc174f78e01bc7e148fdd2bbb66acfdf0d7b99fb03eeec07c8e7df0e602a5474a840608b24f6648048fdd2bbb66acfdf0d7b99fb03eeec07c8e7df0e602a5474a840608b24f66480a4f70db4415c130ad0e50cd1665f5289c0a93cd4cfcefc28dedd1ac8a2aa269da4f70db4415c130ad0e50cd1665f5289c0a93cd4cfcefc28dedd1ac8a2aa269d27bab2cc417225bccd574674ff4573c00628a9fff6b719c3650753cee49c395f27bab2cc417225bccd574674ff4573c00628a9fff6b719c3650753cee49c395f0ef3933f8831bd1669f7c72a19e36a9a48a5ab4082df35928286dcdaf2fb70380ef3933f8831bd1669f7c72a19e36a9a48a5ab4082df35928286dcdaf2fb70387a4b62687d8693b709adfca83bdacc0288c93d9decc21d4b54d9789325f752f27a4b62687d8693b709adfca83bdacc0288c93d9decc21d4b54d9789325f752f2163c4d48045a666821c86b261cad86e91eeffce3664d5b0d5ae34bf79c997b5c163c4d48045a666821c86b261cad86e91eeffce3664d5b0d5ae34bf79c997b5c5e1118d3a29733acb663d3dcdf1a918733a2da63c1127a712db9ef9181d280635e1118d3a29733acb663d3dcdf1a918733a2da63c1127a712db9ef9181d2806332732c955bdbb932d7c986e6a7ef454e8096cf20edfe876c311f3baeadb9ba0432732c955bdbb932d7c986e6a7ef454e8096cf20edfe876c311f3baeadb9ba048e65b7fc75561bed0a9aca9f5a49af1af813d8d7cf34f1bc10fc27e7ec43cc4b8e65b7fc75561bed0a9aca9f5a49af1af813d8d7cf34f1bc10fc27e7ec43cc4b916d618b75b2a609036842378793953ed0ce0e9305041854ce1e9b8778d67fc7916d618b75b2a609036842378793953ed0ce0e9305041854ce1e9b8778d67fc7f37305af9b025a40ffd9dcefe802443fa8853f77d85c3a08776a0a1e59323cbcf37305af9b025a40ffd9dcefe802443fa8853f77d85c3a08776a0a1e59323cbc741ea4a99d470d090934c14026221387767f0c824647fa9c8db1c5ba5ae9d800741ea4a99d470d090934c14026221387767f0c824647fa9c8db1c5ba5ae9d800bc3580575306df8160a4b7898ce66c21704e21d0aa273143bbf467885e943c4fbc3580575306df8160a4b7898ce66c21704e21d0aa273143bbf467885e943c4feda4ad03c46d08b8f7522952a89813ce761146f0253ea1c7c3794892c7393021eda4ad03c46d08b8f7522952a89813ce761146f0253ea1c7c3794892c7393021627d462f1c524b3d2414c77cabdaf61edcda8fe5e3e3b8285450b1ea9ceff80d627d462f1c524b3d2414c77cabdaf61edcda8fe5e3e3b8285450b1ea9ceff80dccf9e13edfe500e21d13220aa4d5dbef5d0ad144d7fea2273e8110b236ade95fccf9e13edfe500e21d13220aa4d5dbef5d0ad144d7fea2273e8110b236ade95fe68a7b72318aec4b743928dc000b9412a356340bf9668348d2b90bc761115f035661ace67b5d55a6aa0091dc093a461b7ad8000713365d5bdbe230e1854eb7d689eb481a285cef9b633aec1bae4d247808bc44d2f0d9e81f38262ba50b5c905e27ff1bc45b240401eb27f7c02a613eb5510ddcd77ff3af319f47a918ec86c37d27ff1bc45b240401eb27f7c02a613eb5510ddcd77ff3af319f47a918ec86c37d44e3481e3544816ffbd67e96b3b36e2dcc059d2fea420042cf2bc17feaf0d0a444e3481e3544816ffbd67e96b3b36e2dcc059d2fea420042cf2bc17feaf0d0a4cdef332f4d56563493bdb3ba409c9bfb008eb0ed2c2399387895d104e9cad87bcdef332f4d56563493bdb3ba409c9bfb008eb0ed2c2399387895d104e9cad87b108eabab5f8a7e58caebdfccc6bf6524955bbe092e65efb3c845403441a63265108eabab5f8a7e58caebdfccc6bf6524955bbe092e65efb3c845403441a632652ec1ad29663af0f504c5230e2d75b8a957e2e74a3b16feb68f628fb9dc82def0fb303ebcaf3db0f5a283b7314718bc1ecfc2a7512986f90742385c9b189956bf2fc356943b392813004882911a815336759238d7dcc1afeef9487149237ac2a32e324eff5d8eb0989abc1c70483557b4bc5d4f3770776616529d4e27a29c3368bd8ba5489933477cf1b1017febf02a6cf082332f16182e5d4aa2c55c966a188a3e580e52025164071b578ad7b4741a2d9720aa5e7099a0da9a622d916b38a0f5314d2d78b013b7baad4f093ecbcd3d1f91c0a5a7d297640c5b520d58850bdd3e271e52c18ce56cc67e4a5923c8a90ce2909ee632325de7a8eb6054d66b14ba75527dd7817871f05a02ead929d5c677deb9a201a460eb7e1ec4aaeec0e561b5d444a2525e36797609d376a0b834ea8e2989bfafb178bf0e53a16f5883122df105184084ac4022a3afa639c52b32d3d646f7a04cd7c2053a017661d7ac65d805b7372548b71f7ea69082b279fce7a546a1e49e45dbbef9ef22799e96ceb0fee02264d614c1c012432ef9e8641bad3859ab1b52e42d694224685b2106033b286fcb76c4e0092d6b3f919c67b800466738106465bddd32d137dce45397ecde3cb1045e0b37917a9bcd5ba35da874f91fc3e9e51c42889aa5b43ed32725369900bece41bc3f0a1b8ab5e3774f733fcd8910b99c4be0b805682af28ad66c7a0be20df6203bfbf65af818568c9775f1ecd1509722d2c8b55232e52309bcffcf165aa4aa96ad6816229244babdedf3a89b0b648faa838b6bd9541b9319dbe2e3d73f8c5ff6d014d638ab806b1e5253458b8cc6aa1b7475c4797164545da5490154246b9368f5fb28fc353e27c95fdc2af2a7d2b44539a2210f98e2449fbe88ff4f2fb23a794099d15931312128c97083b294bd138708f294169fcdce142b7bb1b54b07a870fda9b23b24f23eef77c1b203cf266f4f075c8ca17b754fbe1b487217ce37b60d2c657c13bae44c273f5f2999f364271c78b0d4673ee8fcb4c3f75fe0a3c29efffcdb74496b312f51aeaa3d1fbb45f33923285402154f244ed8f97152084f1346502ddce1eeb66818643ddd12a86a62380f54bbbb5339dc9df852eb3265c283ab0d70c1a4899a465c69122561080161d2772e876b6419ea26531a4ed58b326500abbcc2dca693aa46610a56699eefbd573ee66f8e4280c0c1972cf41f8bf7e7e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8553600438b453ae2ca26890a044de59cbe1802ef526840f7dd9de03ddfc2f44ef63600438b453ae2ca26890a044de59cbe1802ef526840f7dd9de03ddfc2f44ef6318a5f007ec1fd16bf4b9d54b46cc11e178429491f1f4c16f9ac910b725a024f318a5f007ec1fd16bf4b9d54b46cc11e178429491f1f4c16f9ac910b725a024f21432674f483923b82e802e4a247973096e21d7749ae0ba75f79d05acb452e2421432674f483923b82e802e4a247973096e21d7749ae0ba75f79d05acb452e246e8b24debc7082b34ff1233428052661b3ca0f68d13e4ed2d3f817dbed77f6af6e8b24debc7082b34ff1233428052661b3ca0f68d13e4ed2d3f817dbed77f6af6c4b80da69672fada0cebf987dab7b01b5ed43fd5349ba0602d7ef49dc78d77f6c4b80da69672fada0cebf987dab7b01b5ed43fd5349ba0602d7ef49dc78d77fce182ffa9b0721b3799b5389710baca51c066e36867a2db9ccfc93d86fc3a229ce182ffa9b0721b3799b5389710baca51c066e36867a2db9ccfc93d86fc3a2298210404a581a23097664f4e674407ba234e844ef26c640ced36b94b1366aee428210404a581a23097664f4e674407ba234e844ef26c640ced36b94b1366aee425f658c92c24c5884d0f45b0cf856ff6314ff840183a89deead24c9cd80447409339eef321910d83af3bcd69991f68298a40952a3f5467fc0df5fd7fb96017f34a35d71af30d5627db7ade9c66dbde5c7747e9c7f6a3a32c58eee486096a70f18245d8a4cbe226126dc76714d8e140f92dc07d396215898535ad8d2945d2a83d13e871664f32a165d4ba0d81694614dc7083d9d99d4ce14269573b883b6dc3f604ec7389b653055c7b774ebd25ab8d3db0077969349b54c8d667e39ccd86c5b42cb5e8e7e5f4a3988e1063c142c60dc2df75605f4c46515e776e3aca6df976e143972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986ceebae7b8927a3227e5303cf5e0f1f7b34bb542ad7250ac03fbcde36ec2f1508e07933a02f61bde94839d8cef1c1f94a1196436add4c61fc5ceba43e704b66cb8cb5e9d97bab9f264a6f27b8d20f6d7e62c6b55971877a4f0f89fcc4da97f31783b042fc7d6aca0f10d68e45efa56b9bc0a1496608e7e7728fe09d1a534a054aa8037fb07ae96a7c20a2fd7015f7d94d3da70354358de27ae7e48907c6169b15e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855a6472d658cd44b8018567e9d27eef7ebb389662bc5d9ef1103d6ff6418e27f5f4bdc898a3e489ba160450c7392a4829cf428902ecf716ac35bf352ca065ccc95f11e51ed1eec39ad21d458ba44d805807a301c17ee9fe39538ccc9e2b280936c2056d12e302f8a1d43633256837fc5eade2c0b310cc513bb4ce30db3a1a4607afaa1c458d6d1c8f3ca8fc1c5a9268a0f72f7f2c633c4ee345da982a1a114687f69fabca244a0975d662f7142197da3494adf671e060178b6a2fbdef271f96137cb5e8e7e5f4a3988e1063c142c60dc2df75605f4c46515e776e3aca6df976e143972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb369868cb5e9d97bab9f264a6f27b8d20f6d7e62c6b55971877a4f0f89fcc4da97f31783b042fc7d6aca0f10d68e45efa56b9bc0a1496608e7e7728fe09d1a534a054af11e51ed1eec39ad21d458ba44d805807a301c17ee9fe39538ccc9e2b280936cbba2ba659f9dcfec28211c8e387d1045688ad10ff2f4bc12b7cbcda68369a18079862279dc1fa95e21e6d8cd2d53e73d783ef2944a34c019e62a62baa9474205577f3c259ed53617aca2d43b89f5a6abf228d94db744b1f0af8267c0d425d0e48bbb68033f2165160be6391125e22ac4170c1f106bfc865c1fe8573ac8cc1d7bc53bcc42d996ba40e91ef2545fb134b814aac02f07316bb8dca0e9656e33e6494c980ccccdabeef0d163d157c5e98c5f94a70623510be536b5e5c8db8e8ddb56e7a043e774619de261975402b6609d6f9362d8be93f261ebbb4f8755761547108433e0ff0d96293820c5573b721bd44908d73fb13c44fe3e9a80489cac2c4b8629800b02090ac03c12b6175481fc24491233594c97039dfaf31d578b7a8f5bf0rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootansible-core-2.18.3-150400.9.11.1.src.rpmansible-core@@       (python311-resolvelib >= 0.5.3 with python311-resolvelib < 2.0.0)/usr/bin/python3.11python(abi)python311-Jinja2python311-PyYAMLpython311-cryptographypython311-packagingpython311-rpmrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PartialHardlinkSets)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)rpmlib(RichDependencies)3.113.0.05.13.0.4-14.6.0-14.0.4-14.0-15.2-14.12.0-1ansibleansible-baseansible-coreansible-core32.182.184.14.3h4Wh+@ggggNgJ@g@r@g? g5@g @f@fJf`fffr@fO/fh@f @eee@e@e@exK@eoeJ&e%@c!@cb@b@bc@harshvardhan.sharma@suse.comharshvardhan.sharma@suse.comharshvardhan.sharma@suse.comopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deharshvardhan.sharma@suse.comopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.desteven.kowalik@suse.comkastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.de- Add patch suse-distribution-fix.patch to fix distribution.py to identify the correct distribution for server-sap and micro (#PED-12643)- Add missing dependency on python311-rpm required by package_facts (#1243193)- Add patch unarchive-test-fix.patch for unarchive: Clamp zip timestamps on 32-bit time_t. (#84409)- update to 2.18.3: * Minor Changes - ansible-test - Automatically retry HTTP GET/PUT/DELETE requests on exceptions. - ansible-test - Use Python's urllib instead of curl for HTTP requests. * Bugfixes - include_vars - fixed erroneous warning if an unreserved variable name contains a single character that matches a reserved variable. (#84623) - linear strategy - fix executing end_role meta tasks for each host, instead of handling these as implicit run_once tasks (#84660).- update to 2.18.2: * Bugfixes - Ansible will now also warn when reserved keywords are set via a module (set_fact, include_vars, etc). - Ansible.Basic - Fix required_if check when the option value to check is unset or set to null. - Use consistent multiprocessing context for action write locks - ansible-test - Fix up coverage reporting to properly translate the temporary path of integration test modules to the expected static test module path. - ansible-vault will now correctly handle --prompt, previously it would issue an error about stdin if no 2nd argument was passed - copy action now prevents user from setting internal options. - gather_facts action now defaults to ansible.legacy.setup if smart was set, no network OS was found and no other alias for setup was present. - gather_facts action will now issues errors and warnings as appropriate if a network OS is detected but no facts modules are defined for it. - ssh - Improve the logic for parsing CLIXML data in stderr when working with Windows host. This fixes issues when the raw stderr contains invalid UTF-8 byte sequences and improves embedded CLIXML sequences. - ssh - connection options were incorrectly templated during reset_connection tasks (#84238).- update to 2.18.1: * Minor Changes - ansible-test - When detection of the current container network fails, a warning is now issued and execution continues. This simplifies usage in cases where the current container cannot be inspected, such as when running in GitHub Codespaces. * Security Fixes - Templating will not prefer AnsibleUnsafe when a variable is referenced via hostvars - CVE-2024-11079 * Bugfixes - Fix returning 'unreachable' for the overall task result. This prevents false positives when a looped task has unignored unreachable items (#84019). - ansible-test - Fix traceback that occurs after an interactive command fails. - dnf5 - fix installing a package using state=latest when a binary of the same name as the package is already installed (#84259) - dnf5 - matching on a binary can be achieved only by specifying a full path (#84334) - runas become - Fix up become logic to still get the SYSTEM token with the most privileges when running as SYSTEM.- update to 2.18.0: * Breaking Changes / Porting Guide - Stopped wrapping all commands sent over SSH on a Windows target with a powershell.exe executable. This results in one less process being started on each command for Windows to improve efficiency, simplify the code, and make raw an actual raw command run with the default shell configured on the Windows sshd settings. This should have no affect on most tasks except for raw which now is not guaranteed to always be running in a PowerShell shell and from having the console output codepage set to UTF-8. To avoid this issue either swap to using ansible.windows.win_command, ansible.windows.win_shell, ansible.windows.win_powershell or manually wrap the raw command with the shell commands needed to set the output console encoding. - persistent connection plugins - The ANSIBLE_CONNECTION_PATH config option no longer has any effect. * Deprecated Features - Deprecate ansible.module_utils.basic.AnsibleModule.safe_eval and ansible.module_utils.common.safe_eval as they are no longer used. - persistent connection plugins - The ANSIBLE_CONNECTION_PATH config option no longer has any effect, and will be removed in a future release. - yum_repository - deprecate async option as it has been removed in RHEL 8 and will be removed in ansible-core 2.22. - yum_repository - the following options are deprecated: deltarpm_metadata_percentage, gpgcakey, http_caching, keepalive, metadata_expire_filter, mirrorlist_expire, protect, ssl_check_cert_permissions, ui_repoid_vars as they have no effect for dnf as an underlying package manager. The options will be removed in ansible-core 2.22. * Removed Features (previously deprecated) - Play - removed deprecated ROLE_CACHE property in favor of role_cache. - Remove deprecated VariableManager._get_delegated_vars method (#82950) - Removed Python 3.10 as a supported version on the controller. Python 3.11 or newer is required. - Removed support for setting the vars keyword to lists of dictionaries. It is now required to be a single dictionary. - loader - remove deprecated non-inclusive words (#82947). - paramiko_ssh - removed deprecated ssh_args from the paramiko_ssh connection plugin (#82939). - paramiko_ssh - removed deprecated ssh_common_args from the paramiko_ssh connection plugin (#82940). - paramiko_ssh - removed deprecated ssh_extra_args from the paramiko_ssh connection plugin (#82941). - play_context - remove deprecated PlayContext.verbosity property (#82945). - utils/listify - remove deprecated 'loader' argument from listify_lookup_plugin_terms API (#82949). * Security Fixes - include_vars action - Ensure that result masking is correctly requested when vault-encrypted files are read. (CVE-2024-8775) - task result processing - Ensure that action-sourced result masking (_ansible_no_log=True) is preserved. (CVE-2024-8775) - user action won't allow ssh-keygen, chown and chmod to run on existing ssh public key file, avoiding traversal on existing symlinks (CVE-2024-9902). * Known Issues - ansible-test - When using ansible-test containers with Podman on a Ubuntu 24.04 host, ansible-test must be run as a non-root user to avoid permission issues caused by AppArmor. - ansible-test - When using the Fedora 40 container with Podman on a Ubuntu 24.04 host, the unix-chkpwd AppArmor profile must be disabled on the host to allow SSH connections to the container. * New Plugins - timedout - did the task time out - vaulted_file - Is this file an encrypted vault * New Modules - ansible.modules - mount_facts - Retrieve mount information. * Bugfixes Please see the full changelog: https://github.com/ansible/ansible/blob/v2.18.0/changelogs/CHANGELOG-v2.18.rst- Backport patch to relax resolvelib dependency: 771f7ad29ca4d259761eaa88673c2e32f6412bbe.patch- Added necessary test dependencies: pytest-xdist, pytest-mock, pytz, passlib, git-core, and openssh to ensure proper test execution. - Introduced the `ansible_python_version` variable and updated the test command.- update to 2.17.6: https://github.com/ansible/ansible/blob/v2.17.6/changelogs/CHANGELOG-v2.17.rst * Minor Changes - ansible-test - Improve container runtime probe error handling. When unexpected probe output is encountered, an error with more useful debugging information is provided. * Security Fixes - include_vars action - Ensure that result masking is correctly requested when vault-encrypted files are read. (CVE-2024-8775) - task result processing - Ensure that action-sourced result masking (_ansible_no_log=True) is preserved. (CVE-2024-8775) - user action won't allow ssh-keygen, chown and chmod to run on existing ssh public key file, avoiding traversal on existing symlinks (CVE-2024-9902). * Bugfixes - Fix disabling SSL verification when installing collections and roles from git repositories. If --ignore-certs isn't provided, the value for the GALAXY_IGNORE_CERTS configuration option will be used (#83326). - Improve performance on large inventories by reducing the number of implicit meta tasks. - Use the requested error message in the ansible.module_utils.facts.timeout timeout function instead of hardcoding one. - ansible-test - Enable the sys.unraisablehook work-around for the pylint sanity test on Python 3.11. Previously the work-around was only enabled for Python 3.12 and later. However, the same issue has been discovered on Python 3.11. - debconf - set empty password values (#83214). - facts - skip if distribution file path is directory, instead of raising error (#84006). - user action will now require O(force) to overwrite the public part of an ssh key when generating ssh keys, as was already the case for the private part. - user module now avoids changing ownership of files symlinked in provided home dir skeleton- update to 2.17.5: https://github.com/ansible/ansible/blob/v2.17.5/changelogs/CHANGELOG-v2.17.rst * Bugfixes - Add descriptions for ansible-galaxy install --help` and ``ansible-galaxy role|collection install --help. - Errors now preserve stacked error messages even when YAML is involved. - ansible-galaxy install --help - Fix the usage text and document that the requirements file passed to -r can include collections and roles. - copy - mtime/atime not updated. Fix now update mtime/atime(#83013) - delay keyword is now a float, matching the underlying 'time' API and user expectations. - dnf5 - re-introduce the state: installed alias to state: present (#83960) - module_utils atomic_move (used by most file based modules), now correctly handles permission copy and setting mtime correctly across all paths- update to 2.17.4: https://github.com/ansible/ansible/blob/v2.17.4/changelogs/CHANGELOG-v2.17.rst * Bugfixes - Fix SemanticVersion.parse() to store the version string so that __repr__ reports it instead of None (#83831). - Fix an issue where registered variable was not available for templating in loop_control.label on skipped looped tasks (#83619) - Fix for meta tasks breaking host/fork affinity with host_pinned strategy (#83294) - Fix using the current task's directory for looking up relative paths within roles (#82695). - atomic_move - fix using the setgid bit on the parent directory when creating files (#46742, #67177). - connection plugins using the 'extras' option feature would need variables to match the plugin's loaded name, sometimes requiring fqcn, which is not the same as the documented/declared/expected variables. Now we fall back to the 'basename' of the fqcn, but plugin authors can still set the expected value directly. - csvfile lookup - give an error when no search term is provided using modern config syntax (#83689). - include_tasks - Display location when attempting to load a task list where include_* did not specify any value - #83874 - powershell - Improve CLIXML decoding to decode all control characters and unicode characters that are encoded as surrogate pairs. - psrp - Fix bug when attempting to fetch a file path that contains special glob characters like [] - runtime-metadata sanity test - do not crash on deprecations if galaxy.yml contains an empty version field (#83831). - ssh - Fix bug when attempting to fetch a file path with characters that should be quoted when using the piped transfer method- update to 2.17.3: https://github.com/ansible/ansible/blob/v2.17.3/changelogs/CHANGELOG-v2.17.rst * Minor Changes - ansible-test - Improve the error message shown when an unknown --remote or --docker option is given. - ansible-test - Removed the vyos/1.1.8 network remote as it is no longer functional. * Bugfixes - Warning now includes filename and line number of variable when specifying a list of dictionaries for vars (#82528). - config, restored the ability to set module compression via a variable - debconf - fix normalization of value representation for boolean vtypes in new packages (#83594) - linear strategy: fix handlers included via include_tasks handler to be executed in lockstep (#83019)- update to 2.17.2: https://github.com/ansible/ansible/blob/v2.17.2/changelogs/CHANGELOG-v2.17.rst * Bugfixes - Fix a traceback when an environment variable contains certain special characters (#83498) - dnf - reverted incomplete fix from 2.17.2rc1 (#83504) - dnf, dnf5 - fix for installing a set of packages by specifying them using a wildcard character (#83373) - linear strategy now provides a properly templated task name to the v2_runner_on_started callback event. - package_facts - ignore warnings sent by apk on stderr (#83501). - replace - Updated before/after example (#83390). - templating hostvars under native jinja will not cause serialization errors anymore.- update to 2.17.1: https://github.com/ansible/ansible/blob/v2.17.1/changelogs/CHANGELOG-v2.17.rst * Minor Changes - ansible-test - Update pypi-test-container to version 3.1.0. * Bugfixes - Fix rapid memory usage growth when notifying handlers using the listen keyword (#83392) - Fix the task attribute resolved_action to show the FQCN instead of None when action or local_action is used in the playbook. - Fix using module_defaults with local_action/action (#81905). - fixed unit test test_borken_cowsay to address mock not been properly applied when existing unix system already have cowsay installed. - powershell - Implement more robust deletion mechanism for C# code compilation temporary files. This should avoid scenarios where the underlying temporary directory may be temporarily locked by antivirus tools or other IO problems. A failure to delete one of these temporary directories will result in a warning rather than an outright failure. - shell plugin - properly quote all needed components of shell commands (#82535)- update to 2.17.0: https://github.com/ansible/ansible/blob/v2.17.0/changelogs/CHANGELOG-v2.17.rst * Major Changes - urls.py - Removed support for Python 2 * Minor Changes - Add dump and passno mount information to facts component (#80478) - Added MIRACLE LINUX 9.2 in RedHat OS Family. - Interpreter Discovery - Remove hardcoded references to specific python interpreters to use for certain distro versions, and modify logic for python3 to become the default. - Use Python's built-in functools.update_wrapper instead an inline copy from Python 3.7. - User can now set ansible.log to record higher verbosity than what is specified for display via new configuration item LOG_VERBOSITY. - DEFAULT_PRIVATE_ROLE_VARS is now overridden by explicit setting of public for include_roles and import_roles. - ansible-galaxy role|collection init - accept --extra-vars to supplement/override the variables ansible-galaxy injects for templating .j2 files in the skeleton. - import_role action now also gets a public option that controls variable exports, default depending on DEFAULT_PRIVATE_ROLE_VARS (if using defaults equates to public=True). - added configuration item TARGET_LOG_INFO that allows the user/author to add an information string to the log output on targets. - ansible-doc - treat double newlines in documentation strings as paragraph breaks. This is useful to create multi-paragraph notes in module/plugin documentation (#82465). - ansible-doc output has been revamped to make it more visually pleasing when going to a terminal, also more concise, use -v to show extra information. - ansible-galaxy - Started normalizing build directory with a trailing separator when building collections, internally. (#81619). - ansible-galaxy dependency resolution messages have changed the unexplained 'virtual' collection for the specific type ('scm', 'dir', etc) that is more user friendly - ansible-test - Add Alpine 3.19 container. - ansible-test - Add Alpine 3.19 to remotes. - ansible-test - Add Fedora 39 container. - ansible-test - Add Fedora 39 remote. - ansible-test - Add a work-around for permission denied errors when using pytest >= 8 on multi-user systems with an installed version of ansible-test. - ansible-test - Add support for RHEL 9.3 remotes. - ansible-test - Added a macOS 14.3 remote VM. - ansible-test - Bump the nios-test-container from version 2.0.0 to version 3.0.0. - ansible-test - Containers and remotes managed by ansible-test will have their Python EXTERNALLY-MANAGED marker (PEP668) removed. This provides backwards compatibility for existing tests running in newer environments which mark their Python as externally managed. A future version of ansible-test may change this behavior, requiring tests to be adapted to such environments. - ansible-test - Make Python 3.12 the default version used in the base and default containers. - ansible-test - Remove Alpine 3(.18) container. - ansible-test - Remove Alpine 3.18 from remotes. - ansible-test - Remove Fedora 38 remote support. - ansible-test - Remove Fedora 38 test container. - ansible-test - Remove rhel/9.2 test remote - ansible-test - Remove the FreeBSD 13.2 remote. - ansible-test - Removed fallback to virtualenv when -m venv is non-functional. - ansible-test - Removed test remotes: macos/13.2 - ansible-test - Removed the no-basestring sanity test. The test is no longer necessary now that Python 3 is required. - ansible-test - Removed the no-dict-iteritems, no-dict-iterkeys and no-dict-itervalues sanity tests. The tests are no longer necessary since Python 3 is required. - ansible-test - Removed the no-main-display sanity test. The unwanted pattern is unlikely to occur, since the test has existed since Ansible 2.8. - ansible-test - Removed the no-unicode-literals sanity test. The test is unnecessary now that Python 3 is required and the unicode_literals feature has no effect. - ansible-test - Special handling for installation of cryptography has been removed, as it is no longer necessary. - ansible-test - The shellcheck sanity test no longer disables the SC2164 check. In most cases, seeing this error means the script is missing set -e. - ansible-test - The unidiomatic-typecheck rule has been enabled in the pylint sanity test. - ansible-test - The unidiomatic-typecheck rule has been removed from the validate-modules sanity test. - ansible-test - Update the base and default containers to use Ubuntu 22.04 for the base image. This also updates PowerShell to version 7.4.0 with .NET 8.0.0 and ShellCheck to version 0.8.0. - ansible-test - Updated the CloudStack test container to version 1.7.0. - ansible-test - Updated the distro test containers to version 6.3.0 to include coverage 7.3.2 for Python 3.8+. The alpine3 container is now based on 3.18 instead of 3.17 and includes Python 3.11 instead of Python 3.10. - ansible-test - Updated the distro test containers to version 7.1.0. - ansible-test - When ansible-test installs requirements, it now instructs pip to allow installs on externally managed environments as defined by PEP 668. This only occurs in ephemeral environments managed by ansible-test, such as containers, or when the --requirements option is used. - ansible-test - When invoking sleep in containers during container setup, the env command is used to avoid invoking the shell builtin, if present. - ansible-test - document block name now included in error message for YAML parsing errors (#82353). - ansible-test - sanity test allows EXAMPLES to be multi-document YAML (#82353). - ansible-test now has FreeBSD 13.3 and 14.0 support - ansible.builtin.user - Remove user not found warning (#80267) - apt_repository.py - use api.launchpad.net endpoint instead of launchpad.net/api - async tasks can now also support check mode at the same time. - async_status now supports check mode. - constructed inventory plugin - Adding a note that only group_vars of explicit groups are loaded (#82580). - csvfile - add a keycol parameter to specify in which column to search. - dnf - add the best option - dnf5 - add the best option - filter plugin - Add the count and mandatory_count parameters in the regex_replace filter - find - add a encoding parameter to specify which encoding of the files to be searched. - git module - gpg_allowlist name was added in 2.17 and we will eventually deprecate the gpg_whitelist alias. - import_role - allow subdirectories with `_from` options for parity with include_role (#82584). - module argument spec - Allow module authors to include arbitrary additional context in the argument spec, by making use of a new top level key called context. This key should be a dict type. This allows for users to customize what they place in the argument spec, without having to ignore sanity tests that validate the schema. - modules - Add the ability for an action plugin to call self._execute_module(*, ignore_unknown_opts=True) to execute a module with options that may not be supported for the version being called. This tells the module basic wrapper to ignore validating the options provided match the arg spec. - package action now has a configuration that overrides the detected package manager, it is still overridden itself by the use option. - py3compat - Remove ansible.utils.py3compat as it is no longer necessary - removed the unused argument create_new_password from CLI.build_vault_ids (#82066). - urls - Add support for TLS 1.3 post handshake certificate authentication - #81782 - urls - reduce complexity of Request.open - user - accept yescrypt hash as user password - validate-modules tests now correctly handles choices in dictionary format. * Breaking Changes / Porting Guide - assert - Nested templating may result in an inability for the conditional to be evaluated. See the porting guide for more information. * Deprecated Features - Old style vars plugins which use the entrypoints get_host_vars or get_group_vars are deprecated. The plugin should be updated to inherit from BaseVarsPlugin and define a get_vars method as the entrypoint. - The 'required' parameter in 'ansible.module_utils.common.process.get_bin_path' API is deprecated (#82464). - module_utils - importing the following convenience helpers from ansible.module_utils.basic has been deprecated: get_exception, literal_eval, _literal_eval, datetime, signal, types, chain, repeat, PY2, PY3, b, binary_type, integer_types, iteritems, string_types, test_type, map and shlex_quote. - ansible-doc - role entrypoint attributes are deprecated and eventually will no longer be shown in ansible-doc from ansible-core 2.20 on (#82639, #82678). - paramiko connection plugin, configuration items in the global scope are being deprecated and will be removed in favor or the existing same options in the plugin itself. Users should not need to change anything (how to configure them are the same) but plugin authors using the global constants should move to using the plugin's get_option(). * Removed Features (previously deprecated) - Remove deprecated APIs from ansible-docs (#81716). - Remove deprecated JINJA2_NATIVE_WARNING environment variable (#81714) - Remove deprecated scp_if_ssh from ssh connection plugin (#81715). - Remove deprecated crypt support from ansible.utils.encrypt (#81717) - Removed Python 2.7 and Python 3.6 as a supported remote version. Python 3.7+ is now required for target execution. - With the removal of Python 2 support, the yum module and yum action plugin are removed and redirected to dnf. * Security Fixes - ANSIBLE_NO_LOG - Address issue where ANSIBLE_NO_LOG was ignored (CVE-2024-0690) - ansible-galaxy - Prevent roles from using symlinks to overwrite files outside of the installation directory (CVE-2023-5115) - templating - Address issues where internal templating can cause unsafe variables to lose their unsafe designation (CVE-2023-5764) * Bugfixes - Add a version ceiling constraint for pypsrp to avoid potential breaking changes in the 1.0.0 release. - All core lookups now use set_option(s) even when doing their own custom parsing. This ensures that the options are always the proper type. - Allow for searching handler subdir for included task via include_role (#81722) - AnsibleModule.atomic_move - fix preserving extended ACLs of the destination when it exists (#72929). - Cache host_group_vars after instantiating it once and limit the amount of repetitive work it needs to do every time it runs. - Call PluginLoader.all() once for vars plugins, and load vars plugins that run automatically or are enabled specifically by name subsequently. - Consolidate systemd detection logic into one place (#80975). - Consolidated the list of internal static vars, centralized them as constant and completed from some missing entries. - Do not print undefined error message twice (#78703). - Enable file cache for vaulted files during vars lookup to fix a strong performance penalty in huge and complex playbboks. - Fix NEVRA parsing of package names that include digit(s) in them (#76463, #81018) - Fix force_handlers not working with any_errors_fatal (#36308) - Fix run_once being incorrectly interpreted on handlers (#81666) - Fix an issue when setting a plugin name from an unsafe source resulted in ValueError: unmarshallable object (#82708) - Fix check for missing _sub_plugin attribute in older connection plugins (#82954) - Fix condition for unquoting configuration strings from ini files (#82387). - Fix for when any_errors_fatal was ignored if error occurred in a block with always (#31543) - Fix handlers not being executed in lockstep using the linear strategy in some cases (#82307) - Fix handling missing urls in ansible.module_utils.urls.fetch_file for Python 3. - Fix issue where an include_tasks handler in a role was not able to locate a file in tasks/ when tasks_from was used as a role entry point and main.yml was not present (#82241) - Fix issues when tasks withing nested blocks wouldn't run when force_handlers is set (#81533) - Fix loading vars_plugins in roles (#82239). - Fix notifying role handlers by listen keyword topics with the "role_name : " prefix (#82849). - Fix setting proper locale for git executable when running on non english systems, ensuring git output can always be parsed. - Fix tasks in always section not being executed for nested blocks with any_errors_fatal (#73246) - Fixes permission for cache json file from 600 to 644 (#82683). - Give the tombstone error for include pre-fork like other tombstoned action/module plugins. - Harden python templates for respawn and ansiballz around str literal quoting - Include the task location when a module or action plugin is deprecated (#82450). - Interpreter discovery - Add Amzn to OS_FAMILY_MAP for correct family fallback for interpreter discovery (#80882). - Mirror the behavior of dnf on the command line when handling NEVRAs with omitted epoch (#71808) - Plugin loader does not dedupe nor cache filter/test plugins by file basename, but full path name. - Properly template tags in parent blocks (#81053) - Provide additional information about the alternative plugin in the deprecation message (#80561). - Remove the galaxy_info field platforms from the role templates (#82453). - Restoring the ability of filters/tests can have same file base name but different tests/filters defined inside. - Reword the error message when the module fails to parse parameters in JSON format (#81188). - Reword warning if the reserved keyword _ansible_ used as a module parameter (#82514). - Run all handlers with the same listen topic, even when notified from another handler (#82363). - Slight optimization to hostvars (instantiate template only once per host, vs per call to var). - Stopped misleadingly advertising async mode support in the reboot module (#71517). - ansible-galaxy role import - fix using the role_name in a standalone role's galaxy_info metadata by disabling automatic removal of the ansible-role- prefix. This matches the behavior of the Galaxy UI which also no longer implicitly removes the ansible-role- prefix. Use the --role-name option or add a role_name to the galaxy_info dictionary in the role's meta/main.yml to use an alternate role name. - ansible-test sanity --test runtime-metadata - add action_plugin as a valid field for modules in the schema (#82562). - ansible.module_utils.service - ensure binary data transmission in daemonize() - any_errors_fatal should fail all hosts and rescue all of them when a rescue section is specified (#80981) - include_role - properly execute v2_playbook_on_include and v2_runner_on_failed callbacks as well as increase ok and failed stats in the play recap, when appropriate (#77336) - allow_duplicates - fix evaluating if the current role allows duplicates instead of using the initial value from the duplicate's cached role. - ansible-config init will now dedupe ini entries from plugins. - ansible-config will now properly template defaults before dumping them. - ansible-doc - fixed "inicates" typo in output - ansible-doc - format top-level descriptions with multiple paragraphs as multiple paragraphs, instead of concatenating them (#83155). - ansible-galaxy - Deprecate use of the Galaxy v2 API (#81781) - ansible-galaxy - Provide a better error message when using a requirements file with an invalid format - #81901 - ansible-galaxy - Resolve issue with the dataclass used for galaxy.yml manifest caused by using future annotations - ansible-galaxy - ensure path to ansible collection when installing or downloading doesn't have a backslash (#79705). - ansible-galaxy - started allowing the use of pre-releases for collections that do not have any stable versions published. (#81606) - ansible-galaxy - started allowing the use of pre-releases for dependencies on any level of the dependency tree that specifically demand exact pre-release versions of collections and not version ranges. (#81606) - ansible-galaxy error on dependency resolution will not error itself due to 'virtual' collections not having a name/namespace. - ansible-galaxy info - fix reporting no role found when lookup_role_by_name returns None. - ansible-galaxy role import - exit with 1 when the import fails (#82175). - ansible-galaxy role install - fix installing roles from Galaxy that have version None (#81832). - ansible-galaxy role install - fix symlinks (#82702, #81965). - ansible-galaxy role install - normalize tarfile paths and symlinks using ansible.utils.path.unfrackpath and consider them valid as long as the realpath is in the tarfile's role directory (#81965). - ansible-inventory - index available_hosts for major performance boost when dumping large inventories - ansible-pull now will expand relative paths for the - d|--directory option is now expanded before use. - ansible-pull will now correctly handle become and connection password file options for ansible-playbook. - ansible-test - Add a pylint plugin to work around a known issue on Python 3.12. - ansible-test - Explicitly supply ControlPath=none when setting up port forwarding over SSH to address the scenario where the local ssh configuration uses ControlPath for all hosts, and would prevent ports to be forwarded after the initial connection to the host. - ansible-test - Fix parsing of cgroup entries which contain a : in the path (#81977). - ansible-test - Include missing pylint requirements for Python 3.10. - ansible-test - Properly detect docker host when using ssh:// protocol for connecting to the docker daemon. - ansible-test - The libexpat package is automatically upgraded during remote bootstrapping to maintain compatibility with newer Python packages. - ansible-test - The validate-modules sanity test no longer attempts to process files with unrecognized extensions as Python (resolves #82604). - ansible-test - Update pylint to version 3.0.1. - ansible-test ansible-doc sanity test - do not remove underscores from plugin names in collections before calling ansible-doc (#82574). - ansible-test validate-modules sanity test - do not treat leading underscores for plugin names in collections as an attempted deprecation (#82575). - ansible-test — Python 3.8–3.12 will use coverage v7.3.2. - ansible.builtin.apt - calling clean = true does not properly clean certain cache files such as /var/cache/apt/pkgcache.bin and /var/cache/apt/pkgcache.bin (#82611) - ansible.builtin.uri - the module was ignoring the force parameter and always requesting a cached copy (via the If-Modified-Since header) when downloading to an existing local file. Disable caching when force is true, as documented (#82166). - ansible_managed restored it's 'templatability' by ensuring the possible injection routes are cut off earlier in the process. - apt - honor install_recommends and dpkg_options while installing python3-apt library (#40608). - apt - install recommended packages when installing package via deb file (#29726). - apt_repository - do not modify repo files if the file is a symlink (#49809). - apt_repository - update PPA URL to point to https URL (#82463). - assemble - fixed missing parameter 'content' in `_get_diff_data` API (#82359). - async - Fix bug that stopped running async task in --check when check_mode: False was set as a task attribute - #82811 - blockinfile - when create=true is used with a filename without path, the module crashed (#81638). - check if there are attributes to set before attempting to set them (#76727) - copy action now also generates temprary files as hidden ('.' prefixed) to avoid accidental pickup by running services that glob by extension. - copy action now ensures that tempfiles use the same suffix as destination, to allow for validate to work with utilities that check extensions. - deb822_repository - handle idempotency if the order of parameters is changed (#82454). - debconf - allow user to specify a list for value when vtype is multiselect (#81345). - delegate_to when set to an empty or undefined variable will now give a proper error. - distribution.py - Recognize ALP-Dolomite as part of the SUSE OS family in Ansible, fixing its previous misidentification (#82496). - distro - bump bundled distro version from 1.6.0 to 1.8.0 (#81713). - dnf - fix an issue when cached RPMs were left in the cache directory even when the keepcache setting was unset (#81954) - dnf - fix an issue when installing a package by specifying a file it provides could result in installing a different package providing the same file than the package already installed resulting in resolution failure (#82461) - dnf - properly set gpg check options on enabled repositories according to the disable_gpg_check option (#80110) - dnf - properly skip unavailable packages when skip_broken is enabled (#80590) - dnf - the nobest option only overrides the distribution default when explicitly used, and is used for all supported operations (#82616) - dnf5 - replace removed API calls - dnf5 - respect allow_downgrade when installing packages directly from rpm files - dnf5 - the nobest option only overrides the distribution default when used - dwim functions for lookups should be better at detectging role context even in abscense of tasks/main. - ensure we have logger before we log when we have increased verbosity. - expect - fix argument spec error using timeout=null (#80982). - fact gathering on linux now handles thread count by using rounding vs dropping decimals, it should give slightly more accurate numbers. - facts - add a generic detection for VMware in product name. - facts - detect VMware ESXi 8.0 virtualization by product name VMware20,1 - fetch - Do not calculate the file size for Windows fetch targets to improve performance. - fetch - add error message when using dest with a trailing slash that becomes a local directory - #82878 - find - do not fail on Permission errors (#82027). - first_found lookup now always returns a full (absolute) and normalized path - first_found lookup now always takes into account k=v options - flush_handlers - properly handle a handler failure in a nested block when force_handlers is set (http://github.com/ansible/ansible/issues/81532) - galaxy - skip verification for unwanted Python compiled bytecode files (#81628). - handle exception raised while validating with elements='int' and value is not within choices (#82776). - include_tasks - include ansible_loop_var and ansible_index_var in a loop (#82655). - include_vars - fix calculating depth relative to the root and ensure all files are included (#80987). - interpreter_discovery - handle AnsibleError exception raised while interpreter discovery (#78264). - iptables - add option choices 'src,src' and 'dst,dst' in match_set_flags (#81281). - iptables - set jump to DSCP when set_dscp_mark or set_dscp_mark_class is set (#77077). - known_hosts - Fix issue with @cert-authority entries in known_hosts incorrectly being removed. - module no_log will no longer affect top level booleans, for example no_log_module_parameter='a' will no longer hide changed=False as a 'no log value' (matches 'a'). - moved assemble, raw, copy, fetch, reboot, script and wait_for_connection to query task instead of play_context ensuring they get the lastest and most correct data. - reboot action now handles connections with 'timeout' vs only 'connection_timeout' settings. - role params now have higher precedence than host facts again, matching documentation, this had unintentionally changed in 2.15. - roles, code cleanup and performance optimization of dependencies, now cached, and public setting is now determined once, at role instantiation. - roles, the static property is now correctly set, this will fix issues with public and DEFAULT_PRIVATE_ROLE_VARS controls on exporting vars. - set_option method for plugins to update config now properly passes through type casting and validation. - ssh - add tests for the SSH connection plugin. - support url-encoded credentials in URLs like http://x%40:%40@example.com (#82552) - syslog - Handle ValueError exception raised when sending Null Characters to syslog with Python 3.12. - systemd_services - update documentation regarding required_one_of and required_by parameters (#82914). - template - Fix error when templating an unsafe string which corresponds to an invalid type in Python (#82600). - template action will also inherit the behavior from copy (as it uses it internally). - templating - ensure syntax errors originating from a template being compiled into Python code object result in a failure (#82606) - unarchive - add support for 8 character permission strings for zip archives (#81705). - unarchive - force unarchive if symlink target changes (#30420). - unarchive modules now uses zipinfo options without relying on implementation defaults, making it more compatible with all OS/distributions. - unsafe data - Address an incompatibility when iterating or getting a single index from AnsibleUnsafeBytes - unsafe data - Address an incompatibility with AnsibleUnsafeText and AnsibleUnsafeBytes when pickling with protocol=0 - unsafe data - Enable directly using AnsibleUnsafeText with Python pathlib (#82414) - uri - update the documentation for follow_redirects. - uri action plugin now skipped during check mode (not supported) instead of even trying to execute the module, which already skipped, this does not really change the result, but returns much faster. - vars - handle exception while combining VarsWithSources and dict (#81659). - wait_for should not handle 'non mmapable files' again. - winrm - Better handle send input failures when communicating with hosts under load - winrm - Do not raise another exception during cleanup when a task is timed out - #81095 - winrm - does not hang when attempting to get process output when stdin write failed- update to 2.16.8: https://github.com/ansible/ansible/blob/v2.16.8/changelogs/CHANGELOG-v2.16.rst * Minor Changes - ansible-test - Update pypi-test-container to version 3.1.0. * Bugfixes - Fix the task attribute resolved_action to show the FQCN instead of None when action or local_action is used in the playbook. - Fix using module_defaults with local_action/action (#81905). - fixed unit test test_borken_cowsay to address mock not been properly applied when existing unix system already have cowsay installed. - powershell - Implement more robust deletion mechanism for C# code compilation temporary files. This should avoid scenarios where the underlying temporary directory may be temporarily locked by antivirus tools or other IO problems. A failure to delete one of these temporary directories will result in a warning rather than an outright failure.- update to 2.16.7: https://github.com/ansible/ansible/blob/v2.16.7/changelogs/CHANGELOG-v2.16.rst * Minor Changes - ansible.builtin.user - Remove user not found warning (#80267) * Bugfixes - Add a version ceiling constraint for pypsrp to avoid potential breaking changes in the 1.0.0 release. - Fix NEVRA parsing of package names that include digit(s) in them (#76463, #81018) - Fix handlers not being executed in lockstep using the linear strategy in some cases (#82307) - Give the tombstone error for include pre-fork like other tombstoned action/module plugins. - Include the task location when a module or action plugin is deprecated (#82450). - Mirror the behavior of dnf on the command line when handling NEVRAs with omitted epoch (#71808) - ansible-test - Automatically enable the PyPI proxy for the centos7 container to restore the ability to use pip in that container. - ansible_managed restored it's 'templatability' by ensuring the possible injection routes are cut off earlier in the process. - assemble - fixed missing parameter 'content' in `_get_diff_data` API (#82359). - dnf - fix an issue when installing a package by specifying a file it provides could result in installing a different package providing the same file than the package already installed resulting in resolution failure (#82461) - uri - update the documentation for follow_redirects.- adjust spec to new name for PyPI file name (underscore instead of hyphen: ansible_core-2.16.6.tar.gz) - update to 2.16.6: https://github.com/ansible/ansible/blob/v2.16.6/changelogs/CHANGELOG-v2.16.rst * Bugfixes - Consolidated the list of internal static vars, centralized them as constant and completed from some missing entries. - Fix check for missing `_sub_plugin` attribute in older connection plugins (#82954) - Fixes permission for cache json file from 600 to 644 (#82683). - Slight optimization to hostvars (instantiate template only once per host, vs per call to var). - allow_duplicates - fix evaluating if the current role allows duplicates instead of using the initial value from the duplicate's cached role. - ansible-config will now properly template defaults before dumping them. - ansible-test ansible-doc sanity test - do not remove underscores from plugin names in collections before calling ansible-doc (#82574). - async - Fix bug that stopped running async task in --check when check_mode: False was set as a task attribute - #82811 - blockinfile - when create=true is used with a filename without path, the module crashed (#81638). - dnf - fix an issue when cached RPMs were left in the cache directory even when the keepcache setting was unset (#81954) - dnf5 - replace removed API calls - facts - add a generic detection for VMware in product name. - fetch - add error message when using dest with a trailing slash that becomes a local directory - #82878 - find - do not fail on Permission errors (#82027). - unarchive modules now uses zipinfo options without relying on implementation defaults, making it more compatible with all OS/distributions. - winrm - Do not raise another exception during cleanup when a task is timed out - #81095- update to 2.16.5: https://github.com/ansible/ansible/blob/v2.16.5/changelogs/CHANGELOG-v2.16.rst * Minor Changes - ansible-test - Add a work-around for permission denied errors when using pytest >= 8 on multi-user systems with an installed version of ansible-test. * Bugfixes - Fix an issue when setting a plugin name from an unsafe source resulted in ValueError: unmarshallable object (#82708) - Harden python templates for respawn and ansiballz around str literal quoting - ansible-test - The libexpat package is automatically upgraded during remote bootstrapping to maintain compatibility with newer Python packages. - template - Fix error when templating an unsafe string which corresponds to an invalid type in Python (#82600). - winrm - does not hang when attempting to get process output when stdin write failed- update to 2.16.4: https://github.com/ansible/ansible/blob/v2.16.4/changelogs/CHANGELOG-v2.16.rst * Bugfixes - Fix loading vars_plugins in roles (#82239). - expect - fix argument spec error using timeout=null (#80982). - include_vars - fix calculating depth relative to the root and ensure all files are included (#80987). - templating - ensure syntax errors originating from a template being compiled into Python code object result in a failure (#82606)- update to 2.16.3: https://github.com/ansible/ansible/blob/v2.16.3/changelogs/CHANGELOG-v2.16.rst * Security Fixes - ANSIBLE_NO_LOG - Address issue where ANSIBLE_NO_LOG was ignored (CVE-2024-0690) * Bugfixes - Run all handlers with the same listen topic, even when notified from another handler (#82363). - ansible-galaxy role import - fix using the role_name in a standalone role's galaxy_info metadata by disabling automatic removal of the ansible-role- prefix. This matches the behavior of the Galaxy UI which also no longer implicitly removes the ansible-role- prefix. Use the --role-name option or add a role_name to the galaxy_info dictionary in the role's meta/main.yml to use an alternate role name. - ansible-test sanity --test runtime-metadata - add action_plugin as a valid field for modules in the schema (#82562). - ansible-config init will now dedupe ini entries from plugins. - ansible-galaxy role import - exit with 1 when the import fails (#82175). - ansible-galaxy role install - normalize tarfile paths and symlinks using ansible.utils.path.unfrackpath and consider them valid as long as the realpath is in the tarfile's role directory (#81965). - delegate_to when set to an empty or undefined variable will now give a proper error. - dwim functions for lookups should be better at detectging role context even in abscense of tasks/main. - roles, code cleanup and performance optimization of dependencies, now cached, and public setting is now determined once, at role instantiation. - roles, the static property is now correctly set, this will fix issues with public and DEFAULT_PRIVATE_ROLE_VARS controls on exporting vars. - unsafe data - Enable directly using AnsibleUnsafeText with Python pathlib (#82414)- update to 2.16.2: https://github.com/ansible/ansible/blob/v2.16.2/changelogs/CHANGELOG-v2.16.rst * Bugfixes - unsafe data - Address an incompatibility when iterating or getting a single index from AnsibleUnsafeBytes - unsafe data - Address an incompatibility with AnsibleUnsafeText and AnsibleUnsafeBytes when pickling with protocol=0- update to 2.16.1: https://github.com/ansible/ansible/blob/v2.16.1/changelogs/CHANGELOG-v2.16.rst * Breaking Changes / Porting Guide - assert - Nested templating may result in an inability for the conditional to be evaluated. See the porting guide for more information. * Security Fixes - templating - Address issues where internal templating can cause unsafe variables to lose their unsafe designation (CVE-2023-5764) * Bugfixes - Fix issue where an include_tasks handler in a role was not able to locate a file in tasks/ when tasks_from was used as a role entry point and main.yml was not present (#82241) - Plugin loader does not dedupe nor cache filter/test plugins by file basename, but full path name. - Restoring the ability of filters/tests can have same file base name but different tests/filters defined inside. - ansible-pull now will expand relative paths for the - d|--directory option is now expanded before use. - ansible-pull will now correctly handle become and connection password file options for ansible-playbook. - flush_handlers - properly handle a handler failure in a nested block when force_handlers is set (http://github.com/ansible/ansible/issues/81532) - module no_log will no longer affect top level booleans, for example no_log_module_parameter='a' will no longer hide changed=False as a 'no log value' (matches 'a'). - role params now have higher precedence than host facts again, matching documentation, this had unintentionally changed in 2.15. - wait_for should not handle 'non mmapable files' again.- update to 2.16.0: https://github.com/ansible/ansible/blob/v2.16.0/changelogs/CHANGELOG-v2.16.rst * Bugfixes and Minor changes omitted for brevity, see full changelog * Breaking Changes / Porting Guide - Any plugin using the config system and the cli entry to use the timeout from the command line, will see the value change if the use had configured it in any of the lower precedence methods. If relying on this behaviour to consume the global/generic timeout from the DEFAULT_TIMEOUT constant, please consult the documentation on plugin configuration to add the overlaping entries. - ansible-test - Test plugins that rely on containers no longer support reusing running containers. The previous behavior was an undocumented, untested feature. - service module will not permanently configure variables/flags for openbsd when doing enable/disable operation anymore, this module was never meant to do this type of work, just to manage the service state itself. A rcctl_config or similar module should be created and used instead. * Deprecated Features - Deprecated ini config option collections_paths, use the singular form collections_path instead - Deprecated the env var ANSIBLE_COLLECTIONS_PATHS, use the singular form ANSIBLE_COLLECTIONS_PATH instead - Old style vars plugins which use the entrypoints get_host_vars or get_group_vars are deprecated. The plugin should be updated to inherit from BaseVarsPlugin and define a get_vars method as the entrypoint. - Support for Windows Server 2012 and 2012 R2 has been removed as the support end of life from Microsoft is October 10th 2023. These versions of Windows will no longer be tested in this Ansible release and it cannot be guaranteed that they will continue to work going forward. - STRING_CONVERSION_ACTION config option is deprecated as it is no longer used in the Ansible Core code base. - the 'smart' option for setting a connection plugin is being removed as it's main purpose (choosing between ssh and paramiko) is now irrelevant. - vault and unfault filters - the undocumented vaultid parameter is deprecated and will be removed in ansible-core 2.20. Use vault_id instead. - yum_repository - deprecated parameter 'keepcache' (#78693). * Removed Features (previously deprecated) - ActionBase - remove deprecated _remote_checksum method - PlayIterator - remove deprecated cache_block_tasks and get_original_task methods - Remove deprecated FileLock class - Removed Python 3.9 as a supported version on the controller. Python 3.10 or newer is required. - Removed include which has been deprecated in Ansible 2.12. Use include_tasks or import_tasks instead. - Templar - remove deprecated shared_loader_obj parameter of __init__ - fetch_url - remove auto disabling decompress when gzip is not available - get_action_args_with_defaults - remove deprecated redirected_names method parameter - ansible-test - Removed support for the remote Windows targets 2012 and 2012-R2 - inventory_cache - remove deprecated default.fact_caching_prefix ini configuration option, use defaults.fact_caching_prefix instead. - module_utils/basic.py - Removed Python 3.5 as a supported remote version. Python 2.7 or Python 3.6+ is now required. - stat - removed unused get_md5 parameter. * Security Fixes - ansible-galaxy - Prevent roles from using symlinks to overwrite files outside of the installation directory (CVE-2023-5115) * Known issues - ansible-galaxy - dies in the middle of installing a role when that role contains Java inner classes (files with $ in the file name). This is by design, to exclude temporary or backup files. (#81553). - ansible-test - The pep8 sanity test is unable to detect f-string spacing issues (E201, E202) on Python 3.10 and 3.11. They are correctly detected under Python 3.12. See (PyCQA/pycodestyle#1190).- update to 2.15.8: * Minor Changes - ansible-test - Add FreeBSD 13.2 remote. - ansible-test - Removed freebsd/13.1 remote. * Bugfixes - unsafe data - Address an incompatibility when iterating or getting a single index from AnsibleUnsafeBytes - unsafe data - Address an incompatibility with AnsibleUnsafeText and AnsibleUnsafeBytes when pickling with protocol=0- update to 2.15.7: This release includes a fix for CVE-2023-5764, where internal templating actions could result in unsafe data losing its unsafe designation. * Breaking Changes / Porting Guide - assert - Nested templating may result in an inability for the conditional to be evaluated. See the porting guide for more information. * Security Fixes - templating - Address issues where internal templating can cause unsafe variables to lose their unsafe designation (CVE-2023-5764) * Bugfixes - ansible-pull now will expand relative paths for the - d|--directory option is now expanded before use. - flush_handlers - properly handle a handler failure in a nested block when force_handlers is set (http://github.com/ansible/ansible/issues/81532) - module no_log will no longer affect top level booleans, for example no_log_module_parameter='a' will no longer hide changed=False as a 'no log value' (matches 'a'). - modules/user.py - Add check for valid directory when creating new user homedir (allows /dev/null as skeleton) (#75063) - role params now have higher precedence than host facts again, matching documentation, this had unintentionally changed in 2.15. - wait_for should not handle 'non mmapable files' again.- update to 2.15.6: * Minor Changes - ansible-test - Windows 2012 and 2012-R2 instances are now requested from Azure instead of AWS. * Bugfixes - Fix run_once being incorrectly interpreted on handlers (#81666) - Plugin loader does not dedupe nor cache filter/test plugins by file basename, but full path name. - Properly template tags in parent blocks (#81053) - Restoring the ability of filters/tests can have same file base name but different tests/filters defined inside. - import_role reverts to previous behavior of exporting vars at compile time. - ansible-galaxy - Provide a better error message when using a requirements file with an invalid format - #81901 - ansible-inventory - index available_hosts for major performance boost when dumping large inventories - ansible-test - Fix parsing of cgroup entries which contain a : in the path (#81977).- update to 2.15.5: * Minor Changes - ansible-galaxy dependency resolution messages have changed the unexplained 'virtual' collection for the specific type ('scm', 'dir', etc) that is more user friendly * Security Fixes - ansible-galaxy - Prevent roles from using symlinks to overwrite files outside of the installation directory (CVE-2023-5115) * Bugfixes - Allow for searching handler subdir for included task via include_role (#81722) - PluginLoader - fix Jinja plugin performance issues (#79652) - ansible.module_utils.service - ensure binary data transmission in daemonize() - ansible.module_utils.service - fix inter-process communication in daemonize() - ansible-galaxy - started allowing the use of pre-releases for collections that do not have any stable versions published. (#81606) - ansible-galaxy - started allowing the use of pre-releases for dependencies on any level of the dependency tree that specifically demand exact pre-release versions of collections and not version ranges. (#81606) - ansible-galaxy error on dependency resolution will not error itself due to 'virtual' collections not having a name/namespace. - ansible-galaxy info - fix reporting no role found when lookup_role_by_name returns None. - role deduplication - don't deduplicate before a role has had a task run for that particular host (#81486). - uri/urls - Add compat function to handle the ability to parse the filename from a Content-Disposition header (#81806) - winrm - Better handle send input failures when communicating with hosts under load- update to 2.15.4: * Deprecated Features - vault and unfault filters - the undocumented vaultid parameter is deprecated and will be removed in ansible-core 2.20. Use vault_id instead. * Bugfixes - PowerShell - Remove some code which is no longer valid for dotnet 5+ - Prompting - add a short sleep between polling for user input to reduce CPU consumption (#81516). - ansible-galaxy - Enabled the data tarfile filter during role installation for Python versions that support it. A probing mechanism is used to avoid Python versions with a broken implementation. - ansible-test - Always use ansible-test managed entry points for ansible-core CLI tools when not running from source. This fixes issues where CLI entry points created during install are not compatible with ansible-test. - first found lookup has been updated to use the normalized argument parsing (pythonic) matching the documented examples. - handlers - the listen keyword can affect only one handler with the same name, the last one defined as it is a case with the notify keyword (#81013) - include_role - expose variables from parent roles to role's handlers (#80459) - tarfile - handle data filter deprecation warning message for extract and extractall (#80832). - vault and unvault filters now properly take vault_id parameter.- as example files were split out into a separate package ansible-documentation upstream, this package now Recommends that package - update to 2.15.3: * Minor Changes - Removed exclude and recursive-exclude commands for generated files from the MANIFEST.in file. These excludes were unnecessary since releases are expected to be built with a clean worktree. - Removed exclude commands for sanity test files from the MANIFEST.in file. These tests were previously excluded because they did not pass when run from an sdist. However, sanity tests are not expected to pass from an sdist, so excluding some (but not all) of the failing tests makes little sense. - Removed redundant include commands from the MANIFEST.in file. These includes either duplicated default behavior or another command. - The ansible-core sdist no longer contains pre-generated man pages. Instead, a packaging/cli-doc/build.py script is included in the sdist. This script can generate man pages and standalone RST documentation for ansible-core CLI programs. - The docs and examples directories are no longer included in the ansible-core sdist. These directories have been moved to the https://github.com/ansible/ansible-documentation repository. - Use include where recursive-include is unnecessary in the MANIFEST.in file. - ansible-test - Update the logic used to detect when ansible-test is running from source. - ansible-test - Updated the CloudStack test container to version 1.6.1. * Bugfixes - Exclude internal options from man pages and docs. - Fix ansible-config init man page option indentation. - The ansible-config init command now has a documentation description. - The ansible-galaxy collection download command now has a documentation description. - The ansible-galaxy collection install command documentation is now visible (previously hidden by a decorator). - The ansible-galaxy collection verify command now has a documentation description. - The ansible-galaxy role install command documentation is now visible (previously hidden by a decorator). - The ansible-inventory command command now has a documentation description (previously used as the epilog). - Update module_utils.urls unit test to work with cryptography >= 41.0.0. - When generating man pages, use func to find the command function instead of looking it up by the command name. - ansible-galaxy now considers all collection paths when identifying which collection requirements are already installed. Use the COLLECTIONS_PATHS and COLLECTIONS_SCAN_SYS_PATHS config options to modify these. Previously only the install path was considered when resolving the candidates. The install path will remain the only one potentially modified. (#79767, #81163) - ansible-test - Fix several possible tracebacks when using the - e option with sanity tests. - ansible-test - Pre-build a PyYAML wheel before installing requirements to avoid a potential Cython build failure. - ansible-test - Remove redundant warning about missing programs before attempting to execute them. - core will now also look at the connection plugin to force 'local' interpreter for networking path compatibility as just ansible_network_os could be misleading. - man page build - Sub commands of ansible-galaxy role and ansible-galaxy collection are now documented. - password_hash - fix salt format for crypt (only used if passlib is not installed) for the bcrypt algorithm. - urls.py - fixed cert_file and key_file parameters when running on Python 3.12 - #80490- update to 2.15.2: * Minor Changes - Utilize gpg check provided internally by the transaction.run method as oppose to calling it manually. - ansible-test - Add Fedora 38 remote. - ansible-test - Use a context manager to perform cleanup at exit instead of using the built-in atexit module. - dnf5 - enable environment groups installation testing in CI as its support was added. - dnf5 - enable now implemented cacheonly functionality * Bugfixes - From issue #80880, when notifying a handler from another handler, handler notifications must be registered immediately as the flush_handler call is not recursive. - ansible-galaxy - Fix issue installing collections containing directories with more than 100 characters on python versions before 3.10.6 - paramiko_ssh, psrp, and ssh connection plugins - ensure that all values for options that should be strings are actually converted to strings (#81029). - templating - In the template action and lookup, use local jinja2 environment overlay overrides instead of mutating the templars environment * Known Issues - ansible-test - The Fedora 37 remote is known to occasionally hang during boot. It is no longer routinely tested as a result. If possible, use the Fedora 38 remote instead.- update to 2.15.1: * Minor Changes - ansible-test - Allow float values for the --timeout option to the env command. This simplifies testing. - ansible-test - Refactored env command logic and timeout handling. - ansible-test - Use datetime.datetime.now with tz specified instead of datetime.datetime.utcnow. * Bugfixes - Properly disable jinja2_native in the template module when jinja2 override is used in the template (#80605) - ansible-galaxy - Fix variable type error when installing subdir collections (#80943) - ansible-test - Fix a traceback that occurs when attempting to test Ansible source using a different ansible-test. A clear error message is now given when this scenario occurs. - ansible-test - Fix handling of timeouts exceeding one day. - ansible-test - Fix various cases where the test timeout could expire without terminating the tests. - ansible-test local change detection - use git merge-base HEAD instead of git merge-base --fork-point (#79734). - deb822_repository - use http-agent for receiving content (#80809). - dnf5 - Update dnf5 module to handle API change for setting the download directory (#80887) - man page build - Remove the dependency on the docs directory for building man pages. - pep517 build backend - Copy symlinks when copying the source tree. This avoids tracebacks in various scenarios, such as when a venv is present in the source tree. - uri - fix search for JSON type to include complex strings containing '+'- major update to 2.15.0: https://github.com/ansible/ansible/blob/v2.15.0/changelogs/ CHANGELOG-v2.15.rst- modify %if-condition to allow building for python3.10 or python3.11 on SLES15- change python version on Leap15/SLES15 to python3.11 to use the new stack supported by SUSE- BuildRequire python3.9 to follow upstream (does not matter on Tumbleweed which is using 3.10 already...)- update to 2.14.5: https://github.com/ansible/ansible/blob/v2.14.5/changelogs/ CHANGELOG-v2.14.rst * Bugfixes - ansible-doc - stop generating wrong module URLs for module see-alsos. The URLs for modules in ansible.builtin do now work, and URLs for modules outside ansible.builtin are no longer added (#80280). - ansible-galaxy - Improve retries for collection installs, to properly retry, and extend retry logic to common URL related connection errors (#80170 #80174) - ansible-galaxy - reduce API calls to servers by fetching signatures only for final candidates. - ansible-test - Add support for argcomplete version 3. - jinja2_native - fix intermittent 'could not find job' failures when a value of ansible_job_id from a result of an async task was inadvertently changed during execution; to prevent this a format of ansible_job_id was changed. - password lookup now correctly reads stored ident fields. - pep517 build backend - Use the documented import_module import from importlib. - roles - Fix templating public, allow_duplicates and rolespec_validate (#80304). - syntax check - Limit --syntax-check to ansible-playbook only, as that is the only CLI affected by this argument (#80506)- use `with` in dependencies instead of `and` - update to 2.14.4: https://github.com/ansible/ansible/blob/v2.14.4/changelogs/ CHANGELOG-v2.14.rst * Minor Changes - ansible-test - Moved git handling out of the validate-modules sanity test and into ansible-test. - ansible-test - Removed the --keep-git sanity test option, which was limited to testing ansible-core itself. - ansible-test - Updated the Azure Pipelines CI plugin to work with newer versions of git. * Breaking Changes / Porting Guide - ansible-test - Integration tests which depend on specific file permissions when running in an ansible-test managed host environment may require changes. Tests that require permissions other than 755 or 644 may need to be updated to set the necessary permissions as part of the test run. * Bugfixes - Fix MANIFEST.in to exclude unwanted files in the packaging/ directory. - Fix MANIFEST.in to include `*.md` files in the test/support/ directory. - Fix an issue where the value of become was ignored when used on a role used as a dependency in main/meta.yml (#79777) - ansible_eval_concat - avoid redundant unsafe wrapping of templated strings converted to Python types - ansible-galaxy role info - fix unhandled AttributeError by catching the correct exception. - ansible-test - Always indicate the Python version being used before installing requirements. Resolves issue #72855 - ansible-test - Exclude ansible-core vendored Python packages from ansible-test payloads. - ansible-test - Integration test target prefixes defined in a tests/integration/target-prefixes.{group} file can now contain an underscore (`_`) character. Resolves issue #79225 - ansible-test - Removed pointless comparison in diff evaluation logic. - ansible-test - Set PYLINTHOME for the pylint sanity test to prevent failures due to pylint checking for the existence of an obsolete home directory. - ansible-test - Support loading of vendored Python packages from ansible-core. - ansible-test - Use consistent file permissions when delegating tests to a container or remote host. Files with any execute bit set will use permissions 755. All other files will use permissions 644. (Resolves issue #75079) - copy - fix creating the dest directory in check mode with remote_src=True (#78611). - copy - fix reporting changes to file attributes in check mode with remote_src=True (#77957).- adjust Requires and BuildRequires for python-resolvelib to allow versions below 0.10.0 https://github.com/ansible/ansible/blob/devel/requirements.txt- update to 2.14.3: Full changelog https://github.com/ansible/ansible/blob/v2.14.3/changelogs/ CHANGELOG-v2.14.rst * Minor Changes - Make using blocks as handlers a parser error (#79968) - ansible-test - Specify the configuration file location required by test plugins when the config file is not found. This resolves issue: #79411 - ansible-test - Update error handling code to use Python 3.x constructs, avoiding direct use of errno. - ansible-test acme test container - update version to update used Pebble version, underlying Python and Go base containers, and Python requirements (#79783). * Bugfixes - Ansible.Basic.cs - Ignore compiler warning (reported as an error) when running under PowerShell 7.3.x. - Fix conditionally notifying include_tasks` handlers when ``force_handlers is used (#79776) - TaskExecutor - don't ignore templated _raw_params that k=v parser failed to parse (#79862) - ansible-galaxy - fix installing collections in git repositories/directories which contain a MANIFEST.json file (#79796). - ansible-test - Support Podman 4.4.0+ by adding the SYS_CHROOT capability when running containers. - ansible-test - fix warning message about failing to run an image to include the image name - strategy plugins now correctly identify bad registered variables, even on skip.- update to 2.14.2: Full changelog https://github.com/ansible/ansible/blob/v2.14.2/changelogs/CHANGELOG-v2.14.rst * Major Changes - ansible-test - Docker Desktop on WSL2 is now supported (additional configuration required). - ansible-test - Docker and Podman are now supported on hosts with cgroup v2 unified. Previously only cgroup v1 and cgroup v2 hybrid were supported. - ansible-test - Podman now works on container hosts without systemd. Previously only some containers worked, while others required rootfull or rootless Podman, but would not work with both. Some containers did not work at all. - ansible-test - Podman on WSL2 is now supported. - ansible-test - When additional cgroup setup is required on the container host, this will be automatically detected. Instructions on how to configure the host will be provided in the error message shown. * Minor Changes - ansible-test - A new audit option is available when running custom containers. This option can be used to indicate whether a container requires the AUDIT_WRITE capability. The default is required, which most containers will need when using Podman. If necessary, the none option can be used to opt-out of the capability. This has no effect on Docker, which always provides the capability. - ansible-test - A new cgroup option is available when running custom containers. This option can be used to indicate a container requires cgroup v1 or that it does not use cgroup. The default behavior assumes the container works with cgroup v2 (as well as v1). - ansible-test - Additional log details are shown when containers fail to start or SSH connections to containers fail. - ansible-test - Connection failures to remote provisioned hosts now show failure details as a warning. - ansible-test - Containers included with ansible-test no longer disable seccomp by default. - ansible-test - Failure to connect to a container over SSH now results in a clear error. Previously tests would be attempted even after initial connection attempts failed. - ansible-test - Integration tests can be excluded from retries triggered by the --retry-on-error option by adding the retry/never alias. This is useful for tests that cannot pass on a retry or are too slow to make retries useful. - ansible-test - More details are provided about an instance when provisioning fails. - ansible-test - Reduce the polling limit for SSHD startup in containers from 60 retries to 10. The one second delay between retries remains in place. - ansible-test - SSH connections from OpenSSH 8.8+ to CentOS 6 containers now work without additional configuration. However, clients older than OpenSSH 7.0 can no longer connect to CentOS 6 containers as a result. The container must have centos6 in the image name for this work-around to be applied. - ansible-test - SSH shell connections from OpenSSH 8.8+ to ansible-test provisioned network instances now work without additional configuration. However, clients older than OpenSSH 7.0 can no longer open shell sessions for ansible-test provisioned network instances as a result. - ansible-test - The ansible-test env command now detects and reports the container ID if running in a container. - ansible-test - Unit tests now support network disconnect by default when running under Podman. Previously this feature only worked by default under Docker. - ansible-test - Use stop --time 0 followed by rm to remove ephemeral containers instead of rm -f. This speeds up teardown of ephemeral containers. - ansible-test - Warnings are now shown when using containers that were built with VOLUME instructions. - ansible-test - When setting the max open files for containers, the container host's limit will be checked. If the host limit is lower than the preferred value, it will be used and a warning will be shown. - ansible-test - When using Podman, ansible-test will detect if the loginuid used in containers is incorrect. When this occurs a warning is displayed and the container is run with the AUDIT_CONTROL capability. Previously containers would fail under this situation, with no useful warnings or errors given. * Bugfixes - Correctly count rescued tasks in play recap (#79711) - Fix traceback when using the template module and running with ANSIBLE_DEBUG=1 (#79763) - Fix using GALAXY_IGNORE_CERTS in conjunction with collections in requirements files which specify a specific source that isn't in the configured servers. - Fix using GALAXY_IGNORE_CERTS when downloading tarballs from Galaxy servers (#79557). - Module and role argument validation - include the valid suboption choices in the error when an invalid suboption is provided. - ansible-doc now will correctly display short descriptions on listing filters/tests no matter the directory sorting. - ansible-inventory will not explicitly sort groups/hosts anymore, giving a chance (depending on output format) to match the order in the input sources. - ansible-test - Added a work-around for a traceback under Python 3.11 when completing certain command line options. - ansible-test - Avoid using exec after container startup when possible. This improves container startup performance and avoids intermittent startup issues with some old containers. - ansible-test - Connection attempts to managed remote instances no longer abort on Permission denied errors. - ansible-test - Detection for running in a Podman or Docker container has been fixed to detect more scenarios. The new detection relies on /proc/self/mountinfo instead of /proc/self/cpuset. Detection now works with custom cgroups and private cgroup namespaces. - ansible-test - Fix validate-modules error when retrieving PowerShell argspec when retrieved inside a Cmdlet - ansible-test - Handle server errors when executing the docker info command. - ansible-test - Multiple containers now work under Podman without specifying the --docker-network option. - ansible-test - Pass the XDG_RUNTIME_DIR environment variable through to container commands. - ansible-test - Perform PyPI proxy configuration after instances are ready and bootstrapping has been completed. Only target instances are affected, as controller instances were already handled this way. This avoids proxy configuration errors when target instances are not yet ready for use. - ansible-test - Prevent concurrent / repeat inspections of the same container image. - ansible-test - Prevent concurrent / repeat pulls of the same container image. - ansible-test - Prevent concurrent execution of cached methods. - ansible-test - Show the exception type when reporting errors during instance provisioning. - ansible-test sanity - correctly report invalid YAML in validate-modules (#75837). - argument spec validation - again report deprecated parameters for Python-based modules. This was accidentally removed in ansible-core 2.11 when argument spec validation was refactored (#79680, #79681). - argument spec validation - ensure that deprecated aliases in suboptions are also reported (#79740). - argument spec validation - fix warning message when two aliases of the same option are used for suboptions to also mention the option's name they are in (#79740). - connection local now avoids traceback on invalid user being used to execuet ansible (valid in host, but not in container). - file - touch action in check mode was always returning ok. Fix now evaluates the different conditions and returns the appropriate changed status. (#79360) - get_url - Ensure we are passing ciphers to all url_get calls (#79717) - plugin filter now works with rejectlist as documented (still falls back to blacklist if used). - uri - improve JSON content type detection * Known Issues - ansible-test - Additional configuration may be required for certain container host and container combinations. Further details are available in the testing documentation. - ansible-test - Custom containers with VOLUME instructions may be unable to start, when previously the containers started correctly. Remove the VOLUME instructions to resolve the issue. Containers with this condition will cause ansible-test to emit a warning. - ansible-test - Systems with Podman networking issues may be unable to run containers, when previously the issue went unreported. Correct the networking issues to continue using ansible-test with Podman. - ansible-test - Using Docker on systems with SELinux may require setting SELinux to permissive mode. Podman should work with SELinux in enforcing mode.- update to 2.14.1: Full changelog https://github.com/ansible/ansible/blob/v2.14.1/changelogs/CHANGELOG-v2.14.rst * Minor Changes - ansible-test - Improve consistency of executed pylint commands by making the plugins ordered. * Bugfixes - Fixes leftover _valid_attrs usage. - ansible-galaxy - make initial call to Galaxy server on-demand only when installing, getting info about, and listing roles. - copy module will no longer move 'non files' set as src when remote_src=true. - display - reduce risk of post-fork output deadlocks (#79522) - jinja2_native: preserve quotes in strings (#79083) - updated error messages to include 'acl' and not just mode changes when failing to set required permissions on remote.- fix boo#1204320 - do no longer exclude %{ansible_python_sitelib}/ansible_test - create subpackage for ansible-test - remove Conflicts for ansible-test- rework spec file to define %ansible_python version, which is the python version, that ansible is built against, as well as %ansible_python_sitelib - remove duplicate entries for changelog and license - fix wrong %fdupes- add version contraints for both Requires and BuildRequires, that upstream defines: https://github.com/ansible/ansible/blob/devel/requirements.txt- update to 2.14.0: Full changelog https://github.com/ansible/ansible/blob/v2.14.0/changelogs/CHANGELOG-v2.14.rst- update to 2.13.6: Changelog https://github.com/ansible/ansible/blob/v2.13.6/changelogs/CHANGELOG-v2.13.rst * Minor Changes - ansible-test - Improve consistency of version specific documentation links. * Bugfixes - BSD network facts - Do not assume column indexes, look for netmask and broadcast for determining the correct columns when parsing inet line (#79117) - ansible-galaxy - make initial call to Galaxy server on-demand only when installing, getting info about, and listing roles. - ansible-test - Add wheel < 0.38.0 constraint for Python 3.6 and earlier. - ansible-test - Fix broken documentation link for aws test plugin error messages. - copy module will no longer move 'non files' set as src when remote_src=true. - file lookup now handles missing files more gracefully. - service_facts - Use python re to parse service output instead of grep (#78541) - updated error messages to include 'acl' and not just mode changes when failing to set required permissions on remote.- update to 2.13.5: Changelog https://github.com/ansible/ansible/blob/v2.13.5/changelogs/CHANGELOG-v2.13.rst * Bugfixes - ansible-galaxy - remove extra server api call during dependency resolution for requirements and dependencies that are already satisfied (#77443). - ansible-test - Allow disabled, unsupported, unstable and destructive integration test targets to be selected using their respective prefixes. - ansible-test - Allow unstable tests to run when targeted changes are made and the --allow-unstable-changed option is specified (resolves #74213). - apt - Fix module failure when a package is not installed and only_upgrade=True. Skip that package and check the remaining requested packages for upgrades. (#78762) - apt module should not traceback on invalid type given as package. issue 78663. - known_hosts - do not return changed status when a non-existing key is removed (#78598) - paramiko - Add back support for ssh_args, ssh_common_args, and ssh_extra_args for parsing the ProxyCommand (#78750) - plugin loader, fix detection for existing configuration before initializing for a plugin- Remove unneeded BuildRequires on python3-mock- add Conflict with ansible-test- update to 2.13.4: Changelog https://github.com/ansible/ansible/blob/v2.13.4/changelogs/CHANGELOG-v2.13.rst * Bugfixes - Fix for network_cli not getting all relevant connection options - ansible-galaxy - Fix detection of --role-file in arguments for implicit role invocation (#78204) - ansible-galaxy - Fix exit codes for role search and delete (#78516) - ansible-test - Fix change detection for ansible-test's own integration tests. - ansible-test - ansible-doc sanity test - Correctly determine the fully-qualified collection name for plugins in subdirectories, resolving #78490. - apt - don't actually update the cache in check mode with update_cache=true. - apt - don't mark existing packages as manually installed in check mode (#66413). - apt - fix package selection to include /etc/apt/preferences(.d) (#77969) - urls - Guard imports of urllib3 by catching Exception instead of ImportError to prevent exceptions in the import process of optional dependencies from preventing use of urls.py (#78648) - wait_for - Read file and perform comparisons using bytes to avoid decode errors (#78214)- update to 2.13.3: Changelog https://github.com/ansible/ansible/blob/v2.13.3/changelogs/CHANGELOG-v2.13.rst * Bugfixes - Avoid 'unreachable' error when chmod on AIX has 255 as return code. - Fix PluginLoader to mimic Python import machinery by adding module to sys.modules before exec - Fix dnf module documentation to indicate that comparison operators for package version require spaces around them (#78295) - ansible-connection - decrypt vaulted parameters before sending over the socket, as vault secrets are not available on the other side. - ansible-galaxy - Fix reinitializing the whole collection directory with ansible-galaxy collection init ns.coll --force. Now directories and files that are not included in the collection skeleton will be removed. - ansible-galaxy - do not require mandatory keys in the galaxy.yml of source collections when listing them (#70180). - ansible-galaxy - fix listing collections that contains metadata but the namespace or name are not strings. - ansible-galaxy - fix setting the cache for paginated responses from Galaxy NG/AH (#77911). - ansible-test - Delegation for commands which generate output for programmatic consumption no longer redirect all output to stdout. The affected commands and options are shell, sanity --lint, sanity --list-tests, integration --list-targets, coverage analyze - ansible-test - Delegation now properly handles arguments given after -- on the command line. - ansible-test - Test configuration for collections is now parsed only once, prior to delegation. Fixes issue: #78334 - ansible-test - The shell command no longer redirects all output to stdout when running a provided command. Any command output written to stderr will be mixed with the stderr output from ansible-test. - ansible-test - The shell command no longer requests a TTY when using delegation unless an interactive shell is being used. An interactive shell is the default behavior when no command is given to pass to the shell. - dnf - fix output parsing on systems with LANGUAGE set to a language other than English (#78193) - if a config setting prevents running ansible it should at least show it's "origin". - prevent type annotation shim failures from causing runtime failures (#77860) - template module/lookup - fix convert_data option that was effectively always set to True for Jinja macros (#78141) - uri - properly use uri parameter use_proxy (#58632) - yum - fix traceback when releasever is specified with latest (#78058)- package conflicts with ansible < 3, i.e. the old packaging scheme- update to 2.13.2: * Minor Changes - ansible-test - An improved error message is shown when the download of a pip bootstrap script fails. The download now uses urllib2 instead of urllib on Python 2. * Bugfixes - Move undefined check from concat to finalize (#78156) - ansible-doc - no longer list module and plugin aliases that are created with symlinks (#78137). - ansible-doc - when listing modules in collections, proceed recursively. This fixes module listing for community.general 5.x.y and community.network 4.x.y (#78137). - ansible-doc will not add 'website for' in ":ref:" substitutions as it made them confusing. - file backed cache plugins now handle concurrent access by making atomic updates to the files. - password lookup does not ignore k=v arguments anymore. - user - Fix error "Permission denied" in user module while generating SSH keys (#78017). - update to 2.13.1: * Minor Changes - Add an 'action_plugin' field for modules in runtime.yml plugin_routing. This fixes module_defaults by supporting modules-as-redirected-actions without redirecting module_defaults entries to the common action. With the runtime.yml above for ns.coll, a task such as will end up with defaults for eos_facts and eos_command since both modules redirect to the same action. To select an action plugin for a module without merging module_defaults, define an action_plugin field for the resolved module in the runtime.yml. The action_plugin field can be a redirected action plugin, as it is resolved normally. Using the modified runtime.yml, the example task will only use the ns.coll.eos_facts defaults. - ansible-galaxy - Support resolvelib versions 0.6.x, 0.7.x, and 0.8.x. The full range of supported versions is now >= 0.5.3, < 0.9.0. - ansible-test - Add RHEL 9.0 remote support. - ansible-test - Add support for Ubuntu VMs using the --remote option. - ansible-test - Add support for exporting inventory with ansible-test shell --export {path}. - ansible-test - Add support for multi-arch remotes. - ansible-test - Add support for running non-interactive commands with ansible-test shell. - ansible-test - Avoid using the mock_use_standalone_module setting for unit tests running on Python 3.8 or later. - ansible-test - Blocking mode is now enforced for stdin, stdout and stderr. If any of these are non-blocking then ansible-test will exit during startup with an error. - ansible-test - Improve consistency of output messages by using stdout or stderr for most output, but not both. - ansible-test - The shell command can be used outside a collection if no controller delegation is required. * Bugfixes - Add PyYAML >= 5.1 as a dependency of ansible-core to be compatible with Python 3.8+. - ansible-config dump - Only display plugin type headers when plugin options are changed if --only-changed is specified. - ansible-galaxy - handle unsupported versions of resolvelib gracefully. - ansible-test - Fix internal validation of remote completion configuration. - ansible-test - Prevent --target- prefixed options for the shell command from being combined with legacy environment options. - ansible-test - Sanity test output with the --lint option is no longer mixed in with bootstrapping output. - ansible-test - Subprocesses are now isolated from the stdin, stdout and stderr of ansible-test. This avoids issues with subprocesses tampering with the file descriptors, such as SSH making them non-blocking. As a result of this change, subprocess output from unit and integration tests on stderr now go to stdout. - ansible-test - Subprocesses no longer have access to the TTY ansible-test is connected to, if any. This maintains consistent behavior between local testing and CI systems, which typically do not provide a TTY. Tests which require a TTY should use pexpect or another mechanism to create a PTY. - apt module now correctly handles virtual packages. - lookup plugin - catch KeyError when lookup returns dictionary (#77789). - pip - fix cases where resolution of pip Python module fails when importlib.util has not already been imported - plugin loader - Sort results when fuzzy matching plugin names (#77966). - plugin loader will now load config data for plugin by name instead of by file to avoid issues with the same file being loaded under different names (fqcn + short name). - psrp connection now handles default to inventory_hostname correctly. - winrm connection now handles default to inventory_hostname correctly. - update to 2.13.0: Full changelog see https://github.com/ansible/ansible/blob/stable-2.13/changelogs/CHANGELOG-v2.13.rst#v2130 - update to 2.12.7: * Minor Changes - Add an 'action_plugin' field for modules in runtime.yml plugin_routing. This fixes module_defaults by supporting modules-as-redirected-actions without redirecting module_defaults entries to the common action. With the runtime.yml above for ns.coll, a task such as will end up with defaults for eos_facts and eos_command since both modules redirect to the same action. To select an action plugin for a module without merging module_defaults, define an action_plugin field for the resolved module in the runtime.yml. The action_plugin field can be a redirected action plugin, as it is resolved normally. Using the modified runtime.yml, the example task will only use the ns.coll.eos_facts defaults. - ansible-test - Avoid using the mock_use_standalone_module setting for unit tests running on Python 3.8 or later. * Bugfixes - pip - fix cases where resolution of pip Python module fails when importlib.util has not already been imported - plugin loader - Sort results when fuzzy matching plugin names (#77966). - update to 2.12.6: * Bugfixes - Prevent losing unsafe on results returned from lookups (#77535) - arg_spec - Fix incorrect no_log warning when a parameter alias is used (#77576) - plugin loader will now load config data for plugin by name instead of by file to avoid issues with the same file being loaded under different names (fqcn + short name). - variablemanager, more efficient read of vars files - update to 2.12.5: * Bugfixes - Ansible.ModuleUtils.SID - Use user principal name as is for lookup in the Convert-ToSID function - #77316 - Fix traceback when installing a collection from a git repository and git is not installed (#77479). - ansible-test - Correctly detect when running as the root user (UID 0) on the origin host. The result of the detection was incorrectly being inverted. - ansible-test - Fix skipping of tests marked needs/python on the origin host. - ansible-test - Fix skipping of tests marked needs/root on the origin host. - ansible-test compile sanity test - do not crash if a column could not be determined for an error (#77465). - hostname - use file_get_content() to read the file containing the host name in the FileStrategy.get_permanent_hostname() method. This prevents a TypeError from being raised when the strategy is used (#77025). - script - skip in check mode since the plugin cannot determine if a change will occur. - shell/command - only skip in check mode if the options creates and removes are both None. - winrm - Ensure kinit is run with the same PATH env var as the Ansible process- first version of package ansible-core at version 2.12.4h03-ch2c 1755845046  !!##%%''))++--//1133567899;;=>?@ABCDEFGHHJJLMNOPQQSSUVWXYY[[]]_`abcddffhijklmnopprrtuvwxxzz||~~v     !"#$%'()+,./01133557799;;==?@ABCDEFGHIJKKMMOOQQSSUUWXYZ[\]^_``bbddffhhjjllnnpprrttvvxxz{|}}        ""$$&&((**,,..0023456789:;<=>?@AACCEEGGIIKKMMOOQQSSUUWWYY[[]]__abcdefghijklmnopqrssuuwwyz{|}~      ""$$&&((**,,..0022446688::<<>>@@BBDDFFHHJJLLNNPPRRTTVVXXZZ\\^^``bbddffhhjjllnnpprrttvvxxzz||~~v v     ""$$&&((**,,..0022446688::<<>>@@BBDDFGHIJKLMNOPQRSTUVWXXZZ\\^^``bcdefghijklmmooqqstuvvxxzz||~~      ""$$&&((**,,..0022446688::<<>?@ABCDEFGHIJKLMNOPQRSSUUWWYY[[]]_`abcdefghijklmnopqrstuvwxyz{|}~      !"##%&'((**,,..0123456688::<<>>@ABCDEFGGIJKLLNNPPRRTTVWXYY[\]^__abcdV]bhijklmhopqiktujwxxzl|||mv     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN2.18.3-150400.9.11.1     !!"""""#"$"%"&&"'"(((")!!**+*,*--*.*///*0!12223241556557585955::5;!<<=<><???<@<A<B<C<D<EE<FGGHHHHHHHHHHHHHHGGGGGGIIJJJJJJJJJJJJIIIIIKKLLLLLLLLLLLLLLLLLLLLLLLLLLKMMNNMOOPPPPPPOOKKKKKQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQQQQQQQQQQQSSTTTTTTSSQQQKUUVVVVVVVVVVVVVVVVUUUUUUUKKWWWWWWWXXKYYZZZZYKK[[\\\\\\\\\\\\\\\\\\\\[[[[[]]^^^^^^^^^^^^^^^^^^^^^^^^]]]]]]]]]]][[__````````````````````````````````_______________[aabbbbbbaa[[[ccddddddddddddddddddddddddddddddddddddddddddcccccccccccccccccccc[[[eeffffffffffffffffffffeeeeeeeeeKKgghhhhgKiiiiiiiiiiiiijjKKKkkllKKKmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmooppppppppppppppoooooooqqrrrrrrrrqqqossttouuvvvvvvvvvvuuuuwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxwwwwwwwwwwwwwwwwyyzzzzzzzzzzyyyywwww{{||||||{}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}}}{{{{{{{{{{{{{{{{{{ansibleansibleansible-configansible-consoleansible-docansible-galaxyansible-inventoryansible-playbookansible-pullansible-vaultansible__init__.py__main__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyc__main__.cpython-311.opt-1.pyc__main__.cpython-311.pycconstants.cpython-311.opt-1.pycconstants.cpython-311.pyccontext.cpython-311.opt-1.pyccontext.cpython-311.pycrelease.cpython-311.opt-1.pycrelease.cpython-311.pyc_vendor__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyccli__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycadhoc.cpython-311.opt-1.pycadhoc.cpython-311.pycconfig.cpython-311.opt-1.pycconfig.cpython-311.pycconsole.cpython-311.opt-1.pycconsole.cpython-311.pycdoc.cpython-311.opt-1.pycdoc.cpython-311.pycgalaxy.cpython-311.opt-1.pycgalaxy.cpython-311.pycinventory.cpython-311.opt-1.pycinventory.cpython-311.pycplaybook.cpython-311.opt-1.pycplaybook.cpython-311.pycpull.cpython-311.opt-1.pycpull.cpython-311.pycvault.cpython-311.opt-1.pycvault.cpython-311.pycadhoc.pyarguments__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycoption_helpers.cpython-311.opt-1.pycoption_helpers.cpython-311.pycoption_helpers.pyconfig.pyconsole.pydoc.pygalaxy.pyinventory.pyplaybook.pypull.pyscripts__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycansible_connection_cli_stub.cpython-311.opt-1.pycansible_connection_cli_stub.cpython-311.pycansible_connection_cli_stub.pyvault.pycollections__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyclist.cpython-311.opt-1.pyclist.cpython-311.pyclist.pycompat__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycimportlib_resources.cpython-311.opt-1.pycimportlib_resources.cpython-311.pycselectors.cpython-311.opt-1.pycselectors.cpython-311.pycimportlib_resources.pyselectors.pyconfig__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycmanager.cpython-311.opt-1.pycmanager.cpython-311.pycansible_builtin_runtime.ymlbase.ymlmanager.pyconstants.pycontext.pyerrors__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycyaml_strings.cpython-311.opt-1.pycyaml_strings.cpython-311.pycyaml_strings.pyexecutor__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycaction_write_locks.cpython-311.opt-1.pycaction_write_locks.cpython-311.pycinterpreter_discovery.cpython-311.opt-1.pycinterpreter_discovery.cpython-311.pycmodule_common.cpython-311.opt-1.pycmodule_common.cpython-311.pycplay_iterator.cpython-311.opt-1.pycplay_iterator.cpython-311.pycplaybook_executor.cpython-311.opt-1.pycplaybook_executor.cpython-311.pycstats.cpython-311.opt-1.pycstats.cpython-311.pyctask_executor.cpython-311.opt-1.pyctask_executor.cpython-311.pyctask_queue_manager.cpython-311.opt-1.pyctask_queue_manager.cpython-311.pyctask_result.cpython-311.opt-1.pyctask_result.cpython-311.pycaction_write_locks.pydiscovery__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycpython_target.cpython-311.opt-1.pycpython_target.cpython-311.pycpython_target.pyinterpreter_discovery.pymodule_common.pyplay_iterator.pyplaybook_executor.pypowershell__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycmodule_manifest.cpython-311.opt-1.pycmodule_manifest.cpython-311.pycasync_watchdog.ps1async_wrapper.ps1become_wrapper.ps1bootstrap_wrapper.ps1coverage_wrapper.ps1exec_wrapper.ps1module_manifest.pymodule_powershell_wrapper.ps1module_script_wrapper.ps1module_wrapper.ps1process__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycworker.cpython-311.opt-1.pycworker.cpython-311.pycworker.pystats.pytask_executor.pytask_queue_manager.pytask_result.pygalaxy__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycapi.cpython-311.opt-1.pycapi.cpython-311.pycrole.cpython-311.opt-1.pycrole.cpython-311.pyctoken.cpython-311.opt-1.pyctoken.cpython-311.pycuser_agent.cpython-311.opt-1.pycuser_agent.cpython-311.pycapi.pycollection__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycconcrete_artifact_manager.cpython-311.opt-1.pycconcrete_artifact_manager.cpython-311.pycgalaxy_api_proxy.cpython-311.opt-1.pycgalaxy_api_proxy.cpython-311.pycgpg.cpython-311.opt-1.pycgpg.cpython-311.pycconcrete_artifact_manager.pygalaxy_api_proxy.pygpg.pydataCOPYINGapbDockerfile.j2Makefile.j2README.mdapb.yml.j2defaultsmain.yml.j2handlersmain.yml.j2metamain.yml.j2playbooksdeprovision.yml.j2provision.yml.j2tasksmain.yml.j2testsansible.cfginventorytest.yml.j2varsmain.yml.j2collections_galaxy_meta.ymlcontainerREADME.mddefaultsmain.yml.j2handlersmain.yml.j2metacontainer.yml.j2main.yml.j2tasksmain.yml.j2testsansible.cfginventorytest.yml.j2varsmain.yml.j2defaultcollectionREADME.md.j2galaxy.yml.j2metaruntime.ymlpluginsREADME.md.j2roleREADME.mddefaultsmain.yml.j2fileshandlersmain.yml.j2metamain.yml.j2tasksmain.yml.j2templatestestsinventorytest.yml.j2varsmain.yml.j2networkREADME.mdcliconf_pluginsexample.py.j2defaultsmain.yml.j2libraryexample_command.py.j2example_config.py.j2example_facts.py.j2metamain.yml.j2module_utilsexample.py.j2netconf_pluginsexample.py.j2tasksmain.yml.j2terminal_pluginsexample.py.j2testsinventorytest.yml.j2varsmain.yml.j2dependency_resolution__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycdataclasses.cpython-311.opt-1.pycdataclasses.cpython-311.pycerrors.cpython-311.opt-1.pycerrors.cpython-311.pycproviders.cpython-311.opt-1.pycproviders.cpython-311.pycreporters.cpython-311.opt-1.pycreporters.cpython-311.pycresolvers.cpython-311.opt-1.pycresolvers.cpython-311.pycversioning.cpython-311.opt-1.pycversioning.cpython-311.pycdataclasses.pyerrors.pyproviders.pyreporters.pyresolvers.pyversioning.pyrole.pytoken.pyuser_agent.pyinventory__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycdata.cpython-311.opt-1.pycdata.cpython-311.pycgroup.cpython-311.opt-1.pycgroup.cpython-311.pychelpers.cpython-311.opt-1.pychelpers.cpython-311.pychost.cpython-311.opt-1.pychost.cpython-311.pycmanager.cpython-311.opt-1.pycmanager.cpython-311.pycdata.pygroup.pyhelpers.pyhost.pymanager.pykeyword_desc.ymlmodule_utils__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyc_text.cpython-311.opt-1.pyc_text.cpython-311.pycansible_release.cpython-311.opt-1.pycansible_release.cpython-311.pycapi.cpython-311.opt-1.pycapi.cpython-311.pycbasic.cpython-311.opt-1.pycbasic.cpython-311.pycconnection.cpython-311.opt-1.pycconnection.cpython-311.pycerrors.cpython-311.opt-1.pycerrors.cpython-311.pycjson_utils.cpython-311.opt-1.pycjson_utils.cpython-311.pycpycompat24.cpython-311.opt-1.pycpycompat24.cpython-311.pycservice.cpython-311.opt-1.pycservice.cpython-311.pycsplitter.cpython-311.opt-1.pycsplitter.cpython-311.pycurls.cpython-311.opt-1.pycurls.cpython-311.pycyumdnf.cpython-311.opt-1.pycyumdnf.cpython-311.pyc_internal__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyc_concurrent__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyc_daemon_threading.cpython-311.opt-1.pyc_daemon_threading.cpython-311.pyc_futures.cpython-311.opt-1.pyc_futures.cpython-311.pyc_daemon_threading.py_futures.py_text.pyansible_release.pyapi.pybasic.pycommon__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyc_collections_compat.cpython-311.opt-1.pyc_collections_compat.cpython-311.pyc_utils.cpython-311.opt-1.pyc_utils.cpython-311.pycarg_spec.cpython-311.opt-1.pycarg_spec.cpython-311.pyccollections.cpython-311.opt-1.pyccollections.cpython-311.pycdict_transformations.cpython-311.opt-1.pycdict_transformations.cpython-311.pycfile.cpython-311.opt-1.pycfile.cpython-311.pycjson.cpython-311.opt-1.pycjson.cpython-311.pyclocale.cpython-311.opt-1.pyclocale.cpython-311.pycnetwork.cpython-311.opt-1.pycnetwork.cpython-311.pycparameters.cpython-311.opt-1.pycparameters.cpython-311.pycprocess.cpython-311.opt-1.pycprocess.cpython-311.pycrespawn.cpython-311.opt-1.pycrespawn.cpython-311.pycsys_info.cpython-311.opt-1.pycsys_info.cpython-311.pycvalidation.cpython-311.opt-1.pycvalidation.cpython-311.pycwarnings.cpython-311.opt-1.pycwarnings.cpython-311.pycyaml.cpython-311.opt-1.pycyaml.cpython-311.pyc_collections_compat.py_utils.pyarg_spec.pycollections.pydict_transformations.pyfile.pyjson.pylocale.pynetwork.pyparameters.pyprocess.pyrespawn.pysys_info.pytext__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycconverters.cpython-311.opt-1.pycconverters.cpython-311.pycformatters.cpython-311.opt-1.pycformatters.cpython-311.pycconverters.pyformatters.pyvalidation.pywarnings.pyyaml.pycompat__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycdatetime.cpython-311.opt-1.pycdatetime.cpython-311.pycimportlib.cpython-311.opt-1.pycimportlib.cpython-311.pycparamiko.cpython-311.opt-1.pycparamiko.cpython-311.pycselectors.cpython-311.opt-1.pycselectors.cpython-311.pycselinux.cpython-311.opt-1.pycselinux.cpython-311.pyctyping.cpython-311.opt-1.pyctyping.cpython-311.pycversion.cpython-311.opt-1.pycversion.cpython-311.pycdatetime.pyimportlib.pyparamiko.pyselectors.pyselinux.pytyping.pyversion.pyconnection.pycsharpAnsible.AccessToken.csAnsible.Basic.csAnsible.Become.csAnsible.Privilege.csAnsible.Process.cs__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycdistro__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyc_distro.cpython-311.opt-1.pyc_distro.cpython-311.pyc_distro.pyerrors.pyfacts__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycansible_collector.cpython-311.opt-1.pycansible_collector.cpython-311.pyccollector.cpython-311.opt-1.pyccollector.cpython-311.pyccompat.cpython-311.opt-1.pyccompat.cpython-311.pycdefault_collectors.cpython-311.opt-1.pycdefault_collectors.cpython-311.pycnamespace.cpython-311.opt-1.pycnamespace.cpython-311.pycpackages.cpython-311.opt-1.pycpackages.cpython-311.pycsysctl.cpython-311.opt-1.pycsysctl.cpython-311.pyctimeout.cpython-311.opt-1.pyctimeout.cpython-311.pycutils.cpython-311.opt-1.pycutils.cpython-311.pycansible_collector.pycollector.pycompat.pydefault_collectors.pyhardware__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycaix.cpython-311.opt-1.pycaix.cpython-311.pycbase.cpython-311.opt-1.pycbase.cpython-311.pycdarwin.cpython-311.opt-1.pycdarwin.cpython-311.pycdragonfly.cpython-311.opt-1.pycdragonfly.cpython-311.pycfreebsd.cpython-311.opt-1.pycfreebsd.cpython-311.pychpux.cpython-311.opt-1.pychpux.cpython-311.pychurd.cpython-311.opt-1.pychurd.cpython-311.pyclinux.cpython-311.opt-1.pyclinux.cpython-311.pycnetbsd.cpython-311.opt-1.pycnetbsd.cpython-311.pycopenbsd.cpython-311.opt-1.pycopenbsd.cpython-311.pycsunos.cpython-311.opt-1.pycsunos.cpython-311.pycaix.pybase.pydarwin.pydragonfly.pyfreebsd.pyhpux.pyhurd.pylinux.pynetbsd.pyopenbsd.pysunos.pynamespace.pynetwork__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycaix.cpython-311.opt-1.pycaix.cpython-311.pycbase.cpython-311.opt-1.pycbase.cpython-311.pycdarwin.cpython-311.opt-1.pycdarwin.cpython-311.pycdragonfly.cpython-311.opt-1.pycdragonfly.cpython-311.pycfc_wwn.cpython-311.opt-1.pycfc_wwn.cpython-311.pycfreebsd.cpython-311.opt-1.pycfreebsd.cpython-311.pycgeneric_bsd.cpython-311.opt-1.pycgeneric_bsd.cpython-311.pychpux.cpython-311.opt-1.pychpux.cpython-311.pychurd.cpython-311.opt-1.pychurd.cpython-311.pyciscsi.cpython-311.opt-1.pyciscsi.cpython-311.pyclinux.cpython-311.opt-1.pyclinux.cpython-311.pycnetbsd.cpython-311.opt-1.pycnetbsd.cpython-311.pycnvme.cpython-311.opt-1.pycnvme.cpython-311.pycopenbsd.cpython-311.opt-1.pycopenbsd.cpython-311.pycsunos.cpython-311.opt-1.pycsunos.cpython-311.pycaix.pybase.pydarwin.pydragonfly.pyfc_wwn.pyfreebsd.pygeneric_bsd.pyhpux.pyhurd.pyiscsi.pylinux.pynetbsd.pynvme.pyopenbsd.pysunos.pyother__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycfacter.cpython-311.opt-1.pycfacter.cpython-311.pycohai.cpython-311.opt-1.pycohai.cpython-311.pycfacter.pyohai.pypackages.pysysctl.pysystem__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycapparmor.cpython-311.opt-1.pycapparmor.cpython-311.pyccaps.cpython-311.opt-1.pyccaps.cpython-311.pycchroot.cpython-311.opt-1.pycchroot.cpython-311.pyccmdline.cpython-311.opt-1.pyccmdline.cpython-311.pycdate_time.cpython-311.opt-1.pycdate_time.cpython-311.pycdistribution.cpython-311.opt-1.pycdistribution.cpython-311.pycdns.cpython-311.opt-1.pycdns.cpython-311.pycenv.cpython-311.opt-1.pycenv.cpython-311.pycfips.cpython-311.opt-1.pycfips.cpython-311.pycloadavg.cpython-311.opt-1.pycloadavg.cpython-311.pyclocal.cpython-311.opt-1.pyclocal.cpython-311.pyclsb.cpython-311.opt-1.pyclsb.cpython-311.pycpkg_mgr.cpython-311.opt-1.pycpkg_mgr.cpython-311.pycplatform.cpython-311.opt-1.pycplatform.cpython-311.pycpython.cpython-311.opt-1.pycpython.cpython-311.pycselinux.cpython-311.opt-1.pycselinux.cpython-311.pycservice_mgr.cpython-311.opt-1.pycservice_mgr.cpython-311.pycssh_pub_keys.cpython-311.opt-1.pycssh_pub_keys.cpython-311.pycsystemd.cpython-311.opt-1.pycsystemd.cpython-311.pycuser.cpython-311.opt-1.pycuser.cpython-311.pycapparmor.pycaps.pychroot.pycmdline.pydate_time.pydistribution.pydns.pyenv.pyfips.pyloadavg.pylocal.pylsb.pypkg_mgr.pyplatform.pypython.pyselinux.pyservice_mgr.pyssh_pub_keys.pysystemd.pyuser.pytimeout.pyutils.pyvirtual__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycbase.cpython-311.opt-1.pycbase.cpython-311.pycdragonfly.cpython-311.opt-1.pycdragonfly.cpython-311.pycfreebsd.cpython-311.opt-1.pycfreebsd.cpython-311.pychpux.cpython-311.opt-1.pychpux.cpython-311.pyclinux.cpython-311.opt-1.pyclinux.cpython-311.pycnetbsd.cpython-311.opt-1.pycnetbsd.cpython-311.pycopenbsd.cpython-311.opt-1.pycopenbsd.cpython-311.pycsunos.cpython-311.opt-1.pycsunos.cpython-311.pycsysctl.cpython-311.opt-1.pycsysctl.cpython-311.pycbase.pydragonfly.pyfreebsd.pyhpux.pylinux.pynetbsd.pyopenbsd.pysunos.pysysctl.pyjson_utils.pyparsing__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycconvert_bool.cpython-311.opt-1.pycconvert_bool.cpython-311.pycconvert_bool.pypowershellAnsible.ModuleUtils.AddType.psm1Ansible.ModuleUtils.ArgvParser.psm1Ansible.ModuleUtils.Backup.psm1Ansible.ModuleUtils.CamelConversion.psm1Ansible.ModuleUtils.CommandUtil.psm1Ansible.ModuleUtils.FileUtil.psm1Ansible.ModuleUtils.Legacy.psm1Ansible.ModuleUtils.LinkUtil.psm1Ansible.ModuleUtils.PrivilegeUtil.psm1Ansible.ModuleUtils.SID.psm1Ansible.ModuleUtils.WebRequest.psm1__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycpycompat24.pyservice.pysix__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycsplitter.pyurls.pyyumdnf.pymodules__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycadd_host.cpython-311.opt-1.pycadd_host.cpython-311.pycapt.cpython-311.opt-1.pycapt.cpython-311.pycapt_key.cpython-311.opt-1.pycapt_key.cpython-311.pycapt_repository.cpython-311.opt-1.pycapt_repository.cpython-311.pycassemble.cpython-311.opt-1.pycassemble.cpython-311.pycassert.cpython-311.opt-1.pycassert.cpython-311.pycasync_status.cpython-311.opt-1.pycasync_status.cpython-311.pycasync_wrapper.cpython-311.opt-1.pycasync_wrapper.cpython-311.pycblockinfile.cpython-311.opt-1.pycblockinfile.cpython-311.pyccommand.cpython-311.opt-1.pyccommand.cpython-311.pyccopy.cpython-311.opt-1.pyccopy.cpython-311.pyccron.cpython-311.opt-1.pyccron.cpython-311.pycdeb822_repository.cpython-311.opt-1.pycdeb822_repository.cpython-311.pycdebconf.cpython-311.opt-1.pycdebconf.cpython-311.pycdebug.cpython-311.opt-1.pycdebug.cpython-311.pycdnf.cpython-311.opt-1.pycdnf.cpython-311.pycdnf5.cpython-311.opt-1.pycdnf5.cpython-311.pycdpkg_selections.cpython-311.opt-1.pycdpkg_selections.cpython-311.pycexpect.cpython-311.opt-1.pycexpect.cpython-311.pycfail.cpython-311.opt-1.pycfail.cpython-311.pycfetch.cpython-311.opt-1.pycfetch.cpython-311.pycfile.cpython-311.opt-1.pycfile.cpython-311.pycfind.cpython-311.opt-1.pycfind.cpython-311.pycgather_facts.cpython-311.opt-1.pycgather_facts.cpython-311.pycget_url.cpython-311.opt-1.pycget_url.cpython-311.pycgetent.cpython-311.opt-1.pycgetent.cpython-311.pycgit.cpython-311.opt-1.pycgit.cpython-311.pycgroup.cpython-311.opt-1.pycgroup.cpython-311.pycgroup_by.cpython-311.opt-1.pycgroup_by.cpython-311.pychostname.cpython-311.opt-1.pychostname.cpython-311.pycimport_playbook.cpython-311.opt-1.pycimport_playbook.cpython-311.pycimport_role.cpython-311.opt-1.pycimport_role.cpython-311.pycimport_tasks.cpython-311.opt-1.pycimport_tasks.cpython-311.pycinclude_role.cpython-311.opt-1.pycinclude_role.cpython-311.pycinclude_tasks.cpython-311.opt-1.pycinclude_tasks.cpython-311.pycinclude_vars.cpython-311.opt-1.pycinclude_vars.cpython-311.pyciptables.cpython-311.opt-1.pyciptables.cpython-311.pycknown_hosts.cpython-311.opt-1.pycknown_hosts.cpython-311.pyclineinfile.cpython-311.opt-1.pyclineinfile.cpython-311.pycmeta.cpython-311.opt-1.pycmeta.cpython-311.pycmount_facts.cpython-311.opt-1.pycmount_facts.cpython-311.pycpackage.cpython-311.opt-1.pycpackage.cpython-311.pycpackage_facts.cpython-311.opt-1.pycpackage_facts.cpython-311.pycpause.cpython-311.opt-1.pycpause.cpython-311.pycping.cpython-311.opt-1.pycping.cpython-311.pycpip.cpython-311.opt-1.pycpip.cpython-311.pycraw.cpython-311.opt-1.pycraw.cpython-311.pycreboot.cpython-311.opt-1.pycreboot.cpython-311.pycreplace.cpython-311.opt-1.pycreplace.cpython-311.pycrpm_key.cpython-311.opt-1.pycrpm_key.cpython-311.pycscript.cpython-311.opt-1.pycscript.cpython-311.pycservice.cpython-311.opt-1.pycservice.cpython-311.pycservice_facts.cpython-311.opt-1.pycservice_facts.cpython-311.pycset_fact.cpython-311.opt-1.pycset_fact.cpython-311.pycset_stats.cpython-311.opt-1.pycset_stats.cpython-311.pycsetup.cpython-311.opt-1.pycsetup.cpython-311.pycshell.cpython-311.opt-1.pycshell.cpython-311.pycslurp.cpython-311.opt-1.pycslurp.cpython-311.pycstat.cpython-311.opt-1.pycstat.cpython-311.pycsubversion.cpython-311.opt-1.pycsubversion.cpython-311.pycsystemd.cpython-311.opt-1.pycsystemd.cpython-311.pycsystemd_service.cpython-311.opt-1.pycsystemd_service.cpython-311.pycsysvinit.cpython-311.opt-1.pycsysvinit.cpython-311.pyctempfile.cpython-311.opt-1.pyctempfile.cpython-311.pyctemplate.cpython-311.opt-1.pyctemplate.cpython-311.pycunarchive.cpython-311.opt-1.pycunarchive.cpython-311.pycuri.cpython-311.opt-1.pycuri.cpython-311.pycuser.cpython-311.opt-1.pycuser.cpython-311.pycvalidate_argument_spec.cpython-311.opt-1.pycvalidate_argument_spec.cpython-311.pycwait_for.cpython-311.opt-1.pycwait_for.cpython-311.pycwait_for_connection.cpython-311.opt-1.pycwait_for_connection.cpython-311.pycyum_repository.cpython-311.opt-1.pycyum_repository.cpython-311.pycadd_host.pyapt.pyapt_key.pyapt_repository.pyassemble.pyassert.pyasync_status.pyasync_wrapper.pyblockinfile.pycommand.pycopy.pycron.pydeb822_repository.pydebconf.pydebug.pydnf.pydnf5.pydpkg_selections.pyexpect.pyfail.pyfetch.pyfile.pyfind.pygather_facts.pyget_url.pygetent.pygit.pygroup.pygroup_by.pyhostname.pyimport_playbook.pyimport_role.pyimport_tasks.pyinclude_role.pyinclude_tasks.pyinclude_vars.pyiptables.pyknown_hosts.pylineinfile.pymeta.pymount_facts.pypackage.pypackage_facts.pypause.pyping.pypip.pyraw.pyreboot.pyreplace.pyrpm_key.pyscript.pyservice.pyservice_facts.pyset_fact.pyset_stats.pysetup.pyshell.pyslurp.pystat.pysubversion.pysystemd.pysystemd_service.pysysvinit.pytempfile.pytemplate.pyunarchive.pyuri.pyuser.pyvalidate_argument_spec.pywait_for.pywait_for_connection.pyyum_repository.pyparsing__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycajson.cpython-311.opt-1.pycajson.cpython-311.pycdataloader.cpython-311.opt-1.pycdataloader.cpython-311.pycmod_args.cpython-311.opt-1.pycmod_args.cpython-311.pycplugin_docs.cpython-311.opt-1.pycplugin_docs.cpython-311.pycquoting.cpython-311.opt-1.pycquoting.cpython-311.pycsplitter.cpython-311.opt-1.pycsplitter.cpython-311.pycajson.pydataloader.pymod_args.pyplugin_docs.pyquoting.pysplitter.pyutils__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycaddresses.cpython-311.opt-1.pycaddresses.cpython-311.pycjsonify.cpython-311.opt-1.pycjsonify.cpython-311.pycyaml.cpython-311.opt-1.pycyaml.cpython-311.pycaddresses.pyjsonify.pyyaml.pyvault__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycyaml__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycconstructor.cpython-311.opt-1.pycconstructor.cpython-311.pycdumper.cpython-311.opt-1.pycdumper.cpython-311.pycloader.cpython-311.opt-1.pycloader.cpython-311.pycobjects.cpython-311.opt-1.pycobjects.cpython-311.pycconstructor.pydumper.pyloader.pyobjects.pyplaybook__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycattribute.cpython-311.opt-1.pycattribute.cpython-311.pycbase.cpython-311.opt-1.pycbase.cpython-311.pycblock.cpython-311.opt-1.pycblock.cpython-311.pyccollectionsearch.cpython-311.opt-1.pyccollectionsearch.cpython-311.pycconditional.cpython-311.opt-1.pycconditional.cpython-311.pycdelegatable.cpython-311.opt-1.pycdelegatable.cpython-311.pychandler.cpython-311.opt-1.pychandler.cpython-311.pychandler_task_include.cpython-311.opt-1.pychandler_task_include.cpython-311.pychelpers.cpython-311.opt-1.pychelpers.cpython-311.pycincluded_file.cpython-311.opt-1.pycincluded_file.cpython-311.pycloop_control.cpython-311.opt-1.pycloop_control.cpython-311.pycnotifiable.cpython-311.opt-1.pycnotifiable.cpython-311.pycplay.cpython-311.opt-1.pycplay.cpython-311.pycplay_context.cpython-311.opt-1.pycplay_context.cpython-311.pycplaybook_include.cpython-311.opt-1.pycplaybook_include.cpython-311.pycrole_include.cpython-311.opt-1.pycrole_include.cpython-311.pyctaggable.cpython-311.opt-1.pyctaggable.cpython-311.pyctask.cpython-311.opt-1.pyctask.cpython-311.pyctask_include.cpython-311.opt-1.pyctask_include.cpython-311.pycattribute.pybase.pyblock.pycollectionsearch.pyconditional.pydelegatable.pyhandler.pyhandler_task_include.pyhelpers.pyincluded_file.pyloop_control.pynotifiable.pyplay.pyplay_context.pyplaybook_include.pyrole__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycdefinition.cpython-311.opt-1.pycdefinition.cpython-311.pycinclude.cpython-311.opt-1.pycinclude.cpython-311.pycmetadata.cpython-311.opt-1.pycmetadata.cpython-311.pycrequirement.cpython-311.opt-1.pycrequirement.cpython-311.pycdefinition.pyinclude.pymetadata.pyrequirement.pyrole_include.pytaggable.pytask.pytask_include.pyplugins__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyclist.cpython-311.opt-1.pyclist.cpython-311.pycloader.cpython-311.opt-1.pycloader.cpython-311.pycaction__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycadd_host.cpython-311.opt-1.pycadd_host.cpython-311.pycassemble.cpython-311.opt-1.pycassemble.cpython-311.pycassert.cpython-311.opt-1.pycassert.cpython-311.pycasync_status.cpython-311.opt-1.pycasync_status.cpython-311.pyccommand.cpython-311.opt-1.pyccommand.cpython-311.pyccopy.cpython-311.opt-1.pyccopy.cpython-311.pycdebug.cpython-311.opt-1.pycdebug.cpython-311.pycdnf.cpython-311.opt-1.pycdnf.cpython-311.pycfail.cpython-311.opt-1.pycfail.cpython-311.pycfetch.cpython-311.opt-1.pycfetch.cpython-311.pycgather_facts.cpython-311.opt-1.pycgather_facts.cpython-311.pycgroup_by.cpython-311.opt-1.pycgroup_by.cpython-311.pycinclude_vars.cpython-311.opt-1.pycinclude_vars.cpython-311.pycnormal.cpython-311.opt-1.pycnormal.cpython-311.pycpackage.cpython-311.opt-1.pycpackage.cpython-311.pycpause.cpython-311.opt-1.pycpause.cpython-311.pycraw.cpython-311.opt-1.pycraw.cpython-311.pycreboot.cpython-311.opt-1.pycreboot.cpython-311.pycscript.cpython-311.opt-1.pycscript.cpython-311.pycservice.cpython-311.opt-1.pycservice.cpython-311.pycset_fact.cpython-311.opt-1.pycset_fact.cpython-311.pycset_stats.cpython-311.opt-1.pycset_stats.cpython-311.pycshell.cpython-311.opt-1.pycshell.cpython-311.pyctemplate.cpython-311.opt-1.pyctemplate.cpython-311.pycunarchive.cpython-311.opt-1.pycunarchive.cpython-311.pycuri.cpython-311.opt-1.pycuri.cpython-311.pycvalidate_argument_spec.cpython-311.opt-1.pycvalidate_argument_spec.cpython-311.pycwait_for_connection.cpython-311.opt-1.pycwait_for_connection.cpython-311.pycadd_host.pyassemble.pyassert.pyasync_status.pycommand.pycopy.pydebug.pydnf.pyfail.pyfetch.pygather_facts.pygroup_by.pyinclude_vars.pynormal.pypackage.pypause.pyraw.pyreboot.pyscript.pyservice.pyset_fact.pyset_stats.pyshell.pytemplate.pyunarchive.pyuri.pyvalidate_argument_spec.pywait_for_connection.pybecome__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycrunas.cpython-311.opt-1.pycrunas.cpython-311.pycsu.cpython-311.opt-1.pycsu.cpython-311.pycsudo.cpython-311.opt-1.pycsudo.cpython-311.pycrunas.pysu.pysudo.pycache__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycbase.cpython-311.opt-1.pycbase.cpython-311.pycjsonfile.cpython-311.opt-1.pycjsonfile.cpython-311.pycmemory.cpython-311.opt-1.pycmemory.cpython-311.pycbase.pyjsonfile.pymemory.pycallback__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycdefault.cpython-311.opt-1.pycdefault.cpython-311.pycjunit.cpython-311.opt-1.pycjunit.cpython-311.pycminimal.cpython-311.opt-1.pycminimal.cpython-311.pyconeline.cpython-311.opt-1.pyconeline.cpython-311.pyctree.cpython-311.opt-1.pyctree.cpython-311.pycdefault.pyjunit.pyminimal.pyoneline.pytree.pycliconf__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycconnection__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyclocal.cpython-311.opt-1.pyclocal.cpython-311.pycparamiko_ssh.cpython-311.opt-1.pycparamiko_ssh.cpython-311.pycpsrp.cpython-311.opt-1.pycpsrp.cpython-311.pycssh.cpython-311.opt-1.pycssh.cpython-311.pycwinrm.cpython-311.opt-1.pycwinrm.cpython-311.pyclocal.pyparamiko_ssh.pypsrp.pyssh.pywinrm.pydoc_fragments__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycaction_common_attributes.cpython-311.opt-1.pycaction_common_attributes.cpython-311.pycaction_core.cpython-311.opt-1.pycaction_core.cpython-311.pycbackup.cpython-311.opt-1.pycbackup.cpython-311.pycconnection_pipelining.cpython-311.opt-1.pycconnection_pipelining.cpython-311.pycconstructed.cpython-311.opt-1.pycconstructed.cpython-311.pycdecrypt.cpython-311.opt-1.pycdecrypt.cpython-311.pycdefault_callback.cpython-311.opt-1.pycdefault_callback.cpython-311.pycfiles.cpython-311.opt-1.pycfiles.cpython-311.pycinventory_cache.cpython-311.opt-1.pycinventory_cache.cpython-311.pycresult_format_callback.cpython-311.opt-1.pycresult_format_callback.cpython-311.pycreturn_common.cpython-311.opt-1.pycreturn_common.cpython-311.pycshell_common.cpython-311.opt-1.pycshell_common.cpython-311.pycshell_windows.cpython-311.opt-1.pycshell_windows.cpython-311.pyctemplate_common.cpython-311.opt-1.pyctemplate_common.cpython-311.pycurl.cpython-311.opt-1.pycurl.cpython-311.pycurl_windows.cpython-311.opt-1.pycurl_windows.cpython-311.pycvalidate.cpython-311.opt-1.pycvalidate.cpython-311.pycvars_plugin_staging.cpython-311.opt-1.pycvars_plugin_staging.cpython-311.pycaction_common_attributes.pyaction_core.pybackup.pyconnection_pipelining.pyconstructed.pydecrypt.pydefault_callback.pyfiles.pyinventory_cache.pyresult_format_callback.pyreturn_common.pyshell_common.pyshell_windows.pytemplate_common.pyurl.pyurl_windows.pyvalidate.pyvars_plugin_staging.pyfilter__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyccore.cpython-311.opt-1.pyccore.cpython-311.pycencryption.cpython-311.opt-1.pycencryption.cpython-311.pycmathstuff.cpython-311.opt-1.pycmathstuff.cpython-311.pycurls.cpython-311.opt-1.pycurls.cpython-311.pycurlsplit.cpython-311.opt-1.pycurlsplit.cpython-311.pycb64decode.ymlb64encode.ymlbasename.ymlbool.ymlchecksum.ymlcombinations.ymlcombine.ymlcomment.ymlcommonpath.ymlcore.pydict2items.ymldifference.ymldirname.ymlencryption.pyexpanduser.ymlexpandvars.ymlextract.ymlfileglob.ymlflatten.ymlfrom_json.ymlfrom_yaml.ymlfrom_yaml_all.ymlhash.ymlhuman_readable.ymlhuman_to_bytes.ymlintersect.ymlitems2dict.ymllog.ymlmandatory.ymlmathstuff.pymd5.ymlnormpath.ymlpassword_hash.ymlpath_join.ymlpermutations.ymlpow.ymlproduct.ymlquote.ymlrandom.ymlrealpath.ymlregex_escape.ymlregex_findall.ymlregex_replace.ymlregex_search.ymlrekey_on_member.ymlrelpath.ymlroot.ymlsha1.ymlshuffle.ymlsplit.ymlsplitext.ymlstrftime.ymlsubelements.ymlsymmetric_difference.ymlternary.ymlto_datetime.ymlto_json.ymlto_nice_json.ymlto_nice_yaml.ymlto_uuid.ymlto_yaml.ymltype_debug.ymlunion.ymlunique.ymlunvault.ymlurldecode.ymlurls.pyurlsplit.pyvault.ymlwin_basename.ymlwin_dirname.ymlwin_splitdrive.ymlzip.ymlzip_longest.ymlhttpapi__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycinventory__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycadvanced_host_list.cpython-311.opt-1.pycadvanced_host_list.cpython-311.pycauto.cpython-311.opt-1.pycauto.cpython-311.pycconstructed.cpython-311.opt-1.pycconstructed.cpython-311.pycgenerator.cpython-311.opt-1.pycgenerator.cpython-311.pychost_list.cpython-311.opt-1.pychost_list.cpython-311.pycini.cpython-311.opt-1.pycini.cpython-311.pycscript.cpython-311.opt-1.pycscript.cpython-311.pyctoml.cpython-311.opt-1.pyctoml.cpython-311.pycyaml.cpython-311.opt-1.pycyaml.cpython-311.pycadvanced_host_list.pyauto.pyconstructed.pygenerator.pyhost_list.pyini.pyscript.pytoml.pyyaml.pylist.pyloader.pylookup__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycconfig.cpython-311.opt-1.pycconfig.cpython-311.pyccsvfile.cpython-311.opt-1.pyccsvfile.cpython-311.pycdict.cpython-311.opt-1.pycdict.cpython-311.pycenv.cpython-311.opt-1.pycenv.cpython-311.pycfile.cpython-311.opt-1.pycfile.cpython-311.pycfileglob.cpython-311.opt-1.pycfileglob.cpython-311.pycfirst_found.cpython-311.opt-1.pycfirst_found.cpython-311.pycindexed_items.cpython-311.opt-1.pycindexed_items.cpython-311.pycini.cpython-311.opt-1.pycini.cpython-311.pycinventory_hostnames.cpython-311.opt-1.pycinventory_hostnames.cpython-311.pycitems.cpython-311.opt-1.pycitems.cpython-311.pyclines.cpython-311.opt-1.pyclines.cpython-311.pyclist.cpython-311.opt-1.pyclist.cpython-311.pycnested.cpython-311.opt-1.pycnested.cpython-311.pycpassword.cpython-311.opt-1.pycpassword.cpython-311.pycpipe.cpython-311.opt-1.pycpipe.cpython-311.pycrandom_choice.cpython-311.opt-1.pycrandom_choice.cpython-311.pycsequence.cpython-311.opt-1.pycsequence.cpython-311.pycsubelements.cpython-311.opt-1.pycsubelements.cpython-311.pyctemplate.cpython-311.opt-1.pyctemplate.cpython-311.pyctogether.cpython-311.opt-1.pyctogether.cpython-311.pycunvault.cpython-311.opt-1.pycunvault.cpython-311.pycurl.cpython-311.opt-1.pycurl.cpython-311.pycvarnames.cpython-311.opt-1.pycvarnames.cpython-311.pycvars.cpython-311.opt-1.pycvars.cpython-311.pycconfig.pycsvfile.pydict.pyenv.pyfile.pyfileglob.pyfirst_found.pyindexed_items.pyini.pyinventory_hostnames.pyitems.pylines.pylist.pynested.pypassword.pypipe.pyrandom_choice.pysequence.pysubelements.pytemplate.pytogether.pyunvault.pyurl.pyvarnames.pyvars.pynetconf__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycshell__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyccmd.cpython-311.opt-1.pyccmd.cpython-311.pycpowershell.cpython-311.opt-1.pycpowershell.cpython-311.pycsh.cpython-311.opt-1.pycsh.cpython-311.pyccmd.pypowershell.pysh.pystrategy__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycdebug.cpython-311.opt-1.pycdebug.cpython-311.pycfree.cpython-311.opt-1.pycfree.cpython-311.pychost_pinned.cpython-311.opt-1.pychost_pinned.cpython-311.pyclinear.cpython-311.opt-1.pyclinear.cpython-311.pycdebug.pyfree.pyhost_pinned.pylinear.pyterminal__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyctest__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyccore.cpython-311.opt-1.pyccore.cpython-311.pycfiles.cpython-311.opt-1.pycfiles.cpython-311.pycmathstuff.cpython-311.opt-1.pycmathstuff.cpython-311.pycuri.cpython-311.opt-1.pycuri.cpython-311.pycabs.ymlall.ymlany.ymlchange.ymlchanged.ymlcontains.ymlcore.pydirectory.ymlexists.ymlfailed.ymlfailure.ymlfalsy.ymlfile.ymlfiles.pyfinished.ymlis_abs.ymlis_dir.ymlis_file.ymlis_link.ymlis_mount.ymlis_same_file.ymlisnan.ymlissubset.ymlissuperset.ymllink.ymllink_exists.ymlmatch.ymlmathstuff.pymount.ymlnan.ymlreachable.ymlregex.ymlsame_file.ymlsearch.ymlskip.ymlskipped.ymlstarted.ymlsubset.ymlsucceeded.ymlsuccess.ymlsuccessful.ymlsuperset.ymltimedout.ymltruthy.ymlunreachable.ymluri.pyuri.ymlurl.ymlurn.ymlvault_encrypted.ymlvaulted_file.ymlversion.ymlversion_compare.ymlvars__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pychost_group_vars.cpython-311.opt-1.pychost_group_vars.cpython-311.pychost_group_vars.pyrelease.pytemplate__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycnative_helpers.cpython-311.opt-1.pycnative_helpers.cpython-311.pyctemplate.cpython-311.opt-1.pyctemplate.cpython-311.pycvars.cpython-311.opt-1.pycvars.cpython-311.pycnative_helpers.pytemplate.pyvars.pyutils__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyc_junit_xml.cpython-311.opt-1.pyc_junit_xml.cpython-311.pyccmd_functions.cpython-311.opt-1.pyccmd_functions.cpython-311.pyccolor.cpython-311.opt-1.pyccolor.cpython-311.pyccontext_objects.cpython-311.opt-1.pyccontext_objects.cpython-311.pycdisplay.cpython-311.opt-1.pycdisplay.cpython-311.pycencrypt.cpython-311.opt-1.pycencrypt.cpython-311.pycfqcn.cpython-311.opt-1.pycfqcn.cpython-311.pycgalaxy.cpython-311.opt-1.pycgalaxy.cpython-311.pychashing.cpython-311.opt-1.pychashing.cpython-311.pychelpers.cpython-311.opt-1.pychelpers.cpython-311.pycjsonrpc.cpython-311.opt-1.pycjsonrpc.cpython-311.pyclistify.cpython-311.opt-1.pyclistify.cpython-311.pyclock.cpython-311.opt-1.pyclock.cpython-311.pycmultiprocessing.cpython-311.opt-1.pycmultiprocessing.cpython-311.pycnative_jinja.cpython-311.opt-1.pycnative_jinja.cpython-311.pycpath.cpython-311.opt-1.pycpath.cpython-311.pycplugin_docs.cpython-311.opt-1.pycplugin_docs.cpython-311.pycpy3compat.cpython-311.opt-1.pycpy3compat.cpython-311.pycsentinel.cpython-311.opt-1.pycsentinel.cpython-311.pycshlex.cpython-311.opt-1.pycshlex.cpython-311.pycsingleton.cpython-311.opt-1.pycsingleton.cpython-311.pycssh_functions.cpython-311.opt-1.pycssh_functions.cpython-311.pycunicode.cpython-311.opt-1.pycunicode.cpython-311.pycunsafe_proxy.cpython-311.opt-1.pycunsafe_proxy.cpython-311.pycvars.cpython-311.opt-1.pycvars.cpython-311.pycversion.cpython-311.opt-1.pycversion.cpython-311.pyc_junit_xml.pycmd_functions.pycollection_loader__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyc_collection_config.cpython-311.opt-1.pyc_collection_config.cpython-311.pyc_collection_finder.cpython-311.opt-1.pyc_collection_finder.cpython-311.pyc_collection_meta.cpython-311.opt-1.pyc_collection_meta.cpython-311.pyc_collection_config.py_collection_finder.py_collection_meta.pycolor.pycontext_objects.pydisplay.pyencrypt.pyfqcn.pygalaxy.pyhashing.pyhelpers.pyjsonrpc.pylistify.pylock.pymultiprocessing.pynative_jinja.pypath.pyplugin_docs.pypy3compat.pysentinel.pyshlex.pysingleton.pyssh_functions.pyunicode.pyunsafe_proxy.pyvars.pyversion.pyvars__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycclean.cpython-311.opt-1.pycclean.cpython-311.pycfact_cache.cpython-311.opt-1.pycfact_cache.cpython-311.pychostvars.cpython-311.opt-1.pychostvars.cpython-311.pycmanager.cpython-311.opt-1.pycmanager.cpython-311.pycplugins.cpython-311.opt-1.pycplugins.cpython-311.pycreserved.cpython-311.opt-1.pycreserved.cpython-311.pycclean.pyfact_cache.pyhostvars.pymanager.pyplugins.pyreserved.pyansible_core-2.18.3.dist-infoApache-License.txtCOPYINGINSTALLERMETADATAMIT-license.txtPSF-license.txtRECORDREQUESTEDWHEELentry_points.txtsimplified_bsd.txttop_level.txtansiblecollectionspluginsactionbecomecachecallbackcliconfconnectiondoc_fragmentsfilterhttpapiinventorylookupmodule_utilsmodulesnetconfstrategyterminaltestvarsrolesansible-coreCHANGELOG-v2.18.rstchangelog.yamlansible-coreApache-License.txtCOPYINGMIT-license.txtPSF-license.txtsimplified_bsd.txtansible-config.1.gzansible-console.1.gzansible-doc.1.gzansible-galaxy.1.gzansible-inventory.1.gzansible-playbook.1.gzansible-pull.1.gzansible-vault.1.gzansible.1.gz/etc//usr/bin//usr/lib/python3.11/site-packages//usr/lib/python3.11/site-packages/ansible//usr/lib/python3.11/site-packages/ansible/__pycache__//usr/lib/python3.11/site-packages/ansible/_vendor//usr/lib/python3.11/site-packages/ansible/_vendor/__pycache__//usr/lib/python3.11/site-packages/ansible/cli//usr/lib/python3.11/site-packages/ansible/cli/__pycache__//usr/lib/python3.11/site-packages/ansible/cli/arguments//usr/lib/python3.11/site-packages/ansible/cli/arguments/__pycache__//usr/lib/python3.11/site-packages/ansible/cli/scripts//usr/lib/python3.11/site-packages/ansible/cli/scripts/__pycache__//usr/lib/python3.11/site-packages/ansible/collections//usr/lib/python3.11/site-packages/ansible/collections/__pycache__//usr/lib/python3.11/site-packages/ansible/compat//usr/lib/python3.11/site-packages/ansible/compat/__pycache__//usr/lib/python3.11/site-packages/ansible/config//usr/lib/python3.11/site-packages/ansible/config/__pycache__//usr/lib/python3.11/site-packages/ansible/errors//usr/lib/python3.11/site-packages/ansible/errors/__pycache__//usr/lib/python3.11/site-packages/ansible/executor//usr/lib/python3.11/site-packages/ansible/executor/__pycache__//usr/lib/python3.11/site-packages/ansible/executor/discovery//usr/lib/python3.11/site-packages/ansible/executor/discovery/__pycache__//usr/lib/python3.11/site-packages/ansible/executor/powershell//usr/lib/python3.11/site-packages/ansible/executor/powershell/__pycache__//usr/lib/python3.11/site-packages/ansible/executor/process//usr/lib/python3.11/site-packages/ansible/executor/process/__pycache__//usr/lib/python3.11/site-packages/ansible/galaxy//usr/lib/python3.11/site-packages/ansible/galaxy/__pycache__//usr/lib/python3.11/site-packages/ansible/galaxy/collection//usr/lib/python3.11/site-packages/ansible/galaxy/collection/__pycache__//usr/lib/python3.11/site-packages/ansible/galaxy/data//usr/lib/python3.11/site-packages/ansible/galaxy/data/apb//usr/lib/python3.11/site-packages/ansible/galaxy/data/apb/defaults//usr/lib/python3.11/site-packages/ansible/galaxy/data/apb/handlers//usr/lib/python3.11/site-packages/ansible/galaxy/data/apb/meta//usr/lib/python3.11/site-packages/ansible/galaxy/data/apb/playbooks//usr/lib/python3.11/site-packages/ansible/galaxy/data/apb/tasks//usr/lib/python3.11/site-packages/ansible/galaxy/data/apb/tests//usr/lib/python3.11/site-packages/ansible/galaxy/data/apb/vars//usr/lib/python3.11/site-packages/ansible/galaxy/data/container//usr/lib/python3.11/site-packages/ansible/galaxy/data/container/defaults//usr/lib/python3.11/site-packages/ansible/galaxy/data/container/handlers//usr/lib/python3.11/site-packages/ansible/galaxy/data/container/meta//usr/lib/python3.11/site-packages/ansible/galaxy/data/container/tasks//usr/lib/python3.11/site-packages/ansible/galaxy/data/container/tests//usr/lib/python3.11/site-packages/ansible/galaxy/data/container/vars//usr/lib/python3.11/site-packages/ansible/galaxy/data/default//usr/lib/python3.11/site-packages/ansible/galaxy/data/default/collection//usr/lib/python3.11/site-packages/ansible/galaxy/data/default/collection/meta//usr/lib/python3.11/site-packages/ansible/galaxy/data/default/collection/plugins//usr/lib/python3.11/site-packages/ansible/galaxy/data/default/role//usr/lib/python3.11/site-packages/ansible/galaxy/data/default/role/defaults//usr/lib/python3.11/site-packages/ansible/galaxy/data/default/role/handlers//usr/lib/python3.11/site-packages/ansible/galaxy/data/default/role/meta//usr/lib/python3.11/site-packages/ansible/galaxy/data/default/role/tasks//usr/lib/python3.11/site-packages/ansible/galaxy/data/default/role/tests//usr/lib/python3.11/site-packages/ansible/galaxy/data/default/role/vars//usr/lib/python3.11/site-packages/ansible/galaxy/data/network//usr/lib/python3.11/site-packages/ansible/galaxy/data/network/cliconf_plugins//usr/lib/python3.11/site-packages/ansible/galaxy/data/network/defaults//usr/lib/python3.11/site-packages/ansible/galaxy/data/network/library//usr/lib/python3.11/site-packages/ansible/galaxy/data/network/meta//usr/lib/python3.11/site-packages/ansible/galaxy/data/network/module_utils//usr/lib/python3.11/site-packages/ansible/galaxy/data/network/netconf_plugins//usr/lib/python3.11/site-packages/ansible/galaxy/data/network/tasks//usr/lib/python3.11/site-packages/ansible/galaxy/data/network/terminal_plugins//usr/lib/python3.11/site-packages/ansible/galaxy/data/network/tests//usr/lib/python3.11/site-packages/ansible/galaxy/data/network/vars//usr/lib/python3.11/site-packages/ansible/galaxy/dependency_resolution//usr/lib/python3.11/site-packages/ansible/galaxy/dependency_resolution/__pycache__//usr/lib/python3.11/site-packages/ansible/inventory//usr/lib/python3.11/site-packages/ansible/inventory/__pycache__//usr/lib/python3.11/site-packages/ansible/module_utils//usr/lib/python3.11/site-packages/ansible/module_utils/__pycache__//usr/lib/python3.11/site-packages/ansible/module_utils/_internal//usr/lib/python3.11/site-packages/ansible/module_utils/_internal/__pycache__//usr/lib/python3.11/site-packages/ansible/module_utils/_internal/_concurrent//usr/lib/python3.11/site-packages/ansible/module_utils/_internal/_concurrent/__pycache__//usr/lib/python3.11/site-packages/ansible/module_utils/common//usr/lib/python3.11/site-packages/ansible/module_utils/common/__pycache__//usr/lib/python3.11/site-packages/ansible/module_utils/common/text//usr/lib/python3.11/site-packages/ansible/module_utils/common/text/__pycache__//usr/lib/python3.11/site-packages/ansible/module_utils/compat//usr/lib/python3.11/site-packages/ansible/module_utils/compat/__pycache__//usr/lib/python3.11/site-packages/ansible/module_utils/csharp//usr/lib/python3.11/site-packages/ansible/module_utils/csharp/__pycache__//usr/lib/python3.11/site-packages/ansible/module_utils/distro//usr/lib/python3.11/site-packages/ansible/module_utils/distro/__pycache__//usr/lib/python3.11/site-packages/ansible/module_utils/facts//usr/lib/python3.11/site-packages/ansible/module_utils/facts/__pycache__//usr/lib/python3.11/site-packages/ansible/module_utils/facts/hardware//usr/lib/python3.11/site-packages/ansible/module_utils/facts/hardware/__pycache__//usr/lib/python3.11/site-packages/ansible/module_utils/facts/network//usr/lib/python3.11/site-packages/ansible/module_utils/facts/network/__pycache__//usr/lib/python3.11/site-packages/ansible/module_utils/facts/other//usr/lib/python3.11/site-packages/ansible/module_utils/facts/other/__pycache__//usr/lib/python3.11/site-packages/ansible/module_utils/facts/system//usr/lib/python3.11/site-packages/ansible/module_utils/facts/system/__pycache__//usr/lib/python3.11/site-packages/ansible/module_utils/facts/virtual//usr/lib/python3.11/site-packages/ansible/module_utils/facts/virtual/__pycache__//usr/lib/python3.11/site-packages/ansible/module_utils/parsing//usr/lib/python3.11/site-packages/ansible/module_utils/parsing/__pycache__//usr/lib/python3.11/site-packages/ansible/module_utils/powershell//usr/lib/python3.11/site-packages/ansible/module_utils/powershell/__pycache__//usr/lib/python3.11/site-packages/ansible/module_utils/six//usr/lib/python3.11/site-packages/ansible/module_utils/six/__pycache__//usr/lib/python3.11/site-packages/ansible/modules//usr/lib/python3.11/site-packages/ansible/modules/__pycache__//usr/lib/python3.11/site-packages/ansible/parsing//usr/lib/python3.11/site-packages/ansible/parsing/__pycache__//usr/lib/python3.11/site-packages/ansible/parsing/utils//usr/lib/python3.11/site-packages/ansible/parsing/utils/__pycache__//usr/lib/python3.11/site-packages/ansible/parsing/vault//usr/lib/python3.11/site-packages/ansible/parsing/vault/__pycache__//usr/lib/python3.11/site-packages/ansible/parsing/yaml//usr/lib/python3.11/site-packages/ansible/parsing/yaml/__pycache__//usr/lib/python3.11/site-packages/ansible/playbook//usr/lib/python3.11/site-packages/ansible/playbook/__pycache__//usr/lib/python3.11/site-packages/ansible/playbook/role//usr/lib/python3.11/site-packages/ansible/playbook/role/__pycache__//usr/lib/python3.11/site-packages/ansible/plugins//usr/lib/python3.11/site-packages/ansible/plugins/__pycache__//usr/lib/python3.11/site-packages/ansible/plugins/action//usr/lib/python3.11/site-packages/ansible/plugins/action/__pycache__//usr/lib/python3.11/site-packages/ansible/plugins/become//usr/lib/python3.11/site-packages/ansible/plugins/become/__pycache__//usr/lib/python3.11/site-packages/ansible/plugins/cache//usr/lib/python3.11/site-packages/ansible/plugins/cache/__pycache__//usr/lib/python3.11/site-packages/ansible/plugins/callback//usr/lib/python3.11/site-packages/ansible/plugins/callback/__pycache__//usr/lib/python3.11/site-packages/ansible/plugins/cliconf//usr/lib/python3.11/site-packages/ansible/plugins/cliconf/__pycache__//usr/lib/python3.11/site-packages/ansible/plugins/connection//usr/lib/python3.11/site-packages/ansible/plugins/connection/__pycache__//usr/lib/python3.11/site-packages/ansible/plugins/doc_fragments//usr/lib/python3.11/site-packages/ansible/plugins/doc_fragments/__pycache__//usr/lib/python3.11/site-packages/ansible/plugins/filter//usr/lib/python3.11/site-packages/ansible/plugins/filter/__pycache__//usr/lib/python3.11/site-packages/ansible/plugins/httpapi//usr/lib/python3.11/site-packages/ansible/plugins/httpapi/__pycache__//usr/lib/python3.11/site-packages/ansible/plugins/inventory//usr/lib/python3.11/site-packages/ansible/plugins/inventory/__pycache__//usr/lib/python3.11/site-packages/ansible/plugins/lookup//usr/lib/python3.11/site-packages/ansible/plugins/lookup/__pycache__//usr/lib/python3.11/site-packages/ansible/plugins/netconf//usr/lib/python3.11/site-packages/ansible/plugins/netconf/__pycache__//usr/lib/python3.11/site-packages/ansible/plugins/shell//usr/lib/python3.11/site-packages/ansible/plugins/shell/__pycache__//usr/lib/python3.11/site-packages/ansible/plugins/strategy//usr/lib/python3.11/site-packages/ansible/plugins/strategy/__pycache__//usr/lib/python3.11/site-packages/ansible/plugins/terminal//usr/lib/python3.11/site-packages/ansible/plugins/terminal/__pycache__//usr/lib/python3.11/site-packages/ansible/plugins/test//usr/lib/python3.11/site-packages/ansible/plugins/test/__pycache__//usr/lib/python3.11/site-packages/ansible/plugins/vars//usr/lib/python3.11/site-packages/ansible/plugins/vars/__pycache__//usr/lib/python3.11/site-packages/ansible/template//usr/lib/python3.11/site-packages/ansible/template/__pycache__//usr/lib/python3.11/site-packages/ansible/utils//usr/lib/python3.11/site-packages/ansible/utils/__pycache__//usr/lib/python3.11/site-packages/ansible/utils/collection_loader//usr/lib/python3.11/site-packages/ansible/utils/collection_loader/__pycache__//usr/lib/python3.11/site-packages/ansible/vars//usr/lib/python3.11/site-packages/ansible/vars/__pycache__//usr/lib/python3.11/site-packages/ansible_core-2.18.3.dist-info//usr/share//usr/share/ansible//usr/share/ansible/plugins//usr/share/doc/packages//usr/share/doc/packages/ansible-core//usr/share/licenses//usr/share/licenses/ansible-core//usr/share/man/man1/-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:40309/SUSE_SLE-15-SP4_Update/266bc4906ef7e62b11cebb3fdd36b357-ansible-core.SUSE_SLE-15-SP4_Updatedrpmxz5noarch-suse-linux   directoryPython script, ASCII text executableemptyASCII textASCII text, with very long linesC++ source, ASCII textPython script, UTF-8 Unicode text executableUTF-8 Unicode textPython script, ASCII text executable, with very long linesASCII text, with CRLF line terminatorstroff or preprocessor input, UTF-8 Unicode text (gzip compressed data, max compression, from Unix)troff or preprocessor input, UTF-8 Unicode text, with very long lines (gzip compressed data, max compression, from Unix)  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR~ Tsu[eansible-documentationutf-865ee12c9a55fbbaf9a62bfeb015c1de92ea544fb137a2ca249ad6ee3be3d3eeb?7zXZ !t/;]"k%d/ ( G;ej?XD6.>6`3t4fa3onƕx:eʳRÉ ݫ~!E[TuVh[-* Yv*x{_hw:K}S'$m7b 75D}Q{~\u:1gvAeQXNDFQڹw >Txfbo1ICUy匪ElS1*Q?mEî13[)`:K"KYOA9?w( 陾+${mnk$ZXVKex/Nf\vU/#Q^pIң&DĞ|* B- iyxYx 8>qkIj& -r, !ui¸j61oQó (͋PDX~d" 0\6ѻ'xZQh(juD6x"~$2O/?X*p4f3h)\ N\H]`1,:*/v 3¡@K.Bބꕲ7;!-أU <;ԭ , 6Uwa|^uEOu<=ݘĿ'I(oEz-+w&TzWW!R1!zjPmm2('܎mVbb٩(<S [_")np+ Dk/}'VĨ{Ew@Ɠg/AjsO,.p쾳!J4\-?jfrEm]r0)xjf$]o=Hcqi|理; A 䈖Nhg("xC痮N =2qAшCR_r !B3#Ͳ:d̴Vpsϳ6sbG׆J䑆<}H#4[DQDw~!=E!EF.}43o91T#4[OD;I蓁蔗c/W5K n3BEdr}BZּiRq[x*JEjjV;> h!y;qGF.'-|SdBUeMT߉OТ.@kI]W$K?R|tBIfL⮄.} ?X BooXΔME<C4dpJ j83b?K>gdL-8G?yS)xUy#{~=F9txɭ: c:d9_-&>DooH7P(iĥmlxŸe888|:=DdNB_fG}r1/ 1`*ecۂJ<{ Jj!!YoMQ;uej8zka1%=LHeΊL7MaHޘH=::{mK4-LUF Xe! r0qj"qxiStD^'ly^ܿWt֡u$AVN$3dF[ qF=vP=Ǔd n: YtMLs%0 /wDC%-\r\eϟ3=0K}'KWgԩspA. vPL{}$V4μc3<Nd7dQ*d,lti[w=zI}Q71Ix֎4gÍOH*xL EZ@ysɗ+:QF+s}YD9%//e'fֹPm1a$ RZ A\h @!M&BJPp 9o1x5l}xQE ÌnVG>v)18W9 Ì\PcoA{v=zT s W\ ˻,e !La͜tHVk?U=owU¨niF,h6Ff8K* r7X4[+kPdx<,{r!;V>fk.AfI><*g֛ͷn|(9gr_ɟ8G20ۍN}kh?wPjox 9I#Ku/,MyF#w}{'8t6'^bPsY?V g <.f+\iàOpOXEs}tzo1GX}gmě΃f? i[: arθ \s C&#aL|Lq.gEZwk"B62`"Dҹ7n-12/"pP6տȝ;ӣXB6 ,,h8&C4LdMb8 QȽcB~?D+:8VD-Eh,٪PՍiP,}j */~ԱFGyW^0!dZ@u2l|Tbi:x ܠy[Dy1:Ic5P I9 7JOz(T848./@ &0]%'͎g-pA?iRSL3E "_AG\ 1 j jƹ$Wă޻҄@ 6IzO?ob^>}@4DS9Ə;O_6  3*$THtc"b!BȅDKx̜}hgaQPY`ʒC)MoXn&i=c rÖQ- *< N xVE_lM2A& 6svW1ьjݵ8x%viO CBK9Gx*Ƙ{i q6;gclx3gg4L!9UT ]Y#1˛=(d&ᴺ|1(7pyʩcItS}'Ćz FfIꪙ.D>x0WD x&(9y٤W+/?ILf8qo,ɲkB:;tqga5,4&ƒ1P=t>fD -\RPw3N2%%[.<[zro}rZeiXW챖6ڱD`>K ZEǗ:RߎkrtD8:Jkʾ=EԽrN(# >RيbI6ʼRĽjKpcB.ub(6}`9NvR%CvBc_P($'I m;npddj"Re(q cpNI4o?&f#LLiI7a(Q¼7 {s˼QNŧ.s u8kˆ uG`q {Y.)?p`(Fz)3%<NKX,'Y\I)9Bq7ۙ{cBQ(zfZK'8 6EgNX={HF]{t)t+>n**L=?4PJjiq !Q78FOJU}uYҲY>* cT?y9iNk*tn}E D&CL{ 1Cfe\-#UPbk*[xqԔ32$Z՗@ EHΚNYiA ,@0_ z}yA<5<ʈ7] ElUZSe W֥//sUrL;y͆؈Z^E4ّ6ҶyRci="jY.&wENp^c+O<o>m4yv N5bX r?}u]0o*5^k5 ~p5 kPB+cߝ~I 0) W!k.Lc)\0VFBxV?4?-a# IAڟSׯ}cZNhgHRp-0ܽZ"d}<zDUObH1=v/, \P:Krajl99Z~wYiaw\h|%Puy*Nzz,?YM_aP8xBNyipH}q{3{M?ұ/1UU$?4qyobzJ02Eso?l8~!ap 96Xj62b_4k:80pZzC=p!MsA0yךK ˭?+$dNn7?^X̚ fW= "T3VQ{w)OjgDa#*y ~W3=M_9&(ɞ1TJ)|__sT~29!c޼=1 0̃bG2,[C>]] oBL`[I-ˁEL9َ~ZjfHG {5s'ƫ2=B 6ZE"Dv31Z=9|/>5dsq{-$՛r<0XaLLk,SRd\35 `a; J%&ΦKH}qyXG*TRn vsC{zT:jJiLsI}9L,ӹG4swЂ r%B5?Kiy? T,y ?F bq<+AZi)AiV*,ycu^'XΖFkMN4BWftbh{ݸẀA-}ӦOCLBrGs ~=Kb=Jd@zNG$)h#ٱdJZB%*F*\)sC0w]GM'*`EZqgJ ^ĆkR[Regp^ K^t_PJz5,;'H!yr's ] Յv1%;d^32z+5:UVǡZ3sH e?؇h'1bΣrۂi;+)&pc *z`R#*`N,O tuID&I"kn$iI2 6Ӝat1~v^]hQ} \v$7) CɓгB݃?T hpzI85KPSɾA]%Fz i& cMZ淋, N^WVx[F?V4,_[o 'P.?x)JujMV/=*ЌR5b*ֿův5W{Fv14_ *V$2 ~7D/'{ޜ=Ru*f~NO!eL"'ZLƙwE5(x}&OFUlu-NN+ZnRoll ν_wmhŠRK:_uR7+8F.fŻy`+{?UHYcGxCj_WE ϫ:9p,e̺:dzP&jJ(-V '#3>Ekm5rm:Fٓv6pa!8LP8s6`|2ʊW೜p~5g{YTmuE>9vLRAY+ҽⵅgȫͨ>}1k:@zn6s; jWkvy^W{%I[iPk5[ZUXԜ;u4$&հVJ~=O]wfB"T5MĢUAÓQ4!sxґ)gK*4,ЃݟU y~S eu[]ZO>&e0ݦ?TYf2l:VAD)JEN+S&L~~HLr^$oIzXH%/OH Y 7Vp/:=s|HAW3ҝ M:k$*yKyeabhR0CٿDU*<ײpTztD܀4&_?s}``Hz䱥(~E2L8pUfI8A? 9 !EiW׳k axqwL|>ך5lAĨͰjqc/(\Kq`~rb,1A_XY:EXēzF>9OMdƷ ;ՋYH}.ަ]BO͹:Vxf(hW:Uc'>Em.hOe(} oO99 ͼe YI' 6F> 5Üztݨźv~(,l/VJxu/m>GC8}1:@g$/)ƓՊ'7e* n)T[~*HZ&є[`3&fe7K xr#K-"$".WxfH ypm@Zºmz+AMsz~ =7 89@c"tC/pJe|Dw78nsUډ!D=:+ʍMZga &N?N`D8.n0q];rF^cu銏(dcǝ(P+^`(>6{5wCh䯑j#aM/0`XZ \݅ uixS!ViA8sb9A cc(i4|$bN%EÕ+G~Ah1 *+^56xm^NKV6½ JR $fI H-W_dptZPZql^Zca ISYa(P`8ov`Q Ʀo:#粧k cv cleHia/0=TgPJ+%_V IVc}/|Yꗋ4J"~ZL m$;5,2JgVU6WDT 4{5wzɚ*sz/@[s  Y6!)csX=Ջlb[&aߍQYPffI82h :qL`o 6GdW̚´ihu ל:BCF~[K_Í:%k44c68CY=!i%6Pp5~.k5NweT7ڼ6S܀x_C:-f 80Z /*g$q9`qb r'eTFvnj1RL[}"1dg}}qbxo#bA% lQ(*iG VdF" C SׄEsA&f S/~L~[<;懎 G3KUƊ(v7kME!U8nޭE.5Y .:}Сp ^d," ̮4Vz_lu&6oŴ4?;+\q BoV*c<[ToiW"R&c#*&?_&'H))P̊X|աqVX'ֈv+Ҟĥ>,im|JT,һDk>ëuI _M:9]x ) n> *jI_Q$aw݃ kCc|aѭRD3o/(#6҂f[Pӿ[,7󞳓x5}iwNjs9n8D4!{<&Dt~ϯ5}(_Hak6x?crn2:ltP GKFnvg|΍i:̉9F $C:JqETE^˺-=槴|ucpUKv9 8Ktjh]?y簦ٵO 7vaz8S) 1n'_AEaG{ෟZ>cw6_(!EA'֯&=i3pDgq) );l(ki}Iw_'Aq鑓C[~tK r_0ڌHT}lzz#ɓ+%@Uq :KVDטj%i?tkX9AWF fȍoDWBd^J ""qƦ~ڦ?=w%vfKdR$݂Wk9Zkk.+' rq)M5e2 (o:6C7?g*}*m[P^H *SfSAG-TzFu鲨VFVzPqWc_tq-A]#!^b_KACEVXDCQ+hY ˣy"W#@oElR~Z]2/Aܡ;uB D4v~ wzδ>#ŔQy5rŞfL &m7N(^Cӓ|kVPXXbmC;UnU5LJϏ:vC jy'h+is*GSmSV~Z`崂nIU¨>koN>!qfFmiO-iӇL xv!`d c|Rɬ̀ҚPgq֐]ƜqsfH@rV?nMI*kϪs`M ^jI^~+QD%Ƕv!a ?eRtң'LhxW)94!vGڷoy"#BԆS%e|dd V7B{A!O^2YU6q^S, n[ J:D3FO=J737&.yBꞥκYZ;(U(]x鑯ɘM 9\ 0OP]Rߪ^"a=ʯt*W,.,ޖ4 ԅ(mZ=]taGտSr[_& JĢX0%H啡vue20:QN{apa[[c,9O#qU[=$OyiJUH8jV?AypYEyKEU)Qk!?&mxBGȍ\in_tYU(2m%J"QG%칰S쉙ʒjo'ɞ.}1#E8p̏(8bI Kd@C0Cq^oúm4ee%Sv-&,)ZElzl8ZX\ HBYc3et}?_T*]/DŽdHGxCxV.Y(n=5A[iTMhc(;ȡ6,2ZMҧ_+ǾU;mrUTcsFqCa#^lÎ~!!y&Me7O)vחĎF|M!+$Lx$V@mhuo㨤!9QNkψڦݷFćlŗQl}u!;%!~ʢ?*n;=δ3j$(}i*-i=[/O=?=o++NU4oRAJ\5JONoycЙI}E-6kǵȊ7Ӎԁ*ZO[iߙ-O)0@{\$Y5^6Aj4ww}ԙ&0('VYӛKJAQ\<A(dJʵT9% c}W-೎C40wOD/iAK^~s< *q6YxD$/=|VR](icu^wl݄x3mO +?9r"9^c'RV @6TR2;(sށKy UJTT.בNɩxi̇Lvn7<@ڽ秜g5}oXh'A)4$M̏wlp"{%Kt7_$LH3hL|=!myWXgV^,?D@+NpHxrG:4: Mn7SÊA:gis=vŠc_LH{F`3%+@*ՎsO,_^x  YZ