llvm17-devel-17.0.6-bp155.5.1<>,_gF,bI%z ^.hNֲWmI DpQUw%#r(X\Ƽ`&CFH?F8d  6 'G]cl!8 1 A ` J R4r~l..2.(89D:>@F G HI(X0Y0\0]P^sb9cdefluvlwlx%8yE5zEEEEF4Cllvm17-devel17.0.6bp155.5.1Header Files for LLVMThis package contains library and header files needed to develop new native programs that use the LLVM infrastructure.gF,bs390zl27/SUSE Linux Enterprise 15openSUSEApache-2.0 WITH LLVM-exception AND NCSAhttp://bugs.opensuse.orgDevelopment/Libraries/C and C++https://www.llvm.org/linuxs390x'h  3 t ڧ  &($% /X{ u u4PH44m*bl.Hw9s R S&Xv F ]=;&d8r D& " ~b ~; "M|$ :BX1# e  9B6? n3 \$(( i'r %si7e3KQ Q& I di D  0  #9Q ]:E862JO" F3 s VIWr5?    `ZQ* ^!8&YU +> F#id[a U#k)vf [/R9. PR:<bVEeq` g c ;' 2 fN-) ~ 4A[/ ! Zvܠ m G '} Fd)+,6!>D%z&c&I-/f\. & '&qoEoP+ 5?9 V!RW ]%q*",B O :zT &9Hu<+6R7`k5 5c&#/N?5G?"3 #N>P%w gms 1>-H/  " > Yj#  Fn%L&IWw Bo tH  `xMf I_`uT ( 2n+E XAj *#'}o5t +g .(CB r dA~ U z dG07-^ $s[d8 ^ 2#R4/{' '$  ! [0; k-\WD +wE v)5!$ $WOH8ZvdW(9&dmex ,cHmQ \(tja D lj5p'rf T \L J[ *N #/w  _ ,:&8 =uQrAm<Z@xM=$x  |)GgQTi5+k08{iH% &i(8p3+c{WR9_|C"n  4, 2/ J "!4MQ7S -V* $.Js) ?a&n/ |$ w *q5h!u;s$>a)l S-@!@% %  *o3j}6# )8 d dn4S|XRzL 0  C L"c &}VhD?8s"4zs)i{s"0W[+{4cNnKF .>}(?G9OQs] (;E,Y: J H:%?*T,.,tyG 4%q3?i / j "2/TS x/"g)qI%8 $ bG .N? ey&0  T  % FdZE% OSTf /$?aVMhPf *$%Jl'/+W].}Q<rDc ] m +8#Z     ( K E@G HB3E. jN d J r : ^4SU` _Q3A:l%SX >" .> $T9 5$}!S 8:o'&B ;S#' T G&gL,6*/ s(V0!c$bj 5RW C83Bw> e G3JN& $S]VV.CU\ &f $i[1)+b(X nryZ z y3,!L 5Y%2ryn6XV 19#66- { 7& 6<'a>mkrq5 <$W!E/   }_C +.>!#&NW'G?&]"%,5 ( zz J NATzflL/ l j% ( $ ;=m ? ,Z vlB $k:f I# 90L4Q&v R("S? ;-P-HDfb@Sq!VC!*"k v,$:G_R{7 ts !0Vu{7"dcU>E1 ,&% A  !L,G *i!@$kkn( T ] w (),9 t $  B," *"S7Qb!4#U%lI{i[5kG81ric L] jX)~8x ! ) V }yp3 5Pz@, H!/)LE S <^,&Y jl/R   7C D/ )B\'!T -(/+/V" zMo%T1 C\DHQ ItR 5    :j xsr4Qo14qx&=9d"b  3;%0AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤AA큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤gF'+gEзgF'*gF'+eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF')eeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLgF'+eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgEgF')eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF')eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF')eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'+gE0gE0gE0gE0gE0gE0gE0gE0gF'*eeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLgF')eeLeeLeeLgF'*gF'*eeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*gF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLgF'*eeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLgF')eeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF')eeLgF')gF')eeLgF')eeLgF')eeLgF'+gEgEeeLgF'+gEgEeeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLgF'+eeLeeLeeLeeLeeLeeLgEeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgEgEeeLeeLeeLgEeeLgEeeLgEeeLgEeeLgEeeLgEeeLeeLgEeeLgEeeLgEeeLgEeeLgEgEeeLeeLeeLgEgEeeLeeLgEeeLeeLgEeeLgEeeLgEeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLgF')eeLeeLgF'*eeLeeLeeLgF'*eeLeeLeeLeeLgF'*eeLeeLeeLeeLgF'*eeLeeLeeLgF'*eeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*gF'*eeLeeLeeLeeLgF'*eeLeeLgF'*eeLeeLeeLeeLgF'*eeLeeLgF'*eeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLgF'*gF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'+eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgEweeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgE`eeLeeLgF')eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF')gF')eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgEeeLeeLeeLeeLeeLgF')eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'+eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgEeeLeeLgEweeLeeLgF'*gF'*eeLeeLgF'*eeLgF'*eeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF')gF')eeLgF')eeLgF')gF')eeLeeLgF')eeLeeLeeLeeLeeLgF')eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF')eeLeeLgF')eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF')eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF')eeLeeLeeLeeLeeLeeLgF'*eeLeeLgF'*eeLgF'*eeLeeLeeLgF'*eeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgF'2gF'2gEweeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLeeLgEweeLeeLeeLeeLgE`gE`gE`eeLgF'2gE|eeLeeLeeLeeLgEweeLeeLeeLeeLgF'(gF'gF'gF'(gF,(eeLeeLgF'1gF'1482a4f7ba825069344e4e25380efebda66c3ed5694d6533bcc99abcce4dce2a3fe0a2339a621bfece1b06e813a853be432583b4693f12cf18faee93d7b58a35fbb3805c5c657bfeee4cf2254dc696b73ae0036a6ecc2c36fb027cb34f2c4652e42a37dc1e08716d41ba49f1101fea092df87d3132d4ac9b5377869241dc17be8efb0e77bbeea499bcde27f08e88aab8bf579b9562dd85f5032d7f5baf1f56543062d18f2baf76c75a10bb06b94e013b96b80b3aa2d38671174cf0f6169f1e7f304b2298c500ce5a73dd9ff588594296d9f49ce3ec275d268c67207f6b1a3cef7443a1142ba0ec4bf930b07b593ad95208ae954b7eb936894300ead8729770be79a75988ceec69548761951197a592c2fb1a5d8d8376e48dcc42ae099005ca759dc0131614ca423510877f1605ae79cc33e3c02bed067e021cf7f46576643c7aee5ec07395ffffaa8e4ff779f8fb3727bc465a5b3ac427bd734a4ff5254ba132bb74f03d648988a2ef87a4fa138dfcb956ba61b92efd8cafb2f627909aa5390bf396e2b569d09f2d5c6496b944a150e0c6b203bb1e801dafa77a867e19b7e5e9db6bccd5eb3602effbb5eaa10b7ac689d07ef6fc39c9dd28d455dc491168c7c2826204056226f5716e260a82b49f70a0b80f384d10535fb945e4f4e80bbd121fb2fdcf3619c57d9cd7916ae1530045e4c85866613daf44759807dada94449f8571c42f76f105c010ee5e0a5a0736aa44a8ef9ace086fd671cdd2617208183c4682c36bd2a9e3b6b91a572df059c91d3be29b5260af54a0e910073c3a24c0a2e2757763b783c583a8088b81ce4713d317296d0853e866488e9838e5317908ba8526884a9dd5dea47c8f2f24dfd128c30386759db3a2426e2ca2c066fa418efed311d4ba5f7309ab339fbebc45f450fc7a0cd0cbbaa9e82e1cfcd6dfd528845040d0fa4ed35623bfda2652b9e9688577e33d8c23a7196c5dacf8fdece67d2fdfe098f4595fd831557ea13d73a311995b21f9c01cb8095e7f6cc39bbe48af9166f0c2de85db306cdf6a2caf1790b30c9130bf6f1b5078902d65f9af1e9ffe8d843b885795c3910155218473b79bccf42d85b4a17e5dbaaeec5afb8f94a8d1974ddb0929cdddf7e61bc522feefb6db5f0086407d6dc07345290169c72170e58684229fbbb1da352df793703e6579bafc5541d6c9f4e752af4330dfc82ce2bd76e8bf07434f39bfb354e634d8dad5021a37bccf7213fa1a4eff98f7c480bd3c18002752f763c827d0da50135aa9fe846896554c0307b7b75d3edef9614cf0636daed17e9fc2f15bf371966799309ddaf3510b0dae412d52ed7093adab2369c2aea61e31c5d7cb32377840c4756ef15a0f368db41d6e9175fec5e7e8e5ae00ac9e33c7d77c30c7588df8140e38107b58c76cba56b74396ba9ff4c7a1a8c1eef8be39703b5c7460c01ea91b09053b91ba1e22629beb7c7ed4d0b9ae4a817149b07c78b380f42ca0a170c6fc4e782a57932aa408af93c65a6d95e7ac490bee344120b7c5d8fbc71d900bf7e5601bebbcae22f96bf817098ba55f729e87bb857857beae0154f0bd96a5167a70c8fd7328c34e1239f76eb96134d9e0e62fbbdabd1409f1880478e00d5ec0ac391038ebe8c6b7db0e5fb70c25b3c0b2a58c71e734a027a94b3ea20a9e7ae4a27972f56be271e5ca18f9e451642ceec54ea7e7d1a0af7ff3c3d7c905583eabb5b7ad358f0e6ffd9afcb908d67c880c098b4e45e05ca3d349ca3f94d15afce7c97ae9f26fafefd07573e402836d047a4b64bd15b5830cc638d024bfc6b4a349b1e17dfb37fd6f088e42b767a97aa8688f604c9e7145c839b29fb2fc4d901279a36cc13da92eb70d39f37b0b05f82eede1ea6adf37f1dd96a69c0465e81c725037027d0f5bccf015a85ca145ca57e0a20931d5a5c222c78270fea03c59c35804f63ff28c2aa52635b35a2c10ba27b2fa4ab929b67a5e683ad15d70a9ca99f7a50efae129173fdb815ece8419b3bf0cc3db1e3cb0ba8cc9c76d097d07da9faa61fbae771339293ec3fa6b976189485ed688609460f73cab7e749cd01662de5aa6857010b9cf645bba6f3ce90a788162630d1a2e7819742c877342db5cd3e378b234e82da9d30dd3603ffb0c297b840fb345a53950485b69d1bc22ff59f3958d547a9eed465d55bf89445d228cb78d075875b390f249c8a6bf5abce118a5a786aa4b10b3e342cd031e1c8cadacdf54978e95da952d8dfa9ae3e1f0746496134786da6dd02b0ecaef93fcd76a72610dc34cd10cb9b6188f0f03eca64606fe0501f55abfc295fe498a2139dbc1c0295ea7364bd1ae1c3c6c090fba38c3c8a48a62893cbe9cbd7a7d8db90c48db1bb6edb2a3532ebf6c510475e254a91aeae840c9b12ba058c9ca7935372354f5f0877e06e3cb3eab71a53e54870d12d6618585a426f0005fb1032817d170abd6953a63e0c05e951773211d8e76483f584c729bb898572298441e1171448f82db5f6f44d9df0533168793871999da733a717c9d684a5049d13e108a762aa7cc7b2d999abb841ca533c6e60cbdaaed59d683661b5f68bc1bef9cb78d159dbc3ebe67f0d5f6ba42693f418ca9aab8417c9971177d3da960cdc34ba3fb55e547553e0ff5ea52e5b67358ca26e01353e3e9a82844aad818de3d72d8b0ace25a90b153bf1bbc73982d631b42b99f5f012b9c515fdcaa91ace8f4c55dccb14d2842d806c2af3d3d6910139b61375bf7ab3d6e8984f09102bb3b854d5dd69a80b1357c4c8cbcbb98a27bd3d293532fce2e687a4192b7ee834fe6bd0f0f22330827af9da348c69dc9662e533ed5c5ffed49834a77b281c0ad177c66c783bfabce8582cb5ee600951ac0b3cc6c90b9cd0b469a93b642712dc90dfa9d1b129f3729836721734d1e762b0c9d6248d890c6c396c266c415570b1d1f68196159141d4940f1a5533bdefeec5add1bd99ea0fc33c14023c2887f80349ccf153ed0211634624d716128b0cd91177e74dfdef95a2985407ee6d29221a07e714af2aa5055fcfce11da61a518489a040bf0a7678a85331b2e69b6a018b961d427b9be27b5240eab04666083903376c1f0d85129df0765b5a7cda18cc0336d7e21059086254ab4b03e47d62691c96926624208304c281a654bebb7c1b9a0e42a6cd9f15c2ee48a21b2ec6c5f5d2ab753fb8644c62aed85c07dd3b001195a6ffb22aff7391e5493a95ed32a4569dad0433ece8b9b4daeea6b29176a64b01f23498ff10be3d155b0aa804b9454cd6bf9adba9af2621a8de5490c756d0ef3499020623635094742d47d22c81b5ba5180d2bd53a53a4ae36bbcec2b70e9f791290dfa03927973811b14743f15076244a64aa101d58a8ea5028cd2cae9061c906d7e39f0390d0ca4c9971246b48c0bee2f3bc043bd8fab3df6c88585eb7d416932a7d7611d989d333b5229985372a0c829cf68a1f65d16ce2449b42b0dce6120fd2c5b5df9499be8fd4ef98abd94870da54cd801eefb25fde13521c09944d8d867d96e76602347dc7a1626b2ab92ec790e75cad9734a343e23770ea407bb73cc39121f987aa00190bfd32d3bdf44b78a84632641dc54c4965dfc64b0561eaceb5949e55fdcf056efc29c043d7987c42e5ecff7161fafe9cddfa2fb19ff961b186af6fa53807a502b4b815bef6c789ff83c561ac3fd0ffc5c858bb4cba9f771d9c90da2c95acb069422f37c5c4d16bcc2b454b62b96596cfbaf42aed1edf172d4a3b83ad759c04ebbd8dfdce4db199491d5e8b101aedb18a92f5737ca48572f1945f8e5775ebf15b14c8d2aa57dee7577817842ab7e2267bf3d526fcd6ed0e916ed1dc59252f244e8a7005a7e55956da363279caf48aa41a5d25cc4e2492cd4b13c9fb5abc28bbf4f24d18fa8975822011193e0c6a9c8c4d647cfeecb2d256cae1b84199c66301ef8808852aea078f3f8babdd2e1f1035ac12ccd1687965418cd09f812b3201436e76896aa3e18bae02a9c600c99dac86f2e2ed91641dcfd85700aee0bfab210ff3c25e7a137d3b31b29ba89c957b3a10c6f25e6be053deff2b53689435d88869cca47b06183d213602a299fc76b73941af41fcf0c2a07ca9f3b4a4abf0159437636e93d399a8d59d240a5dfc296a69d0c1b6f0f1f33a54c1005d1f7557c9509d370cf2a09dc9c07d157e9ad0a6e0619b60fff1738c5d94ec7e8ffb3b68a39dc14f94d153cc8f05a4ebbc1c7ba206bbf397ed6a70e35e9667d1e5d4b61ff78d9cac49e0998d61dba6f51abfbca2ab211e1ae7ea6b9f9434b0f7d0baad29c5d0ce41a03c65d6b2c917dfb5cd81856b9006e16928ece8411eb5a275b6642da1a87d7138e4893fe4f8193daf1c5d7fcd06fc5f0ae7721f59329d0dc0b5ea3fc2d98f985f0ced6899a43d36ec6aac09c734f9123856d98bbc1a7e134c212a9e04c1590211c7b9da3f34043f7e32ed2a518fabb4608e3614a693f881dda112569f1048080cd5e025cc823d1e280e11c00312642614ebd338d421d39428810b1c1591200e8eb46673c4852985556231623dff9704b469fa3b4fd88943ef365d707cde3c84f49f1d84f891a6015da000141d3a3e75fa79a0cc0275ac2c2735fe7c3363608c74e6fdcb7a5f0bd5cf512596e7b5352b791666f8b0c1994d51c3506ffe60e46765d90515f21cae56540e8ab025c3d0cd832bb0b1bc801b8eaee5890012dcee45b9e17a7ca9c2d2380fc7755a15b52f452cba41e404868dc2f5b39cb45974f6381cb5d730a288588df0e3ae907aab4cd38fc88101eea02238ff172cefc17d3824dcbcc83dc2ed27adce8df58cda2deb59899550307508f9a4705bc11ba6ba1e810a57374e38de3db132d85db3eb6610b0e1eae111804aefd57524cbdb35345a43c7954707df461785ab9d212a4a3a1b29145e9ba628c3e5c28889e8fced28ec37a3799cadfdeb2dc27a2ca41b8a6d5be081fed5e82ab4f8a1d9e96d1742f6b0846b7da1915f73d2542e055a9271f064095861b427018dc8a7e1e33d484b120ab457e9390eff5f860c2541796e83401c72df3a4a5a6b6c1c9963f1fad52d27b5a52fbac14326cd339cb7c9d655b921241c7fd4250a3a63109367631cbc496ff6ba9ad3d4dc0bff147467677bdd616d2d712006d22d57457d1122421b4138ef55b4cabb15beb22180c0fc19bc47c499c40d3f17ab1f3222d965a2c8f19d61fddfb715390f8c47b30be670a2f5006ad4a93f88e8e32570b143a550d10c45f7b747ada940df61bd81493efb2673f76cb62ded6241a83a2dcfbca5d11e7e8053ac319cc9289a0a6e7dbe2cfebf97a03b0336d53fde33e20c2adf2a3045e0dd1793685359334aff03f37951ad8fdb8d5bfb30344c25b3532d6d1f1e5f37a700c8b14e8e6436ea919e412085f9a633814a70c83adca608d81180ec4821b800503ffc15bd198b38af59673425e2d4b36a85d7bc0a5e596a9930ef54d73457e2f89c1e0b4f57bf6fec8316acaef36b11f22458c074a342627ccc4606a2fcd6c697dc81e2d0f7004d4676478f00bf5684d6031ca517e399c5bde82d2e73379b927a2be4e639273668b32c25edf036de5601faa36ca5391061bd6f8de83a3d640908cb04100247f58287f2b72b5d943baff781b3ecdf7a300812ad95061c6575e7d066f8308f3a13ff8287960c04cae2fb6b90e44b4454e6ea58d524d4e33a22c542e7a78eb5c2bd8be213190955bc0b6de602f9a10b346d860068b6ace291cb6e05921aa29c7ef7f154a73347f71c8ec50e5646fa6fdeb1af87fff80cef453de225c3ee0b4c5fa65181d9250a16bf3770318a5192da92a53accbb2ed1db4f86ff1c27161c14343742c6488bd99c04864b687146a84cd564ec891be104679c61c1c3ddf856bfd6a3ee50be114458140a4bd01fc0ef4ecf169fc461df32996f7ea95216234d67d618b5e0759213586e0463a4381aeeb1e8981730ef81340df165fb1740def073650aa981bab6ac6275d0296e4b4eb890413a541807b879ca918ffe96c3075a70bcea0d8891ea79bd04e8a98185d0f77504ce017ee9165d325947626401b1e8b930402feb92c8ad541193a678a668447a8b46489378513e3699313bd42aed39e1be5765240f10db2a53b0ebdb6da34c67b2641b17f14bf212c68358c1fce91812465ebe60fd224af8afdbf7400fb52f833db733ac29019fc7fec51cd1fed33ce4de0d75bd81aca443e02e58d47cc03d0e56684402ec7fbef1ae083c1919d0d8962a88b6515171fe3f1453d37909671fdc623fba25af4b0b9724588d82b48edac0e15a5d23f8bfe1cd729eb8fbdab52f56d3b9a9acb80c1b42285c5565f29ae34b547ea63f4b84c770d4f5fb257beca5a4020e02561fb2de2b5dc792c77c5d7e40b17ef6531f621e12570d52628e0dd9b696b29d9442dac76dfa8aaaf5d3113cb85471f3edd54378efe768f3ae049c883315d42fdc7b2963ed9c37ff951623e1372cb72bd09f5aa288e481f759bb023aa549dffc801cd03fbe0f88d7f30cdaa1b4975c1c47cb982b849ac0e3b88af7f48582cee2cb8e7f34f2ea52dad01334e8e26f372387bb2f97de5dc37d359dee09ab9e1ac990b638be3b4a0597246161d96662c2c6a8fe9980a8ae4c31f599daa9f351b53f94b9da1fefd1fd81110aef73e4a208e774772c8a552e2d2fd71463c297fb42d1e721e97a9137c38fdbcb79788c7ff8e7ac594a435c70c306cae911b0b65a0ec43b28811ce0ba12cb7f43be9badf218017b8114a46b55a7aef7ea183150c8fe8a8cfbf0cbcec5b0229d93605620519f171df156590e52006a02adf37d42eb2354dbb8a67b53bf69aade9ea454fe99b058da2d76b604e91df26b61c203d61663c389868bb840dcbbb3cf6d71276e80974a17d5ba9ed139fbd10895866a083d1eb8a2c910bff5499ddad28ddad37cc0c384dd94995126ba21774c565ecd8667bef265cd18bf8631f391f26de14323faeb6a249debcb3838c38f5ab12b1a79abc8d23d35b3275ce18aa79fcd6fb6c406246fa6951dc1c79253abc7a2ca029fc8a758fb1db0dd7cd20577f14f00b444dbab052862562039ef12034379410d3e79d192baa93eb0a51c2ee84d3589e189c046964155b05c4a311c014d2a3fa0bbac45b18183377ad16d7799a2330126e4ee7d05d3f0b5522bc1b4d25b173ca06cc3aea3a97be11fac4242b66e9edc209e00b346bb9eb9b23a606cf0f9ec5e4c14bfbc6086b3cb379dee38b38eea019edde85d0a1d68807df677b61ab54f05f1f0eda014aaa9b134bd68bccb60855eb155fd36fe00fe875483bf01d7e2c198466c33274d899964247da9be0d35bdf785cd90e54acba21ade1eb1a9548435e6b42028335e1c418f70010b6086e9e463741b73c78369d5d9a873f37e144ab75567a8c08f2b90404a02da63310e692b8c09d97a8c29008e93fb1df7b2d55c0e2d7282b5e4aa563c513680a9721788a76eae9244922f2ef13f278464a1f49e91ffedff8dfe251b5c6749b164db122c0ea5fba57ceb603f8460136fe7c1386c46e54fbf2acd75dc4414264c0c621679a0404f47153d32c2042e1ae4b63bf2f2f194f99ed0728e05e18e6ac1c80f2161b5dff79b0edccf3bf35e11c7e10df6509d46bc06719b00d0bc040c21bffbcecd408c6cd4ff8bf84eeebb858be02f7b84f87b4060ae888ae3cdb7d4af749e29a979c2f2dbb3c01a206d2fc0bfb669d6d0de66a1e53a66fbb67b37d1923fd69620292d10d87b746eb70a0444aee364bd193f86d95410e1b949f436a345ce11f32aac595132899011bbc351022ef6b63603c65caa24c2bb6c7b1590d9cfd45a187baf466c729bf799149341d34d829bf541f79007650a229240d316ed48183d141f31cb6b521991a30b036a338dc05eb297e1606c51fe539742beea5681c04f032be669846a6282da246b8d5aba1bcb3e1731c3ff06e4d137ec077d4c75f77551d8d4cffd42ea83f56c90ecfe137b1dc38ec3072452a83eb74d2ab53d7bf83605bb05242816c8f9278d8a4e8e102c00f5b16c78c7cacef44d961a0795e661da2b9e29763ab6215defe622f911ff9b5f9a8525a6cce831bb7b2dc4e0c2679bc93d7bc149c38e10c0ef4c2b1392e879de23ce18704a7c55bd0baa2477e7099ed65a3a1ef0498b21a12618bb3655ecc4989aedbe8cb5a721360cb743a19808ea1979bebf0bb8534d13de4e81af694c56c446d751de4b0f1531b4d972625ba181532d62a0e323dbe0357a58e071f516631701caa62ee657f5ff207910593df70f192d7f738676516ebba78b6c2a8cfa89ec6f312d5f01977108395d4d9d99d0bac2847e54d1ace0c89d5849180c344ba69334c16da9cc908485c356335747c2cd73b1986fb18d7d78f512939409a7c7ad2d2d5c0a354045e0df622ce42d4b8cbf11f5f5152ee9f0fa56c8a9e540a89a69aa37db17297082d6eb5c4c50b4cee42e33e20e31352ba90baf9975d55869559f0c8fbf0296a9ecde32f4e29ed31ee688d10f677c3d39c3fd7f32ec8db3c9db190f785ddd386b924d21b8e6d78c7256bd1c821b44b249c3bee138752a5af288c184705fc8d436fdbeb678394a88f361c6759ed2e8c239c5c9ad6b39b79f5f4a3a62487248537e700447221200e6f8c6c9c34a5386cf4c801570d9228a2db7246fed4bba1b8016a9d1b8e8061b391a16679a7e92b1a1f09388597204d13be43154d0d23671a50e6f1a1cb41090228e65a9822bf176a249279a0579f704452e746a403598e4e5db884f7fac9fd207ec30f2351893cb2e0834d07009ee3f143197f381ad87f1b9c0d05b97e834f6caa6f5af4afc016b331c6beb407133f71c01882dbf93ba2387e8b1104f45115dd562c43c1b2abcce971b3c68bb7b9302fdb0218137b29bf9a883f9f027ba6d8a437c3fc82199d6e759ec3199b409b89ec1cb1c8ac5ff4f0415830a3cb652da68b0c77b911ebf8ff8a14d72e6b78a93156c3fa1f422e416ee0b922ac554e63ee173ea3467475a95ec8b26caad9f55aacfa5117246697d068fe2c31b43eca9a527444c3f2f1a0ba8830710701cc268f9a104835bfb14663a839ad8325cb735c8738a7add241f00e7e9c8b5dbd153377ef688b8002f0c77702d0e55384ff740f292f7adfb63bbbcbfa634ec4ac8e7ac4f1d150a3e88170987e97a571e40bf5d25aaa486d7ba6f86b3031276e671e5f85ba5d2457b3d7e6879abfda4e35d24537e00c57af935bb99a7e4c5af982a5f3e4d471651888dd0bb249502711df9b10e9b170d59e67f48f3500aaf77d6c9e88858cb340ac6869f6863c304a5fb88a7f60ced3fbac61fb6fa42657405408c0353a33d65987ac08cf08e55784df1455ed8e40459226bdccd402c28612123eab645c7fc767a3ef7b32bfacefd6b6b6dcda7158360d12f41b0197525c4f8019125559d4c427d634130f7e0026f6d1415dc80068b266e9da34ca05a36d58dbc97dbf770a6e57700c3301c1aa70496eebf6293b735750c472f66987238b0bed573c14d9614bb884c980519afa6c7eaa5c4854321265790786fb0badd954141d022c170370896224fcfdd7fcff7e2eb6bc6fabe009b2582689338d9b53999c524e5dc2ac81816803a12983cba2f24129358d098c63dbdc9d61066492796c793da1607fde2a479869c1425f20f10599bf92011bda41e59c9312c630f3cb5ef19171f7d4f200f18131f5bb382dc44a7d10f7fcc924ce4c93e5f245223d4e61bb10a4341999128db9420e1eb8b5b61087d633a129488e6bd4c6b52502f6736b7280c342224638ec783034663c95ddba80b336b4f004b16de2483263281e4cccaf1ed5db3f37088c2cd1c9b9eaf76ecef2313b567f4646ad19ad21e3e5b1e92019391867e47f761b751f16931fc4a0e85f3ee8d5ed0376624109404f6c7cda8a182307d3b4b46dcc189fa7e27fb5883710105768177947cd66954e43683b925b7f23327ba6cb29035a587c948497e7f1b91b962ac34748caf3436cc10e6ec2923720dc4372d839a40e5c79d812f6186256211dca7a8b2ccb8db25d677122190298a44616c281d7adbdeddd834ff89595f9b208c56f2971201d55a003ca06f8be6d7a6b1929357638181f90909f75c675030301cf21b0da7b2cd0cdb152eb89b9ca0e33429e609f15ca33b7445fa0709871a80c1e3b5c34f6cd1d5c79cc60cc60081154b2843d6c8136ed66991691c1c8de876f9481bc793bd5b73b0bf653e2afbd5a552dbb68281c823306dc24ccf72dc5d4af410d2f30b58b70d5eb64587dd849322aa4ca98f1f813ee59d95361876501a2f1834f0c81e9da02cbfc8685b457d123fc414f8f05ea0eda90f503c13e346031968658925826def2216fc28ca366694d2772dadb5f725229c765ba50c633f1342ac1f1b448499aa76d31404e4d8a76e7b94d628b7876787cfda6e8e9fb91f13f9beb51a96a8c5d25944ef1431784eac1a3769da6f95052612cafd00481cc7648ecd8e6f2e9cabb778a0f9e20937e0d19dffa4ee56336ccd6ca51716c05d6b520170d7aedf917e455743edc163e66b2a51d79ee0d38caac25f9e10ba30fe06877d3026901c2113b6d08e67f07f13083533605c7bb2de07a2ea63e3f4462774fbaf803b8d10f4e6b65c547b5f4f003cbb30084672b4c32935fd84250d7ca36352c52b844a7a60928ddd9b3167a413da9e5b2c112c9651b064bf9e1da8c0eedae8d48445f5facfdba98581637095c6c84870c3b8113037e22897b76455dde4a939f7a83a5598b2acf69901a770c4a0bd16813613440275739eaa6eec9f3b87d76bd2635f7f9872b4bb19e069657e5af94b42387a22b04f3f26b7549935ad2f864cf987413d844523a7c4958105cc5200eecf2e9308c594c4d74d2a50a54767af5c1bb817c6dd7014c02d374d2b56080e21ba86ce8834053e6133415bf183d116c7316e82e6d8e97756e78103afb3aec43b3cc5ab282c4fa91a7d42970cc918f75de9a22429dd0b6389b19856263dee1797cf3053fc07c45a0c4d29fca2a5d8546526013c7cdeb294611aef585e80ffeaf540b40ba28cda2298fdbb5ecaeb29467174081eb29f12f13385c8a1224bf1f4fa70bf3f5c919fb6ce702354e72e502f0a205eca2e642ed0abf3cfbf4217e4f029104bf275fe769b999b2d4ce50ffb7f98f7211e7443a293658617f67a72d789df50d23844de1964d30332e492dd306304feea8ceb8c57a3a2b6a928523dc1854dff496ea8a8890517ebd7c0c67150c8f7b2d6810f4c6be867787d40a71b4a5dda9fc03d493c27a9666b95a5b0501129ce034ad4f271b449d2b3403cc3cb3efda8215e4d1e9a9b4b5292f843259a56b613aa9d947ce13f7bf64a8bc69552cd034fb22644659dff2cc4a272eab332c1f6a6282e2fb971683c28cb7cb9c8aec6cde96dbf9686d9dccb1ac1a3f43042eeaa1e23ee5ae25cf99bcaebd443dffc016a3839fe0730fab73047fe89933cf59b2d8b59c269c90a1403ee4167b4d47e0227edb6d5ca14b5de737499c79c154b3244063e81d465bbc9127456a4fb47694c26066e292cb39103377ce149d8d58c69b33dce0dc8a8067d5869c2cba9ddfc79bf2dfff3fb89e533a0fbed848f65ee478681dde7029661b5070b28e60268a60e2a70163d52d3555bd3f45a5cb79d71c5637a6230958f6ce8bcc2d4b9be40309e61ebf1a8c7db623a9bce2cda4adde51e9e4d55973000db526e2ee4fe57cfb02a8315c1e2e32d654c34db5c74b27017f62312b1b771aeb034b6a10ee58350247679ab4907732fe4af427787f0081002834a807f89ac83477bb44f98659e9c9b47dba162e92123b5996fbe9ed12948b56bd8bb982ff91f4e9c6fbfc0b85b60fb224222582fe72e974e74ba4da7867c16d86decbc5194e77b70e83b8915a58eee7b3b2c4b699d545dc77140837a71cf7a4d760fd8c723906725f7894a7a058506a6cfa59661d73fe65d1f412c938d364f037c035efe2f4bf5a0dbaa2a1226ad0549e638c486fad1b6f303dcd43db978564dbec68b45abeea10bdd73898d93009f6bdd4c55691c4f2dad18fcfa478d59578aed87cfdec5e327f2bab32dcfe92590656224b2fd336b27ca756b0646d83e71e31e9312550839f10bb0b56b8bbd675dfae5a10d3029cd9f848a4f5c04e9f8a422cc133976255622600cae5dbf99790f433784ff86e9d05ef604e03d192dbc1485232976cfbbd2d43932c8bda3a4f8319c95351eacf6cfd4241eee8b9b8d7069c297a7bc21d2dfc6e44dd90a01820b10a1b7b7b9f49dacd5d55a647dfa550f5f5e3a6108f010342f58a9549e9fda3dda4912abc77db213e6de079a651308d92c898099075bdb04cbd91ecffbb65b16a7ebe0a6c1184f8105da42948be1b0fc3b8937f992bf22328834293e2d81966bde80ff02eaf506892503ac409502873bc18c1b8f0f46cf0d08291535e342e2ef703841b94c7bd60fd3a576a17e1d867a438fa471e55184f870c842783f99384c6884d3b50f17380131e01299f5177383279d2337b09d5b0551943b7d257c6010dd62bff19013ac467b0f81f86281fe6c968b21e39746808bc00cc51ac68a8f3b26dd7f757bac7c8aba5c0763b6e1593001043dfc2e734f9640b7f5d130a1fe21e5118bcd60d43a44610b62ce5c365037683f57d69e40370429bb46a0cb3cf4229f037efc4a74bc6aa83c87b35cac42a5969bb2ba2c8634831b4f222c4de90c1c4471c0430f277b13c9b0c597a926cee2b1726f48535fd87c2a93e9734b9ba5c29bc46655eec0bcdf3826fc3ce0adf683fd6bb4b7dd11413b44d1d2c513716a515b4a17c909ee1094bab520ef380924915fc24257270564c746990b6fc813b5f0d90fb9366d468c12184706a54dd9e32158bf58d98205a1cff9492a41d3cf54f1bfd7dc8d25f36deb5ba91ce5e4dc413f378e9141bf25a2895c580b02231939bc9a081edba304b23604c39e7fb2139586d34ab928cffeee246c5e1cf542849aff17f3ea7b9f96383d1aad46c9a0639506326078a740ca452e5f19bb2660527dcf846153355659fe635c8c581b9d644a59f60c7594b43649130f14e3b89a623ac3ff0092c7ac5696842e0918b5c7712c30bcd24917d957d4dac3c6493b63bdaf45cc807901c30d1821127dd41c2eb5fd32e3e60e22c7c8840b1e9498dc1d33a7fc4c70535f8c2e0be2baa263d492376ba5703538a0b845a3a02920874db113739f803b3d54e1c93ea75ef8e9422be2b08b02f35329aa6be9329a415a24d3b02bdcc925bdc0757bbcc0f9a0ea9a5a652540d5de8fe5189afc6c800f865867c19820ba9962f3538636bb3d4689893afec4946c31e249cf09ec94ddbc79357ebd0302ea1288a6d5d5d68a345a8f27a617c231aba126fe377c4cea5e556c6e3ca0ff835bdd51ee376a5d2c7e4b45866d4a0bb45b1307c332fc417586a081af268d6cdaefa5c708c02b9d9fc7e59b7254492f0012da9159f16f99da49f22f118a7c380281bb41e035258d5bf08e3d6f06f56bd32cbf31959738ec6e7bf29eef0fc96810d4076276ee3c89613f6b24aaa2655aec110624e5d91e3c70dd9f66f62f780237d24ba3c1efb12909c2b5ebb4c6a32c23db3f358efbb1f4cddf7d238798599aef43c85d045eb4a762419e3a7d027ae58309567b0ae3c221c65fde1a2b6e9a06acbab82a1b5372d172e72928cb43410ea2916617f12ea9a8c5f72955a66e158ebb53ce0f7df205c2a7cfa985f66bf21b5e82f04380abf1397c36f847ad8771a040b10f243411e4adbb375c4176031aa478e0066bd77d4c7510a49e1461fde6386de15bd5d0ec9174beb2d038a776d250bdac288945794ab299ba57aeb24e7282672da11d7a6baa1d2952f8c4c9a43ecbcdbe0281a9e76e34e92e82481c2ab29218c14b34b5792312c31e1690f321e4e97db22866b11fea9cc51eff9a665d84d6510edd731ef219213169c00ae30444290a79312e96541e0ade2e80f39d7c5a5531e935c0fb3cac730d7ccb53214b776bb422dc558281524d4b76c714a0d8eed9d07df51524102ba4329d1b48443765c971be02ba58b2b93520865875f1afe57ff59e0bfea2e9172f7ee6e761ada224a124f1bfe8694c70e693fbc3059ec79030bad23cfbd4604e0488df09fbf98c115666df2d1c1af830af38944814fac598070163e103ef267d977f197305993fe83731422a189925550626329ada381b7414b08b4c069efaaadd6d70028e2fdce73b7fc9d87c0c3d8e360e310e8d0cbeaca44d86e215beda1f9048df8d7157e1498bec3251ef286eba1ce020b7eea2751bd3553fdc8e50609629eafd679f0de8effc9939576ab10458fc18b0743927baa6ba88b301eedd1a44149305d5c47c2cc565b997525a193d4f073d523b5bb768d88b752e9261f32381001d5927fb51e383f46449bbb2e9de960d693d71e95d622c4193929dbf00e1d8a55bc854d1082bd2ad5d7f0a4a1d28b318261e52a99a87fa7a0c0a79cb63abe17bdf175415a2f7ba7760ee0c389041b3595007a62e31314d3913cd7f8e1ffee6b5469756d08b0606a5689d05892b0233205004e24f6c75f915dda9b75577fba3eed2e9accd0b867c648ab60cdb1d7b199e81fddb763f2d2bec697165e9a5ab129e2c0fd569012bbd4b075a6c77a039633625147ab844c03bfe823d2eed86104ea2c6c0d49342e2b8ca9e510e92e71fb4f8b28f5c896b67097d8e582116909bc474f391c486b054f08b8bfb21147522fbc07631258c70e0efb4bbd5c9c3847439655358db824c56bb6267a4d7361206889691ad5c910ac7e475adc7fb57b43a3ff6c811f316d08105c8c40eac8fda32e8081cf95d2e8edc429a9f17dbc9995dde141988d9282893c3ac67b1213033ec3356660640bf69e77fe9e520a203f48d5ae90ff267f6b7ee9e261e39bb7c92e5624ea4d6b44c6184173f20eff55fb03b4e6f90994817325c7600853128cfad907733284d6c07e8e211d364e69f5bdc57cdf736840ab0d8e56f2ded9e9b128472cdf8e0ab4ed17a85f25e50103bf321a6db4305de528d704b8208179d3c7e75b777c9972ffa40e21eaafecd6a67f5004176c96b5b7107a9dda6665c6901a10a9806ec43c98941a8627cc7cce76477e8cd02973296790327fe04f304647f30ccf478a10d4132eaf8341a1a519d05d1651c07b6f027941f02aea7bcba97b8a0f947e06e405938e597a8beea64440721b712067b0949a2952950990ae73e3a6e2766cd6555e4cdc34c7000df09f8682f00a55cc214e954bf0db9124d4b432e401ac67b97059b19c431d4abcf28925c29160710e0df806a4b2790530a29512c42be7adb5971ee8d2ec65dc06d0e1fd89d79974a86f93540538889ffd1675f301dc0518cf5a2d4bcb00254afba2b98f9c6825a23a7a3d64a44f523429007127adb6832c3e3069712f99fc85619bcc6fa42baa5a1d9ee59f0902dfdbece6e8b88e0ffeb877f47a56b4c23e4a4d952072a0d24c399e94aaaafd86c72285eb787ffaccdfc8165ed7c1d6fac5f69d1f9401a2a7f178ce67abb1b8f94f0048099addecc4eff44cfe54464995f3a44367df3f5628c5c8f732388a8a9099207bdc8daa72caf82d74514ceffe1168799e6865e584acce37ce27dee103fdf90ceb65968a01a593aaf9b4907a4e5e971f47647aa4d766d9943b01b376be66e8d7b86a6f7f4d308779fbe9c6d9a35283678b8128fb25e98ed2ad616904e527100f60eff65661da4ae401b1256605e87cd3565433c813849f9ea00b8cab9f1e1c4fbf8e634da09416be11d446eaadb3aed8e2b407b5323ee527f8b94d576f4958e98f89e76c15e6d1a5057520320cbe465def7c6aed963cf5fc64d9e1f26c29eeb35d1573af84fe88e867363a72ebcfc001527d5569aa2efd3319afc956e9571d42fffa8b08d0f2bf3695e8046cf5af76ad9bf25c6829466d270718e5c265354816155e7db56b099038d18bca5f1280d68fd31b9597fec818c965721394a40330e4731781012c545940c531b50648dc0e79cc61a0b70f4780dce24003ed477aec71f3887c3e09cbe33845c28cc9037b03fc35df1ec8777fe5658173ce557e8566ae09769e3af42b1ca8f05baddb5b9337bdccbcf8a771d99fce8044e562bc04a5a46b887a6df3e50de63b1dbc6c34b5285aad4ee95584fe79a22d7c98779dd0cfda7735fdeaa4f4cd1fc8fd5068ecfc829143d6247615241cd8898e0e22c9fc3383793d7e9a089384977e2a18285d8ab0404e13be8e3154af279482a9be885a9163626f685401cc082e98b7f32f894a3d1a5b1dc857dcb9b8769e2583b579fb69fc065ba8e1183e7531c73a37a0720edc471efd03999075829f01f381431d969ec4c4a11eb0a7b2f6ec5a5e91bebb4ee6774f4764b05f154a8dc39d25eb1f13f1ff64f40d4d5c8bfd4cc7a3498f535ba011199a1ebc900df2f551480eb8c02cf24f354b2d7e0b7380e291f2d52f0eac31a506aaf235068affaee1d9705200d60e5a0ef058ed0be41065e47359b8a034db4f06fb551d0408c1b2a29d3c5acbad7710b9e03e84ddf445bfa070b8948ac29aedc5e98ee0f47f083f40ae560c5dada2a1947b4dafa2d67559900ddb5ab342883f3cfce219e109e8f51409b46418053d72833288322a1c48380586ea4fd751aabdfd93424a4309e8ec03778fdfa1bc1c383f04160b547b6bbe5342625c807344e2ac8734c3335a0ffae96f07ce8a097e4c6316185bf6992db629fedb229858c7bf432a5a45018cee60a64df0a22aecab65d7de557f329210cbef14b4c08274eee46a7cad3d8a2f7576c3e9aca07869555ac25ec086608e4860abad1c6859c034aad957847bb86369f5170e0dfb9c45ec68e7c03ed9e87f085f3ef7cc23d53090266eba955a99870de87aeec64e6238c1784ed1150c56df9f4fbdd1bd611379e0eb8e2e52735edde4cdc4b42cce725aa3b053a85b1e320bc2bb5ff38f7f5219c45aefe82569be037824e7f2ca22457e33254ebe3f5f70de5bd66afb3d7c1be8263005783a22ea29a01a65bece91858788d88a1cd7c60ef48d6da25a301b216933053a37f6a1e7fe59c585693fe81b715895ca3c5de7c9f517a7af298f5d633630c338993e7f6a29126e0f519bb7e201b98ecb3153c72dd5a803e475a2e01bc7fd931bd61daa531812d587fe955f3b94174028d81f94accf5dd274541ab56b225f60f2d52cf09555859695806d721349b759df4f398fb4590263c6ffdd7f94b37be1a4c6c73ef9edcee23452bef14aae3955671f7ca8a4ab1a5681153d2a0a3026ad51707a80fa24239317f1804982687f6d1817bdf5b9a5a88244f4c904734815a8c70cf51e418ccba5816d153a63545dc61b861d2f879e966fb05676e00607d9cfe6b6b79c91cb89bfddaf54b61673fe3db762744e7ba925112f690793f109a02d7b0851fe4b9a81ba6ff75de522ef580c427065b978c731fbda5dc90d879a61f98b9e20e10c8aa33c79a6aaeaabd00a07ed2d34fbc9975ec35880a52ece56ea344fe7e14e223db4cbd2d52c69584a5670a3e819c78f2eea761546d6eeedcea089ad2c917f2647d7244494b71a5fec1d2a0a2987556b0fbc523bfc309ae769808a3d77231ec2d1d1d654eea329ab5d0cc2850d3f17e947ce08513c296064e208ead1a12148943a4c46867636dde3a1a4446d76b289cbcd58f1e30029ecec4410fb05e72038bdd86d35e4708a79bc7671646093402a769b9ddfa28297311106b934cf4f388b89beb23bc320ca6613cd4b72c34bfa23ca5757cfab741722cb440a5333c20dbeed5159ccd5d67be7b999864001cefc1525ea9bbded3fe463469838238c38007d6ed094881cb77a59d7a211f76b333f5d16bfe614d22fbaa7fd872e98b4e11811a10dbf3ce7a726184025ec090e3ab62f638a5b7773f7bdecf65cc6f0457d122b4673e2ea066aed41b1acba585ea33f7828c190a9040ced75b736e7a11880bbbcb76fe67e660ea700a193219922de26441f0004c2b6cf48a64ae5f2cd82ec882439996d77e6d7347e12ca3cb788e12d4ac565ac14d38868e1214ceaa3aea9ca9ca2ec2d24d5ecfcd3504af3fd4ce357547832cb8675ae61993de5dcef8ff2e40c816edf34225f80197f238351f61cb64c3d4ddac5b05b5760d0f6961c89ae90e05a8ed16bd40263bb1019217d1065bc47e4a9da08a6f7d5b235b83a67688dcb3bc34216f0ed42930ff93f67d06788101964979ee95b891e7aa9cb370dec9ad3bcb7cdf3b5fed7619620f8f90e2fb21ee647c0b662e36eacfdb88f23a480e4ae42c79d2ea8f964176ac3a973d0d99b46679235db5ae1eeb77e356c8ad705e516147abdcf192b4e3ed284f3ed914d03aef7d8384974ea6566c3680258b6130a81fc5652e8cd57065e5837d526219bfcf810dbbd3f8fe3fa2d03a8b3617118591fa8650a3fb4fac01058a01926297a5fda01fff669b65beea7c3804b1c0f9621148d94b2db9779987b9a635d5c3209d3e7c829ea0198bde3925dee345e36305e389af33df86152319fcf169b4e01e8455701d285bae51c1922de8185a1dbeb1a8e51c3eca26b604e6dedcd7270481cf635f6855bd196aa585e7eb0c3f33fd56cc975cd485a0ac713af291689bf979c156af7ce1082e304f452c74be22089815a325e67772e3f0592b4e08d10cfa9725e0b1575af780aaaaab1fbcff50ee398579a6e8bcae6eafcf03717b2110ea7da645ec0929aee9eb6e3a71a7411fbecf8a4c1d8531e0a602de47fb89613dba350c3d7c81bcbf755b6f0d2aced324d0b1948fe577eef28ecbffeb04202f2ab0c10f29eac0da7abb50b2353ec738476d144cfab7270a8a352072071ab249a2f4722a5f29d22641df53baf06b4cb03db6efbda3b5b943e6eb1bc90936c15f391fd591d149300e35d97af100b3564c0e78b3701149e231d5541f791712e649d61f016bf5293b31e6ef05c8f8a156b1e103bfe1c04b7613c177cd5c9dd8ba0bfb9f6d11b3b2915e7a969dca6f64bcc7a5a7d60e99e5210c780a418e32dfed01b52d82ce2d2d81350cb13b702bb87772e9524c2b1322b448fb7432425f68976b69aa0b0b298998cdd92cfb6698aa844f89328565fac982338c4e854a6a7e8b2a96414c85c791f7b9439d3bbb7631cf793a88f4181f4e4c22973849da922032d76a0edd3a432602c20740a555d22cf21d9b69c47eed13e5013f170d7f725b2c1d770fd7c654b76d8bcb4fa871c129e70c4bf9e9bdfac7ef7ae62924e8cedc9a8348ee2b194171ba59805fdb0052609e952dd8bd2c10a9b8c16fea99e11d07fc267ff80a0b70381aa68c5a7bde419468c02273fef305236b79dd7459102f0cae8f6810a6c735a8b019fbde95d6f5c5d02da5c6b1514a546224874987059b85eab1e0f239278bb6b5a7eb656911b7417a56228c869fbb78259b888f9de4dc4491ab31bd259782f60f4990ae53ab0d2096a84b182de471e1222f6ea68e8f7e46205d49f239419bf0d089072da8f98cf14f7bce2c450d618c571e5cf33c84cb9dd345e1b56d23ab3b1a316e63e36d94afaec8484fa97dcf0ee190509c54951819c497af630a3663b34ed8ec7482c521c0722cff8b39cc0e5e55bf09653740b76ec2193d00d9c9ff01398e941187eeb5e35461499407ad29536d2b8d0f18781621c3f82d1f9af141d3e7d4eca3aff12e6920d6e87214745f07e608cfbd5a2739164d474a58675bb4bba28479236566c86cc4728ab8307904faaecd32dfc0f5973912000e34b11b574dd100ce8b1639dd2bb0f2d7fa219ef8107316fe35e74572f9511a38e5f909a7692ee28c4efc791c3864020ebfbb24a38fbf65760f65a75093e01e7caf623bf09ac8c029956abc1c51c5a4afb895ab42cb00e2224f50aa0831508a364beac1e91f77e66e807964f180294292f004fa9fed39f963b600257cc693c2c8fbea0cb17a84e3b1ec2f16d6373a9b5387c42ab28cdb9faaeb8ebacecdecf3645b0699cd514f483d1658089f5f2c319a8ef716612fc1b57ecaf2d4898401c13960cc4f971893451e01e2b79d74cbd21b5bded4e239d7c7319d59ad4ef2be95db54892abbf55f2ee2988df31d757d60bf4ca3dfb2daea607608acfe5c27b5acd4158219f25b35dd2de5532a8134bc82fa6ebd2e309a5f8999975fada0d7bd021d9c296855311c7b02c18df22a2ba38e2be8c000cb33a50c16953ceb612167868f3fcc1ca6f6a3a2789ca7a3586660eb647b9a40681a44dc1801df9449b251c33b596d7211ca20e81b03f58688a3fa0a7a7ab6f022a7667f3ea5b659e5f6da2d980d41e090cf706017fe24f731fd991cf8cc4970405b8f5367fe8f26d235381ede147bfa8449ec35dbb72cb653d4ef26748060e1aafb22919a4e7f8710351a56c52ece1b7954cca6da6068a44677bedb1188d56c06a7df869b882041600ffd6d0b8a6f8343ff3928a150690268f10bde7f43d10bf584a68a774fe8573d45a5baeb69b2b756c00b69eed1387b84b767b664b02515c60dbc3e8576343d0a579c40c15adda271e7069bea3d2c377df319327a657195113fe06000653bbd1d3a3fe18dd311929cb83dcdb40bf1af719696ff874052e0fc6c73975cb5a3a93d413242fdb60921560403cdb602643b047a8cd3b5699a50b0c88dad56b67566c601428c5d9f532653633a3a853cb49261894dc77c3dd74c6c803b83d3f3fbd179c7bf1824831dc30613f9823123689dedf39a82d67d9032f4b6827134d934aebb15cf3dc9e63ec8a1251e54eb2c9bb258cc15825262a09838cb97d8c6740e299b9d95f5b32677167bdfc294fbcd6364676c75cc9c2581b8913c83cd1eec0308fc2a715ee03a58a48ceea465486bba96f31232bc5b42657b5c5eea331bfacc524a6f6abfe6247d1c33b7888019ae1e820e70133b822b53e6ab087ca64d2d91f03e89b4326712dbe74ebd1c1d4959c0b7d6d412d8e244a0fd71ff7c0a1a9b0de88aca19fe4cd157a4cdcedd8d7a5437d7f59410c24d175210c7e8dda11e28f466efa36ec887b0a687375d972432058b881e6e72d159cf31236a9dce87978adadcadca70ad2e4fadd5f36d01c99eee270e35459982748cf319a1e674fe10c0b145b2ea196cc1a02c7220a4c1a00e000267eb64df8d5519a9677507af6db71265358dc2b05967d213bf82a9ef30b2ab47e5f84a674cc6f922eb9605bbc09e3f70deb766321c0685314f5d78b8e7d1b7e0316887f99c5919d169b7849dbca122fc17c635a1cd42479e3416427fcc8822f700587cd5618ea75ab86b7a6ba48fb3069d68db64aa0035f1454a1c83db70602b10cfee403d8a0ea3b916e218bbe312f28fca8aff5fb7b1fa0076fe052ebadb0c5e5f8c1aba030d37ea094784768539c03ee777bd0d02f15514812cc81e9f40e30e66f34ef5d74230e984ff9312fe13096018f175854ab14cd25fc3bc3bf8fb1fb83ab03ede4dfdcb9f5010e0ecc2124d618f90e87843afd25cbd7621d978177b670e051b1970301372cc61f596f442a68286ba7eee3a4b825ed8be5bf116c0299605e83bebbeca3f7da54cb38efffa7fa84c5c2be007e0406c9a0886ca90f52a6d87184e5b80f700190b34d1e0a8c7967342c9b5c2882cdb259d68a30bd98079e59285e9e31b996bbb4afd0fe3f2c8b4c493d5e095ceef11a83dd0660f7d6bff4d66ea7233b765b786498292c852ef8aa4ed3157dc357acb8d13e437ec7053003a6ab16aa0e4c12d48b0c6d7c9e57d4fb752385de58b594bbc1a3238c03709a6ba82ea7138b54abdcd2259ecf320002c10e4c2cfab337bdef7f3327d7510770da802bdb10dc92dc4da3645911c28353c6c4f34bf097826a7b25a0da6cd969d09ad136dface390e994b8a4d3db8646d03b67c1f55574d0272b011fc86ecb07373e2c215aa971805c2c3bddc4818fa7a351550a4b9278708f276cc6affecbfb7bd7d480b181ac9755ac89ef6f8e1ee881bafd9cd2f573e491acd6bf5b1203c65f5c0b8863b62b38c950b2496f23c59c641cb084e98c8fc6538dddf1a4c938bfc3c3cbfa567375240d113b850a0814fc06ed48a8493ab461bdf21be9b591ed00c24ae9ae22b06afe301062cce899df6d47969c4903790cadcbf07627873b32d0830f5feb0e7d39fdf49d347e525f145f751184ad689cf65bc1c85f1f3e79c4a579209fb736fdab87e0c3c06fed489da9d9519927344cfd485f4335a9ab5836d2e6c0ef084b795a677737332b00b670495500010e1ef1ad20f24159b18e44e5ed83d097753af7af77845decb99971f737f14d3585407e71213048c28788fbab91146fb3cab29da8f311e7fb0e338897aa0c252f0855961aa863b6ccd2a66e5251b59473796f7f7cc64c20dee0bfd591e7bdd65f60139ea9aabf746d7bb070ccc8b53772b9a8719efde3b4d74e027996b16b2aab35e0e2af0eb0a13decb64ab1a997d0a35ff60ce15c3be112d6167e2a93bdeaf8ffde9f4c68b5032b746f2c327e02d58e32edcbdef8177f37ea2f794bba1088d1ad89b7db816addc480c83c1f544a49c4606b3ed2b1fecac25fc7e1d267c0c573f42a27da141abc7a17b72ca21a68d4a4c68ba8d1a5255166fa8130a866bde5216d987074e0e3ac911a21bd60be57d8f550ebd566b9aec1c1be7512c0a0238128c79d0ea74bf39a75c9e147db7379f863cbfa0424b38cf491322d2ec4943abaa380cf89e8d1a000371d5181f131f287bc86941ac21ceec49f3f9f9d6aee9d3a525435668f5ed9badae8a32503811c0ccf596a817d080fd70718a0af7435f95da5815c5f424d08fd02d12f6a168f12bed52a58bda72a6ba38e452002aeabfd831879326d81f5f57e97b1c773c0143c2f60446794ecde9b3a5abdc834d35b0df6d375d9ef382cfaf3adbc08acf261f31c0e3b5f5c14d5580163a6afea0fe577727fb52fc668a4d95005169ebb225d64ee006b894e6266f0bd179cd792f74e656a49dd430984313b22f5f11867c2b768b4ddfcc4d1602cb0f635681c26137089c047ef7d2ae0620c229226dc0e4edcd39964cb45de24be6249fcc5403fa63e5f2e9788bc27b04a45652de7015e76a8826c06f4870add30c38e42c053b3813fe39b5f2a24749449397bb4f457a1a8ba16b37b53eeed525b43798ad0de9805c67d0b1294a39abd4bc0319de3c227b7a6c5f5138980d7e7f4f01d4cd5ab44a490f607bbabeb354ba54f397f204dadf0eda4394d99dc403beab8c73a50569f8b6a57291b99ae3026ab21841b9d77a4ef5ff5d020b2baca1a83a14ac94cda2d1060569d34c76731eddfa3bca6303a45ea99c0e83d3a92f80487939890867e5a6a626e915fc53d199259f84f2a878cd2dc619a2efaab447303ccfcc954352a0a17c86a997e68c9d581511f00c0d2c2b1a4d0169f50fa3ca7ddc7c1b0dae2a6defa01b4030589b0d5391bb42e48d01ea1fc1528ee1f86f1036bee8c5f43b19142031e4d0a9789c5e20eaa914ae39973eb8895cd32b08fed005a62beb4c6b7e385e6f466de9a5527828c720fa4bb71fc7bbeabb230a7726f7f4fbc70a747212a49312dc5e8a3cc42238ab758c284af9a29b55cda0d0cefe313e2664e6511c339413daafe4bacd2a750acd2c277625a205fe66a6552054f4d84d9799a59bfcdad40053469a1322fae57b80a72d6e91dcbd7491bbe8b3de819367d4dc96a28680681de21d1e02addeca37741a6f1a522c51bef7e4602d6326d06bd7607718b7145e37a1eab87660d6f061b1513bb4261370b9157f99f014125c08909eb79bc7cc8de49185f036078d69c5db6385b95aa5f31e45b05fc9801ad8fa3859ce0ca789a15407cbf87d192411cba8a3ca9e5cbc7796b3f24e98f25fea295dc4ea1d84072907313f184346f8d9570dda7c5172ee3dd188f021e90b3c53690e5594856baaefa83f59c8e022b5f41495ffc42d614f80cca1547264133dfc863470a57642879eee29492fa6794e5c2bbe08e7f80cd4d2cbdb5101a67a01657b28c5fa2507e410205cb432ef99486deb922e402629cea093a56ba905a6e666d8867b45a94c0f3a5405551b316c893a54a5aa36482efba52dea852f03c1201796312a675b59a41dc7cf019c41a1b3fd5e14238a5fd4fabd40c03bc630ccc51d624b461f974d45cf77beacf4f47a5e41cda6df9fedd5adc2785eec0872842d536338245d19282720e7d7c4c1dbbe8735875975609b90129171cecefaf09c220ef62911a5b7a8bd6ff9fdb3de6e80894fa87fa685093938b47b446b77eb1e12de546f14ba664ffabd1b4bd0a5ad1b7a29980fe0905171d5be0b47308798ba7dbcdc12e9c3bfe7a2603602b45038d22a884eeeb8576f72dfeaa1efb83777d653d9cc02c6eb533f7d7956d3bfd649ce1f11285506fdb03e4a74fb0ca0114face5225852b3544783164a24adc7ff4ff7979af5025d23722969aec91380526576945e713f530362d90d34af21de59d1a56af3b0e739e69f11b416b1b90c88da793824cc83d1724c96fe1b7a360d3f2974d11d42d27df78359f087a6dfee2307c32e6264a6b45a20341cb602ef7edf1782fe598b6db5f10aec2d4a347d4415b5154ff7fcaa542287b23ff01a183c6604392c84ffc1181d6307c8a97d2be4bcb968078f596dacbd19b146fb269064846519efa0605556e1e6d80b8fd06846c505f8fa06c96995e1c4633e24d7d6e2706aeba6c048f4489dbfae873e67955d5d491155bc2db6cc904871ebe59d5ab160ca3a1a0b8525101f9316d76c363dd424e6b625353b5b5fc4589b3056cf40f069e4ff41e0e1fef93f06405bdbde7b1c9c0cd044e49c9a30c016448c9bfc7b5a14a6c2ca0509afc6a400dee8e92a4ee7d7f86719faf9b3ec9f26ea40d56713a22cc89e525171d49b0adddecde9c8b06cf92d07189c4f98305d3b5f22b92fc29803d0b1f7b688a32516aabee186a6b0af039efebb9db13c7b67fb951b716de9dd4a95fbf66c519738dcd1403c76a8d99a3220600fce8ad4627728d24c299371d4ef48dd36694eb77fa5280d9b5ce64b690646a01377462a95574514e1ac2aa124c2dcacacfc123cd031d0c4c64fcba6aabd4026f72fbc6f7d3d97922740882febc51b8494a85c380fd2733b90e31604a2fe694f9f640733eb91f0ddf881dcf0b0ca6310bee23dec9c8ff54e3fed6fe4a718e00ca649941f703258849f6ecdab29e90fed48737031b4d75ee7c4b791dc886d120fd5575dc927d9857dd2ea7d69e4b1491d0f28b61782530e6ab4a58ca375ca2a0eed389b40e5bfc018234276ba5401bf0f8e49a4a01d9aec0e97d8fcb41ebafde7c94e217d5b8bf817198d96d0a4314fc427fe7740422796c568373bc415c842e64fffb1196949dc851000e68a96d50ef571b207d8c63a1ee758918c572a169f326259b3238ad349c222bed12f3ce6b8fcb55cb7d57436a65bdb0439ee235c15bb1acfd9341257a01a6f89b43292ee6cafcd6c21e6932fdabfe75b6eb5475d48f9bbdfd8a0f6dd47e1419352290aae7541146c60d73762f8eb978c72df88942741f9b351a2c249a8922b7aee89e4cf7c78fb0cd7e8df9a8d3df9068657e47ff34631ea382995d25c49a548c232e28254ceb23bf58d7ccdb2dd579f698e6a444ae22b3a15fd769cfea89e05c73e131dbbe1250dd8e0c705456e6badc3e80eb33696affaa35acc972b388b779eb33235fbce226d1fb882e244b087523353c718dcf665a81b4919c2bf6f3e5067ab6fda614a5878b0d517bbfbbcc9bf901ed0805f8b90dcc6a80f7449e76dc3cb1e4a847925fcce3a615dd4747c8eaa16c2570a3a6f5a0c743c1a40d11ef77045c50bd50eaeea858173f1eedc1dbad1dcbffd860e04eb9bf8a4213000687dd770bb0cd63399d8e99c4ac0409cbfc50fc1d156e59f6e859accecd4cdc209a17dcd2e4933e0c85a6a177ce30d4c506cd13e3db8fa8b43aa1bf2b7bcefd5d0117dfcbbdd405d8d760555d77f019f8f3cc71fc364f41812282243009eb0c22a978414771de2484cd12974590a8e1c420cd0d071dfa5b4bf8beea15aa3e3879e7904e1c3dcf3f18fba1ccc79182c6207f6466143b51ae2aa2e526ed9d396e78622dd2eb0a582b52f08bc28cb60a45ec95ecf938737a4017865d131efce4cc5d35d4c956b92f03726eead2b337d780ee93037bf10d3e629d354e589d6b6f35dc21003d50f790bb433435989ef1534dcfb3f36208c6d81d2aeaa7fc5bb67398493ac68c551770ea13f109922e5da4ef167bb2f0736ae4a6b1b1b471db920fb17bc42af109be4978b90e12dfafc16595c2a4b190f9d6e350a3c3ed05ba66c2a749b738165b7e4fc2e683cab9b01632f94c8fefe8dc3438761e46ad86101d40e0c1f5b4907c51517727c44423b7f7c4701c3f8225efa3616b7d035d8f904cf21213acafc2daba62b31f867e55e1f9a874f2340a6da326585db63a4fdda6ed224c8c98f48708272273562ff9607e8383a36f5f2c4578dce0f9b7ebf9b6282a6401d2c96b448e5b458a09baffe25c13469b84fc083b5fe486f66f0ace8196fc87aa9e55cafd7330b5239dc8c1035256a7c7979563af18223ce955857c2fba83eee93a6ec7482b24645c799805f425e2adb05687c539f0320b62730b3afad849a4b6352df8761b44ac171b7e2ecc36403a30f00082a8a66bd8337ce26e96a47c8367f023cf53ba3e7b8057a39997dd239892d1425e2ea26ad188099b8fab69fe0f7db34454c62f578d5e8e09ddfbae10142f43eb3af4fcb9057e9e3bf54725c3c82107862b82fc69eb36790a6372eb9765509de3d4a8a1ed18c8a2bff101bda36ac5f8a66973f17ce932cebe53697ed951007a3ee0cf03551d428bf2644b9b101cb4ed035beda254cadf43e97270a56dffa48b9cb0ec74770880d5d95f844d087ecfba73bf6e357c0ac5202b6a949314c927ad6d33351652e7d86e0b895e54adb0e712411aca3fd44df4a963f384f01a45373110b30924c5c95ddc5bc532a3c63ae68ef4411c7dabea7f6806658b0e41dc2248fbaf2f1268c842f14b9abdded7ff13eaecfa54c4296ff678b2e0b53557c0a65610ab46bc17f2c020fa150cfc7399f7d3e1c8ae5c16b2b3a8df7d68753bbb22b6a152821a06f19df5da468d29e6aa16ce4284c342c85a913be605e4fabe3eaf6f6001599a658e4504bd5f3ba8d58152bf5106481a2f073f77bcc61f151635d5595f91d1d195e0c78007ac58c1b93b273b7086d067ac3c37f8ed0979a063b18f9bb81df7ee98a8d7a2fe1099eaf72af8af60d8393cc4cc31bcad9143ce8c9b06aef0de57174c27c8f9e21b5ed39df2b713640ac539e06b54864587cf0e8a0a3fe1dd9bd5554016147358594fe44ca0833d461eb752801488b15ca00b0ebfb7bf0d7aacea2f9dd291321f137da71859e28d4641ff5e3093e8f31dfec00098be98a225067406e280a6dbd4bb601811a3f1e5b5c47e10108b890471ce5c4123f22cde54a612a230fe6bab049224f165ddf04483c2acc0786b0fbb045ecde80b093edf9f25be25f8b43907e02d94065829e161f97026d23f2fc6cab68d73cccfc83b60055a37ba2f5497038e8b157ec0f22ea2c87324e13a45aa71dc21dfea8ed3246d6dcc594a588f9a1eba2751c25e0cb1797e9e0f22453d994003854a60a95c4220c770cfb19b88a7e235b3e623e44c35aa4ca219ce95a651463017040256c8675610731f325a23ec7f4c64f0e02e73cf8626b6d85a0f1454217901f31dedf4a9be145acc5ba21c100bad3d2a72f498d99d9183054c672c268c945ff658fe51dcb2f4fc58f95870482ab8f522b5e8b8bc04f84496fa9e26c185e7f759778caf819aabfb115ae743a0e17cd4a8d12ade8a88022c4320a998d136e350b2599d9a0498bad9d3c0f1d09ef73a47f95dc7a3b8605724a04d3e7f48d31ec6a4467a577bf20f8c2b088267d919ba136a955ab1ae9f35743303ec132c16b4f10f59ed8fa638f59e8c62997428d04f5b2130ce1e60d4c633949319aae7499ab4939596b9bcc84d95b7a8efefcaebecf1b45de2c760c24091e20f348b097c286072325342ad8218d021f5e256b874b0a8d5d70d512719c87161c6cd3d34821d23d1b4770b517d59ba19b28db34bb3fde49c54b4633249b1c9b1033db51e88035016ae10f4e80af0e19f98cf879acb39bbdb7d3cf6f71367413cf63d31c31ae70580efc75b15d9a0d3da8fb65209136321e51f31871c362071ab3a4679d6c386541def1bd5f73de9c0ee92fde958b26e2c2c20e780c46441a28b7b4b262e6a031bc24cb1080eb9da6ea30867bed367f280d726a811c6e05c8b03831ef6db05701a75502d481fbd640761308f08ab7e070470db8f791ee57093dc2130a6a9e22b494a66768880521073ed340bfeabfb6bcc27a77e18f3c613c5930d0528c37fb95a67f2d44282878f9d5b59cec5e3b32ab274ae0675bdd2bfce1d0482a310f5fc064e71187dff45c99a157149560ffd6d42d003244d10944dcf1791fb64ba9e2d38622b4317986e4c6ba1207be210ec71feca337f806e3eaa076887721b4799cec5fd59fc62b96218a10c2d44165e53671a4f9518e8980c582372d86cd27a20737af025dd3dbb00cb87fc99e5c5eec355429ccc5f7c25bb60c89f18d52d937b15a52030726f98f6fed3ec18ed27aec834e85f7558f6b6d390a24d03330948f69ffdc542d146e085da12df2e4d1e6093519156c55b50f37357ec00ad89e28454b45b9c939ca975f45d2bbd1862c5014be88ac0dd7bdcc20e7540e90b1ee75361b1c7182c856dbde653e8bb3c17bb999de2eeeb7edba4c9cf3f30952309b8609c4976a99a68efc105a08bdc3ce1e4dbef7534b8f045395668500cef0fdf2a926ace1c4d776fe96e2e645c458d836e93fbfd289365c85c03e37656d0d80de2be5ddff8a0d7db75f753df209676e560f6a1ee955fe86072eee6a95869f61c078c5f032546ff6ef3c65f889ae8c15ec476f4287c6b6f49ef9d5bfc95ab09e5c9680ab9773edb3eab69a4e5f7b7fcc8473bc0cb745fee6b25e29cd7ec5a9e3cfde87fbbdaa40c4866ba4d41161d0ae2af6c1f02af8d2a9fff595b37c36be6cc14cc5c414441736b164737391f56daddef6107a042cdd15c75e31b401f7c551c0ba903c803dc65fbb1a07f8f09f4e9d03ffceb85ee8178e564a874d339d9466fec3cab18d0b49751f7157b9dbf3952870864cc8d69e121409a5ab0b317640715419f6bb7509d18f26e36394cbc815ad8680255ba9ccb575c5a5dd6d92d6f79fb4866473a05bb93094f85304c3fe14a4099cab76c7580d18e6a3550b3cd1aa2d5a458aa2e844261894cc0aa2b32afe6fb5208ddd500133beca53ebb0f6de8837e49c4f52d9d30803627368d4536aa45b90b928f90b9621d323d671f6d409cee7c578abc9fd6466f919432fd1a2fa92edf342120ed1a84c73ac62c0a6a87c2c94711957025f57c20855a4b14665de9af07c6cafb5acf2461177b1e744d8770903f02ef603e63b14d8fc68fdf5d77f923b01fca4e6d21ce06c1623433028a78499bdbd2b02f1e77e1c2949babab9ec09f59317d9f28ea02237c684cb32a70986fa1a45a4ae468ad197c2f5d53f98072c32fa5e8720796973ae97f44cab393827258c7c53a18faf283a9f1cead9798571b281ec355b6599b8911bc6cf0171d6ac02263074abdbaeb37977cf82671c06277c1dcb1336f702183891a7be7e57e525dad6ddff4df5b2779a5d9a725c1dcaec68e8958c87ec896afc975d73b0864109133190ce6f77f2c0b324c345454c29b4c57c48416fddc05775af457914cbecf9f757c9c85acd3349a9a16efdd6808607ff1a23c9ca65a4d1cf3ce80eab9588c27df211d643034d55898860cc7f62c6abf3f49a6d5f95fd4892f7fced936436306e14ee8334c75707238af79d6dd0b0fa846fefab30f48e8016ba2de6bf1e51e7756dd7c80cd23e3d64fef208afa7fb5cee0ec840483bde4eaa1aeeea429b58cff717a0a5c7de9c8611674032c39614371838f4b1854741827aabdf65a849e8a12bddd693375c47aed63c2e6a3648617870fb3476855af1f7183d78d78b08735f019a12f56c08797d7e02817016185973cf604d460f779276f1a08780823ecd86b35ed8e55ffcdc793eb50339bccc62796ca2f60df4aaa545cddcff011bf675439fecb33c218c0b896e6e59ea6534320d862c6308af3d13ae0d8a27fe7cd2175e8042bdf84de90d1b75041389bd61d91c08179723c4f9fa08ea1f3bfbeecc3708c3af9f4da8c0b65d0f57e361e34c7f1d71ec54a93a5a9e0105b7099a76f58defa325e6ee80e72e3f24b36ab5193930f38d20397eb45987cef886d29b74b34abe2756a53a6e0e79ee693cd32d3a70a0510eb4599ce2c300fb9b4c06e22d1e3a00db3168b62ebf0139a8ad082b90ce148490fe9f8ef502e6490d6454232028da8ee5596f4e7e30f7eac16c7ca85106af705046ba4af339f52cff13839d7ad392caa48b579b116ff8d29ba4367825c3f036fbef8ce02133d8f928c8ddb72341783d48599936c2926d2c770eb4a54922aa7de9b04a39ee70f3d028e0fba4d82695796b8f4c634bf5cc3f22b210a53965d37757415fdf2ad8151c5e51003f84b0604b3a539667aa03820d925645c753ccf1f4832283cbf767a05f63a013f524d44f324f9c4d631843452d9db3f6e14284aa3b2c35a08d24fd548ecb50bd6a38ee6fb96ae038da4b7174b2580fdebf2f62c714faf7d9cf447d55fb2bc5b8c7c3ba39e4881599343da03c16a5e38d6431a489d9d1c6a1680ca0a0cb2411f6b31d2dbc425f2224bed8bee2f6bfb9765c1a1b25c4115b03e103f3ff38ad37193cc61b9ea4f071e75f276ab6838ea4e72a73787cd5578ed7ff44aefc683b91a1a31039e12bbb451ac3e24330956189a2508ae9b2c7ccf816205aef836924e9401410111a8f22b5ac31ced53d07be6435e5c0b42fd5311e7830a27511a7f778afc3f237b4111dffe1c507010baf75400f23af9f3f898bffc002f71e16a106208171d592563b2de2e9b2f783f2e0d066fdb75e6b7a4da9a85ec1e1dc687117af7b3b164560615504e57ab616925fcfdebf3e760163c8e94d87c21e2e6a8d5190f3ce74e3fc61934d8f0ec9eb7d258859b066e9e457345ab899435ad25b4fc20582baf151d1fd3e925dfa64a09bfd37244dcf124bcd900f4516c0568aed3c031b8b6ea7ad97858568200ed5d2173a1871928238f5aa6ed0c5f746ef08e29ab63778688826d1fcb5b54f62129e41632729cd6c137fd0027494c6e1198d305ae71971284be007687692adff82a0652d22d77a3825bdc0f00f3468bf27d286226c192b61f69b10c150e6ce2ab8d41593c900c160d9236ad8ce2af53891217738a594fc718beb69462e06c52c17a91d7701679e5e130294474b621c2a20204dcdc8d04bb2eec148f9d5bb2e25c36538d9d04ea92c9ffd849c92713e978ef059dd3d95a400b63cac6c66cd4b796ebb6b26daa3582e52ebb40df50736480ebc9bba353aa63b95dcdbace018dd7dd37bebc4b224bdb36d17d522f4e0d29e121f48131353f4273dc14e70b096bd2e5f7701beba79922d2fb8af0b58c349a55075d6e63933b297f038a7600e34d2d83a05175c7da7cb41ebf8acf8a82e9b14d6f5f74539fdec754c1a4216faeefe2777cf828febb63ac9d931742ff179588516fb64aaeea6710030f1166b1c81454f99d89f762fcf2574ed782e568b3446bdcf531fabe5a4a88cae8514940edd71f350bdc58487cf2a8b0ec6a8429c207bfdff85088094c4e64672ff4f04cbd1515ceb113784a57118c12864e0e1dab747b38a864c0eca741fe0dad8ab3b5dbe2fc6dbd205b841f4aea09323a7866d14d03aaebf9ab5d50995a184e029e166eec8d274c23a130ba02310e785c5f8a55d545e1d60f846ed75e2d25130bff0666a5b87dc76dc996f1ca258b0e719fcf736f17bbb63ba3cbceec2d08f19db4a38ed9ec7303a087b1b4c590105ce1cd3cc37824487e14184115f63337a7561bbecdaf53e1d1a77a3b99b4ad05166d2f29dcae6bdcf22ce1e2cf563e8d20c7fc86bd43256633c6026ad01d6694ebc8542bdfd3faf47181a0af47a6b4682b927037676520c2fc7f5a90db7856acd8f072406215383a12d24908c8d6baa3fdb5cbd22819e4c1985fe7f2933539b9eaadc8e4fdfff2134f62713fc3f12c3192456fa85973d713b3ccba6ba5b8bbd9a95c679eca025fc97b4c89c803affe6ec2110df7bf7bf453ee6690cc523327c320abbc0fc7fe1de80946d1b9a84cde7ca056f1da39f1f8031e4bc191c4875a9cb089ffeb438ef742f41d7ecc9cb248a78dbfc1801248eeb94ef768582e89ba7a4f4d5b2a1392cd7520943abfe9476b2e58fb3fbb523e7d9f5ef0d42752e7e72a631b3a62c0fcd714cc577a573e0d9e0baea518eac77612763f940381c18777ec01ab26d103988927246063bafd0a8e1257a263308496a5be44fefa671c554919c0d45cc28c56011ae1d628f14327ca575d790c3809d304d48c2414403d694b350570410d1524abfe75a25c2ecd923b2c645f922d684e4728388015f40315feebe4ea6d62b8839c227c70b78ac88184701877feaec52177c24f9f33d6f3955ece2e42456c499fce5d9f934bab56b95361709a32b03011e826d1a578d0380b64cd915fa8dc3bc69ac47747395c71175ae72f0b41733d30ed7114033fda1cdb0e2a53a211f9e27b76473da12df3eae11b45ff9f0363c103ead2d4f9c1d6690c212171f945d83e1824e4ad673914e6f79f480c2653d52a936514f812273350e4608adc7fa8ff2620e9b5201a9fd630df41943b51c91c7ea888cd49e7b2d1a999107b3bb719a8e30a2f50e7f294ec38939e266cc6aef6ada74e561632d0b2e945849b5b6984f53f9ef0180324eaf246db307b926ec2612cb540feb4295235ecc85ca6260d9891d51240e696e0d6fcd7e085a07c18a50e3dcc07662b36fbb729323c02172a5bbeddddb40cf2c7c2dfabcb7fc56aef26b14731e3760b8666be89f92506a8effdfdfb89dd69f9ba65b97e109fe2af503bf4963bc7986055ecb6c83649b3d71ce6ee6a1d9560c75c373b461dc5b708df5c3199eac36e9800f99fb27b71a09df2a8638bc7617762eb636522f62da43a3b5852497dcaa3e4a6edba31e2245dd5e81d34787592f378e13a0151017cfcd902f8af4651e8a90a6812c24a899197c41ff229c59375e4cb046da34944c08e6423c5f18690aeff366482abe783675f96ae952b45f29911912299292b89d543b82dbb42b4f2955b446ade148a60b4819fa98c64489e988da9bdd4e649f73fabfaa962a27f1f1b25b3437d5949309f8bb5dc8aa41e438d5fd2a920d05a6bb8a24cd68c8198734db0a3d6ba119a78c0911433185c93e1c1da3b0c164404dce6a592e392ca2fc7328850a9cfd72600f8e61644b5b87f7918bd2a4b0b8383f8d7d58bba61073b7c86a075ca50e241b6f2fa0f461512d664c2e17cca56611689884be10257da256a0223d6443f2ae582b81810822d1e3d8550ce5e44423048f45e944998e2da65897f16a60b80c3e7220c58b99b6908d8bfdaa3672c08d93594e5ceeef6f430af92b36aa0d682fbd54ae6727e50aa77fbfbe6859ccc186a71b0b57dc68fec8d1fb9bd231345e9451c26306769f88c9488d6059170d8007891f275eb118d6cebd1ea16ca710878dbb609a4edb1fd811837acbd083d57ce204dbf402ccac3ee0e7ed3c3886036b277573407d0cf1cb25ba750e4f034738d73ddf40e0212ec00ede12711bbaeeb0fc9b4c134b974ac62e339b2f86cc36aa00b59540c953d0a5fa344dfb9195791986e1942f0d04f4ed44765efbbf2dd1b1ca31d0976a76149fa9a59e1bd825672e2a72ea2c4861885f73db480dcbc7d09cb041024bc0836c56c6216845cd3c2c25e144a1c2ca7fd26d5cf0711c91449f12aaaeda26a99e8eac2815f99233b9746e4183bbb1828888ada3b9785f1d05adb290efd62427c8a911fe1094003ccd073a792ca4ae95a2bfd3ce4e4a25070a19a1841822ff07c565a46d2853cee0380691ef4fcbe1efe872b1901a8dfc40a43d8134000857a33c09e661b07f918d27053c84b546af9d1f9434d8c415d0a1367dd7b602e3c3e67288ef0278e948a7736b6dd70462d5d236c895e6f5b14ee99732694a09617724d0b8635e87b756917e91278ae4a3d69ad80adfd6501020ba109a731c1ae25893d00fd1c8d291a7971df19e7bda1f8444120a2d4b3eef9e6c7fcfa465dbf3338643fca1223a09a87cdf39f9452a259859646f5be2ae0e4d2f5261ddb62dc1b9887d79271db30b248ca1b1441f0f16e178d2dede47a9303850c412b43c3026d8bb3bfb84a51ea4ffdd29e0087acd1b032617637f3440fe4d59d33c1bc920ceec1f1580c87591be760f9ceb6d34aa3ed32d0bd9e8d979015e09b8b770fa53cf50378e59eac984ac02dfb104cec66407371ed3f36df10347682703e08946c5cbf27d9e594f89763e1b56692ff422f07a06fe0f4cc57cfbc0bf36d7f81e343cee5a066d0ae744c744674f5d43c70006112a685ec0a05779fe722367f707ab44ddd6a8003dc0d22d09c6b7e90c852b153fcfe1cf29df8e88442ec1c29b9b8eba09fb93f1b857f048fcd15e050a220e6123e2ef233deb4a84abee1284901a5aaa83fe281f0e0987aaac2244ea9f352039f362c4f240d8aef19f15fa18547e098810becdc6b969b29e722d5cdfebe323f410070e6c79387c3fe79f78a1e03165ec68a2d7e22fd7ef7d315fbaacdd21b7041fa7888dc9da173a09f2d5ffa98a768cc655cc40d594849efd3cfe6df3eba135d5d9e01ff8befdf0e930f3b2f101cc595274c92cd99e4e317ba49f63ac8c029fad9e17426bac12bd8878506fc9bdacd5a6d41de604732832396dcdbe37e282f4cf4727202d7a20708b25ff1dce1c51924806ba415492ff979845e8917fd985e073c954d31d45b6a5e041dc134b6cdc4c041902ac17cccf20ab66feb268221fe8117572962043031f7258b8992191b66222ef2299c7c3be0545a11ab98e4225b877a5050ad528696c99177f0e6a2ae4fa92e3719748bf130f6bb9c0ac1880615fd6beaa1893b1c3f44df9d5ac585357e79e7c9f45a97a8f7faf8860c62d077f5756b860f9abe0c225ada486b512eab5de9e10b28e958736cdd3850d1dce4e432df3ab5e43b3e982cd64ffeaf41258c3547dd07c6e3aa9719ce8a3ce7e3593e8aa5142aaf98d48ff8eb76037842f1c7317e635e978d8dfa68da76a6eae2c839ba9f3895be7d2e4991c29c908c5fc060bc3040a8b6a65c49900eb5a018d27e8dfb7d771aab4226a525365ba8b45163121384550e3fcc8187fcff426ee21f50a2fae7c84ddba3697eff323cf73ff986e7f478b022a565c120d7d23d484814b73eb9e27508c5e405b34f4f0a0eb5c6d0b1b4fb98f57245bdd65a15221537481d313191ea62f87df4f32d393d5d9b695952efdbfb56c026463e703f03325e65b62245a907e8404100daae6fc91b3a3cafa95189e1d611fea134a5fe59dbf0bf776d94ed263369449fff66bcac6ae0fafe8d92726d134e8acc34399eb500e97c29238d5519ed41691094c2979f49c8723e03e1b5a757b61ba1204d692b0b0490e4a530d7cbef9fb39803b04fc89834a568af6565db06730e692a60827cc4162a2a5f043e2b6580536f3b6cb332326ff2f4efd2ddf4a2e09b630edf06057d7eff424de0b3d54f691998bc6735f3a2567fbe2733422fd41f63ee4ebb7782c74c772b8ceddf5657740b96b0e6d6581ef0025337c5638623389cc5c68c5c520c767ad6624998b591a9bff15b5e15314bd2f2a20885ac3a3083fc4501f1e8c450f9a06dde1861e9522c11f8dfa353499b2938c83e8af41b6a4343e306ce705587f5264e2d774b9c78e2390f060feefdd3e609d07e06c5ec629a85b3e87eb361567ca04bba76f8e7f94d4241f4a97c790d7dd80e1d902c9ee8a3022da87d193b72e4af15e26455cc865860e392ab1061e507bdb912ca6fe68914c83619f6160a95ca5782cc537bcf0a7b705ae205bf46bf060bfddc3da65eaca778c7356959f2bbf92be5907d5a806f4f2ce7a3866cccdd766d674f1e859023b09c8e1e3d4942051661e3d32f68cbe29e891937a0a81ea106aaf1ceaf0e5166c03a16b973e17a415388c27547b3f065b04c52b2f93745861c83ee7c05caf7d47a3565891f5084f2607be74aa0816f7706e37a0d024e0480be84304363aa0d1ddecda9ae8b970e94a53a9137671107546fa92713b4e369995bfa92d21c21a68a7fad6d6c520961dddba58a2d1063bdee373e9bb319c61ed4e0cd01ee265f3eef27c812b29fb5864a40b9aa991b9b3a11f5c96b74102a02e8ccf194499840daf5329dbd575a8b8de8d9e89311666e4ad98fd0e3e06041eb0d16a4c681edd991ce408cbcdc5f07acce2fbd760f1ca69285fc2fa674a64e665518a00dbf0a5ec3e3c5972131f03ffc3e32f3c42c0ff7d0f5290c667efb01f2605292ac45c21f1204d2f7174a87f30efc19d3421b6dc86206c34c607dfaf86e0c4abe0d40b80822bf5ded19478ee6e10bdb195eee7efdad13b326c946656fac17046b2013f3ee16b8a52ccc35668c73dae0a7d11fccb565e356995a29a0b697ca991fc4916b773fd361999efccdbff0e95e982fcb0c418cd1343e03c79cc02e007e490289b843199d3ec4078ee8736c352b61d794352bc181226f9ba1c22fe3ba1f51cc690d2b2adc03882224f137421c51109d812f5d5486e7638b947d2637cae4bcfafc85e5ae396528cb25b8e1d0bd675afc2545fefe25fdb968561f7723f9a0704870de315156c711066f4e8ae780ffc4ddf1df99102dfe88ff0c8258db137288d0bf8835590951273c2421ced4814d0a2de8710871a61ddf3618dd39eea744d745bafc11ce1b9eff58c614e048bd84a1243bd7890e49c5872d17bc6ae1dfc79a7c2f2499f7af768b9ded367e0198753150f9d48a2a1c6a81582bb0af95c1f059ad5ba3be45fe50248403eff8cb3f0fa4c153f758ea7f83ebe4b4b6bef35acfc664b1b2c929508ca300578bb42850c8f3452914fce259185afc3e3d73ba8204e9cc0690708941b816c68365f660c34bdfd053f0f2a00a7542021b26f9d2e4cb84e517e2ca5beeb9fbf38fc83394d8a041efdbdd79f7ca2f230302d46fd2614e274d801e5a343ddfd10d8a4fd4be67f68311ca7c8b59838525799a824f3d700a1b3eac9823bcdf507eb5680184bdb0db919005a29ab74db208abd52fbeb26123f23d11a1aa9b5f9b4db2505a503b2092fa0a641decff3b887fa5c83ce92063a71ff1bb9fa3845b006a566a2a279e02453ffbc5e7b55e37f5bbed549ddb21037eeb84cc6340ae65f203ae9323b3305e5a4aefde3c0ca7ce00e4828ebd5a125e27008375b99e6dd3a3153f3463e933923325b783c76a243745632a3fc3d40eafca48d9827d60e941c36c0ccdb14b391a60328bf5dbd67f1cfdd2451b83565d885426e7e760898346b0a051f783e206f0f0aa608408d3a745c16bdc0dbd68df5da3ba48e685067143ca9dc22ad699612b3605dc1a8a9c78320c1193b4ab66d1cbb39489092afac10a4be160ac20895c2194155b449400a50ad73126b5b31cd01c448f8230c8f66779bdef9c49a8dc9e5261b61448709ccc5441f74ee306831c4870bec1029171f2fab459aa6660eef9ccdc719624258e64e3fb65787d08ed06164952a0c1c5a447e7415a63a13fb97f2e4e7c9299946431da5417263a309c4e646aa6d7a4041e86539919b2aa04864a61102f9166ce92701ff8266500eae080248c350c87bbf7bc462ea8e17c574137cc4a62f146f7c6bf4aa25563df001feca5d8e235cbd537fcce536b3d4984c087da65a63dee43c9e7b40ecccc98046c5f55a1b01f3252a2a3fbfad47d7d9abb854a7cc73bddeacc5c45604f5ae440d0fdc24a6949beee27b566ab0da3d5d404a3ef98636c331db333ec57d4322effb6404a2bb0627d1fdf97108289b21409cff09e3f5ddc840a8d2179530af1c282da199f9f08ebfb2c9c655cac9896f74d2b288ce288897b197dd97a37e1669768640d55fc7b34a78da7e10fd37449e49cf61373541918c06dcad35a72ec57c901e517044587858e7099b7a372313171a96a3eb84f6920b580c313c55c44a305f99fab5071c7c1a02ddcacd6ffee5a904b71702efe34975d98f868945298663be0ab8ad8e62270c614a6bb92af0aa5f5825f3c20b0d30d75161bc504519eaca4d2bbba96c54a33f685eafa21a73c7a527bb2e09d085186f0dd78271fe494e4c1bd7dbfcc7fc50d392261c88ebf5d285261fe8c3986c82a23fd6d8f18b07478c212a2d98ff4a1eb959ffa6f44156b368da00454424abdc01276c949e912145bd121da46aa970237ae3b4ce51b5d601cec33df42e794e44e2db3bed470b299d2c3681249124505ea4f5b23fa5b170a9e2c4e3639a83572934df95aea302799a65500cd3de96b24431e417ac81e6198455e0f9e11ec1c602d42cacfcb9eccb41c33eb34207532beb52f3dba829a3cb374a9d4df710a39459c3d3efc571fe7e743ef3053f815b49af42e838b1ec164af1b1b270ff008ade0de13ac5374526a4044aa314097c7e740e7cda8a846beb73934c8b2bfaddcee606fe5b53d637a0a7980bb7524ca9b146c70cd90bbb5e83ba5f513944d2930a6d4f85a6a4d4f5c93423a4ecbb9f1affa35645034fafc27c2ef67fc0d6508a21b2a26f6a322a730cfe03fb791205e0822bc636372876d9897682dac360ca44e338a1449b7a50a2fd2d5149521518f3f4bdd1707a3a50b3b99a84c16dd9d2283b8e926c256d41caeb420a5651bed40c703022af934dd3748c58b178461a52a20c9a0fe44e97e4fd1bc5ab92baf76dbbcbca8dc505c534770f3aca15ab15a66571de0ee39e254c0cb2ac3a57b9db5ad69be06b02b3e79dacb1255b0aee870252589c7f60d25ee1d7b1f42705307a120f23800dcd273846003b5d3bd6514715dc52d20fe53cff00a3ed0b3ab9fc4d81d350235a736506f6274808dae0dbb129379894cf7ad3ecf74c47a0776a80bde83da5ca79fc29361945375d6b82d7c66d30fc44ba0e4adf53e2ea84b77182b058e390337c8e6b7b952bcda75c7bd4ca96129c388576e2adb9c98b576caf1cfbd95009b33ccf27ea0befb7d3334b9c6ec9029cf7be8f1494c2f840ddcd6436389ead1d8203cf9e47a3d937ee108f754745a2bd4e599f9cc8a2ecb78f792df0ac3d506450b4101b83c6ca05f562c0166d1809d3a4c0ce47069b568907801a29a6af9c2b7be093014366b6593d28cf13d9e7d0d7da65c8a39fd814e01a3c4fd0980ceeabdf3bde392dad288313ea9e1df510236377b9d8fb8d5721c2d07906a50c9a95d27986f737630a3b2a365575e69f260d4b8946c0d8e817e737c215420bd7f1d2aa0277fbd3652f340f2f0660eacf31bfb080b613c88485cae6b4e9d48c00eafc9d90fad2e305fa119e8a9ea9196d851aa4a40918d308ae7191f8421333543ff8f52eaa781521d3e99f6c394990e07a60d5df05e418d0461654276063122948998ff6b9cfac54ea6ae7b0f56a3316d292e42f31bc1bd70d69c67036d693074dfb2126dead6e17367ce8f6792ba15e6589e179743489fa013e66d999fed6feccf6c1d25c578db884c44522088505123cdccfcd024f0b6fee56d0b7cf5912b5d6a1296a5ed17a3349ade28a253b197f31b0df503246495e40225d0a8fabb8002464c07f7f93a9707b0efe670a2ddcdea0f35acda5d247ba87c074eeed5c8b44caa5225c9a20118137495ae2d8baa6dc542b5af8e2d1d9293dc45b72237128848af657308c97aaf65cc51153b901e6dd8763edc283c9156db54b85265421a4797712929778b7e4b03fa16511d1e91832c4ae5a9a71c5899f4a86b037b5a00d2a84861b30d1c50a310ce0e88ceb09c75b93dd10f7b707836f1b975734bc2c756a4c3943d660eff7a1ce14eee6ba1ff73162d9e41d20c4b8e808a69c217706099d54870d914cc54df1b18611094a3856233e7938b981590b2c0abd67b91f6354043298bfe4e0fa98f9a44828481e03e75ff8d9fc4f6b25d226e272311be91f5c9f04bb3a5cbd9072eb339b0c77d00a79b263c993a6d67a0fac80a4a5b63d9566f4a35cc0871e52102d93320857e919f40686a7114c4e10c4b933893510c40f0988b58a4925318540558b96140065a10f576e2af41b8ad81e5bd329101607e532604fa6fd41b1beeb0bb6bd057a19547955c3ef596e96b91b37ccf248dc6be1eaf5a855ed4b739b8a3a464ec67ddbd8d886ff93851a0b85b626c5a936fca77a286042e7d3c1098d68503d06f691b9650e4aacf91d940efa19e16c09f38b15e6ca99efe86ad342c3cc183be958149e3df83eacddf7fa0c42dff4590433b7f34902f50105e04d5ed182e757a17a5005bce41a04e2db2c096c753df3bf49b9bc872e54223721cb35c447c4417512d2c2fd7fe38c3ce7bfd8d865f560e145905e210c29f3ac14bb4bde01bd0263c0c453cf6f495746466caf66dc2b93b60fd6ddfbdc6dc53a1b7cb7c1db678316b6bdf7097e9e6ad7ae667292474febe8a10fed6457ad931c260551ac79457820fdf125a91f77ed0af90d802f810a467945c7d723e97988c5e37c199dfe57969f43393493bb2fbe08d007dec5f2bb0b979bc9f6d86d2aecef176a12411f09ab2baa189fd59610c545f216b8b73faf0c9775fd0e59b70e7cf36f7665d3f1094f882548f42fc90a19c0e39e6f8406b57aabb681f5ff760c5e197a0738d51e2a0bc54ecdfa8c2cd4c7248f71dbf2a4ac9a38a4ed0fbce4bd2f926b977e8bf2c5ad25aff92b9ebefbb22a42049946c263f75c712dd4bde2fbe0cc6b793ca7a59e26e2a606ffaa6d6331a0611cd167d148cc539dc189529526e464f51439fe7e6ebb53728f013618f2363b18d35d52f2832499df3d76d8df1516e1debc0972429cea1b2562dcaa3386e2d98c33c54fec95d0208b1426459d7ba53607a322217cb644376b271e3cbe85e65a32394208f2754bf45d3e0562e9fd68839af48dcb047881d99f911a90a897da51cbb620b1d1f4dc396828f31fbb9748c7c8aef6f36c9d4fbde77e60288fae8469c392943d00b5eee599855997ba40bdc44fcfc5bb5c0fe9346cb03d2eb18535d20ecbdbdf6e7cd082e40674ea46b7f60c154f1bc9bdf6e26f433fd4c72012cce2848e5b5b0301881f2b8e295ef9b94e50fec96c27c49a0131577686176c00e020cf14f67382ecb848386ab37d3626131fdbb10340b9e21cb7324ce5423353c38654cd65743e8d3cda236cf54df1645cd31be319895505f3b8f18abfd4237a25c6275e13dceaf5db4a9b6220253b04dbf9d1d416e9a8f06b5d6bcd1cfa0b5931960fee16cc9897d17ff8b16be876eba1396047c158236a660f67e6e43ca373ffc45f29c585c494df441a4be8e7d62a870c0d15c6ef1be82c9d00eb6719ec30d1abdbbff7c4d58e5ba2c73cc2e2b86ff564399604f6c3589d71e48cc39ff17f2fcfa1aabf8eb65436efb2432c7d44f796dc4e4f92353290bc66956126766ef1be88401d0893cfaf239f15c9d6fea7f6d0ba6a4fa81e50db40f2fc979f916ece6861dd58876c95d800d605eee9d1e6701bec2da7ccc3a4e5246e21f4396f5093a96ed3f6b4216bc73029ae3f042a8d7df493a166937cdf3e21ddde52c80db119e4744e829627b7b2dad68f1101b480ba9a7c0905f2409fbdab2f23c61cddb78506a2d0fa31e4cb51c32ea16b47503a065b39818098a06233c4d610baedebe7c4b0879db1ab8e6e520482286044c639263df57833e9f8a60450b9cd301695d6894c933903b211534b19a406119b5efd52103aa130c1054c8c9b63f214b93bee92f5424409c9c63708049cd3e476f4f4589aae0611f743b168eaceae0a900b6236a8a46a13ee4e8daabd44598e4865dfb51b5bb041a74320e0bb0688112cd64db597274721830a063fd9cb0f8cc8562b00f5c36f9c58b8453151ba75b5dec2894a7cad91a1b0340a02525ae76cbab1814902eb57da56652a726158368f475e3d1aab3518f610257cb83d81eccee9a9a5b359fecbf351e56bd8b08831ecf5ba02b5403393420a9cf254b8b25599f987a764792d69a7045678ab63e87f735f92474f38633cd586fca80698ced49edf2d13ca435b51130bdab9bfe4bd7a3ed898c765c1d312aad1514ef1c3ae0cd48ac6917469f7adb73cd07f72bf6cd90eb81f1373823d6cdc1e45ef951b116611fb8951746a7f2ff7d90187a939ee33c8fce8bd5500b70331e717a363d1e51bfb3d0cd5688551502075b17524b943b2c89f98bf7ec73f183582421477ac68f9e6a1e1a1c1657a887de699bfb30b5326c21443d6a81cb090605c1bfc72b62b57a6f43dee5d77434e4b7f2c2a8a611e27d094d84cab3eeaae10e8f18891757634367cad2a44677e34bb4a795e9a4cee9b72c31cb98ff9020f840b61d6e43b150d100e20891cc5b03bc5262161f907a763661ff9a50822b14714fac8a54af0c20ac1ed19e88200939b8c6158910b7a1578c91c34ab97d28e30f9c057b0a7348f592005b940850f3f582bd502bc4320d1574dad762dc598ea4e348676be5f9c91e5d0c57b5e0041d5ecdbac4ea734bd43b976bfcba7e56c17660097d8a3fa76a0c84c5a4e9dec289740100efdbe8a191274a3e033e3882b0c98f72234a7c72ee0d5447777d0a04757e76857ee43ddc78dff3699dcd6b3e1d444ae023625b76cf3ec9a9dbd8beed81a8f9bb542d3ba655713507fde884cc7145511e7818fea85e238f76651484c6d9f32ea544152a8dca2a4500e03b202525268a20eaeb39bab5519056e7ec922292d215c693234a0a600e8a909dd40f05477a857a479283e26b39d01abd9d8dd51124a30934946cad629ff83f921ecaaaa546ca71ace107150de3818d39647da5df3e1aaa7195d8a732dfe8075de53ab8ef4f1109b6c92e6e7bc5c6aa87ee6aa2c5be6036622eebab9769010fdf54fc4f9c9363c6164c75f9c03450d82d9c53548231c15a91bbffca2e11845a4c8019e0149e7a44c8f89b128b3dafe659bbd78dc3a0f1feb9017aa17b5e0bcd2bfc0b8d843360257b9a103355d5828bb100120c4e9078a125bd23999a8c2b037c0662c6e1526f30c55e61e1b8e8488a77e8e93b7501698320c2d4eda9c4f7cb01a8d607896f8d0f460b68ef8ae57c86eb2b3de7092bf307e652b147c680ddbc9b6c5d203f68023c31b2cc5ab4ad62180eb08961ea7740b43ead470721dd9ca9caad2cefca6817c494a09f97683c44fb645f01d8b59606657b9ea9c107c678f632b2c29b520dd23b0e20eb0e059aade6fce57cb3120201b392096f4fe6641d0daaab6ac564e62a7f48553183b27cdea09299f2d7ad0abafc88135837bb48f1afa034c4d3a6ed8f857521a474239aed6c3bb0baf5400ccbdab00c8019ba4351193ca8be67afcfbcf0a0d6c5de060c7e7beb2f02c9ddfe777e8cbf29034f724a248e8514eb4553934c5450fcc8fa029e6e57641532aeb70e83084065ca6a62e9d38a889d7acfe9e56b868fe3b429597ea36f02ab8696e8e9a520ee7c59df0d109e73e42fd11ae7a9c36762ed043a9bb821be20aa15dc6228fd0c9d5388a83d38e986c3dc3628e38b73984608aa7214dcdd0fbf5900fe3a4b5526e02ed6f6b779b3160534d35cb7d9792e3237dee31ee81926ecf97b465e1d4f5d268398bc7476cd6479411cb08ff90382b3ec582901d7b281624e26d925e23cec6c4be8cc746f8d0c20f364b72f1c36842eb27b88e1f1977a12d8fb9578b6ae7fe1ed1df5a5d1c1ac245ede6ce776b89b11ae47be94cd67b7eff36e62b7af1f0d3e238b027fb17944b43e455c33c92586180d360a76735da5646811ba50153046771edb5179d6c39e48532f938935617c00a8923cc91e69413ae20a52fce7fae8a6c6580c7a09d74b8955cb0f0328b278ce56250668afa34e4268c6ba00022b58ee433919eaf28b47d765ee3a0c263984934503f56456a79724212e1b4286189d4fe6216fd465d4af38ead6e727a52038c9106f173d32d53e0c847a41521244634631854e5096e71f0623c4eaa3ab3803286bd72394fc1e938b95c289daeafa87de41e137557f1837be8a854a858354850c8461d0586affce899cc090124a386b92893df7d64eec2a3373c02684a2ac8164af3af3f517c87ae9fcf22bdd697d1c4b67319874e7db5e360685295fd932cb4a15c2df16edc3a2741a410ac7f794085afe672d924d7abb67cfa1d826eea9ccc2fc14f541651b173002a171b940f1d25f5262918b4f8eaf0d68e8fa9665809c9e07aa502a4510f43b0b8976abdba4ef4e3d9d718d95b8aa241ed5a516be7b2221990bbfca2a8cde204faa16b857b42aa9ced6d3ffb33b5e3f31a3816f64fc8eb2f7c60a990bbfd243cbe44bcb0a76d69c5e3bcfa83cac8ce73c5a7aa4f418da0405c7ac9a704a181cb17a6ba192a530582695a73dc56007b89ea0aae4148618412213ec8781b87749fe8659d991be6a4af65698dfb24c98db46ce2d787af7ec1677f6157988c88cae8b780affec7097b44d9600a4ce41a7c13f5d378544311d844c2a7eb79c9c4cfcfdbaf77576347d6f05697852030ce638a44bdf8cfdac8c173445632cbe256b922edd12feaf52e3e7d74936e101b420a395ecf4de46360121bacabdc937f7df25cbaa8062dfab913b28eaf428dd75f3cef2eb465d08c238919be842356e20e3d1d1a2e45cf1921493e28ac71e8b81af4039f3baf19ca365e57d28de80618f74cc73ca5223f546991d2266042f17f00259ab2ad1c5faf56c5463900a35708f33a911d0536ac2625d53ea8a695d3caf83a4712459e95f6f98eed9daed63f328772ada006b73292bfe5c40dbc8a2077a9373f86f6e231e20be4c4ae125994220cd6b23f44c25d600111faebe5c5b64c1d17675c4a1ebf334c2696589f47e57af6ed4329d69f6f47b2d833ef16ba96fbe971041b48c55cfd7be4359c4dcd178bb92062500497f5bbb4cd29c3ea140a4ec27d4a46c54a3fef830062040b3ee65d4777e4b2beb733f1a86362148e5f02c4bd7428064fc6a4123471e7e4ecba32cc22a5ec80cc235f3c0cd887476f3defe956c4ff359a8fdfe25bff664e7050abf670b7fc538ad1264a844a5bb678115096e994f54de81086345b20e820f0d79524f4f960f4263f2d57d00c12d6587ec294cb13b6ef4f6df55159537babe10a3a0dc122d3da3e934ebbee319866ddf207aac99c242078fdcfc8ce656a5b15a3f468a8985fe2fd0c86f15c669799e63e784798413a3e083107bcd178466c276491223900b6a60c9c3bda2163cb8c05899829b48975af6415ca078cc16f39c7c1cd151f327dd96a2c5ebff1f8a17f4201108cbeacb31746ab353afc606f15b866e21f8e96e8ae71f07ec41f1a0cfa4ea4542463edb3186b9b24644f2029b3565908ffda3a1ac08bfe2945899ca83a982b58c251c77da0c1c55b5c0ba1862d8fdf6a95f2c77fc0dd54658e345f691098a8a6244da25fe268d91d64a06c59c7bb65c016ab83b5965a29a635d09519e87344f621e57a55a42750aa71f99f373d9ff309fba4d793e77b020852ec0d22ca33e98ce84bcdc578e6b89f3dae7da1b63bd03b57dbeb1aa61d6b3f84b009e1d0d818fc876ddcadd69d926836f0d4d153c0fa177b322723a295807221bb0a8b3ded934681a3498f9981e7229ed23a1da4e76d6c45b59d0a1a1eedc65731c4f10fb466ba199392b2597f3a722c822469a26326f3bfd4acd83b6c67b93b84e6ac0597479f12af6185b90efcd0feb098bd13c60f49976f7ef6c9de931b65e20fdc3a6d98f7af51318a97c6dcbbd2e3afe05f78c6008e737cfe29d481cb8f35a3ce2e587095e6da92b0f4605b7dbe9c1feff6c963711e8f6cbfc54738ee2ae992cbb261bb0259c96a1ec9c31c06c3fab75ade201f04cc38b0553dd72f03340ac75bb141f05bb59109e91b151b40e38c85923e57eba6e2abeab00686a7fa3b8af08b8117d6c150c8190971d69becd60628d9843b92de0c9fc1e9248a383fb5302812bef8e6f13e319b05ccb9f2df6dc197880195e8f51ae297a954a632eb268ea6a83fdd4a07a06f987d100ea2da58d8a3fc113b59fb2346f7d6ac70f3fc645b6c40e5267e0d647b9c47d03686f358629e671f66639ec7fe6e23e73776922cfe14ccb3e7e580f91f0b8fcd1560d3256762e8e2dd1e2b7f76753ec8791e2e055a65abd55df9ead5bb9188e2555cfc68f42a6ab56642ad807376dcad9b5dae44603e60a7383396b3a9652c5f0ebaa1f31d74b752eeae37b2efe822667adfdd072db1c14b51b9d08809ba6f379bfdc0a2e1d2be020634afb531b78953fc4a95de55a136cc3bc35d63932515eecf1d5db669ac845446e2951f1e0675f927ee241b378368a05518edf4309edbb58867b9a4e40325e72101834af6b81b1a4c1456d9b65b26d4177ace4f2b6608f7f7f75d81cf27aa44b129887c92769ac85e01aa70d44c4bfa78dc1c9259c107201365f3bc9a2b03d0bda42f9164ab6b98a8bbc9a8b91e8d0068281bbda839d7b4033b3b32b4c679514f2c088f90ac42ab485060efaa77ef500af20d7d1073449d863945ef70c5b07f50d611e44bc5f336c533810c3ea762e0eadc8ba14aa45f1ca2325a9952e5557f0226f2a22bcffbd00b351ed248b68529442ad382fd07ef1c6d36d1de8979138ac757b4f6b4c12dcf73afb9edd2a5bab032eee2a4482ac9a2769cdbca5aafa3a1b96bc9d9912d868331ade3fbbcf3bb81f2bbdc5a1aae00f212be3c0224a0b6741bcb7fd431a62ccf0646109930626ade39ac0179699b3d6bdb8631e62cb955b3676f39d034423c015cf39b2adf3f72a07ebfe96064825d0a2cd1233f0b0056a554ca68159c03c299ec29d34af952580bba14e10b17e72f884459b0e0c48e763a3c0615a4996884806c71b40359bfef5d72ef5f645f73afce680b74d0b3cc0f0a29e1c6dc36e53c66ae9d31e578d6bbdd7571bbf61f348bf6e4daae7b50960d0dfa1985969f1bab96003c3da744f655ddaad657e573c9f279939d4a89b914d0e348b627efdeb4d64b153a1415e743235fbd00201655a0519b284f00dd350dbaf7db6cbf4afc252d8b98ee17175088aa20b0da3f5ae1d73db85177724d4a3851c1459279648210b08a2b1aa099003c2ddffc0dddfb4ef4b43c82a3242ed69c8319e103b8ebca246c1ef05b5fb6d8c1ac3618b9a92d35d560030c07a7067def62c9f00c5c3117395676f0f8a00b41fad18157e1442e3ebd410aeec13ba43d10d442a0b3923aeabb0799b8f58e977afc246c7e3c53ac64098c463868480cc4f02a5c7451da30cc5f8c603041d74a353232cda6d34a4793156a00c2577a4a752be525a96c901877136498addc4e8a597702908ffe6bf104fdd280854fe1a198dcb4251b3d77380b848141b4c3c663ff7009c947832865314dab07dc9e0210aff507b6a308b9afcc3a047f01372f0b37a039223f862499b879dc1f455e8dddd8138953317f81717131d3b17ae0c0adff98eba58656591cd0ba54a88e1f5833acbadc07445012a64e0124d71773130dc0f42299f373d20ab488a530285a614380d1a957cce91792fced37f920d4bd4efdedb191a9c14817bd1e91cc06c89edd75294614228b39c26f69a4003ec18cadb706e67cacf9f18306bfb2794b4c35e20a2cdb93ff9da58e372cecdec81a17f1ebf4bfdc09dd1bab762c4ab83adfc730273545e93443fc913478da1a759920d0c77499a38779c73c113be4bc22ed5636300c737001c4b06b634a0126bd5723b84ef5774f5b72f82b1f46967cc8a1737f1b10f2db761e5530e48fb4e9a0de9cff643476940d66a1daf57ddb490ebcd8b83d110fbcbce68d6967ed4196e334e2a0be72a50108b9a0c53bae9047648ea20a21707582e57bbe0655f79349cd8a7bf1b4839b98fc67430e7dceac8928bc2627f3b41d8cb03870e8480a14deb5e2723bcda5ecc20263edc9f032389ea0ec1d667e6d73f3c781dee7ade96fca261b14a1005e021a882684010d7fd8d507f4d8ea8f25f009c253ded65a186a6f76b4180d7d5aa7b9d2c0dd85d2eb259fba91caeec592e166235edeb37155d6d7b2c904da1630423334ecc99a137521d903ca45f51a221ef618bfd001e2e1748b9486b31d34fc9543cd5cf98e73ea08db6710642b4df3d947ad75dfdcf36436e6193d3aa9885ef9b2874fa44735fff825c15fa6f98bdd28a8dd8383d2f560b11c9b45c05c60c26b1534239c3b5d4dd5d92e39cb66bc69e137530d5be9339cbb98cd5d4338e52a5b1ed43d9dfd136b91959874712a633add246ec5bcc02424de50bd2bba4ac95dde0dca7514e55cf782715e6117a401f5d66971eb60ebb1b91b428f86796b8e80f06133231e4bbd489ff677c4388b6ea6b9ea2667b76bc69dd8071546e540551a31d2798b96769a1653f0fa2ce77152131a772ac75b9dc4a0da2a1d36cca69e7848fdeda2a65b784d92bbf405e2adad3ff18a033716e723ec25f9b2134d5aed678be20302ccc4afd13e3543d4f5a0c0d3561e2f9dafc57b35243e4bad3c8ce1fbbb8253d9570bbc000cb95e8ed6d6c1983545c2ecf70ac256a4f1fa86ab16298c0ca1fe23a5e28dacde8559c1c00bae7f4c24badc6ad6a19607edc9d533e1f7a03d45f77736d66f04f1d11f568e4a89721c2208e4cbfb7675823286f6fa2890e0f244d03c5780e9ac68e604363900fa9c75201374c80dfe70c6ed36a4d8f1740240914c82e41801ca02e7ea94fddced509ff40ad0f538335c7c84d993be442021acd317794b46f05825409a484804d3244394db7938991fec84418c08ad62473f668adbd746d98e440f0089d824ca06908d8ddb8a2eed9a839b2437a604921d429ff137e657d729c60c37bdbbf00b4e894764d4a735ce91757e3e24b847f2c5257d0681f602049fabf84ef9cd5953cd78be2303415afb3180fa134c68ffd39411d13ccdfb544378ca25bb7d54654d2fba74b78839e3ec9f35e36c5fcd5ccd14fe6ac7f617283f1171d6e75fa7ff0fb4d86cc19dc44bda8c901a29ca7b9faf6551caad01dfa1de5b7bba5117cb1e3bc4b3caf146ba495fd5533c2b716440e0e97a8f28364de97ff42c1d8121d69713e0e9c6b75724c89ae6ce39e33de34f71ae5c08bd77024c9d08745da0f7b6964fa88e3d3fee9fc9f765967e0599a962eb9a6d855796d78e5d41cf617d32179bd13d27b772a3a80a7ab4f775f4e07fe095f348d888c57bc0aa6766f98d4d79e03791efcae603d498d117a5180d0f59142a1d0065ecb5f33bf3f5ac6a14559e0055419b9755f2c4c9eacae4e94c67a7d76f4115df7a76cc313e6762b5b3c700691a31d90b4c576626bc2c944af9d411d74131c5cd47e4944610915500f828b8a3223624f9cd382e91d669c95e763d0aa0aa8f7965626ec5638abafa1990e839df1f74e3a50e1addcd691d9b612afab1f35a95c522367433dcc74053fa096a3d2609800366390a3ee896ca14b130d4293a32ef6016e89583726baf20f56ecf734e268e6e8d1683f653451c8fdb21758b13616d035390c23b8ca072f127589734fef745486acdcc3ebf65ffdf778ac76d01c5f4510fff19a89578c42410704bdcd9794d2ffeaf64c03eb4be9d09abdc5ab46f9516aa6167a54e98932868bde00b854028c01f852cb8d17804a8f4f96ba0054797946e6b2168e2565374186ee990a27a72c7634cb4b064c5386a4c480aa7e63fbcabf526dd95d0b94fe58f3c50cef11932f084500eab34cec34768b7eceea6459032bf2b68660a59a8c5b8ae628994fda80f87d04b296ce78c93ede7441c5aef9632003215aa03da1a462a61cd0a344f92efbd69ddf252ff1fdb36d05d2089fbb458d32cc88a4dc54bc4cc9c427b4c9a248bbfff583ba073e647cd9ff9e64d3631814864b800ca2b64127ca42eee498d58f93ef418a471a486b28f3b25d08bc23b1c6a2266b5285b28085f96fa13af366db8dc99d4195a23e9e6e1b85e2a81628d891a8dc26458153cd1c4b2cd30084f5d295bed775a2ea7df609cdb1fc546e27391a7b339494ebf613f21d9f6e90e09112dd0eed1f179030938f8cf0b0d281d95426cd161383adbbcf0e72a6abefcafaf54a4657bd913cd4f9936efbe38bfc24ae09e65a795786705424c792db200ab45180f881b00f898602d8cdb240de11278e8b8f3f7656647f706161f0887e5ed36391bfd079c5db4a046d93a545545a7de6277ec86eb5865ea0739e5a9e58306d018ee353e70f248f6362152fb1cd6a79bfa4478e4d4cd192ce205cfbe7ea99df0cbebd72ad54b9c5acf85fca9a1ed0be3eb25623698c8a2b8f24a7e17ab2a98a9758e7980d6241a7e946713e75acd14aff4a992c8da8ea1716a39e06709a745476cd92325b347393eb0e7b2689cb4586fbb03f71984d224aa4d93956d931945699e6e95c27668b721fc714c6a3ecd58e9d7090556b36e923ef42acb973523e00d192444b1f5e17cc264ba6dfd2e96e61dce8c2c8ef7165a66dec044965b38118544bcae009ebf227ec562c0af21097550d3b3b9a951c6e3b12b7d4592cc0361089fda337e2fe4dc40016bfaebda0a0c2796a4ff595922473c3d494733dd4ed6089d75e8e9fe31237605204db1804123d623bb371d176ab95c28a2b2a054151cc52e98906980f42707b778007dfcdd3b8a6a4feeab964593f9986a8ae9cf21bb1e946e9c6a4a3bff7113e2818c71eb8426203de1f5f043789d2f5a8d6cd4bf10a9eecd12cd637baf908bbc303b2ed8bf9e7cb1c1be08ea304ef7c9f72cbd4953143b85507fbadd17775534af3d428202afed4db682e913cd26d89885ca7d101c1d8f3281cfaf8e5cf6c8d205ec6447ecfab04268e23b604032a0a75c5520ac393e9f63cff2ed84e5fc95e571be1e24c7820508bc7abea772e583b817f79e54f4b7909f321dfbccd6580bf472be5d958fd123bc4e4e9bf16b261d28918fb07f62311a7eeb2ff86590ff0bec9092fc7448b56a1c15a6a65be216cfaea00879b7b3c7a0f684498ffcf4813f35bb5686a7c770c8f845ea9cfae8d2b5f2c81dda329c73bd0efb0dcc617a925852b1da00d456a6fe18dc17fb9717b1658e7f91d46c4c9a5da2d8c084a803d0c7ddddaf28ed55b7046ffe4cb9898d12769a315ec31130cddd2ead208700aeee9defa448060966679fe1751afd76095c7d20e2884a7d03a7acf24c81c514bd64f33d1f30243bc9e89eb2427b7d407a12b520b423b3ab032759541d110a092ec5caa7fa211ce469549ff091c9e87beed06d5624ffa0fdef77dac00db87bc031106e81b5e3277bd1575105e8817528ab87b920d6defd7ab98fae98df0f87533aadd52e715bd2e1be457f357cf653a60ef915ad8a0a9ebf50465685b39b730890b111def01f968bff118df9fde86ba6abe3370381a8c9d38b0aa0b60665555736a57ffc18273d99a7cc813e31554efd6df5f2e9c084bfa278962a34740d717c050740b9ca5f692a80a17e63b99211436d00b7ebcdc83be6a3eccbd7a11d14626561faa2609556a6e50ec430d8b381bad7726b75d043354899b03a4c3e001e59cb690fa8cc419cccf262765f6e228f48917a496f1148d579c118e015dc0cb5616ed6c8ac5a8fa477b759da8ed3ca380ac1bad58d4744b5f67f464f2462919303bd679d158ec787ff0f8d9e131ac4c4177fe0a0a6240716c255963e36db6b0c6240e9ff39eee0390e1b4c0fa72653c304695b3458ebfde0145ebf360d9023b9afe58b25bf413c6820705637caa227a2c7962a0cfbc130dee941d30e1d2148277e14aeebf983f30d8d0b080442f8639c18377c39593fd83654279dad0e936ed611c16e1a48d89b9e5efc48dbd7a2485423a5c9b68d70f7edc6d43515b5f02e61cb22256459523345bdbc4f62c632d9da7a6e5bbce059e99d45d66a046e6bc788fa617f221d75a8adb22c1f17ea3528c1ba05ba6b66f225096d9532ba3409c7e802b304ef9322581a006a01ba6747b18fffca945ed8f34aa017ce98f0bdac10bc9cbbd0d9cf951d498d8b44c1b3930758b8bbbb6e7ebd80b9234283b4ef3328b47b463179183725cd7c38c7e9a71e8da343692b8705db9cf8433650b43eb0b1fbce17004d18ece261aa42f0d45fad6ad5da3f1bad8b538b5a7792e0cc5ab76a7fa23612b4114f146674527a827d5c293cf72635f0af7648c38d07d0e3515e8df1a8d978be7ca8a4ba57cc497a99e2d2a5e44736a6bdbae81cf041b90941b407be1b4d6a192afbd4ca3da4a2be1b857a781bf8b89505f37be6205366ddc068ca30b6c3198b4db79acf910d3e0e512a277f2503d0c789d574b3f8da72945158518061dc67cc52224ed5dfb5746b6b6a46a25add37bc02f818979d4eeed813c958b57b1aadd5586ff625a20585acca15706d7732fb08ba65c90d8010bf947a53e7f37e1a8ee950ebbdca76625d0112e8125571c014f0dfd76fbbbe929e52e53a76479bbd5a9de29e8df3d6ff700d69b2c2349d57ed28a1e59882f082d18c5bc1c730889cee3c9ea6114430781aa69ed012fc84ffff2cc9cf1b5f622e84d96e7a7c88477ba621d3c97ac5a128d70bc3888d5cb099ecb7fd62e639c6455a6fe0bdeb791e6279a2c3935446943443f66b71642d3ee3d5fa8819043a2fe3444bcd90db9a0e934de0e6703175d574f8713c166f867dee2e58bcad17bf0b97b8770d8755da93288111e53baab8e2ddadc74870f911e402696cc0b53cc2a6a089dd5657fe911d8725033b5b8fb99933ee011e40fa157f93f4da5f308725de2c312e7cc7b0803cd341586691a74e252cd9771fcdb18a6aebfe1b3d9d0816528a96a21a090bca46f8af26fe8c35e7d5cb61bba8961db098aea5676134fcf699a6d3e1634439530b99c321007f2f7f512e3c326fa07b43d22e97780d106eec92d627fdca9cbe9221109088ea900840c35bc9993770e4f24c9c562078c91503d1e32761b8df9a5a8833f729b66fc2620a52ee63df4058764d9be086c6644ce97af33a4d9107734549b06caae3ebab68260106e0c13c89f5b9dcb7b68f0d6940516816302c9dd637e785b19ebeec2524e30344c7da5fd1f2e828cfbc706e1d85a7a37c1dfda9fd8f7385868ccc28c29f620033d9c258c7e9c54490c28bb781faf466fb488bdb9841c070c427a825a92da0efd777776b975c19de558a534fa05b21112537a8f5a60cb5f589ea49ebf822fc530130afa566857b81b47d067bd349193d170668ca3335bf6c6b1367b110600324a4866b63cbf376f26fc4325d2f230e12b555330d418e9e6432563caee2dc880642f72053ff0961b3f127ea4c42c407c5b4e6051c6969d5daac85c3d811f9d8ecabfbef3469353dfe00301fc7e4c845b03f52baf56f246f7aebf0b95f07ea3e0ee8d3ca753e85fc9bd19f4aa94082ed6eb09db31a41d224565b801cc76e4712f63340d2f81d374419c13b40ad3dc7742e5853dac04817c7d968ad70de4d126b9e7f150d672bcd01fc21d5134712ffd4f7ec4a8388c40005563a739a21e5a67560fe93ed30d999d3deb35364ab4995392e8166e3ab8359d641fa71e9c09531c8dc2cf9929f2294aa3b323199d6beba39e9a64eed672a5aff02bd866acc916a32552dffa004564760b0871389c4a3711d307111f01794650332e17b52577d6023acfe791aab945bb598b9377c7f71db60da28be1a9cf642c52ec7c3c33a572465f1fd6cc251cb36a446354b4febd211f9f1efd3cae15c2f2b105a24a126a0f14401ba916e65e864be316410796f1fa107f5c5cb1c1b0fe566cef1c5b1364559110287a3cccab4aa843e71d7bcfc8ad50e4a381b90052348e1d3a69bcd9f3f102afe522a0527ee86ba987e9548fc05b772d392b86803dc70f3f07679ffab0ff61f8d74ce38cd980bc52199a4860e001d96a0e2fb14d8d5a4e5288af5cafed53747f29da13c9741cee90b7627892f452d7f132544cb0e4960299776653b7d756f4ba2b465ece6e0537a4a7f43810dd840e027597229a18dab44550ea6637a2562b6e18a4a3811d1783e16595c7adf7268cf9317ab62fa4956a9c6fd215ba3110dc225280421ac765be97d940e0b07e07799b85533dbd57db6b877718a1ae489c3500f2767892d587fa9c820a37a2d624429e3ec4b5d644225328077f724cd55512c6dcf43f9d32595c935df3da7ff8975f4e7ae2b8e205737050ba532b2e0442c596e88b0ad91530403598eb4772a13ede84c198981e42c970e5d172aab8382fc3ce06d1cbc3c6f8c2b87a20f1cd6a710e532307a4bc818da04b55a09baa2128600d00871abaa1313359151ec2f67e27248ba08429facd14932c6406fe8094678c40b26cda6fadaf5b51c0484067b537e6faccc75f1683322bbdcdd38d8a76e52e59e5d4b9b742db342c09601821a6493eca6df6d08c6d9fc9518b9adfb0e8c4f384b851e0fa1ce983c17ae5ef304b2a40ed9a6937db89a673c5f2d6f721448460e21f601e14a27f5c373ec91d6618fdde0a75585ef642cffb62da0941b2e2fe03a7fb5172b3172f7fd2e83a63365c4d9dc3bd1d0b4dc3f6fd27787d5ad833f6fad94e973923c648d1dd5e3609c2eec4e42b087841bee052932d8cb5b526abe7aa96cd58f7ce9244e4ed93551ca03de4c6831349a642a32cd1b4e1d6af9df3494d3a1da98a7f6bb092d308fa9724f42e372b126472a193173c35778220028bec91da33d555c0106c67bf1cac6eb6532d0ef610bc7efd3b9cbd6ccd3b5db4f63a5ca0ec4432091a20052d70dd5f8bf2750283f5f1ea6445f6b1f659f3041b4fb122243028f93776a1cc799191d06d997e8088d72fa7ef855652302ed9d90aac087004dd516735994f4d63becfe0df9b256e63c75ca9a888a397e2d813e60fbacc1c4bde8c1324eeb6a3eebaec4d830e23a332417df1f9875efc856ddef3208948f694960228920ace4e90c98b926e1917b96cccb85e3ed28bf672578d95676bb1a4a01628dca862a6d54f4bbcd83ece95167373a88e3304d6e3239ccfa953e0550ba2802514f555032b07492999dae486abc38df31925d295d837a310b8d0acf73cdff4e49e02984441e45326709c82c9f152e43441051a72858de6178885d7e6e155cb4ee19f65afa3ccc7b3548c4b8fa4415aaa6d7372ba86b440d9357d797f895fc42b5053d3e97a73c88de3f26cfab159be1ea47255d21d1d6d87d3741c1b3528670c7af490fd0ea11aebda4cd61c4c66fd6631922f4b440854929e45b30fdb2caa924bdbca82c986976bde62d84b7944e6da333338842d9f41fc8a6e2cc6267f7ea30f553515d40d83871cd73ff1397d180e93f301b3036ddd55f9839dc14f8db212885ccbf3ebc1e0c48ed46451c8cd4e7934a15ff124dc721d2cb60d3ac88efd0c833b52cb6b1f2f08b497254ac6105bed9fc3725bab54d84cfed3c5fdd9e5c4770a55fb6d9f4ef7a0a67a0f719b700dedd67ffb6fe3773715f5d925966a3e9dcdfc2457be97c800dcc33eeec4ec23edbcd65ae52548839988e128aebffc1be46113b4f5eb3568c72d4086111b93d0865c6697e3ad5152f13bba7d5d37e51a845f445c25d0976872490f03082ebb836fb3e2351538713c74a0df89257138b3c95a302d1f6ee887a4f82c6e8fb37dfed775a507fdbccd7cd065a18f56f27f99759ae764d1d76fc91d168ffef9fa196938511cb8c0b2f829efee49d7327543729c5177dec5012f16bb0fb4aa42d04a91b0a90a5e404600428d0e9494dabf422f65c235656cd7f812345be81e99f8a2fb6519aa9dc162812c1843921a4781569ab572fa486764583f5fb8c4a40b477ed26665a3d9a0206a678ac1f81dc3891651dbd2fa3a72224a5e9bc6f9ca4c96aef02e1324106d28584b9fcc4b7fe4d6cf809cee5858b3e9447529bee80e8e4de34aeac0c38c671f7789be0bc3c89b00d49e568f5d5ccd8c7e6b01d2d1cb9303b2e2f1bff6d24f27a5589aad0a0b75d17516a4a8ff75c767fd09bb5657f641af682979e8c6ca894d12963d93e9ca5cb8ffd3b889424333e48d3798f56be7b83fd0f8fd405ede949efbd7158f7e4afd890b9194a99dc4772951681ed528f6e946c86e7018f4bdfdad369def46ec01bf9edab18c91b2985ca68eaa7c6a7cf61e00780ae564f13233b3f36d3711f73b24118e7416a458f6e63a035a9b5793101f365d8fd436799846357132e22db58cb889b19bdd41bedb46c6c578858a9f4f7dcd11debcb8c3853f2c904752dd46fe01ed294140e31f1dd994c96b4a57cb190e323553c3e5bb3d82660aa245cb223b950b470996a208ec6042ebb5cc4928b83cc079fb83db3caa713e7224aa001b5462d32c7fd69d8fa3f707b040feea3a86e42215b7b8638143224147ee85e013b0e7bbe99c37c6bdcd25e85c9db72ad46924dbfb22d4bf367959ef9185104fcd9f4b0e2f2ea66502a10b8d4836e01ff06ebde39a67c7b9405739b1da5ce9e0d319bae59dda87ade8256d21bb5af055ac61d1f5d4baf658f90d3e81bf6f59c7a3486f4f196c6b7a4f9ff7ae7e733348481cb9111eebdcdc081a32a485b8b88d520cf7d34cd2a0906bc70937a5b7ba67a16b422a7098011f31f337dc15a21be37b82a405ce17c23cc768b4f0ae4a126ea22cd33e5c1e679e2df5e2e52280ae8c2b3a9c312533de793c34fcf735d7c577c5fbca8bc8d02cd9fe206f495269e5d4be35388d70c6941227cb31626f3a80b2abb27de90fdc45b55108050b3259e4e3051a77d9c83697423f35d6db7f6c3d682d52c7bd11a8f8f2f50b6c97c736df3b3382228cd25fb1c4d62e8e0bf9c0d764f17dc9450bdbf5e6186a3275ffaffc4cd9f9c08207a98a78df3e86fbde13899969f8e41bea3666f486b6846c4ac381b665c03bff79873cafd1c94f4bc938ed135cf87268aecf1baa326613274b255227618482e6336a4f14638417a44c1b7449f1b147fbfbbbd8c7f66a93cb5d178853ed81e3c5aa7efac3cba0d475e516a24ed2485270ee04267d1eb21fb6a7e8b3ea2e11d116eb3b273453f0c5743e027a8f000bcdfbb029fb241e6bf8a246360485096c0961834ee7b5734a8be8414bc98b9f827f239914f4e9132c6d986f03ad2ad1471efa36476ff8a1b7d7feb57ffd99b2fb2f29ecb04fa6f5af69f4bbde0666e3b25cbec15fcddc2afc7205e54acd676e53b81b7d511dacefc8350e6b52d3cdafa2ff19185da51afb181c3bf05a6a6020bc43b29b14ca046420229a3a957d9e60667aa6736e6dd8c80845d7dd6fecf7f8c3f88b1153b592271cb64560da72fedaa2989e5aaff79f24a5a4ee52c40ac24c278082b9344a0903693e71c75687fe9b5e1354b8f84c4148022dc07e22ef15f8704291e994c0748fbcd57f0968fa4e494568d579ae18426221760ed706b15e4d53201ee699f1690a586e7142d2b53dbdfba0d3e52063ac929bae6740482960fa292fa92829241dde29632b234df78018fb9d55df72430c2fbb6cf29ab08e9cc64fe498ecfc0138822144ff4b5ca0d6d434eb312afabab42e6953d8c99ff978ac532bb2a6631d22085b66d7aa7e4f28606cfa54d56828ec22e673500a0c24b9e522f78394ab4dbf1a4927f3972b7b320dcf564cd67ab628dee22563295582f49f081dbd1e50f1c2ebf616128cdeb3fd8d78df5455605561fc5c8d810fa5a42c7818bdb6bf1df5713e1bf1c551387083e0a014f970f58d6d414cd7a51db240f4c38522b460db92968e55462a3fd7767ecaff21c6eab440700b5102c0f4363b0af809d3026d9f0e8c042d02232d7c40c465de7bd343a169eaf32672cf2862b3833c6ede90e6b456d30463aabe549bfaddc6c634111c0a4c3ac27fe2d54e808b4557c08283da6eb9e07db5e49c19c777aa2a4388509057e1e35342f8dbc155aa8f2baeb4de5ff65fefc30df08c40f88c5cada3f834b3b7ff2ea5c6054d4027f9213729498e7ded5937061fb799568e99ce2099d8aab46faad50543f71747b37e8d1316dbcb349504fb254c89d4c69edcad3214f25e1a68e6b3e620f91739f5240f363015eccae83d02f4c568028d6e37f1eef638cbd3121749c7658edc4164dfefcdcafe7e697501f47b34106beab1c58f512c29cc3da73e044c7496022048917206771246aa8969222fec859afd2273994c2baacfea83326a2c91507a3d8a4a1796b351edd0ece3bab69d6b3f7783314a73c2f7d9cdfcdee35463d18adbd77f7f47f9b6c6b0e4815b88f7522038e220851e893f34512a591bd4294f083b56bf9f4242ca4cfbc6b9fb28a05d66b4ab627775d27c2165087d6911ba84b63d410535e55308ad1b4cf6d684e0f40467f7d76766cf084294b43155a73ef2e158e8dfeb78611104e36293e89ce016958ed18c44a288db4e1df954be0c44451ea265c18d27228af64eac11fcf6b6929d187559942d244bcc6b2273da1834557df8c8150e78ac323eac0cfb92e7b5f58501f6444e071221eb5992fc23207f84d6a6cf95ae599c39a77e46f4fd55f77438127cddf8db63a82e5701b1e5e545bafd57e19a522f9b391fa9e65d967b4a3973f9063f03480719d822e9bd662d8e099471d8451d09922383960013c99208cfee07f3e31d8d7bbdeba41d5181c9197bd40e1404a1df7c9b503cc2825446cb5b766ea5a3ea060919846bcf190bde03d8562b68979d290836ef1d4695a7dcefb00ff23bdbeae9f1a279fe07e20f2452e673338c224f35131d83f3125be1a34e107518fe6a8ff2812655755559f54bb5653ad4ee0923937ddfe1bf9d0ab0fff2d93832dec1ad30eeb8ffaec00fcf82d6ba0532b9f4cac004e799b2770227b9d46d397381c1fe71a13fd272ce2485de4a82ec62020d20287bf202b7da32fa74752234cbd443a718724c50352db7adebdde5467391006d1eba0886173e3216bd33b23c0df6616941744fd9de7d5fd2f82366a2e59ff98887c488f02664b1460b9b9cf02e9f35c24fb7665b97e22c016bccd223bf9c0f590ea3fd70066f58d0ee842a94abd88f293c9ba1d31e98f149cb95e0c7f933610c160d35e5007ebe1f568c670f2563c9661c5a0553449741a75949b53e3843da007c1152024870a74a9b856ed822ce961c6c07f20f57fba53970f51db0396ba134414258e11d70f6cfe44ffc3d2b3137bbdb08608bc1adde06e5772a13cc4ddb56a5de9d37fca7ad5dab55fba43bfaa22edf9d66f3be39ec1f6a0980605b83e45a6e420218c2d17326710f2762deaf223ed0a43820e5f427936cce736751c465ee5d0cc5d71eafb6523ea2b1951bb512d82709f82ea8f1717326165283b1e13a8a71a4598540a02d2ee5c2b6bafbc9c02a6541905b0ed4c3856dfca20a44d23817ba691afa05c1636e8bcf4a40900419359609b9dd23d304064f3d62659e7531799f57c138b5bc45875a8d6fd8cba0dd35c2f342ce91c2dd52a42949bd39a1027aafd3805518ca8cf34f1436d2819883183ba9062a9f860936dbdbea056812852f4bf613aa3dc6a0a4ef9ad8932b3de25dbc1d57814bdbd2d012df0337dade3b2f4a471d7248fcf5967249ae6f2cbe6fe22412347f403ae40e67eddee558ce5b9443211b79ed4ca4214cc1ebe060173f2cc3be824e7ef6653b387e974d497ef0e7407d6043edc865a4dc3f2a08bb14883d513ad55d87cb70ef060b526641fe4fa5d7a563fe0746617630ebd429ea728eeb63b3936d686db51014a70be4f38d5d77ff3a527e1409b3ecaca2f2b40d90d50ee256e11239790420bad2af21580b1680b89697e756468ca57a7f1c378e495dbda27232860610b7e17c1dabd58fa9ac6e671e40637411082133f849576a4520b739c79190f554d72573846ce814153ff9a654ca4b37c3d705667240162038db8882de66156d66b71a7d7192064cec337f9c34df68029fb86b9cec7999bbee61654a2413c53f30092ee55c1c4756c0dea1b45048fa0d733aa3b1b5bd2d5f8ff295eed425aeb44008715aab955b5c60fe02392e6f791cb82016b8bade53068e337d023fe18e0d8032c9ac46ee3a6206a01d30e48213682cc03657b67cde425899f3593efd07717196420d4a343a0d0a7a24246c4b86e05798b8e947134d216d38f56dbf748bde1ee8c2b1dc97c15ec6991c029dd2efa6c889a311e65311dc2d40cf1f3b3f0199bf110d97a7224f923bcea6115c41278f29f08aff4280fe96df39713b6363981c92b3d850ae2da88a02fcd58061dca18c0373a8f211495cb1ad8f7db956620e531fdf705b76f040220f4f33acbe058c733716fda7b681e6b71294eb96cb5ab8dcb5a6bbb7adb88ce6081211f1749be799cdb4041f43585d5df9e17ae753bcf67a2762cbc1d986c3d4ddf1b9c021450844d1ff54b4bbff0bc01fb75844fa58d431dc9a6fda45e7f214429a6f9c64f5ade1f372beb02a2ac1c082ed59d8f507b7ba47df8bd3265f46f3987ecbdaf18ddc71c7ba8540e8c4e8d47929b4fd885ed4c31c862d73cbb59e4ff22f420642fc6b7da786e784ec80f40ac842e34ab2f4efc2c6b45cb8da1446ebc80678d1c234657a377dd91377f104f9be63e3458e79738662b8d7d926b6bd50ed1b3698da81a345d0c71b5256c399c589cba77cb4414402e8f4e95de46ee687681b76fe5f39f5fad4f61f88a0e0b88f1783092789d14038e3e681ade5ce204731f6db6cae1c6717ad2333fc10a7af91c19b11a61e87a2eab34dbf241ab969c38a7a1c1e201ca2608dc0270149da81b83df5af6ae385c83eaf9f5885c40d19b7ed0133edb6e95cb435777b87cfa66f4acb1684323d1a7ecfd7b7aab616a3e5f0d32a98605d1eb12a70d0661d06177b2b8db36ed62e53cc9865ff8158f868044a478fddd670d69299b20cb3c216f789681326e48bc9af50bac3f39f441f53825374f1f68c6289454e3ef788df04cbf99cea31375968522ddbbb6cadb1f25770700d3f5bd6de7a10f15f8156f3e89ba24975f4c4e0bfc39f70299976fd4c8e1453720b782886eca0c26055f3e981b2d02a1b901755e436ccf1683e25e77c1a378274d2c6047359465a5894a27a15d0a58350a977ef2d04e2da03b3079129de3729fc7e94bc096752fe66d759714cd42b29f86a37ef98b459abdcbb157eb3083021ed4577b9962acb7e3af402b995209bceb85fd4c9e4aeae09092cbb3d3e1fd447c1d1de438f7b69e9cdaac9698ca2b9bc89e47d157442b353f5dadb1801ff05fab119e4a57352c22a33655c6b9b41252b03c7c6bf8cca4076b0b8bf12bf3daa914ba86cd958a7786a3d40dd1521130387571d70886bafeda5d85739ec4104e0f1b47c57ea6ddc682d49a8813289bfa72b8bc3cf11cc90df1c155e09a9fd063f226e01507207444743a6f0a4ee76e2fae51bd7eb29428b3c4a5697b8a7fb20de42b50a2e4fb3060b9046e7f893c84f22dddbb774b8c918e04754855aea63ed98d9a947a88643480fb395970ee95229653283c7e183d112f96466a5c04a2d94673b2af4b08799b686cda7424e785df310ce307cd0d4a77c11b455dd1667c440ef0c24eaeb6e71169fabf2903ced17f790b2bf9a6b38c6e69cb0c2e05542d5e552b83b92b3c26deb9b5ca98a1db95f096deea09aff8b5bfb2495440cb00a69009ba6e745c7b5ed42bff66d96987f4eadd1cd64543fe1051b93b37285f2a5e8c16db3cf6bab162074ee2990229a0472b4f32cc3169d49b33c47eaa1e5d11fe63ec2b1a5b0701a777f5a443f3e27e430e9f2da0c6bffef14a409b55859bcd50a99a99f844df7798bb47aa9e407772cc2d060e3ad9bc6f750cd5a311ca5a995a64a457dd484e077ccf1e34e367a1bf264abf72680fd97ca0e2f6f88203998abde0c8c5ea18647c0fe9dfe9164620ed189fc013f0c2fa829fd72b076a5bc3dd3f8f70bf7365ffc29e82835ff47c35dfa273f7701fb25ada464bdd99510599bf4825f2bbdc46f446df863d41ec03f314aa618e2f6eb69c11ac963cb8a168fc4ccf0406bb5ea2dc5e4ea3decf2d4faf2d3a8e61734a394633d72b2cd9c60a03f4da248438de5d4d771abe89e43d5a454970f0b5ccdf6cf5a9a20732a0e2dfa366e0ebefbfff7391bfc51286ce1620f43fc134e2074ad485ec8946f9d69494cc77d171205fb0d9eb182f093abbeff8988f89032801444369869e23008bd586422c881860feff8f5bc57f4766f8447eff397947691754eb8ddab627b58da8571c469125110a086e4edb999dae4e8e9f8aacfa604a845b904e459b5eafd29327e64dbaf6e2f19328384fea942ae907341e345cf4c05c3103851f32919c61ec0c5661fbd575b08a270b99639aacc56f56773218f2d72b54039eda683b5329c02a30518a0a08d962475f0ad091e703154dbae0637705d24c13cea074c668cb84cd0355a6f964c36966c3b693cb58d18a178e3f05e1ccd8462a14bfbfe777e3256955ee0ec4f2d4407ff5f97f255c63da8263ed68926c3f21a342322b7300f407382fb89f3ce1f5973a6c4ddeb9a6e4bac3c495725236cccc9f7f5cb082b556f390cb44937cdfb3157908ebc0aeec18508fbf2e44535a3ec416e3e0c1f82433e7097f3d6957cf205c181c86daca4e8b4fbfdacacaf126cd5b8a1dad59a9f83b4c34424952944a4cd98bf9d511b20aff01166cea78556ea1a8324f21684035298ec159e84f25a5c9dde89ad6ef352f0d2a176aea520b397a01987270aeb4dc2cf393f4c0a37ffd40e416f1cce0e50a57d6e611182c0ad9966c14dc04c0fd262193146465f8de9361c84252c4959a48eb63e1d04224da7879faa2522b6b74f9d46f8020e540d93e26f1693d485ada587dada7014fb22c38912729fc1e9b2c8569c407d0e1dd9691ec955d872c56cc4cdab26b4fda620b02ad90db20c28f0937f84b07d68f90f513e067c3f4518e096514cab82051b98ea37351a7a4e3e1c3c9b11cf2c31f6d33ebd993a62f9710257387882114a01b63bbecb3ce7816159a0f5b89193b6c0a3a01df860e1076d71c0d4601e8f9d178c73e2d7908cf09ed303705a344f5fbbef08039b62273a5acabf209fbfa9bf12a89fc97be90eb0ce33abd4768f348845fcb323db35aa3027860586b8a1e780907ca6cb2aaccb727ef9cd4a4d02b88f25d366e422d17c81c889d0685a9720e261e7e23032a68093eaac0635d9976053799b022d8389b06ac0bbf4f76e4ec808639d55c19b1506e5578309e717f5293fa47f58b5325df34a9038dd9199e5092cb14ed58edcdbddc344ecb37878679c8850e3a05587a92d80b3a5eddd68861063101681d17f72f09bd91d3707b9cc2f83e26fe742bb7aab1c5f47951cf276c6c2301d54c5334e936298173b752f65fa693ce7807179af41d818cdba55d5d44b1e0cf3ce7e4a87615e7e11646aec1039a0392bcbb7dde3e25ccfa8fd021f66fde68de75bb2176e24d452b6212a338ee80a092e84eb6dae629141629631019a52434be27e1e2fcdaba7ef7af9f920bca0a39f830f5333feb84556a3150c28c1cf6fd9e3f8c050641c4de4b990beb5fef6d201c3e150e634c6224a05331c39979a2aa37ddd80be5b5bcc57c7ccd50a335297fddc82b883b67d1a95d05930a35578fabb62dec48af0992e5e54535a3e969cffa438634567d93474e5ceac988a5646849802ed528d257d2266b07d9196cc07522d40b86a2a2ea028f384835952b759d624e884489c270affc22a91cf643e9ef45490189dd75b1191cd09c680518827cc5e39326719239001748c428bbc770f839d2889ae94e7663afafc2517d76fe1d5fcf08cc5706020959fd1ef64453621d451681f75b2ed0f1a12478d6f29284d4e69c681f989c3ccac85615cb3b1461fa93b0bb3879f9aaa4646e13576bcdb3d94fd52771de11a4cd52ec4a3ea539d8e618330f0ca63afd6969241d19885ba5cbccb039fb1842b053e293546c0210f7ba57a3f5a9f0df9e513f494e1e46ee83ee545548b64b2f6281eaab3f4a764dd239452ca3b2e9857c2330361a5ae6b3a1da4c81512e567179bdc2fcb3447467522125e96f21f25899288d07918fea96e6730e205abb97a3ceff2d516e7507776edfe6ee66f245fe8c0958ec84bcf25077ae270a8a65c72ee8a1e0de2e2a31a25cb161ab66b1b0101f9dc5451fcb02b676af3a02abe3a4907886063a8b669fc037545ea5f55ee83295a67a31a1677865cebec65a9e2bb54260d17b46be24327ed686d82c93e5bcac232848b04b2f7ce0c6b1fd49f623ed53e8d15874e3bc872c9d3ad1c954cc810c410d5be6f23ec965dc584853418cd8522bb05c3c08ac528c3c2f668bb43070dc28c311981c15be819c1b4b342c6d4ad50d73b38ffb4af45cbead9e8a562beac318d417d1d125c0b0630b1858c421271677187b23b1d7c40a8f3a1f7c3c56f4a4f5820cc07d7c2b28dfb9043799db9c4787c070093eeecf2c9145ac82baa101f7622a9ec8bc6f4ece842443a422a288157c1f99aa1ea8a18e5be7c3018953b98bae592fb0f20147bea8ba00190c6785edf4f51c5d69489b472eb7f4cc3e11bde148e54f2c332c65ddf821c06f7eb7b1d6cfe6057396a428824ffc417f9814f0aa22cf7f898a505cc89270dfd016032ab3f8fb5c82e6f19c08bb61a2804e03c05875ddf0c8c87eabd8635dbf06b44ddbe403c3fb5b2524e1ea431c4ccf067f95e4ae3b9a0218e9f9cfb994206a6f7aac4958d625fc519ace4ffcc5ab75693ba0f0ad238660c32aba01a68d0823ba5abb794f4ca7d083597bd6deb0916367270a8f942777c0e68bc80d88d98c149897963f36cd59bd179384b294a1fb427f8130218413e08d0014850639da1ae8b9b845369875b4ce1e83ff95e703fb1bbb3562e5edb57d2e5cc74b571eca8caf00d89ab05caeaf4c15a2a253e8f166cd8b6704eb0e88c73e2ba4ac82957ed214dfd78ee607edecbde0f7db33ac84eb21975311b53711dd77b470c863ef5f7c4a40b043c813d3584ab7f634d8ba21ed00b2b3d9533f7e322e8a7574378c57279913c1e36b1d4128d77329ab9b1abae3820195c964155f4751b70c6f21b054a0510daef7eaae3a55ce52a2c5ae3cdbc6486ac141aa6265e212b612a8d6e66954a0c5daed2a887f5f060a64914204503cd6e03fb2e86dacbc493cdb70318f58e232232facbb997b4377c0728e775c061b4fd86729d1622bcf3b7881c7f3464b145f3d406a8f10614595d0ef130921a65a17d672f2865c0b32d8e63ad954cec2414144904fa6e1ecaa5b5860c4d6342c8e5c09da97ab4f2a9fa1515e2f417cc3fc72de06d3aabcda28fe9f7534239e0ed54a15b9a3c186151814d5c4f0148f9e5bd137db40f03474585019e3509040ec087e0b4f0d5ad4165792c1aa1e680d58b8900d5623611c1eee22ba0d3be0d956bc38ffc526d6c714bc9ebcc9f20dc08161d03d805af8897e8495881d24a40a06f33b8883ffe66f057ba91f7ce84e9517a8644b9ca92c01d2d407b1ac04b38fa15bdc1c4790f2cb0b4b2737e67d43dbafbb713fb27f2497c7db275d19a7b78f3689866fe6bdc3b1bbff2f71dc5257b84b4ea5ffecc4fdd069a664d695086faedf011d17cd0902512b19d8a3180d20b862ed0984acbb02e1af7fa02580cba74ca057b74c9b73dc5901c21a7be963b37d05771f2964b368c4bce04d0983301465cc9269caf89c04c6ece1667c2ca7334cf3dfe9dcd1e3fd2b0d8084800e31035795828745eed6541d7c1e253fb1980c57e845de161aeb75bc1a25aeb69292599a3eb0e06b848b0e71d617e733e8448aeb65256ec300e4f46a505d219ae9313bbf9d7b008f48bb3de038eee1cb481847daa10f78f413b4a1522fadfe099037ff3daf42cf0aeb833e7e303edcac02be9ec8cc8c3a4e38232ee1a8faa14c1842ffe0d9834f9fc9f6e319890263ea7bd70ea55fd91758920cebd6f0297b0dd3c5e20c25529c43eede54de73d5d8c88797d88fa86c3a6bebb0e5cb39891abd690fac5ab77e337311faa0198f1166eb4dc5c8edcf5cf07ee1227bde80cb70ecdbcbc1fee4b80d83d96dfa16f7a1169c9518ba0ddc0c3a91eeb4edfa4e72fe4eb45bed605f789a978602d4081cc17f529d0e138a387c2e04c0bea018b8602f3c5d3f496a118154cbc326a78b9400065bfc5830a57fdcdaf808286d4ac35d8a9e324aa77b724149d72000be305efef43d3e9f16f5d59777056bc12431258994869482d2ac35eb4b4a5630b50a35372583d327981753bd4167100970a3752d24b4466480b4f0ca6bd26797107a90ff812b8402e670053e1b085d61ba3ca0deee59989ee0b4de2f65b4df75d41586de623959638d386a6389e29584e17fbe85d7079b8fd6fcfde78b273e3f6f6e9582b72b737b7287e47a5eb31c329f35eb8e90a8a7845764bb50da1daab4c3aaf9d25844475f6b1c211336008dbbb0ed4d7c0286ee3dd9a1d1a8a4a6ea8f2c82a0547db02e5b3e2c3779e1c913a101bc87765c3b65b3466c9137881974917f0c2495ab38a4718a4bf140d58d47ec12594e0125d40d10f3cb17d4b5bc566ee6c30512cd90b8d1c910d5c79131410b22a9908a7aa9cbc1e5473735406e0495f8983da62bca4926b4b21881a29020c4d1a4ed8a3cf552b2b433aec72d414d36888c0cd88dc4111ad7a2086bfa2b6a308ef0b1184fe60a4dc5baabc886b06dc6ada7ff7761fbd0b219756737494e426ee4ef8881f871639ee6025280f2412c31afe2e87ae70075d14b6d782e20e58f422003ac362ba751d7919d047d4bba7a3eefcfe23abbd17abd2bf86969efd22d05f5d0c29bc057da9b29b88bcb99d60624239ea4afd83cb2e87fa2d6d44dd3b2143759d7445f04e106ab48441719916892af344696c2b5564f0749d31eba30d7e8bec4c33d70843c3f13a950f3b4a37b73d7206281849f83f14a2fd19c60f5b493df7b83133fd1d9e909ff9ef5483ccfe6cfa40bfc13cf80668d95c299c34318425ea23ec950b5ba9f127de5f5251e708129338268b33a50f6f801c1d8468d7343a6696b931e33d88cf2bb74b788cc5d32aebd9e2d8c9ffc56926931a243b4658b716f31e5b6811c688234128cea4b9d549be8c3f6d26cb22a60e0a68cd4b6fe98c9d5258d0903589c8704f07a5eb7746302de6511b7f63278d782f7a03126a2d86c26459ff2db4629054259f2ea275a4fe158e90d84bbab69183da3aeaad486133204b9be0aff49031448a1a6f789330da58a966e5c470ba673e9ea3bd644ed2d74eea7ad0cb27018f3f94dad3fa519fda7236ccd7ff1f1564d624c9fdcfbc769743c7ab20656777432f969ee787677301008898253840c6235828ad62eac1a05e7fba505b3e61d27d3495f79f9b851d9b7233017e690aea3974542ca9407fb34218b2254dfc2b760b34fbc243935a8887a3ba26fb5be4634b1ecc87378a3d5f7c309f49e478f0031b0fb8459e875ed7f1bdc246429c4e413418982aa50339b5995fa5b99668dc6db4bd4a374dfd56143e1020257da2708e4313295454c01ec8a86ed26532d039b4c27b37dd3502da5c67b5f832f445216d304d4f26a81371348a74081313c0cb758ea16d639fe2808655227098f2ba55c5cdeac3821892d7384b3b6cce05be02fcabc7deaa6b810af0425aea1f00fa33c1f896a736d9df9f92c71d3953c9c34e3375bf2528e04f8cfc59bebfcbd4aa2cfbb45d75f56c958ee772efd43c250fcce533345ebc6fac67205702199b5a640fb0a56747df08c4e06da970c873df91a0217317ec08bee8c5349c9eeb9f46c802546707a435087ba75aca98543fcfbb1d03121be4798e6f6f84bf71e8d882ba58570f7d638c343448e1b6fb290455bb6efdf4356f313fd62be307d725edad5e6ffb76e48f4f7ae46f29709b7884a4746e59cb5e2601cfbea94da59d1625659d7ae797338961b5795b6f753f76d5736220e9b5da00b8e8278ae6f131403447701c70e7cbeb19572bb56f04117ae6ba6b31f3b87e8a29e9283fcc88a4ec445fe673da441633be0be572c20136d9b7fdf700ce0db4acf3db6e88d24cb404ca319f68bb89c16e963bbb31f82b5000099e697359f7abf3eba9266feaf56506ff7cc87f5ad98b79716091ec2a7ef1cb28e4afc5775439fd3610fdf2caa963decc75c5806daea912d352272fd7b20e632290211d64c421a6b2b78daccad2479be1bbc7acdff030b78963d9c29299e6b7eeca3a684aafc69f102e6a803ba591d0dcea99865838aabe729f6def6770e1c5652e569c6e62f3daf5b57b1ba9425be9eb7534075ddd8c8f1774bede9903e698dc4e3ce8a7c0132f2940797b332b1f6fbdc88f02803692dfb50dfd9aabbff8fee4ea8dfbcc881e95acac83c32061a9e17eefe4028d1b62a3ee2746d6e1dc44805d3bcee7cbd41cc073514122a30d370cb7e24da03d893eec79925797c830653b430b305e0f798418d26e49db6d761d9c1d0b1829f4873429171ae9d6501855d6e10ec66fac96a50cbe281e256edbd38ecdc866442f1f91b3da04821228cc8682b2080320a4f63d64e265499063bcea3c0f25266901b038a5edd73b19e849c2049d6bf39dbadf39e0ecf578ef2efd7e89a0ef8aec246983249658c880f5634a3c89ddc4f92ac7b395084d5c864a08b32a71a6325186f424d8a78fb7cf6a35bd1817bf508510f4ee07c5a0c8e908be005879f9cc145d8056a3ca1fd2d3a528742ac09a8871520af7fa122db895cb613a694bfe1a33ad6bce11e6d0f3eee4b6e04f455ded85eecf4621488a3316836f1d4621cc177fc6ef457cb3a9f0148a528548b72dd404ae0ae006dab8796409ee84c7535a010225f0024217f2f783a7a03af4f5dee6a9b8f881d6dccce2a649201155079052403553bab4fa9f7de92a97cd5642ba4e628b3475518f0ab1e7614946fbf92589f9a403391d3db28fe4fd07d57ffb1720226575ae61ff9a2490dfa1ccaf13cc0c6f9221b2c0b2746ab25bf5608be43f36c243bd4bf6080d528f76628327eb31094050adf1a49d4df7e27041a1a9cd0786e6b0a0ad1cdbb69f33250da2ea51e11720605281d74c2cdcaba487335fe7eb115486feb2b4d906d70a44d241fcf925d76b06cb777efbb8819739e5024393aa40d41708ae7b2258a3183f229affd4a5efc663167e3af310ee10dde135aa76dcceac5e0239e2d53f1b4ac4bdd0821618897feaaa727a9b1feb0ae6a201eae037cf389e7a22dad1bd78546ffd292d394068e45a18fc2babc80771577aeafa50a7f7bf263a41e57458ccbd3a9d18da092973513a66f648173b97bb56bb8bf8c5b0c55417d8487b992db9cf4f905f587b0db57cc43cabdef0cf1bc56a5003cf15cabb467be33d5b6fc22fd237b01d81238a43c231af8e53ce06bbca1323ef87549c832f2ed5f17943df0d70e19719a64a89d77728e72b58d09aa55333a8b2b368f05acf0042a74c20d19566c4f9aae19eb3123e3fd7b0b8dc465cdf037806ed00cf0fef2fff47602083ee35a9e3e2d7bb83a57c1a1c5b73e20438f2c2c6b658d27fb184ab953df0ef8f8c3105945a5722ab08a21688ac33cf77884b54740510f29ccc98a7a5aaf28896962c14baf52763eed6a62aba3c9300a2c4c531667a9fb751bd74c4b8b8700786d1887818b7b682883136fdfc3625f18be2cf1045c5e0a8e1db58eff1af3204efdea16c996e0378df2f508cd0acbb04959dd83a6f0aa1bcb90fc49caaa203319bba75118f559417344b81f1f83d20f9c2781459eff7f7ab78ae3c35da7d487bd9e1b876750dc57d3e70fb3345bdbb2f15934dda3c7eaff661742efe4fcb7ef73f4ec0a878e6347af838e3ff807db99113db6fb6662757ff3247c5957bcff4d4278b13a25546759e389d3ec11256c96f8a9afb66bd650553f2cdb8a2b8a17ad447d7b16158a58542220788458ee6345a8ddda6183213ac6f75db8b8b1ae68508ee548d2221cab4a488e030d7b21d11f85282c5444adab2cbf10dec8341193cad625cd6952857bfb7a6fa80dd92876d7acbec6f8469bf44fb5640ed2fa9c61a3cd3ccc8342462a583c8aee4a64d448ed615d6c55d0ad011f7f347822aac6d7e8dd544c45f60e22ca9d30f26ff73ed1b7a0f313e537b87dac7b70112fef6e3129146350298f9c4c9b8d6e8a9d2ce2344a14c39722e316645d09fe1b8e7dcefe1703680f2ed07428e8f3a076c5c8eb2860b3d9d75593abe897f6da7088764ec5060a92772d220a91a4cba5f2cd303e26a467f7c9153bb2730c50581a17d6cc681f0614d7a2fff9252dbe13e7dab061ac1a261d3e77193c9829cc317214802c4a0fb47839bbbf9048a3396c3420ba896c1b025a97817c26fcd6992bada6767ff2649780b1024795430900af75871d82545d38b81c6146f1222a17b4e9a93f65fd2cbaf8fd86e1ffe22d1d78518d38eb0a8511baf709372ed622b8e656a4f1f276c8c27b38fd00982bd54e716eeb7894c155354e958284b94e23ee7d857ed038eb81d0fdbc7ccbb7a44439d8da2ca7a424f72fa307afe4b0f5b9f0a0b0af1d3733e5f6e6a0d9ab56296e6eb42d540c7827da35686f36f3366ec28ec3812ad30dc242e468a6661d0209881347d54f5efd9a76e1b128868fdcaf244b7fb73696ae2ccf4face59ce89c06f890eaa441873762aa890c867bbe34f411c40afc95241e7747be41dadaa3e41f92c2d42ffdd6788ad3f16e4cf6d0368634e3564f98e7d44095c1ca6598e1a1e9f822cdad68c0b94460bd10abc52b4235b2f73eda35b4edf5842d8b978b2ef74c0e5375376ae835a08e844a6fec9359341d546c3411eea93625113e416dec2fda41cf194ef9dc11b7b54c22e490c498ebee8603a807d973faa4766d5d2efbf091bad702821b236f5448e84e0335e2bfb7abe4dea22064d30008dbbf0f87e34a52b79a196b840a998b63ae8c8adeb0260c16de43051d3a5d4569c54aa3e6366da6c79f6e1fe29af4087b37211b498e23c4e056c980ef294b5b0b9caf5273f7166d12eec238225434721587ec040870effdda7acdc42f573e878827347d3b6598f0dfb1bc073b49e626d30b31e48a5914edc632ed5738e1cf8465dfaff993006d0fe4c724556ff3951158d28e00425ba4a30dddcf44b7bb4e6159c2da0ad93a03f5a73b1379af590a4ee829c43a012f5d59a190b6dd460dbcc641551af94d5eabe7c1543cfc661a5235450f9396c8986ce87b0cfc3baa0318a60ecde6f55d187e216874fb1a31b0c7d1a9b5a4579d100eb68ee3cca0b0ad9330b364501d265b03fcbae8a97eb537fcae3ffc951e009ee50646a2cd4a1324a86a42c373a3c6bad33c08e514e4dc441794be0ed28d84bbe6e92eedd0d750e71feee8db2f40c63ec8f00bbf1ebfdfd0ddce743332cfaf7bdecb66e86a1f1f9f230ab8e96a72aac6c30b70baa148f04698832e6c3dcfb071810018f1bd67c7e5635659238328e88e8718b81ed93c473b9ebc6e42b9fd79bdd6b9f715283858a2e13bb24eca6e01da574cfdab9e24d9e9ad8acdce694e946074ca50c11156de5d65c22ff68bcbb5283f4051aeb1049784b03436c9353786186d1b747827ad00666704fad47e445ecfe2f65bfd7a5712f367c4a430ed99930a7c06d8d481523ab2a8153c6ab1a81ab28523c8a44705d51f9719e0ab0f8e704ec689a883b64e056cb5b9adfdc2200986b670d7b5abc42841be80a429613d3718399c270e398b5d9ba100d338565a271c92d0d4ebbe645a3a75cbef6f2f37209d48fb903bbef655456f874a7d41ae59733cfaf3a498a5ecd1a9e7a9ec64d8290d18ca5f9d74c4563c21be4136cd9c9435dabc604995e2e86d23dba4375c06a9e065a3fe1276c94234e1ca569abcbd29dad505ab596544129b79cfe1ac4c5e06370a8c84780bcf3ec3cf31b41deb642e2acc09ae465725065142496aa96727932f2bc03378c7385dc69a8538211020f34db1902d1c24b608688531d750a8aa2fa1e30b3a60ad1851f3ab9a4f3c2e28dcb957d6b5ec832b8aa0bcbabc8960c89080f03b68313dd178bc089a34df7bc4faf9f34798f226c9dd61a49cbc5909b9118deab475fe4ae862f0f20a5a9b3aaad4d8669d32d2910e4aed74d9b4a015b6968641d1c0cd62872857008640c76d3885b91a613320ad5cc4a3fc30147b8ad7a7825c92c8a265d718cb553456e4f930cc8f8543790e0bbb1f7a8dcd76cf02269415824fd806477c3a944dbf9da316384be3e2b540b7f460275c3897bd9508c6c03202c8752f2938454ffb07f519b7058f1c214982433c26716d2781437dacfd8dc405d935fe47301dc403a615cb7da49203bb2a1ef19774ab4d65df8a23367bb9ccbdeacf4974b13fe616ab5d814fbfe5ac166ef66cda1fde7c6261cd974ca34cdc7c1048578c3a9792ed3f7688c32cd0970f994710b2ab9f27073ec8ad83170131e0c9529d2c81411d1c36050a54e42000c8b4f7c538c38fe73bcf7bd3525597639343d060e9a90598ba13455fdef2a6bbe719939ccabf240f6734003cac96fc60ceece5ac7b9cd308d37f692d945cf1c1e45aa11b5056ffcf1516bb2ebd348c637b9ef9ee80dffff0ebeb25951c4870c50dd69cfe50fc72f0141269face101ff9c3cc6d92142e81be8fce0ca858cbd790468bdd2bcc4f759dd5bb506546efd99cd6384737e01d1b1c0387e2180c4677012d34db0bf9173aececf0cc4d91879771b4fe8930129563b7dedacd3226ba05459ed1a1b75931b73ce2065e406a683d50ce2cfe32f9a48e8ef93617965fec6dc0c72abf13c662cb02ac11499787eae829076494e37c86b6633fab5556075333749a7a7ef0b6ec4e1cba7a2242e53d81e9ad5f10110d9dc02ae2e2bcd6fccb7e435670b7e6691ee2b33145c803ca56ec819ab6c3e8aba06bd61ad67e7b6fd1aec80c57b22d6c8a9eaff8d1ab3e05509f10f8cf7954b736c9cdf79f5aa2336b5ebad4d4501f45b71dc5ec50e5d4e139ea58a1c7d12d800cc000b18a6d994d371f827a1fb829ad894ba8d2682d42881542d995e62400c49d92e1f640c5625499edfa77a1c4a8ce52121fa0450e5314af885054fb0344129a5b0d51e1b2014e9b489ac1e07042f7392ca5f99af968d41cb631bfe6dff9669ce6904917be61d710d412b817154cceb168626d8610bf9e4f339c96fc1979b4d1f6ec2d3e2ded73ebaba512fc732e2792ddfd19feb2ab66ef93e917809080b06f494f4e2300e34dcebffd4350e92e68e56780939e0adbb53fe597bf03fd8dbde093098a2d19319fb9386d2804fbc4c3f2f0eb7c539774d4b134ff4d8396484d60df538e0dfb14125cf13a0cecf206e1ba570b2c53c5da4f6406c6459f141f6ea102d26840a3306057fe6870304b1c2fbf5274a3c03f9da4b08a75e244c695b5c10d11e1dee15f8d696c563076740b86634aaa4fa90e64456a7da40b600d20e9c0b0339ef829ca7a6a6df08c2bc1a970507a275785d415cf255b78f9534d6dfac0f04ba5d571d3686da9ecb788252c4898d9c53cd383163a0e8c6d4d3b5b0e8df4c2411674e599ae3e3d8c5a08d94b74e175356bba42e05f9e28d68c5376eb86c3cf4e4197e8692c6cc08834f23adf4c42ed606214997d877196c1addca4361dff5a879c014d8f82ea7186464a6bbf87eb31643a624cfd0eca55fec3306e7d3b3ca61aa0a417ea7048dea43831e19c31167e44cfa2453d50b58294ab70b2b95da4adac540503cba0c9998918b8e2709bf2a7050b23553b3d662f3457ed47cc3cc3e4e5fd3291996ed2c6c07c7b069030578d14f820c3f65a92ac2cb172b9709b11772ac6a0d48a2b0450399c2ef330e78ce0cd90209710d262cc1724f2e064c26d6067fc414d5d566387909706f3fc336d4889fca5da4599979db3b6aa16d575a84c2d96ff8785471fec7fc16194504d4b0a1a11a3dfabc7da5f304f311cbcffef90dc0750fb16f6b87c0d422de4ced0add14988fc3e4868dbbd4b3f40978f0cf313287ca5891ce65ddb648160201f8230accf908ea67aa11c2911a4f38f617a89a1e1698808df574c01b936b9b5f1fb1970e9d6ba56bbe964f79c91f9df68a645733cd09f97fb02239b5cedd61befa708f267d99865a6dfa6d0f0f9a7f4b246e533800229cb0c53940b21210d37a2ef4b2c986fd463db64b6ae60e705d326126d8db3044b5a80cc4f983c27266b33acc97697c9277541a5b02f833cb7e218364392cef27014dcac8c75debf6eaecb485f3a2e1ba660571c5a9d55b6d7acc63879d545eb83eda37e75cb1471371c2748df64a581f7835f10208bca161bad5e3f21d122fd39f8d3c1fa85a17beb085a86e2de42d07c8771d3de907d4ca5df317e0854c21424d4a5ce986dab18e8caf035b8895653d891dd2b4fcb9a5f541858c13909eaf8b7ca898925bd2fa7d2aa85b3970eca43002945bc3ff2e7a319a2ad1b3ea0e2851bf208f09d3ac84b1449c88780e92c320205f5a89207c67071abbe5ef29f9e033c06505cb05ff0d08ff6a81e85cbfb4ba8da092eb0100c5f471897f1d8dc070ebfb2a4700cd04d1c4fb96828f32f98184e66f85cbad900da8a5347db3007984401a1f4584331452c8ae6eb35b9045211540f96138634d440cbf6e33acbb453a5c829f702e381bdf410c52038a133cdef1956a9fb33e6053af04321562fb9cd05a9ef11418dd8ca02e405544e2f741d564dc2c3a95bd3a5947b78e67a67809fe8f7797c1f9406eb299553bb861f01e33b8de08cd267e973b0b14179ddd087af408649d2a922f9f0d6f0cb5cffe28056711b91a57661bd891cd6469d083ba5ded2f9ce61a5ab352a0528d4c85360e306cdcf756f75924af6872dc3dc27bf681f2fa2b60545654066283b5736f2d59e573b06927129f3b106a93057ee170bfe044ec955be4b517e52be579870420d0bfe5d57dfa232ddcd28fecd65d46d8ff110b8b7783a5ee842df0bae1f8a40d1a4c330da2ac33bfb62f18539f76f08e4ac199d8e4e373d4ee397df7e58e16ad99e992d33c1cfd45a2cbf125efa1a3b42cc2fcf1143b554e749787b0bef53cffda0ed567f49c4ad746da8e25e23817472ed6f3a4082864a05658cfba6d6dd48fea2ed8d987333282667d510badaaf080ff9f2cae460c5dd14c38308272f4751b087f0278691b07f75732733cbd32d29b0b3b8febdcf0e5f9156cbb354ea7957a66384c270c7a2f838bae5b1be949a6bb17523a7ed884ea7a04107d31f53d28fe5ce48f73362c4cd2ec58e35ff4342f77784cd0f6391dadb4e65aaa84da333d12200642dc9487983157e3606315b3930b8ee0908eac4eb86a14d233acfad615a025a362bbbe8ad5ef013091c7442990f969e1221de116fefe77cf135ce7c94f891b48e0d5a0dcc00428b599ea400e71f581cf979d9c3de1158a5346fdae77141d7796e97bb0c88afd18d463e6a141407a8157c6e189d89285e0ef45ecf3beee4050f2de51517279ee2e372c86cd86ef288522ff9f29e126a289a2611be495167988277d3e9034903f16ebf691104a62ead035a90648cad10bc4affabe6ed6440e4d5418434bd9729e9475dce04536201697ad1b905bf8bd878710b451b9c2df460aad39b01954c9820a5d248f6421de13b3d31afa88120d6fbf25f5439e04e6465c963a93519150564071e29f85987b142c23641dab491f0d6d7587f30ae35d8e52a41735cf25aef4e06eabe637d135e04529c4a731a8e8d72cabf75c223574723f92bf382149311de7eb8de4064bae4f13400503494269cf96a6520fb1173f93ea556f4da613d241430183d6edf41af02f58e31af135aa87b207d770ef7718f3aa50d7e604d323fdecc0320573f0528dcb64d6ea018727a8ac471af69c92340e5b0a71a29cd65cc5225821a2c25c63b8f537083a6f9aa51ccc39aa9e249eed1d28d51ab3b1a7de02ddeecdb64415546ef79ba11f1cb822bf5e0728558edcf4c6224890589fa8355d358308fc4000afdd220ae97d96ed5b0f6482fe9cfd241970883b294986c4526ebc9d3614b7155945622d9128bb19ca4fc0e0a0e5bb9fc6588364f69fe516e037fcdd7e09c3321164cca0987bb72818c0de528064de498aea6170f1fa3cdfea20af2cbdff03358ef84835f973063341f21bbb18fac15ee5e832b91151dab42e23ec6c945d66602945c1da099f76df4e029425641e0372824959d29c0492c768c06aa2d286aa7fae798ad4e295b9665cb52d7732cac53dec65795337c72bdc16fa435f6f44d500a230dcfa83ae0f806a8790c5f354e1e24665cd87e02e0b23910e69654ce3869db03e2e635cbdcaebe502e79e66853a57bf69c818ec7ae1a209e52ac9f62aeab99b10caa936240e6adb584bc2661b31eb096409409adaf734e822d3c9bf27444cdfeacb270b94279d9ebdb1a854763adb123aeeee73865eb76fb5f831c3fc877db7b43d091cf1b800c634cb2ead84447fe8179061803e120c80206dea0becf142dfdb42c0632081ce6e239ee307dab8b25aa3038b7813e87feb6c8a33f2d80f612ceee9936b0e17facb265e6df1d086f6f812023b92118316052cf60b60fd798c59e1147eea499b2a11cf9c009251b34b14bb6b0458bcf02dbf647046f04a3b8373324ca66d5a89bf482388d03f9518e033e4c8d43674778a07a2299d33bfdad6b6d90fe436864d44393009e12f110dd1d94c9624ef70009cd82bc0a081286be6bd6661808c201b0ba79748f4a524a8d5c761e7c53c660426143735c755875b5f78af8a4bccd818e4eb350ba07bd3cf0047902f6c54ec72f31c1a91a176fd496423f2331a53b0b25f11f3a6a5f9949a60e0e75634ac390a4d1f44d1e3cee139c2a3c095b9276609335551259be32dd0afe8cf155bb878954907fe29a6e3ac46596c0e311ca4a73ff5a5932a27e8a9804a0b6ff985a60417f30aa901096b66088c8118d0287dd4b178b32e83a21e4cba7e05b451a6718464f26b25d135dd10efb0c0cbca6d78d390e677c4a23326b1a7f508fb7380c998be657a784a8812df91a670b2402ae45ff9107d20110866c626fea20f9be145e07771a90dd2077dd4b9ae24b353c8dc584d738a28f2edf6c8bf6eb57e4a347710478cc8a5d3fd6462466d6f0a8416ba2e68eb9c6f7263b3e1b07fcb679ed64835d790134ca78b9d9877b45cf8dd5740bd3ee7daeb29e06d6f89f4577f0ede3fdaf18192bdce9350188326af457484e85ac90ba7dd96149e45c2dc45fc52cc710f4a42dd7a6f234346fbd486b5bb13b894299f6591ca81d8f56bff936a3939a593db844ca28b8a53c0396db186e347e029dbd01874ab982ed2cf2569deb6868add5550548dab4fd51794387f1eb1ece4cdb6b8cccbb0c4a9c189884564762dcebada478df545c27e524de059bd534ca9fd1268080a89af85a41f1df954fa55b7cc5ad00b32ffda45dc9bfcade91d796d004a9dea1aa27423c5bcabd055d691ce3ee0dee3627619bdc78e36d0951f5273d4e5e022fd8f9fe0522e1365ef19b16d1f3f51587d9f01fefbe96981c0f10f5cc09b9571dcdcbadda7e922d1ce8d9473c85bf0474ca0b01c455c0d92bd01af3143e014e42f02519f62a8e884755a9291d550f32405d12401a8c51b1c3904129553b60c7f8469fa15b87c0f6cf3a6b9ca3693b6bee4443efd13abafc9de750c3338a1472892ae4a1b94077e1bcf226a3ee3f9b7d0b4552ef6e3d2020751b4e580c7fb47cadedd8c5a513c67ed81c07f9dd8b4a625498acdc3954b1f97f116360146df6d7dd25926d9162fc8354c2ab02f6c9e8de4ebcb891870203d6f83d2c7f7df13ddbf9a462fd9dfae57a1ce5bdbbb178775eac92553142c331d188bd5f3378c836d3542afe73f5a904ebbbe77457636126ebbaaea55ed5289f6ba40a0ffa781faa0e31a3ddf768a0ebb781d6076b1426918e13fe5f4ededdcb0ed8c48dc94f36d06039919edc07ee23e3d1365c78b5e3da6cda4c817b6d68d6190c72138bbb8c5746713875d788900a22abad2f05f9bc64b9b4e0f3d14cc50848264e844237cf3a65e03026d9c52173a7c5752344c4e277479b6a899bfa2d4adec1c8d9fa178037e63303efd3fb72a0fb221c44bacbf3dbcab0e17ff2d74d98391ae97f355864482ab386c471cf39a9938eb3a5b45075683cb6b429be1f476f827310459f855aeabf3352167dfc2eade88d73587b7dd22e26b6420a00162bdb1a873ba91c1a8a886b24eb393a51062548cf86c1e4c61a35201ba6cb41162604c735d329be869789b06befe0b10ee4db35fbb12ff010651d794f71e1f516478ae1abbe2d0eb541313a8b149b7cfd6da206955aaab2ea4dd24b6bcea4a51c7c0ed4ce98ee3e1ad4aae26f04784c3ad71b521f7daaeae4fd4c64a37ea13fdcac0f2456552a120dcd6f20d0e6b1b866fa87dca0b83e4dc83d760032392cc4daacf0556e1cba3cc300d83473fc0dc50c292d2211af29f48c3f3beb975ff85c6f8a2dd40a66649410fe16951ad319770d169cbfd70b1147b9ef75757e9163830b95aa8554bab77289c7cffa627eb8ae2295e11040bfa1117ae21356f5a0672b66a0caa0fb5a3095ef7f39a4d7b062343cf0fed5b105ca5770ccb55297c833bdfe127911467b628acb95a0904ebcda42afff3d106045f2e5c6da62e47d3b25547de854c59d3286cce9946066eb36f20c453fdddad7fc344e8e2fbd2f5242e99588c6d1e788f2e424c0c5f80988cafbc621c3b86d2d0c794f51deb8fc0293651585a20119da4981e92821c32519e720cf961bfa5ea28bef0c5e170fdad5e676364729f5f5c12c3b132c7186cacd244362572b0daadb87a577c1552c3cb48ab32221a49ce08fba63756e28d0f7755ffe77c372c719e6d8e083538637c4bdf58492016cd975907060159c1181497933da171dec868088b3f6c3c3724618a5c02bb72a37cbd85a9111ff073e34b83579fb9b333edd6369fd71c3b894b62d18d12afff317716ba0cbaf0e8f983d6505925c47824af54b33663aa674d4eee68da16382b53e85d065316a32797f364529dbe985ebd6220bf23c1210b5698cb4bce50e0d3a1703b5c9666d90c0392d4de8be03c2d67d4bc9e29fafb49ccfcb2080da7980d7dfb3a08ddc26fcfe855b4e50fc4922666bf7bd7a8b4d0557f6f1e787df76788d85ac6c8cf46f6e7141825bf7ebe1247980731440b5d462787c8b8228134af96735052818b150124d1cadaeec3ea0d416bb1e7f3450bba3b736aa8b62d0e1ddcd47cb6dc4eb81f56923580b3e4de2409f3c3d69d4f71872f5a4046ac8977f35e447215d95f5fb9d052ce4326607d5c08135ed0de277a2d2220156dc91342d89745825d9b86e451c6af2cedc13290db69b5ade9b47f16e45b9cba40d493bdf755b2ec9162dc7fc6bae3065b8acf9bc6fb735f9b55e5ed7df742b17d7129c3b48dc641ad43817e4121ee15eaf24e41e39170d85b34caaf12054f4f9585fb61ecd079c096ecdbc18d867173ff67b0d0341754dce4738d12471eba9bb0c919207cb7e79267fefbb0697b982e24c77a9e532524581f41568a3fb92bfcb28b5ad319e45bfd5c151bea2697e24e3380b574db6f1b4bf2f615f7286d866fddeebf2ddb5694961929dc3cb890a5daf125736a75518ff3b073cf34061d30d8ac8106a337e7390626c7b63d531a52c1c82b92b8eca4cf485c260e2c9a601894cbcffbef2c6795e6654bff73f193ea318c1b9d0e9e37b894f55b777e51a1a906f0fe531d8e82ef2362fb838ea8ce77269b07e9dff3d78d124aafd9b0741d5c7f785c71bf40189ab8db29a065ebb23351642e0ef80cf1e8d40555b5e0f08fa55badadb2dd613d36aed63a43b7f03e025f9812e2e5007f793959fcf92537ea5b5fe44fbe8dac9f111723d8f467d16f4fbc4489bf1970c3b59fd2ca07a174754e3579f3a84e527b0e7c14a7a7bcadfcf8f97dac05aed7af8fecb8bfcc731d0c0dbd9187ad1bf1128a74de383b668b001724dd560957610aa47685ca3e0314c7605cffefcb5b3ba3f78c30121973835447fd7e8ae4a9c4916ee1169bcfbe9bf3576e502127eb93a9e671c52e9b225a35874b9631306bb8c1c1ddb0c24e549b443664c79321de9751f310415c01c90355a2894006981253edda7b8140ff05bd7e134ef77b4277a0e0a6a6cfddfba336920156503472f124b9af4cdee1ce78ff32d2a9ea32d63e5ef189fc10907833bc350bd3f5a89fdc6f667a7335ce14b46146852af4f01291f79676a0d9cbe4d48e23967dae691a2088317b05db2e61ac3a719f463ab0826b60edb5187c230b23b119ec890b12e52b825b3e6d0eafd0170709f3e2d4790b25e554f506c8a3ffcbd08b37b387596aa36d83d14cf8a45ee30718643330deb3ce25b9316ea10b30f436ff92d0d48871453cd2a93d7c8a8bd68df10e724fb683d7798c03240646b72a55cc2bec032e2582ee67a7d3ba39197653d80c736bdf5c2f2f761cb09469e3869913f19613b91361e5169fdc47577121b0f20b341cf296c91c1fb13ef4ad930fbcb67cbeb8f781747dadbfa187d20c8dfac17a153cff7d47b5d0e8149710983396f8b62d39548b24a1952da668085890672c036e62407b4a5c7656ee1009fc3e779fb050dda9b91d9afa91285b96a7153b3fb47a1afdd246d23aa04d233c04f9c0ff8ae08b8058447190ecad8166b760106a4e50c55c0207b04074a6077acae0f75518f89545ada8e2f2403e419be5575c4ff0338a15bd2cdd8784b5def9aa35d370665a3e81ecd5a4cf662e0bb132e250d3bf99ed229c240f44ea7623832aa74879f7f3cb4190c9799002bf417021a9fe05139d7190c09f728598c10fcf6c541663d2fa70b1883aabf46f440fb1e7900ce081ae1724242ab1f860bf8b39f3885d01a773ead932756bd0cbe5914eb8d9de3a34f153aaee1cb81bbb5e4ac40e1b719b10fc036abb95f71537ee8eb0da01a7f51746d239907dea896c7e0e162d166873933d17a525bf5f472ccf9baa276f2b3d8f33b0e3fffe19dc24f7aefd817a2616858bc408f01d25c27509d50146947f207c07845e9dad96066603ed184a3c896d56718622e7e4dab200e4908d5d615ffad3c93631bb3e524eaa7a869241e66841815be04841165a0b359dd7da0288f07a90905c06ceb0cdf0cf0b92302fb052d7905cbe6105d115134a5e44d978d5a6152ae488d8770d3dad8ec3b07edad0dcc678149cd821cffb064f7ab75b27f2e23c9d4bc2e9eb0ad54b5eca0b76440bf9086b21e04e4386a380a1aef8c50a3fb006afc4c22a86df816d04b0c0a4310c7c6964b6057ab9c12405e88e81fdff108df25aaed866b986dedc8fcece4baa8f545909a8a116e9a297502dba45f2271c16c1712f936ea825305c44fc3c61e13af4ee70ecd4ffd4cfc300384126aa58236f236a106c683ae6c8c29256210033bcf53c6b0afe239b013b6b0ec8f95c2bd251aeacf93b78e66abfbd783665f0f9ae928ec1436cdae5c4b12a022a41ef2f1d781efecdf2a3201d79eb911c7be701677dcd0e7decb84be943722a329f8c23c1871a4e9aaad9b7678098be55f779621428c6cf0b2591af3bc4752e2e4cd8056c6986fcac6475b5b55e6416e79cb9225d48caa0aebd452a67d2f3b5cf1f909d7ce6473942b2854685bcc5e843b4cf1f92c0e89a142a79bf0008d622083ceafbd3f64c21b086c6e7fa269267f4ed4cf6294b185cbff8b7df233ae71eb1207033efcc5de6005a922f15f558d26573d01305b2c0b3c26f0930ea073ed0c12518534d23e382b9b1e72f2adf830fdb0e39446170b7ceda02902a71047331744a414f04bfd8ecaccea1b8fa09b0258f8d303113a1e093f9e3f518f2ff9dc7e33365196c514ad8d94d4ac432d05f73b91a4c4d3a7840568cc6893ea828d93aef83d146e4c4d009b7aa7f1f38e830b779228a2f0a2fc48c2a7775e2dcecea06b8f7f01e8fd14bf43a26d32c96d73a64c47c9d72c7624684207391a61022710d86026dfd62bc63a91dc59058f6edc985eab111625261a4be62f6f83d907a05816bc031d981dd2b332a8453f0ada368c032d6039d5ce3846e3ebadb0ecbbf4916a4db5de27ffb29d98c6ae191ceb95e673566333ea776912fe487e458abae877533116c62c53be66c32bbaa0cca0989f57aa32844c6fddd65c583ce10e4f14014118e537b4faffb1408563076a2f60b53c7d7b27d184702f57eaa4e90ef779efa56e10f1868b81b3d68e65ccd99b84b8efde714abdf73c8e1e9eb2cce6dc0391f42c6b7af9912ab5eed947c2d2805023be21a00d7b2f9ca8c44bea21a33e75b5eb46d8c7ab4676571a7546a3cb71dc2d1c6f153b9b459bff63118718ad3eceb8c8079f2948151eb5cba9faaa82ee9fd9acd63ff1341149eb54d74ed1871621847bc67f5373bf7e179e28efb93b86bdadb05981fbf693414253385c6d061b79a1d8f171b68986a1a98c33b3511821844e66905e9186511154131a7aad43948393b4dcd42934bee762308a3387db068c5136c21eb01018e960fe4c235f093af404fae7ad02196944b0be02151b712063e4eea89c176bc92b4e472fe9f7e03901eb247dcb433bfc986c276f27bbe21585d85fb4fcd3257df5c3bbc33a278c03fdf46e295d6e6733b2eefd15199f6381bbb7331933f7bc50d8c183775dc7cefdbc1cdd97c436b69f6ed491b60b79cba39b161b6ee238ee8e28e45226664bd068cb3beb8665ed308c032caf122f753c4763b96dc12df1098839ba3a4e20f1ff20819d3325908a3ddecc1331c97452a62eccefa6ac042fc39aeabc8ff769d5c222e86474650e9620ca506022c7a122c9934b51dea31b03a8942ea4ea923d345ce507c387668848bdd7a9640e9234e9ab59b7424abe979900a59c37f8bdb4263fce691ecc5b326117102e124878a187cc922e4aa12357fd69a13702f170aa8ecb4955bc924db54333660da31af82b40681cbad00dd23833e31dd365cabf7aa70d2d97dd2ac597d44862be4ba22a045a6a04abfbe8791fc7c4f951907f355475b9ab135b1e2c3f44ca7fd744d0232940cdf0686ffc8ec418217393e012d228e402718c8c2ef3eb3bccc70fd54ccec14f9b0d88a46abfeb83318097655c0f37fa879b036035e538c8c95721073cee492093fa6b19c88c9e04fb288fc16acc27eaf81d76a82c8f25cd1064e2b2cd6d90ce12c3f1eb7df00801e3ec6c8e130cfd25efdc0aa5e5c62db6d480b4a89f60a075effb4275ab878c3d64497eafb437fbc7d253a6f5676fe0ade7ce3d20fe7106cd581d540508d29978eb2af7165b82f3a0c10550006d5d6278e1de38af4541cd0fc64bb382009098c5cfcdaafe3dfe8e8fdf9d443ff693836ac7ebee3248e73b4b8cc702342f4803bbacf449ee99e49538e5e1f32033672f53ad9ae612bd07c20487ab726276ef6126801f1b31f15ac1007ef7ef59f937bbdd7a2e8af741fc7380cbe617cabfd8508f4380f7813ee3c8d268f7455165a263981d786e6fe8c194ee8d8884913445ec09b90be1090b3954ce54933463c632a8becf6e5c63bace79aca5fa00c4b143b65dcb27b6aaca6c55b9779e0afe178d4cd96835a25dc308538ac45b8d6dba886f77d91d29f49a00cb4aa89923107260fa698515d4f4aa954d77b574ffa3f6d16e5b3889fae4715612fc4abc563c9a1c13df26c13262a009c88dc0d07c7b67765d37ea659474815255ea19985713a2670f389c26df1384412039effe267c11b69634b52402b953ba0b0be51c7c21a2dec09ebaeac4bf753612b0494b7ee18323da46b2b57c78290ffd2c35f97435599adeef66d90fd9303ac2f3b8da38a486543faa7a632ea54c5bec74ad70a1b7e8319ae89db1f5047eb27e03a7123a8fb462d135ac909330238e965e170baf5871d6469447540e3f60a6d915b77cb292e79838597198d0be5d9eb435e066fe0c35224143cd3a52d0ba83a4e1c2c4b6ff9634de42dddde2861f0cb4b395bbd5545086a64982a35b09f3b92feba1d52e9e9f4b2710b88745995d3698cd3e29d3e2a8b316b8c71c7afffec210180c2a807b97fddfb8880270d1fe6df3d4341b292369b13be4c4b3de1c7dd87bc9f79d3aa25eb80a632d742e20da44a8c203ad4829fb3742217c9845fb348eb74673f18461f15881827ff158396d7a52fa2c815dd3edd111ce2b9c2d261a73db7e1da3ca11dbe09f8ff4adc6a13db4b57e984a74e4e34d66f9b6ee74b5704646c96a68500baeffe335a614d4c137c23ffe819dd6a3535caeb37061796dd9f0c1fa51c35935148201e95ea9446e20862c77175b16714f60427616b1df6c80b7d704751282e01de802e67126844d0f9fd4e9808ca42c4bb336f69298e28850780a265cc5aa6a1374ba52e7ec4cd16dae15a340a9b88a6cafe65cfbc232674aa211a382edce42e36d5cb7aebfb0c330b49e34e6c1c294dab7559e19adf0154dc881c01f1b7f46d45a7a050e8fca66138dd50b8fe44fb7a0e3734634a8f7cc88f7102925508d7edfa03d7302bf9e88aa4d6a9fb6b57110f2abeddfce67e619c32ecf65bd1939489144c6827220c922aa7d5f20f662cdcb3156128baaa17879ce8119d205b807d7b922d7ee0a2d53e796b391d6db590b8aa278ed8314d14b23a141d8ad70215f75a3bfb0e8cb7146e19ff63d9cebaf106f80e0f2f95675fe5295ee8ce2168331b91a1882743ad41bd42490ceee3202170e926e1394aabe5bd51361e3d12aa4dde2d1415af3fe1f1ada89b430e30adaa8ada7089c3f4be38e3093138a3b863ebd7d63b97c5a2d98ff1d79b6461342e4cc6f86272d5f2ec59955879f7f979e080e04df506a12d4110b5203b73837d0ee158979941d664424a3908962265519522a2feb67bf7214cebe8b56053484104a0c76aec37a7874bd9b9ded7d4a8799ccae32540ce20561468f9c2757a9674eb6f0b403aab29be9dd7c6f7cbec0fdebe8f10ced2ef208fe3ee67bd05a550fe5585d5419ab7afe34dc6e401a2dbd99551eb37ff610d93a2020251c7d9057058e74a2f03e9d8b5b22b3eccaa655ac34eae93bafbfeb5c75d6b848b857210b281a13540fdbfc862df57a9bbefd72a0c2382fb44c0c72c4cf79496ffbe1b61c6b36d1494e119f7a6c1d6dc4b64f341f3d0ae9a856c2fa612c8e668e347be678e62e7132a697c6f2f13e2f79453fb90577f573e97b4c3f2e76772e75ec9a6e4b0019d5de31657999de0ccc986b32dd7b0ca694168f37a5c3757078419dde3f2869f60d47fe7238f6828529adc7be610c2c77454f9f0626c405876922e98f7afddda8788146eaf464f7f6070f30dda54eb6459305b3e8a909420efab40f0a391717eec4c4d79b0455eb3dac957bef7262c8717f64ba9b4760daca0f615b02aa9956de4a046dbd3d87eb514f674b4f1717fef899d0c84c252377ae302d3c04683647ab88f15262587ae101dd572f7bfe7a366dde6c255fe656940f002c26a89bfb6d6aeff5c9665c8da53a59fe51a8defde51edd8db78158e8db53e9b44dda36bca163d7c75bcd9694feb57367c962b88a7023cc120a0338383ffc6b2f57cabf385bdac89778dfb7d38bd0c967cc90d4fce835e4b36a59639f32b9d2b5c598381d9b8f3ca9c328786746eea9b3f3b51c38ee078af3c87cdbfe0735cb4781551f5d535f90a113021096102cf8c5fedb98cb0e18c6e2a634f384aab15597a69ad498f27a5cb89ad1322240382c99f41df5a6606d325c94a66b6126fe8d12d112e6c1579bac18bd2bb1472ff3dd2ed996f1a9245fdbc4573832955f5580ddfc14cf0d580bde5ad6a8c40917047745fc5ca676f5fa1d488d96a9d64a0c999c72d1b1ac680b71cdf1707e5dca49e603bb710e203d9d4d4b1549aba64f6094b98996ec904fb579be270cd66148d246225f004eef5ce2e299f7878494c5b5d32764a8af52cd0bafba5ac24dc28c7240d7011518d740aaad79524e987ab7b4df35f740feb64a341aaeafbbed52073a0659ee54461b3642a6c9489d83da33b54357e6f41817e83da114460f29a98050810decc3d76784664c84a3e2359bd29c402bae8a874a4b2182cc9ecd7faeeb82c8e726e3db541bafcb415bfb70508a2b0d9f27ee84d7b3dc309d3c971dfb79bada0a3a0e1cff56ee512bba05b9f6ac72e1ad2cdd356cd99cffbb8fba80cd28562d79873a3c06d52aab30d7aea1c930560778b936a65540fe49ca6ca76859c4de1223f4cff16c374dfbf2470c8db4ef3a70859e5864d2288facba62e0536ba24428c7e928e1dde212709a2d5be4dc6d641cf9f739c42ad0ade2c000212b64c993e8f977df43513e54b23de164a5fc70775b162060b060f5ee6a2be9d54ad092aa1178f46c2ba90919c9241585e78df4b4006a89ad16eb5c0f0c3826be7794a19555966f6a6af2a8b426c6073fd4024069a0110c9badfa1b368a630e22a4fd5b13a4c9468cc4bab8ab4012fb0de9dd3cacde5a1bc26d64793b4a19c08f0fcad2eb44f505de36245db95abeb0c8fff61077ba80c29fc94d9d60b3a252d9684ca34d1f1de36243ee020a6ae937b792944a11f39bb3a75db30b8cad1311390466985a992402b639d623907dcf3d8c3683f9fd37f4566549b61dfe06be235db963859b3c9d5e0c133612c3aaabeb0196c17f7d6e3a66385530b7cbc102bc07db1d5d1955277e3e2832e0dba83b0a84b673ebdfad3c75125aebdabbd599cb80ecd5c9491f0c3bf9996c4cbb4437fe805a9a5e07aca81816f7af9e88d49195ac50155a98069e8ba8db4099973bc9891f4d3c2f57e6deef3a324b61e6a599d421351065c1bd5aef6a1a57c7d38b1f7ccc603c388605f0fa7a4991c88d3cff98cd1cf5d2f0bd9fbf4a3af0177c7a0a37277b4335cc19923ed47d3b25237009ef66de60b44a8bada3ad5219cf67a7a415fac72479d060abf71685f2f99da1df90fcc11b1ce302b06172d7e9628033b90541634add4fd3608ada0527e9c0f8e5ea9cfb6ac02306efa33f62fd1366dab5fb343a7fc6f0fe22d2998b0c8d85c1057d742e597985c7d4e6320b015a9139385cff4cbae06ffc0ebe89afee004b1d853b4e8fd0406ea4b2dcb3c5264cf52e8f80eed0ba8236c3d39c2b913eaf1516d40c9450d1dde8cc20d3b1112fd2ad923959c933f9f3eeabef48870ca9libLLVM.so.17libLLVMTableGen.so.17libLTO.so.17libRemarks.so.17rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootllvm17-17.0.6-bp155.5.1.src.rpmcmake(LLVM)cmake(LLVM-)libLTO.sollvm-devel-providerllvm17-develllvm17-devel(s390-64)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    /sbin/ldconfig/sbin/ldconfigld64.so.1()(64bit)ld64.so.1(GLIBC_2.3)(64bit)libLLVM17libLTO17libc.so.6()(64bit)libc.so.6(GLIBC_2.15)(64bit)libc.so.6(GLIBC_2.2)(64bit)libc.so.6(GLIBC_2.2.4)(64bit)libc.so.6(GLIBC_2.3)(64bit)libc.so.6(GLIBC_2.3.4)(64bit)libc.so.6(GLIBC_2.4)(64bit)libdl.so.2()(64bit)libdl.so.2(GLIBC_2.2)(64bit)libgcc_s.so.1()(64bit)libgcc_s.so.1(GCC_3.0)(64bit)libgcc_s.so.1(GCC_3.3)(64bit)libm.so.6()(64bit)libm.so.6(GLIBC_2.2)(64bit)libpthread.so.0()(64bit)libpthread.so.0(GLIBC_2.2)(64bit)libstdc++-devellibstdc++.so.6()(64bit)libstdc++.so.6(CXXABI_1.3)(64bit)libstdc++.so.6(CXXABI_1.3.11)(64bit)libstdc++.so.6(CXXABI_1.3.5)(64bit)libstdc++.so.6(GLIBCXX_3.4)(64bit)libstdc++.so.6(GLIBCXX_3.4.11)(64bit)libstdc++.so.6(GLIBCXX_3.4.14)(64bit)libstdc++.so.6(GLIBCXX_3.4.15)(64bit)libstdc++.so.6(GLIBCXX_3.4.18)(64bit)libstdc++.so.6(GLIBCXX_3.4.19)(64bit)libstdc++.so.6(GLIBCXX_3.4.20)(64bit)libstdc++.so.6(GLIBCXX_3.4.21)(64bit)libtinfo.so.6()(64bit)libtinfo.so.6(NCURSES6_TINFO_5.0.19991023)(64bit)libtoolllvm17llvm17-goldllvm17-polly-develpkgconfigrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)17.0.617.0.617.0.63.0.4-14.6.0-14.0-15.2-1cmake(LLVM)libLTO.sollvm-devel-providerllvm5llvm717.0.617.0.64.14.3g8@g1g,g+Z@ffą@f DeZee@ehy@eX@eGe1@e!H@e @d@d{+@dddWdBzd>@d7d.@dd m@d @c™@cctcgcZrc< @c,N@c*c@c6@cAcc@b@bbL@b@b@bbm$be;bI@bI@b$@bb b D@b[@aa@aNa@aW@a(@a(@aXIaE````y|@`)__@__S_@__@__"@_*@_ @^^y@^x^h^c^=Q@^;^9\^8 @^1s^.^^^@^!@^,]]@]@]N@]]{@]]c@]K@]b@]b@]]2@]V]3@]@]]@]\ \O\\\M\@\u*@\iL\=@\Aaron Puchert Michal Suchanek Michal Suchanek Aaron Puchert Aaron Puchert Aaron Puchert Michael Gorse Aaron Puchert Fabian Vogt Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert William Brown Aaron Puchert Aaron Puchert Aaron Puchert Dirk Müller Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Andreas Schwab Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Martin Liška Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Dirk Müller Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Andreas Schwab John Paul Adrian Glaubitz Aaron Puchert Alberto Planas Dominguez Aaron Puchert Martin Liška Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Martin Liška Aaron Puchert Aaron Puchert Aaron Puchert Guillaume GARDET Callum Farmer Andreas Schwab Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Ismail Dönmez Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Richard Biener Richard Biener Richard Biener Andreas Schwab Aaron Puchert Richard Biener Aaron Puchert Andreas Schwab Jaime Caamaño Ruiz Andreas Schwab Andreas Schwab Aaron Puchert Aaron Puchert Martin Liška Aaron Puchert Aaron Puchert Fabian Vogt Aaron Puchert Stefan Brüns Aaron Puchert Aaron Puchert Lubos Lunak Aaron Puchert Aaron Puchert Aaron Puchert Guillaume GARDET Aaron Puchert Aaron Puchert Aaron Puchert Aaron Puchert Martin Liška aaronpuchert@alice-dsl.netAdrian Schröter msrb@suse.comaaronpuchert@alice-dsl.netmsrb@suse.comJohn Paul Adrian Glaubitz msrb@suse.commsrb@suse.comDirk Mueller Todd R John Paul Adrian Glaubitz msrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.coml.lunak@centrum.czmsrb@suse.commsrb@suse.comtchvatal@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.comnormand@linux.vnet.ibm.comdmueller@suse.commsrb@suse.commsrb@suse.comfcrozat@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commsrb@suse.commeissner@suse.comschwab@suse.dedmueller@suse.comjimmy@boombatower.comidonmez@suse.comidonmez@suse.comidonmez@suse.comdmueller@suse.comafaerber@suse.deidonmez@suse.comidonmez@suse.comidonmez@suse.comidonmez@suse.comidonmez@suse.comidonmez@suse.comidonmez@suse.comjslaby@suse.comidonmez@suse.comtoddrme2178@gmail.comtoddrme2178@gmail.comtoddrme2178@gmail.comtoddrme2178@gmail.comtchvatal@suse.comtoddrme2178@gmail.comtchvatal@suse.comnormand@linux.vnet.ibm.comschwab@suse.deronisbr@gmail.comidonmez@suse.comidonmez@suse.comidonmez@suse.comdmueller@suse.comidonmez@suse.comidonmez@suse.comidonmez@suse.comidonmez@suse.comidonmez@suse.commimi.vx@gmail.comidonmez@suse.comidonmez@suse.comidonmez@suse.comro@suse.deidonmez@suse.comidonmez@suse.comidonmez@suse.comrguenther@suse.comidonmez@suse.comidonmez@suse.comdmueller@suse.com- Apply clang-shlib-symbol-versioning.patch to add symbol versions to libclang-cpp.so similar to libLLVM.so. This is required when multiple versions of the library are loaded into the same process. (boo#1219405, boo#1221183, boo#1233220)- Require libffi when we build openmp for offloading. - Update llvm17.keyring from upstream.- Correct target name for libomptarget in file list (backport from llvm18)- Enable lldb on s390x and ppc64le (bsc#1232906).- Add clang-Fix-build-with-GCC-14-on-ARM.patch to fix build with GCC 14 on aarch64. (boo#1229868, gh#llvm/llvm-project#78691)- Add minor version to Python shebangs. (boo#1212476) - Remove shebang and executable bit where not needed.- Use old conflicts/provides for python3-clang on Leap.- Explicitly define PYTHON3_EXECUTABLE, since python 3.11 is being pulled in by cmake in SLE-15-SP6.- Fix PowerPC triples: use powerpc[64[le]] instead of ppc[64[le]]. - Require 8 GB memory for 64-bit architectures to prevent OOM. - Use %patch -P N instead of deprecated %patchN.- Use %_target_* for determining the compiler host triple (boo#1218701)- Update to version 17.0.6. * This release contains bug-fixes for the LLVM 17.0.0 release. This release is API and ABI compatible with 17.0.0. - Rebase patches: * llvm-do-not-install-static-libraries.patch * llvm-normally-versioned-libllvm.patch - Use major version only instead of full (patch-level) version for versioned executables: we don't support parallel installation of multiple versions of the same LLVM major version. (boo#1217450) Also drop the clang-X.Y symlink that was introduced for boo#1012260, because Y is always 0. - Manage clang-cpp with update-alternatives like other binaries.- Update to version 17.0.5. * This release contains bug-fixes for the LLVM 17.0.0 release. This release is API and ABI compatible with 17.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Also test clang-tools-extra (at least most parts) and lld. - Adapt test in lld-default-sha1.patch. - Don't disable testing if qemu_user_space_build has been set to 0.- Update to version 17.0.4. * This release contains bug-fixes for the LLVM 17.0.0 release. This release is API and ABI compatible with 17.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Include libomptarget.devicertl.a in libomp*-devel, which is required for (GPU) offloading.- Update to version 17.0.3. * This release contains bug-fixes for the LLVM 17.0.0 release. This release is API and ABI compatible with 17.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Disable zstd support for now regardless of whether libzstd-devel is installed. (boo#1216121) - Limit number of LTO threads on 32-bit architectures to prevent out-of-memory during linking.- Update to version 17.0.2. * This release contains bug-fixes for the LLVM 17.0.0 release. This release is API and ABI compatible with 17.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 17.0.1. * For details, see the release notes: - https://releases.llvm.org/17.0.1/docs/ReleaseNotes.html - https://releases.llvm.org/17.0.1/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/17.0.1/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/17.0.1/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/17.0.1/tools/lld/docs/ReleaseNotes.html - Rebase patches: * libcxx-test-library-path.patch * llvm_build_tablegen_component_as_shared_library.patch * llvm-do-not-install-static-libraries.patch * llvm-normally-versioned-libllvm.patch * llvm-remove-clang-only-flags.patch * opt-viewer-Find-style-css-in-usr-share.patch - Simplify check-no-llvm-exegesis.patch by removing test directory. - Drop patches that have landed upstream: * openmp-drop-rpath.patch - Add openmp-dont-run-gpu-arch.patch: the binaries are not available in our build, and neither are the toolchains they test for (NV CUDA and AMD HSA).- Update to version 16.0.6. * This release contains bug-fixes for the LLVM 16.0.0 release. This release is API and ABI compatible with 16.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Make python3-clang noarch again and fix conflicts/provides to point to %python3_sitelib instead of %python3_sitearch.- Update to version 16.0.5. * This release contains bug-fixes for the LLVM 16.0.0 release. This release is API and ABI compatible with 16.0.0. - Rebase patches: * llvm-do-not-install-static-libraries.patch * llvm-remove-clang-only-flags.patch - Enable ThinLTO on riscv64.- Update to version 16.0.4. * This release contains bug-fixes for the LLVM 16.0.0 release. This release is API and ABI compatible with 16.0.0. - Rebase patches: * llvm-do-not-install-static-libraries.patch * llvm-remove-clang-only-flags.patch- Update to version 16.0.3. * This release contains bug-fixes for the LLVM 16.0.0 release. This release is API and ABI compatible with 16.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 16.0.2. * This release contains bug-fixes for the LLVM 16.0.0 release. This release is API and ABI compatible with 16.0.0. - Rebase check-no-llvm-exegesis.patch. - Rebase llvm-do-not-install-static-libraries.patch.- Relax requirements for clang-tools to allow installation of older versions of libclang13 with the -devel package. (boo#1210176) - Enable ThinLTO for ARM 6/7/8 again. (boo#1178070)- bsc#1210383 - Add aarch64 to lldb platforms- Update to version 16.0.1. * This release contains bug-fixes for the LLVM 16.0.0 release. This release is API and ABI compatible with 16.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 16.0.0. * For details, see the release notes: - https://releases.llvm.org/16.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/16.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/16.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/16.0.0/tools/lld/docs/ReleaseNotes.html * New LLVM tools: - llvm-debuginfo-analyzer: Print a logical representation of low-level debug information. - llvm-remarkutil: Remark file utilities. * The test tool split-file is no longer installed. * New Clang tools: - amdgpu-arch and nvptx-arch: Tools used to detect locally available GPUs by the Clang OpenMP driver. - clang-include-cleaner: Standalone tool to determine which headers are used, using existing functionality in clangd. - clang-tblgen: Table Generation for Clang. * Removed Clang tools: clang-{nvlink,offload}-wrapper. - Rebase patches: * assume-opensuse.patch * check-no-llvm-exegesis.patch * link-clang-shared.patch * llvm_build_tablegen_component_as_shared_library.patch * llvm-do-not-install-static-libraries.patch * llvm-suse-implicit-gnu.patch * llvm-workaround-superfluous-branches.patch * openmp-drop-rpath.patch - Drop patches that have landed upstream: * clang-test-xfail-gnuless-triple.patch * CMake-Look-up-target-subcomponents-in-LLVM_AVAILABLE_LIBS.patch * libcxxabi-fix-armv7-test.patch * llvm-armv7-fix-vector-compare-with-zero-lowering.patch * llvm-link-atomic.patch - Remove llvm-better-detect-64bit-atomics-support.patch that should not be required anymore. - Add PGP signatures and keyring for source verification.- Add llvm-suse-implicit-gnu.patch to recognize -suse-linux as implicitly GNU. Without this we would get library calls for fused-multiply-add even if it's available in hardware. - Add openmp-drop-rpath.patch: backport revert of adding RUNPATH to openmp executables. (boo#1206837)- update constraints to exclude workers with very slow CPU- Update to version 15.0.7. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Build stage 2 with -fno-plt on x86_64: since building with - Wl,-z,now the PLT stubs are basically dead code, so eliminating the indirection reduces the number of branches and improves code locality for the quite frequent cross-DSO calls. - Add llvm-workaround-superfluous-branches.patch: hints LLVM to eliminate branches until gh#llvm/llvm-project#28804 is solved.- Update to version 15.0.6. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 15.0.5. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Remove obsolete lldb-swig-4.1.0-build-fix.patch. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 15.0.4. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 15.0.3. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Add llvm-armv7-fix-vector-compare-with-zero-lowering.patch: Fix lowering of non-canonical vector comparison with zero on armv7, preventing a crash (boo#1204267, gh#llvm/llvm-project#58514). - Add lldb-swig-4.1.0-build-fix.patch: Fix build with Swig 4.1.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 15.0.2. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 15.0.1. * This release contains bug-fixes for the LLVM 15.0.0 release. This release is API and ABI compatible with 15.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Always drop -gnu from triple for consistency. Patch a test that was looking for -linux- in clang-test-xfail-gnuless-triple.patch.- Use correct LLVM_HOST_TRIPLE for riscv64- Update to version 15.0.0. * For details, see the release notes: - https://releases.llvm.org/15.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/15.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/15.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/15.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/15.0.0/tools/lld/docs/ReleaseNotes.html * New LLVM tools: - llvm-debuginfod: Provides debug info to remote hosts. - llvm-dwarfutil: Can copy and manipulate debug info. - llvm-remark-size-diff: Compute diff between remark files. * New Clang tools: - clang-offload-packager: Bundle multiple objects into single fat binaries including offload code. - clang-pseudo: Approximate heuristic parser for C++. - Rebase patches: * check-no-llvm-exegesis.patch * link-clang-tools-extra-shared.patch * lld-default-sha1.patch * llvm-do-not-install-static-libraries.patch * lto-disable-cache.patch - Drop patches that have landed upstream: * clang-repl-private-deps.patch * llvm-glibc-2-36.patch * llvm-scev-fix-isImpliedViaMerge.patch - Drop llvm-lifetime-for-rust.patch: this is now solved via attributes and LLVM doesn't need a hardcoded list of allocation functions anymore. - Add llvm-link-atomic.patch to fix build on ppc. - Add libcxx-test-library-path.patch to fix libc++ tests failing without RUNPATH on libc++.so. - Add libcxxabi-fix-armv7-test.patch to fix tests on armv7l. - Thanks to Andreas Schwab for most of the rebasing!- Make sure we keep -DNDEBUG. At some point %{optflags} must have lost it, perhaps because CMake usually adds it on top. So when overriding CMAKE_{C,CXX}_FLAGS_RELWITHDEBINFO, we make sure to take over the other flags. We drop LLVM_ENABLE_ASSERTIONS=OFF, because that's the default anyway and hasn't helped here. - Add llvm-scev-fix-isImpliedViaMerge.patch: fixes a miscompilation caused by mixing up values of the current and previous iteration. (See gh#llvm/llvm-project#56242.)- Add llvm-lifetime-for-rust.patch to have Rust memory management functions considered as lifetime markers. This should aid dead store elimination to dynamically allocated memory in Rust code.- Don't declare python3-clang as noarch: Python packages are installed into %{_libdir}.- Use black RPM macro magic to deduplicate binary lists. This should have no effect on the generated RPM but shaves ~400 lines off the specfile and hopefully makes future maintenance easier.- Add WebAssembly support for all architectures.- Add llvm-glibc-2-36.patch in order to address boo#1202215.- Update to version 14.0.6. * This release contains bug-fixes for the LLVM 14.0.0 release. This release is API and ABI compatible with 14.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 14.0.5. * This release contains bug-fixes for the LLVM 14.0.0 release. This release is API and ABI compatible with 14.0.0. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 14.0.4. * This release contains bug-fixes for the LLVM 14.0.0 release. This release is API and ABI compatible with 14.0.0. - Don't use gold for linking anymore: on s390x we use ld.bfd with LLVMgold.so, on ppc64 we disable ThinLTO for now. - Using ld.bfd on s390x exposed an issue with the existing llvm_build_tablegen_component_as_shared_library.patch: linking llvm-tblgen with libLLVM.so means we also have to link libraries used for that (like LLVMTableGenGlobalISel) with libLLVM.so. - Rewrite summary and description for llvm-gold to point out that it can also be used with ld.bfd, recommend with binutils. - Prefer RPM macros over shell scripting, so that we can better inspect the build script with substitutions in place. - More memory for stage 1 build jobs due to recent OOMs. - Add %_libclang_sonum RPM macro to llvm-devel, since that might now diverge from %_llvm_sonum. - Rebase llvm-do-not-install-static-libraries.patch.- Update to version 14.0.3. * This release contains bug-fixes for the LLVM 14.0.0 release. This release is API and ABI compatible with 14.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Use ThinLTO with lld on i586.- Update to version 14.0.1. * This release contains bug-fixes for the LLVM 14.0.0 release. This release is API and ABI compatible with 14.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Drop obsolete patches: * PPCISelLowering-Avoid-emitting-calls-to-__multi3.patch - Don't override default linker flags. (We were losing -Wl,-z,now.)- Update to version 14.0.0. * For details, see the release notes: - https://releases.llvm.org/14.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/14.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/14.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/14.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/14.0.0/tools/lld/docs/ReleaseNotes.html * New LLVM tools: - llvm-debuginfod-find: Tool to fetch debuginfod artifacts. - llvm-tli-checker: LLVM TargetLibraryInfo versus SDK checker. * New Clang tools: - clang-linker-wrapper: A wrapper utility over the host linker. - clang-nvlink-wrapper: A wrapper tool over nvlink program. - Add clang-repl-private-deps.patch to make link dependencies of clang-repl private, otherwise CMake can't install. - Add PPCISelLowering-Avoid-emitting-calls-to-__multi3.patch to fix build on PowerPC (32-bit). - Drop llvm-exegesis-link-dylib.patch, instead we don't build llvm-exegesis anymore and add check-no-llvm-exegesis.patch to disable the corresponding tests. - Rebase patches: * lldb-cmake.patch * llvm-do-not-install-static-libraries.patch * llvm-normally-versioned-libllvm.patch - Drop patches that have landed upstream: * llvm-update-extract-section-script.patch- Split up Clang libraries: libclang.so is no longer so-versioned alongside LLVM but will stay at libclang.so.13 for now. So we put it into a separate package from libclang-cpp.so. Since we can't have multiple LLVM versions generate the same package, we prefix it for the non-default LLVM with a mechanism inspired by the GCC packaging. - Patch exported clang/ClangTargets-relwithdebinfo.cmake to refer to libclang only by soname, because the installed library might be newer than the one originally build with the package. - Use the same mechanism to for libc++ and package Clang scripts only for the default version. This means we'll no longer have to touch the package when a new major version comes out. - Make sure we properly clean up the clang scripts if we're not packaging them. - Let python3-clang use libclang.so.XX, which means we can always build it and makes it depend on libclang instead of clang-devel. - Fix some rpmlint issues: we don't need explicit library dependencies that are detected automatically, and we add proper library dependencies to the *-devel packages. - Merge llvm-LTO-devel into llvm-devel. That's where the header files already are, and they are hard to separate. - Let llvm-polly-devel depend on llvm-devel. - Remove libLTO and *-devel packages from baselibs, they don't seem to be needed. We mostly need libLLVM and maybe libclang-cpp. - Consistently set host triple as *-suse-linux-gnu*. - Only suggest documentation packages.- Fix armv6hl cpu architecture typo.- Let clang-devel accept a newer version of clang-tools: we don't keep multiple versions of the latter.- AND instead of OR in License tag after sr#954337.- More conflicts for addition to Leap: clang-tools conflicts with llvm9 because that doesn't have the move of hmaptool yet, and llvm13-devel with llvm{5,7} as they used to have FileCheck.1.gz.- Add SUSE_Backports_policy-SLE_conflict to rpmlintrc, we're deliberately conflicting with SLE here to offer a newer version than what SUSE wants to support. (https://code.opensuse.org/leap/features/issue/55)- Update to version 13.0.1. * This release contains bug-fixes for the LLVM 13.0.0 release. This release is API and ABI compatible with 13.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Drop obsolete patches: * llvm-fix-building-with-GCC-12.patch - Drop RUNPATH from packaged binaries, instead set LD_LIBRARY_PATH for building and testing to simulate behavior of actual package.- Update constraints for riscv64- Add support for experimental targets and enable the M68k backend - Add patch to fix testsuite after enabling the M68k backend + llvm-update-extract-section-script.patch- BuildRequires: python-rpm-macros to fix Leap 15.3 build. - More memory for GCC compile jobs.- Add FileCheck into the devel package, as is required for testing Rust (boo#1192629)- Let clang recommend gcc and glibc-devel as we need both for building executables. No hard requirement because Clang can be used as a frontend only. (boo#1191587) - Set minimal CMake version required.- Backport llvm-fix-building-with-GCC-12.patch in order to fix building with GCC 12.- Update to version 13.0.0. * For details, see the release notes: - https://releases.llvm.org/13.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/13.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/13.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/13.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/13.0.0/tools/lld/docs/ReleaseNotes.html * New LLVM tools: - llvm-otool: Mach-O object file displaying tool. - llvm-sim: LLVM IR Similarity Visualizer. - llvm-tapi-diff: Diff tool for tbd files. - llvm-windres: Tool to manipulate Windows resources. * llvm-elfabi was removed. * New Clang tools: - clang-repl, an interactive interpreter for C/C++. - intercept-build, analyze-build: the former intercepts build commands to build a compilation database, the latter runs the static analyzer over all translation units. - scan-build-py: Python reimplementation of scan-build. - Rebase patches: * link-clang-shared.patch * llvm-do-not-install-static-libraries.patch * llvm-exegesis-link-dylib.patch - Drop patches that have landed upstream: * tablegen-test-link-static.patch - Run tests on more architectures, disable those that seem to hang. Don't run libcxx tests at all anymore because they take so long. - Relax constraints so that we can build on more machines.- Set CMAKE_LINKER to workaround CMake wanting to use lld just because we're using clang as compiler. Fixes build on aarch64. (https://bugs.llvm.org/show_bug.cgi?id=51115)- Update to version 12.0.1. * This release contains bug-fixes for the LLVM 12.0.0 release. This release is API and ABI compatible with 12.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Drop obsolete patches: * clangd-cmake-non-standard-layout.patch * compiler-rt-Remove-cyclades-inclusion-in-sanitizer.patch * lld-no-version-on-undefined-weak-lazy-symbols.patch- Add compiler-rt-Remove-cyclades-inclusion-in-sanitizer.patch: Fix build with linux-glibc-devel 5.13.- Set memory limits for DWZ to 4x.- Update to version 12.0.0. * For details, see the release notes: - https://releases.llvm.org/12.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/12.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/12.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/12.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/12.0.0/tools/lld/docs/ReleaseNotes.html - Rebase patches: * assume-opensuse.patch * lldb-cmake.patch * llvm-better-detect-64bit-atomics-support.patch * llvm-do-not-install-static-libraries.patch * llvm_build_tablegen_component_as_shared_library.patch - Drop patches that have landed upstream: * Fix-missing-include.patch - Always use ld.bfd for stage 1, use lld for stage 2 where we use ThinLTO and where it's supported, gold where lld doesn't work, and ld.bfd where we don't use ThinLTO. (boo#1181621) - Add lld-no-version-on-undefined-weak-lazy-symbols.patch to fix a bug in lld that made libLLVM.so contain a corrupt symbol version. - Add clangd-cmake-non-standard-layout.patch to fix build in our non-monorepo layout.- Don't use gold and ThinLTO on ppc64le because of boo#1181621. - Fix-missing-include.patch: fix build with GCC 11. (boo#1181875) - CMake-Look-up-target-subcomponents-in-LLVM_AVAILABLE_LIBS.patch: Fix target component lookup. (boo#1180748)- Update to version 11.0.1. * This release contains bug-fixes for the LLVM 11.0.0 release. This release is API and ABI compatible with 11.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Drop obsolete compiler-rt-dont-compile-assembly-files-as-c.patch. - Make documentation tarballs more reproducible.- Increase required RAM for aarch64- Move BFD plugins to %{_libdir}- polly-pthread.patch: Remove, std::call_once no longer needs libpthread- Add compiler-rt-dont-compile-assembly-files-as-c.patch to fix build failure with newer CMake versions.- Let CMake files in {llvm,clang}X-devel refer to the versioned binaries that come with the package instead of the symlink managed by update-alternatives. (boo#1178513)- Disable ThinLTO on aarch64 because of hangs. (boo#1178070) - Enable ThinLTO on ppc64 and ppc64le, the internal error is gone.- Update to version 11.0.0. * For details, see the release notes: - https://releases.llvm.org/11.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/11.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/11.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/11.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/11.0.0/tools/lld/docs/ReleaseNotes.html * New LLVM tools: llvm-gsymutil, llvm-ml. * clang-import-test was removed. - Drop obsolete patches: * clang-ignore-stack-clash-protector.patch * fix-atomics-test.patch * restore-llvm10-abi.patch - Rebase patches: * clang-resourcedirs.patch * default-to-i586.patch * link-clang-shared.patch * link-clang-tools-extra-shared.patch * lldb-cmake.patch * llvm-do-not-install-static-libraries.patch * lto-disable-cache.patch - Add llvm-exegesis-link-dylib.patch: link llvm-exegesis with libLLVM.so, the advanced functionality is not available anyway. - Remove -fstack-clash-protection on architectures where it isn't actually supported, because that prevents feature detection. - Make sure we also build AttributeReference for the documentation. This requires building via CMake. Also shorten the paths.- Add ld.lld as an alternative for ld. (boo#1174656)- Update to version 10.0.1. * This release contains bug-fixes for the LLVM 10.0.0 release. This release is API and ABI compatible with 10.0.0. - Rebase llvm-do-not-install-static-libraries.patch. - Replace ValueLattice-Add-new-state-for-undef-constants.patch, which landed upstream in a modified version, by restore-llvm10-abi.patch that resets the ABI to our 10.0.0. - Rewrite lld-default-sha1.patch to be version-independent. - Set flags consistently, so that we don't lose -DNDEBUG on 32-bit architectures. Also we don't need the opt flags twice. This leads to a significant reduction in binary sizes on 32-bit arches. - Make it easier to package release candidates. - Enable most tests on 32-bit ARM, but not for libcxx. - Add fix-atomics-test.patch for architectures where native atomics are not available. - Lower build constraints for riscv64 a bit to allow building on more workers. - Allow more compile jobs in stage 2.- Factor out computation of the number of jobs into a macro. - Choose mem_per_compile_job dependent on build stage, let stage 1 on x86_64 use more memory. - More generous memory allocation on riscv64.- Add lld-default-sha1.patch to make lld generate SHA1 build-ids by default, otherwise our tools cannot process the debuginfo.- Update to version 10.0.0. * For details, see the release notes: - https://releases.llvm.org/10.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/10.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/10.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/10.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/10.0.0/tools/lld/docs/ReleaseNotes.html * New LLVM tools: llvm-ifs, llvm-install-name-tool, llvm-reduce. * New Clang tools: clang-move, clang-offload-wrapper, pp-trace. * lldb-mi moved to a separate project and is no longer available. - Dropped obsolete patches: * clang-fix-powerpc-triplet.patch * clang-riscv64-rv64gc.diff * compiler-rt-move-fdp.patch * compiler-rt-sanitizer-ipc-perm.patch * D60657-riscv-pcrel_lo.diff * gwp-asan-lto.patch * libcxx-tests-linux-distribution.patch * link-lldb-shared.patch * llvm-riscv64-fix-cffi.diff * openmp-export-fini.patch * riscv-eh-frame-fixup.patch * riscv64-suse-linux.patch - Rebased patches: * assume-opensuse.patch * link-clang-tools-extra-shared.patch * lldb-cmake.patch * llvm_build_tablegen_component_as_shared_library.patch * llvm-do-not-install-static-libraries.patch * llvm-remove-clang-only-flags.patch * lto-disable-cache.patch * polly-pthread.patch * tests-use-python3.patch - Add tablegen-test-link-static.patch: fix TableGenTests. - Add ValueLattice-Add-new-state-for-undef-constants.patch: fix miscompilation on ppc64/s390x that was leading to test crashes. - Enable ThinLTO on aarch64. - Disable ThinLTO on ppc64le due to internal error in gold. - Delete object files and static libraries from build tree in %install already, because debuginfo extraction happens after that. If we do it after %check, we run out of disk space. - Run tests "manually", because we've already removed many targets. - Don't build unit tests, because some of them are now statically linked, which is very expensive with LTO. Also unit tests are probably not very interesting on the distribution level, we don't expect them to perform different than in upstream. The relevant upstream change for this is https://reviews.llvm.org/D54439. - Drop %if for openSUSE 13.2.- Remove conflicts of clang-tools with {clang,llvm}{7,8}: the relevant binaries have been removed from those packages. This allows having clang-tools together with older versions of llvm. For a smooth installation we add OrderWithRequires dependencies. - Fix typos in (still inactive) !%{with clang_scripts} part.- Require clang-tools for clangX-devel.- Move all clang-related scripts (including those originally in clangX-checker), hmaptool and clang-doc into a common unversioned subpackage clang-tools, like python3-clang. The scripts reference the unversioned executables, so allowing multiple versions via update-alternatives would be misleading. The clang-doc executable will come with assets in Clang 10, so we have to take it out of update-alternatives as well. This should be the proper solution to boo#1161873. - Include run-find-all-symbols script in clang-tools. - Remove metadata for clangX-include-fixer subpackage that never had any files and thus wasn't released as rpm. There are so many clang binaries that packaging them separately doesn't scale. - Fix lldb version string, adapt lldb-cmake.patch (boo#1165517). - Remove unneccesary libtool dependency. - Don't let clang depend on libc++, we link it with libstdc++. - Recommend gold plugin if clang and gold are installed.- Add vim-plugin-llvm Conflicts to clang subpackage which now contains files formerly in llvmN-vim-plugins, conflicting with packages from older llvm releases.- Add back emacs-llvm Provides and Conflicts to clang subpackage originally in llvm-emacs-plugins to properly conflict with llvm-emacs-plugins from older llvm releases.- Add clang5-devel to clang9-doc conflicts.- Add compiler-rt-sanitizer-ipc-perm.patch: Fix sanitizer-common build with glibc 2.31.- Move clang-{format,include-fixer,rename}.{el,py} files from llvm-*-plugins to clang package. (boo#1161873) - Drop the now empty llvm-emacs-plugins package.- Add polly and lld build conditionals, remove excessive Requires to clang from docs. Fix conditional for libc++ use. [jsc#SLE-7400, jsc#SLE-7614, jsc#SLE-7452, jsc#SLE-8920, jsc#SLE-7390, jsc#SLE-7587]- Undo spec-cleaner changes that we don't want. * Reintroduce blank lines in configuration. * Use packageand syntax that works for older versions of RPM. * Don't use %{_bindir} on left-hand side of sed replacements.- riscv-eh-frame-fixup.patch: Remove changesets that alter the libLLVM ABI- Add upstream patch to export compiler-rt FuzzedDataProvider header, required by Envoy 1.12.2: * compiler-rt-move-fdp.patch- riscv-eh-frame-fixup.patch: Fix handling of .eh_frame on RISC-V - polly-pthread.patch: Add missing -lpthread- Enable support for riscv64 - clang-riscv64-rv64gc.diff, riscv64-suse-linux.patch, llvm-riscv64-fix-cffi.diff, D60657-riscv-pcrel_lo.diff: Backports from master- Update to version 9.0.1. * This release contains bug-fixes for the LLVM 9.0.0 release. This release is API and ABI compatible with 9.0.0. - Drop patches that have landed upstream: * dont-install-example-analyzer-plugins.patch * fix-module-test.patch * llvm-add-missing-include.patch - Drop set-revision.patch, don't provide revision number in clang. The upstream repository has moved from Subversion to git, so the revision number is just a hash, which limits its usefulness. - Rebase llvm-do-not-install-static-libraries.patch.- Modify libcxx-tests-linux-distribution.patch to remove dependency on python-distro again: we don't have expected failures.- Add llvm-add-missing-include.patch in order to fix boo#1158367.- Add gwp-asan-lto.patch: Make sure there are no LLVM IR files in static libraries that we package. - Add libcxx-tests-linux-distribution.patch (boo#1158293): Replace platform.linux_distribution by distro.linux_distribution. - Make documentation packages noarch.- Add openmp-export-fini.patch: Export termination function for libomp.so, solves boo#1155108. - Remove flaky test case in libcxx.- Fix typo, BOLL -> BOOL- Let new {llvm,clang}*-doc packages "Conflict" with older devel packages, which they were split from. - Let doc packages conflict with older versions of themselves.- (Build)Require only python3-base instead of full python3 package, the additional modules are not required. Helps shortening the build dependency chain. - Remove python3-* requires from lldb9 subpackage, and add it to the bindings/pretty-printer subpackage (python3-lldb9). - Add python3-base Requires to python3-clang subpackage- Add dont-install-example-analyzer-plugins.patch: Remove example analyzer plugins from install targets instead of deleting them. - Add fix-module-test.patch: fix test instead of deleting it. - Don't build static libc++ (with ThinLTO that's not useful anyway). - Don't build libc++experimental. - Don't package libc++abi.so with libc++-devel, it's already contained in the (required) libc++abi-devel. - Be more specific about files in libc++-devel.- Update to version 9.0.0. * For details, see the release notes: - https://releases.llvm.org/9.0.0/docs/ReleaseNotes.html - https://releases.llvm.org/9.0.0/tools/clang/docs/ReleaseNotes.html - https://releases.llvm.org/9.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - https://releases.llvm.org/9.0.0/projects/libcxx/docs/ReleaseNotes.html - https://releases.llvm.org/9.0.0/tools/lld/docs/ReleaseNotes.html - Change License to "Apache-2.0 WITH LLVM-exception OR NCSA". (https://llvm.org/foundation/relicensing/) - Allow building with ThinLTO and enable it on some architectures. - Disable LTO cache in lto-disable-cache.patch. - Unset MALLOC_CHECK_ for compilation to mitigate lock contention. - No debug info for ppc like for the other 32-bit targets. - Clean up _constraints: same constraints for 32-bit targets. - Don't use BUILD_SHARED_LIBS for Clang anymore, since the newly available libclang-cpp.so should expose the full C++ API. - Link tools with libclang-cpp.so by using CLANG_LINK_CLANG_DYLIB, similar to LLVM_BUILD_LLVM_DYLIB for libLLVM.so. - Remove obsolete n_clang_allow_BUILD_SHARED_LIBRARY.patch. - Add link-clang-shared.patch to link more clang targets with libclang-cpp.so, especially libclang.so. - Add link-clang-tools-extra-shared.patch, link-lldb-shared.patch: link targets in clang-tools-extra and lldb with libclang-cpp.so. - Simplify llvm-do-not-install-static-libraries.patch, also handle Clang, for which we now get static libraries. - Package documentation for llvm and clang separately, recommend them for the main package: they are not required for development, but actually useful for working with the non-devel packages. - Recommend editor plugins not just for llvm-devel. - Recommend libstdc++ for Clang again. - Move diagtool from llvm to clang subpackage. - Properly distinguish between %{_relver} and %{version}. - Drop aarch64-disable-memorytest.patch and reactivate test. - Rebase clang-resourcedirs.patch. - Rebase llvm-normally-versioned-libllvm.patch. - Rebase llvm-remove-clang-only-flags.patch. - Rebase llvm_build_tablegen_component_as_shared_library.patch. - Rebase set-revision.patch. - Increase disk space for build.- Make lldb recommend python3-lldb (it contains pretty printers).- Use python3 shebangs everywhere (boo#1146533). - Drop obsolete opt-viewer-Do-not-require-python-2.patch.- Remove unneccesary dependencies: * groff, bison and flex don't seem to be used. * jsoncpp is no longer used since r338461. * Move some BuildRequires to subpackages. * Don't recommend scan-{build,view} in clang (boo#1145444). * Devel packages are only required in other devel packages, when their headers are included in the installed headers. - Add versions to Provides/Conflicts except for files. - Remove unused (since r268685) CMake flags LLVM_ENABLE_TIMESTAMPS. - Fix installation of opt-viewer files when python3-clang is no longer built.- Update to version 8.0.1. * This release contains bug-fixes for the LLVM 8.0.0 release. This release is API and ABI compatible with 8.0.0. - Don't run LLVM tests on ppc at all because of sporadic hangs.- Increase RAM for armv6/7 to avoid OOM and be scheduled on fast worker- Use the documented LLVM_ENABLE_RTTI to enable RTTI instead of LLVM_REQUIRES_RTTI, which "is an internal flag that individual targets can use to force RTTI". (boo#1139584) - Drop obsolete llvm-build-tests-with-rtti.patch.- Exclude riscv64 for now since it fails to build.- Change some groups: * put libraries in System/Libraries, * devel packages in Development/Libraries, * clang in Development/Languages/C and C++, * the gold plugin in Development/Tools/Building. - Add some URLs, use https:// when possible. - Remove unneeded devel dependencies. - Only suggest a C++ standard library for clang. It's also a C compiler and needs no C++ library when only used as such. - Fix Supplements for editor plugins. - Fix some rpmlint issues: * Reword summary and description for Polly. * Fix /usr/bin/env shebangs. * Remove executable bit where not needed. * Move bash completion to /usr. * Remove hard dependency of libclang8 to libstdc++-devel. - Make rpm macros work properly. - Remove sources from documentation. - Run %fdupes on the right directories. - Enable tests for libcxx. - Reduce memory requirements for compile jobs depending on arch.- Avoid relocation overflow on ppc by not building GPU backends. - Update baselibs.conf.- Disable LTO (boo#1133254).- Fix packaging on ppc: the sanitizers aren't available there, so the directories /usr/lib/clang/*/{lib,share} are missing. - Package LLVMgold even when we don't use gold for linking. It's promised in /usr/lib/cmake/llvm/LLVMExports.cmake. - Unignore test failures on PowerPC64 architectures. The failures in ppc are unrelated to AMDGPU, so we remove that remark. - Fix dependencies: the gold plugin shouldn't depend on llvm-devel. libc++abi-devel should depend on libc++abi. - Fix typo.- Enable libc++ on ARM (Needed for tensorflow)- Update to 8.0.0 * For details, see the release notes: https://llvm.org/releases/8.0.0/docs/ReleaseNotes.html https://llvm.org/releases/8.0.0/tools/clang/docs/ReleaseNotes.html https://llvm.org/releases/8.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html https://llvm.org/releases/8.0.0/tools/lld/docs/ReleaseNotes.html - Drop llvm-unittests-Don-t-install-TestPlugin.so.patch, llvm-drop-llvm-optional-clang-specific-optimization.patch, llvm-D51108.patch, llvm-Ensure-that-variant-part-discriminator-is-read-by-Me.patch, llvm-test-Fix-Assembler-debug-info.ll.patch * Already included upstream - Add 0001-CMake-Add-install-targets-for-utilities-to-LLVM-expo.patch- Remove -fno-strict-aliasing, which upstream doesn't use any more since r245304 in 2015. (http://reviews.llvm.org/D12036) It's probably also not needed for modern versions of GCC. It was enabled in r105644 because of some bugs there. - Add a clang-%{_sonum} symlink, which is referenced by /usr/lib64/cmake/clang/ClangTargets.cmake (boo#1120098) - Package clang builtin headers with libclang. The library is basically unusable without the builtin headers. Currently consumers of libclang have to require clang as well, although only the headers are needed.- llvm-Ensure-that-variant-part-discriminator-is-read-by-Me.patch, llvm-test-Fix-Assembler-debug-info.ll.patch * Fix crash in rustc (boo#1126907)- Allow use of Gold linker to be conditional - Disable Gold linker on ppc + LLVM currently doesn't build with Gold on ppc- Readd clang-7 and clang++-7 symlinks * Fixes uses of clang-devel (boo#1120098)- Update to llvm 7.0.1 * This release contains bug-fixes for the LLVM 7.0.0 release. This release is API and ABI compatible with 7.0.0.- enable gold unconditionally like with llvm6 and older - reenable openmp support again for aarch64 (like it was already in llvm6)- Use %license macro - Use upstream-recommended %{_rpmconfigdir}/macros.d directory for the rpm macros.- Remove ppc from Exclude field in spec file - Allow use of Gold linker to be conditional - Disable Gold linker on ppc - Add patch to fix SUSE GNU triplet on ppc * clang-fix-powerpc-triplet.patch - Add patch from upstream to fix ABI issue on ppc * llvm-D51108.patch - Limit list of enabled targets on ppc * PowerPC;AMDGPU;BPF;NVPTX - Ignore testsuite failures on ppc- llvm-drop-llvm-optional-clang-specific-optimization.patch * Fix ABI incompatibility when libLLVM (built with clang) is linked to a program build with gcc. (boo#1119092)- opt-viewer-Find-style-css-in-usr-share.patch * Make sure opt-viewer installed in /usr/bin can find resources from /usr/share/opt-viewer. (boo#1112730)- llvm-unittests-Don-t-install-TestPlugin.so.patch * It is only used for testing and is causing failures when processing LLVMExports.cmake.- Update to llvm 7.0.0 * For details, see the release notes: https://llvm.org/releases/7.0.0/docs/ReleaseNotes.html https://llvm.org/releases/7.0.0/tools/clang/docs/ReleaseNotes.html https://llvm.org/releases/7.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html https://llvm.org/releases/7.0.0/tools/lld/docs/ReleaseNotes.html - Remove no longer needed patches: * llvm6-fix-gdb-index-crash.patch * lldb-fix-build-with-python-3.7.patch * lldb-add-pthread-dl-libs.patch * polly-cmake-Trust-pkg-config-in-FindJsoncpp.patch - Add tests-use-python3.patch * Prevents tests from failing because of missing python 2. - Add llvm-better-detect-64bit-atomics-support.patch * Fixes build on i586.- Updated llvm-remove-clang-only-flags.patch - Exclude also "-Werror=unguarded-availability-new" (bsc#1106000)- Update to llvm 6.0.1 * This release contains bug-fixes for the LLVM 6.0.0 release. It is API and ABI compatible with 6.0.0. - Remove no longer needed llvm6-fix-InstCombine.patch - Add lldb-fix-build-with-python-3.7.patch * Fix build with python 3.7- llvm6-fix-gdb-index-crash.patch * From upstream, fix lld --gdb-index crash.- Do not requires gcc6 for older sle versions. * llvm6 is not built on <= 12 SP3 and this was preventing build on 12 SP4.- llvm_build_tablegen_component_as_shared_library.patch * Build TableGen component as its own shared library because it is not included in the libLLVM library and is needed for ldc. (bsc#1086445)- Add patch llvm6-fix-InstCombine.patch to fix InstCombine init * Will be fixed in 6.0.1 release- Do not build stage1 with debug info. It was accidentally added with the use of %optflags. This should fix out of memory errors on 32bit architectures and speed up build everywhere else. (bsc#1092697)- llvm-build-tests-with-rtti.patch * Fixes build failure with gcc 8. (bnc#1087136)- Do not export Polly static libraries which we do not distribute. * Updated llvm-do-not-install-static-libraries.patch - Use external jsoncpp instead of the bundled one. * Added polly-cmake-Trust-pkg-config-in-FindJsoncpp.patch - llvm6-devel must require llvm6-polly-devel * Files in llvm6-devel reference Polly.- Update to llvm 6.0.0 * Added polly * Notable changes: - Retpoline Spectre variant 2 mitigation - GlobalISel by default for AArch64 at -O0 - improved scheduling on several x86 micro-architectures - Clang defaults to -std=gnu++14 instead of -std=gnu++98 - support for some upcoming C++2a features - improved optimizations, new compiler warnings, many bug fixes, and more. - Use alternatives for clang's bash autocomplete to prevent conflicts with other versions.- Remove liblldb5 and lldb5-devel from baselibs.conf. They are only build for x86_64, so no point having them in baselibs.conf.- Use %optflags, except for FORTIFY_SOURCE which is not compatible with compiler-rt. - Exclude static libraries differently. * Drop llvm-split-static-library-exports-into-their-own-export-file.diff * Drop clang-split-static-library-exports-into-their-own-export-file.diff * Update llvm-do-not-install-static-libraries.patch to not use EXCLUDE_FROM_ALL which is not available in cmake 3.5. - This fixes build on SLE12. - Do not force gcc6 on OpenSUSE - fixes build. - Reduce the amount of concurent link jobs by increasing their memory requirement - to reduce stalls in OBS.- Cleanup %ifarch conditions, remove targets unintentionally added to s390/s390x. (bnc#1078436)- Limit the amount of parallel link jobs, but no longer limit compile jobs. This should prevent running out of memory during linking while not longer slowing down compilation. - Remove build dependency on procps- Reduce disk size requirement to 30GB in _constraints. We no longer need that much since we stopped building static libraries.- n_clang_allow_BUILD_SHARED_LIBRARY.patch * Allow buildling clang with BUILD_SHARED_LIBRARY while the rest is built with LLVM_LINK_LLVM_DYLIB. (bnc#1065464) - Remove clang-devel-static.- Place gold plugin to the right directory. (bnc#1073210) * It must be in /usr/lib/bfd-plugins on all architectures. * Remove llvm5-gold from baselibs.conf - nothing needs a 32bit version of it and it would now conflict with the 64bit one. - Reduce _constraints requirements on 32bit architectures. * Since we had to disable debuginfo on them, they require much less.- ignore make check error for PowerPC as bypass https://bugs.llvm.org/show_bug.cgi?id=35871- disable debuginfo build for ARM as well- Delete intermediate files during build to reduce total disk usage (bnc#1074625)- Update to llvm 5.0.1 * This release contains bug-fixes for the LLVM 5.0.0 release. * This release is API and ABI compatible with 5.0.0. - llvm-do-not-install-static-libraries.patch * Updated.- Increase minimum memory and disk sizes required for building in _constraints.- Rename python3-lldb to python3-lldb5 so it can work with llvm meta package.- Rename python packages to follow naming conventions. - Remove unnecessary dependencies on python3. - Make opt-viewer not require python2. * opt-viewer-Do-not-require-python-2.patch- Switch to python3. - Fix %check tests when used with python3. * Define LANG=C.UTF-8 when running the tests. - Add explicit Provides/Conflicts to llvm5-devel, clang5-devel-static and lldb5-devel. * These are required to be validated by obs repo-checker.- Use LLVM_OPTIMIZED_TABLEGEN to speed up build. (bnc#1064786) - Fix files of lldb4 to work correctly with update-alternatives. - Remove Conflicts clang(LLDB) from lldb4-devel - it does not exist. It would be provided automatically, but no such cmake file is installed. - llvm-do-not-install-static-libraries.patch * Do not install static libraries instead of installing them and deleting after. * Reduces disk usage during build. (bnc#1064786) - Do not build unnecessary parts during stage1. * Speeds up build a bit. (bnc#1064786)- Updated baselibs.conf to reference version 5 packages. - Deleted rogue llvm5.spec.r29 file. - Deleted arm_suse_support.diff, llvm-add_a_LLVM_USE_LINKER.patch, libsanitizer.patch. - No longer used, applied already in the source.- llvm-normally-versioned-libllvm.patch * Change libLLVM naming scheme to match our naming guidelines. * The reasons for the original naming scheme are no longer valid, more details in the patch.- Disable all thread related tests in libcxx. Many of them use timeouts to detect failure. They can fail randomly if the machine is under heavy load (happens often in OBS).- Drop llvm5-devel-static. llvm5-devel contains shared library with the same content.- Increase disk space requirement in _constraints to 45GB. Otherwise the build gets stuck in random places. - Skip build of lldb5 python on distributions with swig < 3.0.11- Copy from llvm4. - Update to llvm 5.0.0.- Use LLVM_BUILD_LLVM_DYLIB instead of BUILD_SHARED_LIBS to build single libLLVM library. This is the recommended way. The old way was causing various issues. * llvm-split-static-library-exports-into-their-own-export-file.diff * clang-split-static-library-exports-into-their-own-export-file.diff (bnc#1049703) - Add lld, linker for Clang/LLVM (sr#517692) - Include clang++-MAJOR.MINOR symbolic link (bnc#1012260) - Remove unnecessary dependency on flex and bison. - Make sure all binaries are managed by update-alternatives - Add llvm-add_a_LLVM_USE_LINKER.patch and link using gold to prevent memory exhaustion on some build machines. - Reduce debuginfo on x86 architecture. LLVM libraries are so big that they exhaust all memory on 32 bit machine if linked with full debuginfo. - Speed up build by skipping parts that are not required in stage1. - Build lldb in-tree as one of the llvm tools.- clang-ignore-stack-clash-protector.patch: ignore -fstack-clash-protection for now.- xlocale.patch: don't use obsolete - libsanitizer.patch: fix use of undocumented types- build fixes for armv6 (skip testsuite as it requires 64bit, set the list of targets to include ARM and remove triplet hack)- Include provides and conflics in baselibs.conf for llvm4-devel, clang4-devel, llvm4-LTO-devel, and llvm4-gold.- Update to version 4.0.1 * Minor bugfixes- Use gcc6 only for SLE boo#1041469- Package libLLVMFuzzer- readd arm_suse_support.diff which was accidentally removed in the 4.0.0 update- Enable AMDGPU and NVPTX targets everywhere except for S/390. The AMDGPU target is needed for Mesa Clover (sr#485802).- Use gcc6 on SLE12- Package license & credits- Update to version 4.0.0 * See + http://releases.llvm.org/4.0.0/docs/ReleaseNotes.html and + http://releases.llvm.org/4.0.0/tools/clang/docs/ReleaseNotes.html + http://releases.llvm.org/4.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html - Drop the following patches, fixed upstream: amdgpu_revert_r280589.patch arm_suse_support.diff clang-fix-substitutions-abi_tag.patch clang-incomplete-field-types.patch glibc-2.24-libcxx.patch llvm-install-CheckAtomic.patch revert-cmake-soname.patch- Enable BPF for all arches bsc#1026191- libc++ must depend on libc++abi- Stop using otherproviders() due to an rpm parser bug, use self-conflicts instead as suggested by mls.- Add amdgpu_revert_r280589.patch to fix an amdgpu regression bsc#1021577- Require LLVMgold and libLTO in llvm-devel, otherwise we get in CMake: The imported target "LLVMgold" references the file "/usr/lib64/LLVMgold.so" but this file does not exist. This happens when requiring llvm3_9-devel directly, not llvm-devel.- Update to version 3.9.1 * See: + http://llvm.org/releases/3.9.1/docs/ReleaseNotes.html + http://llvm.org/releases/3.9.1/tools/clang/docs/ReleaseNotes.html + http://llvm.org/releases/3.9.1/tools/clang/tools/extra/docs/ReleaseNotes.html- Update to version 3.9.0 * Clang now supports the G++ abi_tag attribute. * Clang will no longer pass --build-id by default to the linker. * Improved C++1z support in Clang. * Clang now has support for all OpenCL 2.0 features. * Added support for all non-offloading features from OpenMP 4.5, * The static analyzer now checks for incorrect usage of MPI APIs in C and C++. * LLVM no longer does inter-procedural analysis and optimization (except inlining) on functions with comdat linkage. * LLVM now supports the Intel CPUs Skylake Server with AVX512 (-march=skylake-avx512) and Knights Landing (-march=knl). * More at: + http://llvm.org/releases/3.9.0/docs/ReleaseNotes.html + http://llvm.org/releases/3.9.0/tools/clang/docs/ReleaseNotes.html + http://llvm.org/releases/3.9.0/tools/clang/tools/extra/docs/ReleaseNotes.html * Fix the following patches: + arm_suse_support.diff + assume-opensuse.patch + clang-resourcedirs.patch + default-to-i586.patch + glibc-2.23-libcxx.patch + glibc-2.24-libcxx.patch + lldb-add-pthread-dl-libs.patch + lldb-cmake.patch + llvm-fix-find-gcc5-install.patch + llvm-remove-clang-only-flags.patch + revert-cmake-soname.patch + set-revision.patch * Remove upstream-included patch: + llvm-nonvoid-return.patch * Remove patch for removed files: + glibc-2.23-libcxx.patch - Backport upstream patches: * clang-fix-substitutions-abi_tag.patch * clang-incomplete-field-types.patch * llvm-install-CheckAtomic.patch - Add clang%{_sonum}-include-fixer subpackage and associated libfindAllSymbols%{_sonum} and libfindAllSymbols%{_sonum}-devel subpackages. - Add sanstats to llvm binary list.- Change update-alternatives to use %postun instead of %preun, which is now what Factory maintainers are requesting. - Use the minor version to set the update-alternatives priority so the most recent version of the LLVM, Clang, and LLDB are used by default. - Add LLVM rpm macros so downstream packages can have some idea how LLVM was built.- Rename libomp to make it possible to have multiple versions available.- Split the old llvm package into this version-specific package and a wrapper package. - Implement update-alternatives to allow parallel installation of many of the subpackages. - Rename subpackages that can be parallel-installed to a version-specific name based on the associated shared library's current .so number. - Various fixes to support the above changes.- Sort a bit with spec-cleaner - Remove the latest switch for now, things should be either coinstallable or not, we don't need to bother around with compilation like this- Update to llvm 3.8.1 * See http://llvm.org/releases/3.8.1/docs/ReleaseNotes.html and http://llvm.org/releases/3.8.1/tools/docs/ReleaseNotes.html - Use versioned libLLVM (to libLLVM3_8) and libclang (to libclang3_8) - Change versioning of liblldb3_8 to liblldb-3_8 and use a variable to control the name instead of hard-coding it. - Use bcond_with and bcond_without to enable/disable build options instead of hard-coding them. - Put buildrequires as requires in -devel packages to avoid linker errors when building packages against the -devel packages. - Add ffi support (disabled by default). - Add oprofile support (disabled by default). - Add valgrind support (disabled by default). - Link cmake files to the normal cmake file directory to allow autodetection of cmake interfaces. - Remove unused lldb components from main spec file. - Split llvm python bindings into own subpackage. - Split emacs plugin into own subpackage - Move additional vim plugins into vim plugins package - Split libc++, libLTO, LLVMgold, libomp, clang-chekers into own subpackages - Make python-clang, llvm-vim-plugins, and llvm-emacs-plugins noarch since they aren't architecture-specific. - Make packages besides llvm, llvm-clang, and the shared libraries conflict with other versions. This will be important when multiple LLVM versions are supported. - Various spec file cleanups - Rebase patches: * arm_suse_support.diff * assume-opensuse.patch * clang-resourcedirs.patch * default-to-i586.patch * glibc-2.23-libcxx.patch * glibc-2.24-libcxx.patch * lldb-add-pthread-dl-libs.patch * lldb-cmake.patch * llvm-fix-find-gcc5-install.patch * llvm-nonvoid-return.patch * llvm-remove-clang-only-flags.patch * revert-cmake-soname.patch * set-revision.patch- Start conversion to use cmake macros with now introduced compatibility for ninja - Reduce number of threads if we don't have enough memory - Add patch for the nonvoid returns: * llvm-nonvoid-return.patch- for ppc64le set memory to 4GB in _constraints file (failure in Factory:PowerPC)- glibc-2.24-libcxx.patch: fix libcxx testsuite for glibc 2.24- Build LLDB separated from LLVM. - Re-enable python bindings for the LLDB API.- Disable libcxx/lldb/openmp for SLE fate#319582- Update rpmlintrc to whitelist libLTO.so- Re-enable glibc-2.23 patch for Tumbleweed- fix arm_suse_support.diff for armv6hl - adjust compile flags for llvm on armv6hl (fixes Mesa build)- Update llvm-remove-clang-only-flags.patch to remove - Wcovered-switch-default flag for gcc compatibility.- Use gcc for stage1 bootstrap - Add back libstdc++-devel dependency for clang since libc++ is only available for x86-64 atm.- Comment out glibc-2.23-libcxx.patch until glibc 2.23 actually hits the Factory.- Update to llvm 3.8.0 * See http://llvm.org/releases/3.8.0/docs/ReleaseNotes.html and http://llvm.org/releases/3.8.0/tools/clang/docs/ReleaseNotes.html - Fold lldb build into llvm and disable python support - Drop clang-disable-ada-extension.patch, libcxxabi-exceptions.patch and cmake-host-triple.patch - Add revert-cmake-soname.patch to fix soname handling- Add glibc-2.23-libcxx.patch to fix test failures with glibc 2.23- Remove FFI support because its fragile- Enable OpenMP for x86, x86_64, ppc64 and ppc64le- Enable all targets on x86, x86_64- Update to version 3.7.0 * See http://llvm.org/releases/3.7.0/docs/ReleaseNotes.html - Merge aarch64-suse-support.patch into arm_suse_support.diff - Refresh arm_suse_support.diff, llvm-fix-find-gcc5-install.patch - Remove llvm-fix-parsearmarch.patch, upstream.- fix build on s390x (one typo in ifarch and one change in filelist)- Update to version 3.6.1 * No changelog upstream- Add llvm-fix-parsearmarch.patch to fix parsing armv{6,7}hl archs.- Update to version 3.6.0 * See http://llvm.org/releases/3.6.0/docs/ReleaseNotes.html - Add python-xml dependency for regression tests - Removed the following patches, fixed upstream: * arm-remove-xfails.diff * libcxx-libdir.patch * llvm-config-lib64.patch * llvm-fix-intrusiverefcntptr.patch- Add llvm-fix-intrusiverefcntptr.patch to fix build of LLVM tools with GCC 5. - Add llvm-fix-find-gcc5-install.patch to properly find installed GCC 5.- Add a gcc dependency for clang, this is heavyweight but we need libgcc_s which comes with the gcc package (bnc#893359)- Conditionalize libcxx{abi} build on build_libcxx variable - Turn libc++.so into an ldscript so it links to libc++abi automatically.- fix constraints for armv6l/armv7l (there is no 4GB RAM on 32bit)/sbin/ldconfig/sbin/ldconfigs390zl27 1732652130  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~17.0.617.0.617.0.617.0.6-bp155.5.117.0.6-bp155.5.1        !!!!!!""""########$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''&&&&&((((((((&&$$$$)*+*,*-*...*//////////00000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111234445555566667889999999999999999999999::::999999999999999999999;;;;;;;;999999999999999999999999999999999999999<<<<<======<<<<<<>>>>>>>><<?@@???AA?BB???CC?DDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFGGGGGGHHHHIJJJIIIIIIIIIIIIIIIIKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNOLLLLLLLLLLLLLLLLLLLLLLLLLLLPLLLLLLLLLLLLLQQQQQQQQQQQRRRRSSSSRRRRRRRRRRRTTTTTTTTTTTTTTTTUVVUWUXXYYYYYYYYYYYZ[Z\]^]]_____]]`````````````````````````````````````````]aa]]bbbbbbbbbbbbbbbbbbbbb]]]ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc]]dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd]]eeeeeffghhhiiiiiiiiiiiiiiiiijklllllllllllllllllllllllllllllllllllllllllmnompqqrrFileCheckllvm-configllvmllvm-cAnalysis.hBitReader.hBitWriter.hComdat.hCore.hDataTypes.hDebugInfo.hDeprecated.hDisassembler.hDisassemblerTypes.hError.hErrorHandling.hExecutionEngine.hExternC.hIRReader.hLLJIT.hLinker.hObject.hOrc.hOrcEE.hRemarks.hSupport.hTarget.hTargetMachine.hTransformsPassBuilder.hTypes.hblake3.hlto.hADTADL.hAPFixedPoint.hAPFloat.hAPInt.hAPSInt.hAddressRanges.hAllocatorList.hAny.hArrayRef.hBitVector.hBitfields.hBitmaskEnum.hBreadthFirstIterator.hCachedHashString.hCoalescingBitVector.hCombinationGenerator.hConcurrentHashtable.hDAGDeltaAlgorithm.hDeltaAlgorithm.hDenseMap.hDenseMapInfo.hDenseMapInfoVariant.hDenseSet.hDepthFirstIterator.hDirectedGraph.hEnumeratedArray.hEpochTracker.hEquivalenceClasses.hFloatingPointMode.hFoldingSet.hFunctionExtras.hGenericCycleImpl.hGenericCycleInfo.hGenericSSAContext.hGenericUniformityImpl.hGenericUniformityInfo.hGraphTraits.hHashing.hImmutableList.hImmutableMap.hImmutableSet.hIndexedMap.hIntEqClasses.hIntervalMap.hIntervalTree.hIntrusiveRefCntPtr.hMapVector.hPackedVector.hPointerEmbeddedInt.hPointerIntPair.hPointerSumType.hPointerUnion.hPostOrderIterator.hPriorityQueue.hPriorityWorklist.hSCCIterator.hSTLExtras.hSTLForwardCompat.hSTLFunctionalExtras.hScopeExit.hScopedHashTable.hSequence.hSetOperations.hSetVector.hSmallBitVector.hSmallPtrSet.hSmallSet.hSmallString.hSmallVector.hSmallVectorExtras.hSparseBitVector.hSparseMultiSet.hSparseSet.hStatistic.hStringExtras.hStringMap.hStringMapEntry.hStringRef.hStringSet.hStringSwitch.hTinyPtrVector.hTwine.hTypeSwitch.hUniformity.hUniqueVector.hbit.hedit_distance.hfallible_iterator.hidentity.hilist.hilist_base.hilist_iterator.hilist_node.hilist_node_base.hilist_node_options.hiterator.hiterator_range.hsimple_ilist.hAnalysisAliasAnalysis.hAliasAnalysisEvaluator.hAliasSetTracker.hAssumeBundleQueries.hAssumptionCache.hBasicAliasAnalysis.hBlockFrequencyInfo.hBlockFrequencyInfoImpl.hBranchProbabilityInfo.hCFG.hCFGPrinter.hCFGSCCPrinter.hCGSCCPassManager.hCallGraph.hCallGraphSCCPass.hCallPrinter.hCaptureTracking.hCmpInstAnalysis.hCodeMetrics.hConstantFolding.hConstraintSystem.hCostModel.hCycleAnalysis.hDDG.hDDGPrinter.hDOTGraphTraitsPass.hDelinearization.hDemandedBits.hDependenceAnalysis.hDependenceGraphBuilder.hDomPrinter.hDomTreeUpdater.hDominanceFrontier.hDominanceFrontierImpl.hEHUtils.hFunctionPropertiesAnalysis.hGlobalsModRef.hGuardUtils.hHeatUtils.hIRSimilarityIdentifier.hIVDescriptors.hIVUsers.hIndirectCallPromotionAnalysis.hIndirectCallVisitor.hInlineAdvisor.hInlineCost.hInlineModelFeatureMaps.hInlineOrder.hInlineSizeEstimatorAnalysis.hInstCount.hInstSimplifyFolder.hInstructionPrecedenceTracking.hInstructionSimplify.hInteractiveModelRunner.hInterval.hIntervalIterator.hIntervalPartition.hIteratedDominanceFrontier.hLazyBlockFrequencyInfo.hLazyBranchProbabilityInfo.hLazyCallGraph.hLazyValueInfo.hLint.hLoads.hLoopAccessAnalysis.hLoopAnalysisManager.hLoopCacheAnalysis.hLoopInfo.hLoopIterator.hLoopNestAnalysis.hLoopPass.hLoopUnrollAnalyzer.hMLInlineAdvisor.hMLModelRunner.hMemDerefPrinter.hMemoryBuiltins.hMemoryDependenceAnalysis.hMemoryLocation.hMemoryProfileInfo.hMemorySSA.hMemorySSAUpdater.hModelUnderTrainingRunner.hModuleDebugInfoPrinter.hModuleSummaryAnalysis.hMustExecute.hNoInferenceModelRunner.hObjCARCAliasAnalysis.hObjCARCAnalysisUtils.hObjCARCInstKind.hObjCARCUtil.hOptimizationRemarkEmitter.hOverflowInstAnalysis.hPHITransAddr.hPasses.hPhiValues.hPostDominators.hProfileSummaryInfo.hPtrUseVisitor.hRegionInfo.hRegionInfoImpl.hRegionIterator.hRegionPass.hRegionPrinter.hReleaseModeModelRunner.hReplayInlineAdvisor.hScalarEvolution.hScalarEvolutionAliasAnalysis.hScalarEvolutionDivision.hScalarEvolutionExpressions.hScalarEvolutionNormalization.hScalarFuncs.defScopedNoAliasAA.hSparsePropagation.hStackLifetime.hStackSafetyAnalysis.hSyntheticCountsUtils.hTargetFolder.hTargetLibraryInfo.defTargetLibraryInfo.hTargetTransformInfo.hTargetTransformInfoImpl.hTensorSpec.hTrace.hTypeBasedAliasAnalysis.hTypeMetadataUtils.hUniformityAnalysis.hUtilsImportedFunctionsInliningStatistics.hLocal.hTFUtils.hTrainingLogger.hValueLattice.hValueLatticeUtils.hValueTracking.hVecFuncs.defVectorUtils.hAsmParserLLLexer.hLLParser.hLLToken.hParser.hSlotMapping.hBinaryFormatAMDGPUMetadataVerifier.hCOFF.hDXContainer.hDXContainerConstants.defDwarf.defDwarf.hDynamicTags.defELF.hELFRelocsAArch64.defAMDGPU.defARC.defARM.defAVR.defBPF.defCSKY.defHexagon.defLanai.defLoongArch.defM68k.defMSP430.defMips.defPowerPC.defPowerPC64.defRISCV.defSparc.defSystemZ.defVE.defXtensa.defi386.defx86_64.defGOFF.hMachO.defMachO.hMagic.hMinidump.hMinidumpConstants.defMsgPack.defMsgPack.hMsgPackDocument.hMsgPackReader.hMsgPackWriter.hSwift.defSwift.hWasm.hWasmRelocs.defWasmTraits.hXCOFF.hBitcodeBitcodeAnalyzer.hBitcodeCommon.hBitcodeConvenience.hBitcodeReader.hBitcodeWriter.hBitcodeWriterPass.hLLVMBitCodes.hBitstreamBitCodeEnums.hBitCodes.hBitstreamReader.hBitstreamWriter.hCodeGenAccelTable.hAnalysis.hAntiDepBreaker.hAsmPrinter.hAsmPrinterHandler.hAssignmentTrackingAnalysis.hAtomicExpandUtils.hBasicBlockSectionUtils.hBasicBlockSectionsProfileReader.hBasicTTIImpl.hByteProvider.hCFIFixup.hCSEConfigBase.hCalcSpillWeights.hCallingConvLower.hCodeGenCommonISel.hCodeGenPassBuilder.hCommandFlags.hComplexDeinterleavingPass.hCostTable.hDAGCombine.hDFAPacketizer.hDIE.hDIEValue.defDbgEntityHistoryCalculator.hDebugHandlerBase.hDetectDeadLanes.hDwarfStringPoolEntry.hEdgeBundles.hExecutionDomainFix.hExpandReductions.hExpandVectorPredication.hFastISel.hFaultMaps.hFunctionLoweringInfo.hGCMetadata.hGCMetadataPrinter.hGenVT.incGlobalISelCSEInfo.hCSEMIRBuilder.hCallLowering.hCombiner.hCombinerHelper.hCombinerInfo.hGIMatchTableExecutor.hGIMatchTableExecutorImpl.hGISelChangeObserver.hGISelKnownBits.hGISelWorkList.hGenericMachineInstrs.hIRTranslator.hInlineAsmLowering.hInstructionSelect.hInstructionSelector.hLegacyLegalizerInfo.hLegalizationArtifactCombiner.hLegalizer.hLegalizerHelper.hLegalizerInfo.hLoadStoreOpt.hLocalizer.hLostDebugLocObserver.hMIPatternMatch.hMachineIRBuilder.hRegBankSelect.hUtils.hHardwareLoops.hISDOpcodes.hIndirectThunks.hIntrinsicLowering.hLatencyPriorityQueue.hLazyMachineBlockFrequencyInfo.hLexicalScopes.hLinkAllAsmWriterComponents.hLinkAllCodegenComponents.hLiveInterval.hLiveIntervalCalc.hLiveIntervalUnion.hLiveIntervals.hLivePhysRegs.hLiveRangeCalc.hLiveRangeEdit.hLiveRegMatrix.hLiveRegUnits.hLiveStacks.hLiveVariables.hLoopTraversal.hLowLevelType.hLowLevelTypeUtils.hMBFIWrapper.hMIRFSDiscriminator.hMIRFormatter.hMIRParserMIParser.hMIRParser.hMIRPrinter.hMIRSampleProfile.hMIRYamlMapping.hMachORelocation.hMachineBasicBlock.hMachineBlockFrequencyInfo.hMachineBranchProbabilityInfo.hMachineCFGPrinter.hMachineCombinerPattern.hMachineConstantPool.hMachineCycleAnalysis.hMachineDominanceFrontier.hMachineDominators.hMachineFrameInfo.hMachineFunction.hMachineFunctionPass.hMachineInstr.hMachineInstrBuilder.hMachineInstrBundle.hMachineInstrBundleIterator.hMachineJumpTableInfo.hMachineLoopInfo.hMachineLoopUtils.hMachineMemOperand.hMachineModuleInfo.hMachineModuleInfoImpls.hMachineModuleSlotTracker.hMachineOperand.hMachineOptimizationRemarkEmitter.hMachineOutliner.hMachinePassManager.hMachinePassRegistry.defMachinePassRegistry.hMachinePipeliner.hMachinePostDominators.hMachineRegionInfo.hMachineRegisterInfo.hMachineSSAContext.hMachineSSAUpdater.hMachineScheduler.hMachineSizeOpts.hMachineStableHash.hMachineTraceMetrics.hMachineUniformityAnalysis.hMachineValueType.hMacroFusion.hModuloSchedule.hMultiHazardRecognizer.hNonRelocatableStringpool.hPBQPCostAllocator.hGraph.hMath.hReductionRules.hSolution.hPBQPRAConstraint.hParallelCG.hPasses.hPreISelIntrinsicLowering.hPseudoSourceValue.hRDFGraph.hRDFLiveness.hRDFRegisters.hReachingDefAnalysis.hRegAllocCommon.hRegAllocPBQP.hRegAllocRegistry.hRegister.hRegisterBank.hRegisterBankInfo.hRegisterClassInfo.hRegisterPressure.hRegisterScavenging.hRegisterUsageInfo.hReplaceWithVeclib.hResourcePriorityQueue.hRuntimeLibcalls.hSDNodeProperties.tdScheduleDAG.hScheduleDAGInstrs.hScheduleDAGMutation.hScheduleDFS.hScheduleHazardRecognizer.hSchedulerRegistry.hScoreboardHazardRecognizer.hSelectionDAG.hSelectionDAGAddressAnalysis.hSelectionDAGISel.hSelectionDAGNodes.hSelectionDAGTargetInfo.hSlotIndexes.hSpiller.hStableHashing.hStackMaps.hStackProtector.hSwiftErrorValueTracking.hSwitchLoweringUtils.hTailDuplicator.hTargetCallingConv.hTargetFrameLowering.hTargetInstrInfo.hTargetLowering.hTargetLoweringObjectFileImpl.hTargetOpcodes.hTargetPassConfig.hTargetRegisterInfo.hTargetSchedule.hTargetSubtargetInfo.hTileShapeInfo.hTypePromotion.hUnreachableBlockElim.hVLIWMachineScheduler.hValueTypes.hValueTypes.tdVirtRegMap.hWasmAddressSpaces.hWasmEHFuncInfo.hWinEHFuncInfo.hConfigAsmParsers.defAsmPrinters.defDisassemblers.defTargetExegesis.defTargetMCAs.defTargets.defabi-breaking.hllvm-config.hDWARFLinkerDWARFLinker.hDWARFLinkerCompileUnit.hDWARFLinkerDeclContext.hDWARFStreamer.hDWARFLinkerParallelAddressesMap.hDWARFFile.hDWARFLinker.hStringPool.hStringTable.hDWPDWP.hDWPError.hDWPStringPool.hDebugInfoBTFBTF.defBTF.hBTFContext.hBTFParser.hCodeViewAppendingTypeTableBuilder.hCVRecord.hCVSymbolVisitor.hCVTypeVisitor.hCodeView.hCodeViewError.hCodeViewRecordIO.hCodeViewRegisters.defCodeViewSymbols.defCodeViewTypes.defContinuationRecordBuilder.hDebugChecksumsSubsection.hDebugCrossExSubsection.hDebugCrossImpSubsection.hDebugFrameDataSubsection.hDebugInlineeLinesSubsection.hDebugLinesSubsection.hDebugStringTableSubsection.hDebugSubsection.hDebugSubsectionRecord.hDebugSubsectionVisitor.hDebugSymbolRVASubsection.hDebugSymbolsSubsection.hDebugUnknownSubsection.hEnumTables.hFormatters.hFunctionId.hGUID.hGlobalTypeTableBuilder.hLazyRandomTypeCollection.hLine.hMergingTypeTableBuilder.hRecordName.hRecordSerialization.hSimpleTypeSerializer.hStringsAndChecksums.hSymbolDeserializer.hSymbolDumpDelegate.hSymbolDumper.hSymbolRecord.hSymbolRecordHelpers.hSymbolRecordMapping.hSymbolSerializer.hSymbolVisitorCallbackPipeline.hSymbolVisitorCallbacks.hSymbolVisitorDelegate.hTypeCollection.hTypeDeserializer.hTypeDumpVisitor.hTypeHashing.hTypeIndex.hTypeIndexDiscovery.hTypeRecord.hTypeRecordHelpers.hTypeRecordMapping.hTypeStreamMerger.hTypeSymbolEmitter.hTypeTableCollection.hTypeVisitorCallbackPipeline.hTypeVisitorCallbacks.hDIContext.hDWARFDWARFAbbreviationDeclaration.hDWARFAcceleratorTable.hDWARFAddressRange.hDWARFAttribute.hDWARFCompileUnit.hDWARFContext.hDWARFDataExtractor.hDWARFDebugAbbrev.hDWARFDebugAddr.hDWARFDebugArangeSet.hDWARFDebugAranges.hDWARFDebugFrame.hDWARFDebugInfoEntry.hDWARFDebugLine.hDWARFDebugLoc.hDWARFDebugMacro.hDWARFDebugPubTable.hDWARFDebugRangeList.hDWARFDebugRnglists.hDWARFDie.hDWARFExpression.hDWARFFormValue.hDWARFGdbIndex.hDWARFListTable.hDWARFLocationExpression.hDWARFObject.hDWARFRelocMap.hDWARFSection.hDWARFTypePrinter.hDWARFTypeUnit.hDWARFUnit.hDWARFUnitIndex.hDWARFVerifier.hGSYMDwarfTransformer.hExtractRanges.hFileEntry.hFileWriter.hFunctionInfo.hGsymCreator.hGsymReader.hHeader.hInlineInfo.hLineEntry.hLineTable.hLookupResult.hObjectFileTransformer.hStringTable.hLogicalViewCoreLVCompare.hLVElement.hLVLine.hLVLocation.hLVObject.hLVOptions.hLVRange.hLVReader.hLVScope.hLVSort.hLVStringPool.hLVSupport.hLVSymbol.hLVType.hLVReaderHandler.hReadersLVBinaryReader.hLVCodeViewReader.hLVCodeViewVisitor.hLVELFReader.hMSFIMSFFile.hMSFBuilder.hMSFCommon.hMSFError.hMappedBlockStream.hPDBConcreteSymbolEnumerator.hDIADIADataStream.hDIAEnumDebugStreams.hDIAEnumFrameData.hDIAEnumInjectedSources.hDIAEnumLineNumbers.hDIAEnumSectionContribs.hDIAEnumSourceFiles.hDIAEnumSymbols.hDIAEnumTables.hDIAError.hDIAFrameData.hDIAInjectedSource.hDIALineNumber.hDIARawSymbol.hDIASectionContrib.hDIASession.hDIASourceFile.hDIASupport.hDIATable.hDIAUtils.hGenericError.hIPDBDataStream.hIPDBEnumChildren.hIPDBFrameData.hIPDBInjectedSource.hIPDBLineNumber.hIPDBRawSymbol.hIPDBSectionContrib.hIPDBSession.hIPDBSourceFile.hIPDBTable.hNativeDbiModuleDescriptor.hDbiModuleDescriptorBuilder.hDbiModuleList.hDbiStream.hDbiStreamBuilder.hEnumTables.hFormatUtil.hFormatters.hGSIStreamBuilder.hGlobalsStream.hHash.hHashTable.hISectionContribVisitor.hInfoStream.hInfoStreamBuilder.hInjectedSourceStream.hInputFile.hLinePrinter.hModuleDebugStream.hNamedStreamMap.hNativeCompilandSymbol.hNativeEnumGlobals.hNativeEnumInjectedSources.hNativeEnumLineNumbers.hNativeEnumModules.hNativeEnumSymbols.hNativeEnumTypes.hNativeExeSymbol.hNativeFunctionSymbol.hNativeInlineSiteSymbol.hNativeLineNumber.hNativePublicSymbol.hNativeRawSymbol.hNativeSession.hNativeSourceFile.hNativeSymbolEnumerator.hNativeTypeArray.hNativeTypeBuiltin.hNativeTypeEnum.hNativeTypeFunctionSig.hNativeTypePointer.hNativeTypeTypedef.hNativeTypeUDT.hNativeTypeVTShape.hPDBFile.hPDBFileBuilder.hPDBStringTable.hPDBStringTableBuilder.hPublicsStream.hRawConstants.hRawError.hRawTypes.hSymbolCache.hSymbolStream.hTpiHashing.hTpiStream.hTpiStreamBuilder.hPDB.hPDBContext.hPDBExtras.hPDBSymDumper.hPDBSymbol.hPDBSymbolAnnotation.hPDBSymbolBlock.hPDBSymbolCompiland.hPDBSymbolCompilandDetails.hPDBSymbolCompilandEnv.hPDBSymbolCustom.hPDBSymbolData.hPDBSymbolExe.hPDBSymbolFunc.hPDBSymbolFuncDebugEnd.hPDBSymbolFuncDebugStart.hPDBSymbolLabel.hPDBSymbolPublicSymbol.hPDBSymbolThunk.hPDBSymbolTypeArray.hPDBSymbolTypeBaseClass.hPDBSymbolTypeBuiltin.hPDBSymbolTypeCustom.hPDBSymbolTypeDimension.hPDBSymbolTypeEnum.hPDBSymbolTypeFriend.hPDBSymbolTypeFunctionArg.hPDBSymbolTypeFunctionSig.hPDBSymbolTypeManaged.hPDBSymbolTypePointer.hPDBSymbolTypeTypedef.hPDBSymbolTypeUDT.hPDBSymbolTypeVTable.hPDBSymbolTypeVTableShape.hPDBSymbolUnknown.hPDBSymbolUsingNamespace.hPDBTypes.hUDTLayout.hSymbolizeDIPrinter.hMarkup.hMarkupFilter.hSymbolizableModule.hSymbolizableObjectFile.hSymbolize.hDebuginfodBuildIDFetcher.hDebuginfod.hHTTPClient.hHTTPServer.hDemangleDemangle.hDemangleConfig.hItaniumDemangle.hItaniumNodes.defMicrosoftDemangle.hMicrosoftDemangleNodes.hStringViewExtras.hUtility.hExecutionEngineExecutionEngine.hGenericValue.hInterpreter.hJITEventListener.hJITLinkCOFF.hCOFF_x86_64.hDWARFRecordSectionSplitter.hEHFrameSupport.hELF.hELF_aarch32.hELF_aarch64.hELF_i386.hELF_loongarch.hELF_ppc64.hELF_riscv.hELF_x86_64.hJITLink.hJITLinkDylib.hJITLinkMemoryManager.hMachO.hMachO_arm64.hMachO_x86_64.hTableManager.haarch32.haarch64.hi386.hloongarch.hppc64.hriscv.hx86_64.hJITSymbol.hMCJIT.hOProfileWrapper.hObjectCache.hOrcCOFFPlatform.hCOFFVCRuntimeSupport.hCompileOnDemandLayer.hCompileUtils.hCore.hDebugObjectManagerPlugin.hDebugUtils.hDebuggerSupportPlugin.hELFNixPlatform.hEPCDebugObjectRegistrar.hEPCDynamicLibrarySearchGenerator.hEPCEHFrameRegistrar.hEPCGenericDylibManager.hEPCGenericJITLinkMemoryManager.hEPCGenericMemoryAccess.hEPCGenericRTDyldMemoryManager.hEPCIndirectionUtils.hExecutionUtils.hExecutorProcessControl.hIRCompileLayer.hIRTransformLayer.hIndirectionUtils.hJITTargetMachineBuilder.hLLJIT.hLayer.hLazyReexports.hLookupAndRecordAddrs.hMachOPlatform.hMangling.hMapperJITLinkMemoryManager.hMemoryMapper.hObjectFileInterface.hObjectLinkingLayer.hObjectTransformLayer.hOrcABISupport.hRTDyldObjectLinkingLayer.hSharedAllocationActions.hExecutorAddress.hExecutorSymbolDef.hMemoryFlags.hObjectFormats.hOrcError.hOrcRTBridge.hSimplePackedSerialization.hSimpleRemoteEPCUtils.hTargetProcessControlTypes.hWrapperFunctionUtils.hSimpleRemoteEPC.hSpeculateAnalyses.hSpeculation.hSymbolStringPool.hTargetProcessExecutorBootstrapService.hExecutorSharedMemoryMapperService.hJITLoaderGDB.hRegisterEHFrames.hSimpleExecutorDylibManager.hSimpleExecutorMemoryManager.hSimpleRemoteEPCServer.hTargetExecutionUtils.hTaskDispatch.hThreadSafeModule.hRTDyldMemoryManager.hRuntimeDyld.hRuntimeDyldChecker.hSectionMemoryManager.hFileCheckFileCheck.hFrontendDebugOptions.hDirectiveDirectiveBase.tdHLSLHLSLResource.hOpenACCACC.h.incACC.incACC.tdOpenMPOMP.h.incOMP.incOMP.tdOMPAssume.hOMPConstants.hOMPContext.hOMPDeviceConstants.hOMPGridValues.hOMPIRBuilder.hOMPKinds.defFuzzMutateFuzzerCLI.hIRMutator.hOpDescriptor.hOperations.hRandom.hRandomIRBuilder.hIRAbstractCallSite.hArgument.hAssemblyAnnotationWriter.hAssumptions.hAttributeMask.hAttributes.hAttributes.incAttributes.tdAutoUpgrade.hBasicBlock.hBuiltinGCs.hCFG.hCallingConv.hComdat.hConstant.hConstantFold.hConstantFolder.hConstantRange.hConstants.hConstrainedOps.defCycleInfo.hDIBuilder.hDataLayout.hDebugInfo.hDebugInfoFlags.defDebugInfoMetadata.hDebugLoc.hDerivedTypes.hDerivedUser.hDiagnosticHandler.hDiagnosticInfo.hDiagnosticPrinter.hDominators.hEHPersonalities.hFMF.hFPEnv.hFixedMetadataKinds.defFixedPointBuilder.hFunction.hGCStrategy.hGVMaterializer.hGetElementPtrTypeIterator.hGlobalAlias.hGlobalIFunc.hGlobalObject.hGlobalValue.hGlobalVariable.hIRBuilder.hIRBuilderFolder.hIRPrintingPasses.hInlineAsm.hInstIterator.hInstVisitor.hInstrTypes.hInstruction.defInstruction.hInstructions.hIntrinsicEnums.incIntrinsicImpl.incIntrinsicInst.hIntrinsics.hIntrinsics.tdIntrinsicsAArch64.hIntrinsicsAArch64.tdIntrinsicsAMDGPU.hIntrinsicsAMDGPU.tdIntrinsicsARM.hIntrinsicsARM.tdIntrinsicsBPF.hIntrinsicsBPF.tdIntrinsicsDirectX.hIntrinsicsDirectX.tdIntrinsicsHexagon.hIntrinsicsHexagon.tdIntrinsicsHexagonDep.tdIntrinsicsLoongArch.hIntrinsicsLoongArch.tdIntrinsicsMips.hIntrinsicsMips.tdIntrinsicsNVPTX.hIntrinsicsNVVM.tdIntrinsicsPowerPC.hIntrinsicsPowerPC.tdIntrinsicsR600.hIntrinsicsRISCV.hIntrinsicsRISCV.tdIntrinsicsRISCVXTHead.tdIntrinsicsRISCVXsf.tdIntrinsicsS390.hIntrinsicsSPIRV.hIntrinsicsSPIRV.tdIntrinsicsSystemZ.tdIntrinsicsVE.hIntrinsicsVE.tdIntrinsicsVEVL.gen.tdIntrinsicsWebAssembly.hIntrinsicsWebAssembly.tdIntrinsicsX86.hIntrinsicsX86.tdIntrinsicsXCore.hIntrinsicsXCore.tdLLVMContext.hLLVMRemarkStreamer.hLegacyPassManager.hLegacyPassManagers.hLegacyPassNameParser.hMDBuilder.hMangler.hMatrixBuilder.hMetadata.defMetadata.hModule.hModuleSlotTracker.hModuleSummaryIndex.hModuleSummaryIndexYAML.hNoFolder.hOperandTraits.hOperator.hOptBisect.hPassInstrumentation.hPassManager.hPassManagerImpl.hPassManagerInternal.hPassTimingInfo.hPatternMatch.hPredIteratorCache.hPrintPasses.hProfDataUtils.hProfileSummary.hPseudoProbe.hReplaceConstant.hRuntimeLibcalls.defSSAContext.hSafepointIRVerifier.hStatepoint.hStructuralHash.hSymbolTableListTraits.hTrackingMDRef.hType.hTypeFinder.hTypedPointerType.hUse.hUseListOrder.hUser.hVPIntrinsics.defValue.defValue.hValueHandle.hValueMap.hValueSymbolTable.hVectorBuilder.hVerifier.hIRPrinterIRPrintingPasses.hIRReaderIRReader.hInitializePasses.hInterfaceStubELFObjHandler.hIFSHandler.hIFSStub.hLTOConfig.hLTO.hLTOBackend.hSummaryBasedOptimizations.hlegacyLTOCodeGenerator.hLTOModule.hThinLTOCodeGenerator.hUpdateCompilerUsed.hLineEditorLineEditor.hLinkAllIR.hLinkAllPasses.hLinkerIRMover.hLinker.hMCConstantPools.hDXContainerPSVInfo.hLaneBitmask.hMCAsmBackend.hMCAsmInfo.hMCAsmInfoCOFF.hMCAsmInfoDarwin.hMCAsmInfoELF.hMCAsmInfoGOFF.hMCAsmInfoWasm.hMCAsmInfoXCOFF.hMCAsmLayout.hMCAsmMacro.hMCAssembler.hMCCodeEmitter.hMCCodeView.hMCContext.hMCDXContainerStreamer.hMCDXContainerWriter.hMCDecoderOps.hMCDirectives.hMCDisassemblerMCDisassembler.hMCExternalSymbolizer.hMCRelocationInfo.hMCSymbolizer.hMCDwarf.hMCELFObjectWriter.hMCELFStreamer.hMCExpr.hMCFixup.hMCFixupKindInfo.hMCFragment.hMCInst.hMCInstBuilder.hMCInstPrinter.hMCInstrAnalysis.hMCInstrDesc.hMCInstrInfo.hMCInstrItineraries.hMCLabel.hMCLinkerOptimizationHint.hMCMachObjectWriter.hMCObjectFileInfo.hMCObjectStreamer.hMCObjectWriter.hMCParserAsmCond.hAsmLexer.hMCAsmLexer.hMCAsmParser.hMCAsmParserExtension.hMCAsmParserUtils.hMCParsedAsmOperand.hMCTargetAsmParser.hMCPseudoProbe.hMCRegister.hMCRegisterInfo.hMCSPIRVObjectWriter.hMCSPIRVStreamer.hMCSchedule.hMCSection.hMCSectionCOFF.hMCSectionDXContainer.hMCSectionELF.hMCSectionGOFF.hMCSectionMachO.hMCSectionSPIRV.hMCSectionWasm.hMCSectionXCOFF.hMCStreamer.hMCSubtargetInfo.hMCSymbol.hMCSymbolCOFF.hMCSymbolELF.hMCSymbolGOFF.hMCSymbolMachO.hMCSymbolWasm.hMCSymbolXCOFF.hMCTargetOptions.hMCTargetOptionsCommandFlags.hMCValue.hMCWasmObjectWriter.hMCWasmStreamer.hMCWin64EH.hMCWinCOFFObjectWriter.hMCWinCOFFStreamer.hMCWinEH.hMCXCOFFObjectWriter.hMCXCOFFStreamer.hMachineLocation.hSectionKind.hStringTableBuilder.hTargetRegistry.hMCACodeEmitter.hContext.hCustomBehaviour.hHWEventListener.hHardwareUnitsHardwareUnit.hLSUnit.hRegisterFile.hResourceManager.hRetireControlUnit.hScheduler.hIncrementalSourceMgr.hInstrBuilder.hInstruction.hPipeline.hSourceMgr.hStagesDispatchStage.hEntryStage.hExecuteStage.hInOrderIssueStage.hInstructionTables.hMicroOpQueueStage.hRetireStage.hStage.hSupport.hView.hObjCopyCOFFCOFFConfig.hCOFFObjcopy.hCommonConfig.hConfigManager.hELFELFConfig.hELFObjcopy.hMachOMachOConfig.hMachOObjcopy.hMultiFormatConfig.hObjCopy.hXCOFFXCOFFConfig.hXCOFFObjcopy.hwasmWasmConfig.hWasmObjcopy.hObjectArchive.hArchiveWriter.hBinary.hBuildID.hCOFF.hCOFFImportFile.hCOFFModuleDefinition.hCVDebugRecord.hDXContainer.hDecompressor.hELF.hELFObjectFile.hELFTypes.hError.hFaultMapParser.hGOFF.hGOFFObjectFile.hIRObjectFile.hIRSymtab.hMachO.hMachOUniversal.hMachOUniversalWriter.hMinidump.hModuleSymbolTable.hObjectFile.hOffloadBinary.hRelocationResolver.hStackMapParser.hSymbolSize.hSymbolicFile.hTapiFile.hTapiUniversal.hWasm.hWindowsMachineFlag.hWindowsResource.hXCOFFObjectFile.hObjectYAMLArchiveYAML.hCOFFYAML.hCodeViewYAMLDebugSections.hCodeViewYAMLSymbols.hCodeViewYAMLTypeHashing.hCodeViewYAMLTypes.hDWARFEmitter.hDWARFYAML.hDXContainerYAML.hELFYAML.hMachOYAML.hMinidumpYAML.hObjectYAML.hOffloadYAML.hWasmYAML.hXCOFFYAML.hYAML.hyaml2obj.hOptionArg.hArgList.hOptParser.tdOptSpecifier.hOptTable.hOption.hPass.hPassAnalysisSupport.hPassInfo.hPassRegistry.hPassSupport.hPassesOptimizationLevel.hPassBuilder.hPassPlugin.hStandardInstrumentations.hProfileDataCoverageCoverageMapping.hCoverageMappingReader.hCoverageMappingWriter.hGCOV.hInstrProf.hInstrProfCorrelator.hInstrProfData.incInstrProfReader.hInstrProfWriter.hItaniumManglingCanonicalizer.hMIBEntryDef.incMemProf.hMemProfData.incProfileCommon.hRawMemProfReader.hSampleProf.hSampleProfReader.hSampleProfWriter.hSymbolRemappingReader.hRemarksBitstreamRemarkContainer.hBitstreamRemarkParser.hBitstreamRemarkSerializer.hHotnessThresholdParser.hRemark.hRemarkFormat.hRemarkLinker.hRemarkParser.hRemarkSerializer.hRemarkStreamer.hRemarkStringTable.hYAMLRemarkSerializer.hSupportAMDGPUMetadata.hAMDHSAKernelDescriptor.hARMAttributeParser.hARMBuildAttributes.hARMEHABI.hARMWinEH.hAlignOf.hAlignment.hAllocator.hAllocatorBase.hArrayRecycler.hAtomic.hAtomicOrdering.hAutoConvert.hAutomaton.hBCD.hBLAKE3.hBalancedPartitioning.hBase64.hBinaryByteStream.hBinaryItemStream.hBinaryStream.hBinaryStreamArray.hBinaryStreamError.hBinaryStreamReader.hBinaryStreamRef.hBinaryStreamWriter.hBlockFrequency.hBranchProbability.hBuryPointer.hCBindingWrapping.hCFGDiff.hCFGUpdate.hCOM.hCRC.hCSKYAttributeParser.hCSKYAttributes.hCachePruning.hCaching.hCapacity.hCasting.hCheckedArithmetic.hChrono.hCodeGen.hCodeGenCoverage.hCommandLine.hCompiler.hCompression.hConvertEBCDIC.hConvertUTF.hCrashRecoveryContext.hDJB.hDOTGraphTraits.hDXILOperationCommon.hDataExtractor.hDataTypes.hDebug.hDebugCounter.hDiscriminator.hDivisionByConstantInfo.hDuration.hDynamicLibrary.hELFAttributeParser.hELFAttributes.hEndian.hEndianStream.hErrc.hErrno.hError.hErrorHandling.hErrorOr.hExitCodes.hExtensibleRTTI.hExtension.defFileCollector.hFileOutputBuffer.hFileSystemFileSystem.hUniqueID.hFileUtilities.hFormat.hFormatAdapters.hFormatCommon.hFormatProviders.hFormatVariadic.hFormatVariadicDetails.hFormattedStream.hGenericDomTree.hGenericDomTreeConstruction.hGenericIteratedDominanceFrontier.hGenericLoopInfo.hGenericLoopInfoImpl.hGlobPattern.hGraphWriter.hHashBuilder.hHost.hInitLLVM.hInstructionCost.hJSON.hKnownBits.hLEB128.hLICENSE.TXTLLVMDriver.hLineIterator.hLocale.hLockFileManager.hMD5.hMSP430AttributeParser.hMSP430Attributes.hMSVCErrorWorkarounds.hManagedStatic.hMathExtras.hMemAlloc.hMemory.hMemoryBuffer.hMemoryBufferRef.hMipsABIFlags.hModRef.hMutex.hNativeFormatting.hOnDiskHashTable.hOptimizedStructLayout.hPGOOptions.hParallel.hPath.hPerThreadBumpPtrAllocator.hPluginLoader.hPointerLikeTypeTraits.hPrettyStackTrace.hPrintable.hProcess.hProgram.hRISCVAttributeParser.hRISCVAttributes.hRISCVISAInfo.hRWMutex.hRandomNumberGenerator.hRecycler.hRecyclingAllocator.hRegex.hRegistry.hReverseIteration.hSHA1.hSHA256.hSMLoc.hSMTAPI.hSaveAndRestore.hScaledNumber.hScopedPrinter.hSignals.hSignposts.hSmallVectorMemoryBuffer.hSolarissysregset.hSourceMgr.hSpecialCaseList.hStringSaver.hSuffixTree.hSuffixTreeNode.hSwapByteOrder.hSystemUtils.hTarWriter.hTargetOpcodes.defTargetSelect.hThreadPool.hThreading.hTimeProfiler.hTimer.hToolOutputFile.hTrailingObjects.hTypeName.hTypeSize.hUnicode.hUnicodeCharRanges.hVCSRevision.hValgrind.hVersionTuple.hVirtualFileSystem.hWatchdog.hWin64EH.hWindowsWindowsSupport.hWindowsError.hWithColor.hX86DisassemblerDecoderCommon.hX86FoldTablesUtils.hYAMLParser.hYAMLTraits.hcircular_raw_ostream.hraw_os_ostream.hraw_ostream.hraw_sha1_ostream.hthread.htype_traits.hxxhash.hTableGenAutomaton.tdDirectiveEmitter.hError.hMain.hParser.hRecord.hSearchableTable.tdSetTheory.hStringMatcher.hStringToOffsetTable.hTableGenBackend.hTargetCGPassBuilderOption.hCodeGenCWrappers.hGenericOpcodes.tdGlobalISelCombine.tdRegisterBank.tdSelectionDAGCompat.tdTarget.tdTarget.tdTargetCallingConv.tdTargetInstrPredicate.tdTargetIntrinsicInfo.hTargetItinerary.tdTargetLoweringObjectFile.hTargetMachine.hTargetOptions.hTargetPfmCounters.tdTargetSchedule.tdTargetSelectionDAG.tdTargetParserAArch64TargetParser.hARMTargetParser.defARMTargetParser.hARMTargetParserCommon.hCSKYTargetParser.defCSKYTargetParser.hHost.hLoongArchTargetParser.defLoongArchTargetParser.hRISCVTargetParser.hRISCVTargetParserDef.incSubtargetFeature.hTargetParser.hTriple.hX86TargetParser.defX86TargetParser.hTestingADTStringMap.hStringMapEntry.hAnnotationsAnnotations.hSupportError.hSupportHelpers.hTextAPIArchitecture.defArchitecture.hArchitectureSet.hInterfaceFile.hPackedVersion.hPlatform.hSymbol.hSymbolSet.hTarget.hTextAPIReader.hTextAPIWriter.hToolDriversllvm-dlltoolDlltoolDriver.hllvm-libLibDriver.hTransformsAggressiveInstCombineAggressiveInstCombine.hCFGuard.hCoroutinesCoroCleanup.hCoroConditionalWrapper.hCoroEarly.hCoroElide.hCoroSplit.hIPOIPO.hAlwaysInliner.hAnnotation2Metadata.hArgumentPromotion.hAttributor.hBlockExtractor.hCalledValuePropagation.hConstantMerge.hCrossDSOCFI.hDeadArgumentElimination.hElimAvailExtern.hEmbedBitcodePass.hExtractGV.hForceFunctionAttrs.hFunctionAttrs.hFunctionImport.hFunctionSpecialization.hGlobalDCE.hGlobalOpt.hGlobalSplit.hHotColdSplitting.hIROutliner.hInferFunctionAttrs.hInliner.hInternalize.hLoopExtractor.hLowerTypeTests.hMemProfContextDisambiguation.hMergeFunctions.hModuleInliner.hOpenMPOpt.hPartialInlining.hProfiledCallGraph.hSCCP.hSampleContextTracker.hSampleProfile.hSampleProfileProbe.hStripDeadPrototypes.hStripSymbols.hSyntheticCountsPropagation.hThinLTOBitcodeWriter.hWholeProgramDevirt.hInstCombineInstCombine.hInstCombiner.hInstrumentationInstrumentation.hAddressSanitizer.hAddressSanitizerCommon.hAddressSanitizerOptions.hBlockCoverageInference.hBoundsChecking.hCFGMST.hCGProfile.hControlHeightReduction.hDataFlowSanitizer.hGCOVProfiler.hHWAddressSanitizer.hInstrOrderFile.hInstrProfiling.hKCFI.hMemProfiler.hMemorySanitizer.hPGOInstrumentation.hPoisonChecking.hSanitizerBinaryMetadata.hSanitizerCoverage.hThreadSanitizer.hObjCARC.hScalarScalar.hADCE.hAlignmentFromAssumptions.hAnnotationRemarks.hBDCE.hCallSiteSplitting.hConstantHoisting.hConstraintElimination.hCorrelatedValuePropagation.hDCE.hDFAJumpThreading.hDeadStoreElimination.hDivRemPairs.hEarlyCSE.hFlattenCFG.hFloat2Int.hGVN.hGVNExpression.hGuardWidening.hIVUsersPrinter.hIndVarSimplify.hInductiveRangeCheckElimination.hInferAddressSpaces.hInstSimplifyPass.hJumpThreading.hLICM.hLoopAccessAnalysisPrinter.hLoopBoundSplit.hLoopDataPrefetch.hLoopDeletion.hLoopDistribute.hLoopFlatten.hLoopFuse.hLoopIdiomRecognize.hLoopInstSimplify.hLoopInterchange.hLoopLoadElimination.hLoopPassManager.hLoopPredication.hLoopReroll.hLoopRotation.hLoopSimplifyCFG.hLoopSink.hLoopStrengthReduce.hLoopUnrollAndJamPass.hLoopUnrollPass.hLoopVersioningLICM.hLowerAtomicPass.hLowerConstantIntrinsics.hLowerExpectIntrinsic.hLowerGuardIntrinsic.hLowerMatrixIntrinsics.hLowerWidenableCondition.hMakeGuardsExplicit.hMemCpyOptimizer.hMergeICmps.hMergedLoadStoreMotion.hNaryReassociate.hNewGVN.hPartiallyInlineLibCalls.hPlaceSafepoints.hReassociate.hReg2Mem.hRewriteStatepointsForGC.hSCCP.hSROA.hScalarizeMaskedMemIntrin.hScalarizer.hSeparateConstOffsetFromGEP.hSimpleLoopUnswitch.hSimplifyCFG.hSink.hSpeculativeExecution.hStraightLineStrengthReduce.hStructurizeCFG.hTLSVariableHoist.hTailRecursionElimination.hWarnMissedTransforms.hUtilsUtils.hAMDGPUEmitPrintf.hASanStackFrameLayout.hAddDiscriminators.hAssumeBundleBuilder.hBasicBlockUtils.hBreakCriticalEdges.hBuildLibCalls.hBypassSlowDivision.hCallGraphUpdater.hCallPromotionUtils.hCanonicalizeAliases.hCanonicalizeFreezeInLoops.hCloning.hCodeExtractor.hCodeLayout.hCodeMoverUtils.hCountVisits.hCtorUtils.hDebugify.hEntryExitInstrumenter.hEscapeEnumerator.hEvaluator.hFixIrreducible.hFunctionComparator.hFunctionImportUtils.hGlobalStatus.hGuardUtils.hHelloWorld.hInjectTLIMappings.hInstructionNamer.hInstructionWorklist.hIntegerDivision.hLCSSA.hLibCallsShrinkWrap.hLocal.hLoopPeel.hLoopRotationUtils.hLoopSimplify.hLoopUtils.hLoopVersioning.hLowerAtomic.hLowerGlobalDtors.hLowerIFunc.hLowerInvoke.hLowerMemIntrinsics.hLowerSwitch.hMatrixUtils.hMem2Reg.hMemoryOpRemark.hMemoryTaggingSupport.hMetaRenamer.hMisExpect.hModuleUtils.hMoveAutoInit.hNameAnonGlobals.hPredicateInfo.hPromoteMemToReg.hRelLookupTableConverter.hSCCPSolver.hSSAUpdater.hSSAUpdaterBulk.hSSAUpdaterImpl.hSampleProfileInference.hSampleProfileLoaderBaseImpl.hSampleProfileLoaderBaseUtil.hSanitizerStats.hScalarEvolutionExpander.hSimplifyCFGOptions.hSimplifyIndVar.hSimplifyLibCalls.hSizeOpts.hSplitModule.hStripGCRelocates.hStripNonLineTableDebugInfo.hSymbolRewriter.hUnifyFunctionExitNodes.hUnifyLoopExits.hUnrollLoop.hVNCoercion.hValueMapper.hVectorizeVectorize.hLoadStoreVectorizer.hLoopVectorizationLegality.hLoopVectorize.hSLPVectorizer.hVectorCombine.hWindowsDriverMSVCPaths.hMSVCSetupApi.hWindowsManifestWindowsManifestMerger.hWindowsResourceResourceProcessor.hResourceScriptToken.hResourceScriptTokenList.hXRayBlockIndexer.hBlockPrinter.hBlockVerifier.hFDRLogBuilder.hFDRRecordConsumer.hFDRRecordProducer.hFDRRecords.hFDRTraceExpander.hFDRTraceWriter.hFileHeaderReader.hGraph.hInstrumentationMap.hProfile.hRecordPrinter.hTrace.hXRayRecord.hYAMLXRayRecord.hmacros.llvmllvmAddLLVM.cmakeAddOCaml.cmakeAddSphinxTarget.cmakeCheckAtomic.cmakeCheckCompilerVersion.cmakeCheckProblematicConfigurations.cmakeChooseMSVCCRT.cmakeCoverageReport.cmakeCrossCompile.cmakeDetermineGCCCompatible.cmakeFindFFI.cmakeFindLibEdit.cmakeFindLibpfm.cmakeFindOCaml.cmakeFindSphinx.cmakeFindTerminfo.cmakeFindZ3.cmakeFindzstd.cmakeGenerateVersionFromVCS.cmakeGetErrcMessages.cmakeGetLibraryName.cmakeHandleLLVMOptions.cmakeHandleLLVMStdlib.cmakeLLVM-Build.cmakeLLVM-Config.cmakeLLVMCheckLinkerFlag.cmakeLLVMConfig.cmakeLLVMConfigExtensions.cmakeLLVMConfigVersion.cmakeLLVMDistributionSupport.cmakeLLVMExports-relwithdebinfo.cmakeLLVMExports.cmakeLLVMExternalProjectUtils.cmakeLLVMInstallSymlink.cmakeLLVMProcessSources.cmakeSetTargetTriple.cmakeTableGen.cmakeTensorFlowCompile.cmakeUseLibtool.cmakeVersionFromVCS.cmakellvm-driver-template.cpp.inlibLLVM.solibLLVMTableGen.solibLTO.solibRemarks.sollvm17-develCREDITS.TXTLICENSE.TXTFileCheck.1.gzllvm-config.1.gz/usr/bin//usr/include//usr/include/llvm-c//usr/include/llvm-c/Transforms//usr/include/llvm//usr/include/llvm/ADT//usr/include/llvm/Analysis//usr/include/llvm/Analysis/Utils//usr/include/llvm/AsmParser//usr/include/llvm/BinaryFormat//usr/include/llvm/BinaryFormat/ELFRelocs//usr/include/llvm/Bitcode//usr/include/llvm/Bitstream//usr/include/llvm/CodeGen//usr/include/llvm/CodeGen/GlobalISel//usr/include/llvm/CodeGen/MIRParser//usr/include/llvm/CodeGen/PBQP//usr/include/llvm/Config//usr/include/llvm/DWARFLinker//usr/include/llvm/DWARFLinkerParallel//usr/include/llvm/DWP//usr/include/llvm/DebugInfo//usr/include/llvm/DebugInfo/BTF//usr/include/llvm/DebugInfo/CodeView//usr/include/llvm/DebugInfo/DWARF//usr/include/llvm/DebugInfo/GSYM//usr/include/llvm/DebugInfo/LogicalView//usr/include/llvm/DebugInfo/LogicalView/Core//usr/include/llvm/DebugInfo/LogicalView/Readers//usr/include/llvm/DebugInfo/MSF//usr/include/llvm/DebugInfo/PDB//usr/include/llvm/DebugInfo/PDB/DIA//usr/include/llvm/DebugInfo/PDB/Native//usr/include/llvm/DebugInfo/Symbolize//usr/include/llvm/Debuginfod//usr/include/llvm/Demangle//usr/include/llvm/ExecutionEngine//usr/include/llvm/ExecutionEngine/JITLink//usr/include/llvm/ExecutionEngine/Orc//usr/include/llvm/ExecutionEngine/Orc/Shared//usr/include/llvm/ExecutionEngine/Orc/TargetProcess//usr/include/llvm/FileCheck//usr/include/llvm/Frontend//usr/include/llvm/Frontend/Debug//usr/include/llvm/Frontend/Directive//usr/include/llvm/Frontend/HLSL//usr/include/llvm/Frontend/OpenACC//usr/include/llvm/Frontend/OpenMP//usr/include/llvm/FuzzMutate//usr/include/llvm/IR//usr/include/llvm/IRPrinter//usr/include/llvm/IRReader//usr/include/llvm/InterfaceStub//usr/include/llvm/LTO//usr/include/llvm/LTO/legacy//usr/include/llvm/LineEditor//usr/include/llvm/Linker//usr/include/llvm/MC//usr/include/llvm/MC/MCDisassembler//usr/include/llvm/MC/MCParser//usr/include/llvm/MCA//usr/include/llvm/MCA/HardwareUnits//usr/include/llvm/MCA/Stages//usr/include/llvm/ObjCopy//usr/include/llvm/ObjCopy/COFF//usr/include/llvm/ObjCopy/ELF//usr/include/llvm/ObjCopy/MachO//usr/include/llvm/ObjCopy/XCOFF//usr/include/llvm/ObjCopy/wasm//usr/include/llvm/Object//usr/include/llvm/ObjectYAML//usr/include/llvm/Option//usr/include/llvm/Passes//usr/include/llvm/ProfileData//usr/include/llvm/ProfileData/Coverage//usr/include/llvm/Remarks//usr/include/llvm/Support//usr/include/llvm/Support/FileSystem//usr/include/llvm/Support/Solaris//usr/include/llvm/Support/Solaris/sys//usr/include/llvm/Support/Windows//usr/include/llvm/TableGen//usr/include/llvm/Target//usr/include/llvm/Target/GlobalISel//usr/include/llvm/TargetParser//usr/include/llvm/Testing//usr/include/llvm/Testing/ADT//usr/include/llvm/Testing/Annotations//usr/include/llvm/Testing/Support//usr/include/llvm/TextAPI//usr/include/llvm/ToolDrivers//usr/include/llvm/ToolDrivers/llvm-dlltool//usr/include/llvm/ToolDrivers/llvm-lib//usr/include/llvm/Transforms//usr/include/llvm/Transforms/AggressiveInstCombine//usr/include/llvm/Transforms/Coroutines//usr/include/llvm/Transforms/IPO//usr/include/llvm/Transforms/InstCombine//usr/include/llvm/Transforms/Instrumentation//usr/include/llvm/Transforms/Scalar//usr/include/llvm/Transforms/Utils//usr/include/llvm/Transforms/Vectorize//usr/include/llvm/WindowsDriver//usr/include/llvm/WindowsManifest//usr/include/llvm/WindowsResource//usr/include/llvm/XRay//usr/lib/rpm/macros.d//usr/lib64/cmake//usr/lib64/cmake/llvm//usr/lib64//usr/lib64//usr/lib64//usr/share/licenses//usr/share/licenses/llvm17-devel//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-protectionobs://build.opensuse.org/openSUSE:Maintenance:18676/openSUSE_Backports_SLE-15-SP5_Update/f4094213a37014bba323d28e041ab69b-llvm17.openSUSE_Backports_SLE-15-SP5_Updatedrpmxz5s390x-suse-linux     ELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, interpreter /lib/ld64.so.1, BuildID[sha1]=6f701b9940adb8c760cffde06c79de8199c406cf, for GNU/Linux 3.2.0, not strippedELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, interpreter /lib/ld64.so.1, BuildID[sha1]=600b3ce5686c6acc4844a5272ef7d112926705b1, for GNU/Linux 3.2.0, not strippeddirectoryC source, ASCII textC++ source, ASCII textC++ source, UTF-8 Unicode (with BOM) textC++ source, UTF-8 Unicode textASCII textC source, UTF-8 Unicode textC source, ASCII text, with very long linesASCII text, with very long linesASCII text, with no line terminatorstroff or preprocessor input, ASCII text (gzip compressed data, max compression, from Unix)13RRRRR$R R R RR RR!RRRR"RRR RRRRR RR#RRRRRR$R R R RRRRRR"RRRRRR#RRPPPPViGaG߭1Wutf-8211cf851634ed1de55361afffb7083cbf0fcf7b19d5d6ccaf744a86d8087a074?7zXZ !t/B9]"k%"8Ifl-cY;9UyD2Ss_5sU{#7kV-G!:jvri&jRa嬒"FrjҡTiՒGs~LKϋ?FZ,r'||. XgAҨJX.P9=CtBW1ZDn? ?_qAU%o "o ;==rYRG2s.jVj`8CVf+H{(d%sy uB @e5JKK`m v&| M_OclVeM6w?c<^q}_{L]϶q?Lf}T(YJ| b |]GӶD!6U# ,L=>zkʓh azCskj*jZ,F& z]5bj|\xGROtԍ;N>PРs|w>3aAhfJ8Esv2h94 6j֩^J[[/p]t 5KŻD(6Iso#Y'۪sIO1#}%puu/<4*kqR|jxpJ9t]+,a (̇Cq{ `6D&]@>Le3CIE αBݷ!m P$daa]pQӼ㫡yԩӦ??r%kP< n^B(*n#JE.l#:c{l̺ ƨ?7[Rp:52 挏nڇ\e|;N5LIg/ҵQo{x N 3T11vc }}Ŝ5<"_R ÝF?mR߮b-~fxPqHbE#yS;T`_5TTU'K+m2Bj=N{3V-P(ѿWg$RIt͜Lr2ۿhPp& U>:HS,^\=W`V;ZjĚScH-:g$ǻ@Z;0OsؙEi5I}9mI7YBLpUHWX6q}hN&*Ł#кT?BTJyjVsj,]:PhdS,g|]Q4>.> B"DH+reQ4 ,{0<\ǜ×&^dm2i6Z1ʋ<<U/ Akv&c0_w_Wcm;9])pIBBp% SX%ϸmR[ڋ( p[DȳLA%B_-P{`5O://qj1t",-?[=҄"5?rP:'3Kk%  ʹd(c*tҜ*z%C `(>.~2!:a+b7,1mY2Dל(eK5iz6kωBnZX8_c"FcUl- SEN1DiftTL)5̔ _.VgJQYy * rEh01՞zKJB[h.&HԆK 5 xש  ݝ=Յ5 |ٸk[=޹t"L'2wb`9܋WxCLӘO1=!C;ߜAjvM+DI,k$F,T+nLjs? 78`Ξo5X_eh ގMh't:}` H4V2R1S'?z>SrM- 4X4Ѯ+kz -]˻Dͮ~3 }b6$xRzu :&o 4U8C-)y'b^^e^sѡS>." ~2qm=21wyWrܯJ[6]ͭn.OCH][S3 vQJ #qZWf깡*e7 xN:||{VE5ѡ|\)|ƌ3ĠX")xeΧ12&ܠ5|IS@=Ιe?y:SzNx9&a\E l_DE4 OߠOt['Jra8nC%,^@0i:"sXGl窞=gtaF?t`|yů^ERYvEיڵM9GZz3JM˚P".g$ nؕ3E}RڇS=T )eF0 - $Qi @wf4ښ|P?+nf >E#6鶠g?*6i e? GnJI6TaˉT @]@00 Z@YAiGI)}0wк2,2wZ| S Ӵo4m|O=ʇʙ'ⱄwA;AM PUn1OFn/ mK mB4Y[(- nZ6PuP@twici6zPDp@ʟ0ZkfC(zМ䏌Ȓl$ X *i})Kn/ !bymūjz@F7C|,zq$ gZq=mS!\P>{r;؍u~ HH yZ1l͍4pCG9R,Z.6@8wp7Z;4ؼ~MCO/xHdTϠLs  4ZcUXo#2&z|r\"gLIQ£Fsq:h2D&F<_?zxG$ w6o8Z/1`5+iG:@|i'DXnw^\V,ͻzV}jλ@+*f, 哳 _-!4/WZTut[}^yr.=3q\3D!C}v6&!ϻ4enY=$$- dP/r22f }G0)BTRmN3n Wv%R'cůL:xWg_/0mSEe>UrLW.bBJ"a L䵚"L">7EfJn*y&|@F^ -pmy﷒[!d%[?O(*[_14,PRPV o ش~aW](XKc VH]4Yc= 1cuf1Q Tɓ![Gjhڏo;ljmc۫) 'zYi<[^]4V=`+9##Ƌ|^96!Y_L ,?6X Ao|"R|^p8Xl\džmKxlAB- I)ÑY8~O|?!4bpsjqcܗA(S- fh09~nR!!2Z$Jm#o67Rٷ(; ldޙ@~z0hRobP'_ݫgVy8Xp=y? ! ,^K@<:(^Nػp}W׸@YrcO(R*c75ѿJհ~Ct09}'` vbCFSuՏ]ncrVPحhR !yj@1[Fۂ,̓y$~KZDT#ig}򎐼EqȩGhg,tq_ )14T:`:=d9nݢ)մ}6s.s9vڷɔg7"Xy.'F#3:^|آNّdUA$4>~ v/?*[a`TnT7r^Dr\T%Oۺ5oـwbjahE1u@ZyFtcZLhP}Zq 9I Nm)(f03[Cn<:(7EdS|q_)o8ҥho3uG{L ey)yNOgװŚkރ5R[ J2ԔorHe p0hFpirG>P>|hWIee/Hn _CQjw T+Bփ{mO f#B VaZ&@aX~o>ւ^FZZصn$׺H9nXOv'p. Hl{lEB H~yv͇.["E-! _Gk&#]Jm:gIY$EXZgPQϜ7=t_bgA1fw [*ëY`u S miMҠ>\D (VI*m n/ ^x\?݂DVs&3 f}j H"c(\%R; 96$1aJ?cg| ZDO>śsEj ]QljT߷bΠ03Y<~:>ܟB=g(p6/ۥ5)6Z+g5~i?1W]I4㮳Rw|} Y#r/xy3uAXAkunwAt@Dӓ8> H<:"IϸCx0p},B'B3AlW.k=@obO|m!{-vL6g^̤ [FԮůh_Sjѫ! pX:_Z5A  }PUM,UIiԒr~Hma$ <|?Po3Y#EAxHGT|m¿:`r9iwD"DzKL6iwfx_h/'u,Qz`o-?V٠+:G\t mNxjkOHxmhlkx{Ssd;q JIxxTMMS4,/1Lvlzs|;W𳰷Kc5AZyI)%+BmzN`F Gmxs2Z`w Eo  <>g fC06*EMajpi2]3xq9cw3u(>&+,*f_`ةiprMeJO(Cb >I(2Y_١bE-?$M~(&NAEg+-T ȒW@JmT+DЍwJ6WUUquj5DBbΐQ^/cqDc$3|@^eLΦF"k Z,LsG4! I2Y_8A OK@㙁Yt+8=6RlB~*=OSn@CJt)j2v; XcOe,]8QkVϓgL, WS8 NBQ_?H)&Tb`yX|W%|ߌV{*) g6v޵$?XP"#KL;CVD̄P+qqIn~7U!u{$Ȣ)̘Ƌ->LK+ W"TGrơߝ0GV% 'l^^-{j޼טf-<-?2#[ߨFjHB5(xf:1X'"1Tp?bf/ &/x_Ve0i(&?kr M} ׃=|tI*C ٶM9l\ZX3eׁg{tfR:sQ&Ji v֫Ěr{w㵊RBp&9V%ZUn"K2F? !ZjcݘHKbE.yNYxk] {hf[l"6iO$p~86Ŗ_k۪U7b Yx|y<:@nsӬuGg <Óח,2s3#JZZ S㎀+0YޠƇjy @XkJ:-#LV:ʹF].{:A{m-Hpr) 8y!0m ¤] K/EaKE~wՔin ]/B-z&_y`E%EdHVJ>㱇LL .]l-s/&Cc|]SpE4BZQZfd w #2HcO[ơV%b \W<(1 9srt]%zՋtJ^.=X@C.?;Dk@~Aj)j*lBWa\% ! X#ۅT[ǫcyMFZsoԥtַ4\ammYp&U+hIhqT^z>QJaAdfhɳqd+D|opCpVFڪOɔI8qs1߻OoP=[&xZ_}rx'`)ڷȏ:򸰒3+PIv>3>bHl- !_G=J~|I/7t"آTte}v H xu~bL0ZMTG,ql,O1TryH+/R]MKYڃ⬁?yF#^?$ש@6y^#RF$Xג!R}CQiil'P_7gchV}Ŗߓr:N0]_4rs ݴC鵄7a/qsve8i 1%ԙS DVx~ \ouAJWr! b65/YbqQSߦ&4ަ .`Z2^'jIm49L]Q6 GY!b10P=[AZ[IWz jv)>7Pb1@At`ː|eox/ZQmZ!kx(`j<$k6[icRd4-07u/zKWTD{k`0 ^Rn8*!'kdns1&wsyQ;ة.a{@Ю"b<gFnUl 4|U+vv-m@hMznqF| j;^VC")~ppkpIdx5 Ä)*ԃ@q<+:E/w<H]"L_v̑C ̟GFQlu"$q!OUb% UĩSpʡҊ(AFulɉw/~A Pޛu,~ VB CI ^^^6Om?[G5Aza؟L):^$uSz IjpBmɭ1ᄉ.xB£1V~UKR_v׭NJI57H;5p::h 4Lԙ$x/+/]LKWa T~Uu 7BK y!67e%^,+^r%w}~zadEG7Ww݇y(8l5R2|@5~Fta"mcUzf>IBuUڼ3]Gs+Eٯ:6AcxsXd//4CubU-Ù DYAARhf;oI) [!2XC_%̽I!&:1ʊ|Vwr„F.-WOחj',%WϺ{ArB , f}{~ǮYP ]s)90(j~*g|a2TAL۟$=j8)`zW]|DH<ʨ[;Sl6J?'E3p76d4_[ECzuFSaq`97b:`dDEj[xCW<) eݚ-k؄Lk1I+xn D6vPSr&r(6otm^op->_./3̯EM)Sv!JեX0vexBRu\iE8x+cJzޝv98kf8غ:_tN݄< ުЅspVIB#Dvqޕ錤JY('ѹcd$*)^@zrɴ.=Qs[1~(y>xƹB4FVv^=$,z}lFlKiɴ?$ > rlω~0/>M`o [i3=CD7;v &9ie.Oq*hpXϩءa%6T+}@=Yn0YԹ"lPfg< T-z!#2ytZälA.ZO_riiK86{kbƨ2:*~8;ҋ*ɦ"/a+m6KR@laoʎ}{C_04JMxj1`>{:!nhcXi1M ]:^U8lF)8c~sȰ\ ݌OMsGbRc(!ף\m^MN`9r€>\`?5@[x&^V @ŵ<=|\m"}rDQr? ^AT8[ [?Sw.V|GςD{Oi97v80` HOU1ɲA/m`i\+ ?@1˰ؤh{ \PvH@31[oa{~R;SۼYv FX-ӡcH@eZk(dr^AȌD:[>ӃE J('9}pJ eMN ?TJzєZ?_DŽ/p|s[5Pꗶ sQR6,(Zt+i r+.ш) Ō_),W`I>K [mR(bABLSP%yq]>7dvp77×tRp7=[~3ݞ1K DEP?}?iCNɼF{QRdjHtlb u&Qk'啩 m"c?:&4t}C 05/U884vթ~P1ohf.nOT#f̅hԲ)LSyyLߠB΁,&%֋nEM$02 + Bc啂Jr*XMCSƭEݙFT}׽8@wSf9{> Oksߛ,&^Q[9Ő]nA &I.ԕ6w҂#-[Xh3^C( @֝!;Q_7,YH9anS2t/N*O (xeչ ~[3:5O'͹KNC  D -/3- 3&8\RǹsqQ>3k* BgFl8(aLDB&My>ɭUs *l6&_'"U!G㐎7F.m1L&'ԏ}vZ,)ZKMw{!&6%GI5Cv??JK(D ȶ󶯠̋( |yWz 29╾>.'ҢDv(P4rPď.d x6l 6Rh)CAXwY %,0&˟7Wu6?i\*;ϜUǽS  ݭ׺.իVp5;|0U»=ى*-1qE2* -IafrapcFH %2}MǮ`dv_?ws PI(5bbG.1׉^dikț+O/'aA4Ps.Te:jvϱmQ}΢"ն5t1Dz{RD893 O\CvrіAX}N `<<7{<`Ajos"}.\}E~Oԃ_im篻Z eÏ,k-%>{^?Wx6Y\CRqPFw4qvxRVٞ$ #}x4S]n `yD9Bh_֩ `0 E l-ʂpdp*Ug"B S}f_pZ 3;{'w(Ȋi;7Ҍؿ9\F&HQ]ƫ8ݥev};®9 _F .ӑ-o Ӹ#m抎Ѱǫ`wq|N eUTy-cڿq<1j/oř]^%'kxNZk4HZ.3+\y ?ݔvNARíw kWNM{> 9a\W:t0+\ "JܫsO9FHo8 j6ZGՕ6řXQe~wKl3Ga*RكT 2F,0@rc2&\VxғYR_y$DRe!4J$ 7eY|݇ sK yGW^Qv\~!l ɋ}~-,"'@@1!8Aj+ - h- .6cn ov}ˡ}ĞFsb8ҐLꍡWj9`F=Z ||t{SSa/kR$tP̝jPyeTx ^v\-l}|iU?LOFx57` H,6b>LP7x.CpR_ պЍ$,^pɺp% 1ߍfV S I$Tw(/مX7QlFS~2.@ z`idD=#y3Ҿ$u{#<^G#GvS ,>bH?r}Q>?/f-_8#,1Rrѹ"!m]I$b_R;45bzM zq08q Dp /v` HOnԛ\N񄽟E).7:Fi}LD!F)Ȣ#ĎfN9 bo#bvሇaqppfՂcIW•i zU0WLه7Lj|{[EaKL"`W/SOumul1$Q{GAKGuW&_[@lz#J4KINׯQ'@rmbrǎ*C; A<#̫qTj1$r6VXGm>3F&KͻE\i:te5B!Β3?XT˵TQ %go=^%'0e=0Ds$,%SNLMұ51N>p $cNF>V mA?9 jQa!1TVͥ?;B Oysd60rıH\ʟA¼ّ  0X286@h/'K~Uyd®(\|bknJyJ4p42]e:ͬ/Qb0Bs̲A+;#z} 9Eٹ\` 9uz;*!6`Bp$ɀ"]adpL)[GNR)ַ+uǗߨy "u2\ Qjx]W, 2'V3L|ME~P![cF>0QЃxE QrQ阐g+G:W4Qsx~XAؘ7dCq9 qxROar}*~D6V)[&7(5>̶+R؎ͬb}%.3~7bs|~%; >ZK?oP'VziIT1R]A8VJūbHmV$2!6f 1gOGL9c[1ygZh[r3U-`ٵ00TMUbt4TbcFf rP{Bi:X` =HLd#CrB|D6bnt!gD?JCκ23-9`TX&i= v/Xe;mwBoB!3޺!@pP:ƐxQ5S'Y5h+>z2m>toqES*3GFe'>0t^ r3M`P)JQn,ʣ ~\C O6C(#tZv|"_q=rQLنI([zA`۟jBUH* %0z<)C$L}K <"yɆorNq Fgp䋖$&+tиce4 Ņ"nZ4}K]yՅƔ;/'|2źCc332OX0!{i?[arZ ti1!=(3|b#n)wt"A\8z 0-9p Ph-՚o)6 q#e@)AeY2LF&CMC6&g?aT:OH<+xCNq(ѡ&٫>+πmXRyJɈF{6?(Z^_ԜΒŦrFF#dOpfdQ:T1Z2-|AϬ{R  oCQe@͕ꝏOS5x?M& 4epyGS4qmt[|p !Xk_'h3%orSk?7Trauz@d?#흐 C"P~p7ΐ2L]YUf=q} U'ZeMTCc~9.'J2ݎ Dl#7V?BcvCL Z P:a9Smr'U]7`QQZt[aV's%*/vj d1SY^;1 CED_A' _Ds N ݋bHޒ[:2,1GΰO*j)]9S/ۓH4-m|,gh|Ts !΂5 U 7 m1dq]iB`&o 9dNDZ4*Bm-ؾ o@n#8رI 7: /Af溬Iq['Q}/fwQ&Ty=io63o2z5(/L&_CI}AN >4gy6FWj9%#Er0n-=Tq" u~2ʦƢPg.!&GDݝ)ʘ5t2Wr9&m K_dڋ:mW`7!lg7ϼSC#*~׉֮rJP0lxc:"m>^E ʱ@k$Ky B+(-n>+q0V=}C[9>Ңfݱ`RT[0$RT՛+[s|y,eqI"j W2*ٹD`||V}6/~+YQ;;`5d׃S9 2hX>X[4[z$.4S:j0hEg̖c?;7R*G?Po!Z#LV#+pE=ъ#}gyR}ʉt&Ҷ=#us/5oNK~x $U 0D//imaT)6zN^u~3#S}&aJODdZ8ca8T yt'Ǧ, PJ+Cy>_lZ%A*9Sm~) tچ?\MYム^:׊}%=4]>㿲"P#T~jE˧~Rׂ(L9RQb9~չa6=V3;{VˠQ$+Ybs.{ \"Յ pb!-#lDZ6҅&ikl~C?+ +q$Az&D~8N~:M\q^Q]$}ؿ}g/P:2~TBC+i&pa꿡2+(Փ6"{w#:Dݢ n8^壁W}YᨵΛ_~HRB"ZjVBꂹGb)<D4Ȩ.o`ˆuUg:nE =O% +}#y(119.P|2@<$AYJ~qaC`TlYP*?W#FgV+RX豟_?fP܁aZZuHcE\k'wd Ě># `̭Ty7+v{nS.$XTtiL@>iaD`X<˛fEJc]YJ'Ay\^+83ho60]9(@T7TIw ;ލ߼`5Yy+Fkf`&yA+*eXF_34Ia} ge!]dQ >q|wÎnLZM!zIÈI,ت9quBq,@JL-[" wH7Jk`7;'hWgO@Ў h%+L ("f 2;k%ѪHYo{[Fz["dw?iȆ. ~*B%6R8,o񖠵˒qҤ.J'mP* l/XFAz`u:Zf0jRʓG =йl:t_OB'wl2EV`,W^VE'#7vԄ:bRnL0KQK;H~_K9 ~h7SckyM1w6MzY{q1XP<3U:`.bq8<#If5Nn5>l +wd4| c*mTrM[@"фJ(W4b.''qO,q(žeBT=Q<<.8޾O= PϹ,==:[}cVHIVnNvnlħmYNb*edH;rIK%WL90 UaZ/+Iϡd|uw*QT!Bi)j)"Vϭ%nzlP}t` =\ fFIYak pE¼0A|aL(4&]cϰ^봒ȹDͣP~P m1墴@YicHLE+@&`кl>tKq|S*EųʴfuoM K|/X=,JdQt/pjme@e.sзRfҤH wIGTȅ7$i#JO;<~үPӲf 6ʇqhq+h\@^fp~ p$H|86ArM5(bADt{,8 ̈.@ %mH1r$uH;x9 ͰW-IC9M4eI6.D)[,;d*&LY6 Opw#rhc ~G[lfjT}<ιoAq0w82@e]AE-aC L>JĚ B7b2OoEv JцZ1ZuhܝO7".չ7*f֒Fg|!dUn'?8?4pUvRt!M7'@%[ϞJTA:w wzϼYP\8CPjpwI uT7:B 4k%Bi7BVد~vTd{ahP"{Nr(fyv\= cPżGϒ˄>#&b]XUZOj* qn y>WUpV,/qR,zfҒL$;|{,V^.rQ(*wsi~H+[$'E~\μڌOWuҮCi c:mڬ'B6ǯB(P\yΏ'@d$P6{~es 9V9?S ޜq"Iݶ{|!/Yi^:hDk\x)T LR3#5QA2pES Êfq"X_lfBma YZ_^;QTU"q025@n(w<cp ϾG,ߔU<0bmDs>*[Rq>QW}$iC)DvN_@<$YMeiJZun)r Ul:lN`˲_!.>E%R7Rӡ))1DNg3gD)@Es9(ٍ1H/.`?6=V&kZtsduJ[*2ҏ:a `Z߸ (kc}`+.86>:ԧrq A2tOB0-I 5,:%, \ϒ^|!:=*o{7S ɀ7 ?̓7W1c6d".%P sKDO4GIga $D/e|wz(,a50<3[F; dv-ɬ;7 [ʶ(Fr:sEkn\Ni!G7mnϧz \쩠/mut"Ol1,taԵ|d2ԸO>$Svi %/ShRy³LC|Kf dx7dU^*<H)cSGf\>*2J㩟?ĕy^UR|&ũ~َMQBxޅC ˖3)*+ v$SYugvʦ/:yDR}7.H[y k22I*uqEk}{wz v{d+H~7ki%*p}UcJqYp y+D,dt qP;w6wkK,5j[sq*ǐ >ҵ|j^7:喖=v KM)HmH|ҴXaR«Ç(?y;r6{1h==Z燐c?$sI/?4!zPr6B-!x[7=` g3>:Ks:V07`Vww##}#d]:jwR-04SX/.L\ls_~s/V707^9˫5𮨺LUA!GQ>n;r kDK?jHHDZh2_xM\?xojT?s#J>Rť.-t`XA/8m7N/cPkna8_4LLVhbǜ=g_>YxP\qvO"_BL*Y}z2Ҟ}LF-";m֝oL)q1Eu +1t=h1,|-l$)ݑZ(OA[R+kKꦮW2$71U$ט] T?a(kG͠ flCp6O*p P\ĝPs^J`>wMS \jLOv#6'$**/8S"bCt3g{)p0JXPsyPɻ͚0jIfT/1bK{D_usmRFŌ.fpjٜ)L-n 4OcWwaps>)3T]j8O"]H8״ MQ蠽 7j "nq)!n!FA厅> )TAƜ8#R9K X3uG. c"pJF m=ayj2 Y~hq/`u"ZbdJ &GCz=?8Bhk7~jv;WJ! 7!N $8!dI6~ uܱ'I74 EU1LV_;~vGkJoxIT_{J%u n_kl?R_OXlm]o-x*mɗO+7EV\[I`3V2_-m҇&,=HA.͸Y:*s{/%Zvh"a,ޘ4ڑlelMkVM%Tp_)~_6vb$:4ˆo6mf|]%X&RG7+HH_3Rv#[=([]|9^$=Nv7DJ޺/TZX^+&9SGW QA6Q;r!qFmlﵺ LG+b;i1OM-f8#Eγ8z>_W.DEy _ỷG,o̎&/n4P݈HVO]yaT<_5 vmaeuŪzZބi3߰}pCܨip_%SJY{[j@UgxŤ0rbM VN-5jT7_Èbpl-GfF B7hC#)įRޕ6'()V臑̤Ztt>m8s2Ѥo:DHƕ'Mk*d=H OďMo)|f6*^"*Y6$`Ү^5IZ6~E %J y'H(Vstv|%#XUrFJґs!IĦO`=KzO8B91iGieOxX"CQ!igv/GנBr*J ~Gy(chpyqkrѱu,vQu8j4Sq`hc//!1baS."k44ݙ1\_&qG ͗љ!NRv:j!/B3*}7^R2p*dOՠ1 n*fMePCb(ifI6nYu kAIBec>#LTݶ" 5qzw,{Q(YzJ}y޶` BINg%6m'esznP}rC ݲ;[I`_^6eaTsfst^^KC&o UЃdžbSjNܼek 9'BL\1""-n6(!Dq~u ulذ T\^p/ڶ۰YrSZZrqTΦ){WX1g"ét~`AÆױ *i@=0/!&0`G2ABf]|4?{rH= -wSߺ#tA*z!haґ|PV<=`+ǝ}iG Չ4xx) &K.wm ¤^| WD%!sD7S0#Qnt Kp_Q}rtl$;[ A@ֵvc)@75MXmTu+\44ddKikqD9˟Hz0L0ϩ ap49A#@Y&]ж,V~= LR ;@L$Rxw)d~i]tYx"4TeCE#4sX,WX f5١M0} Barp<sXFhx_}5u{p3,,!u(`n+<jxؚGɜ$o$͋L+}+DV5'x6Ep>¹둉4ը up ' W/"; V-I\޿̱!vN$.2iK8,sܳ{h'ÙP 3-a@A @=Uqmaj!jIQb샇`h[Ct28 ;AצgV0`&Y]sUk/ͭ lq_%WŃ9Z.BDZ7VN_~HauJDN(׎Z#R\u0%a:ic͢P&JV?11g-c8 6&Մdžϼ8>' 0O Б[_Uq<ժ2o7)sozF)GQP9 F8SLycbwm6@-7b:a]sbdC&!L ߹:J6Gc,JLT9Ab)Y )\(e~#GQ0.Gp> @A0u}Ut=˯O΁KW?xVvfl,!̌>l)F#KB"hƒ_3zk}yޣFpD}VΝUJ݂p [ n=/sm^ ?&32[9̫Ueeブh~oJ&o&^B\/i" ;ZI$g̾(HlO4Ns>0 L:{3Ѝ~})`m=1.ES (gw[5!]3-մb-E%OK%C'Th\o&sLBzJ 78l9FT r ukHcPF{*dU:.V7+)8-Ē$fYvE IHD,OptZ8.mi4ּ3;jLSA8n/w]ly>jw8-srZK+؆:na 9- puXv]Ox⑂Z]8_B'0ɱP5Rsz+dP.*l Ʈ|)pGY9wRmc'Mhg~)Y R8%Ŏi!›u'&!\XD;wk' }z{եX#H`{y3dSS+emw/xN /KjDLis.$2g:Sf!AHz"&v@ؒ 2/>L+QQ? +uܔ[xK]63/*"3.E`@ryƣA,$[6jeP};Lf IbY!p%-w{7a 7(fH+d^t(jL,~3|5#S֮ +jig^ڄc 0phJ@ ߥSQP_ur$oAVU%/zI2}g*DTH¤€ai\Ed &-tNj~ɖY3֕g`qx)1Ds[zKAr8z"Jw]3Tgi@^xզI1ݑ KwnnÏ%}^ S0< oGԐ]k럥Ycw ̵zC>tyn- i^ *d*H!"apgzC=tsŷʈ"٠ךDMׇyyyS3_#1Qh9R`NH~ @=Lvm#|D3i>*ݣ ;@6ؖ?8C71"j/%boa<5lC/5*A6FN]58yLրBRTtÂ[B=hP<$G*3=8 uAЊW_tZ o\1H_8{Y)PfTXXq=n$pk_iBڋQ<s:24I>ABwF̎ ʮdTrx훗8Aio_8gUtX7qdhjDH[CX"=dTr)B⯉.\`"&+B]w!j+q$6vS-]t7]2>G#ұȻap*8;^2DegMAoX]W]dŗۧFl#$‣SƮk-WGqiY0,j8~cWaNӶՉ&R+h773-'QPaVj#乁ʂ9Yԟt,q-!A|UVJv:jH۶?NDQwL"@W=4Rrd-Q;|==`ZUjhl 6g)/t9:"ZZGZyTS*:rSペw"MY? tUt s֜dl~}KT~-0 sD;_eA-)۶:s{ '{\g[p" Go|!P'0aHH,ܹP.a+YJ'pYf> s +:U?) J6vO3>y%2>W9I(Sgǩ^Yw0oj RO$!@uVّْ] #k @x "n!| ,*㦑zڍ"$k,b<}m&HN6qXiGJ܀Sȵ<\i<=( NlaޏhJ_St"bxR‡OX?blR_Bn 9^e2Fca rxsA:֏*w 5 Ic Ѧa%uIW|ESp0 EGqOM^7>i٥ T ȱ ',5 ,EY۝zv<_N]HЙ)]śd*Wm~dEMƜTH ɲ=q[Ai^>#+#8 ,RՂ(&nOWҭfX[ٞ'u9y#uJg"L_a\(a_yV8Pn|-2~eΦA:cʱI[_"N4Bp /eeLC[+oa]i;J.77!N3Lcȥ^QOxVnQ@K\82qrfR8CwOxbi!\)(Ąns^*1 WB4Y*&26!ajGe]9 @yax9:cmdMm` aK˲*Y0 Ѓ(ts,tY#P}bK&3w,&[lnr>W8Ra.&g(ahÕ6w Ow>2xUOҀOɤ뉑⏊+RѸ-f\^?~(>8AN"o|60ܼr ɼׄİ5w\` lfKg ;ee_v=JKn+<)'db< @LQ`Q: cf,讟fB4Z]*,J42:)Д FؖI%{r<,2ifFM$JY걉XRg7vy?䇍!ᚻ4OiIrFMO=A:S=؆{'v#I OtJd|܉Htm6;,uWvސVdz)/CyK H]ٺ꓂Oش)r(ܔhFyx;e?<$՝B|T=ce [0.& HYq= ȝMJGl & ձ sC+!"ޡ݂*3TJ%vE 9r@9bK!NPuˑ^ V=0W]|.}+\r!wHz߮Ac$A4zCխtG m̾%6֕@ 5ت|:AcKѤaUxyn+1GӬ/^mQHnaa-i,G.-9HD'mViCprH@`7R%'MMՐj`R9X:B^!JɁg!#MABGnʆȥa;CR ̧Dw )e€ImL|, RtbKXʕOM ؞naURk|;|^i]'7bL%ZdŞ9;7iS2nZVy5׬urRGiÀ5ޥ8ͤ|AnEuB*OaZm@~ap2!(P,Rh )؅VwiQ 2rξ{JCVB c;g-#6N1XmgV}%t݇yT%,1s;yn{fL4_n4:а=2:X~޹~I_'g'{epH0\S|9ytM&}~%]-"Xؗ^l45cPRtWj1|nxj=z#qd$Æ4nERxebro o sCKZl.tR .۸& cgyt%>,C洨Ity<Ev߈nPMwJ8XcW/-Pa$pN 1Oք4Oiʾfؖ&]Bo yr}|+^r #/hyFǔFYK_R$Pw=$(Lu| ؓ] ʪPXQvGɮ_-~٨f7<21`~BDDkj&Wx(D$ '%rTvc>VQE<JÒfhȻ5*Se(8M S$Жek$y KLM!I8"S!:ü 4pd;=4⬨'6svRG[(SYbUyIq}_!2LhPF=ILb3[x}tRUY])[PTܹCJ3L7OpO2VK@ )1BE'PEXƤ@WkqQfIx@=]%}J#Ҷ(1:\]V\j[|<u}( p͟yVsq HA@ F}(=]l9춂j 4|hKO(ϼJ$$om! e?7Ylle)/}Hhh|!qL5hKgD̨xs X:j glP}R+EP091r;ջg*U+8s/dbR Tbv A8(6gFFstV  r}Uveb gd @PmG:N{=' YQjmE"K)cyfAJU(H Ȝyy!p{ՅjLKCOUPwcMytEkАd,scGBR{9~yɚlM[\w-=if6Xbo;Bvfˁ4u!fU 4+@?3껋z |nVbAL{0~ a5)鼩vtwujf Id-݈IJ@i 56cb &YvbIR,'H4ކr%Ph?Ge j Ii[<{0w8}>kB 'PKZX&RaED>(8Ndkٕ,W>z}vcas@Z?ڰxaׁ#. . eĬ]s0pw(s=_U0YۺQ!y4'`J>QV-7=,KXW~~JUA_^ݸ);S(K"Jhq9 m^^z,2Of?>!SƪBAعxO15ӺE\G >^/_Bn|<;KDiTϋfmh=EID#:czH6'# ^~}ĺS ٫RNdNEk#ڑzǮHX笖>#]xgU~H~d6E'E%=9d?p5[m}8ү{%]-WTM@z]*?8N6@è 3]қ8uw?i' o%GEO~^U҉_V/+^LTWjѼ1z גx5?|bYhyM{ Pu,T d#cIO{*ʋZ/< _ P$%G5f~ŭ6a ?ݑcb*ilc h@Z=% qJ߰iӡ/Φ:PD>ZabJ,#_aEmb@ql)`{J/DNu;]u%LQE"KqlБ؆Q, uTh`x?ok&dБ/fDφk`(h f_q#J*ñ߭J p$L\X'NT$ !|pK0?zn1#1F_ۢ墨^eS d)F v.}g2;,CLD0lW}wWo$ó2QL?OkV }ozM,5{qg0o\s%wugNIo:TaS4He;Sa]k43Jl s{Jmfa[֬I g?"00;&ؓ?tSl]}(tHcNK\xƱ/F8ѣ׍7?>He,}QBQ-bsߣymjIt *_LJsFd?۞ C{TE+ՠ^JpOF k*W2|zHr4h@po/h^3IWh|35UXk2g pXǠG&|rA d:~kz]:5=:PF;!51 wRR>&dp*ƥ a>]"%S4dnNq3 ! E 3ΝZ'-ؿ~vf.ӌxvPl>S4ϵy:DQOhN Y#mQ[a.9MC:eΠzCh[M0^rKJu{[nT!.M\Tcu %J^EW`4i ~&0W8Sʠ­#8{KgAIFW+e>e X4L{apGP5rg:a IW,N]B}q[ Ih_8SPn<*z=;;"hQb 먏1RSDkgѱh{/_ἀ ."^sܑw90 L 'vT">%1yt:\Ih$( 'X lx.x t>VA["d|/W(; ^<@cS]Q}E ZYĘN_p0%8F~\s% WTP8B=i6?K9&䰘ӐK^{ nbp"V/Rwc9rԦ"{x1ֵ8(۶ȴ=DFKj_e] dKFmRU_Tq_ϻVz$VwLms%7;Q-Ծ.'<-^jiKV=ꉽ})BZc7C"jMm\r ;[}_ClFiP{ѡqAz+(_&-dOgV\Z;~>0"^\tq9Kd4d6.F :.12QaȳUnF\ޗx`s 򼰿ejUPc%PͅT|Bt(_*ql^N𮵼(A{F165s%en?f0~L,A|qgz,zWFiZ ѓ>M.Ɍ?v?n5z:m28nRe2N om,>ԉao76̡+ֽHh^ 7[DC3Ɩ(} >=6<"HF lx!JT}1-=8Bz5]j f}M+Q#sF j89Ev0/њ7?KUSP.I ,4:2$ n?K|Bg0_l$C!4XǕf; H 1T%AïL.p1p;sᥟ. (r^5~^5RAc4~?+EMLo#tV܎ڒ!u ܬPRT w!v> ;Foѓ} Hߴ$8u\.;,IQNWR-B1 2%Q! |80gd~ur65,wePv[+W&f Vǖ} ^T%ƛKɟ"+,`!x7P1|D2gS8t: SRG0Է6o[E*)SKBzuM)0N@ΓEkjO )&tXX~|rIꧫ,tN&[хBA=zgr*Fogl8pxy^'[池T*9 Դqۺa-oGy^\g3MZwbcpG ɣ~!orBl$SS%E,4 eO;~nۂfp|XMK#as/ANQQJaFwGPXZ"ã,>jw#0Q 4Ι؄W9 p/.8k/0 b"/7E'.iJcGVJ9c?)8\O PDJI6X"%huoN+ͦQ%5,62wC<T/|bp%Vi ;#s폫{t%!3ZCwcr=YUȸ5uvYpk$X*3hq1-Bm`cnϤmHa=1ECoCq=؛ ܞ@?}BK=)yh'w›wJzzKTY)p4p}$+~ 'U\͛>m'GWJ~4]oyd<yXTrĹ}+rbʏ^ %V{HsGzȉފʟ`=q19:/F-6n;AJ%4lmzfQR(l꟝KJP|%1Y^ߤ(a@WW2C&]E xvP.-˿tY<"4yk4,eBMBI-kd݃[#8RP:g'ȉc Z*N%JP?isS /Lbu?Ȑ1q4B0J+T897q^n aֿ5jv 9娢SH' OH/x^<$zJ?rqC5$vO(HOFY(tEHh@HNc솳C*m˩xos/[ZpkO- {%9,R^i'#(o(eg 55>/0ZpTN´,'Ƌ>5ÃR.S5{"<7¨LPCTF4y(:h- U *L`^c”Gi,8M~2 `ھPT4 b_Z8ZRӇqc,;)Ւz++8pJ ]XMpPoҋ <\vFҚ48ed><{2z[JJ7i\*Y'()5n҄iS^GАdOZAJ$g4jiܻi8sC‘{m 4>[""NCw}Tx#NP.uJa0TZ YG^zpQ(& \P;MpH J8MzL[2WF\zH2 y2f$CЧBrΗ=ֿ;0|҅˵En9k:]jaF̒StrҧkZdUhs\T:$~sn^df@dp\QMckdQ\[g+z;M3 WxclU k2FtaTKގoD1 .-9 L BC.E|%ejw l≯9᥉OT*&Ex2gY'Mo[$䫆q|~폱2 ^c" DOcASj;#MzohJ 48b 2*t;pT4~qد^nE3 PFUYl>?$B{'1&  0wd C_@Fodja^>A\s$Qs!psfb0 _H+bBX ::*N3b$چZs=$]3#5 a Va2r(bWzJؚOEv5":2}H꡷Y =Ce($o,[<RĨ63%rs n H$鲜=B.=wQA5ԫTU6 h1DŽFTBQ84֢]'3!Tx{]{U*#@d> n8 Lx)}g-u: ȼdf_/ 6pW|k$GzolsbxDi̥u`UVEJcmejd#oxn[DSr'adgԙVGA j|wQ JZDd0:Y GA 2H!\ڐU{k O37 m q (y5[N?Lf=?܁磮gLͅT]j9XWu&A2,:#v"P̈́qчvO51W~rf]1I+ Cnژj4\sq*{ ԨES+_SMH ..7 b.z:`W;(]6"{+EkGrFL}d}`, P?gY2ps0EMߥrWoT$ߒ+W7i3ggzƑsZ06H鞩Oc]k`[ 6s_h $#NJȪ#mB"01 (7<TȗqGBA㗏N 9cٳ=(N|}3= C s豾ǭ%B #2hUB+Km1' 3@D(Jߝz/۩BOs@N {frMf)A!l]Wyx@>!&[RcM[~}3KE6j(d\_ CL`NSiX `5<׹}[Z`$22 Gx&5HjFħ儴Uy{fg<%TN348}RM'-VPc痧JS#Nl4drj5r6 ʠ5s?ò} 8#@$n45eѭ)>mʹYP:`BXnvcXX Xtkצ4y+Z9󌄗 )†OպuX(f3E"0gZ>nk|Da[RnWe41ۇ\޶3N6l9jIhg+&Ja%S+jU¥RoEcPEpQѡ"+!sJcۗlН_Nv  Sx~ QG2INE(qaOƷmʃ0Rя(qe]3}=3x ަ{u,>jS8N]t-j`w8 f:XQ'wFqS2sTLg偃R mo&,\LBR7niC*a%!hOj.>n0#Ɖn[B6tWJط|eIiB '(Sm܂_ EiCSUT-r ˣ>[N#F}A:d_T9,`,w $9}w0R_ɡ=8aHl;?(0i]Pp7Sv7ѲiŒ (`ΖD㸹_ 㟐vkP&ѲV2Q23皥ꃲNX}P>'gˆf2Y+Ujަ Ԧ:TP{"X"|H@3A9OȠMP_@XvIYKp)q.KM-Gm' !b0;98opeJ;)Z.cA\]qg}D%Awph:kB懑ƭkj[.(sH%\l;Zm$6")<[9T2Qo\kRK5;<e{:|>jڻp㬸E呷'Q6?ZžȯLY;_֯E6w CSvjȕ,+pUD:;@3{:? Vfp@#:B"+zrjd"F.Մ;PP[tڿf˗e<ǐ[:'同YO)0^v|$c;;;L~yab][@vXYv(Bcht^VqOFPy8(>@]Tg ?\j)O&aP)f\DѦ)N `TQA` HA BgEiz|n/[)-FIޚ3 ePuR|7놄Jf%ɼnh־jK &x?01̅(^C{$Nn.њ ɣ03L/FFeRy3^";ٞu$aA/$A{UCjXD=a|\P).NK/u/=0Up4w"Ox?9H-:NWИWR7Rs#wp#A>J]=hfkR2 ,`uD"h\N[Z#( 0ghկQD QyW$۠Ltђf-n J3rE[h@nHftD|WoH P iQph-g9*Ȭ2V7ә5fT|i,@NX}l/,.c]|YxbS65LZ9x.Ԙ͸2q3$]?'4Hǖ0Q6Ԧ_9:\O>xt[rr_. : n6yP~=[DAu&DuSxMXN0yCU?US~E]Za[u][Ž4t y eA} %ӪhT+v9ac -I"%]5'U/NH([zЩ.!+e 0ӴX)@댭M̻{<#ma7ǛQ셩X^TBAU-F:?sj/t6'f$ALfЯxܛ-7},˛u@ Fz; 4RO6S*]u{8g"/k]I0_ .V-"W9ˬ?êy$ ޙ|`t~8%sLHEqyfr<ǞV 1 |ӕl&w/rة#ɲRG5i|ɬ-DΤÆ4׏T$mo9| =p^TQnQxr8qBz%I8@{z[a]/(o gOuob{~1K>;}tX6E3a}dslWbftv}:+ΔǪžwѡ;̼~9qm5Ş ga2(e(mOys}|G>véc^rSꌙ_S Ns6U}C |EQŎ4Hl[5LA]bᔐ- )9g\|X6$X*v@? paVkQɀX ΰ yK2g^/? 15{cdHzZnʅCD9f ]# eUTJXΘilW A|YKK~u@ofs{KWGJ0Z*į&Y3 Bv~PNwbsD?KĹkkk_YrVKPwGD߹⿝$q^Y=>Za:I*?5Ѿ8PP#D2uy~z,;2X%[b1GmCC1ߋ`c's's 8iD#^C0d/4>5|+|D!Q-О%iߟUE&q.X ^vc~NͿzFfWǷbv_{1+ˌ8QH|-e|?՗ g}V*sXjz;r.ǿÖV%џUMMEk5˶4}!{3|/9LPW8y%A{!{{UMo A4ѥ+^]d^:PC+7! ]^R%V\%_Q])ߜJ MUZlTD|?L嵲eXF1i:vHhrP -?9tHK2ĥaj @S0œ,$+5h&3 9O^yJ2lhC$^$}2u$RƩSɤqA7BZlkUk\ss fٚPlȊB఍К^}w?n[Ujw]ӅM_~ell5&RBn0[G {1dͱgF&gsVeBY@\E?mTcLkB2bWڎ@=>;i"]Z; r8W;7@pfYD-dBQCEE88kv|=E[[EϵVNxmyv~>xGiE 'ovp1&ݟcJE%": 9 sAPu\Vѿ_bTzl[e`juNlT( mY(t˚@г~FFqjJEvTJed=:jA_&uo1 4;f6d9cRR 7X@*@m(lB5 8\V]a +0&Izj sL;u׵tj&iw4XabYDJj4޽H!qWp&ϬF JeTi>JMt).յ[ߵͼ`m;똠Qqߥ8RW>gR}MN"\㰾 c&9h]h,xbjN44z ڑ7DIG/L l$+G}porUe_ջbw8@Q^B8@5`M u{#d|PtL]ks4vn+"F"KtƗ%m?;U] 7`}xP aXTa߶(G]؀Y+m`UC;G/> "Gl`4_L/7_שE*9[NKwbDT,\H_5n)erk0¯[r0y)^ vր&<[rt.Ͱ3Oc4{{_c /^8gTVbm|݃eOuO~h߮&ruD\h`w9{tDZX;8YRP WvK=羢|~ܱ8 zN&="4N *Z3J6/s5!8S tf8E1o|#b,#w?خG\W,VI\΂#b;"b<͘#mw`Pxp` rzZ7*?G>L=y@=?L@ z.fk-5{Sִ$AaX3{4Y0I4?tT8 A +eQ$p;N2T*,Ce㷃l  1Ɋd6W_=nYU y^?nB7\6ݛ*`8oᬀF!Wubٜ• `|GhA6Ts='2db2qLu+doUyf|CFXf;U73/~Eood/<ܮCpl.WǍ3cI.NOn$/яrx<zSxiw#uB-:b{{utjE3bdD)85֜/W~hMVL,ݗh$TCiZi{v%v9"1߬XćI K\YQs&Z↉l r;<TupDBrSA=sfTUAB4es’˜HR3~u,s_+<⬬11R& 6Yڭ&.te\/ /2cN# Au}1LK.N :z^zX[G0P=sCi,Pj\kBW{tO(`>- b,~A2`+F{W\NڞG)z)(7J_".tP#[ӵ%v͢ųE׼ `/a6IE+Bv ֳYR`6Ug+iSpT8PrĦOѬ^[϶{^_Nnݟ_xu"R̕gB~C` *f*F0 V1M˔h_%Qޠy2͢31a`Mݍ?z\˻fYE(1H=Gx}wRh4tmjj8Qg9qoI{1\%6 _U@vTMKyɸRuQT˃C&b$hFpڈBl_A"9yC]~?M8HHy[.2FuAOws6,z3JQ*XPdj C29X\,:떊^'XCC!IS =T)K(;H]+\F/q7=uK.{@\:;TN;* @*]5`^|o[؛hw |7Ncz9%S`f $ x3Ī֥}ϵu#g9%+ߓߜwg(}af 0%Qw@9C7o3 244ݩʐGMY+\i^]F?QsGHTvVBT >7ϧ lh;զߓ'AJ:GM,5GQS 2a(<+J7y L>:B'0-6V*ڙI蒣 }&J J0f)=R@NˁmԛJ{ʨ癃Je1p;8R9 @1gtS4DbOn%AzJJqb{[EN]", oCn[R~ W n>BW r(.c?:ZwQo6!< q7]lfUUWB3Z|WjLg'3 ےf Ig׳wGu'ҁN9T9G33f\|[ʓz|Op+w qzI\bI3Bg4p5PLUobDךO~;ug4v'}D Xl C)"~9-|#0SS?~]+\T5][@#Nvauh.N }Q^vgqPdg4^I[8H|(=LcLn9ZMy15εyWaITN՞3%cB)}3SOQMR3\ʱT"LS:uѸi߬04zPԱ|qt:YDz!Φ2pi[Js좌 |pi<]t>˱ypvNKGlcHٟM1:o+]=Z$3 k'AJ~hvz1uYEi>l24D#d4{d u>Ha,5h\!A5F򤗥z=/FAk̗yMa`KvpbNUHGd_C? `X X#EE e c{xE@#FŨF*^tX;Ŋ{`aRAF-PH=Η9{,57t\َx8QIGvcҊY tL9TЋ5~IS檍 *^02tHT*yd I[}8S\ "u:v_07S芗dȇ=QJwՂYMJSX8,I4ZKf9-)t!I,L'+Q9/'ՌEҋ`ҚTr*mW<#wڅhYNLKuDtKrN!7* BǕY ۑZϒ4iABw^T)sW i0`f:jxh*ayO /=fؼy`v]ݕptkPp=]q@qhHa|t jo7ۚ5_ڝ"3kGRZRpi/4cmFrWA-AT1nr]]K/{6aj.Aʸqg#R﹣J Ag V)Ms&qߴ) AZp|/CV‚-4?&jȬ{SyAkw?G/5VU\ ޖ(6q8q'f3#]cT'_ 4jN RNQݛ.,Ckt(H,@pV!=$?l~G0$lM`Gff[ hezֶǘR3nz5JB]FN1r鎪B<4pt+Ơ}N΂ΙsXh+6GL}tKԉ РQDǜ>7&S\͓RiXeݿ[DXߌѷi*,3_au2 !IHEBrnuv퍮'Sw >0X+$*cw}FY}( 6ΰq1t" @&[=pDeOOMtjbN2{a:dn-`,K)ƕw(iN{$wk֮Luq~Ȧ%F=R̷yl"?1}lFVq[U*>,CR,CR̔c`dѐWx+%+N4 F` `IU qI[}.z?Vxac+'wZ_nwnܰ>t'jα !tR}w {XKfI*d# )4a,oTM"a!/1lx&{7ˇNi>-]cǸe&. >`_qyR'H6mu&RwسA{^c3-p^V j P8jh mB[Pڝ(y6x([\Jer`VY21JajΫ(CD/RIn,x",pxDm'f!LXp31(\^>:4#"ߌ2 *Bt' t.9W(KZ&<2_sVeco;e(@FHX&xp`$ˡڕkWmXz>n׋a0Łnը'9Z@v )K3 ?K'.mR"oR $|cG\`_(ܮV}4UFK AjR\ͤ"i!9hr~VXI ӑI Bx&?r͐5S Y9YB}!,CCuyJ>JW(6Ŧ3gmgx {g} LTKq;󹁦<ܚ,F؃ʗOT3{j3.4Bl ! R40Hb7=ˌB̿yW0>8&pwA^OXMͱ=:EޘlNµ^ϗmVDV(  ضڏ|MB`XxyvRu-.@L_4J<&eYO}] rEY1C?a%+rkUMAgp>Bb4V[ ӑDyrL;VCӂs $.4&`"g&pM[UA!AaP e!U{@YAF=h!/oC~C(&Mۏqe㴩!1zT=GC~r,kn܏A42:xMPDP%իL+p}LKso hei\ve"ѕYe.5Δ*PU."Aɟ'k9d ҃8$IF 2IbF{3i3rˡg3euZUlV@$f-m2f*v%T"9TUv?{x5:}f7zܹ=npm&{fkH8I6a{*)J8 Acz)!N RyT t?0IԐf(!ϕ}@[ފ?R^F5Z'{njEdB߰mFCFR]Lak^,'S!bV^^$>mJzKؕw.`g9vuD~d1XῒW`J az/>u3+1 pT+X}4]L9. J{\P؎w"!1j֜.{7(e '^yB<8YF2 n &=HLGrxTj5 lC Q+C@(X_0wKAZ}ӏspBˡ6 >+3E7дTՎTB2" İ.[R|WkՁgb"B4Kڕ/v; 2>-JD >/ZpF_wYŭXO['K~"*cbr>AB8{A!_tz'.misG~(">/ݟ':[WX2WM]["څس*]h]s2t"%.%7>JFKib64UJraG?GFr>eUP|- #4HEs^4D2dM P(1mbޣc+X["mOx2ҳJ Gtc,Gxy% NsǗ o{?;1!܈-u6p8L{_a3߁a(9CrKPId, x șT 2O>@'>L|n :SԹ|fan[Gbj x9pNl[=/Q:\^Soի+:,=/M yC[`[JII+֋eN},6u%ȱ匤ܲrk`xVgJL^1Nŝ#Y1 O,^{snNsS4]kthd*)[W];Q.D֬1@@?R *a4V gp߉,t 4-hNL:!jZю0yKq % -'y!mtszV[BW;ǣ_ !yȗQf տmv Ά|ל|UBf eAy$_m(-,_Kj].6ӤvCkCby~P'-9I\աn6E)g+*ϱli϶$cy|A'ʚlVOFFQGߤfj0WGI m^l*kݯ*Zjo\vlv/ɋ&8 'hR$b2+}.. R?;$.6k&bf) nF /Q~O}1u]|^~ ʂELB 3թ>|=lZMiqގ`8ni"A9m,O)?1{cV!{U]<]#t(x*cJG[aZywfAN$ 98"k7 }®cue"S1FN=ٱkH _;plw2 V4S;4R:1 F؛ZHYL%#[Xj-)FrpFlBMk U)jKhRy0Y`9B7#q^rF(b W4IV]lbZEۛ{YC 0XS-\U롳>rJ{l.%@[0n1=LDavˮNR1XE(p=KtXË|!@ݾKlmam1~9@bG̱]hYQ"C󛳯Y`uG~;$ T¢3uVf&B7MϷBB-++{'9f|bx6ӴvSiCrt@GBtg1%RRG`/uvܝt j=F=k>ԭƣ­lv)mf64S9yqMx25WcA?lDZ"zk ٨26MV H0x>ܘJۏHMRnUkH\hG P~] G5iΪWpKG)#é/~ # ]kX >Rl 4MW\1ےl(v+G~g <.qj䢶"Gce`' _(Y(EpBRdqbMD5:gZo$0 F0eG.Udr+ם3玹-1 ("{кĪ2H-*e:ڤV726`-ΰojNRUk=yn aMnO Q@CFxo :(Z $=ٹƊuE;m{"V`߫H_>I87$Qy*6!do{R&c%]#LR0]9{WXͲݖ>!Uc ^Ec!9jz'@>9@ <"90h(2>Y)xd5PzXkx";4}߶6) vum.qc@E]8XHq;#F A>,(*>ffotr5 k͢r=INrǰ7GVz.]*mn"LbT@(a#cȆCT06  %_vWJJmi"U:oւV8׏8 PcHjpx9o,UU4! `F1 |"57>EIS#Iq/1I8rxV JTPC%لyr6r:Ne [9SQzȌ Cpduh}O\l-`xz=1t w8NPtf6ANl9i"Lj[wϫQt,e0m(" zf e}8_6?Έw# zse%W>#қoyeJlzdnnVO`_iF}8Zjo-C3s M}y*Per#zI9uՄ#^/6UԢF܃R|W2BTUۙĉ/*JB~ppNʹ[p9731|sM) ^:q#/!R͐OF@<Ǡ=<Òwji6k?BX$_o*1U*;?z /3X[52C$V/rfү{_ahHN`@tS(??/$ {CR_ꅥk9,YɟӰ09~x}hsDI4$flZ`=L#zi޲Kv,dh{ɩ #(#-aN`ysEp`Nyz _x%E!'Hחod:,wa &p iߊ29з%g~I`SOqRJAoon;rF33]~9q#Z%]x|tBVp 1}2하0myz>"׍dCpnngRD-~:K;/ίZ~pqϨEq2R4QxӽrqZ@!]ptS^f4w5S!C)AL?lOA.cOk" / X.S*)?#&n(ر D/ H7 YZ