dpdk-thunderx-doc-19.11.10-150500.5.3.1<>,`ep9|X O5 d# ]NO 댄6 ?UQ 4 <Gbx 3sbl8Lv[.U'@]']w>Q.0rA('Oɸ:[dJ1QO7\;e>+L4%W쟧's~Aǵ`F>fbq\{J|ujkÔ,dL1tP;IKF&- ҧ6\`k#7UsVä><i\?iLd * b" 8IY_h % 1 J4 Ӆ ٘1..FGG,GGGG(G8GN9I$N:NVNGD,H\pItXzYz\z]4^J"bJcKxdLeLfLlL uL vddhiiiHCdpdk-thunderx-doc19.11.10150500.5.3.1Data Plane Development Kit API documentation (thunderx)API programming documentation for the Data Plane Development Kit.eh02-armsrv3Y SUSE Linux Enterprise 15SUSE LLC BSD-3-Clause AND GPL-2.0-only AND LGPL-2.1-onlyhttps://www.suse.com/System/Librarieshttp://dpdk.orglinuxnoarchFgnI&Y_@$ +2@222H 'zCN-9@$l$ U ;lc ( d  $S:l p9m@ $ Mdm`Ne@u.PW+ a(rlYVĐ@\U-b-O*,+Z"@'kehFjYb9>UT)".mv$hKDGZךu O0|*WnB2_EagX0(p0[L:r f/mxu[J@7o3j}>_MIYXy eaCBS~l{7JkV[@y!E8(1fKB= au-Mu$^2$bT]ZhU 2]fqQQEe(B?o&l`s**Q)H~Wf(c B2Ew]/ePEu'>%_r**QK)FHP}%S' ma  y ' 0  \#!i r s YH$; } ^ kqy y H [ ^  c   %3 a m&9 Z d ` _U f y zBk -F _b{ p-A)"Q7:RVŻ0rl0]9F+4RFXnE?BS>`) &Q| +%:[1I\g+-sU[4V-V\M,-r˿*^]2iMUeCJx"!/t!NCAc/]'._B,D'H%cGu.}%O ƹ.NDr^\&%YmZ5G]H=%.bq>;F ZC{kE}ZUV=-H%5KAqbVZ+%R?dw7,8I^+Ec1]`B_)Ծ4&^c=F(p]p^d!DE4$Lk6=:+ "^Gi!C_"[@7}O"i>b.+?M/P3)p_`>j9P1@!zV)  `?LH0wUwX![ _`^gl8_) ӾJ2_Faa3\v8k!l)g<)3[8_=K92M((JDR;XK5{I4D;?1= C 'Qu2c?tSEd`&W(!B2D(jtuV&+siH J(c@8T( g:N  ;dtadY:2 S6_iObirx;o&)L,x9BD ?Q8 ^3>lZ \dm\RTu'igvtF  ;W[F9 +2ViOKD: &  ( !7 ^.aZ b%y=%y(+1$q$g##s.0#sa9]7CO4FH%$-L"-SIDH,!|_@ -|, o NB /]AB&&X$ no@R4& 0 <(6  d 8299]!m 3 U*:('Y`rIC $} }#+ Z8 ?,06tT${"^"u -#Bq$N':K !56H}R@C>1<A;YG@@19V_0 =Uz1 H"W\m#6v03 (1$$J(4%y|+$7\f2"! 0 %/7[S$ l%`5%(  %9##grM#b K,k+"@9',?%rN, 8 S8*V;E!D&)Xq 3Hii'HO BE,v{2"=.N< j r!DceD=/P E #H,"a%g{";%l+"& "! # +'l"b?'~c,M] =) %UA%!4$ }3!$['X@{z0!E^D0"!vY)5O>`67S&0'fx Ix(,!6?{ i+")x'"i"D"g&" !?1N }"%e!0#/ {3$3{  :5&U&-keliY+xS\$!< z`O+.SJ;.UM$=!w!AA큤A큤A큤eea5a5eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643592987e8510228d546540b84a22444bde98e48d03078d3b2eefcd889bec5ce8cb8ca71091e6829e30b9e17b26d1f4b443c029392b8b9f87f820e69ff4f5f43ba9e7ed0ef70f99bb7f763a48ddd95d5990e103bb145eedfd0a76d19c122374be2782b30d237bdbeddfde4aed01f007264cc116b2d4be2f398a7cb74ec7a5bc58b90b09c9f342958f3d4e5cd8943e6d7295a15bfe70696f89ca3d0de7fba35bc1ac98c02adc57337f58c40aae15bbac05a3ccb364e5adb1d610a16452e92f178306db049b0394412ac4d25c9aa1899bde4eeb26ab28d3e8f668bc199e28536de5902a70b0ee56d1564797b9a278fcf399605f4703fd1b9d03cca511eb47a881ea5c4fa25b640a5834d1cf3c02d5de17af236cf7b77f503b74f8615a75187142f7256646845945623c913ceddd9644306919dc951e43107c42d73fcbc95175f84364c7f2fd66a1ebb9f376d410cd8f7b7262ec0e0cefcbcae637829a9c84c1c09ae65bc30a1c80f0a8426d5d67344ac5a9f315a8a2503b85411bc15bbc35cd4117b3c2121704eb1d112be3e91927f9fe49566ef4c7561ea593506453c33f9950b52da8b8c508fd2706d345d46b1aef26f6b4a51a8a8ebcd93e5ca6412a38f3664ccd8b1a761d239626847b8fc598d2bcc72a3f8c77738c7ac136700ba4381c035aa46016f2c30cfe926e4f81fede9a50fe019aceace08aee722fd6b4410831c67da5905a3c4ddaf39cb407ab579140e121d9950e95f593815eaeb4d224d455536ed2b85807f7920ae6d2ff36464c4472b88f62078fedf1f6f0ee986b505318fbaeeea6a3333aebc1da7c42c47ddb50f4e69dcbd557b5a490fc2ea9418a378fcb64fd04b3314b18816b1452812028129a4e96e1d9ff7160cfc3a18aa948a65e643a44ae2d3340ebb77dc5f773998ccf925378cf39587892b37e1a3f476dc00039e1fc466243ab23b5f95c734abbd0dcb2a44196083811698dab8b6589599710cd2deb2e20de883a8bdba764f9c4ce5e419f682580626f8226007aaf8b983664f96e749279a0293e59a20f93fa7bb696f6da5f9d61c5eac592eb432254260a35d06fd9b1222a9d1b39c31c736183956790cfb76456e5e4bcacf73233e2579367f4d9d959513ba15687be9b0df7a7cce20d7a0b6def7eadbc55f8e9043a3e49edb808712b8ebf5525c1fcd7de192ad82bda2f17a4cfda93fcd393d79ec8fa0d4c7c95a21b6daf6e83d40a1010a205dea708124fafcc35be50e2250c22a3435e15fb2a6087267a14a92361d81034630208f9e8426c35d792f8ac45aee7f02214051c152cb7e4106f5495bcc008bc4eeffd874b18ae079d3991435ef72f48b2cfefba4077b4ceef739327811032fc07a555ca6fe6f337dfaea1fd3e20cd1d7b5c4b368e5895eeb7715c7567a8e3e89db3e43279c49c6b3aeda6ace97140a37cc86a7c16afa9e2b51508717009fea2979de6b1d28c7913b548e33b980ae91aaa9dce78bddd58eaa6a8dc9c7f8613c3110feda65a37f6c40b0e7f2746f4387c915dc657117d830cc2859ddd8f0ff9dd759cf5ed0397d7e1dc55d200368243a1219fed446773ed3caa1d562ac69aa47a10a7f722f6037f46ed3bfa9019b3452df57fcd0256c7fbcc79063f9b7e60e7ce9c30f766940c0b2b404dc731f9139180db54607c4faef2630097e387fae654a5159a96b416e1f3b7c2801228ace5e972f8228012694490a73d9d7697bc7c216259b13174ceac7bdb9be768c907d9fbfb1bd92b3f490ac09d000017cbc4c0429917b4b3580117c360c5dcfcf2880b1c2db0aa6cb7bc54a18f9c586fac7fb357764a5a9dc25dbf76c84267c4fba1c27066a116806dcd7903cf72c9a1388c09f3017955c8db4689f12d3c1a30ec7b9c8f92085dcc6519139f3cccf0ccb4f848f001065f2af0bba94265944d9ff26246da99bf2b32669bd4030750e9e38d443b17a247f605e9c49c9bfec1a4ce7c6e629e67078dff1c09a72e48d28004ba01eaa654485de1d6ec440b87b43fc93bfb9da06654dc7c5e4c01aa793ed60b4ab49779a50684cc02a27a93f7f7682f449da184d25dc214830547e7768f186ca8283998528d0fb6f50eb158e78c25f6e0c310ca3c52365152051792cd7aaa921f349d43442fffe35dac6a5115ffeada0076af712e5582869c4e4130c23d2b22590b2fbf5d36ce7641fbf1cc5103148a8d089d12d41df59de9a481309ac2a0c9dfd419e0f98d8aa0143b8863a1df58dc1b752458bad97009841b49ab4d39bf76c7851fee9ce7835bea0a1079a756bedc922bcb9725dd3a199ffad092a377e518c35ced61627a59c0a1a0e3f443cc27caff64fb45b80cb5a06c6791d9d7b4ac266937e1c7203986f0fd0b4231fad72ac56404622afac0b33418b0575b41898e73d48c533864ea775d2d531e1d17fd5abc39a76aa20b8f5ec26c4b6bbf61c648428b424472a0cd0ae0b7cff883bca0fdc4c45c5f17a1e34391499addbd091178efe5381f58f3642f76be154e9b07d0950450a7ca5c2b8ea2939df526e65c297c45fcd38ae1f9503b84af1f0a2808f58dd6c7b3431dd9ea67383d3faa110b351dfd1fe44929dbeab17450797593acde93c21012613a01aac304436af1f4b011fee8a414a44ae9b5f27c1d88b626c46de588f35d57e54c45eb8a0bff63464456833610e1cf9d103f18bcf49f5631b05062cf24a372654483dac5118758070ef2d78ad4152f1b3a490ebd713d03eed50bd4c36d3cbabac3350060c2c60f9bc29a8c1093dd14d2bfe599a9e12a6ce06a1a4c925e5e27072ad609def694aa39d1a2a97a328a356e8caffbdbb11b4a083f2f8879f4e05ba47fa416a162005f199a27751dd9b9ea634a06511ae64ac85f4f3dfd18df7e75bb01de68e42f3be82f8f5f351ebda77bd8c313e2a7a62abd4a7af3a3d73d15aa5a375daaa5ef7d4f2ad086d81f48dad3f1982c0fbf12932c43ab30ec03ff8e15ff274c8a364533068452ce2f6b58848e35589a6fa451d61e84ab64257e63f929884b5e94d3bef7167b59ff87def47d130feb79ed3ab9b6feabb11e902d8174da9eb785c786a19ada31470ff8bbe8569196e0952642535d29b53a0202cd4eaee3a5e0817941785e13e90f8122ecc90bf5e0b91db30aa822d273dd9962c20667da03bd3c6e2c2e42dbe89ee1362e484c06cf4568810bec49919023c9142bcfd9e8416a7452297085453e5f5b5f141aa9cdbd2eef545e3720749e8bbf8176107d7e7cd37010e21bb44c8491eda1b96c8d469ce8d26a018c2de4c5734e569ffc59a3e500b6f140124ed7d294e99acd9453312c1626f3b53f4810488559ebd6e886395be8d569e36d737b22e72dac3a576d8237298aefff3d22bb2e84636f87a3cf17b2865814c6d3ea41d738126283110556a9bfc6cb18b6ffac564f1fa2d9b50155cd8428a924dd0a3cbfd46bc61982141edb6623a6392b4dce5b3570548767b6818ec7bb43f5656cb496d923a79906585f314576a9a535eea07e6d981ee8c7d9d173d82b6c7e99b50c19063d8d4ec9229fb3edc6d8bb1f9895d4ec62a437938688ee9e31935a97d28dbb3610d079fe5e67b58381a13259da432cc63cd116ef5266948807126560e115cd4cb41607a30d7820cc20ea76b4a3b8f57d3d2b7d102b58c8e13ad95e83aa1ea92d2816c1802bd041d449f5d494216c0498129af443561957f5bff445c6bb230533c72de5c34df37037008cceff17f7669e21434befe144b87215744a36bb36973a2aae66bbb99f2b57f2ef160182825fa5305444511ca1eca4e1b0b38528bbc656bd8eabe7d3ba94dbffdf2670f5e3e10e16f058cb09cfafad55e919e431659620fef0be9368850b668362612276cef3ee7111ff6cb64b540323442cc47e8c21ad9634ced253856e5949eb696b320bb40921b369d5f3aa2a9c3fdcf47bffcf1ba92cd4063c3ccc8cb0977845819f53c71e3151bc70b4873bcab93bd5ce6c090591353bc54cf3909efd540cc90eaae6dd696aad8114671293e5fe992b53bd01ea659163d6dc57484ff8cd88220e938c335d6aeb780e155792ce62243c2b92409b3a189704c3291ff5e8b3155a887b40c38a831caa70295929d29422ae3fd58929fd77ceb6dca32bc72049256cce8f1670d5480b4595eef3a2b1fd0444f61165a4e7748401650e5c9bb3c1b491b14718ec751d67ab0717289490da5c6927c56c33dafdcf633b0da72f323351e7e4abacdc2eb831ad966b7e1f85ff31d1a46c66db39b9099a312c4c0069c10427339bac08ec745fb7e25744b4bdf5eb4b84bc9473acb1d4a11971ccd807337f4127c5b93a1cdc2ff7e29c8b101bd37527c4559a4c4d3fecc36706246a8ff1386686994c03b03c063cec1685bc5283034b44f9ff9068e420b17eb1ed5b45ead1389521e5d705dc2f37d6cb6ed0b15af95f3ce6496f1af6d71e1ae14f096742ac95dc66a29fc3625bea2c29de8b98ad8ca8968117c2d03227a604b8444f9a8d443dc11468b9827c95c08b85bf7cb7fe58a0da855b07d715ab504797781e987da900f70ea22c7fd8821d2343acc10f4514cd09bb53444db3097509d1b1a66dc4a079d167a861ef4aeaa788d799af36a24fe114900d06db6e95783f4e7dc204df6d6cd5c5d503b98ca1ac5c3e7681778cdee18ca7f008035ff6aa26c4081edc2d0768f63c74f8bacb01125195e58817c68a3d941da3661059763f312e8293e964f6c77454d3474e01c6bcbca550c92a7128f1ef6ae429868f68044898bc002e1aab80fcdae6cf019dbd599c450ee220ee3f72fa9fd0c6caf951bb4e78c2eccb242cd573ed6330ea5a5cb6c6b22dad0fae5f294c35293f55b82cf3d0f1301aee0b4ed111bc47c5ca01e6ffe2b8c5156fa3ac9a241c202d26173aff0098002980455a70f6d4bc612cfa3c2e2f7fcb46a2154efe5258b71a937a18c50517d1e39b5cc023d22d8f9683a716887fcaa18f9e052b62d746a56f7d384ad822a2a3c0f5017c73b4719a4f6269b36e11934fe75103225ef326838a65dd50d0fe4917543e74d51f7e58003cbbcc844123cb9bc02ef6fe38fa401c67549101edd1d1ea11a0acfcb7e942d272c6944a19e3d9fcbab523aedb79fb7705ecf6f8f4440ad0389cb2e6b479dfa14890c46448de2259a9fd0b6af6a510177b8c4a5da1a53b2a9cefd976b80e9916fb3cd115aa015baeeedab496e376b7054a2bed95c9221791c452e1b0fd7d2ef74f1e9cfa8727b7e261ce122b94b8e515b966701a1f01e543d2ebe2c121a2483d095eead3c012d6e9fdf07835a05aee7c844534354d6f98b3eb7dcb48f5821725edde50889083529c946b1285e4d941ff8a5410c4ff88d6481293fae43902fca16325114d2997432c5884310cefd83bef83c6186b4d55e134ec19d1906066ab7d17a76bdb5135ea740846b62715243f4ed80005b6269044888acbde8f2605b80ce8012e414714443b0ae5f1250c89d2930b24abb4eb06f8076ecd39eaa1bb6baf4c5bd0ce22fa22e45673561699d8f2dea3773411f34cfdb7fb5485879462ab4621fc843e3529caa51a4d4aab09258197639ea3386921aad1dad8b89bda9f8c931db4fbe34511df5afcca75a843cf81390cff276e909da1d5a41b031824889f9171df703f217881ed173211e733ddcb144bf42dc09b113e348fdc5e0b0cb2c0d17a1cf0314c9039d7a359915d21b983c151c4e039b0ab40cbc96457bbb22c8783b19a033efc0a4e9a9b4a041856d3dc6f212d0fab52d89b6dc96eeb23e71475f911c00d05462d3df1333f3a40016ecafd86aac5d4c12cadea4b8d5ccbec709952d93d668bc045b0fad800af6503eba0ff9accf156f696ab0ebe24974ab9319c42007dc41b451e05756d13eccad21538d8c9e56b5a08771098f4265b39229dd9aff3cfb1d3e501b13d8e1000b7c4813d9c9fafd2e7e6bba003db2b7d628229f173f9f4396b06b817cca4cbc84be472dcc58bf51661ab09c4144648a341176e6784cfb0f9461a6dd8e36db29dd8816844e3bb3cf49293fa63c176049849a465ac0b55547a3b7a0208be17a3c9b12a52305e7c1d4d4e9e4d2ec70f0b22fdf15347101af4c836ac7620a742a41e8d714727be65eef227c70a065adf0e8bc39a0687d49f8b47709e231e8ee3abf66722fbc5b062c8d3f5244442795c8267d5489715da893ee36fb488e450a6c411a5ca50d16de8ed1294782369f142c253d0546bc00464697f8cd10a3dc709822501cf2938a5444c66c70ffca1d5a6e5e4755d060965dd1937f004a11c28138be9d872f79f56ed8c393969dc689fbd2c3d3e7f5a0796db88b2d1ae3b2e2eae603db8e22ee5f62bc3d8416e144362e6b956a78a2de9e3c4183708e2f536a4a1d2309b48853138e70eae90b3034624a654899e436dff30b4c269e0dd880ca8ead967fd384f70133fe8a5db24df65f95858193ef8e99ba074bd7671fa899e9168199f3584050cd58059bc6c289e4a5755a812e29d5d1a088747e86c6c78347a4cfe036bff249e1b8b4e0762c9dd4a1286b8ed26d4bb0e76de6b3c079b7e5856af687b7430b9c00df6a86dab4b1d68839ee7fa6b373cfffb87f507de6bbda4398ef5ad88c23674a37fe72c19d38328a70e3209e05c381a3a6803699c2d2e1a5cd90a52a7a6c4b790f99ccac6f46a725ae21e248aaad5d058610debdb84082b11a4c84d30fdea0138959d2f7806d64fed09d87d4a1f4147e784b0568f3ce443920114f44e6054a66b24a49517addce7891bc8deeb9fe572f42056a1e98c71b7f9a6f1e7e21d7fed8fccddd13585dc8c6bcd492ecca2210196b97d17c4beec3b584127cbab7587ce528da35a16ba75c51a22c2947b7e89625fc0e828325d5f03ddd88659aa10c054e2d2eb593a20b1b341c32b5505cef15609c1318dfc1236088d5f1b87dbd6d875aa64ce6d3f038609b82ba96124910a5017e20b4667ede95fdf7b84425ec22c93466e1be238745535ba0fcd23af4c307a313744814bba5fc772b099656f5a182bcf40098a6aa28829533f9e1e0e15e51fb0821db532b2df96986b8639cc757bfe1cac1a3d533252b5435aeadee86c8e9c796a05651694c188eb488bdad9fb82ec77cfcb2aeece0871c8bb226dee37abaf04b7c2d0cdca5091319e09337b87c0ce8c19388156a2c6efe5c13df16ec9b34f8152885c540705aadbf034768dbaff344dc4baa16213d507fad6c2149eb2e647f23f3f723fa776615df5b4e7e99d669c7b1089b90b03f2e15286a6a01a71e5ee659d1483ef34911e083734c95322f298884e627759fa2d3aaed71d26d4d8df2318ce9292941376c2b5796f08e651dcb3d2f5a4402a2860204773daa1e38c46ca58b3d0a809dbc781116688c66fe70b80906a26641085ae8d646e177f7054b13814436db193493cae86ccdb773c1a15adaf99f88573a2f5230afd88c5c43c6b09ce80dbfc838f1e82093a055f74af38224935ca83d25cdfba2848cc0925439c50ae8b14ddf382298f14c89e9b434955bf580d33dd78ea95fdb406bf746b734c17e44d029289854fa742a80d3d3c95905f62a72e3a6a02788da9c2644ff3553440435fc96d8e576a45b31b0e9a36a9ed82a798edbb0760d7cc5565c69d3b1a3f2c0f5ed4776eebb37b429a6ff995748f814c2be3aee37e41c28f607c8f7c7c19915b328a2ba160cd17f58835aebfd2f39e930e02c548e04590459b88e3fd69299148588ba9def752f671354bc8b045075483767deada8b76b3c493c8eef666d7b467a1e93e5553f65c077fa75b709643c17fb0a0a3fff7ba40568d76abadc4c098690e7540a8b9dcb281efe94082451012b105c101b86b043f026c18cd54a8b28863c747f67cad3c2513e2ee295294f4cee476d99de8f0d5ac34c87ee743666ea671fc72391ec4a384cc03c2ca4eec2a76c1cfd273bf05ad47f3e0575864dbe4ba5e2c1e5ea0ca14344b1fd3381dce70511bb5035a46ef89799d7514a816d4d9c29cf0fb91e9de2efe7d4f9866d48bdd36ca98ebb40081fd61b1f83d5ceb9ea130d8ab1a6eb6fbe4a09270ff29e5c56c809366ddac6476da69d9f2c42ab71e1ec230791e82b3387436fcdd5ef6361c305c15a8e85d5bb89e36cc55c6f1949667964fa96baefb40b9bd5357726c9ec9a0c91ac7d96c847498ac477ea756231bc6cf3fed21a147a09b0b0ce48b5955c797ede812258a8688891eb0cd31650913dd9e81b9dc0cce8fcf130f64d188b06f60fe142e0b37e92f6a2af9eed9a4f8feec1a1ea9797868613a05eee3582e207993c631190490f7fd09b5d199b8a0fcc0e59826647e5c0b62edd635b9232f999b56f4d4a551d1badfe4c002cf5e195bfc421ee60f4b6d9078415dad556b932d24f695a9ab8ae8bd670d3852740ce4d8cc656e418ab247d076fc3d68ad0ba81a4ef0a24af1dfdafa7f6bda9abff523f372f17b189780f9ee4643d0b97bf50e989b434bb6331480b84d009bda26255f2051b34dc7abc35e1b95eb852844fb4d9dc4ea055592e7253b306970aaac2116cbada7ea8e3d54f136344b6dee334b8215b385156bb216461c37f8db58f16463c0c3544c4f74e7d52da3447d29cbce051c939ff1e628814552d686df5aa4369d68a40e9283d1f69aa88a220f1a8670e9b1ba71293f54a0c607af1ae20f79e3fb5520e31f53b01129bd6d33ce60880ddf776c294647915d28f360f7076b00314095888fe0c9dc250d03e56ad0593e6738a5f2037f835926f094dd1864cc6cb2a0255e4ca95c287713310ea2053396ba16698e593f2a1d0bd2b8e9b492f03a0434f61c375acaf7fea56782d13f022b2b36da0292493dc274f8b0dfdc632cc33285f5954470babcea648d9a3c2222a034bfb5dad5299f71181c61028ae113a32265363179aa842be7b6452ba5624db0fb678711b76dd638a1ff6f07f0433bca2dff567964815dd40bf1a3b1503327394cdcdac9825c0f12f08a40a99e8846d9341266d32d2d90caf115ef070210eb0426329b443f4b0c5d0a460a05e4344312032b18751dc212c2ffca0b8556154621e1707ec2c9dd55c94f1624fa663ed9b0e9fd21f78db260d908bb6f2afc22046eb99e7162d6beace62b5898d51891903e0f9627cff3b21dd052c959bbbab75b2d852840bf82a4b92456d6d9246e92158b593b3b730cc6c39db13a39ffacd3f31e890ad187c01745c303321c4885b09ae4749bee79d9bd03c5c395bc5721d5bdcf31ae1073f09c5d99dea862a36bf11e6f45c1b6db51915309356570498e4cd028eb69ef2e2193373f7498597a8ccb61ecae1676746f6303dc1e5b41ae159a56067d96ec9619c71dedf90bea56ab70e90cf60e628e43b334fff6888a4d25b8fba0fa5e06fbad1294a346d526c55640c468a50fc04bdd4b474d69ee7ec63101980021b67effc7ccc4580287cc8a060cb592fce5212fa573cea264510d2599605125a26da09624b8cacf938a1e1ad17bcb883b2a087981d5149f867ede4997dd3784c0a266f837ff703fcb995f512510c40896096d711546ac00731350f16f3b9108bd75943ba1d7011fd250a92fb065198a7462bab78c755a7033613eb62eda3f802d059fa97ceb1af9357561ee3ed85ba820298876ca51ef14932ce5bbeccc1fa3a8a0c44735fcb0b6e656c54f620d1d27c37ef69be50ec9cd7e627aa1b0b41ee8b77960e4cfcb3cc68bd7c3860f1328b326971d79ac64c306ccf7b23710872c6537fce23f18fe04279a48222542473661f45b927fb03c75f6bec028cfd71427f63d36e16016de04541ff7e27351ce2ae4546a3bb22519041d3d7196a7bdcf7caffbc89168474c210bd04954e4daacfa48581131a949d84389ed98b11813624cf6168adb31fdd1d0a9cc1277679a146e1bbc580c9e18ac20097c7a450e27100ff971bac96f0edf2000f3194f3b34a17853a5a11f7dcc52f0d04ddae3f6099372120a3ef504c16f44a1839feb285bba17a3654aab42d147515583bc66ff70c1a4867ae9e96278200b2089a49aab25195b5e595be2f36ddfb5b52628fb7ff504be9878033a62158420891df82de19a71bd2d6ef8ba434dd136f6938096ade236ffb8b0cc998450903f54706ef5ccf63079a127750dc7395e92fb73d9baa9f5877a557f2619a8fb1e1441d59954aa8492ecc40d960ee3b5c85fd5a3a0fd9a420399ad095e7cbeee6c1d76a9390b216908b5eeb8e4d78266b3d93fec6ed7d372c9157f38556a7825a66f9a0b58017da441770cd5b97d68397ad167d22ebf9a55b2ccf4c52efaf1f533d21597519d2289ca3a2aaedebca1447bd20ada618e3b01ecf742c217f2dc3f27b465f1a397654a1df9b8dd238b95d81e139aa12415ba78319adce7e7ffee70d96a6ca13a1c87edcfbfc91317896452c31a9d49c4768f1b4b46ac32e0907e00a73680166339ff62595dd2d2eed3a79fb9fa0c2e8250e89539f6d678aa2e5e51e26edbdc2b0bc9ffdf7ea7e6c84f4978c0337702e6d2131639a6793734fe4f8eeec15b972071f763af4d599094df305d88ab8aeb02d22ceee7c9e008760fe1ebdb7fc0969c7386f32442075db815e6d5d09fc51d5b3a61ae4beed4b68aff5b4f20e779e30083fa70af7e62db421b930ef36b21a0811b4de5c0dd46d75a858b3516e78689708ff33757b57b4474ca0da76363c7e47c8ad95f28001b9a449657ee7d8a2a886b859fcb4009a8b2755a7afd9d44e09d32e7831c3d9a5589f9031830819dcc9519179be81ddab008c2af33f5dcc7cd539854b731b196fb6f482ae4768d17f8952f63c03356f3d879fc839f4b7a7be5a973d4c21178ecd4612313a892c16a24092e24ed0e72450973eb0e783956882f65d5bc658a198af1deb33e524963e80ebdd16927bb83aebb78846a691f4c212ff2040b9ba3d222158ef6172bd70053f30e9a2c2c4161a92672441b19e5a168c45216066c2fd85819d005988102766277c912d8022e9565fe6cca58ce95b3fe732e36753da0092b0a15782b224a566ed740920f9fcec837741351edd79279cb82c2ebbd7e0224ef58f16d361721ad47eda52179b4193248bd31e8972c861e8942ce7da921699558d276c9dbf12f9c0b1ba1acd79acf38c61e6d2b969a6ff91a00a6fea18f8931a06e8435ed37a6309965388d17d7f531573ceeb9ffd0f7005b3fed2d9fc2a521989692418b422d970d18abf2e9b9176bb61a57d98e4cba791ac72ded153bf532680714dd4f0eea5c21b1d42bcd630431f2f9e3e4d840ceacd43c9f916fa52e4962c1cbfe4ebedeeb2123a2a43b4134af513fda379daf0dc74d5f428c242bca1d96775345138d0d467202af5f8ae20b9fd620f03aa174ccdb27a47046ab2245d843bc5b3a669db11d7dbc99a9be05138662577ac7b9ffd88f56b592ebe8c8b5467515130ee36fdfd5de5b739d8a88744089d8399f90712e986e525ff926d120d5d0d719093820763085ad107b1e152778e206bd434cb682f814cc3905ae35ef9e626fceac2230d6fde08e26dda4d8a3f27140f8b5b71e56c0ffdca5b342a7efe208c4b53c1c521a81ee6a053ef707ec17590a740857e9b028175d5b5fc7edd32c2544185b771f554731232943f7f5e07f9b8b1655b669877475eff77498fdac00ce9a88f1b0c5a0c2f2f18ccd22aa0caaa159e044ae8b1a8b3b73bfa20f0183597739e556ba8d49b38c49ce1c9cfc601be4a00a63589912551e006e236c40448d177e9658286fccb0a01ef1b97ee6586f1cef8dbb8c167ae3a878496366dec185f2bc8390890052ecb1bb466eafe6b080a05115ff9956fa49fc73ddd0d17e444e15c2e6002f1d845afdf9c85b8defdd13398ee586d0904fc92f3f091305b3d825823c1677a0e13e598a9e1f9e2766fbaf2a2172bed7ff6476253a7f61a5ad0224a92a4a07219b5bcb4336a3f08190f4ee6dd22001b06b59763be831a476e930cd219e06f992dd78f512e883d94549dbf85e6ccea5dac6e824b93160e726291f2a3e1012b9ea1a4d721d22103b8184e9f00a7bd37c61243aa10b1e79bc88639e4729cf12fd8a9defc411ca596cf13eaaffae1bdd6c616c2ea576c70bbb4a305fa1defc29529ae0bb8e63b9dfffcee2acadbfe5e766720f12e7086b492ed420a6c9dfb09e0830a70feea8e9da37cc4d519a0825ac96f1e5b11f4065ee3c65a727b841e6b121a346bfe8cd588272981b65e02f20de019a86761ce69e81fa7d95d9db2fe9033d34738ae7ca25eb3b15d15c9a612d91f060b28247f15e6a5bd63dc6255bdd57c4107a7bb287de25f70821782e018e3df3780dfe14c0167c849c8e159e1ad94cbe78b70dd73f40d4eb2a3a84d3e0e2e9d9e0de7a8c0dd57dd8b24e0b77cabe658fd4549c32c20e20460b7e651ff67cb346f85bc9d0090ad21bb866dd721d8234081daef8b333ca4b6d7f5abe45f2a7ffb18377e460096ece80d45161d951cb59f966e80d37751d2c420406c4d756243cafede4a0ff663f0e4ed1964bb38f4ee5b6dbd3963833de65825bd639c07091c42235e000bbbbeafeb3670f69a34922d2a99c7c46ab3841b09df78fe6c188ab930dfbc529baa1fe6c3fd32f9d0316307511c2cfb69c18d4c0ad00b045fa85fd6e84f8a1cddfad904d5f73c983d96f3376fbd9054e01555ab746dbf5d5f44573c5e2e04624b3084f5c30fbc8a5370f5ac94ab7cf11681729e51e154219117a1e67db971143aa1a18194314c25527c2c497be3276c2df8271df0f075727557144898b17cd80fa82569f5067d3944f7419ce1de5aa02dc5d121fd8fd999fb132de8604033e889f75f4208cfc9c3547fb33e212d93d546aa87cd48882bf4ad82ebf3ef3bc6fdfe9560e6b73357bc1b5269da3f7c27727fe446f8a090dbef8dbc969acffcad933943c115a044db3e647a16d1737d3dbd4ad61f9fa07b7d91996fe546ddbd06662c071cbb21062f008240dfe80cc7d80446ed198eae54951c7d4de39d5795837e4b047d17c21a32609be482fd66ab3ff23adf0101b9f991b891a25164dc86f5800b9f9b9bf52124451942b57a13e2b35fc5308a8cd3919c4a03c640291b6e4ccacc81fa9740d1d103a5f23b5334b94b640266cf40784e0b5375f2c3dbccc952982c5ee23e7fe4eb59118cdc2184b5cca4efb691cfee9ff1049e72cdcf9de0a529f57f0c22b98882f7b004973cf170e7bda86ce96cc5a21b2bd6c5c1e46cb8275c0b9cdc3d82a6be554a6c72d4ba1744567c2fc645bc43a1492e28a50735962a817895ee0f7ddbe15f11e25e2a658e3bda524043c7929f0f11a51ce0853d9fcb933f984cc5188b8ab195611f90bc0e2c0c4bd65a003561011b8416b54c66cfeb4b4cabdfdd3c673804d51fd83e67788066516193e20d81f1d2633b8b74eefeea9c4e0b39623376a66c478d128561e7f334009e1dd0c07250e24861c866e8a0a2b77241a87b711385b718b3e1579e572667d7a5877a8a7301f4dd0c1e201d2974dbec6a56af7fb1715628d8164922a117db84bbe0e892f086996b9d898c1342f602abb6606525488f1801e896b1f13401a4c374ef11139677a1a3c6593caf6f0019cca15ada6ac5266858be3ebb428cb3cf51a1b0fc94db6058e6b10b742085806b8b53ed8669670643c65ade92ea8481c0c624f9471640e8531dfd242dea97407c2d9c0f11241eb4bd8743f0ec8fd4983ef8772c573074077e6d18c9cca31ba27bc6af47c820a6ed1b6510e81aaeee4145f3930a1ce35c5a3b440db7a176e14a0ce5f119274fb89a0713918a739237d2c6b2417812849ef3b76eb33d418d96f7fbc2d691953b78b2058b52426002f8d9423805127f7bd8fad9683221abadef7e15601b8bfd23cada9e3d94775993766fbe297bd01a2f7082cd89c676eff7924ebd55d213218f1dfa0badc84e8831f61c67c6e8e24a4cbcb5090867935936ef0268a4d6cd9532c77972066e12d137d455939518f123b3958b833c29897844a0f1f411e86716e5450b6e929a4e000b03a2d4cb45ef334dbb8592fab77577d89724047908882ec67e7a0ddbcc0d73811f1d947ef1e6a31e0c813099f01d2fb5bf2f990a176044f0e1d543c28083d877c030297c3ac58428ac055262f0ca7f3928a382f5f9e0978bd50187bc9306323bd227be6ad8083dd6e1a362b3b88b722e3e35e4f0fcf05e06d08d2ca8067f222824730ddf50c21eecc40c1470ae5d8e4a1148c2d5c7def7720c421c660d6c5b9ba4cf019dcfdfc5aed27ebd6cf51c198bcb744155da75d0fb5b18618a3439075b7e9b1ebef5285cc17a650118bd6824fe780d469d39be0e8e5f4ea77bba8fd435621254e53ba10f3ec19f84fe54667cead510391abffcbcfbc66f3686033e0d5b67e5728b1f4cee8cadeef10bcc8a8d459d5b8c1b4544079dbde34196f462cb2586d6d462b5a1a948c58dc02a589ac40b241dccc709c0db12d15f5d64eb2da0e79e0a841ef3175590f6bf04950bd757e8c77fc75c015fa1a8019c6aab97de084726e813283bb41aee2a26dd1b7b6e843314a9e9b9383cd0113dd228493de1b9b8913978898f7105b605d6031539a78ffb52fc1bea4658836e0da3c15dad5a047f585c27fa838c44cc222d287251811e683ad75c3eb27989f51423a443fb4f27a8d2e3ab11fb7f0d4b34654b9c0dc3389d9c9991ee010f5acde69682dfe612ce1765162be3490b96203218ea51045cf55906e33808e0d6280c05c869507700d8430f89a808c4b048396a66a06ed0d786e32fae730b97cc4284890416cb92a40ecade765a2dff71c2040d305c5d9de44f1552d66f75875d73d99c76a434a09802783b08a2e0cd2a1123163758c0bbdd811b7315607966c33d28dd5133d13272808687e720f6cbf106cfe84ae8ddfffc693206cdad701722e911649e55c34a47e9292dff9520cc21066ef6fcf160d5b6d2a22eebe2e16dfe707d0b92b4420d62a956799834f3b637fb196dbd54fef10e44a38d9c60bdd39506e00a896cdd6face65818422826e8271a4cd294a10b21f64ff926151e75438c3a0d60a39ae6962850dc734dedc618ebffb10be1dc0d3e7ba0651d963822327caed139deaaeb8d1789c9a89b61232d90e35f13dcf8f0bee3c09f760a12549df6fc0b940b1deac6148ad44cc5c49f79e2601a302cd6ac5dc2b33f47d4e2c96af60d9182a162beda796dbd05139afe3b82ddb8047e73de394a16e4bf333ce2cde8dffaa2741ee9969c8ec402b3905de420f4401f44f85f2572d45e7d5b4535143f1587480a7519fcd2c40db1a3eb1aa97b0e970af53b7276fe47580d79bb8760925318a49482d8c01a70e5afb18745f58848529a0959a64ef0008bb95e9009ad9d54756dd93c842419094c08d9771dc5af3bb44218c7a1c75997d141eda16ed92347f908c1bff078bbfe609cf2444c24916d93f9331d3d7caa36309037d7b9f271038e5988ef0e5574b26c30c135641dddb0fd97ca5cf4904e9511ad0506349069033a96839bed00562656cbad43131650a6d5f761f21b066181d63eeafffb6597aec9cb777a2c9e08f69a83ebcd18459393cd5f951ab48ec3ced14e9095ddfbe2f9cdeba64bf0f195b997fb4d44a637411ef0b21bb4cd4fdcbbb72d73da1b2009cbbe90eceb5458ee3b793921a199053aaba245cd15cc6ba0eb5918d16a5912504f00a8aa53b93e682d4a7793811a91cd64cc53307a61bf54b2e1d310e6bf2cfae486733703987445b8aa1380accb9d1a2e141760ccabd64a81314bed3796262275b21f294657185d20314dfe0c0e6001affb21350774cce0f6bfdb161ab423e7c09a6b516e7d4454a73462b0470c35df650d8a9e2393566309e45f9c857c6a1bca1b6e81a2b2be78facbcbdd3947c53c665a6e4b320c43b6e51ae8b5c4663d5535ca1860330e68304906fcdc6226e54bdc6a72666e1b300fdfc5ecf102714c9fd57df76fdf47139f8dbf8ae59863643171164c16baa5953c17821a7ce5feac673c05a56b287453ce3a0bf5048f0999b7711604d6cdeaf3cdfd661fa21fc5bf18de929671c801f00415eaecd35abda3a04665e9dd0ef5ef2c6ddf02b4a12472984485adb027fd12ae6c60ffd203b1a489402494c0f78f45f8ac43c158f07aac4c5502bcea42160ed09adbbbb7b098b946c0c7475535adc6ab39fdd8f4fd1c4db8e3d6123c0211a2975bec9df17637f0a71e3cb60ee6db0e905c4d49e22e53cd13735d149f76dc38cdef3247879ded531677939a076fe100f5c484faf2453631845099f06389664b584968d4f8ce09b00ef2de228524354feda7d6bec18d0ba3fec8a8c7792c0ee29f60bc5a8fff7d9ed3b084ceb027c58c16c59067d3871835f340e6d7e17092502a74944ab258b6772c18ddb5024cc304c97839e615f25a02b48adbe4dea71b1bc69d6d6fb7789b09b6b8eb361e1630e7a35dd772112b45a58df1ff2b0cf4eb349be59f872c897fe760314d7bf43b4a16777b1ace51f594b9865af3fa1d103846343204e0ad9cc384bafa5489c6adfddbb488934fe7a92ead22ee6e4026f19a09de82baa663a2221cc15b0a11091061209b43b45ca4748a3ecbfdd5e52c7c725bdeac00ef72818c75e8cb4c5d071f4a257654d679febc26d3720bc2f3571c384a20c443102cab88b17528ff72bc5421ddc73c4a86a196c7ed0c4f27aa687326fc225acf46e82657eb95fb10d68dde69a90d7e927842091c4c3f50da2651d6953f778ade6f61670e075390766c0af7b2143e147198cb4be5518f54f1b1fc7472faf8b398f96919c58496e54cad0819fc7525b81abae38fbac46a42f9022b86df1e9092ffcd1e57b488d0a7857030ebebcb7ea80d1015af3b2a3e9f4fefb8c98107551acbe7a3514c05828c0243b8919742c0aa7bbc2ffc272c8d0e2afce81aa4567561a1f47b439ce6f89b043e5a80994558f09945477006209f3c09304407275cd1fa15d11101cf7f026e4b67aff1d3de8bec5ddb49cdae43838e761c8f5288c8ec4e493b8e5fedf40583307e75046e42abba76c5213bedaf14275d87b9bd088a317e6e93b935fc8ac6aac3fa7074d6c61aa87f647e24623dd19e5cae4204d463a5236ad5691699811d28f9395bd08402683193feb066a45e757af70c51b3de942bcd7c045d49787db2d308f9616e858ab0edabbf0be5439548a791f2cf916c57a179f1c63b8c7193871d374e5efafc0d6e3585b7ff066f473557d5050af1c9972203c4041403b8dff03edf0cb5d5ed38ffca960036b1c324c6bc87e3bc0bd43ec1f082cbb715a0f9fef469fdc39092cec161b1102fde7b9db3341bb71568c1fdd03e7c36e8f1736c8eb73a42e325aafcbd318c95d24df5e0bc0d83087c1a4fda5c79065edb4b99dfd6491522b2ede0d00078dcd5c4f180a53626bf8013f272d9e072e11e2859a901eaf1176180d9e825a3c477fcd0c7bf91c7678edf1f942ea6e179783ad7d0b2dd71ae4af4ce6d20d8dfa5a68466e660f407e8ec0ba7dcf91fe64bf0e1bf2a6c11e8321a58d9f2f310d84f960b66b50e3b609256deefb029484189197752a38b770e53e4b0dd024d98e9fea7a830ac3e25ffbc8bcf03063fee18699f641213796f6b70e64d9cf57d5b8f7c4ad2e5947a218a3144a764e9894f737d24177b187e98682f50526551f18309b6a6eadd9b05cd2eda7c7628fedf73abcf36a02c29dd1dd0680011a78f00029c06cbb253b33b3445d384debff73c7bd7e11af0fe059811fb6192716357924918cd4b60111ecc96a8ccb13b0eb035c74522dc7a26dd260141311e60f4e82be83b6f1a4502948089f715e507adb35ec3daaa73cd43b5232b908e24ed79502d584083ff49466038e973cf66461f030841f92fc76d976f8d824968e7b7fd0a4efbd8fbb8a8771c7fe2343e3abd50af0fe3b063878bf83052c4b1993f4f0dce3ce7d0597c297870ae661016888a6f88f3b4133b45fbfada717f604a2f3661c9ede2666a540323ca28bf4bbb546e1aa8b78079b184325c807d635897bab3ab705622eb4effa7794a7e09c267271b80f97695c6975758c0c83e9563c9cee676561e80ca27e6894a09b32baea7d060adea55700fbe7757180a4f69384087a62e4ca7aadd1da2e13e3e104fafc97bb98be01eff4e510b68867b0606035c95965a66c435f59764a5ff62988bff01e942365dbe5dd8f97af521c7604ed5f815e05288b9f01b0f97d2d7d4e86d5261358d406ec257d4394a96a8c4102129436bbcb329350bdae1dcc1495184555943e12737f25320e54f9c7ce5dff849ad3f06598841c0a63474a23047dc53d85054f11fcc77d7509152a697988f60eec8452a9910077ab6052c83d2e179e5dffafab03ce360ebbaec67628be3837437ff8c52dbc25255699548bc16eb1c3dba2c8ad3727e83e788cac0ff991b9b2a67f12ac5c52e5a34894f22a278278baff622efa39f17a2b61cbf529541207a81964e9eb6d56e689f55ccc01e611e4237993eb427605e45eba5c9bc68284bcb3cda641f9356a3cf4bc9bf27e6ad5a55eff1f8bad40318addc7d1d04d66a368a873a17d5a5a58386772f82bad2059fb9a9d975b1f1de85f4e7251609d110c07bbf77e941d3e8690b3acce008a8fdb7a47f79c40187a5213caa673ca5f42e9255a4e5c76d11d37406f6e55672cdcee153bb3f0fe42df7beb493d6986f5fc718ebf91308a198b3abf007ae675844148591759bb902826129f29cf8d3efec6e62e22d78b219365b6d328498772ea52afe434520560ba3268d6d6cb6d4356c7af9fac4cfa23944625b109c05d4e0adb4b47c8fa55d4007aaee1e007e56cb7fcebc536d1438ea7c2d394747ab5091e9c6008373ba883852f4d6ac4569ee946f3323d16b64dc369f9d8727c86a8e2b35e5c7676766e90f42dfdb1bf4c4710391f68bbfe10ea1b1b43ef66fce52363c5eb54eccfd2f0cb672e93e6a0cb9f6fa12b1e4be2329c1c17bde499fa6f4c79702c01c33eebc7a3e524b9f022a0e8bf1a1d73147a12b5ae1b4875ab34690745fd8e46e0689c641589ff05359c736562f0555e68632afded4dafce5d164bf0c9095923e5eb3b32efd0d44fa132ab2b41489be5111110eba73e6007286d4289d8ff795334b3827d5ede08a2b2b281f18bb2b19c97bacbda8a8c812aa4f6a795780f336a55836b7c515601ae86b6f4c1b3dfec267d6b8384bb898612606be91e08f62dea4971cca08e345848e5115867bd7220511b59a7fe6625d11ebf2670884033b6aae9cbec4a08f353692c7c4eec1e6e39c5eb87ec2d8f6d6083e15fe22ee0b791835f5560f286f1c388ebe5fad7869dafc3ef865a8ff5f3dc005c57d348df811c1da8de80a7cc10db50c474a84dc91e40bcd122b5d02bf0a88eda7e605d1f82338242e4c3b3b4461e42d69a5f5c3541b7b9ce94fdeb6bc2d06972c5dacdb206bd2ca492a423137e549e6293122ced3e34982491b5960f4b89bcddacec27b17d08090befe9954603a0fc012f0f5823b8a7e52cfd05ca1e5103cedfc2c2a1488151705f186627471943254eab7bcb1969feb723f09141370945672b5fbff147ed071dba4ead7ed080fb5e92436917661e9173182614ccb30f1c17257a6cd86c381da935f54585f5b8e197c358e6d9fd054dd19070afdc40860d7ee0fda73461f200507951b717d2d33338fbbab18712ad680032895b2783e5a2b1728ff1635c5eee565ebfa1d648b2017bc9247c559db6392bb8d5b9a656df516272e018163962dea5dc872474b19bf0c50697e24c2909dfccb7166d73d3cb8fd2ac69d1dc2bec91b2492a4dd239312956a8dec612b378187c4eea55c2a96f6011d1b0a14690f0f47f85f9e4eda49d67e74d002dbd62853c7f31d3c150ceb0a881d5269daaabf36c355305c542a2a707c1ca22e47e3f66949a33afb42d7883056367d60db25e7f1b946d8e035340c3846454f5b05a48f71d8fd5910b7c6c2e6d7a005079f969c822b194b54bca0a9397a2cc7d37f4685b592dec18953122f365a3b7e314f0534d3039b403ca16fd8034286bb36cdef99c6e237711d4dbf7748fa3c33f43f0aaa741f37b450b598abac0edeead8c6c5af20de18af7afc57fedcc1456ecf2c511459c92af8f1999ce1c80dbc72c86eecbce55fdaa0b9131442746e76d3885dc0d9ee25152f946639dce2d7dada9413798ccaf34973bd48ec58b180860ab9d604d68d8c061ea2f018d74fc486a491ab85e7f8286d3f9259132613ef27e614a652ce44b5ecf290198224c8de888e306140556aa13ae49a493582596184b0a3862ab755193b6ccb0d34dc705fe39bb19f1292afe2da34c6deaadaee83de11b6bf611e71e895a5492746f8030cc550cf48b6b28ae393fca180bd68cfd1fc74a5af2377226b01f2e5b6ccb39526f58a5e4e5a6439e107b3d0fd4e012a836decd9fa9a8a831578f52ea017498ca4120e42c3050854e31b4c0997f92ce96d0386a49fcf8681962d8c8643074a36f28229297595c24a5648b0c96dbfff53363da7a765092d2ae1d7cf738a5d97f24edc05330ffb71755181d93a89edebe98c0fda7f13fe8879d33a76536fffe22b820643803208cd7358fe288cbce3e779de26e51c65937724cbb1c7910f1560a035993015b27d59fa902ec1ce54f80e400989f1d139ccf2f550f3f7deada5f1f65135f20470db502fc543645669e48899f77e3d28ad4c94962840966ce471f4d48da052e72957bd899884f56c4c41ce3143e918a5d1c91da14e4dcbc23d32eb485e59b21b3fb3383fe3f3db6dd2db787d2f49bbc52ed97dd08ffdeda600db7db19508f423496bd6e0f1f24b99fec77233c639c5bd5a3f947cb29fb4a3d7f2fa2fc4059a7d6bcb165cf2368100412f6007049f852fcc58ca0c6eb43d4031b4c081f4c452b73f2e708164b490b3ff0d338ea0ea86f88c117d8e3ea8def2f2dee9c8ce74de0829a93d7313f42ce7ec031328fd384bc57f5a0cca7be1a5a6031d04ebea07344425014109c635887aff231a1c8545256224bfd9a64bfa8cb94254f8d101738e76b4da493ebb16b211ece6f3222fcf6dae114b4034de31d697e1efdf79a86191967cc80f0d8e241697d24ba1cfcbd55403375501f2b0b3922204d8423d5b68cc8b6c891f01aafddfa005e5a328aff2efa079c78d8de83b77527087e038046e19a8138b309cc5eca03c781c5e806d7f1c3a138bfe5cfdb83af282197bf8032e7965aadc54db8070abc045a4004aa15046878d45629859f94b1a770f5675ab8b5b70d0a34e247f84069b7e1155c91c8921b527250e99f47c7d826e471be8de730f47b061d4796ba0e7e263ae7218de912b62f136994be64a8d4f94fd3db68da271724ad9786c6edf4f55cd5e50cb7e05ec052829726e4601ed9b4ef8dd84d3157f508cd318cfd2b386f6c30bd5b4c748367ee592ae03ad5815266c8947848efa414180b32910b3f1f842393085998047e8661add25fd52201cc95a5940e8d31f1276c02db3beae812abf4e9a9d0666163f22194fc8cbb3a76dc2d67b847406edbd6c5ad1e64c465b820123625c74b0df1f7aeeaee53fb4d5cad8b72a604f3ff46963fb977cda5a518242c0258ba25042f26e8c458bf47a21814fd0ecad15d1cae9783a6dce649b4006b562745aef9ef838899dd49e4d8928f5c21e780d7e88cd5518c053a03fc1648a393a4e66a6d8b36956f3f6eaf03baf3425fa730712e5f9bdbfeb41f62d2574643cb45c20e3353d82c13158903924fe18ef2629227342eb012bd0cab66ca7e88b67299495c05daabe7ca389e558e9956a48bb69833db0c7c18c8054533b5b1d4863aab5390d662193691386b652a153c797e25a5ccd76bdd3c33e34228a52925772da739c87676b867bc6cefe7cbbb9f9aa6f8593965d53ec48875d48ec2dfa7a8677997a91840104109dbfd89e16bf0cede8359c1c711a2141a8dcf63ec68002622c11896f10f3aad2260dae291d55965f7c6779e10c633107fe98a89074336f3b47a343ae5816fcd3387e55041695351fee4fca9dc7540728ed20839f6db88f89ed8d0aeaffdc0724e21e5b02e70eaa900ff896f7e4243e1a1edea8b9cb2ba3fa8f5085fba5c4cab30076852401fab434081af2aa5af859e650ee6d0bdb0a4cf655a27593962da0790a466f5bad79d2da6d39cee82e6533cccdec47aec59c28d4b7b358d80f45c8f54ea6a04fba976dbd854e151ab922cfb2b545cef3532a7d9d1a31a25a6f0c4785c855170c8036186dd89b1da3fa6108f1985c4cd89f7df1785e73f03ace84a86465a216d30b26561af668cf0dc2e52d9885363cc6a2e8c60317541410d08f9e8491125f0e0e5bc18b5d86ec36236567171b41b14ba15601b3924dd68524f7fd490fd5be3f8a2f79d4f3dd9fd8bc1021518de0ec986a2986e4e00d07927f9f9a5db5b122bc5a9cf1f628a87d8f59e2cb2a5638298c11649c66bfb3efad0d1dcf3d09c48fb5c151b63a3e5592c6a6702108d6932636728507d11e7c08453d0651e619017d6536104a0496d34d150cfb23ed0e780520958ea7275f2d3c5213de76cbeb350d6736d380710db77c47ded78504751238a8f98848116c71c05701fd8f16ee4b83efd2357e7f1051b70f7975ac22ac20a9ff805a0313c5d7399f750d5612b1af89030ebae9f81d779660ed9a24a68f30eae71c1d5dbf2b41ab847cb10a51930c9aa64682ec4cad09b1b3769e1b4089667ba49f0694e9b6b26fe2644219631eaedd0f14a7afd481b49cd6c0c538c111d17265776c95f7e64df18908edeb06b1a93bc86cec47c2ca9974d481d65f3f709f2d87ed7ac2d19106dffec54e5af08d5e0282739951bfc61f756f09f2013867e238c75a0bbda1d6d17b539c2864e16e51b734ec8798e24a84d04a8f58ca16d950a319da2ae501ec9e986af5e41d576ee091f65422442600f8b20167a998776a81ae06356b11d2ce159b06347e1f6e2b3be8e11d152df647a8398a4e9efa3eaea03ae6a99435f11e9373c49e5af936e714b07362c2018b993c9c3743e7d52509bf5d5ced3e1e1d7bdff5a77057437af5e791a8aa3f032d6cf400078b4f67e3ef5209a804011e6b9df21a90c4c305c2889523e6af80f7c97d5323e96a60c58c0b5ce9b26b0878329e092f01f7342f79e051c2ab0852cd058010b0c7f631e096898c9aa7e04efe2dca4072f01b28a8c727523cdbcd900f1bba624a4d1fb9f83e910308049668b535d416dd2a9ce0688aeaa80544cbd82aaf8e1853d865a96d0bc6d0fd0a0da16f7ad3156e2b9c794130faf3fb2b1187d6148081d6c2a492f02cb1c60dd6047c1313d62d76a2571bc813e79470f6bfb16c70461aceeb196652b77fe67f64e2abd80e0e68f9c3180abe7907f2aebe8b0c4c9a2b06521d57ba1e8ae53846942ee303e70428b72f4776212a16185004d75be641196bcc608d02462f1ebd0c37b000c98d11156e83a9d4246c59f5b3602365febf0b2a4fa5b27e09c9bef4db701824b7a67bee55b3817ddc718742d40500c928897e6e72a86f1844548e85838f1ce22e1758cf683518528260429341cc779712a574223d940a9a3aa253a4b1a2039b8a6afde741a31c785960991f57ee49f842def1d4843b66e530769d59f67466bb9fccf0fa1d5857af7094468f48e3d0c740dca61728fd94e1e23049e329b8689e828a4952cd73ef32efc2653df4131ed5f90c0991899440a953e65e9c0d350eda0be19e7fb22c59c04105e96a9e4245cfb101402918b309048419a72396f8d7eb93d1a0d587c415ba889d93cbe1db9edddba0552c4155e3999fbc96266b05c37e4d3ea0ed751e8ed9d1d49fc509607476ed63aa8f5d4853a0e1a5cc7609f6aa8da76e03009feca13f5433739f6020e0035efd290be026ebfc057d640810110a039d0e3e9ef0bfb538ca0cb39ede7f72976c3f17f8fdd26b08450d1df018858e664d22de9ddc4f652a52f37145956fa581b7b1148b5cebb6eb78728d8b67ce9bd9fd6de0065e9ce123e6c59fc7d7599f87b798b85f941685ec5f640196af563df098559ac11092fea7fc5b31f64f05e0ba5679ba2ed147800279f8cc8b48e9e6f0093d9c8d2308dd88db04eaab8c2bffdb27b4065c0584d1519eb0fdf7158396a6a07d70a75dfebfa655701c620a01d6a6c9303ae1956af48615d37e93c506a6b28c999d672304496bde8994244f2438e0229bcb40d0b41f701fc291eae3cb1b450cd80d874d19f15928b34a5881964137c4f9a7d0ce4a7b94d121ab5f9ea94431a80dd327f530a9998eb82bdc0265072182a3ec4416f0dd58fb24e2bda54fb8bc3e0e7a8e8ff25f06243ccfb0f2caa3df3a3ee952d9794862774117b70d3b4bf6570d8d8daffa9ac957f65b69042fe8901063d896a3a82ec1de6e61f2e114168de60cee4edc8dabf8a123fc79c8e514409a3f5abd8f162865717ab118eed6859a2a501773bc482cf944b6c901e4590d8d085a56a21d89dea1e134599d1504fee6c0a3995e8eeacebc101c3bbbb02d625c9e5da70eceb1760895c46b55991b5a9552f7fcaf6f3261c2c15b2e9b89b4fd4250da137d0845f7773169f217751d6160aef522c584aab4fb0609b69ea7add66373d2adf573843f7c91b071028c409196e76ef7b4505f104cd001a9d3e20228dff33e012d7074b405b2ffe9f0419cefb6108e546f4e82a4949a0263eceedde8eb2bafcc883107714c2f3de87f2b8ff72c4f6ab1ad47c28c97c053361157af9d40c385933007a21db042e140474118d2712f37ffb10631c9f6480cb48a46f9c60f75223b071f417eb117cec4713b7fd53540f3b89ddcf14d91ef717e80b89f91032d9f51a2714edc7f7b4c73d7193de0043a597f3cc5c4dabe7648f6fcfe7e7e94ed67995161455996a9ca300411cfdc46fc698766408d80c37aeacb4c5cc92a20c73ac9cf678b40e595bb2fbc2762a696455bbdd4edd83674ea2b467098e33e25a256838028205e0143fb993b13a3efa86c2b305096e97c5168241cfea50a6dde34f3c61243148aa8bffd7d619566c4b5c62e2d8102e3b53d3c0814f9cf5c7be3194f39e7587e94c30ee91af7fae747b44eb1766267cea2851299dc830524d22cdb56f436f0433eeb7640947c93e4873130081959df184b7ee043aa86f20f76d4357a915f4c86882bf0c8755206b429af10ae4182689a4025759503b67364362e2cee093a52b9bea5ffa5d784b7c8ce2d69ac752dbd1c3d920f93fbbfb2004f0d9e81f27e5c21ad0faeeb82fbb4b7d0e112ed2223b0c45c4bf9adaabc7710346abf782e605b56dfb21e4ef748a341d2f007f444007d0aab3583d389bc84ec9dee582eab20e39aef2e1f777f5121c7555192df24c6a1418ad28e5c6e69662424db14278592aeca4c6792ed0b0162a14983a586f9b060fe17ffdb43403c7893009e432fb27aaab554807f9f64c1e46e91719572b23bc3b91170638a926aaf95d654fac207a921a05e268f3cddef2a13856f026e565d85be135d0e724eb6e5176752ca0a142e2eaabc443fc5e27764b6a9d2bf5ce08544ccca78583e6e21bec9a87f8ead9d2adf5654a5e62ad007fe4d772cca5b12868db5863d7684ac2b3e011f2e0d2c25b4230edc0095737df791828812c4e48366b20078d0a6691e1a14192b077f85ad565e77028ff6e6c7b03ffc6d7d8601d341d7e08edbb1e72f53cbffda4ca927fd6a5fc96adf728245d1999469e3f62e0d6de2c8e3154843d7f3e138d221101f45c7de226e1717b71cae656be91de50c507240f2fa588391b4ceb1440f94a979fc1e3fff43bdcad28aa2564ba0364a650453be123ae0ef50f09ed1a1ed203f81843a1adb687fb549d29b313d93f724d9012af2a31e22dbf701e6cc9a3c70d3fc0ee7d2b69a228b371e4db53b746b3222cdfcffab9a484e23450862e19a455003f182a16b71152a0c38271ea849c51b6dd2d57443b24612b5cd6b2887df6a604a60fbaac81cf2b60a8137b7c9945681a06b1f59ff5216ffecf72da414f0e5d6cd11560f833905b720d9911fa46c3b15d93776b2c91718b95f078f1f8f448e2c5387314912f1e2f15a9b3185d94c1600da0f83d66929a48a60c08bb06e96c517a486827ff217c9b9e44a952527ce97f61a1634bbd3b75b56602f5ba7a9e33918f16be1b85ef02dba045ca1af8490060330406a5d714b7815e9f59452fe177c8852b1efb6a279e37d2228b95b59ff99d7c1821ce3c900d1f23cf1cf4e179224cea6045e2464151a89a087f2d6c90e5e49d725b81fd6399e0af3a5b5471f458abcb931f719ca26a1fa41515f38b92bd1f82948fc03635590981602b2eed69e8d794eb8e8e0656c14cb38a82c6a8a34d68224333cafc80a4c3722ea58cc4b610336fd1622e1b390169f0b4ecd254accb08f3417629b5169b1ed7b4830be8861a8e30d3702958a7f118be6cf8460104eb35a119290bb1da9f836ccf111da32ad33e4218acc2a775177b8f6328f37c17b4a30ac0898e7807618f447b7f81f663ad959dcc8931596942e596cbbac621f38290fe824b445985c83d5319cbdc3eeeb104f4966a45895825addd87ccf77ffe7deb7141ed90d022bcb446f8bf24bafe9940839be282e8d0c5c9bcb97e7c0c23517cdbb7054709a7cfad72867fc48613cfd7509a1a93c28d9f40d4b3534cb4c308c0af094efc6ffa618648ef3a50b91c25d1eabf1c0c90d2e3baaabbe45ee068bdc2ff8e9c5b90a25b2a078e2fabe220e4d5be43eab21a887491efa9f691dd15a98ddb9d23713b1c031e82800667a00ca4e359e8bdfcf1915a685c1e021ea0299f92aa45ea888517f882a5e5cc946dfe6628410db0bd18b14bd203efb212cdd5bf2b3a05167cd81eb2ff72f9b2491a33d0cd382fae9f97f1edaf23834b5614c35036f5d7cbd961dc39e25be395130936f767a148adddcced8b7256be2a9dc68818fc899efeb2309e38830610c6f46a528515a82261b2c7a021dc45d11386d03604493ed7ebf2abef0e5ce40dd609142ee349949a7426b418052af46163b841a6cfb20c6d0cd1645a5b0f409bee3b1b8aaf7904ace115316746d5358f834b999f583c3270e3cfde7b79810378a56ef1b2703047da0e3f5435cfb61e043d9a9bd6b881d7ef638c9f9de151f270d3b26ef7ad5e03742d176b37cbaf4cdc0f531a8d60ba945e2e05fe4cee4bb2c1c34ac8d72f8f5d89cad1ec1a28eb64695c835511cdfdd48dd34cd38b34e94fa9ded2246da242fbd8935f374d727ab0b37060a08d93be5e2c95e8febce0adabe64813708bcde794042e6e8726303d36c5b1ac90439f34277f74188ab4d84aa4a512f26a4ba4f614fcf5ebca5879eb813bf6133af300d5bd3efc5b1ff5a95bdd7e364f01180e8671a0155b9740f064bc8b1575f5ab7010f9df46972e835d7307a2f2678003dd834f192d7132a936f52e27eac61684eaff7f6667a5d131746befa1efe354680094c4b22cd1f972e657c9d95a6b8db13b8d723e38f3e95a2b206984945215d79388954efe2e0684c1faf21b072c5c23849a977dcf11957c327e0e9d657a3c1824a6fb4bb2c67e74225a29f4b1c74984d13a058135667f45ec945c1eb4cff7e49ad98222035393b7c2b8c4307bdabfd3624db0d24391d4d1158fc27e74fb30ab4376fbe948951731a6a458d7fc1d059620a96a19f90c388fe6f64c4f5ade7f62a85c494a69a22f31d19e6adf39d444d7fe26a41ce87d1fe5a0bd93b545676c7a2b754a7704288cc36168bcfae2af57530cfd0c9280fbf0155fe99822e58f61ea3f9533655f28676b2dd11aee97f147a0eacaf627fdbe4a1fadebc2117e9879e33bd7e3119e9b4375f9b53ff145efb959e8f46ccfd7c4b922ca699fb9800c1aca417c161db612769990d12ab1526c9a49b7f56e09e53c36bebf43041580a497ab2d7d3536ab02833fe2c4c7722e5197814708b8111ee4eb10528fc92816959a62a10048fe08f54a2fda19fb814b802bc9488e1857f877949d568dea0885cca6f6ba6d3b64860b7dfd78da4bbb3690216a2eaf2057052fcdddc96a59bb8606613053d4a4536a02680c5c174b2720008eb657efa90e8ae422eb991a4d883057d819591ff7d25200fb200e1cb2208152f9e1282bbd6dd4e0298e5e215f4979fd965211916a08943a0b6676b912087a8765494654e4137d4d323409b7a968aa4d2fec8cfb34d60c82463f0f37d6dd62156c18b391f5fff3516de1aeb5a22eb0d0a6d57fa534bee4c546e5a548a020a3229d54361a6984ba7a9cdadca8112240fa8f4703f74d6783d4bcad8345abc6a8a31be59a2e2fd525dddf8e8fd11e84bb51546e5f76d931b07046839eee0385fb31645400ff9574d48698cca7fcda5ec0a58366765be4d2f5ec1684cbc3eed960f9e790ac1ab7275cf9b1323d62f3e3272b4370dd62b3b846d61194d4cbed4bb05365ae83ca676fd4487a65bf7f632324ccbc3155fa24131dd412905cf8c9608fdcd8a27581c8bbcc1e527aa2c7bf712a247861fc8a71881daf44fdc7585b3a45e152937cfff7fde0e71f4c96cf7f58838161bb256177e836b811df2296c1914c2cf892ef6fdf8357b4130213d7ff4e125ed096e475fbafaec8c3c0df9c207000dbe7e41d37ff4492ceab1820dc60774b3b6270e5e8d1ae8252affb07d5e1f82e26b0e16ae4accc88421175d0a42130deebc8bcd103474d030b5418d421972fe475c58ade6f2182dffd6bbe48330cab2de2db6208ddfe5973f97acd1b4cf65f65a76df2fe430c11f434e600b16c065217c7add232ecccd13d36ac03315d8d0442122bb76a277bff310e4c68b8cedd5c45df3d7beb9a6c3b11cd19771bde47b916fdb57ce357443921e6f6513eae788c9ff611ce3ce3947d8725a6191f0986e9ca9929a5cb45493a41a90ee7ccf7a736d554e0e8a1aeb1566cdb120c47eaa59975f3f1152d130876c93f4dd9fb5725975f9cc45a0d72b657b9e34dfca874a5897612bddabab2987bb00bcfe1250bf5f4a1e88c65011b3e5555588ac87ffffd3dd625c9f191743128d822dbaedd117d78c5953c019c2dc85cad31fa801144a4d4b219db06e9c78e73e0816c7aff9198a00a6135ce7bc413759915612b5f03f9f8eb9ca6e679064363000433a5c502fae12ca8cd50a2964135ab161f96918efa5e7a82345fbf851faf681b70c0cf4ffb85010525dc140ebcf6d37acf733d9c6bdfe33cc66e08b94d17d93a1babf3222007bdc00db10601619236431e9ba26d76c105c5226c4fc09f7886af4489f53583e33f3adac1b7087e69b37738be0c77becb715b77a2a7292e4399e23ecf309b3057e048a5981ec1a6feb03ff1459d8be889eafbe4cd6483c13d197045a6195197883cad2443dbd86a54cacb48213612ad4916e1c52e5506e8bfd593ea9766d7bd5b2c66bf4c40f7ed9a339dee3263b9e3c31eee6b142e561eb160a078b71ad43bcc317a95343499f8d2b6abc71c65f902179dff0609ee741deb7b843fa859f216bb3a11273632b5e07d9d12b7209c5812fddf7bc7fc6ee06fc3c2eaf579c3d0256ba51417146a789449f84254a3f8b6bda6e3700505126a325e48de98579374cdbbc8ae4f012a6736f4e47fa88d3422bc44f83c69c03ed2663176da5780aae9b8af3ce615e303f07ffa082784b2e131cebecc3a4daf753cc8f842cdd4f49cd76985523a16a763245a8492b52043c231ef129e817be6ba7760736eb580bc76e5a4989b2d0fbb3e1d94a4c0672d125696cb7d74330cd436adf12f8d72b0516df769605e574861d81131072015cb03c024e57412bc11f125f7e0e731734bf79c21407bc8dbdd088602783133c890125b76fd9388257ba1e15f4aaffa096fe619123d3784e810fc39d5592ce38a660f14fcc41aeb604806281f58cc6f2231d89ef3d7c67c41200f3abcf0f0fcc7c6d21c1e55c47f3fceae71af35c1ca34bfde96c694ace2963a960af2f173ee9a61cde0c7f0d9d3d8c6242ff26aa31afaf7fa1a73d13a016649cfe3ef86e71591b0314df4f12b3a3149a1fbc595288b18888121818fb2ec754ab7e7eb99e5c4ed58fae944c14d6f3a263c21562f9f00277e31462388e4c70532dbef8442df409233d79be10474cac8ea99d96dac3c483715276284144818e181c44d5a03d71fada48d31ca4a7c319f8fbca81809eaa4e5887481011f4384152713a9cd8b43e54c3b07c4046ba459716592dd6e324d1a113692b0947561223e16d966bbcb468ec086e5319006d9656000d1aba206f414de604f6b930c06534efc6544206df6d1ffd9130950bbb4d9ca3f3bec984f4ecf27b6aae959d9cc3104268ded320cbf4f8daec007f18dbb773d5bb708aa1a163461cedfe158021433427a687487de40d80ebb30ba3331443bd6719138921b06e63fad5548de551075da4c71c6f7e989c88e61652a9fc273c780e0e35a84680ee6acafab0dea077497c27d67d2c129585fc39a02af3ba0f6f98ee851a5264c27c43273920521961f77ff6e1e980e918ae93175b3f892ff037b88570418a25e305fc2dce1e678aac9af40ec35056bba404c4131da97942bd1a1914865ffa68369f3aae7a22a510490f1ee4fd6070d44dfd775f162a7fcc90f9e420f7f5b76d37733abe65019438e41a552540e4e711aeaeee06715ec3c380331b21d94740e4dc1d337d2c7a084bb2731ae45b3618beb4202e0a66f598679757240b57c4f1bc2a467c522869f7022989a354d21f5902ac9dd0155e7ea2ea665516ac2c2733d7d5f23fc6969fecf999a6ad43b57f31a599b8cf164b9fea519426faf385a10e603e2054e495e9797154d9b55be9f51ac4c8e32297136f38758b54f6ff5bbeca8d840f419c3eaa84ce3880d94b99776374f6ecd113c76a19e09372eacbaa1f0390e6634c1d5b0eda6d9e4563477c55ec498823ceddc25a5b6b1583708e50e503061eee871accc9bef9e56e37b3ac4f51807884ab80325a170724a9e6f15586985e3acf4d52fbd63a1a8bbc313b910d40b286c017a0fbc89877f07b877d3b12cdb17134dcd21371e46cfd00cbf58092e1330652cc69c78487eb9376ac7b684f3fb8bb31ad104ac1998214bcc15418c137bf5e7469825d7d29e5b9b825828c1e808333eb06d90900387a53217e162c57e2d89babb51d0eee8f61db9e90a760e9b87681a2536994a49c249bcf9078425ab84a44ea07a41ee2f10e6e35b00d4cf22cce385a823da80b752aa16480a201d54a92263eb124b259d1a807f3c36df6a4a73eb5522a0bfefec4b5f25c7bf21f5c9b10dd49be64b3246519e627f1e1683f1c845497bce3440140ad96f4c993acf711eedb60e37c269abdb19ff778ec446f8db4d045b1e5e3940aaae385fb97f7e25009f09f00ab49b77c06290d9b4b48552abf2b8f69ebeab084e866ab35f94528333c376d9fa09cf6b5c2e88965e123d459cbc90e1f19d1079ce8860ec94924d897f37a6e5048673e89c33b3e60422470cc17168c1f3585bd8e9d898befe30c9e7785f361241b6c301c27a8aea26035be2f30689cd9144914793298bdbb1252241961931db5d7ec7fceadbabb5b18c46335c905aec43cf10992d430985109cc9804e034020540bd636fcfccfdd6071fa1b51e61c5ce8d6dbb477f97d28bdda65b2c28dfd0b241730a437b048efa4e1e295ded2cbb7db67a670e954ba6816c300a3698efc882ef71073fd8b385a7a7cdc5342367ee74f93f223d4729c11341e5cbb15d66ddcf09047c409464cfc99ad116b1644294ebcc327553a7028639c6c33cf969f20ef9b608cabbdd242d7209da425dd579bdd40693eee59c12a30cb7859592e0a5c7f40aaabbd65a7263b83344fd2f470438a3a612b260e097c524c197b6dca1a334c3dec98fe2cd4e22c74d458b9bfe9ad50d2768b8273d0f9940a66b296ba1680604cfcc11e6c52f119aec61363a4b40c46fc05b34c46dac833bc8fba54371230bde3871d2b5724823ac36a76942f36e7bb34f14c77befbb5c7f7913c2c3f9cc1305cf54f1fb9135f18aa800e45674f2ba92bffec7c97503e56899a2f96abf13811b8488c3759960613164591363f130fefb4996050e3f721e4cec67d70bfa10ceaca76ede31a413a71c24843d06dc91d46a64175bc465ffcf04334eee564c114bc8b408494d9b35200ff84768515eca1ce612d04df6a54e70126f8afc7d485eb56d237a8cc20cb7264ce02b658c08e33f501871439da51e441ab65d48c236a73e119568e548660cc016ab8c439def68432d6ce86c5dbb95442dd8229f717ff804c9b2e6486d15949b066bd1e055712e1a8005892857f7c91d0ca260333c9aa9efd47e3ec92ab8c89239323967465d3aa81ec15acf2daf4791521e56ac4fdebbef8e832c2cd319a81316f1aee83ef16490c763e5a8715748e3398ae58cfffb515f6c89e064fd0bd15b7393fcade7fc1cc2d58d9c92ffe1ad4a7d74bd6dceeb2538c418a2c74fdb517206b391f9cd083654c69a89fb23b1f36fa4f0089c966466d9cb96ebe97d2948914ab2d45d1ffa6f64882f5817245810ef30d82375d5d5ff3969a10d896b638a24de2379e42c23951cfff675708499888f04acf8ba7f9818879d784d31d129f7a14848435ba39274b37991abd45976972bbbd5e7e303f37adb1f9f5a034ac92ee7adba961f0c7513192e390cfd378f74464538984754db07077e8a594b35c9b1feb1020cec43637e11269586e6470e808bb643d16feac477839a02467c2e60b7b3be2026ccb75ec8c2394bca5aaba91e38407d03c1e14f4dca52ff8262cd655b01f8c47c01309888feb56bfd9c3ef60efa9b026e58c323de4d1aaf11d8f8a388d25ac5c631553330d1b0881c481a554111e3af4c856c6607a90df9588dce5a7cbb8c46ab4d32b907bc8b0a62e5d81dc036e88af96a055ac420f9d4ac6d272707491052cd28a6134602c3945e5d4056443549b7e7220b94df6c712fa5517b44e851587898db62aa287ade198dc106deb2b94068d1c3f8c14b006c8fd64931f68cf3e92472eb32a150b3bea9b9af932c5ab24d9182438e2545517065bd2745546bb2889732b9f6bfad72f77b8e53ed841a86d6525f490159f6f16f76a5f464dc16903a66451ed1a4e22b4b4bb9daeb7e2814955a021032148989c4254db93a6fe98cf90efb046529a2725fb9c46c008baac730817d103dd9b53704fa41da35fca13cbe44e433d5844e8b1baa14de2e65e59d3e110381a52435faa65c96afd71ed2823edfaf9a8d274ef897b53c20b8ae468ed73209880abd9e457c070894015dd6ecac056cd84da201361a38835af05eec1eb1520770819f5447fcbd9c9378f85b2c83a8511d85b3f74bb8b4e8c89b9491b0ec9f52aa6bdf3907568d324e7eb5b3f6f6bfc75a2df0753c99ee495eca4ee4997b11ca14e798e7e669a253cdfa1b0502f84172d63e0a664c9cff1569010efe7b0de9513e0d085744b83831eb2600063ab56d9a29257839975e41d946813127d0f41685176fc0cb1fef67738c873a52773b8c56389f9f69e6ec6932f2731f9b8abf3548477c2bab6e68c354b4bb836ba9d8777ccdd9001a43ae1787ff398769f372bdd68386bc4ae9514dcfc440649f8d82ac4d7d8a5475e84253b79c6c972c8434015dadf1dcd61924d5319a0e05108eef24a94306ff1f720d8a39eb239110b371cdcb69b6c87565bd0c38efa5079ccb258f3e616f8124574f1f1d2134421436abe0851b9e56a836f5d363dd22c81fc59e1be18cd7529f70cd59aeb825aaf3a0570db83cf860dc0ab68dccba8b5a528c21126841c0baf3d722b77fb7497a68509577c8b704390dc1cd869e106e84ac95a0035a1bd660da5f7edeefd6f7023728c2b943c8e8ac9b3cb7e963fc6548007f47248b39498a5cb5f0ac530880cfae19b34c2e734219dbfc6af105108ef94e4551973fa8263b8a82116d6be101e76a7151b753fb909b5760fc8d18fff725213739fd758193b0cffe13e5ca943e048a211906871e6c7b6230ae8a07db38a63a73a9bc01b93387d43b355350c30e2e32f851375f96e8d841385f500ad59a202f4f39e4ddc87feeaee9164d06f62c44eb89683dacf8711c4f2cda2ea3f64e6082f48fd80381a81e81a6b34b2dd1b2d49d816f820d1198cf31173c1fbb0cb2601052d7517fb565157d974ac60be2a90753c3a4a6b4decaff198a7a58e8d0a6222f52c7b57f534ea8fc88d53bae3aa5b4760757861280618e21787bb698a9d66ca2f89b6d354ddd9d590f32a484bd882a69b2a653157bd5841f6cebb75c5a9edb64995a2ad23ca9fbf345d407d9a21bf8b8cb5f23ce248773ca511cd093363500352fc74493dd68e22ccd782bf25f70f87f0d63e7e60c346049eb9d498acaf983bf401d667a9ef0d4744d96473cbe9782b22ac98ede0edd9b4d96064b48fee9ffc6cda7f06f2e17be6b3bf6e97b2f355d6c1c4283eef0f76cc259c1fe87b187d6483c7cb22112f08b4ef909e05e4d76afc79de250a3c520d6e56d26fa8249971c40d04034af660f160e1c2e955deda6c41e345d0137f76760aaf289eeebe18294c31b134a325cbaf499304d9f7caa989ff99bb4c3a1b08ff8722fd1f71a2e69157705f38213229183cbff3230bd44a45d964de8c48c36818a3670c8f58b8093fa8c2d7388650ddd4c4cbf4806f08910eb1b13d8aabb1fe7c28ef48076939a6a6f94f6f4e4e7ba58f8c28a73f500b8aa4a8af82951cc8fb7e72ff6cdbc7ed2849b262cabde3fa4e2dd0b819ee426bb124ee76d0c2d7f543d66c2482f906f5f008ea1d8661b8af6f4bdc1f7022509ccaa4a3cd0837584519fe132bb767db60bca5e390bd9301886b23d0ed3eeb88e8882a1e3d26ab43e78c7f4523d6841251f2bf954734a5a42ddc935f3320850fded40a9c9d0bd21f3d4673992a8569efe84000226cf2a205d5151cdd3fb6c712bc71061e747832a34e748b3717d23b4d6e58710db66fa5c2ea1cf24f73ed6e7222b64e93c37af3cb00d5ff2f1a74cd379e671bb4550a6902de7ffea5e29334478e6894aa8f8ac33ed4c51eaf3f5d954abfc4b5b1c0b776a3366931b198946ddefa46b736f368944ea93a9972b249a865206d32d092a5de981476e2b6ccfdc8a2c2811343165e74997df7668e4f313a94fd34a4ace70c4309548d99f8d796fc8bd01202fa4bede8187c1c09d6a8ad7650ebac6dc21b6571c9aab067780ec071d0cbcaa6d289e27a1438fcb411db67c524b81782cf2c76b9288104bf6adb872154d79470e377e9d885ac81326de49abe2f8a1f1485095e3eabe1103b8c5b3b12fa07b3e1f5fbde0770c58c2ea0f2ed825e76ed9bbb1cd65fc437a558e20e54bdae851e5d5a7c35f0f0b3ffa1bdd0f6c9d68efc5a4a602ffeb845f1c70122926f38c1a3148a44d7a9034ae918d4bc0bda3d4c70fd69e1e60015d65038e03db6649a9ab8866951cd591c4d2e9fdd30f8f394f8353dbb2aad8443b29124029177e3e28f77ffbe882ef0ccb97ab97a9fd579c864932bd93e39d01c5e04afb4a1a4f1f8c02f3f0a7ab9de1ef272014535ae22a777950d923e05a160d584ff88c3b3f0ded53d52a1e8e105ce3878ec60596c387bedb0c34d45f0247ce5b705c366adc68278842a936febad1823872871c78ae5875ea44b9daaf8fde878e2cfdee8e71e00cfff4da3aac7b0545c0f37ce6cb7635bf07a553f574568f5e65fecd40dc7375b42612bec0dd6dd4d639913c42e9b8c53fe9d0a411050dea6c32dba41f793097f443d83dce9c847e2c3c131241d3416a63fc683cc4bc4a4dd9f8c46a399dd93cd2eaa8dcc4ccafbb474c97e24cd0923ed22317da61c5d5b3aa9b6cb7423d61877e7125ef1f3237a626dcbb467d7722a9ef65eb39de55b2c85f1f0c8f43d9842a19fbaf393762830d8bc78e93566078a1124b7985a90ebc2ab343b16da3dde8d19b8350d4cd45c626cb4a8a89f9c41f9c38d7528451bfac83c997df562800c2a32194028ea17dee64757164d303459813250e60e0f21ce6f83b6d61fe7adfd4a893f890639c742a30d3150d9d9748c81a6e5b77a33d89887a5a71dad452029a04f5e3aa5a3290e1ae61eb9be7581923479b40abe704c409f967ef87647c165df9ba7a0bb59ae4fd57455d7fa9e1c4323805e5e73676aff0ac29ce25fd2d4211e5e8df363a87c7f75d7b89a135b902b33ef63399210d446e7c917f883fdfda4c3a53133c012e7cff75efaecb410097ce7209672d80904fd8391fc32b186dd216b3622b2593ae1450e8d9f2fd9e4ed7687e9eddb459a82f73048e257c2482bf3412195f69f495b47b46791b43b1d141c34d7d74cc7a6789754f371c36e33b41b62250cccbf44c5e389ded920bd9ed62f1d8ba4ec61d4e3131d13cf75b9ee928eea23fdca870be8747bdb6dbfe1c5fe8b36f65ce70e9cad6db2987ca55b0561a574140707045cc847ba2b4915e2eed1983f466b11a95d1645ca2e3dde8b25db2001af197f19a5f2c9c4d86818c4d872d31347144696c3afd5c351769e3144df0ff0382cf103d1a8e19be4c61efc5f0ff8db542eb75e2dd9c510995fd742e521477ce1b232f6eceea0cb61a11760c5cee0408fbe8de0220454d079ee9adbae2aef02739d4b78c20b2edb2f64148b85175950b02b84b1a66fb7bfe047c471accbcd0e2d0a3b038af6641419a1a4b4887a67eb3637ce2ab44a23fd4b617dc7c98ed883eaf24df8bc599795a6e0616e9178cd5da4ee6e7829045f7a381c84783ad8519484c07bb4bbab3237c066e8edc6a856d6e8abea950feb0658bb7bc477e291172b9197abc1bae495dc080fa0416ca7a92201adb43292cadd446a4de559f51921f9f7c689f285eafeaa0f15a1959c349a91d65f63dd98319283ba3536e61e03e8f1ac6b6246059421f526e2a62e0f3f8d61d67d040bd649684a7de630c578a243842c90a418691dc175d8d9bc38cdd097c6bed15a8f405922e3b9bfe363ee3a5490ab16262df6b246470794ae117b3e055c980e3a51b64c6f8c1ba4aacdb3c9f6969cea6ba784b3f877438280240502eb12f9e7202b2fba57adfdd1a4039de594ffa2fa9405ad084f895f896968c9641b373d7aca9a1ffe3743dffafce5130e75404f9de6810beb695606eeb81a675c6bcc437506abb561113aff5af8ac2caaa19e3af0f3b81d1ca41ea4eb439e562f3acae9a6e2ef4b65b9e4942da9b1fe198f987cfb04d3c611279487d265688591abc96de574b857233dc55a5bf501c0e06548267d7b6511407c369461264749cc4fc11f4657a0669c82f617846c7bd945cfd2298858e5a5cabf70ce9179a253e40eda750d7004d5b4adafb7bae4e463184bfa319010597eca754351afd68946a798732c8466230c105a2942d452bfdb968f8be7a15bf8c00f17e4e5cdd08559ad4d27d5856abce2ec98319b3925012a9c776f4b9f2cadfdf7b4bcc056990fa12c9759cba1213a761612cfb50351e49cd72b7369bc386ae8a4ff380ff655bb191c313b210d6c1cb6ecab8ef6ee16fa87653691bb4fc4260c76a8a06b9bb52baa5fddd267a2f46346acbfc5d9d9c4ada73609f0344d9f7d9ced060abb00e0e3eda086a4299cc03c50e6bf6fb29f7ec4e6950721b24b32616970a3fade8012859f24772a7755a4a5a33704ceda1903020c5b8acc7a9202adaf11658418f92e04c3110103157ff962554fa1eaffad15b5405a7c1b26f8c83b2af9fa274877b6e3ea60b2ba0973ea59578d4e21193350e5c58283bbb9c0dd1ce104d31a051c6f22e89005103bd965ee610103f6335fffae1987aa43e2748b685ca050964290d2be3cece74d7b32c2dc91018e8df0b98989c8620c90b8ce4c584a0c2ca2ce8833dba54fe005a20506d711b5d2cc68d02a2dd13651ca4fc0a261f1f623dcfa7f47fed8248e8fe5a030b74586c2c58dec323bf7b3621c51ff024e590838b0ad9ead334e1738d5f0cd75dae726948519dd1c91c901f086fe48b6de794446e1ae06b98025d7acf5ed253c5a4e9d716bcb49a316469e55e9d0ff926e6b6b63b553dc2d9320bd7baeb72fb3acb48df533c4bff24b483f0f6eb1d3449c4157f13cba9fea540652efca373c12cbec11d43e7e458364e747e2a7c036c11206a4f55ff83bbf95326b588c427f27fd5d1b05634ab5554ef1ad1e30ccc61fde15b2f9c8e1a68f4ec69806d4e63856427100e2dd19346e5f0bc1e6f69a6cbae58054c8248e3fdd99c629d1612c09e70d143953d6ad052abce1175878af3512f60a8a2950f5037e5a9fbd89cd2b2882fee5f50913b494a620bcc81b762c8f2bf0e394fbde952f01a22b0e8d9611b58a17cd9f868e0119bb9a5f5ff5743e3bf1b20bc1e4689f696ef72c7e212c6011ab16cd1f08b6064633f759fd4f277a6c7344de831bce231a04e04e1dadbefde52c18385a02acbab37920d42f40f01ad455ab76b545770885c94c492940e4163e19a05642798d37848b877edf192b28f592a669363f2ca531b612cd5f6831a282159920b927c7786a815c8f42d99b1eb622f43f70f391f25f79419458f287c3d466a2e7deecde5596fd0a77f2e4a61dbd6026cca8b5720a157e6dc6624a27773f051a989d55ac2d4eaed8c824fd31cb50ebfb7af278eb1d5c5b3c9109da967ccdb84403a4aa59e4d630724c56f28a6258e4b14ecb73138c20f8dd5009edfc510ef12741d020564e964031bcb88f2c3a2ef5ad90b19c87ea65314c3715e5bf97e2aa5d097cca5eab78ad7598aad93163fc45ead66d551d0059a8693fc7ce059f584b7ebdc16587643c861ccf5bc33147fb1610bf68177a5f47b51b5fa99c6e22901d9f30e0a42602985508b41ae0808369dd5df3423f374d93fb7a0dac3b8412b02cfa0406f0199a53d1a8f2da0746130286673f41144cee75859a6fb6199e9c32fe96947d56e5b6a9cfbd423dcf3da5d3902d324efb07488f770547d9449c3f08e90fa771a450a33c95d27a562203e74b590356ff4b4d495ee52b1d52bb07acec89c3ec458785ea81271cbe8451c591f325c2ba7e1ce4af88dff4f188f22fa3c5acb5082c427eda3d1107d89977a412dba54a87f1be985e16e62ebf435b51cedc4dede6658990b8001c37e3ad474dbf95c51c42f1adbe3947c03b5000a1b547277faebab9a5851bc0c95e7b780e0911f5fd1857170d79a2e7cb91cfbdbf960cf250e31fd7f50c822278e1f3905b2a4ef1967260673f97557094953bb16eb20e3c5513c1309789197a17320dc62d20347e7ef5cd8792e7ecad8fc7be2b8721f7df35af29c3209feacd76bfc25a86580f24e6d1eef9e2a7a5ac10bba1c63002c718345d2424ef51f92711f1ba34c308ba7325f1830d455bf191a469acdaac0e01f666bbca7bd004e9693e0b85dd65141f3b6da39739ca724b91064c3f797db345382dae9946823acee536b4d92329529cb896c4f3ddd625ea691259881bd9961146361dcd5a28ef93e15787818545bf2d4ce38a30eed2dcdeb11dc063b43f40802619b07a25e1ab2d0eae36994b4c610daaac25f12aa3ab58426e163ac0aadcc90cf2fb3150a53cf0b60a3f39ba1a055f32b9ba4459d45c5e912a733fdcf5d578b9a46cbfd77714a1617480b5f04ac6a1c6b61253ecf9359d0dda5d7c06d05a84021d0385a8de9b65d096e9b8b94add6721f69de7c9b4ef1df47d7cac5138c13bb351b9d290a1720977a1dfccc502ad8036b66b0595d4e28008100ad345a530117157e67312510a04332b86ff27864a639ade447429e9cbd789fb4fa800d8181a3b40170d01cbea96fa289a3bfeb37565ee07447d5d1a7f592f40d6c82b924f445159ad50952ca430f3f63dedc6bb1268f8f84940850b135c29e6bcdeacc4c8e5f19fcbe916f6f01ae5471a36dce85621847f2615dbfdd7bd941ddd3746bde562a0273ee46f554994ebb0dbc16b9dfbbb98f65f2438a2e7c7b2ae652c7c549b769a27cd04189598eeb6dc20a71e53658fa2ad34c8df9b0b2d3005535dd587b0d765af0bce20ea72d7cb61ed8b542151910903381721983dd61893c299bd6c878a4bac43084beaa42ddcfbc4967a8023b390f05913998a721a9f6280f0bf61ce503bf3a195a18f14b434b4ae0ca8c8748d6adf0607499722e0c8c7a323d249f9b446986a9c817d13a941295dd97b006083e07066075fc91219bc83121cfe96bd877b8c16959bb824e5bbf37ea0a4b6260e30ebf3c7c11acc27aeb0f4d7d726b61d6f7e8ab65f89ca7d17f6577a48f851f64861c417e46c510c84965cce6ddaf324562e48b3510abb6db172da0d1909b00d261e90ee0b44714167ebcb3bea9b708883d55d2a6a1e398183fd6adb1ecab83951434f66545684f82473afa577e04360dbb935f696131036a150fd573aa80616a7ac68dd0b6c1d899063aa87f64860516c6b3aa2fa4191ed6c60cadb4aea3f9f8444246db690f4e7c201b7b23224b3d629be0c840e4d2c1e3f9913b8539c0e71d9a630656e7c79f66d13d5bcfa60ccdfd9a9f4cc03ba8fa2143d90db6de1419ec443ae5b9914adb83875af3c2c48126f69813032a3c56af22246d2e7211321693d96d584e67ccac6b647a597b54fa764e04f8e0666a061a1245d75c3af41f3b4deed4127255b90fb5f33f590458c65c409da6b53e24a01f06983659107bca9611de809635f8759680ee6e6ce18f2f4802531141d4c79abbd65ed1d7d61022b9fb3cbed027118f66b7c5ee43ba5f15b414f794dfc03ebdc69c2f27b868401d4378906a93b9b36096c22d29354c66af8d4c5d3e06fb3b8cd5e0b3ebd9a9242e044fb024975599528776482a9ac302771cda1716aac02720b1fe4f000ac2e4548a21f7ed2e83016da15e1b4b30e4c7aafe16550b392aa1f0fd2488d648a3187d4f6abc7d4479700df0fdf6d1ef846147b820688d2e88d84f2c6b6e112d879122fe8732c47f12a1e113217cdbc45a4280610ba128df377051bccd6938c5660b32764729de19d69134b82434035f5a6d96eae83753b3063bb89e2df23d7fd4af600c38af22b25618c79ee7726dd7bc0a3bbb8fa974854884d4ed3c653eb6c8aa465d15df8a61b831741b910f9d5f1d816c62a618907d3ad00584827df044bac09205ef63fbda7fd9b6ac4d9a03e1724cc152fd96fe98e6fd3576eb2f6eea7e5c864200666e604c8ccd2bacb80ab7b4cb0d55fc1d87d07b2d4048d1d75f3e2cea47dcfb177df42e3cd72e225c853a7abcc67af581cd4b40b68195058d4190bd582511680344a75669d6fe47fa39753ccf95520af5a5fef4897dceec88032486371f1269d869a91cc1bcc9d5d59e39a3628b4e8ab2a5e6f62ce9f4060b2691bd1fab9424e8118e858cd0d4266a5420fc16d4a2fbc36c26c3ef8cc86cdcefed49a6223fe2afacc1eaefca7f09419c7bb528f053539780677b81b0a972a3fbfa5b5966329e7f695cff4f6cd945eb1ca7a54cb58ab8456ac00208ee99afb29280882aa685872c0abcc4cf8faafa55cdabf31af0b7d67ffc2e953b39d844da7f9a45d31b8441a9427d3b320d912c210a5f238a71b13e6d2f26de7e98b36dce58d7b68f96f4192d95bd027eb7c7bfc58bde7a6d985b0a95a37fec420fd97f8c0b2c29ddefc5c3696c381f8b5a5664f3016ed9d2f4fb1860fb652b69266f5efe2fb9f0ebe80b3b8325dcaf116c8b9c169314f07d7a2801ee398281c0860a86b09e64eee1f5814d77f9db8970879c951f37e1b6df9154fb53a74e906bfefb2d0966761ce5bcecf45b5e80f1b6498d1820e709bb57c7317df2f0939833504e69b09d081f48e7f058dae0b0b833b1e8b3c39de8dac95131dd1374e423ca36352afaa79b86b4da5acd0997a3c56b41518b99ea6c68d9f1538618abee429cf6ba34bd5181113c5f36c6a33dae67041eaa8f60fccdd7a803d7fec04e2435534e6ccbcaa8cc87d5fef9987d18b973fb526ce27f53c62e5040cfcaa60bb54b5c51db19f7544253086a432621627249085e6dd11c7f7691455bdf19896b39e11f60291693c64fbf20db8b524f5e60b0a03c18edb5a60b7c63224d36a186f2f95306da3dca0d634604d5a520cba6c71ff61902006a5b7c44397de58b43af494630a276abdd8cb3a162cc7daac3489729f5034ae6f74265cb25793856af80a516bd4e808f1dd7f81a2267474af5f2c0fbf2677344916b90ebd3a909711e4662d805fb3522d84e268ac307499e25fd88002f7c6d6d367652d0d0fd5307e649e7fbe3a0d0079df0d763ed8c07a65f6b8fb206c460ca24b4bb214fd430fcdd5fdff5583aa3f91068e156030f863ba0156dd896f7085c7b5cf7334ae62ed22360a2d817c50429cba0c57dd04a539c02156563041c35967895fee4276940d9cca4ff76cb8be0107c02f88f66283a845519a79a3310447f5255aa2cc64d0f95536e939f805be8a4dc41f4ade8f986eaf944dd502d854b0817ae9ce894cac96762184b1e7fd581db216bc2044ff8b3645823d8b15f6412b8d2728ef66150d25bf4432cd938a010fb134f15313aea611348423204f8e3f47cda852b55ff465567939234c360823ce123465e86a847e01530576f2b1e39ed7b7377d05718b36ea315e2753259dc379eb1856b1d3f2d2071cb055203665a9dea19c1c8d1c44f85ed141157c8b5b816792222c3c9bdc06a89931e38719a74bd42e889ff990b0dd6185f14fa4a15f0990187af476c439e608e6a0dc62767def33d433cafd397efa7ff66467587842535491ff62450019e93f0de5abd34da731384d3dbea8549b41851d1fdbd85173c9f58210c9f9d3e47e320b4ab6c6ceac00a4bfd6516e6181a14ee0b8a3b6e6d12bd2812f95728ff26489bc885ecb871d82994edbb4993aa15ea82ce412d2d21686f7f481cfe6656071d0cbcaa6d289e27a1438fcb411db67c524b81782cf2c76b9288104bf6adb85318637343c80a4b12bcb6fd1095ca7ebd0911a049ac833e6f70f592163193876f9b39c80f323f6455b555964f91761540c482fbd25e888473dd25b0c26119accbbf5f2fc3311a67c2a5ff3743f7654c40ec91ac5c6846605c914d61de32c1c55fabcf7f7ccb67ee0d6cd9d67264575f2aa090f092f1c6a49f4017ca87dc519fbc774de1af063c7f5ab87f9ea28e11d440aa6c6f0d8f65ebaf136ad5b5deafdeb4723ac5342e006822591622d7f1edc549f378583a15f46e1b555a43bbf424b226bda14f82fbc6da442d21fdcce1a03cf5e1f15f2e92ce76a0be5e9539ed73d6059e697d732e2b9bce82757a5aa0ab74c42731c848abc0c442135d6fb8162b142e3076577c7f13314f5ecc113182fef068b2bc0524e12ba3f40d61b3a1ccc0df27a156923052030615bb8a346ffbdceb4f07d8703dfda6c1aacd6481adf254b35dd5bcaca578368eed441d3a6feb7073c28f6c6872eede266d0a29c65b2fc51b4578cfcc6d365c242632dfff222402f146f274ed109f7630a3a19226d6d9989f2bfe53922391d696dbfa266d4f4f438ecd06590118a6ce28f55aa9cca8443c9561877e7125ef1f3237a626dcbb467d7722a9ef65eb39de55b2c85f1f0c8f43d985815db6e51c081271b95e67c7cfc000da150c8c93b66f4cec041e65b0a8f899e8d19b8350d4cd45c626cb4a8a89f9c41f9c38d7528451bfac83c997df5628004654e513f539556ca5eac01c9aa1557e23cd816e13d282ef0927ff1467be1bffd4a893f890639c742a30d3150d9d9748c81a6e5b77a33d89887a5a71dad45202ceb855667d9bab072819ac1e64f80943c4a6c9adc0151e1988912cbf18936b4d01a07d89252783d96362390d2e6b30c4d1703899273e74b472741f69f70f7ea64ae4f14c26018a409f46028d31403f41fd50aa8c7f5e54cf81f1cf1564fa585100b08d7398e2e2f3742d6609a615b2761c1e9ed7e8c80eeeb66437725c62f1e624240a156b8b6d2f9beffa4cbc840aec77a5015d557fa789cd64e52cfb1576aeec053cf4663027268d305e8f2c63d0bee35a6fdee2255d255e30b790cfb663dd636bde3f17adb3b233dbb3cc56d13e8bd2a82cdd1e52cc756fa520bb41b839e2259ae9fec386aca1d6974ab2c411821e5625e07248f0e524f3bed35cb54c503a1c8ec3a277cdf182882db3eae64df96f1aa25b8dfe3e8a1c2ead413b2db2513ec601fc93d6aae1fc6a68bb7a18b0d7295c2937380b427ba3b67058017996cb0481009cc9e6ca4d373bbc2b126590ea564e2ee2d9bd6ef9417709fe0817b495f48315a60c767e3af3bbfa57a0234ea612c6a45ddbbcc1fbffba298afdb46afdfc8284c53d250083f4a01f58928681738b84a0a661d611bc9bbf5d291e31667fe8ae80f208a42a2507f61bbc882b8f59cc303083b48f2a2f5c7495421401b7e549f56014b89eb22683d7393da7eacb4d652d9aa818c12068364fb6bcd8ba325d3659c0d154785a6dc2d8a30df13170d641c68e9edc5e311be812615f7a17f9fe61dea5c0132021604862d34382aaef20543a6e2ede64ea1c2b391b1f67eea8ab6d1f9f7c689f285eafeaa0f15a1959c349a91d65f63dd98319283ba3536e61e03e75dcb2822b477a386eba179069898352c05bf55797386e5ee7ac0c32c55d9e9502e66e9c1e7864f9eff91e72e3fc453deef0a33fc8718b663b5e35711666763d6350cdc0c81f04af79b49bd86a52039653b20be8574a0d98a875b88ccaad2b6d6e7b691ca41364e684cbd9a443f034421c870f1f3ed0ead39df02e241ec4ee638189fe86b3851bdc8defa660e4b3d06430431fe519f4220aa7329582f4773d775404f9de6810beb695606eeb81a675c6bcc437506abb561113aff5af8ac2caaa7aa3bdfd857a3f562f8c25719224af49af9a1456042e42dc16be7594a2310e958466094dd9cc0a4b9876f183b702eaf7e9b6b4cf7f61af2caefe79bdc891f0f64c52304b5985f89c3171ad09e03af708798f92bb71f3039258fbd87fb7d59622fd014fde7bfc03b3816bb6d475827cf63348762dc07ea064880858871f456ac71c555557ca84ba3598f52c281780dd7e22655db21ac383712e62d4540a1bc52566d4771d3ebcd233ca6962ac28cd071d3fe4a57347171b42029f4da28aea153a4ebd46b50655bf0f48f5519643db8e73ebcaacfeb884c2843da27fd867e39b7a77edff7b812726e85d90b85edb48dc08a2f6f68205dd27562a58448422b6f53a03cdde7ced1297cd8e89b62f3230c21b954a2fdad597aca281b2226023558fac524780e64c4eb785b89c56596d59cbfcfa1ec53acca3530616941683d5c8a531e849cf6097ca00f7219413749bfa267f0685e48dc533164f74b6eaea184a88a9b68e85bfb3973b2d36cc5e0af488d4c1a8c28763620c09c127ed10195e0e5441c20a11f061e931ecc937f0590be254c9e96a65a803973d383874257394e4efc01854abab41d54a20aa8c484cd880778a0cf170529ccd65c708de8f8723e09d98f7605eff283b655ef160374f71819dfa3a97853ec406b4916ece606e57a17806d24f98024b90f5e9b91a9b83c9048ffa274a1324f2ea8347c2d90f7f8b54f2c09c2f60e25c4b14d91487ffb3c42bd59c341e705b03793714c25ef860a7d4d0b761a6a010652ec64b80b388e19ecd2a52c10e36cc6cb3569f954bec1af5e3aadf3591307d8897efd642c23e6dd7209e4af51a5c7ba530e3de8d7bc5414547b18879a8347d6f204f3fef8c85a559d0b65c92f919f5354678dba747ee4b3d3bdd7996de4ec5cb5e0f26970128cc27a5af0d1a81f95f70ab836fc32f6c1a27319e0b8a291e28a7dce017ce86eaebf541fdf1052ca87ea2ce304e55d7e1cb9989921c622a9d580ddaa4f9937d2be153a0f56ee3d9259216a34b4ba29eff1bb60b994ecd5abafe5d7ec7abea58a4d1c731f9b5990023869a0a14c21c09a520bae0fd2b9c82f625f1a43d79c7853d087bedf796e1a78ba73a32fadcdb6488aac05c253141e311a1194fe18714b26aa8b1015072457e12b64ae4ba385c5d69a54703f01c232561c1b4b6f4f2157541badca516c582cc49cae2bd1eb0b39d722ad71d71d73adc4d09f344199c9a05d5c6fd0a5f3dc676f66c2fa21de81fd5ae314af7a0b888408e87e8d5d47beeb13bb3066816a44029dde66e8c9881f0f985f135b21021c48cb845a476951c2f10abe100ae52f891b3ad0cdea19b11557c25c3adfcc820f3302e53091a772ce358f26dd14e4043b30399e763751c38ecf007a7fcc0b997f352d5c8b4411e022aa1b54e9873174a456ea9aa9160811178ea6ed7ca1ab94dc283590ea087baf60bdee1b036ba03b1577226b01e3be659299901ae1cc6d0d6312660589729f570c9bb87db1c487f082181a03bad0780ae9373b8f3998187ed50e478bd07de00fe101af54ba8526746db3884886c8828300d1d1e94aca1f1c7d1422bd52630072519c45e7e9ca56059696afb0953d389b478d89b63ece1c9edc514648ec066856570ae7d655641ba8ebd37e70a25a177d99cc9d1932c765f7176206f48f6e1a0a7c1cf571ce9cebd083df189450c747df6d4074bf014f09b9813370db2f1e25b820d8937b3c40d43748193a04ba186a2ea4a43d1cec91f72243d895daa6c5a573c56a5fcedf6fa64ffb525d3e026975d72028d2de26512b9b2d269d678244d8afcc6ac504bb415d6106a53cb7017ba0e622c190f23e663d5b33cc6bcd3b21e582fe2cc7813c892212eec679ae4d11f92983e46e7a7de0206cc85168122f03c7e4bd21774d03d38c95de5d8462442d5077a355fff9c858d47644f98ebb6b0961e2560464128d8f46e94af01229637fee95f129a24cb25ea12ad648063d33fbb7477bb97a349032d165fb9de02887270007cf7e1263a49b294ac8085e2bca94f5b17b6b32e61c83ce4e01e7b6f415659c04f9beee9d545dc3c226c2a77e8e6113130758a331660314a02b49685947621e6f8ba790b1cad25f354c9bfe7e2f13116466eccf07568a97a4e41d965c09bba6e21575460632e5df96d402134092a2a03339c9fe4787745bef282537f1ceea99d24b2bfbebb7ec2469ef023331801d33b0df363c73deccb7c99ac8a80fcaa07eaca832fb2926f78607feb36a28cb61798f6be9859c14e32ef0041dbff847e71e6283633949ed517377b2be898692fef11c92b4661091e2199a2cc0946543b0c62b137b3e5776f0ce6707acafd180efbda2a5ecf099ce7dc23c1dbfbe8d5c5806da03c7ad09f1f30cf66803afe5bf45a4da15e02a5a7e6c5c4ca61e908aabd6412bfc88feec292ab80336e094bc909c461c894bfd084b77e7d29c5fad6a90b595ca93c4bf8b3fc69f47c1919f6a1db49f5e895250a031579d420db18b749ec58e17e2db65a0a3d920b6cab0500f753880b05d1474a178b2bda4fcff93fb7c267772ce5a1b20da7382e8619ce30ca1f7a79801df6cba02322b8e6094e4e983b8d6edfa449435b8ecf2babcc37d4d27862ecf4cb2e03eb11709793f8646663b48746c875b04ebc2bb7c1fff836d1d1f14498b7ce8df1c065e1e33416c4d95363d6e27aaec4e91227a8637375c2a503d70682dc4ae09feed6a6d0cc853595d13812b9f66aea0bcbbbc63702e94f4b39a0772e6c4534ca667f4f21102efcf0abd635384e47e60fa9dc835988e48e490989cb1420416da7c823271e6844033ffdff86dd2bab844f1c2c20064f36609ad3ac71d89bfeba711e9a8e6bdfe6d3a9b5c17ea62a485c2a7c1f265e186082454645f0d624afc575fb1db64598d0d585c726909138e42c072eed86ee202a15f8a51b2f429be1d357bc920c54a763d683ca92defbb1a7d9fe1cf38c104cea7f438ff01718f81a807d0fd11e3ee6e4eb16cd5ff8d7b8938f744d85b49ab6225dfa9fb6f8a032a02e7a6a7e5b37fe066106307f14389464280b62d5ab50da4b915c6072f1e1a7f5abf695d86af17023459875c5eba7c21f0643f8a655b3c4618304b991f17b5ab8e9a4d6bfc48fe4a871fc165af48b580b102eff0e490f10d3eb1c21a64ea6100afcb687af534215f8f4e1caecc4d13b2dbe6b672fc1c90294d4e878b92704766ff18ade647a7592321fea25d3ec9a6835219f1d3ddd544fc99af5500ff490513444fadcb3fbd0e32924ab662b037df5a1feea2831af66d870fe67ba8cfe21dd7cc2d9f3b5eb35d07a14a62961c177927306891ca80273e1d6580b09b06276319d3466754733576b178520ccf619a8f732dd01b338ea9b049ef2c6c397bc7050867557404d4f9cf4a96a9e1617861f9c5ace3efa16b7685f3aad612c4c2859d78452c9ee54a112572bdee3f445420ee7e4e8e2b913fe76a5e38e9155df06ebb7022b3f16fe039d8c1a3f7433aee2feb293bebb3f949130aed229b9751c3f0e0f89f6a4b0b99b690a4ea5858262e47b04490335e8f61611d506adba9984829b025f695ff25e7690d70fde21eee73e24bb040e94a9a2776cd25790ce00f2809b53daf612fd7e232a32ae542f898161baca22f485c8aa3208f204fa90f5b9d295c158d1d5999c59f6dd10f86e87f1f4c4278863e27895c21e71d82dd82fd0716ddb95a509e88c6e73f5b229026963e7674b87c598d887ddc8835f1f232454880c39dc9e02709fbe02d3013946b6cf262e483b345c401c05ea3fe61d9b99b906ee498b330d6bd100f5f5cbce555aee45cffa782e4c47a29be875df55248aa830415442208c95e479e90bf5dfaa19e09977b36b5ea98dd7c5f37419ed98b2fd5f6ce7342fe719c910a42befa5bdb2b745c25afa200ece2f785fbb93e3528ec27ecb14cf7bf235135f85bc4f7b6d8d064cc1668ba8ff66fd564ee835b774e81eccd0af84679a5ca4b4fea9e70b259db6727aa225432df24f52f70debb4544f7d389b34d878a78a93805acee9a55165a034bef4a5e1b56fbaf9264daa77933d2cfde58704900bc2947a3a20f470b9d9883509ad5f0864ebf04f6970d3e0e56d1990e94936921e9bef7c8e84df74badbdb4d9a5c04b12ed51e2d77b7b2262a48e2a27e0c6164d0b216a82ef9027f843409261d5273c4d83ce493fdf7b884038ba48bede801a8495e7b7c5316adf5a984a73d9bd6808d237d912ce5836727a6344bc2bd0e4ebf2a2f856503fec0f508e5d8918bc63ef369662ecec7a13f19c8ff749a85dff212b16267f6c758d3e26a9ec57e413ff862aa90082e37735e76811ffd63097690e3336455b8c5ad2fae27d1106a873806cf0df60476d2ef68e408c69fe83c74d92c7ed245991fc0847feb0bea805c45f59cb82533d0009574e54b5e610aa84cc3b71a37be3b51ca29b2c5a3c037046560d82fba4701243868927b12ec85b39701522bcf9e4186631e3540141ad1cc1a46a3e90eaa84a8dcbc687adf0e4f3a0a41a30ebecb6a879db4acb69c1c87f7336c473c1b2a28899b4e3bafdb5e825a08e7a977c4aa3c4a829dd725d5d29a2fae8457319450f5b30e5f851a4d26b0731483a843fc343d446ecf898f31ffe9b6a489f13d6f1a07db6a2793dfd1b96faa1c36ec1cdc3e8fdf7d83e71cf893722f25a1dd61874b90712e79f0f548ef4313887f2f0e89de09d74c32e470f43ad6611169d63c2756ba6365ab49b826b4af64e936ea28f7a5f834ed947e3d590cb2a2339fb3a17004da0f51bd8c3d1238e862a5e9cc623ef2995909974c05f386ea5c1b177a34557a1cf5ce1667e082644977e86ac294f98943283eb827ec9242936f7a45b6a1787a9c57d56a96b88f5518a510083a0bd524956a64e38fad86483cb21b5f3311638dda9b3ebd29560ce0796e08985f29e324aa6c28cc86aed72ee272c02a94103b6c9c9e30ae74c016e57c57a753ae18a7af6822b7e5238f227339d9df8752cc2ddef203df9585184bf0c8103d977243bb83ac5457b3bb32a190cf3475e9e52fe3ba8f1d71412fea84656cb56051a9f88520b85e6f6bda72b012d09f2941b8e4e89624de9a80df5825dfa4f23c8b58717a34e1c281475a25967098e6a8d58077539d4103559d039887e21d6e9bd9cdaf27568f3d2ccba10af6c6024f497d1e97208e0e95481270625314397c8bdc2876f52a1d94cef053674b8553caaf976d4aa0519704ffdb50c624d77a07ec434991074c95f8b88ee4a294df4f3f340724484e4081577c7db2481fa713f195afd363221e2eccc470a088edd37b5c13059df5f68498157cd07af85c2d7f86d9cc2fc7d63da6be227c7b3a2e577a510a05ad6598c3a5c9b37a7aee966af5d946f53ce4c695243b69ef39ea94cb9e9c08f85e1566d22c7e94d1168ff8849f0bdabdb91e25e359de8dc509d594a11e3b003bd2ff8cf0a5e7b2108d4d0a91d14528d5a53230e39a73137979d609af0f16ac0b57bb21bec25f912b9a0588f4568344f7bf683a918768f82b1ba25171738a6212fb634296d0d02902bf00589910be0fafd7e35acafbdc1785c7a854ea02ad46e296da8244ad65e61a54eae5e2105f82d011a1c6ce3d04745d6d8ab1960b884da112b7aff912c20d10bdc113463be9bba2ca73b6fd10f8fb02afe755af5982273ae75cb10225fee9eff1830b8af32f43bd3898a48abd34689eadde49872b82e2a2c95c58974605f8017b9656fa1cff94779db8eac4e9ecf6c2995221591aad9afb9a7203cfb01d18a847d267eac19577704fcdd095b3b91bd628fd4d0ca90cc2461de8d87d56aea63c688988eb1035126441ddf660d7a79b67734d2cfed6c719185ea6e1f72c727e59d850eca4b7d335e333fcf1bc333d3c77271766599dcecc4a7a387f0e9dd3dafdd540c8fd3085b7035e51b085768fc69b382d3a5bf1317806cc870e34e2e516ab77793368e633900f3f16c591bbc16d88af763dc30dcbdbf861518655e1d63df9b58640ad8ded22a44178f52b53086be927618b2b67d1c11dc73f2ba77c95897a657d0e7d85d9dc75baa8c960beac9ca9c12e3c668e48d570b3fef32c6ec4398a2b7fc07dc8449880db2e6658b719f6bdfbd707bbb7ae86be8b2c7d2d811cd44310cfd189453d10ece9bb1cdbb135c16f16764feef3918423b6c54d5fbf524e1be5b1c60dff20cdc28c3f86270818f78e7d4bd3d2562288464a739e88843eea443bd28dff936fa0aff5dffc26b6c6e49e2385cedc02821da9881346df4aac684b2421ffa40b3ce1b4eada5e6904de62df42c5a14f00cbab57a0baab58c0e70436bc7c714ddec458a3557a5cca7583a8ec1e2a8df2c5f9a28e6a1b8e630677eae2e483080d69b3b22ac280354be5aa1dd791a8ec93eb477ae0e81801e47fff8065d05961a27f893f089fece28bcea2cf65396db2c583c3ef90e9373f671a9db2e493a911d5d534ceaefd1233af64084f86d928df5649bd3b90e53a74a831aee0be247bce04d5a53d8731d2b2ada5e3a82f08ba00fb573e985e4e0075d0304efe48d4a6ac457033b12b0cee7904710624a01cc148615a5cb87027bceaa5cbe433d340c4d70c98ee44a30b780d8be734a13a399b25c0614d005f7c05c61dc8a4affade814f8f04e80c52094d10737bdeeb9ed98cb1bac89d5dd047f3c2d0152c0b95d0a74aa3803cdbaf3a71d14343d81822d0fe9cbe22a56421ad236fafebefd93e3f71f15d59e7af2f28ee84314bffed79b3a066dd098a98b7bf94bb8216bf74b3f3c616fd4cce9c37c1299157afd7be39dec457a65e782a7418e2abac20685bdf2b36a4f4f3c4410b0bcfe51158495537ad9c57c56d8e3d6245d0eac3b09f5b43d6474f2dfc6b2a25a012fa4d3af696556302113d1c3eea6d1f688e57f7a93ca0cc9753e8dd712b1433386b7e943da2daf461bbf7927b68ea3fe79d8530b1dc11c03f1db3d8262ceb701bc05bf1f3c070c2c57e24b717f52b035274d60e4578c90ea7155c7fb3243430dedfd4c8345f92ba0cab93b18d95bbb9e65ecc074291ffae68174853cc24b7bd59fc8f0d30578b00da94e7f42d383727b1453af95a2c4a4a8a71a758777d1fad7bbc1c90e4b74ddc4203d32e6b660282f4f91459fe7452cb89c05c2caa40a9124ae65b1d61aab6c3fa01a72f79c89e1205cfbb61ae98cf3acf03b3c06b7d720f01c091eaccf9f4701fda9f63690d0264101f0402f51486c150c019c1f6dee0c0c56b722d2db087f74880600e65b052532b5b1078b843ee63f4b3fffdde1f7ad398c38298dfbfaa66d07ad8ede47bc4eb5512a631d9075f0751fc04715ec82ffd64220d73dd65ff56f641ffddcbb34569c7b8d279457a897cff57d6603d7eabf057203d4fe31edcba9c256e28ac19eb3d5ef152121ecdcceff502e43043ca6d3264d8696005ce8afbe8a8875a90d3e4deab86459882c5285995e3f42d256c6cd061878b2069dbb31cb86002625367c4611b626d8471b1435df8934e74c7cc487a6085bcd28d72fdcf412a113cadf134d73209df0f135a4c3766785590b17532461bb30def2682bbed417fa276f634fd10797b5b47c894a6ccf946f88ac3d302abe05bb89441da4e78cbd48155ae2a23e124677c2bdc32b218f2094c4b808b73f9ee96c0645eb6f8db87b5f70596cbfc2fd7c2f0f9579f072a270bbedb5fc9ba737752f0dbc62fc1795aec118b890226158c243b2572e8192c45152d47fd9367f9482d8b960b07f54d0cc6974b2fb68146cbd9c028372f4708720e91ad9bbccb2cdf72513ea59a9125c9d5bde53bbec35c580fa06841beb2161f965f100d3991fc03cd6733232858ff510dd0077919ab71c26baa36b6619f5207f5739cd752eb01a9f4a8ada2bd33b719e2471a6e27b0c6b2f9fea96252e52d6ad4525a0a7a1e70b9d378cec085f04dd8f26c5cfdbd1a49ab8350cd5c762f54764647d21025783f4aedb3dd2fea5ddab6e5a278dda930895127b45efc801211d9ed2a72aa78ad4cfa4d839956aa5f3ae03c0cc547eb2cfdf59ae9cdec2b3c68610dc91c44303ae80ed50a00d40116470e0a01760afc078bf10db1d7d2b1b3316146e84e21a383353b6b4e503cfc1efb48a534243dba23344215c8c9dd51aaded4e08e155dc825f6138eaabf3dac15521d60ae1c508b54729dfc092dcc8510c3a7befd1571c037cdb60e7b4fbcda2d3fe33781765382b9b3d932f4ad299442da0f5249c7eb8f33155005320fed4da7a0c01aa6b587a42b0cfa56881b2025921c26e9c9a1cf249b823f9d0d88a066f60234a975d3aadb1c6fbc5c87028e097ea14116a8076524597b0577666f0285c03a1e023edca2d6868d75304778267d0787d6475cffc5b371969446aa18b19c186b21cfdf7f3e4ae57607cb635de8a7990c71dbb3c848daef80cb450d869dcf77dc5f78cde39a24b7cb97e3f3a41e78b12e26372a380f2b364c9f15cd5424ef3f47546aa6bb8173fabed4af387cfdc7789327eac684021cc24402b1cdff4e4a8cc66ad62987bec0c9807cc473b34d572cf1d57252f8b0ca31648b60dff4bad4678d2a806100d7341138fa2ed085a4b36283ec1337a04464f9d1cce0fdbaef22a3028cb8c7f3edfcf2695f92b0ef1577fe5d8b1a269ec87908ac559e7a75f8477e5e22bea58070cf1999713ff3d5a92532eec7091c09c271a093749ec8fa1413717d70f89e9025eb3a97c03e5c5051506da30b1aff70dd8fa709982ff6bcb4679dde056ebc7edd4239c0b283d2e17f89353f8ab4bb5d64d344a3505250d186fa8bdbc403801970d0aa5b16b6b7f18fa626e36f97da47e0aa2d816232d31d367dd1c8383ae1123ae2dffcc8c41a24519f304cc25eefc64d04b2f822c8976f0d6af292606cff099d7bf28d1c558d035ee5c7b2634466d64cdabd47792d6c3a7ff0ef7c03ca6703cc14b192394fb56be5f3ba055dcf6a2fa4556ef950f3722b286245c9151e13f15328cebd31311bc6ab30172773c5189f31b127e375dae4e203536e3ac27f314f72e0f3a6322ad76bf090a742d4e7d930277db2736bd4ed2d6476ce5bb8188cb31b2f8c5d15f6920f5cbad6fd307ba31b22528ea0e3b295f772b20cea7f7947c79de38ad909486946a12ccbbf453d63a1d604a35b7b8102c61a8be470a161a5c23d29c9cd5a48b06186edc9ccfb5cd7832ca5169901f6f390ccd75d22dc2346d3f6eaa241b1dc3f4a7296a97fb1ea82149255b5a0ff5acc7a9c42acda9862ecec56b808e9ece9ff070576931ee19d1d897f5dd6e71be1fcf00a0d1933397ab928027631431dfc2f13e32180a3fb64a71bba6f7a697163ebf6185e841224351d0b46ec41d2682061b7c9e241f25a5577f37531bd29a14ce5a136f7ed835175e3039b0bffa04fe883987a04654bb2e9ec57758e08c9fb42ea420c1d15beca85f593d3c02169040741c55851fd854039ceacf3729d9e461a90774c50cc6fa2610aee300c7c561dab09472327e41b4989778847aee4254a43ca5add5d4ffe2066cf967db50a9674ced3ff3d8c588ee0f47385ca77a91a5827092fe01cad70cf540403011b836f327876771fe97ca5f3e12e9b15c5bf7b6d083972592fbeb3e6e02ee3871436857f499389400a4ecd0147c2ca5877e54c82414bae457fe04b742bac7a0fe20687ff04d14f13c9bd643f952f051fd9e877877c40ffb280594c67eea688d42def2741c382a1ea101de67ba3f05d2db06d1780ee8998def533034970966e049cecb4d4af0c7435b9d438ef9bf4691be6a4cd6c1cf842adc827da26d41853babf4b5a170d766a5fb105734f3f72491122f9e61f7e6369bfe21dfd431b561d405892266d1b7a7e60ab0b6a1b80ea0357fec0e48f95ce6e8cd13448455bf1442cb68b4d14bf2eae109417d0b14897f1bce5c64251fec5fd287f047ea3c19121ac870c8795b90b3f09bba5f3d4585c39d7ef0a5fe68a4d8da699512c093b08675430bd8a3df0a08d3b8d47ae8232a69896e8057d4b12d6d8ee408839eadd030fd255572d22f246a272d7274bcae41c8349d0b123c962c360541ea2ac5afdd626fabbfa2c2a6d3fe6c5f449b580357204b62c6ada335481a720e656c66f6dc26ff72c2ced0647fa67396b8fe41bdf9c1fb743dafcb3262796acc419181754934b03f9b8964d59b3cfeb5d6527d08d51ddd7d752b0094e4e6bf71b94078fac51a819b89bae0ff1a1d2a1401c9359151b3daf2dce996187f5825b9d8191e84191c7077d720aa07ea891849f69f04435ff21af3ce4988ca6d1c844f45950693003757f87359638528e6fde95a3feb558347633e4d4e38721b1377bd489e16a62b74bfdeab07ab16073b6fad507c7a951f330f7dff95651b0cfa0f0ffc2efb09e9b768e336c13a0dcd66e5149cb99b96a4b24c11a9416822bc2ee82af2f4e6ec58118957032db16e2ea1297cd62ed607ff50bed339744ea09025447b9ae455d85fe5b3eab2c959def340d2d75d57a759d6306e725025852a0e00ee89f542dff2eb3bc157e8108a78dd941adea1af6839fd2f872ad8726f4eb499ba2a6fcdd9bc0d21b9d3123a13dc2d59f682910dd02b47bd317de60d782639f47493d163f3ed9861ad1ed75db93c37f25680779641322ed5aa2a8bf9ba592fbff42acdcb97a632d5dac06e9bba8d1f2aeef1b263571b1b621a6277b854f907094f9c7f935769542b306a6e1e47bf741d8d6003633a577abf917db4bb4199e234da9a3117ce751829a9ca7c7b823027b0c9c96cf510caf3f3d3de2304b9fc9ffd7b5a4ed03ac5891b3e07eff95d8ec644b68e99e733f2cd7a715dd344ff2905dad0d4c1afe1c4e2238c86603e8b71cff8637b352d8acc66d650852833f5f82e7c722005bd3694d1c20d6a59aae556197b6a207b0f26d7031192bdf49ce3f408495d6e3c02676509ee7c470f2bddfd4e2ea18a20d72a10ee5e9ae851d90762a08868950c7c87b878426d6d5f5b74ad7925d5bbc6774f4a4a7ec23495c688a5eed11a7e0ea8499f03f10e9a6cf11ab6bc4fce165ed10ff5558e40ba67be724a975293e396c5d87b1fcbb7284da5f8ec9506b084f9329c72c4833d33c3211ca903e6ce0811a56676e0ecd095c2b1229e576e28759f344ae52af53091276211df3e8031e880bf893511b61f31143fa1fc097ad3f9e7a20e457fd000a42161079842e69a4a915172667efd6d470ce15a4f4f43359779e75e072eeb6e318b79274829b1696a114227c850b2cd0beb0d4b2fd7cb082c6d5bf14be286124605cbd16e1330f8316d97ce324d5730a2aa724d395d079b9ac6a3a24a65faab50ce843ae4af6b77745bb7aace745709da424ad68728319b67de28f9581eafa31038cea042c5bdfcdb3e62d0d139fc35da6c4f84ba237943fad12091b050ba8c72b63f3ac1fb54b4a30bbe4b1f36adfa7bfd4b65e871a5c024cf48fc298b07d12302e16507e690cb51e4592dae4e0560ff458e64d2de310d2a3be62d577f4d5810fb6731d7426add4422962f98518c67e5ea30abd187eaae7bd5c88ba1fc1da0d82e58f92642634675c543f13573f8bde61a58ba48b0668ca1cf5b1adc21ccbf3948b5d37d6e2f716c48c21255d74135874f5ca3e641d18c1e12773de46a58ed77f0c0c8960f2c707da9677c9af0395de20de032a03c133d1631ec11b8b92f0077c920900e315374337509f76784ba0b3e89e3207518cc1503b5fee6779c710eb10d054c016f48f81fb11f080c3abe594e74a100bb4e245340a6090c1303b9f58116fcfefe7c60beb6e4ee59d14068ba2a1741e0a47c75630722adef822d36d8e72036d0268e7791917e5a433989c3c0fb8978c61104e13c96d8a24cb5b2deb40320bfa9590f5a0ab040d4e63d401d54b6f1254bd52828b9dad92eac87dc62de50ee59682e31615be85f6422a196366f67a35db32fa0866da14100b1dfba22e020d5a91bdf31800448280d58fbe758afd8f6cdbe042e678dac8fc3e3fdbbec82654633fb97b5a0403629a4befde816b99ff9499a9f6ab15aea2b9226d66d4aea91331978a1a3d9b78e0e58caeac53d700733a20213df392a215a523b0627fd71ad56ceed21974e70d9d6fcbf7086d8b03d55616e871281e3dbac7c678e2354bf1bf655a8d02e95bab455dee91ea255485bcd0c16d31e5e60386343e8d304c46d4c378f6bead6baee0e128aa6d81f32939c7ebc155558c82f4f57c72be48102e0cb91d8d1a2edd849889d9e2114fbaab39e56a4bccf483c4b5832a646130abc45e83639654445e0f513bf7aacbb529f4f0488100c47696b66fdd3d4628f8c18cf454b960ec2256a3ea1c0045e0a81b48f06a9e73d5494d2c26ff9d692027b5303f89a3a15d2dd149fc2ea7767347a69729bd3d9f120a4a45f3d61544bdc2168a88cb91d9151cfe6dfdf37a4d552a887877a71ed8291b8cba185d59fd22c964b2b011e9f4e4d1c622680e0ded64d108c7b036da5675f975101250c8d8807045c2c8b0c01bd6ca63db6dd2b0392df95deaae6177db8130ea3594568e500ca0514e8566aea43fea48a7641b25cc504c7406533fe2d478e57c26f373045d56e1c64048cb1fa35a63cccc96e688291ed9e201b18ca636579068c283ae489f4498891a3ec9fb659275478dab1acdc1987569098c004d3a8a2345f7b7a182f8b483369ab0154d242e0713b51936ac65704019bf1b74d6d698d9a924dc1cf849bbd5e81688f989cdd93f9f1fd4bafb6a25a4c59b9003932f8f46be265f7bc843dd3fe24e2e24554541a9e510cfb338557325f983185fe192237442ea2090ad59b356b2f43b20053c18461bf4fa60e37fef9e96d162d6315cad3f4a71a0632f3a876c402387d8fb4c0a23d79fb4a294296d12e97cd74d31abcc50e1825ac6d5060c8402adfd92cdbdc1ab15fd15d0c60133e4db28233259109f72ac306375654cf7269eda5c50e2cca28b2c3da65f6a57f6dcd1ce959d676e91656f7287e49d255b492305cf30e51a909c88e16a8b3b9d16d475087fcdda58b9ce5381e83e37f166c1261ce7388cb75535f783821a51e3846c133d85e410c481cd2f94befb4f6e4527ee4c971563f5a5c308cf2413eda0ff029de60f0d3297a09907327226e64091ae1783bafdfa0203b06a17acc68919674d76c66fab648f81595fe09288e2241c33a53bc799d37b296dad13717d4fa05809a0bc17c78373082689b6b39491c5db69aae494950e742f1dafc8d3904ff85938bea270e6e0706dc0dbd19bc7773928293a49686ad3505edd7a14f16d2a9167efb1ce50cffbcc0fe0f55661d2bb8e0ba6f177f7ab984080a8ea809322683335b81f09f11151fc271c1c5f106463ac51cd06ae228f9a2b345ea36c844ed12350c2f880bec5a98cbd9df615136c87d674e02d696e827b1c1f992d92bc8956b1397e95609ef74664c06f0cea6415cfe7106f7c0c84766406678b1162c85dca469474cf2c1e5ddcbb4a57d9786d874cfd5bb0fce2679bd692639df291794d333183b14d41f86e4c080dc4c1bc77575a90260e07414b531e63707921f27a40d08fde4a4607de91f940f66f8f5f58ff1e259128555bfba978d4ce349f0be8b76a3509f4b6cded81d51f3cb2e24eff1f0e047e1c260fca455dad2f0a7e651b9f9378561741c3c6a57f5723fd7d10f38315d817af0e7a42188ec976dea57ebe3d4eccf784c59d482831af8ef021017c539a47dc6793aff72f929d7dea30998f7fe7c7d6bf863878eb05186b345d0c6fa554fd796a9b48c9300c8a98b87ffeb0bcf0256887891497dca810268a939fd4fadede2d6c1788a370255f7cd226ffcf6558ad3d0ad10b5e43548ed8a473b2db3a5ce1032aa3103d92f57da2967145f0c706efc0bf2f5a95069208b40fd2d2e72a43f904cb0955d9b3106b7c2ff73455fb54e452e4b6557be5262b89c3616da2e186f2e0d0ca6280c27209d418338f6e8d4d51980184e5627c1ce6b1ef216d08ae09419d13256830f0614dd92aef4a16828a473ffc3cb7695b74b8eec9be21d9283568c322686a02c374f25c6a75e0004b5a9f560ee07ca19e89c39f5c45ea2c40ddd76f928d094c1c97602991b535b28d0d7524cd19f753c3be60389a53c165db61ee9fada660f5ac965b529bbe580547a84cc02fe0d87d397db1335366801a1825fa045e23cf3412ccb33075977a8fec8435a8ace3cc52f78913af27ea32c08828b7ba4f9535fe00817c2a77af6bdf9fe320a79c9bde44cc33d05fd6e827ca465fd4b69f46416ffe9f4d5734bde3965ef5afaca90c07f29cb6108b8da21d5f499c6fa2a78b5dfa31c43e42b09311c684940e95049a86676abd91775e8e2b0a941501b29fad524c0bf98ef14eefd204bdc6d3f6b2641c5983a2d4cb408cc20bb799084b606c58b8062c92176c264e0e9a69c13c174a90a9bfb6a715c231d8b91855ff69b7221d01e71882cf22be514a37b759dea20d8addf1502147daf36643054840841b256420bf37200e4cd7c45f69b820faf170145d6a3b0b780eccd51f2954559276200cca5e840f19a93b6e80f7d8630eea6a7b85506742c44a57e1fae96ffd0c4985f0393e8f6ae82cef03b3e8187278981e44b5fe2801eb141aed571a8e6fba9fba00ea8fdd3fede7621e6fec97158ec567046dea87a14d36b910e310e792b5b3fb2a029063b5d9bd367b8b2430c6b2026669f7ac9a44f4a8f8f5b05bb47f13f74bcc270d902d752345cf3bae6aee2a243d8458d2922f15eda7ed7b181dbebda332fc616c80dd080c02c29cded26bed3b9549a7bf14b0b4522850a5736f0bae753cc36dc5f90ab613989093f575a2bbe66f4d8e76540aec1d6c21ddab32c2d38707e3bc8a218bacbdc7717e55ebe7c63d4f4911a0267d5ab68c76ed1d10b8b8e3c2429325f5ab5ba7ae1fc8bf98b5dcfacecf02a84cbb241369d59b1fcfea5b7a7fea2280c7669691785a6f062af0d7cd16d3a14ddc6d23294a9780d29bf3a2d7e8b07283f9f3d2de3cf8018e32cce38adfdf58be18aa17566221ebb17a0646a0b256e175053bcd1c0aa7e1077ba1e6089c029da8458ea80f175dfc4c90a9185aa33e6df2a18e5dfb8c739a85f6b82443e9051610d6b8ac1e0b1c8bed6e3a918f615784676fa141fcd8c526f600ae5c7b51bb54d58ca4b70d9f47ca03e0568fcd6189a87dd11cad09d7e0dd48735e1d615575be44184bd69ebee006b34cc73a615c9455eafdb74cb04b04dc1c369a7741d6144dc32782f17999f4bbbb5a65975ec1af6ad64cc00a06b100570cf93193c22cd3f157af3e2f5ab2c4f4a0d28364ef164d301c5f36e91f6fcabe94259afa1495d3ff63717ae21e0c496bfaf990a28da4ebeb02aeaf1f9c4d7cfe01c88cc6ea80877573752f9d9818ca723159f8b537172b9da309a209ee7113a2fe68a473e45b4e85ea69e2b9b297bd9119cbbbf1f6891e9d737c0052326e91df8ff4259e5192fa5c008e9a833a70b3061eb73fdb521499084269d65a29a12bf402f8684d5d21ce25e99ad0adcec8401af6b4c635a974e76d81b2f5c3464340bd19956ffbda8a4bd3c4fd94a9005f87084d0d9d83172aaf76c54c8851bc306440d1726f568c71dd8ecf87f5f9a01cc28def7039ce1391feaff31e147126cd7b9a1aa41b07ca24d8769e24d18f72ae69849028e7ee0965a09126442129b76847dab69d5ff17c06efc7bdbe8a00c9cda9d204e41bc20be21defd603b13ec05cc97765f08ba4753545c108811cb554b55a4549ae6e8a9c03b62c7e65fa499050c195af8295bc2dc97c09215546403f3ab24deedbd9481484267bdd45366d8cd86d79451493bf703270314b293ae2b625ec33432c20140587f32c2292c2024f0854aa759c17c582972c0dc98a0d73fdd0d4e3151d17cbf3021f8ec523467cdac817c5f78a377ca7f7d1272a7e839446e000c4be511093ed3ca32f1f025828653318def00b89603a001a6535e032d263b87978cc7fe0118bb2acc912b4f4cece4df611eef6100c806fae66dceef2a18324f2d46b8dad1e8b65df3d7f345d64fe3fa2e71403752814678516d720ed785d6ff47b4719d9167d03fc3a3761d8a4e7f90d1abb119c5b6138b157c3589d6a204ec8a18d4b2f5773b1e973284ec50d96972f141149569d521efb6a75a65ef26920fd829b8e12e2baac52d67546bc691a3e66f0fa400b76ff704ef17eec2176245aba041addd148bd1934997fa5b1bddc8d6d61ce5859967df8cdb38f333edde839e70663b65e87ae9bfa7b590c4cdcb1b0ba5dc7ef4ca5c9ac12c368ef1f95848fe456752a0c6c9224867ef46efa5f16d9d344dad94c3b98548bf931752fb38db60e306e0aca2cc37d3000d914519aabca1efd35133373c1e437ec983ae725978fd7eed88ee39232b8ec63f00d2443354b610412cef1e63beb8121bf17beefb37f427d070d608c5d736e79655cc2f9ba69f6d4df29a1b30e71b970157f302387985c3e09ccf3fe2d7dc8f63f5a89bb73f7b011c40f2b6460b94ad15dce2f6466a65a4b207b89e9c8df41cc64eaf68cbbb1e1f7d38ea92c49411621b19ece991db603cabcdca83284f6d702cd8fa050d8e15f5c087fd908686b9978c18b74a2b8be31beeb76cf9c9231302e7f1bbc4f4926198a738a97629adf38330dec4eafd7710ba73f6c5f34b3b4dfbd89cbb0fd4895779200594e9a56dd20c1b0c71e67ef0dcfcfc5df75d828cf5c6bf4c6b0e8f64ad6f53a9f67b46376573a235c7d2cceb62444e75b617388e219d5c3c6d89a7ff6e83fdf3bbb2095d0fbf01180ccad5142982a1ec0c6e00bda8191d45ed4708b4dd936f6d2c03cf2c09b5bfae7840cfcc1d4f3113398327e1db0c0f38ec9d9949ea677bf3949de8a21582642dd997150291d6cb96243c86e84e938d214321028adcf15c2a1e204d953b7c02d54f9db914fc87c94ebe7b5541218fc32bb2e5dc33d11d23ba04eb555181c39c1a8deee3a2790050670cdd379a94329f256c38809a59eb31da30caaf2eeed52df478f4c715b9badb68917b5e1cb524a6456251f69b09f9cacb04e2c482c62cdb71c9cd934ba57dd1455a1b5ffb9f1228f2e5ddd95322df1694623e8e6e3e7b26f119056ee252121511e3da9ba8e793c9e08827bf29e799c7a5d8f55f269e392246977b5eb3692335dfb7191bce6784ef9c7c6b2387adea0fb177eca241e69f716efef4ae20ddfd7f803d5044d042e9633ca25653c7811bdc027b3161740fb9e90dee4138cf16f9358663f596a5589f3ba707ceaf732057dd97e426dff2dfbddd11c414410bfa3c625ebafc0eb296ae652ead8377091992774f8dfed7ab623d4889a920f913029182eb15390adce534c9fea1f3ffa81216131c750f90bba18486eeaec60b38d34616572cbdae01a31d9f4b98faba55786612351d9c8a990a5708860ff9496dcab21414c24c9ff36c28e021484c90d126eda29db4e1599b94fb4d5c9c73ed1b0a99af1fafa6566cd769a92326133848cc07203d75cef97aa13ac7af04ffdfe7769a4d0e80e3c3fe0afd1ceef3144c58c10141b8771c05d9c5f6ae4d7f23d5ea7643e2fd97aa687ab975fe9df10f3bca3046b447e4a39fe1c79baf8243e83b96c776633c0c2d7c05860ec8d9c14a25f7809d9773e0bf2045b78e39b91e43508236894591fed38730ccd45ea91e7452ddd5ffd24dbf0da707e49b08eaf23c5fda93aba941c844653f24b289340dc7c166040a26f1fd57320748fc95d1a3f49fd88da4cd1fd119b29315184aa7f92ee47978e2ab501d2361d5afcd014d2707d1fafc18f77523e95e30c16b199273f0d09f8aea856f7cce5045d91611bb804ddda11579d6ee2c5918fec0649ccfc3de5619167624f7ebed3100d3bf97f447f77ebd889334495b91c974a0d753c1026947523602f2f454e94e9e2596db35fd501ecc0f75f1e8e51e115f98aa540f56ebdb12ec0b53d1fa473ee7e18f16ca640051e043bfc8c73955be04ef199667923a275b5e3217ed104fe103fcb061835b639fe116d319295534888f3d61a878c222f666b9a64d66ee8bc5e1d84ddccfe8c366e1e901d7333607924e309ac1d295da7c4e9de866805951ab403fd5e9d2589b0992c71b1205dfa0231f41e5c3a5f3f67cc15c4e169820c154cebabd68a124e1b52e07f09074de0b055fe3a6ec73ed642cb9a8873472f1c40e24487ebf8c1c441b9c6bc6cf175cdf46f024789b31b29d050ed5c2a126a81a6fb08d36449d4ed669547d181365fed08863fc74668e53876a845bb51a575d392acc82a14788e9f11a5c12e353f972ae89f7eaec75cc933f999e8d3dd4d8b3573f337fa0079a3f29044b35baf00d0f127277065e3a462b0da39c71a03b48c6432c854bab535ff22cf2f09de1b4634d1fcf9f7d6efedbfbba706e86db563fdf3dd01c2941a4d376a4d871f62f43b1f06debeee3856ac62aa5bca4c6b427c9289036cd600ff1adb62b89b4c8dcde034fa41d6c5f121943fbe76dd609e1dbaa319ec0100121dc3cb4ae3af004c1318b0bf90fe90a86f4ccff8acb70e8b71d4b57c44233289db4f744d55511e63b1d0d90b4cf3e52a4697fe5c211c0c2865dee95cb353d1a5020995b0b55555bd4787c67772b156f0e26e37a94cda74b9de9804742acbfb6dc62fbde90fcb994852680135bdc1aca878bea44b73bc05679213a1726f5fc1d2e3ea2587f0b7672e2e7afeac70ff3a7c70e53048b140a58f4571c8e9fcd6aa2cf7532344846ec565861cd2ec7628b20791ddbb78fc7aadd95d4a88511ff93e8710d7698b08b6a79fa4ee5190f607c4eb0b9735433fc2c31c04a5babd4974315bfebac326fe576269262607100eb643781e9d4c101b12323ee8274a3e1a8938e8f0ae11aa4d02c08a247bcc49c0f358618dde5f52adb79e5a3bf48fcddf5167fb07a6c500ca4d19cb33bccbc02897e799e01fdb7c386fd709f6b4e207a8f06a0b5ab3efef33791585fa5823bbdc27a7fa25f9f04bb4f1bc2db178334b025d28f955cfa45671f299d1d4281a18461280f81b5272f242ffda197d535c219505c12242885a2199d3455b1e1816bb129e97c26d6b014b68af76802e21104e4c7ade8d22b423d1ee0c9601b86ee1602fd4cd3810899bbbe013a90bfc9c608775b769bdd815e360fb56662c34f4c2ff3054035d72993194240d10907beacffa7e31bd55987c0a4604aeb394f515942ab27945df693a8fc93163fc7d3d6fc0da5cb90a5ad1c69bab3919c62457cef1d590b452135daed53eef03bdf712a5d860ec8566167826b8331ae4f33df8fecc953566efdd0d1d92572c823dea0012fc61cc6aac10863d5ce8c687302583a44ae831f8022c0c9fff52b1bebe322ff6603c4a792a4c3a6760179f5d3dbf551fcea3e7a8985f65419d177035231355a9de4f4a6492a114c42b9364d286a61bfcddfec7cdeb5ca2b095af4d44a31b97f8918eca30749346802d622e7e5518348961b06861ca073fbca6991f12478881f9e523869a34eacfb1b4c5e9645455dd0177bb4d84b43c0b694a50b422b78fac3f1e8021a463ca80a4f1526f8fdc402f2e4a50dc55226a07beebafe448ec49b24d2371bba34049cd29206de011f62dc1a7b6e7aa5dcbbad731c7fab47da2b3bb040be3ea66c092e7e73eb574d8ac836970175fa704d464cc3d73b5e156a66b6797fe00e37770677e41c32a27a3ded55ec27d628bff394bf82afd73169633a4bc267d83ee12a44003eeb374e14bd1ce5d73ab0b8694f3cd5244d7e6ca00355ce64292ad93397f78d82440811ab7f9fc6255cf3f8c0c3c314596a1d986a413d76c9901f19dacb50c5e12f8c8cb253bfd6b90d450bb250e81c23c714d6c66499bbeb77ccb5a72975556408eae8d14db53b5d09ec4fbdb6677be86677e38f2839f4e773691ec3747a113c93a3ac86816959d32078fdecc92d1dee037318d283c39a69b35848756ffe4f3d435207acabf3a28f29d1ddce96933e267062a1f00635a3470e16f40336515f7d0e2d5c6608ce92dbcd66a0393ac9ec0a5effb4f72a365e409f74d623b692791d3b711416f78d97e413d867add26bf0d80d44d1febdd96b9457cdbe191342b8f3209c132aed5f96d4277cb4a3b60a1d0423dfdfd548d4409116465987ca465df842e8449dcc7b713f0d1cd08a7d9f6944e07e0220cc2d98faea5a3784f32e66faa0c023eb755587f8fb85655f746fa7d75b09b6dc3263a24184d051f878af5933f015c0d5336c2f1344e38c477eae1455e74d34a98acf8f4085c4ff945152faf8956c644aece4993bacd39bdbf533d48f8064f44e0e60967eb7a05bcb5674ec68d68748e2feb531d5bcfbd40587fc8d34335ec22d9a53bd590a813f72127c62706107987b0a5b2974d4ade0bc76f35cdc76da6c25d43f1e2e800361b83ae77020a1ee59162a35c7fd2500f2826d3032b85149d633bd10efaf7f39c508d441ecf80c795d7fc56016c114e6e127b29b377cc55c1deb473ac0501ec9c8a4669fa4b8f3e1867761bca5d5caddfa9bbb10e9f62cd5f8901fb90ca5a0139b2d61474251b9f397739065593b26e373742eeef80b4ed04ca5a286c19311f31ec0eb42e4244c0ff782dad6a634429b3ae420faf7bdaede74a8750fbe49b3af51eb84c56fe31b5417286d6749874c70cfd80d96d3248ffbd91f07147b946798a62a49390d872636d04afaf56bd0f0be9347b69578df3a4e57485e91b016226dd228a9930b8e730a11ef5cb4622ed435a1121d6b982cc4f30655f2c11b6c160d163ae39c93fb3eeba666a7418b2f9d4c1bf447ecade57d45b6649f629d03acb60d321dfab1e0615f602deac7903cc49a084efca2036608c3684382079107db7fc375415d082517aa6c30a54b667b9bcfd465da1c3f4bd66e789e7033092b0e5036610f2f7361a0aab5f811fb9481f2bc3c0a41e5eaa29ab93e1838ae875c0c37db6e8c6d9d10040a44e4f0f02671a2cc92c42c6298cabc72c0c0ef856874aec8651751fd938d6eab49ea5d93c80584ad89682dcb4301341a02a3a7b5c4069fa6c3562a51bbdc3551a2a03b6efa91780f4f360c924fb236979b3f287f34e2fe0e575f94d06498db059592a5dd8ac6f0cacc6393ea517b79e11ba0cd6924a7563352a612e40351f2aee19e0d42499dd9b416f01133fce9a8843cdb6937c507e44a24c28d2dcf0f42d4ebe55e2d04adc47e69234d7fa1ad0dd116f53c446e592d38a3c3a7fbbbf76da918968b76d332d9596833025ca0b460c84b55cd9406c31983c0b8eee456b9b08bea80808dd19ed7c58f1a0fd567b12d02e5b16bd62a9862cf7653ff5149bfd607e638ebf4f4fc8ddebc020300bd23208fcc63af36ae901083e219a6a537d51cd998cd14f91cc617d7ac900e7f3748e8d0ea3cfc6537e05d1b611a4ecbbca7e9a64d17b6a18b45efe1cea22217f9ed2e74484b788ac941076e6f19380bd8e4de4ed4f8fae334c889fb0b344d6e9ab64bd7d27bb343fec024e60bd8e2f54546a263b9a005d4e9e0bd4cd6f47f07e3b7366d7308394a1a664847d63b35b77e9c5edb9dfbd57c3d3f1492568c86fb73af4dac177b75f2a250460f8913458d5911a67f998a386593178265ff040ec4cedecee2d3949ab8eea9c25e4f37e699f6479cf2128bad477743a53914b9ee21c02b3218d546ac949af496fc0c35ceba3a75cf79e1aaec617b6373a0b08e160be88a48be7c0176aed105198eb3e2611cf44f242874fddd34749a0aadaf83fb9ae814d641c8890121073c5916bd7db66f47ae0010d776ecc9cdfeca63c4e786968e8b529fd6b4ed6d4117b120e5fbfdb684eb6714d61e5ac847904a5d59206a152912dce8ebb5ce88d70367e9a9970325889b8b1041368ef88fb6cb3d08f9242f889747344ab290625083ef89589dccbcbadd736eacf516161f949ce6cdcc1bf02c3efa4d013d1962b8a73933f918d428c4cba7987b83080d73f1eca4bca19226c4d7c5d5080fd7a289c8d6f34fdedc649748f9fbfc71e25a3704d6ccc214e17b4ac7a51d3aa83d61972c72cb3d6cc9e58b1d4fea12e5c4f90484ce9ef699351c4f1d7e0844533521e7f9c51de7e52579cdd294f09f40697383ce92f7462959cba3797c245dcaab7d6d6561854d43937390f76c4c98005de9f41f88b019ac260e843a3b01a13d6fc166bf9b73f134934f37b2594d60d69f6453da4c47da6dac30f544a5d93de5e62c26902997153fe03e229d05fa07e447fbab03cd0530cd6234d94e9ff5eb2d32b92a19fa9a4b3187a72df010511b58626100c5041c25f6d9eed88b8fc7b5909823903321a69aa93330604b47e29ac3fbdbbbbf76ff2813bcc1f63d5cd7f503352dccd49779a1faf8fee5ff34128ddc41d2c50ca4a22fd0d4d9414b51c679a541800a669a9aea18fe4b5909854e66d10d0deed369cd9fb7ae5557673ae275b83abbcea89f025d498ffbed560a0471067989e33994fceeba91b9f92d381b47885cde63b8201517e15f1e94712a7da5fc6057f656cb52ced239bc05afee0d721fc5ae4b02442633202209ec1dc743ed82d05bf58970eba2195fe77ace83691f6219265be07b023b13b3821681a070d53ab01538b198afad825c9864fdac277c16f7d695f991617bac5f28ff98305ff5f642ebfe5dd2e62605671d6b6c307e00e1a76ac1b60986e37f34209ac42b6cb675665cf03b87dc84eac3cf68c33e2770f3d5f4b414f1002f13a99b7d9cd577b54aa75d6c4f286dbef05f741e0ed2feb5bf808da5ab177122aecbaa15a9e6734102042bfa04099d950f6c43c0c0776c167c94a858bc5408a9bde112444ed1458089bad405fcf14fa5a2a32f68036b77225efcfea0c1d3fb23f259d15044ae045a05dd8e01fd5ffea9ff04d1504834d5fb24c00ac77b0f34c21291e3e918a843b42307cb9c023c87b5b28f2fa24760be2a85ff6d0a2e8019e5b22e3601c16b4357b9e8d795ff018e95f6f4e46ea8b781a3a353cb2711da667c65e1de234fbe3f3ba14e4e9f1577ba7e889029bdf41f7bd3f7341fd9cae57765ae1e61791b155d0bcaa4021d4f4fb4bb2f90964029aba50fdba2c576f1c67c170aaa8ae58aa74653357334f9d1f7dd1d14b4fb4b5a5dbc1907fa6b29512a4aecf9068976a2516bf51e0ecb4c7e164639235faf37cfaad7763265ce239c51d09d3641b5bf9528759282e64d8b7c85da8f2bf7ebc61672cadde43538d6aaa259313dbc61ba77a51b5f68f35ae7ab60632c561e000a1cd3b13a475fa57e4d3fbcc3b690e08b6a8ff0ee2d6e64ca1ec0052aaede77dbfaeef61657f5e79b5c302fec99d8a8abee0f89b5159bbd025d805f70b4ca663221880fc0f7344b7f5d9383dd129e15f3db244c069cd31861e39181d9c7b4033ead9597642431c2e4095135a8c420cd0e522f0206405700fa724d6e2a4909b22ef074f6eb01817a35e78fc2c3deb0b665b11d5201159b486b4ac0fb9a488b26572ab211d3a888673e634e301c26b1cf4d755a5b4f4a5ee73f958caa5a1a8becab153a9127d7039dd88ca5fd735b31e0ea6e612739c67258fe48e35ceb0b6aedd6eb36774e753b8503f5dd27bcf8e7601f598d3af6b154a9181e54fd89748725f43b8025f507e56d9e45749b347bc64a980371ee4ded105f6217eb96b6cf0acbd98e6604e5cb636bd6f05b8ee9a4df73a504d067ce7e4a330f7c66a12eacd70db95e962eaad17eca6734c7fc08139b8724b409eeca850288201af68d633d438ada07e3deb067fba4ef6674e9648dd8c3b9f019e657ea6d5315711bab002d468bfbac63564a2928ff628eabcbd04cab0b15e9098a12fc0dee404eab7738314cae94a8bac6b2f80e70b84c471c1cc46597264b9224587c5509f147530fb640790ef2c991205da83f8082867411cd03a856acdf3fcaec6d346ca68758100d2324ce6cca73e2e7f1ecb2c5ada313d877c7d8dfc694d83e16250056614b7ba0e1b87911de81ca73ffbb4b329bd586eaaa9dc99e4a8b8ba5efd231b5f972c67c234e4b8cf84575a7c56a4bcb9935a7ee973c39371bcfcc829f3a90ad667e2be5d3937d25f6049c48321a6a19d2f656107d1cdd26b1eeca4d22d8ac36c4b148705865ce100f318c213b9ea99dcf0fc6b715e6900617f20d342ddf93c966b4ab4ebacda3da4654f71a40bb9c9d5afdafe403e2d12b52fbbe2c074c325a7d5f0150651fe229083dc1cae44975826e9ce479c89655f0f376d838e5b49c2ea78ff693a7fca1c809903fc8b68338cd1e7a1bb57f4eaa6d523a207320a90609c5e7c8d1135b463df09d90d52642b102ff8023afae1adb3873afc3e4c0f6e737f2ac3547d9143287d3f3e2ab3e163bf40c10e37d510cf3f83462eee9facb0ffbced02b4beb5c4c21a01c41b10b99e4774810bab6d886e392b7bd31a13f7b5fa1b2078c444ece26a7ef34c89a487e59db99c57a494dad4df5f54b4a9b658fe5f449883ed95f73f814c334a52d4e734aa12302807d2e78314802e4c6decda015a270f7ec5466ba1b2616906460ee2ccef856f44601fe7e0df4eb41ea69a73f0794932f4df77574851de3d3c1bc780abdf43adf42adc19945501dd15ba2f5461aa3185a141f78f31064ccdb068c7163a2242fb4dd75888033128293a5f49acd7013d76245a0452182ae1ddc5adc9f76a5f9277d42218b2274bfb0b31bdfb2c84639aa4b8187c5ed8b4050be136577d0825ecad0beacdeaf77fa4a829332fb76957f31c39bcba0c183ec442cc90fe27a2dbafd4e1c791aff374b5326ba16880a16d98269abb731904dd1f8eb00aaea66bfef72d5252931d84cc01cfabde3bea854b5b145ddd37bdced843340e0679b6b4e7ed2fe318fd0cef76d160543722e0c3eac11f901ae15db25905dca7a17b81c6d51869fd12ea569fc4b072d217786b4b4d73bde4b9bd9425bc87b33d6b1911e6398673939aa2f15ac505b9a1ab029b8452dd0869f392daa28adc942272615ff2db16bcf084f01ec9fcc2f7f6a632b2bba8c468655e985a3b271c25952b7ba3a9142a23515947e79dc051e75d70f84249a4b15ea2fa4ca9ce535c5b6213d6bfdd695da87f1a83971f217a3a0df0acc3406106028b2e33039a8e65687b21d21fa8747230ab52c175d314ec0d1c3562ac33bcaebdbceb311671ec02a63962c6d7f33c2d6d807350750b5c8df9ee5bb7a25d053c80fc826737cd3282fbb4e7279a86a9a5a69793fb0bfb7168a0e9bd76e2e2aefb1e766dc656ca57a5550629b9fb637bd9b0485377ccd67333eea735599abc091958592f910da5c974c01a450800c77c444f77fffd5eff8588896d491bf430aac29e84c1490ea516f5dc119fc5a3780a1d4c57ef268516e832fb95fe98e57ed8c4derootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootdpdk-thunderx-19.11.10-150500.5.3.1.src.rpmdpdk-any-docdpdk-thunderx-doc     rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PartialHardlinkSets)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.0.4-14.6.0-14.0.4-14.0-15.2-1dpdk-any-doc4.14.3e@cwsc5c47@bK@bja?=@a;H`]`f@`_s!_i@_2@^@^l@^\@]@]@]\@\Y@\o@\I[Ѱ@[[['ZZ@ZZZH@Z\ZTZ@X6@W= 5.9. Also see here: http://inbox.dpdk.org/users/CAJFAV8w8ozEkdSKdBHEHXJDxpChorGa1jUsNEcPMptG30bWykw@mail.gmail.com/T- Add patches to fix vulnerability where malicious guest can harm the host using vhost crypto, this includes executing code in host (VM Escape), reading host application memory space to guest and causing partially denial of service in the host (bsc#1176590). * 0001-vhost-crypto-fix-pool-allocation.patch * 0002-vhost-crypto-fix-incorrect-descriptor-deduction.patch * 0003-vhost-crypto-fix-missed-request-check-for-copy-mode.patch * 0004-vhost-crypto-fix-incorrect-write-back-source.patch * 0005-vhost-crypto-fix-data-length-check.patch * 0006-vhost-crypto-fix-possible-TOCTOU-attack.patch- Update to 19.11.4. For a list of fixes check: https://doc.dpdk.org/guides-19.11/rel_notes/release_19_11.html#id8 - Add patch to resolve build error reported in Staging:E project where a kernel backport (jsc#SLE-13536) introduced backward incompatible changes to the API that break kni module build * 0001-SLE15-SP3-compatibility-patch-for-kni.patch- update to v19.11.3: app/crypto-perf: fix display of sample test vector app/eventdev: check Tx adapter service ID app: fix usage help of options separated by dashes app/pipeline: fix build with gcc 10 app: remove extra new line after link duplex app/testpmd: add parsing for QinQ VLAN headers app/testpmd: fix DCB set app/testpmd: fix memory failure handling for i40e DDP app/testpmd: fix PPPoE flow command app/testpmd: fix statistics after reset baseband/turbo_sw: fix exposed LLR decimals assumption bbdev: fix doxygen comments build: disable gcc 10 zero-length-bounds warning build: fix linker warnings with clang on Windows build: support MinGW-w64 with Meson buildtools: get static mlx dependencies for meson bus/fslmc: fix dereferencing null pointer bus/fslmc: fix size of qman fq descriptor bus/pci: fix devargs on probing again bus/pci: fix UIO resource access from secondary process bus/vmbus: fix comment spelling ci: fix telemetry dependency in Travis common/iavf: update copyright common/mlx5: fix build with -fno-common common/mlx5: fix build with rdma-core 21 common/mlx5: fix netlink buffer allocation from stack common/mlx5: fix umem buffer alignment common/octeontx: fix gcc 9.1 ABI break common/qat: fix GEN3 marketing name contigmem: cleanup properly when load fails crypto/caam_jr: fix check of file descriptors crypto/caam_jr: fix IRQ functions return type crypto/ccp: fix fd leak on probe failure cryptodev: add asymmetric session-less feature name cryptodev: fix missing device id range checking cryptodev: fix SHA-1 digest enum comment crypto/kasumi: fix extern declaration crypto/nitrox: fix CSR register address generation crypto/nitrox: fix oversized device name crypto/octeontx2: fix build with gcc 10 crypto/openssl: fix out-of-place encryption crypto/qat: fix cipher descriptor for ZUC and SNOW crypto/qat: support plain SHA1..SHA512 hashes devtools: fix symbol map change check doc: add i40e limitation for flow director doc: add NASM installation steps doc: fix API index doc: fix build issue in ABI guide doc: fix build with doxygen 1.8.18 doc: fix default symbol binding in ABI guide doc: fix log level example in Linux guide doc: fix LTO config option doc: fix matrix CSS for recent sphinx doc: fix multicast filter feature announcement doc: fix number of failsafe sub-devices doc: fix reference in ABI guide doc: fix sphinx compatibility doc: fix typo in contributors guide doc: fix typo in contributors guide doc: fix typos in ABI policy doc: prefer https when pointing to dpdk.org drivers: add crypto as dependency for event drivers drivers/crypto: disable gcc 10 no-common errors drivers/crypto: fix build with make 4.3 drivers/crypto: fix log type variables for -fno-common drivers: fix log type variables for -fno-common eal/arm64: fix precise TSC eal: fix C++17 compilation eal: fix comments spelling eal: fix log message print for regex eal: fix PRNG init with HPET enabled eal: fix typo in endian conversion macros eal/freebsd: fix queuing duplicate alarm callbacks eal/ppc: fix bool type after altivec include eal/ppc: fix build with gcc 9.3 eal/x86: ignore gcc 10 stringop-overflow warnings ethdev: fix build when vtune profiling is on ethdev: fix spelling eventdev: fix probe and remove for secondary process event/dsw: avoid reusing previously recorded events event/dsw: fix enqueue burst return value event/dsw: remove redundant control ring poll event/dsw: remove unnecessary read barrier event/octeontx2: fix build for O1 optimization event/octeontx2: fix queue removal from Rx adapter examples/eventdev: fix build with gcc 10 examples/eventdev: fix crash on exit examples/fips_validation: fix parsing of algorithms examples/ip_pipeline: remove check of null response examples/ipsec-gw: fix gcc 10 maybe-uninitialized warning examples/kni: fix crash during MTU set examples/kni: fix MTU change to setup Tx queue examples/l2fwd-keepalive: fix mbuf pool size examples/qos_sched: fix build with gcc 10 examples: remove extra new line after link duplex examples/vhost_blk: fix build with gcc 10 examples/vmdq: fix output of pools/queues examples/vmdq: fix RSS configuration examples/vm_power: drop Unix path limit redefinition examples/vm_power: fix build with -fno-common fib: fix headers for C++ support fix same typo in multiple places fix various typos found by Lintian ipsec: check SAD lookup error ipsec: fix build dependency on hash lib kvargs: fix buffer overflow when parsing list kvargs: fix invalid token parsing on FreeBSD kvargs: fix strcmp helper documentation log: fix level picked with globbing on type register lpm6: fix comments spelling lpm6: fix size of tbl8 group mem: fix overflow on allocation mem: mark pages as not accessed when freeing memory mem: mark pages as not accessed when reserving VA mempool/dpaa2: install missing header with meson mempool/octeontx2: fix build for gcc O1 optimization mempool: remove inline functions from export list mem: preallocate VA space in no-huge mode mk: fix static linkage of mlx dependency net/avp: fix gcc 10 maybe-uninitialized warning net/bnxt: do not use PMD log type net/bnxt: fix error log for command timeout net/bnxt: fix FW version query net/bnxt: fix HWRM command during FW reset net/bnxt: fix max ring count net/bnxt: fix memory leak during queue restart net/bnxt: fix number of TQM ring net/bnxt: fix port start failure handling net/bnxt: fix possible stack smashing net/bnxt: fix Rx ring producer index net/bnxt: fix storing MAC address twice net/bnxt: fix TQM ring context memory size net/bnxt: fix using RSS config struct net/bnxt: fix VLAN add when port is stopped net/bnxt: fix VNIC Rx queue count on VNIC free net/bnxt: use true/false for bool types net/dpaa2: fix 10G port negotiation net/dpaa2: fix congestion ID for multiple traffic classes net/dpaa: use dynamic log type net/e1000: fix port hotplug for multi-process net/ena/base: fix documentation of functions net/ena/base: fix indentation in CQ polling net/ena/base: fix indentation of multiple defines net/ena/base: fix testing for supported hash function net/ena/base: make allocation macros thread-safe net/ena/base: prevent allocation of zero sized memory net/ena: fix build for O1 optimization net/ena: set IO ring size to valid value net/enetc: fix Rx lock-up net/enic: fix flow action reordering net/failsafe: fix fd leak net/hinic: allocate IO memory with socket id net/hinic/base: fix PF firmware hot-active problem net/hinic/base: fix port start during FW hot update net/hinic: fix LRO net/hinic: fix queues resource free net/hinic: fix repeating cable log and length check net/hinic: fix snprintf length of cable info net/hinic: fix TSO net/hinic: fix Tx mbuf length while copying net/hns3: add free threshold in Rx net/hns3: add RSS hash offload to capabilities net/hns3: clear residual flow rules on init net/hns3: fix configuring illegal VLAN PVID net/hns3: fix configuring RSS hash when rules are flushed net/hns3: fix crash when flushing RSS flow rules with FLR net/hns3: fix default error code of command interface net/hns3: fix default VLAN filter configuration for PF net/hns3: fix mailbox opcode data type net/hns3: fix MSI-X interrupt during initialization net/hns3: fix packets offload features flags in Rx net/hns3: fix promiscuous mode for PF net/hns3: fix return value of setting VLAN offload net/hns3: fix return value when clearing statistics net/hns3: fix RSS indirection table configuration net/hns3: fix RSS key length net/hns3: fix Rx interrupt after reset net/hns3: fix status after repeated resets net/hns3: fix Tx interrupt when enabling Rx interrupt net/hns3: fix VLAN filter when setting promisucous mode net/hns3: fix VLAN PVID when configuring device net/hns3: reduce judgements of free Tx ring space net/hns3: remove one IO barrier in Rx net/hns3: remove unnecessary assignments in Tx net/hns3: replace memory barrier with data dependency order net/hns3: support different numbers of Rx and Tx queues net/hns3: support Rx interrupt net/i40e/base: update copyright net/i40e: fix flow director enabling net/i40e: fix flow director for ARP packets net/i40e: fix flow director initialisation net/i40e: fix flush of flow director filter net/i40e: fix queue region in RSS flow net/i40e: fix queue related exception handling net/i40e: fix setting L2TAG net/i40e: fix wild pointer net/i40e: fix X722 performance net/i40e: relax barrier in Tx net/i40e: relax barrier in Tx for NEON net/iavf: fix link speed net/iavf: fix setting L2TAG net/iavf: fix stats query error code net/ice: add action number check for switch net/ice/base: check memory pointer before copying net/ice/base: fix binary order for GTPU filter net/ice/base: fix MAC write command net/ice/base: fix uninitialized stack variables net/ice/base: minor fixes net/ice/base: read PSM clock frequency from register net/ice/base: remove unused code in switch rule net/ice/base: update copyright net/ice: change default tunnel type net/ice: fix crash in switch filter net/ice: fix hash flow crash net/ice: fix input set of VLAN item net/ice: fix RSS advanced rule net/ice: fix RSS for GTPU net/ice: fix setting L2TAG net/ice: fix variable initialization net/ice: remove bulk alloc option net/ice: remove unnecessary variable net/ice: support mark only action for flow director net/ipn3ke: use control thread to check link status net/ixgbe/base: update copyright net/ixgbe: check driver type in MACsec API net/ixgbe: fix link state timing on fiber ports net/ixgbe: fix link status after port reset net/ixgbe: fix link status inconsistencies net/ixgbe: fix link status synchronization on BSD net/ixgbe: fix resource leak after thread exits normally net/ixgbe: fix statistics in flow control mode net/memif: fix init when already connected net/memif: fix resource leak net/mlx4: fix build with -fno-common net/mlx4: fix drop queue error handling net/mlx5: add device parameter for MPRQ stride size net/mlx5: add multi-segment packets in MPRQ mode net/mlx5: enable MPRQ multi-stride operations net/mlx5: fix actions validation on root table net/mlx5: fix assert in doorbell lookup net/mlx5: fix assert in dynamic metadata handling net/mlx5: fix assert in modify converting net/mlx5: fix build with separate glue lib for dlopen net/mlx5: fix call to modify action without init item net/mlx5: fix counter container usage net/mlx5: fix crash when releasing meter table net/mlx5: fix CVLAN tag set in IP item translation net/mlx5: fix doorbell bitmap management offsets net/mlx5: fix gcc 10 enum-conversion warning net/mlx5: fix header modify action validation net/mlx5: fix imissed counter overflow net/mlx5: fix jump table leak net/mlx5: fix mask used for IPv6 item validation net/mlx5: fix matching for UDP tunnels with Verbs net/mlx5: fix match on empty VLAN item in DV mode net/mlx5: fix metadata for compressed Rx CQEs net/mlx5: fix meter color register consideration net/mlx5: fix meter suffix table leak net/mlx5: fix packet length assert in MPRQ net/mlx5: fix push VLAN action to use item info net/mlx5: fix RSS enablement net/mlx5: fix RSS key copy to TIR context net/mlx5: fix Tx queue release debug log timing net/mlx5: fix validation of push VLAN without full mask net/mlx5: fix validation of VXLAN/VXLAN-GPE specs net/mlx5: fix VLAN flow action with wildcard VLAN item net/mlx5: fix VLAN ID check net/mlx5: fix VLAN PCP item calculation net/mlx5: fix zero metadata action net/mlx5: fix zero value validation for metadata net/mlx5: improve logging of MPRQ selection net/mlx5: reduce Tx completion index memory loads net/mlx5: set dynamic flow metadata in Rx queues net/mlx5: update VLAN and encap actions validation net/mlx5: use open/read/close for ib stats query net/mvneta: do not use PMD log type net/mvpp2: fix build with gcc 10 net/netvsc: avoid possible live lock net/netvsc: do not configure RSS if disabled net/netvsc: do RSS across Rx queue only net/netvsc: fix comment spelling net/netvsc: fix memory free on device close net/netvsc: handle Rx packets during multi-channel setup net/netvsc: handle Tx completions based on burst size net/netvsc: propagate descriptor limits from VF net/netvsc: remove process event optimization net/netvsc: split send buffers from Tx descriptors net/nfp: fix dangling pointer on probe failure net/nfp: fix log format specifiers net/null: fix secondary burst function selection net/null: remove redundant check net/octeontx2: disable unnecessary error interrupts net/octeontx2: enable error and RAS interrupt in configure net/octeontx2: fix buffer size assignment net/octeontx2: fix device configuration sequence net/octeontx2: fix link information for loopback port net/octeontx: fix dangling pointer on init failure net/octeontx: fix meson build for disabled drivers net/pfe: do not use PMD log type net/pfe: fix double free of MAC address net/qede: fix link state configuration net/qede: fix port reconfiguration net/ring: fix device pointer on allocation net/sfc/base: fix build when EVB is enabled net/sfc/base: fix manual filter delete in EF10 net/sfc/base: handle manual and auto filter clashes in EF10 net/sfc/base: reduce filter priorities to implemented only net/sfc/base: refactor filter lookup loop in EF10 net/sfc/base: reject automatic filter creation by users net/sfc/base: use simpler EF10 family conditional check net/sfc/base: use simpler EF10 family run-time checks net/sfc: fix initialization error path net/sfc: fix promiscuous and allmulticast toggles errors net/sfc: fix reported promiscuous/multicast mode net/sfc: fix Rx queue start failure path net/sfc: set priority of created filters to manual net/softnic: fix memory leak for thread net/softnic: fix resource leak for pipeline net/tap: do not use PMD log type net/tap: fix check for mbuf number of segment net/tap: fix crash in flow destroy net/tap: fix fd leak on creation failure net/tap: fix file close on remove net/tap: fix mbuf and mem leak during queue release net/tap: fix mbuf double free when writev fails net/tap: fix queues fd check before close net/tap: fix unexpected link handler net/tap: remove unused assert net/thunderx: use dynamic log type net/vhost: fix potential memory leak on close net/virtio: do not use PMD log type net/virtio: fix crash when device reconnecting net/virtio: fix outdated comment net/virtio: fix unexpected event after reconnect net/virtio-user: fix devargs parsing net/vmxnet3: fix RSS setting on v4 net/vmxnet3: handle bad host framing pci: accept 32-bit domain numbers pci: fix build on FreeBSD pci: fix build on ppc pci: reject negative values in PCI id pci: remove unneeded includes in public header file remove references to private PCI probe function Revert “common/qat: fix GEN3 marketing name” Revert “net/bnxt: fix number of TQM ring” Revert “net/bnxt: fix TQM ring context memory size” security: fix crash at accessing non-implemented ops security: fix return types in documentation security: fix session counter security: fix verification of parameters service: fix crash on exit service: fix identification of service running on other lcore service: fix race condition for MT unsafe service service: remove rte prefix from static functions telemetry: fix port stats retrieval test/crypto: fix flag check test/crypto: fix statistics case test: fix build with gcc 10 test/flow_classify: enable multi-sockets system test/ipsec: fix crash in session destroy test/kvargs: fix invalid cases check test/kvargs: fix to consider empty elements as valid test: load drivers when required test: remove redundant macro test: skip some subtests in no-huge mode timer: protect initialization with lock usertools: check for pci.ids in /usr/share/misc vfio: fix race condition with sysfs vfio: fix use after free with multiprocess vhost/crypto: add missing user protocol flag vhost: fix packed ring zero-copy vhost: fix peer close check vhost: fix shadowed descriptors not flushed vhost: fix shadow update vhost: fix zero-copy server mode vhost: handle mbuf allocation failure vhost: make IOTLB cache name unique among processes vhost: prevent zero-copy with incompatible client mode vhost: remove unused variable - remove the security backport patches as they're already included upstream: * 0001-vhost-check-log-mmap-offset-and-size-overflow.patch * 0002-vhost-fix-vring-index-check.patch * 0003-vhost-crypto-validate-keys-lengths.patch * 0004-vhost-fix-translated-address-not-checked.patch * 0005-vhost-fix-potential-memory-space-leak.patch * 0006-vhost-fix-potential-fd-leak.patch- Add patches to fix vulnerability where malicious guest/container can cause resource leak resulting a Denial-of-Service, or memory corruption and crash, or information leak in vhost-user backend application (bsc#1171477, CVE-2020-10722, CVE-2020-10723, CVE-2020-10724, CVE-2020-10725, CVE-2020-10726). * 0001-vhost-check-log-mmap-offset-and-size-overflow.patch * 0002-vhost-fix-vring-index-check.patch * 0003-vhost-crypto-validate-keys-lengths.patch * 0004-vhost-fix-translated-address-not-checked.patch * 0005-vhost-fix-potential-memory-space-leak.patch * 0006-vhost-fix-potential-fd-leak.patch- Update to v19.11.1. For a list of changes, check: * https://doc.dpdk.org/guides/rel_notes/release_19_11.html#new-features - Removed patches no longer applying to the code base: * 0001-vhost-fix-possible-denial-of-service-on-SET_VRING_NU.patch * 0002-vhost-fix-possible-denial-of-service-by-leaking-FDs.patch * 0002-fix-cpu-compatibility.patch - Rebased patches: * 0001-fix-cpu-compatibility.patch- Change constraint to ssse3 to fix build issues on x86_64 and i586- Add version to the PMD driver directory to avoid loading previous version drivers (bsc#1157179). - Update to 18.11.3 (bsc#1156146). For a list of fixes check: * https://doc.dpdk.org/guides-18.11/rel_notes/release_18_11.html#fixes - Add patches to fix vulnerability where malicious container can trigger a denial of service (CVE-2019-14818, bsc#1156146) * 0001-vhost-fix-possible-denial-of-service-on-SET_VRING_NU.patch * 0002-vhost-fix-possible-denial-of-service-by-leaking-FDs.patch - Removed patrches already included upstream: * dpdk-fix-implicit-fallthrough-warning.patch- Changed to multibuild (bsc#1151455). - Added dpdk-fix-implicit-fallthrough-warning.patch to address build error with recent kernels (bsc#1144704).- Minor Update to 18.11.2 * List of fixes can be found in https://doc.dpdk.org/guides-18.11/rel_notes/release_18_11.html#fixes- Add missing libmnl-devel- remove -Wno-error=array-bounds as its no longer needed - disable i586 build because lack of sse support- Add 0002-fix-cpu-compatibility.patch to address issue with older CPUs (bsc#1125961, bsc#1099474) [+ 0002-fix-cpu-compatibility.patch]- Update to 18.11; some of the changes are(fate#325916, fate#325951 fate#326025, fate#326992, bsc#1134968, jira#SLE-4715) : * Added support for using externally allocated memory in DPDK. * Added check for ensuring allocated memory is addressable by devices. * Updated the C11 memory model version of the ring library. * Added NXP CAAM JR PMD. * Added support for GEN3 devices to Intel QAT driver. * Added Distributed Software Eventdev PMD. * Updated KNI kernel module, rte_kni library, and KNI sample application. * Add a new sample application for vDPA. * Updated mlx5 driver. * * Improved security of PMD to prevent the NIC from getting stuck when the application misbehaves. * * Reworked flow engine to supported e-switch flow rules (transfer attribute). * * Added support for header re-write(L2-L4), VXLAN encap/decap, count, match on TCP flags and multiple flow groups with e-switch flow rules. * * Added support for match on metadata, VXLAN and MPLS encap/decap with flow rules. * * Added support for RTE_ETH_DEV_CLOSE_REMOVE flag to provide better support for representors. * * Added support for meson build. * * Fixed build issue with PPC. * * Added support for BlueField VF. * * Added support for externally allocated static memory for DMA. all the changes can be viwed in http://doc.dpdk.org/guides/rel_notes/release_18_11.html [- 0001-enic-fix-Type-punning-and-strict-aliasing-warning.patch]- Enable missed MLX PMDs for SLE12SP4 (bsc#1112307)- Fixed a problem with ABI compatibility; API/ABI compatibility is guaranteed by DPDK upstream community across subsequent bug-fix releases. However, the .spec file broke it by defining the wrong version which included also the bug-fix release number. - Fixed a naming issue with library: did not reflect soname- Fixed a syntax error affecting csh environment configuration(bsc#1102310)- Update to 18.02.2; some of the changes are: * Added function to allow releasing internal EAL resources on exit * Added igb, ixgbe and i40e ethernet driver to support RSS with flow API * Updated i40e driver to support PPPoE/PPPoL2TP * Added MAC loopback support for i40e * Added support of run time determination of number of queues per i40e VF * Updated mlx4/mlx5 driver * Added NVGRE and UDP tunnels support in Solarflare network PMD * Added AVF (Adaptive Virtual Function) net PMD * Added feature supports for live migration from vhost-net to vhost-user * Updated the AESNI-MB PMD * Updated the DPAA_SEC crypto driver to support rte_security * Added New eventdev Ordered Packet Distribution Library (OPDL) PMD * Added GRO support for VxLAN-tunneled packets - Removed 0002-dpdk-eal-ppc-rte_smp_mb.patch since incorporated upstream- Update to 18.02.1 - Restrict untrusted guest to misuse virtio to corrupt host application(ovs-dpdk) memory which can lead all VM to lose connectivity(CVE-2018-1059,bsc#1089638). Changes: * Add deprecation notice for rte_vhost_gpa_to_vva() * Patch vhost-net and vhost-scsi examples * Fixes checkpatch warnings * Take VIRTIO_RING_F_EVENT_IDX into account when ring size (Tiwei) * Fix next chuncks translation access rights in Rx paths (Tiwei) * vhost: fix indirect descriptors table translation size * vhost: check all range is mapped when translating GPAs * vhost: introduce safe API for GPA translation * vhost: ensure all range is mapped when translating QVAs * vhost: add support for non-contiguous indirect descs tables * vhost: handle virtually non-contiguous buffers in Tx * vhost: handle virtually non-contiguous buffers in Rx * vhost: handle virtually non-contiguous buffers in Rx-mrg * examples/vhost: move to safe GPA translation API * examples/vhost_scsi: move to safe GPA translation API * vhost/crypto: move to safe GPA translation API * vhost: deprecate unsafe GPA translation API- Enable MLX4/5 PMD only in Factory and >= SLES15 It needs rdma-core >= v16.- Removed 0002-kni-fix-build-on-SLE12-SP3.patch since no longer referenced in .spec files - Added 0002-dpdk-eal-ppc-rte_smp_mb.patch to fix an issue on ppc64le platforms with v18.02 - Updated to version 18.02; some of the changes include: * Added function to allow releasing internal EAL resources on exit * Added igb, ixgbe and i40e ethernet driver to support RSS with flow API * Updated i40e driver to support PPPoE/PPPoL2TP * Added MAC loopback support for i40e * Added support of run time determination of number of queues per i40e VF * Updated mlx5 driver * Updated mlx4 driver * Added NVGRE and UDP tunnels support in Solarflare network PMD * Added AVF (Adaptive Virtual Function) net PMD * Added feature supports for live migration from vhost-net to vhost-user * Updated the AESNI-MB PMD * Updated the DPAA_SEC crypto driver to support rte_security * Added Wireless Base Band Device (bbdev) abstraction * Added New eventdev Ordered Packet Distribution Library (OPDL) PMD * Added new pipeline use case for dpdk-test-eventdev application * Updated Eventdev sample application to support event devices based on capability * Added Rawdev, a generic device support library * Added new multi-process communication channel * Added GRO support for VxLAN-tunneled packets * Increased default Rx and Tx ring size in sample applications * Added new DPDK build system using the tools “meson” and “ninja” [EXPERIMENTAL]- The vm_power example does not work for ppc64le since it uses the IXGBE PMD driver which is not available for that platform(bsc#1082154): * Disable CONFIG_RTE_LIBRTE_POWER for the sample application; * Disable CONFIG_RTE_LIBRTE_IXGBE_PMD for the actual PMD driver;- Upgraded to latest stable release 17.11.1 (LTS): some of the fixes include: * location changes of the GPL and LGPL licenses; * net/mlx4: - fix drop flow resources leak * net/bnxt: - double increment of idx during Tx ring alloc - group info usage - check for ether type - size of Tx ring in HW - number of pools for RSS - return code in MAC address set - link speed setting with autoneg off * net/nfp: - MTU settings - jumbo settings - CRC strip check behaviour * net/sfc: - multicast address list copy memory leak - DMA memory leak after kvarg processing failure - fix label name to be consistent * net/i40e: - VLAN offload setting issue - FDIR input set conflict - FDIR rule confiliction issue - setting MAC address of VF - flow director Rx resource defect - warn when writing global registers - multiple driver support - interrupt conflict with multi-driver - Rx interrupt - check multi-driver option parsing - flow director filter * net/qede: - enable LRO over tunnels - reject config with no Rx queue - check tunnel L3 header - tunnel header size in Tx BD configuration - VF LRO tunnel configuration * net/mlx5: - Tx checksum offloads - un-supported RSS hash fields use - device operation type - pedantic compilation - fix pedantic compilation - flow item validation - flow RSS configuration - UAR remapping on non configured queues - secondary process verification - port stop by verify flows are still present - flow priority on queue action- Enable(disabled by default) MLX4 and MLX5 pmd(fate#322609)- Upgraded to latest major 17.11(fate#322609); some of the fixes include: * Extended port_id range from uint8_t to uint16_t * Added a new driver for Marvell Armada 7k/8k devices * Updated mlx4 driver * Updated mlx5 driver * Added SoftNIC PMD * Added support for NXP DPAA Devices * Updated support for Cavium OCTEONTX Device * Added PF support to the Netronome NFP PMD * Updated bnxt PMD * Added bus agnostic functions to cryptodev for PMD initialization * Updated QAT crypto PMD * Updated the AESNI MB PMD * Updated the OpenSSL PMD * Added NXP DPAA SEC crypto PMD * Add new benchmarking mode to dpdk-test-crypto-perf application * Added IOMMU support to libvhost-user * Added the Generic Segmentation Offload Library * Added the Flow Classification Library - Removed 0002-kni-fix-build-on-SLE12-SP3.patch since patch merged upstream and available in 17.11- Added missing supported broadcom chipset family Broadcom NetXtreme II BCM57810- Upgraded to latest stable 17.08.1; some of the fixes include: * net/qede: disable per-VF Tx switching feature * revert "net/virtio: flush Rx queues on start" * various fixes for mlx5 PMD drivers * various fixes for bnxt PMD drivers * various fixes for i40e PMD drivers * various fixes for crypto PMD drivers * testpmd: fix for non-consecutive ports * ethdev: fix ABI version- Add missing libelf-devel dependency- Updated to 17.08(bsc#1050250, bsc#1046598, fate#322913, fate#322608) Some of the new features are listed below: * Increase minimum x86 ISA version to SSE4.2 * Added Fail-Safe PMD * Added support for generic flow API (rte_flow) on igb NICs * Added support for generic flow API (rte_flow) on enic * Added support for Chelsio T6 family of adapters * Added latency and performance improvements for cxgbe * Updated mlx5 driver * Added NXP DPAA2 Eventdev PMD * Added dpdk-test-eventdev test application * from 17.05: * Added mbuf raw free API * Added free Tx mbuf on demand API * Added VFIO hotplug support * Added PowerPC support for i40e and its vector PMD * Added VF max bandwidth setting in i40e * Added LiquidIO network PMD * Added support for NXP DPAA2 Network PMD * Added support for NXP DPAA2 - FSLMC bus * Added support for the Wind River Systems AVP PMD * Added vmxnet3 version 3 support * Added MTU feature support to Virtio and Vhost * Added event driven programming model library (rte_eventdev) * Added Software Eventdev PMD * Added Cavium OCTEONTX Eventdev PMD * Added NXP DPAA2 SEC crypto PMD * from 17.02: * Added generic EAL API for I/O device memory read/write operations * Added VF Daemon (VFD) for i40e. - EXPERIMENTAL * Added generic flow API (rte_flow) * Added APIs for MACsec offload support to the ixgbe PMD * Added Solarflare libefx-based network PMD. * Added support for Mellanox ConnectX-5 adapters (mlx5) * Added ARMv8 crypto PMD * Added crypto performance test application * more details can be found in http://dpdk.org/doc/guides/rel_notes/release_17_08.html http://dpdk.org/doc/guides/rel_notes/release_17_05.html http://dpdk.org/doc/guides/rel_notes/release_17_02.html [-0002-kni-define-HAVE_VF_VLAN_PROTO-for-SLES12SP3.patch - 0003-kni-define-HAVE_TRANS_START_HELPER-for-SLES12SP3.patch - 0004-net-thunderx-sync-mailbox-definitions-with-Linux-PF-.patch - 0005-kni-fix-build-with-gcc-7.1.patch - 0006-kni-fix-ethtool-build-with-kernel-4.11.patch - 0007-igb_uio-switch-to-new-irq-function-for-MSI-X.patch] - Use updated patch to enable HAVE_TRANS_START_HELPER for SLE12SP3(bsc#1031705). [+ 0002-kni-fix-build-on-SLE12-SP3.patch]- Enabled CONFIG_RTE_MAJOR_ABI: libs SONAME equal the DPDK release version- Split libs into a subpackage to provide multiple installable versions on same sytem- Do not use obsolete pci_enable_msix for() kernel > 4.8 [+0006-kni-fix-ethtool-build-with-kernel-4.11.patch, +0007-igb_uio-switch-to-new-irq-function-for-MSI-X.patch]- Updated to 16.11.2 which provide bug fixes as below(fate#321541): * mbuf: fix missing includes in exported header * eal: fix debug macro redefinition * net/nfp: fix packet/data length conversion * net/i40e: fix setup when bulk is disabled * pci: fix device registration on FreeBSD * net/i40e: ensure vector mode is not used with QinQ * nic_uio: fix device binding at boot * net/bnx2x: fix transmit queue free threshold * net/vmxnet3: fix queue size changes * kni: fix build with kernel 4.11 * kni: fix possible memory leak * kni: fix crash caused by freeing mempool * net/i40e: fix allocation check * net/virtio: fix crash when closing twice * net/ixgbevf: set xstats id values * net/i40e: fix hash input set on X722 * eal/linux: fix build with glibc 2.25 * net/i40e: fix incorrect packet index reference * net/thunderx: fix 32-bit build * net/thunderx: fix build on FreeBSD * net/thunderx: fix deadlock in Rx path * net/ixgbe: fix setting MTU on stopped device * vfio: fix secondary process start * net/virtio-user: fix address on 32-bit system * net/virtio: fix MSI-X for modern devices * net/virtio: fix link status always down * net/ixgbe: fix multi-queue mode check in SRIOV mode * net/i40e/base: fix potential out of bound array access * vhost: fix false sharing * net/thunderx: fix stats access out of bounds * net/virtio: disable LSC interrupt if MSIX not enabled * net/i40e: fix mbuf alloc failed counter * net: fix stripped VLAN flag for offload emulation * vfio: fix disabling INTx * net/igb: fix VF MAC address setting * net/igb: fix VF MAC address setting * net/ixgbe: fix VF Rx mode for allmulticast disabled * net/bonding: fix updating slave link status * net/virtio-user: fix overflow * net/i40e: fix TC bitmap of VEB * net/ixgbe/base: fix build error * net/ixgbe: fix Rx queue blocking issue * net/ixgbe: fix all queues drop setting of DCB * net/ixgbe: fix TC bandwidth setting more details can be found in http://dpdk.org/ml/archives/stable/2017-May/001809.html [- 0005-kni-fix-build-with-kernel-4.11.patch] - use default gcc which is now gcc7 (bsc#1042372) [+0005-kni-fix-build-with-gcc-7.1.patch]- Add upstream patch to fix building against linux kernel 4.11 [+0005-kni-fix-build-with-kernel-4.11.patch]- sync mailbox definitions with Linux PF driver(bsc#1035993) [+0004-net-thunderx-sync-mailbox-definitions-with-Linux-PF-.patch]- Enable HAVE_TRANS_START_HELPER for SLE12SP3(bsc#1031705). [+0003-kni-define-HAVE_TRANS_START_HELPER-for-SLES12SP3.patch]- Fix dpdk KMP build fails(bsc#1031750) - enable igb_uio kernel module(fate#322394) - update kernel version for SLES12SP3 4.4.59 for bsc#1031705 [*0002-kni-define-HAVE_VF_VLAN_PROTO-for-SLES12SP3.patch]- Enable HAVE_VF_VLAN_PROTO for SLE12SP3(bsc#1031705). [+0002-kni-define-HAVE_VF_VLAN_PROTO-for-SLES12SP3.patch]- Disable dpdk-kmp package for ix86.- Upgrade to LTS release of 16.11 which contains fixes below(fate#321541): * app/test: fix symmetric session free in crypto perf tests * app/testpmd: fix check for invalid ports * app/testpmd: fix static build link ordering * crypto/aesni_gcm: fix IV size in capabilities * crypto/aesni_gcm: fix J0 padding bytes * crypto/aesni_mb: fix incorrect crypto session * crypto/openssl: fix extra bytes written at end of data * crypto/openssl: fix indentation in guide * crypto/qat: fix IV size in capabilities * crypto/qat: fix to avoid buffer overwrite in OOP case * cryptodev: fix crash on null dereference * cryptodev: fix loop in device query * devargs: reset driver name pointer on parsing failure * drivers/crypto: fix different auth/cipher keys * ethdev: check maximum number of queues for statistics * ethdev: fix extended statistics name index * ethdev: fix port data mismatched in multiple process model * ethdev: fix port lookup if none * ethdev: remove invalid function from version map * examples/ethtool: fix driver information * examples/ethtool: fix querying non-PCI devices * examples/ip_pipeline: fix coremask limitation * examples/ip_pipeline: fix parsing of pass-through pipeline * examples/l2fwd-crypto: fix overflow * examples/vhost: fix calculation of mbuf count * examples/vhost: fix lcore initialization * mempool: fix API documentation * mempool: fix stack handler dequeue * net/af_packet: fix fd use after free * net/bnx2x: fix Rx mode configuration * net/cxgbe/base: initialize variable before reading EEPROM * net/cxgbe: fix parenthesis on bitwise operation * net/ena: fix setting host attributes * net/enic: fix hardcoding of some flow director masks * net/enic: fix memory leak with oversized Tx packets * net/enic: remove unnecessary function parameter attributes * net/i40e: enable auto link update for 25G * net/i40e: fix Rx checksum flag * net/i40e: fix TC bandwidth definition * net/i40e: fix VF reset flow * net/i40e: fix checksum flag in x86 vector Rx * net/i40e: fix crash in close * net/i40e: fix deletion of all macvlan filters * net/i40e: fix ethertype filter on X722 * net/i40e: fix link update delay * net/i40e: fix logging for Tx free threshold check * net/i40e: fix segment number in reassemble process * net/i40e: fix wrong return value when handling PF message * net/i40e: fix xstats value mapping * net/i40evf: fix casting between structs * net/i40evf: fix reporting of imissed packets * net/ixgbe: fix blocked interrupts * net/ixgbe: fix received packets number for ARM * net/ixgbe: fix received packets number for ARM NEON * net/ixgbevf: fix max packet length * net/mlx5: fix RSS hash result for flows * net/mlx5: fix Rx packet validation and type * net/mlx5: fix Tx doorbell * net/mlx5: fix endianness in Tx completion queue * net/mlx5: fix inconsistent link status * net/mlx5: fix leak when starvation occurs * net/mlx5: fix link status query * net/mlx5: fix memory leak when parsing device params * net/mlx5: fix missing inline attributes * net/mlx5: fix updating total length of multi-packet send * net/mlx: fix IPv4 and IPv6 packet type * net/nfp: fix VLAN offload flags check * net/nfp: fix typo in Tx offload capabilities * net/pcap: fix timestamps in output pcap file * net/qede/base: fix FreeBSD build * net/qede: add vendor/device id info * net/qede: fix PF fastpath status block index * net/qede: fix filtering code * net/qede: fix function declaration * net/qede: fix per queue statisitics * net/qede: fix resource leak * net/vhost: fix socket file deleted on stop * net/vhost: fix unix socket not removed as closing * net/virtio-user: fix not properly reset device * net/virtio-user: fix wrongly get/set features * net/virtio: fix build without virtio-user * net/virtio: fix crash when number of virtio devices > 1 * net/virtio: fix multiple process support * net/virtio: fix performance regression due to TSO * net/virtio: fix rewriting LSC flag * net/virtio: fix wrong Rx/Tx method for secondary process * net/virtio: optimize header reset on any layout * net/virtio: store IO port info locally * net/virtio: store PCI operators pointer locally * net/vmxnet3: fix Rx deadlock * pci: fix check of mknod * pmdinfogen: fix endianness with cross-compilation * pmdinfogen: fix null dereference * sched: fix crash when freeing port * usertools: fix active interface detection when binding * vdev: fix detaching with alias * vfio: fix file descriptor leak in multi-process * vhost: allow many vhost-user ports * vhost: do not GSO when no header is present * vhost: fix dead loop in enqueue path * vhost: fix guest/host physical address mapping * vhost: fix long stall of negotiation * vhost: fix memory leak- Fix broken dpdk-pmd/* soft links(bsc#1026804).- Do not disable cryptodev as EXPREMENTAL tag has been removed. - Remove CONFIG_RTE_LIBRTE_MBUF_OFFLOAD as cryptodev is not depending on it anymore and its removed from the upstream.- Enable rte_kni kernel module for dpdk(fate#322394). [+preamble] - Build dpdk-thunderx only for aarch64- Update to version 16.11(fate#321541). Some of the new features are listed below: * Added software parser for packet type. * Improved offloads support in mbuf. * Added vhost-user dequeue zero copy support. * Added vhost-user indirect descriptors support. * Added vhost PMD xstats. * Added virtio NEON support for ARM. * Updated the ixgbe base driver. * Added APIs for VF management to the ixgbe PMD. * Updated the enic driver. * Added openssl PMD. * Added support for new gcc -march option. Detailed changes can be obtained from http://dpdk.org/doc/guides/rel_notes/release_16_11.html - Resolved fixes in the updated versions are : * enic: Fixed several flow director issues. * enic: Fixed inadvertent setting of L4 checksum ptype on ICMP packets. * enic: Fixed high driver overhead when servicing Rx queues beyond the first.- Added gcc-6 as default compiler for CRC/mtune & other optimizations. - Fix possible parallel installation of dpdk subpackages.- Add pre_checkin.sh to generate the dpdk-thunderx.spec file- Fixed paths using %{name} to have the dpdk.spec aligned with dpdk-thunderx.spec- Added back in all the architectures to keep .spec files aligned * Driving thunderx platform architectural dependency via the ExclusiveArch tag- Added support to build code for Thunderx platform(fate#321960). - Introduced new dpdk-thunderx.spec file: * Removed architectures not supporting Thunderx platform (e.g. x86) * Added dependency on gcc v5.0 for armv8a-crc- Update to version 16.07.2. Some of the fixes are listed below: * ethdev: prevent duplicate event callback * hash: fix bucket size usage * hash: fix unlimited cuckoo path * lpm: fix freeing memory * lpm: fix freeing unused sub-table on rule delete * mempool: fix leak if populate fails * mempool: fix search of maximum contiguous pages * pci: fix probing error if no driver found * net/bnx2x: fix maximum PF queues * net/bnxt: fix bit shift size * net/bnxt: fix crash when closing * net/enic: fix Rx queue index when not using Rx scatter * net/enic: fix crash on MTU update or Rx queue reconfigure * net/enic: fix crash with removed flow director filters * net/enic: fix max packet length check * net/enic: fix multi-queue Rx performance * net/enic: revert truncated packets counter fix * net/fm10k: fix VF Tx queue initialization * net/i40e: fix Rx hang when disable LLDP * net/ixgbe: fix VF registers * net/thunderx: fix Tx checksum handling * [The list of changes is rather long so please consult the following resources for the complete list of new features, bugfixes and other changes in this release: - http://dpdk.org/doc/guides-16.07/rel_notes/release_16_07.html#id2]- Update to version 16.07.1. Some of the fixes are listed below: * contigmem: zero all pages during mmap * crypto/null: fix key size increment value * hash: fix false zero signature key hit lookup * mem: fix crash on hugepage mapping error * mbuf: fix error handling on pool creation * net/e1000: fix returned number of available Rx descriptors * net/enic: fix freeing memory for descriptor ring * net/i40e: fix dropping packets with ethertype 0x88A8 * net/i40e: fix mbuf leak during Rx queue release * net/i40e: fix null pointer dereferences when using VMDq+RSS * net/ixgbe/base: fix possible corruption of shadow RAM * net/ixgbe: fix VF reset to apply to correct VF * net/virtio_user: fix error management during init * [The list of changes is rather long so please consult the following resources for the complete list of new features, bugfixes and other changes in this release: - http://dpdk.org/doc/guides-16.07/rel_notes/release_16_07.html#fixes-in-16-07-01-stable-release]- Drop code for generating our own linker script. * Commit 948fd64befc3 (" mk: replace the combined library with a linker script") added upstream support for building and installing a linker script so we drop our code from the spec file which generated a much larger and possibly broken linker script resulting to linking issues (boo#1002534)- Update to version 16.07. Some of the new features are listed below: * Removed the mempool cache memory if caching is not being used. * Added mempool external cache for non-EAL thread. * Changed the memory allocation scheme in the mempool library. * Added a new driver for Broadcom NetXtreme-C devices. * Added a new driver for ThunderX nicvf devices. * Added mailbox interrupt support for ixgbe and igb VFs. * Updated the ixgbe base driver. * Updated the i40e base driver. * Updated the enic driver. * Updated the mlx5 driver. * Added support for virtio on IBM POWER8. * Added support for Virtio in containers. * Added vhost-user client mode. * Added NSH packet recognition in i40e. * Added AES-CTR support to AESNI MB PMD. * Added AES counter mode support for Intel QuickAssist devices. * Added KASUMI SW PMD. * Added multi-writer support for RTE Hash with Intel TSX. * Improved IP Pipeline Application. * Added keepalive enhancements. * Added packet capture framework. * Added floating VEB support for i40e PF driver. * Added support for live migration of a VM with SRIOV VF. * [The list of changes is rather long so please consult the following resources for the complete list of new features, bugfixes and other changes in this release: - http://dpdk.org/doc/guides/rel_notes/release_16_07.html - http://dpdk.org/browse/dpdk/tree/doc/guides/rel_notes/release_16_07.rst - Or the doc/guides/rel_notes/release_16_07.rst file in the released tarball.] - Removed patches that are already avilable in dpdk-16.07 [ -0002-examples-ip_pipeline-fix-implicit-declaration-of-fun.patch - 0003-mk-fix-external-shared-library-dependencies-of-libraries.patch - 0004-54f9e32-vhost-handle-dirty-pages-logging-request.patch - 0005-d293dac-vhost-claim-support-of-guest-announce.patch - 0006-d639996-vhost-enable-log_shmfd-protocol-feature.patch - 0007-ixgbe-fix-VLAN-filter-missing-brackets.patch - 0008-app-testpmd-handle-SIGINT-and-SIGTERM.patch - 0009-bonding-copy-entire-config-structure-in-mode-4.patch - 0010-bonding-fix-active-slaves-with-no-primary.patch - 0011-bonding-do-not-ignore-multicast-in-mode-4.patch - 0012-bonding-do-not-activate-slave-twice.patch - 0013-bonding-fix-crash-when-no-slave-device.patch - 0014-bonding-fix-detach-of-bonded-device.patch - 0015-bonding-fix-detach-of-slave-devices.patch - 0016-eal-linux-support-built-in-kernel-modules.patch - 0017-examples-l3fwd-handle-SIGINT-and-SIGTERM.patch - 0018-fm10k-fix-VLAN-flag-in-scattered-Rx.patch - 0019-i40e-base-fix-driver-load-failure.patch - 0020-i40e-base-fix-missing-check-for-stopped-admin-queue.patch - 0021-i40e-fix-inverted-check-for-no-refcount.patch - 0022-i40e-fix-overflow.patch - 0023-i40e-fix-VLAN-filtering.patch - 0024-mempool-fix-leak-when-creation-fails.patch - 0025-pcap-fix-captured-frame-length.patch - 0026-port-fix-crash-for-ethdev-writer-nodrop.patch - 0027-port-fix-crash-for-ring-writer-nodrop.patch - 0028-tools-fix-unbinding-failure-handling.patch - 0029-tools-support-Python-3-in-bind-script.patch - 0030-tools-support-binding-to-built-in-kernel-modules.patch - 0031-vhost-fix-leak-of-fds-and-mmaps.patch - 0032-virtio-fix-crash-in-statistics-functions.patch - 0033-virtio-fix-descriptors-pointing-to-the-same-buffer.patch - 0034-virtio-fix-restart.patch - 0035-PAGE_SIZE-constant-is-not-defined-on-ARM-since-multi.patch - 0036-examples-fix-build-dependencies.patch - 0037-examples-ethtool-fix-build.patch - 0099-mk-fix-gcc-5-version-on-suse.patch - 0100-kni-fix-build-with-gcc-6.patch - 0101-ixgbe-fix-uninitialized-warning.patch - 0102-ixgbe-fix-constant-sign-in-left-shift-operator.patch - 0103-e1000-base-Add-missing-braces-to-the-if-statements.patch - 0104-igb-fix-constant-sign-in-left-shift-operator.patch - 0105-e1000-fix-missing-link-interrupt-check-brackets.patch - 0106-app-test-fix-missing-brackets.patch - 0107-examples-ip_pipeline-use-unsigned-constants-for-left.patch ] - Created soft link for dpdk_proc_info and dpdk_nic_bind(from dpdk-procinfo, dpdk-devbind) to keep compatibility. - Added a new binary dpdk-pdump dpdk-procinfo- Add _constraints file to force build dpdk with sse3 enabled x86 machine(bsc#993462). - Enable compilation for ppc64le with the help of Rüdiger(ro@suse.de). - Enable example package for aarch64 using Rüdiger(ro@suse.de) changes. - Do not enable PMD_RING on ppc64le (missing rte_eth_from_rings). - Disable examples that need LPM which is disabled on non-x86. [+0036-examples-fix-build-dependencies.patch, +0037-examples-ethtool-fix-build.patch, +_constraints]- Added support for aarch64 compilation. [+0035-PAGE_SIZE-constant-is-not-defined-on-ARM-since-multi.patch] - Disabled aarch64 dpdk-examples package for the time being as it contains lots of Intel specific code. - Added proper "Group" field for the subpackages .- Add upstream patches to fix building with gcc >= 6 * 0100-kni-fix-build-with-gcc-6.patch * 0101-ixgbe-fix-uninitialized-warning.patch * 0102-ixgbe-fix-constant-sign-in-left-shift-operator.patch * 0103-e1000-base-Add-missing-braces-to-the-if-statements.patch * 0104-igb-fix-constant-sign-in-left-shift-operator.patch * 0105-e1000-fix-missing-link-interrupt-check-brackets.patch * 0106-app-test-fix-missing-brackets.patch * 0107-examples-ip_pipeline-use-unsigned-constants-for-left.patch- Removed unwanted files(bsc#984437).- Added missing GPL-2.0 and LGPL-2.1 licenses.- Update tarball URL.- Applied all the fixes recommended by upstream for v2.2 stable release(bsc#981996). [+0008-app-testpmd-handle-SIGINT-and-SIGTERM.patch, +0009-bonding-copy-entire-config-structure-in-mode-4.patch, +0010-bonding-fix-active-slaves-with-no-primary.patch, +0011-bonding-do-not-ignore-multicast-in-mode-4.patch, +0012-bonding-do-not-activate-slave-twice.patch, +0013-bonding-fix-crash-when-no-slave-device.patch, +0014-bonding-fix-detach-of-bonded-device.patch, +0015-bonding-fix-detach-of-slave-devices.patch, +0016-eal-linux-support-built-in-kernel-modules.patch, +0017-examples-l3fwd-handle-SIGINT-and-SIGTERM.patch, +0018-fm10k-fix-VLAN-flag-in-scattered-Rx.patch, +0019-i40e-base-fix-driver-load-failure.patch, +0020-i40e-base-fix-missing-check-for-stopped-admin-queue.patch, +0021-i40e-fix-inverted-check-for-no-refcount.patch, +0022-i40e-fix-overflow.patch, +0023-i40e-fix-VLAN-filtering.patch, +0024-mempool-fix-leak-when-creation-fails.patch, +0025-pcap-fix-captured-frame-length.patch, +0026-port-fix-crash-for-ethdev-writer-nodrop.patch, +0027-port-fix-crash-for-ring-writer-nodrop.patch, +0028-tools-fix-unbinding-failure-handling.patch, +0029-tools-support-Python-3-in-bind-script.patch, +0030-tools-support-binding-to-built-in-kernel-modules.patch, +0031-vhost-fix-leak-of-fds-and-mmaps.patch, +0032-virtio-fix-crash-in-statistics-functions.patch, +0033-virtio-fix-descriptors-pointing-to-the-same-buffer.patch, +0034-virtio-fix-restart.patch]- Use fdupes to manage duplicate files- Create DPDK packages for 32 bit x86(bsc#977639).- Add upstream patch for the ixgbe driver * 0007-ixgbe-fix-VLAN-filter-missing-brackets.patch: Fix VLAN filtering logic by adding the missing brackets in the 'if' statement.- DPDK is most common vhost-user backend, Adding upstream patches to help qemu vm live migration with vhost-user (fate#320713). [+ 0004-54f9e32-vhost-handle-dirty-pages-logging-request.patch + 0005-d293dac-vhost-claim-support-of-guest-announce.patch + 0006-d639996-vhost-enable-log_shmfd-protocol-feature.patch]- Move the combined library back to the devel package (bsc#975123) Ever since we dropped the CONFIG_RTE_BUILD_COMBINE_LIBS=y option, the libdpdk.so is no longer a shared object but rather a linker script generated by the spec file. This means that it is only used during linking and the linker will add the individual DPDK libraries to the DT_NEEDED tag on the dependent binaries.- Fix shared linking against libdpdk.so (bsc#975123) * Restore the 0003-mk-fix-external-shared-library-dependencies-of-libraries.patch patch which sets the correct dependencies for the shared libraries. * Drop CONFIG_RTE_BUILD_COMBINE_LIBS since a custom linker script is used to create and install a more lightweight version of libdpdk.so. * Include the combined libdpdk.so library to the regular package since it is also necessary during runtime.- Removed unwnated patch and reformated patch file names(bsc#974903). [- dpdk-2.2-dtneeded.patch, - dpdk-2.2-examples.patch, - enic-pun-fix.patch, - dpdk-2.2-warningflags.patch, + 0001-enic-fix-Type-punning-and-strict-aliasing-warning.patch + 0002-examples-ip_pipeline-fix-implicit-declaration-of-fun.patch] - Added CONFIG_RTE_BUILD_COMBINE_LIBS flags to club all all *.so into one library- Intial version 2.2.0(fate#319169)  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 28      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     19.11.1019.11.10-150500.5.3.1dpdkdpdk-thunderx-docgpl-2.0.txtlgpl-2.1.txtapiannotated.htmlbc_s.pngbdwn.pngclasses.htmlclosed.pngcmdline_8h.htmlcmdline_8h_source.htmldeprecated.htmldir_07a86b3d66a084d891545ff55cd051cb.htmldir_082fac248c5922c9b524b8ed4e70e149.htmldir_09939486c1591516b984494000c3f64b.htmldir_099d2d80b969e7fd740b685b10b04f52.htmldir_0c4a44b1891135ef8e3f51c114dfc40e.htmldir_0d8d734d473b3cabdef3fd977d50bf3e.htmldir_13eeac154bac823f6a128588ab25dbd1.htmldir_14bc92f4b96c8519b376567118ac28b3.htmldir_1cb3d74b2ac9573f839cf243cfa1bc11.htmldir_1e371fc4c61fbb916177b5ec80f09b33.htmldir_2154f83b08d9713661fee356762316ea.htmldir_2164e25561eabb34d2bd0b8fdda0aeba.htmldir_2874bf55c2200dd42774d2ba99074e53.htmldir_29193d3218f7ddad8237cdbcbdc9f2a0.htmldir_2d618a55e588f156483774ccf7b84b21.htmldir_312e5f832048176c38c17335b02a769f.htmldir_313f6c18e163a6142a5a3b7a38753440.htmldir_3241a1b75803951af6cc6f4dc301eca1.htmldir_35ae03c0f35416b98825df846a315ffa.htmldir_38b2ae9befb282239df37d3eaa427f9c.htmldir_41189bc1b2cbbbf473cc198cfd351ef1.htmldir_425fd6afd4367244802c1f095c2bd91a.htmldir_465fee731b4650f251292c02a329fbe4.htmldir_4a8e137842b96fe670fd4b2985ac89ae.htmldir_4b8e6c0016b49edb5f37b579e2023f82.htmldir_4d32756cfe7396f6b5bd672081496d5a.htmldir_4f2295b392fd4902b00407c8774475b6.htmldir_5035da364ebbdb660400f67ccee744ab.htmldir_5188debcb509bb3663f061cc199aacda.htmldir_537c65abdcc57b6687fa40a177fe2911.htmldir_57fc2e9d988df25248b2986356737354.htmldir_5baebda13ce0cd02061f41a85f42fb63.htmldir_5dafd97c0d945e0ac41aa1317e88fadc.htmldir_5e14993b9b1571024c777dcdb495ae81.htmldir_605c07ae6e02b3d13cc3bf92b6c5e54b.htmldir_6242a765e90f02e6b399e351944e02df.htmldir_662763201df975e54664a452d4fba6a4.htmldir_68cfe39720133e98f6e3a4074209d013.htmldir_7fb41ed998b608e7313c151134bd387c.htmldir_80017d03a93d1c6dc29fe032f2756a58.htmldir_80aaf5c78aab202ac8db50cd5384bc56.htmldir_85ecb587e53a4a73ea61471f0b12c7cd.htmldir_87f0c34ed8400daf07819036fa8c39bd.htmldir_88c81b6ae6213964a6a534ee00cb813b.htmldir_91ededd9c78ad866b6d26d7a496929b6.htmldir_97aefd0d527b934f1d99a682da8fe6a9.htmldir_9b3d03c4eb61cec62b5319e654017f5d.htmldir_9cc23110c523433deab11cddab39a876.htmldir_9dfdb91ab02719873a80bed01b3a1a5d.htmldir_9eeab561cdff5b79b69e3433d5c0167e.htmldir_9f54a0e5c0accd58ed9d59aeb0a494b6.htmldir_a1590196e97b8334b8475f5e5e087fd0.htmldir_a837e178e589be76a266a59d671110cc.htmldir_a914dcfab5ff2d1bc9dd6b873a7b604d.htmldir_ab1cf081cc3a382f37f4faf4624bc98a.htmldir_af404d643d0129b0e925f84c76faf17f.htmldir_bab3158cba42af609928ad7bdc323e4b.htmldir_c03c86d48a65141580da7a91109cd316.htmldir_c546cd799bdd92435e34b0203cfe1750.htmldir_ca0e660c1b82cc3a269d55a810660e54.htmldir_d5965c24693e7b1ab7ad0767cbd37f15.htmldir_da18e332567afad90ca07324c52c5833.htmldir_e4d91705e579e3718a61980d7fa2b542.htmldir_e6bf5b3b5611bc8c19dd42f833c7eb40.htmldir_eaabdb77807ddb33c9f95a20e00c6648.htmldir_ede7e24c7966ae13eacb9e9d5c8994f5.htmldir_f3c49864a69d49874faab6e12ff2e6f9.htmldir_f5e0cc2a752635854ee1050679b5092d.htmldir_f9bb17aa67306532eda035e0955b885e.htmldir_fd57c5f233fdd9e7da26a5e5f646d081.htmldir_fdd811c43070b66c424782ec94ee51d7.htmldoc.pngdoxy-api-index_8md_source.htmldoxygen.cssdoxygen.pngdynsections.jsexamples.htmlexamples_2bbdev_app_2main_8c-example.htmlexamples_2bond_2main_8c-example.htmlexamples_2bpf_2dummy_8c-example.htmlexamples_2bpf_2t1_8c-example.htmlexamples_2bpf_2t2_8c-example.htmlexamples_2bpf_2t3_8c-example.htmlexamples_2cmdline_2commands_8c-example.htmlexamples_2cmdline_2main_8c-example.htmlexamples_2cmdline_2parse_obj_list_8c-example.htmlexamples_2distributor_2main_8c-example.htmlexamples_2ethtool_2ethtool-app_2ethapp_8c-example.htmlexamples_2ethtool_2ethtool-app_2main_8c-example.htmlexamples_2ethtool_2lib_2rte_ethtool_8c-example.htmlexamples_2eventdev_pipeline_2main_8c-example.htmlexamples_2eventdev_pipeline_2pipeline_worker_generic_8c-example.htmlexamples_2eventdev_pipeline_2pipeline_worker_tx_8c-example.htmlexamples_2fips_validation_2fips_dev_self_test_8c-example.htmlexamples_2fips_validation_2fips_validation_8c-example.htmlexamples_2fips_validation_2fips_validation_aes_8c-example.htmlexamples_2fips_validation_2fips_validation_ccm_8c-example.htmlexamples_2fips_validation_2fips_validation_cmac_8c-example.htmlexamples_2fips_validation_2fips_validation_gcm_8c-example.htmlexamples_2fips_validation_2fips_validation_hmac_8c-example.htmlexamples_2fips_validation_2fips_validation_sha_8c-example.htmlexamples_2fips_validation_2fips_validation_tdes_8c-example.htmlexamples_2fips_validation_2main_8c-example.htmlexamples_2flow_classify_2flow_classify_8c-example.htmlexamples_2flow_filtering_2flow_blocks_8c-example.htmlexamples_2flow_filtering_2main_8c-example.htmlexamples_2helloworld_2main_8c-example.htmlexamples_2ioat_2ioatfwd_8c-example.htmlexamples_2ip_fragmentation_2main_8c-example.htmlexamples_2ip_pipeline_2action_8c-example.htmlexamples_2ip_pipeline_2cli_8c-example.htmlexamples_2ip_pipeline_2conn_8c-example.htmlexamples_2ip_pipeline_2cryptodev_8c-example.htmlexamples_2ip_pipeline_2kni_8c-example.htmlexamples_2ip_pipeline_2link_8c-example.htmlexamples_2ip_pipeline_2main_8c-example.htmlexamples_2ip_pipeline_2mempool_8c-example.htmlexamples_2ip_pipeline_2parser_8c-example.htmlexamples_2ip_pipeline_2pipeline_8c-example.htmlexamples_2ip_pipeline_2swq_8c-example.htmlexamples_2ip_pipeline_2tap_8c-example.htmlexamples_2ip_pipeline_2thread_8c-example.htmlexamples_2ip_pipeline_2tmgr_8c-example.htmlexamples_2ip_reassembly_2main_8c-example.htmlexamples_2ipsec-secgw_2esp_8c-example.htmlexamples_2ipsec-secgw_2ipsec-secgw_8c-example.htmlexamples_2ipsec-secgw_2ipsec_8c-example.htmlexamples_2ipsec-secgw_2ipsec_process_8c-example.htmlexamples_2ipsec-secgw_2parser_8c-example.htmlexamples_2ipsec-secgw_2rt_8c-example.htmlexamples_2ipsec-secgw_2sa_8c-example.htmlexamples_2ipsec-secgw_2sp4_8c-example.htmlexamples_2ipsec-secgw_2sp6_8c-example.htmlexamples_2ipv4_multicast_2main_8c-example.htmlexamples_2kni_2main_8c-example.htmlexamples_2l2fwd-cat_2cat_8c-example.htmlexamples_2l2fwd-cat_2l2fwd-cat_8c-example.htmlexamples_2l2fwd-crypto_2main_8c-example.htmlexamples_2l2fwd-event_2l2fwd_common_8c-example.htmlexamples_2l2fwd-event_2l2fwd_event_8c-example.htmlexamples_2l2fwd-event_2l2fwd_event_generic_8c-example.htmlexamples_2l2fwd-event_2l2fwd_event_internal_port_8c-example.htmlexamples_2l2fwd-event_2l2fwd_poll_8c-example.htmlexamples_2l2fwd-event_2main_8c-example.htmlexamples_2l2fwd-jobstats_2main_8c-example.htmlexamples_2l2fwd-keepalive_2ka-agent_2main_8c-example.htmlexamples_2l2fwd-keepalive_2main_8c-example.htmlexamples_2l2fwd-keepalive_2shm_8c-example.htmlexamples_2l2fwd_2main_8c-example.htmlexamples_2l3fwd-acl_2main_8c-example.htmlexamples_2l3fwd-power_2main_8c-example.htmlexamples_2l3fwd-power_2perf_core_8c-example.htmlexamples_2l3fwd_2l3fwd_em_8c-example.htmlexamples_2l3fwd_2l3fwd_lpm_8c-example.htmlexamples_2l3fwd_2main_8c-example.htmlexamples_2link_status_interrupt_2main_8c-example.htmlexamples_2multi_process_2client_server_mp_2mp_client_2client_8c-example.htmlexamples_2multi_process_2client_server_mp_2mp_server_2args_8c-example.htmlexamples_2multi_process_2client_server_mp_2mp_server_2init_8c-example.htmlexamples_2multi_process_2client_server_mp_2mp_server_2main_8c-example.htmlexamples_2multi_process_2hotplug_mp_2commands_8c-example.htmlexamples_2multi_process_2hotplug_mp_2main_8c-example.htmlexamples_2multi_process_2simple_mp_2main_8c-example.htmlexamples_2multi_process_2simple_mp_2mp_commands_8c-example.htmlexamples_2multi_process_2symmetric_mp_2main_8c-example.htmlexamples_2ntb_2ntb_fwd_8c-example.htmlexamples_2packet_ordering_2main_8c-example.htmlexamples_2performance-thread_2common_2arch_2arm64_2ctx_8c-example.htmlexamples_2performance-thread_2common_2arch_2x86_2ctx_8c-example.htmlexamples_2performance-thread_2common_2lthread_8c-example.htmlexamples_2performance-thread_2common_2lthread_cond_8c-example.htmlexamples_2performance-thread_2common_2lthread_diag_8c-example.htmlexamples_2performance-thread_2common_2lthread_mutex_8c-example.htmlexamples_2performance-thread_2common_2lthread_sched_8c-example.htmlexamples_2performance-thread_2common_2lthread_tls_8c-example.htmlexamples_2performance-thread_2l3fwd-thread_2main_8c-example.htmlexamples_2performance-thread_2pthread_shim_2main_8c-example.htmlexamples_2performance-thread_2pthread_shim_2pthread_shim_8c-example.htmlexamples_2ptpclient_2ptpclient_8c-example.htmlexamples_2qos_meter_2main_8c-example.htmlexamples_2qos_meter_2rte_policer_8c-example.htmlexamples_2qos_sched_2app_thread_8c-example.htmlexamples_2qos_sched_2args_8c-example.htmlexamples_2qos_sched_2cfg_file_8c-example.htmlexamples_2qos_sched_2cmdline_8c-example.htmlexamples_2qos_sched_2init_8c-example.htmlexamples_2qos_sched_2main_8c-example.htmlexamples_2qos_sched_2stats_8c-example.htmlexamples_2rxtx_callbacks_2main_8c-example.htmlexamples_2server_node_efd_2node_2node_8c-example.htmlexamples_2server_node_efd_2server_2args_8c-example.htmlexamples_2server_node_efd_2server_2init_8c-example.htmlexamples_2server_node_efd_2server_2main_8c-example.htmlexamples_2service_cores_2main_8c-example.htmlexamples_2skeleton_2basicfwd_8c-example.htmlexamples_2tep_termination_2main_8c-example.htmlexamples_2tep_termination_2vxlan_8c-example.htmlexamples_2tep_termination_2vxlan_setup_8c-example.htmlexamples_2timer_2main_8c-example.htmlexamples_2vdpa_2main_8c-example.htmlexamples_2vhost_2main_8c-example.htmlexamples_2vhost_2virtio_net_8c-example.htmlexamples_2vhost_blk_2blk_8c-example.htmlexamples_2vhost_blk_2vhost_blk_8c-example.htmlexamples_2vhost_blk_2vhost_blk_compat_8c-example.htmlexamples_2vhost_crypto_2main_8c-example.htmlexamples_2vm_power_manager_2channel_manager_8c-example.htmlexamples_2vm_power_manager_2channel_monitor_8c-example.htmlexamples_2vm_power_manager_2guest_cli_2main_8c-example.htmlexamples_2vm_power_manager_2guest_cli_2parse_8c-example.htmlexamples_2vm_power_manager_2guest_cli_2vm_power_cli_guest_8c-example.htmlexamples_2vm_power_manager_2main_8c-example.htmlexamples_2vm_power_manager_2oob_monitor_nop_8c-example.htmlexamples_2vm_power_manager_2oob_monitor_x86_8c-example.htmlexamples_2vm_power_manager_2parse_8c-example.htmlexamples_2vm_power_manager_2power_manager_8c-example.htmlexamples_2vm_power_manager_2vm_power_cli_8c-example.htmlexamples_2vmdq_2main_8c-example.htmlexamples_2vmdq_dcb_2main_8c-example.htmlfiles.htmlfolderclosed.pngfolderopen.pngfunctions.htmlfunctions_a.htmlfunctions_b.htmlfunctions_c.htmlfunctions_d.htmlfunctions_e.htmlfunctions_f.htmlfunctions_func.htmlfunctions_g.htmlfunctions_h.htmlfunctions_i.htmlfunctions_k.htmlfunctions_l.htmlfunctions_m.htmlfunctions_n.htmlfunctions_o.htmlfunctions_p.htmlfunctions_q.htmlfunctions_r.htmlfunctions_s.htmlfunctions_t.htmlfunctions_u.htmlfunctions_v.htmlfunctions_vars.htmlfunctions_vars_a.htmlfunctions_vars_b.htmlfunctions_vars_c.htmlfunctions_vars_d.htmlfunctions_vars_e.htmlfunctions_vars_f.htmlfunctions_vars_g.htmlfunctions_vars_h.htmlfunctions_vars_i.htmlfunctions_vars_k.htmlfunctions_vars_l.htmlfunctions_vars_m.htmlfunctions_vars_n.htmlfunctions_vars_o.htmlfunctions_vars_p.htmlfunctions_vars_q.htmlfunctions_vars_r.htmlfunctions_vars_s.htmlfunctions_vars_t.htmlfunctions_vars_u.htmlfunctions_vars_v.htmlfunctions_vars_w.htmlfunctions_vars_x.htmlfunctions_vars_y.htmlfunctions_vars_z.htmlfunctions_w.htmlfunctions_x.htmlfunctions_y.htmlfunctions_z.htmlglobals.htmlglobals_a.htmlglobals_b.htmlglobals_c.htmlglobals_d.htmlglobals_defs.htmlglobals_defs_b.htmlglobals_defs_c.htmlglobals_defs_d.htmlglobals_defs_e.htmlglobals_defs_i.htmlglobals_defs_l.htmlglobals_defs_m.htmlglobals_defs_o.htmlglobals_defs_p.htmlglobals_defs_r.htmlglobals_defs_s.htmlglobals_defs_t.htmlglobals_defs_u.htmlglobals_defs_v.htmlglobals_e.htmlglobals_enum.htmlglobals_eval.htmlglobals_eval_e.htmlglobals_eval_f.htmlglobals_eval_i.htmlglobals_eval_m.htmlglobals_eval_r.htmlglobals_eval_s.htmlglobals_eval_w.htmlglobals_f.htmlglobals_func.htmlglobals_func_c.htmlglobals_func_g.htmlglobals_func_p.htmlglobals_func_r.htmlglobals_func_s.htmlglobals_func_t.htmlglobals_g.htmlglobals_h.htmlglobals_i.htmlglobals_l.htmlglobals_m.htmlglobals_o.htmlglobals_p.htmlglobals_r.htmlglobals_s.htmlglobals_t.htmlglobals_type.htmlglobals_type_c.htmlglobals_type_d.htmlglobals_type_e.htmlglobals_type_h.htmlglobals_type_l.htmlglobals_type_m.htmlglobals_type_p.htmlglobals_type_r.htmlglobals_type_s.htmlglobals_type_u.htmlglobals_u.htmlglobals_v.htmlglobals_vars.htmlglobals_w.htmlindex.htmljquery.jsmenu.jsmenudata.jsnav_f.pngnav_g.pngnav_h.pngopen.pngpages.htmlrte__acl_8h.htmlrte__acl_8h_source.htmlrte__acl__osdep_8h.htmlrte__acl__osdep_8h_source.htmlrte__alarm_8h.htmlrte__alarm_8h_source.htmlrte__approx_8h.htmlrte__approx_8h_source.htmlrte__arp_8h.htmlrte__arp_8h_source.htmlrte__atomic_8h.htmlrte__atomic_8h_source.htmlrte__bbdev_8h.htmlrte__bbdev_8h_source.htmlrte__bbdev__op_8h.htmlrte__bbdev__op_8h_source.htmlrte__bbdev__pmd_8h.htmlrte__bbdev__pmd_8h_source.htmlrte__bitmap_8h.htmlrte__bitmap_8h_source.htmlrte__bitrate_8h_source.htmlrte__bpf_8h.htmlrte__bpf_8h_source.htmlrte__bpf__ethdev_8h.htmlrte__bpf__ethdev_8h_source.htmlrte__branch__prediction_8h.htmlrte__branch__prediction_8h_source.htmlrte__bus_8h.htmlrte__bus_8h_source.htmlrte__bus__vdev_8h.htmlrte__bus__vdev_8h_source.htmlrte__byteorder_8h.htmlrte__byteorder_8h_source.htmlrte__cfgfile_8h.htmlrte__cfgfile_8h_source.htmlrte__class_8h.htmlrte__class_8h_source.htmlrte__cmp__arm64_8h_source.htmlrte__cmp__x86_8h_source.htmlrte__common_8h.htmlrte__common_8h_source.htmlrte__comp_8h.htmlrte__comp_8h_source.htmlrte__compat_8h_source.htmlrte__compressdev_8h.htmlrte__compressdev_8h_source.htmlrte__compressdev__internal_8h_source.htmlrte__compressdev__pmd_8h.htmlrte__compressdev__pmd_8h_source.htmlrte__cpuflags_8h.htmlrte__cpuflags_8h_source.htmlrte__crc__arm64_8h.htmlrte__crc__arm64_8h_source.htmlrte__crypto_8h.htmlrte__crypto_8h_source.htmlrte__crypto__asym_8h.htmlrte__crypto__asym_8h_source.htmlrte__crypto__sym_8h.htmlrte__crypto__sym_8h_source.htmlrte__cryptodev_8h.htmlrte__cryptodev_8h_source.htmlrte__cryptodev__pmd_8h.htmlrte__cryptodev__pmd_8h_source.htmlrte__cryptodev__scheduler_8h.htmlrte__cryptodev__scheduler_8h_source.htmlrte__cryptodev__scheduler__operations_8h_source.htmlrte__cuckoo__hash_8h_source.htmlrte__cycles_8h.htmlrte__cycles_8h_source.htmlrte__debug_8h.htmlrte__debug_8h_source.htmlrte__dev_8h.htmlrte__dev_8h_source.htmlrte__dev__info_8h_source.htmlrte__devargs_8h.htmlrte__devargs_8h_source.htmlrte__distributor_8h.htmlrte__distributor_8h_source.htmlrte__distributor__single_8h.htmlrte__distributor__single_8h_source.htmlrte__dpaa2__mempool_8h.htmlrte__dpaa2__mempool_8h_source.htmlrte__eal_8h.htmlrte__eal_8h_source.htmlrte__eal__interrupts_8h.htmlrte__eal__interrupts_8h_source.htmlrte__eal__memconfig_8h.htmlrte__eal__memconfig_8h_source.htmlrte__efd_8h.htmlrte__efd_8h_source.htmlrte__efd__arm64_8h_source.htmlrte__efd__x86_8h_source.htmlrte__errno_8h.htmlrte__errno_8h_source.htmlrte__esp_8h.htmlrte__esp_8h_source.htmlrte__eth__bond_8h.htmlrte__eth__bond_8h_source.htmlrte__eth__bond__8023ad_8h_source.htmlrte__eth__bond__alb_8h_source.htmlrte__eth__ctrl_8h.htmlrte__eth__ctrl_8h_source.htmlrte__eth__softnic_8h_source.htmlrte__eth__softnic__internals_8h_source.htmlrte__ethdev_8h.htmlrte__ethdev_8h_source.htmlrte__ethdev__core_8h.htmlrte__ethdev__core_8h_source.htmlrte__ethdev__driver_8h.htmlrte__ethdev__driver_8h_source.htmlrte__ethdev__pci_8h_source.htmlrte__ethdev__vdev_8h_source.htmlrte__ether_8h.htmlrte__ether_8h_source.htmlrte__event__crypto__adapter_8h.htmlrte__event__crypto__adapter_8h_source.htmlrte__event__eth__rx__adapter_8h.htmlrte__event__eth__rx__adapter_8h_source.htmlrte__event__eth__tx__adapter_8h.htmlrte__event__eth__tx__adapter_8h_source.htmlrte__event__ring_8h.htmlrte__event__ring_8h_source.htmlrte__event__timer__adapter_8h.htmlrte__event__timer__adapter_8h_source.htmlrte__event__timer__adapter__pmd_8h.htmlrte__event__timer__adapter__pmd_8h_source.htmlrte__eventdev_8h.htmlrte__eventdev_8h_source.htmlrte__eventdev__pmd_8h.htmlrte__eventdev__pmd_8h_source.htmlrte__eventdev__pmd__pci_8h.htmlrte__eventdev__pmd__pci_8h_source.htmlrte__eventdev__pmd__vdev_8h.htmlrte__eventdev__pmd__vdev_8h_source.htmlrte__fbarray_8h.htmlrte__fbarray_8h_source.htmlrte__fbk__hash_8h.htmlrte__fbk__hash_8h_source.htmlrte__fib6_8h.htmlrte__fib6_8h_source.htmlrte__fib_8h.htmlrte__fib_8h_source.htmlrte__flow_8h.htmlrte__flow_8h_source.htmlrte__flow__classify_8h.htmlrte__flow__classify_8h_source.htmlrte__flow__classify__parse_8h_source.htmlrte__flow__driver_8h.htmlrte__flow__driver_8h_source.htmlrte__function__versioning_8h_source.htmlrte__gre_8h_source.htmlrte__gro_8h.htmlrte__gro_8h_source.htmlrte__gso_8h.htmlrte__gso_8h_source.htmlrte__gtp_8h.htmlrte__gtp_8h_source.htmlrte__hash_8h.htmlrte__hash_8h_source.htmlrte__hash__crc_8h.htmlrte__hash__crc_8h_source.htmlrte__hexdump_8h.htmlrte__hexdump_8h_source.htmlrte__higig_8h_source.htmlrte__hypervisor_8h.htmlrte__hypervisor_8h_source.htmlrte__icmp_8h.htmlrte__icmp_8h_source.htmlrte__interrupts_8h.htmlrte__interrupts_8h_source.htmlrte__io_8h.htmlrte__io_8h_source.htmlrte__ip_8h.htmlrte__ip_8h_source.htmlrte__ip__frag_8h.htmlrte__ip__frag_8h_source.htmlrte__ipsec_8h.htmlrte__ipsec_8h_source.htmlrte__ipsec__group_8h.htmlrte__ipsec__group_8h_source.htmlrte__ipsec__sa_8h.htmlrte__ipsec__sa_8h_source.htmlrte__ipsec__sad_8h.htmlrte__ipsec__sad_8h_source.htmlrte__jhash_8h.htmlrte__jhash_8h_source.htmlrte__jobstats_8h_source.htmlrte__keepalive_8h.htmlrte__keepalive_8h_source.htmlrte__kni_8h.htmlrte__kni_8h_source.htmlrte__kni__fifo_8h_source.htmlrte__kvargs_8h.htmlrte__kvargs_8h_source.htmlrte__latencystats_8h.htmlrte__latencystats_8h_source.htmlrte__launch_8h.htmlrte__launch_8h_source.htmlrte__lcore_8h.htmlrte__lcore_8h_source.htmlrte__log_8h.htmlrte__log_8h_source.htmlrte__lpm6_8h.htmlrte__lpm6_8h_source.htmlrte__lpm_8h.htmlrte__lpm_8h_source.htmlrte__lpm__altivec_8h_source.htmlrte__lpm__neon_8h_source.htmlrte__lpm__sse_8h_source.htmlrte__lru_8h_source.htmlrte__lru__arm64_8h_source.htmlrte__lru__x86_8h_source.htmlrte__malloc_8h.htmlrte__malloc_8h_source.htmlrte__mbuf_8h.htmlrte__mbuf_8h_source.htmlrte__mbuf__core_8h.htmlrte__mbuf__core_8h_source.htmlrte__mbuf__dyn_8h.htmlrte__mbuf__dyn_8h_source.htmlrte__mbuf__pool__ops_8h.htmlrte__mbuf__pool__ops_8h_source.htmlrte__mbuf__ptype_8h.htmlrte__mbuf__ptype_8h_source.htmlrte__mcslock_8h.htmlrte__mcslock_8h_source.htmlrte__member_8h.htmlrte__member_8h_source.htmlrte__member__ht_8h_source.htmlrte__member__vbf_8h_source.htmlrte__member__x86_8h_source.htmlrte__memcpy_8h.htmlrte__memcpy_8h_source.htmlrte__memory_8h.htmlrte__memory_8h_source.htmlrte__mempool_8h.htmlrte__mempool_8h_source.htmlrte__memzone_8h.htmlrte__memzone_8h_source.htmlrte__meter_8h.htmlrte__meter_8h_source.htmlrte__metrics_8h.htmlrte__metrics_8h_source.htmlrte__mpls_8h.htmlrte__mpls_8h_source.htmlrte__mtr_8h.htmlrte__mtr_8h_source.htmlrte__mtr__driver_8h.htmlrte__mtr__driver_8h_source.htmlrte__net_8h_source.htmlrte__net__crc_8h_source.htmlrte__option_8h.htmlrte__option_8h_source.htmlrte__pause_8h.htmlrte__pause_8h_source.htmlrte__pci_8h.htmlrte__pci_8h_source.htmlrte__pci__dev__feature__defs_8h_source.htmlrte__pci__dev__features_8h_source.htmlrte__pdump_8h.htmlrte__pdump_8h_source.htmlrte__per__lcore_8h.htmlrte__per__lcore_8h_source.htmlrte__pipeline_8h.htmlrte__pipeline_8h_source.htmlrte__pmd__bnxt_8h_source.htmlrte__pmd__dpaa2_8h.htmlrte__pmd__dpaa2_8h_source.htmlrte__pmd__dpaa2__cmdif_8h.htmlrte__pmd__dpaa2__cmdif_8h_source.htmlrte__pmd__dpaa2__qdma_8h.htmlrte__pmd__dpaa2__qdma_8h_source.htmlrte__pmd__dpaa_8h.htmlrte__pmd__dpaa_8h_source.htmlrte__pmd__i40e_8h.htmlrte__pmd__i40e_8h_source.htmlrte__pmd__ice_8h.htmlrte__pmd__ice_8h_source.htmlrte__pmd__ixgbe_8h.htmlrte__pmd__ixgbe_8h_source.htmlrte__port_8h.htmlrte__port_8h_source.htmlrte__port__ethdev_8h.htmlrte__port__ethdev_8h_source.htmlrte__port__eventdev_8h.htmlrte__port__eventdev_8h_source.htmlrte__port__fd_8h.htmlrte__port__fd_8h_source.htmlrte__port__frag_8h.htmlrte__port__frag_8h_source.htmlrte__port__in__action_8h.htmlrte__port__in__action_8h_source.htmlrte__port__kni_8h.htmlrte__port__kni_8h_source.htmlrte__port__ras_8h.htmlrte__port__ras_8h_source.htmlrte__port__ring_8h.htmlrte__port__ring_8h_source.htmlrte__port__sched_8h.htmlrte__port__sched_8h_source.htmlrte__port__source__sink_8h.htmlrte__port__source__sink_8h_source.htmlrte__port__sym__crypto_8h.htmlrte__port__sym__crypto_8h_source.htmlrte__power_8h.htmlrte__power_8h_source.htmlrte__power__empty__poll_8h.htmlrte__power__empty__poll_8h_source.htmlrte__power__guest__channel_8h_source.htmlrte__prefetch_8h.htmlrte__prefetch_8h_source.htmlrte__random_8h.htmlrte__random_8h_source.htmlrte__rawdev_8h.htmlrte__rawdev_8h_source.htmlrte__rawdev__pmd_8h.htmlrte__rawdev__pmd_8h_source.htmlrte__rcu__qsbr_8h.htmlrte__rcu__qsbr_8h_source.htmlrte__reciprocal_8h_source.htmlrte__red_8h.htmlrte__red_8h_source.htmlrte__reorder_8h.htmlrte__reorder_8h_source.htmlrte__rib6_8h.htmlrte__rib6_8h_source.htmlrte__rib_8h.htmlrte__rib_8h_source.htmlrte__ring_8h.htmlrte__ring_8h_source.htmlrte__ring__c11__mem_8h_source.htmlrte__ring__generic_8h_source.htmlrte__rwlock_8h.htmlrte__rwlock_8h_source.htmlrte__sched_8h.htmlrte__sched_8h_source.htmlrte__sched__common_8h_source.htmlrte__sctp_8h.htmlrte__sctp_8h_source.htmlrte__security_8h.htmlrte__security_8h_source.htmlrte__security__driver_8h.htmlrte__security__driver_8h_source.htmlrte__service_8h.htmlrte__service_8h_source.htmlrte__service__component_8h_source.htmlrte__spinlock_8h.htmlrte__spinlock_8h_source.htmlrte__stack_8h.htmlrte__stack_8h_source.htmlrte__stack__lf_8h_source.htmlrte__stack__lf__c11_8h_source.htmlrte__stack__lf__generic_8h_source.htmlrte__stack__lf__stubs_8h_source.htmlrte__stack__std_8h_source.htmlrte__string__fns_8h.htmlrte__string__fns_8h_source.htmlrte__table_8h.htmlrte__table_8h_source.htmlrte__table__acl_8h.htmlrte__table__acl_8h_source.htmlrte__table__action_8h.htmlrte__table__action_8h_source.htmlrte__table__array_8h.htmlrte__table__array_8h_source.htmlrte__table__hash_8h.htmlrte__table__hash_8h_source.htmlrte__table__hash__cuckoo_8h.htmlrte__table__hash__cuckoo_8h_source.htmlrte__table__hash__func_8h_source.htmlrte__table__hash__func__arm64_8h_source.htmlrte__table__lpm_8h.htmlrte__table__lpm_8h_source.htmlrte__table__lpm__ipv6_8h.htmlrte__table__lpm__ipv6_8h_source.htmlrte__table__stub_8h.htmlrte__table__stub_8h_source.htmlrte__tailq_8h.htmlrte__tailq_8h_source.htmlrte__tcp_8h.htmlrte__tcp_8h_source.htmlrte__telemetry_8h.htmlrte__telemetry_8h_source.htmlrte__telemetry__internal_8h_source.htmlrte__telemetry__parser_8h_source.htmlrte__telemetry__socket__tests_8h_source.htmlrte__test_8h_source.htmlrte__thash_8h.htmlrte__thash_8h_source.htmlrte__ticketlock_8h.htmlrte__ticketlock_8h_source.htmlrte__time_8h_source.htmlrte__timer_8h.htmlrte__timer_8h_source.htmlrte__tm_8h.htmlrte__tm_8h_source.htmlrte__tm__driver_8h.htmlrte__tm__driver_8h_source.htmlrte__udp_8h.htmlrte__udp_8h_source.htmlrte__uuid_8h.htmlrte__uuid_8h_source.htmlrte__vdpa_8h.htmlrte__vdpa_8h_source.htmlrte__vect_8h.htmlrte__vect_8h_source.htmlrte__version_8h.htmlrte__version_8h_source.htmlrte__vfio_8h.htmlrte__vfio_8h_source.htmlrte__vhost_8h.htmlrte__vhost_8h_source.htmlrte__vhost__crypto_8h_source.htmlrte__vxlan_8h.htmlrte__vxlan_8h_source.htmlsearchall_0.htmlall_0.jsall_1.htmlall_1.jsall_10.htmlall_10.jsall_11.htmlall_11.jsall_12.htmlall_12.jsall_13.htmlall_13.jsall_14.htmlall_14.jsall_15.htmlall_15.jsall_16.htmlall_16.jsall_17.htmlall_17.jsall_18.htmlall_18.jsall_19.htmlall_19.jsall_2.htmlall_2.jsall_3.htmlall_3.jsall_4.htmlall_4.jsall_5.htmlall_5.jsall_6.htmlall_6.jsall_7.htmlall_7.jsall_8.htmlall_8.jsall_9.htmlall_9.jsall_a.htmlall_a.jsall_b.htmlall_b.jsall_c.htmlall_c.jsall_d.htmlall_d.jsall_e.htmlall_e.jsall_f.htmlall_f.jsclasses_0.htmlclasses_0.jsclasses_1.htmlclasses_1.jsclasses_2.htmlclasses_2.jsclasses_3.htmlclasses_3.jsclasses_4.htmlclasses_4.jsclasses_5.htmlclasses_5.jsclasses_6.htmlclasses_6.jsclasses_7.htmlclasses_7.jsclose.pngdefines_0.htmldefines_0.jsdefines_1.htmldefines_1.jsdefines_2.htmldefines_2.jsdefines_3.htmldefines_3.jsdefines_4.htmldefines_4.jsdefines_5.htmldefines_5.jsdefines_6.htmldefines_6.jsdefines_7.htmldefines_7.jsdefines_8.htmldefines_8.jsdefines_9.htmldefines_9.jsdefines_a.htmldefines_a.jsdefines_b.htmldefines_b.jsdefines_c.htmldefines_c.jsdefines_d.htmldefines_d.jsdefines_e.htmldefines_e.jsenums_0.htmlenums_0.jsenumvalues_0.htmlenumvalues_0.jsenumvalues_1.htmlenumvalues_1.jsenumvalues_2.htmlenumvalues_2.jsenumvalues_3.htmlenumvalues_3.jsenumvalues_4.htmlenumvalues_4.jsenumvalues_5.htmlenumvalues_5.jsenumvalues_6.htmlenumvalues_6.jsenumvalues_7.htmlenumvalues_7.jsfiles_0.htmlfiles_0.jsfiles_1.htmlfiles_1.jsfunctions_0.htmlfunctions_0.jsfunctions_1.htmlfunctions_1.jsfunctions_2.htmlfunctions_2.jsfunctions_3.htmlfunctions_3.jsfunctions_4.htmlfunctions_4.jsfunctions_5.htmlfunctions_5.jsfunctions_6.htmlfunctions_6.jsmag_sel.pngnomatches.htmlpages_0.htmlpages_0.jspages_1.htmlpages_1.jssearch.csssearch.jssearch_l.pngsearch_m.pngsearch_r.pngsearchdata.jstypedefs_0.htmltypedefs_0.jstypedefs_1.htmltypedefs_1.jstypedefs_2.htmltypedefs_2.jstypedefs_3.htmltypedefs_3.jstypedefs_4.htmltypedefs_4.jstypedefs_5.htmltypedefs_5.jstypedefs_6.htmltypedefs_6.jstypedefs_7.htmltypedefs_7.jstypedefs_8.htmltypedefs_8.jstypedefs_9.htmltypedefs_9.jstypedefs_a.htmltypedefs_a.jsvariables_0.htmlvariables_0.jsvariables_1.htmlvariables_1.jsvariables_10.htmlvariables_10.jsvariables_11.htmlvariables_11.jsvariables_12.htmlvariables_12.jsvariables_13.htmlvariables_13.jsvariables_14.htmlvariables_14.jsvariables_15.htmlvariables_15.jsvariables_16.htmlvariables_16.jsvariables_17.htmlvariables_17.jsvariables_18.htmlvariables_18.jsvariables_19.htmlvariables_19.jsvariables_2.htmlvariables_2.jsvariables_3.htmlvariables_3.jsvariables_4.htmlvariables_4.jsvariables_5.htmlvariables_5.jsvariables_6.htmlvariables_6.jsvariables_7.htmlvariables_7.jsvariables_8.htmlvariables_8.jsvariables_9.htmlvariables_9.jsvariables_a.htmlvariables_a.jsvariables_b.htmlvariables_b.jsvariables_c.htmlvariables_c.jsvariables_d.htmlvariables_d.jsvariables_e.htmlvariables_e.jsvariables_f.htmlvariables_f.jssplitbar.pngstruct____rte__aligned.htmlstructip__frag__tbl__stat.htmlstructlacpdu.htmlstructlacpdu__header.htmlstructmapped__pci__resource.htmlstructpci__map.htmlstructpipeline__params.htmlstructpmd__internals.htmlstructpmd__params.htmlstructrte__acl__config.htmlstructrte__acl__field.htmlstructrte__acl__field__def.htmlstructrte__acl__param.htmlstructrte__acl__rule__data.htmlstructrte__arp__hdr.htmlstructrte__arp__ipv4.htmlstructrte__atomic16__t.htmlstructrte__atomic32__t.htmlstructrte__atomic64__t.htmlstructrte__bbdev__dec__op.htmlstructrte__bbdev__driver__info.htmlstructrte__bbdev__enc__op.htmlstructrte__bbdev__info.htmlstructrte__bbdev__op__cap.htmlstructrte__bbdev__op__cap__ldpc__dec.htmlstructrte__bbdev__op__cap__ldpc__enc.htmlstructrte__bbdev__op__cap__turbo__dec.htmlstructrte__bbdev__op__cap__turbo__enc.htmlstructrte__bbdev__op__data.htmlstructrte__bbdev__op__dec__ldpc__cb__params.htmlstructrte__bbdev__op__dec__ldpc__tb__params.htmlstructrte__bbdev__op__dec__turbo__cb__params.htmlstructrte__bbdev__op__dec__turbo__tb__params.htmlstructrte__bbdev__op__enc__ldpc__cb__params.htmlstructrte__bbdev__op__enc__ldpc__tb__params.htmlstructrte__bbdev__op__enc__turbo__cb__params.htmlstructrte__bbdev__op__enc__turbo__tb__params.htmlstructrte__bbdev__op__ldpc__dec.htmlstructrte__bbdev__op__ldpc__enc.htmlstructrte__bbdev__op__turbo__dec.htmlstructrte__bbdev__op__turbo__enc.htmlstructrte__bbdev__ops.htmlstructrte__bbdev__queue__conf.htmlstructrte__bbdev__queue__info.htmlstructrte__bbdev__stats.htmlstructrte__bitmap.htmlstructrte__bpf__arg.htmlstructrte__bpf__jit.htmlstructrte__bpf__prm.htmlstructrte__bpf__xsym.htmlstructrte__bus.htmlstructrte__bus__conf.htmlstructrte__cfgfile__entry.htmlstructrte__cfgfile__parameters.htmlstructrte__class.htmlstructrte__comp__compress__xform.htmlstructrte__comp__decompress__xform.htmlstructrte__comp__deflate__params.htmlstructrte__comp__op.htmlstructrte__comp__xform.htmlstructrte__compressdev.htmlstructrte__compressdev__capabilities.htmlstructrte__compressdev__config.htmlstructrte__compressdev__data.htmlstructrte__compressdev__global.htmlstructrte__compressdev__info.htmlstructrte__compressdev__ops.htmlstructrte__compressdev__stats.htmlstructrte__crypto__asym__op.htmlstructrte__crypto__asym__xform.htmlstructrte__crypto__auth__xform.htmlstructrte__crypto__cipher__xform.htmlstructrte__crypto__dh__op__param.htmlstructrte__crypto__dh__xform.htmlstructrte__crypto__dsa__op__param.htmlstructrte__crypto__dsa__xform.htmlstructrte__crypto__mod__op__param.htmlstructrte__crypto__modex__xform.htmlstructrte__crypto__modinv__xform.htmlstructrte__crypto__op.htmlstructrte__crypto__op__pool__private.htmlstructrte__crypto__param__range.htmlstructrte__crypto__rsa__op__param.htmlstructrte__crypto__rsa__priv__key__qt.htmlstructrte__crypto__rsa__xform.htmlstructrte__crypto__sym__op.htmlstructrte__crypto__sym__xform.htmlstructrte__cryptodev.htmlstructrte__cryptodev__asym__capability__idx.htmlstructrte__cryptodev__asym__session.htmlstructrte__cryptodev__asymmetric__capability.htmlstructrte__cryptodev__asymmetric__xform__capability.htmlstructrte__cryptodev__capabilities.htmlstructrte__cryptodev__config.htmlstructrte__cryptodev__data.htmlstructrte__cryptodev__global.htmlstructrte__cryptodev__info.htmlstructrte__cryptodev__ops.htmlstructrte__cryptodev__qp__conf.htmlstructrte__cryptodev__scheduler.htmlstructrte__cryptodev__stats.htmlstructrte__cryptodev__sym__capability__idx.htmlstructrte__cryptodev__sym__session.htmlstructrte__cryptodev__symmetric__capability.htmlstructrte__dev__iterator.htmlstructrte__devargs.htmlstructrte__device.htmlstructrte__dpaa2__cmdif__context.htmlstructrte__driver.htmlstructrte__epoll__event.htmlstructrte__esp__hdr.htmlstructrte__esp__tail.htmlstructrte__eth__burst__mode.htmlstructrte__eth__conf.htmlstructrte__eth__dcb__info.htmlstructrte__eth__dcb__tc__queue__mapping.htmlstructrte__eth__desc__lim.htmlstructrte__eth__dev__info.htmlstructrte__eth__dev__module__info.htmlstructrte__eth__dev__portconf.htmlstructrte__eth__dev__tx__buffer.htmlstructrte__eth__devargs.htmlstructrte__eth__ethertype__filter.htmlstructrte__eth__event__ipsec__desc.htmlstructrte__eth__fc__conf.htmlstructrte__eth__fdir__action.htmlstructrte__eth__fdir__filter.htmlstructrte__eth__fdir__filter__info.htmlstructrte__eth__fdir__flex__conf.htmlstructrte__eth__fdir__flex__mask.htmlstructrte__eth__fdir__flow__ext.htmlstructrte__eth__fdir__info.htmlstructrte__eth__fdir__input.htmlstructrte__eth__fdir__masks.htmlstructrte__eth__fdir__stats.htmlstructrte__eth__flex__filter.htmlstructrte__eth__flex__payload__cfg.htmlstructrte__eth__global__cfg.htmlstructrte__eth__hairpin__cap.htmlstructrte__eth__hairpin__conf.htmlstructrte__eth__hairpin__peer.htmlstructrte__eth__hash__filter__info.htmlstructrte__eth__hash__global__conf.htmlstructrte__eth__input__set__conf.htmlstructrte__eth__ipv4__flow.htmlstructrte__eth__ipv6__flow.htmlstructrte__eth__l2__flow.htmlstructrte__eth__l2__tunnel__conf.htmlstructrte__eth__link.htmlstructrte__eth__mac__filter.htmlstructrte__eth__mac__vlan__flow.htmlstructrte__eth__mirror__conf.htmlstructrte__eth__ntuple__filter.htmlstructrte__eth__pfc__conf.htmlstructrte__eth__rss__conf.htmlstructrte__eth__rss__reta__entry64.htmlstructrte__eth__rxconf.htmlstructrte__eth__rxmode.htmlstructrte__eth__rxq__info.htmlstructrte__eth__sctpv4__flow.htmlstructrte__eth__sctpv6__flow.htmlstructrte__eth__stats.htmlstructrte__eth__switch__info.htmlstructrte__eth__syn__filter.htmlstructrte__eth__tcpv4__flow.htmlstructrte__eth__tcpv6__flow.htmlstructrte__eth__thresh.htmlstructrte__eth__tunnel__filter__conf.htmlstructrte__eth__tunnel__flow.htmlstructrte__eth__txconf.htmlstructrte__eth__txmode.htmlstructrte__eth__txq__info.htmlstructrte__eth__udp__tunnel.htmlstructrte__eth__udpv4__flow.htmlstructrte__eth__udpv6__flow.htmlstructrte__eth__vlan__mirror.htmlstructrte__eth__vmdq__dcb__conf.htmlstructrte__eth__vmdq__rx__conf.htmlstructrte__eth__xstat.htmlstructrte__eth__xstat__name.htmlstructrte__ether__addr.htmlstructrte__ether__hdr.htmlstructrte__event.htmlstructrte__event__crypto__adapter__conf.htmlstructrte__event__crypto__adapter__stats.htmlstructrte__event__crypto__request.htmlstructrte__event__dev__config.htmlstructrte__event__dev__info.htmlstructrte__event__dev__xstats__name.htmlstructrte__event__eth__rx__adapter__conf.htmlstructrte__event__eth__rx__adapter__queue__conf.htmlstructrte__event__eth__rx__adapter__stats.htmlstructrte__event__eth__tx__adapter__conf.htmlstructrte__event__eth__tx__adapter__stats.htmlstructrte__event__port__conf.htmlstructrte__event__queue__conf.htmlstructrte__event__ring.htmlstructrte__event__timer.htmlstructrte__event__timer__adapter__conf.htmlstructrte__event__timer__adapter__info.htmlstructrte__event__timer__adapter__stats.htmlstructrte__eventdev__global.htmlstructrte__eventdev__ops.htmlstructrte__fbk__hash__params.htmlstructrte__fbk__hash__table.htmlstructrte__fdir__conf.htmlstructrte__fib6__conf.htmlstructrte__fib__conf.htmlstructrte__flow__action.htmlstructrte__flow__action__count.htmlstructrte__flow__action__jump.htmlstructrte__flow__action__mark.htmlstructrte__flow__action__meter.htmlstructrte__flow__action__nvgre__encap.htmlstructrte__flow__action__of__pop__mpls.htmlstructrte__flow__action__of__push__mpls.htmlstructrte__flow__action__of__push__vlan.htmlstructrte__flow__action__of__set__mpls__ttl.htmlstructrte__flow__action__of__set__nw__ttl.htmlstructrte__flow__action__of__set__vlan__pcp.htmlstructrte__flow__action__of__set__vlan__vid.htmlstructrte__flow__action__phy__port.htmlstructrte__flow__action__port__id.htmlstructrte__flow__action__queue.htmlstructrte__flow__action__raw__decap.htmlstructrte__flow__action__raw__encap.htmlstructrte__flow__action__rss.htmlstructrte__flow__action__security.htmlstructrte__flow__action__set__ipv4.htmlstructrte__flow__action__set__ipv6.htmlstructrte__flow__action__set__mac.htmlstructrte__flow__action__set__meta.htmlstructrte__flow__action__set__tag.htmlstructrte__flow__action__set__tp.htmlstructrte__flow__action__set__ttl.htmlstructrte__flow__action__vf.htmlstructrte__flow__action__vxlan__encap.htmlstructrte__flow__attr.htmlstructrte__flow__classifier__params.htmlstructrte__flow__classify__ipv4__5tuple.htmlstructrte__flow__classify__stats.htmlstructrte__flow__classify__table__params.htmlstructrte__flow__conv__rule.htmlstructrte__flow__desc.htmlstructrte__flow__error.htmlstructrte__flow__expand__node.htmlstructrte__flow__expand__rss.htmlstructrte__flow__item.htmlstructrte__flow__item__ah.htmlstructrte__flow__item__any.htmlstructrte__flow__item__arp__eth__ipv4.htmlstructrte__flow__item__e__tag.htmlstructrte__flow__item__esp.htmlstructrte__flow__item__eth.htmlstructrte__flow__item__fuzzy.htmlstructrte__flow__item__geneve.htmlstructrte__flow__item__gre.htmlstructrte__flow__item__gtp.htmlstructrte__flow__item__gtp__psc.htmlstructrte__flow__item__higig2__hdr.htmlstructrte__flow__item__icmp.htmlstructrte__flow__item__icmp6.htmlstructrte__flow__item__icmp6__nd__na.htmlstructrte__flow__item__icmp6__nd__ns.htmlstructrte__flow__item__icmp6__nd__opt.htmlstructrte__flow__item__icmp6__nd__opt__sla__eth.htmlstructrte__flow__item__icmp6__nd__opt__tla__eth.htmlstructrte__flow__item__igmp.htmlstructrte__flow__item__ipv4.htmlstructrte__flow__item__ipv6.htmlstructrte__flow__item__ipv6__ext.htmlstructrte__flow__item__mark.htmlstructrte__flow__item__meta.htmlstructrte__flow__item__mpls.htmlstructrte__flow__item__nsh.htmlstructrte__flow__item__nvgre.htmlstructrte__flow__item__phy__port.htmlstructrte__flow__item__port__id.htmlstructrte__flow__item__pppoe.htmlstructrte__flow__item__pppoe__proto__id.htmlstructrte__flow__item__raw.htmlstructrte__flow__item__sctp.htmlstructrte__flow__item__tag.htmlstructrte__flow__item__tcp.htmlstructrte__flow__item__udp.htmlstructrte__flow__item__vf.htmlstructrte__flow__item__vlan.htmlstructrte__flow__item__vxlan.htmlstructrte__flow__item__vxlan__gpe.htmlstructrte__flow__ops.htmlstructrte__flow__query__count.htmlstructrte__gre__hdr.htmlstructrte__gro__param.htmlstructrte__gso__ctx.htmlstructrte__gtp__hdr.htmlstructrte__hash.htmlstructrte__hash__bucket.htmlstructrte__hash__parameters.htmlstructrte__higig2__frc.htmlstructrte__higig2__hdr.htmlstructrte__higig2__ppt__type0.htmlstructrte__higig2__ppt__type1.htmlstructrte__icmp__hdr.htmlstructrte__intr__conf.htmlstructrte__intr__handle.htmlstructrte__ip__frag__death__row.htmlstructrte__ip__frag__tbl.htmlstructrte__ipsec__group.htmlstructrte__ipsec__sa__pkt__func.htmlstructrte__ipsec__sa__prm.htmlstructrte__ipsec__sad__conf.htmlstructrte__ipsec__session.htmlstructrte__ipv4__hdr.htmlstructrte__ipv4__tuple.htmlstructrte__ipv6__hdr.htmlstructrte__ipv6__tuple.htmlstructrte__kni__conf.htmlstructrte__kni__ops.htmlstructrte__kvargs.htmlstructrte__kvargs__pair.htmlstructrte__logs.htmlstructrte__lpm6__config.htmlstructrte__lpm__config.htmlstructrte__malloc__socket__stats.htmlstructrte__mbuf.htmlstructrte__mbuf__dynfield.htmlstructrte__mbuf__dynflag.htmlstructrte__mbuf__ext__shared__info.htmlstructrte__mbuf__sched.htmlstructrte__mcslock.htmlstructrte__mem__resource.htmlstructrte__member__parameters.htmlstructrte__mempool.htmlstructrte__mempool__cache.htmlstructrte__mempool__info.htmlstructrte__mempool__memhdr.htmlstructrte__mempool__objhdr.htmlstructrte__mempool__objsz.htmlstructrte__mempool__ops.htmlstructrte__mempool__ops__table.htmlstructrte__memseg__list.htmlstructrte__memzone.htmlstructrte__meter__srtcm__params.htmlstructrte__meter__trtcm.htmlstructrte__meter__trtcm__params.htmlstructrte__meter__trtcm__rfc4115.htmlstructrte__meter__trtcm__rfc4115__params.htmlstructrte__metric__name.htmlstructrte__metric__value.htmlstructrte__mpls__hdr.htmlstructrte__mtr__capabilities.htmlstructrte__mtr__error.htmlstructrte__mtr__meter__profile.htmlstructrte__mtr__params.htmlstructrte__mtr__stats.htmlstructrte__net__hdr__lens.htmlstructrte__option.htmlstructrte__param__log2__range.htmlstructrte__pci__addr.htmlstructrte__pci__id.htmlstructrte__pipeline__params.htmlstructrte__pipeline__port__in__params.htmlstructrte__pipeline__port__in__stats.htmlstructrte__pipeline__port__out__params.htmlstructrte__pipeline__port__out__stats.htmlstructrte__pipeline__table__entry.htmlstructrte__pipeline__table__params.htmlstructrte__pipeline__table__stats.htmlstructrte__pktmbuf__pool__private.htmlstructrte__pmd__i40e__ddp__device__id.htmlstructrte__pmd__i40e__ddp__version.htmlstructrte__pmd__i40e__mb__event__param.htmlstructrte__pmd__i40e__pkt__template__action.htmlstructrte__pmd__i40e__pkt__template__conf.htmlstructrte__pmd__i40e__pkt__template__input.htmlstructrte__pmd__i40e__profile__info.htmlstructrte__pmd__i40e__profile__list.htmlstructrte__pmd__i40e__proto__info.htmlstructrte__pmd__i40e__ptype__info.htmlstructrte__pmd__i40e__queue__region__conf.htmlstructrte__pmd__ixgbe__mb__event__param.htmlstructrte__port__ethdev__reader__params.htmlstructrte__port__ethdev__writer__nodrop__params.htmlstructrte__port__ethdev__writer__params.htmlstructrte__port__eventdev__reader__params.htmlstructrte__port__eventdev__writer__nodrop__params.htmlstructrte__port__eventdev__writer__params.htmlstructrte__port__fd__reader__params.htmlstructrte__port__fd__writer__nodrop__params.htmlstructrte__port__fd__writer__params.htmlstructrte__port__in__action__fltr__config.htmlstructrte__port__in__action__fltr__params.htmlstructrte__port__in__action__lb__config.htmlstructrte__port__in__action__lb__params.htmlstructrte__port__in__ops.htmlstructrte__port__in__stats.htmlstructrte__port__kni__reader__params.htmlstructrte__port__kni__writer__nodrop__params.htmlstructrte__port__kni__writer__params.htmlstructrte__port__out__ops.htmlstructrte__port__out__stats.htmlstructrte__port__ring__reader__frag__params.htmlstructrte__port__ring__reader__params.htmlstructrte__port__ring__writer__nodrop__params.htmlstructrte__port__ring__writer__params.htmlstructrte__port__ring__writer__ras__params.htmlstructrte__port__sched__reader__params.htmlstructrte__port__sched__writer__params.htmlstructrte__port__sink__params.htmlstructrte__port__source__params.htmlstructrte__port__sym__crypto__reader__params.htmlstructrte__port__sym__crypto__writer__nodrop__params.htmlstructrte__port__sym__crypto__writer__params.htmlstructrte__power__core__capabilities.htmlstructrte__qdma__attr.htmlstructrte__qdma__config.htmlstructrte__qdma__job.htmlstructrte__qdma__vq__stats.htmlstructrte__rawdev__ops.htmlstructrte__rawdev__xstats__name.htmlstructrte__red.htmlstructrte__red__config.htmlstructrte__red__params.htmlstructrte__rib6__conf.htmlstructrte__rib__conf.htmlstructrte__ring.htmlstructrte__rwlock__t.htmlstructrte__sched__port__params.htmlstructrte__sched__queue__stats.htmlstructrte__sched__subport__stats.htmlstructrte__sctp__hdr.htmlstructrte__security__capability.htmlstructrte__security__capability__idx.htmlstructrte__security__ctx.htmlstructrte__security__ipsec__sa__options.htmlstructrte__security__ipsec__tunnel__param.htmlstructrte__security__ipsec__xform.htmlstructrte__security__macsec__xform.htmlstructrte__security__ops.htmlstructrte__security__pdcp__xform.htmlstructrte__security__session__conf.htmlstructrte__service__spec.htmlstructrte__spinlock__recursive__t.htmlstructrte__spinlock__t.htmlstructrte__table__acl__params.htmlstructrte__table__acl__rule__add__params.htmlstructrte__table__acl__rule__delete__params.htmlstructrte__table__action__common__config.htmlstructrte__table__action__decap__params.htmlstructrte__table__action__dscp__table.htmlstructrte__table__action__dscp__table__entry.htmlstructrte__table__action__encap__config.htmlstructrte__table__action__encap__ether__params.htmlstructrte__table__action__encap__mpls__params.htmlstructrte__table__action__encap__params.htmlstructrte__table__action__encap__pppoe__params.htmlstructrte__table__action__encap__qinq__params.htmlstructrte__table__action__encap__vlan__params.htmlstructrte__table__action__encap__vxlan__params.htmlstructrte__table__action__ether__hdr.htmlstructrte__table__action__fwd__params.htmlstructrte__table__action__ipv4__header.htmlstructrte__table__action__ipv6__header.htmlstructrte__table__action__lb__config.htmlstructrte__table__action__lb__params.htmlstructrte__table__action__meter__profile.htmlstructrte__table__action__mpls__hdr.htmlstructrte__table__action__mtr__config.htmlstructrte__table__action__mtr__counters.htmlstructrte__table__action__mtr__counters__tc.htmlstructrte__table__action__mtr__params.htmlstructrte__table__action__mtr__tc__params.htmlstructrte__table__action__nat__config.htmlstructrte__table__action__nat__params.htmlstructrte__table__action__pppoe__hdr.htmlstructrte__table__action__stats__config.htmlstructrte__table__action__stats__counters.htmlstructrte__table__action__stats__params.htmlstructrte__table__action__sym__crypto__config.htmlstructrte__table__action__sym__crypto__params.htmlstructrte__table__action__tag__params.htmlstructrte__table__action__time__params.htmlstructrte__table__action__tm__config.htmlstructrte__table__action__tm__params.htmlstructrte__table__action__ttl__config.htmlstructrte__table__action__ttl__counters.htmlstructrte__table__action__ttl__params.htmlstructrte__table__action__udp__header.htmlstructrte__table__action__vlan__hdr.htmlstructrte__table__action__vlo.htmlstructrte__table__action__vxlan__hdr.htmlstructrte__table__array__key.htmlstructrte__table__array__params.htmlstructrte__table__encap__ether__qinq__pppoe.htmlstructrte__table__hash__cuckoo__params.htmlstructrte__table__hash__params.htmlstructrte__table__lpm__ipv6__key.htmlstructrte__table__lpm__ipv6__params.htmlstructrte__table__lpm__key.htmlstructrte__table__lpm__params.htmlstructrte__table__ops.htmlstructrte__table__stats.htmlstructrte__tailq__entry.htmlstructrte__tailq__head.htmlstructrte__tcp__hdr.htmlstructrte__timecounter.htmlstructrte__timer.htmlstructrte__tm__capabilities.htmlstructrte__tm__error.htmlstructrte__tm__level__capabilities.htmlstructrte__tm__node__capabilities.htmlstructrte__tm__node__params.htmlstructrte__tm__node__stats.htmlstructrte__tm__red__params.htmlstructrte__tm__shaper__params.htmlstructrte__tm__token__bucket.htmlstructrte__tm__wred__params.htmlstructrte__udp__hdr.htmlstructrte__vdev__driver.htmlstructrte__vdpa__dev__addr.htmlstructrte__vdpa__dev__ops.htmlstructrte__vdpa__device.htmlstructrte__vhost__mem__region.htmlstructrte__vhost__memory.htmlstructrte__vhost__user__extern__ops.htmlstructrte__vlan__filter__conf.htmlstructrte__vlan__hdr.htmlstructrte__vxlan__gpe__hdr.htmlstructrte__vxlan__hdr.htmlstructslow__protocol.htmlstructslow__protocol__frame.htmlstructsoftnic__cryptodev__params.htmlstructsoftnic__link__params.htmlstructsoftnic__mempool__params.htmlstructsoftnic__mtr__meter__profile.htmlstructsoftnic__port__in__action__profile__params.htmlstructsoftnic__swq__params.htmlstructsoftnic__table__action__profile__params.htmlstructsoftnic__tap.htmlstructsoftnic__thread.htmlstructvhost__device__ops.htmlsync_off.pngsync_on.pngtab_a.pngtab_b.pngtab_h.pngtab_s.pngtabs.cssunionrte__eth__fdir__flow.htmlunionrte__event__crypto__metadata.htmlunionrte__fbk__hash__entry.htmlunionrte__net__ice__proto__xtr__metadata.htmlunionrte__ticketlock__t.htmlunionrte__timer__status.htmlexamples.dox/usr/share/doc/packages//usr/share/doc/packages/dpdk-thunderx-doc//usr/share/doc/packages/dpdk//usr/share/doc/packages/dpdk/api//usr/share/doc/packages/dpdk/api/search/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:Maintenance:32559/SUSE_SLE-15-SP5_Update/5c0acb8765cdc1d9db6501b898d8df93-dpdk.SUSE_SLE-15-SP5_Update:thunderxdrpmxz5aarch64-suse-linux          directoryASCII textHTML document, ASCII text, with very long linesPNG image data, 8 x 30, 8-bit/color RGBA, non-interlacedPNG image data, 7 x 8, 8-bit/color RGBA, non-interlacedPNG image data, 9 x 9, 8-bit/color RGBA, non-interlacedHTML document, ASCII textPNG image data, 24 x 22, 8-bit/color RGBA, non-interlacedPNG image data, 104 x 31, 8-bit/color RGBA, non-interlacedUTF-8 Unicode text, with very long linesPNG image data, 1 x 56, 8-bit/color RGB, non-interlacedPNG image data, 1 x 6, 8-bit/color RGBA, non-interlacedPNG image data, 1 x 12, 8-bit/color RGB, non-interlacedHTML document, UTF-8 Unicode text, with very long linesASCII text, with very long linesPNG image data, 11 x 11, 8-bit/color RGBA, non-interlacedPNG image data, 20 x 19, 8-bit/color RGBA, non-interlacedPNG image data, 2 x 19, 8-bit/color RGB, non-interlacedPNG image data, 18 x 19, 8-bit/color RGBA, non-interlacedPNG image data, 6 x 1024, 8-bit/color RGB, non-interlacedHTML document, UTF-8 Unicode textPNG image data, 24 x 24, 8-bit/color RGBA, non-interlacedPNG image data, 1 x 36, 8-bit/color RGB, non-interlacedASCII text, with very long lines, with no line terminatorsutf-8395327c77b15d4074c2d56e4731f5dc5280e2bc13697f1af4222d85bcd132cc9?@7zXZ !t/]"k%=,sYepohrl|QsboMo-jGt~3p3|vlJnC<^Z SkPh qzB$xȺz\, I4 4uN h@Si1΍̸jDh=qȂWངw={t(Cn x)T}wd6Zs2p8v lT[MyٌuYܝW+bIN% >r㟡áu4cW1ULCS;y FaؘJQHpOPCXmxQ;ǥ1da۹P+௺ nxa7-u*1_uYo=C8 麯 Yz$2{F]ƃ,w2_ O5?CnlLkqISnONկn7{wz%b3H JKyJXNmcPƵq.Sok BkCiYkD ڧC.{M6+FF_%SN)21Xq]I/,]+:49#)so5h+;U/O@KȉѺ2:薈 x] ls_)$=, 7{CgebC]LEWk& ٨l.Bh9S-dIO_+ζ#W0?R]ZU8Kُj=%\#h"ײJ鴒99қ J'f:K<";#rxmG+-X#Y~MѵKYztlj%$7^Eg3![tFڦl!z r`i!G^3EK  `?ci)J rE̚9]a-gC&y FV}8(kyLQO~$ R5&XD Ul$$C71F9ٳ059M|ӽ $MO@9/aYϩ}%/M%y&i-7v>rz@6[t&ͽJx6kPeK=!̒cg_1sE\#Shx7_mځEᶌEH4e#4U%=|*t0GHK`M>QeV$R4*ޅkߑs# $ ҫv`%ȕ".qZ9 bCָ~[H,#S6J`-lP<- z* 9^J\:4\?!Ki] y`?_`[|huHhuO(gwfteN 9VZts@S Kdf gP!]f3{ixd̛ԋВ-=Uea?#;eƤ)MjVK0D4A~ s@ *^3_QeHݍS>{ڲ!Cso{)G$vOY`:2+jK^JALt,`@uǞnJ6lٟJmKrǜȳ|^3`njK.&,S`ͬ<)0Xx$005neXdK&HG%z!iq:21>G_DQ+vH?)9]T Gi` wstmgc1 yUjO%E%;e{ 4|37z9_] Ci}36P3n0i9"f}<1w󀱿*56\5[`:@l^ q]i#j\`w{w$`3̠柷=]F)kI1QMdA]*#^ 7 I$a|bc/mai1bYTũѪ:>KCؔDeֶ Oul2Ҟ6.Q}^DGl N5e!y5[9#Cȸ1o?GgPӤi2\NBjm]rW"ג=ԒžV;puPM`Ũ= B왚O5HL*ŏMD\^~E_e[f.݇USOunO \1A;*F  g$B W6BqJ8hF=5 P!C SRx2ܔ=Lu@x_ tqCe|r3|Ն-ӂSͨO̳~;n4v𷜨i`W'9+"gsF<_33,z`x3e^O9{}}4Z Q5LɌ ï *Al-!+ZO03JN\m)#R5H1삢XH: n.L'T\v22Cj掔AÃHعztPر?O tӰйaO? ghG@ĝ@%Tp"DoK/}{tpBc>^d4#iK YѸ#6PlC>nĢ߸wk621b+;˭9ޡ?z/zDByk;Ql!흮 R)2"dy}6y]["ɏg{1 SOW8r"޵xw~l.w,b͔ *$v9JE`Vv9:7@y"Cq5Z{xe$&9Z ĮvQQsMbW w6oWyv?k 4F_K6$p:RX<"ba*:s}<#~P[uM$%e-#xUkF_!Pey$J:*Ľ!mwns4U1N_@,GgQvԚH Q6WFBӊM@2\&Q\g`38ʭ&o͚G\jݻeX2YI^&re@glɅG穭|툖2mZ5Ft)D m.BfXX8L,_x a&uWܞg<$uH|Fxȹz. Cm6NHI:~N:݊S'^>̌$ _Ioy$X#5:1,k.]E4dOfz$IC㥚 `V!`,&5{QqG".̙GVaM= 5M:L0 Z1y"\=ӳrq=Hg,uh1bVOt")"*P'u.v$tD}/9 ;'Zsk(dt~T:l<} )-7)b=4hT9L)M5n-=Y˜=>Ue|()hd(54ht/͡e[:6 1xtS q }XF2M@b/1fZDQ- 7CW0)Lhk\ѷ1?P["dӖ-hEL,)z)~'&3qk KU9+/Ժ"԰7W%'uh!I_ @+hisgKIfdmX+P8H+ٖ֟&d57w NZϛm*aI܋M-> `f}WA!1M/a{00Ȏ`a.ב=rf3(~&J-FIc*t^!gtf)"^DԳmIpER4,㏑NdX?J|TwE 8`2|)2N,Z#,/lߺ>.# Ig9?38G^iEA6ԠxK(&A8Ot94bn@I=n #Gл_Eէ2*(mi !VnقMF5'ȏtLS?Y`6b Aqs۟61ۊZUC [+N߫|XqeJFd;vqv⽮q~,Gh]@zPj LNJ @ aDTO %c&BE?ЛC;E.9 $!:7,nگ 1,cP`'Sb8j-+Pw z"^S |`q;5{6$WS2ό-1|5!&LT634M1w' TqfE@)D,k;I^^:.~~ZP86J92xoy`R!bq$yeRExk}$@s&H5\nd2e=2E.,H!Gh8,a6TlHW3hEyKc ɫ >vYU&8 f*#5^dMkCc*Z<4-tetdg<ϷؕU|ɂupƅ{c5w BIΈ%qurU/ɐ|#x ߞ6Q8))(ཡ ccۂz+PIUO|ZDj.j7:?נO{mM1/oRlzL"t0aCg81Wx@a'5fX]WJ(+#4+r%Lٝ?k4\(!{ISAQxC j.QJ wH=q-.< Pu,.f=?`zqEmq6㲭a:#iPb NeZj;w_ώR:K_ETQ%*$/]b3`: vU'wab 'Ӟɀah}Helࡰ6) dLv),iVIC4$f#vᾡ؆WQv(OwHrt%B&ܐ[ |O Vk%^5p#zm[XjRQx;08M" M%=A|W'A8Z ۾3veLD)+~Y8!PNgL+l}>\$ytҕ^!}8y.X:FQ`|Uh:/.ݰ;1{"uh(0MqmJo[[е"2 &4EtU7qStL)Iׄze{͛jOLs~=t3n:E9HR#V+6! @e)#O7BsDO—l%ߛI؂u$ |h}E؊d$8+jIX88SDЮzT_̹( o#]=RqCB bd@ o|- \$|!Os.noWrAXP2 CNTjvPWp3I7A*ƙm@^ jV ^cF|]fՆg:[X1p%YW$ i{g<ѩnl̿4>zNⳔ;(M(ڗ6"JY]cf_>9&:[ݰ3)~ YP[v>KWQl)u'2&x%Pawt`^ߚs't? ZT8i5G(h"S{ݬF`>:CW{J:S½Z!%{誷Vg JsU$= n!s`g!v˜ֆ5>c&Q.xb`C@l|ft3(}wq!nDeR,z^ _6-!Jãi!wWyDQZP#k 6lK2q&,c;n1ddb*=j&Fe)0Cٸ[{h+0[NY"AJz=Y hM='1ݟږv^{Muo_іM1vz S\P'q79ڠ |9 cQvp43F6@rXQtYT(NLn.+ P T6~!y1$h,PE\HplZ#ax9c#YOSDnnӱ% A8P3=#s+s}vCsq.=>k|d=ԠífXXՅ])[˭`ZWc.x=~ro,@V2d6LFtGڗlna[SIfsf6/z% ?s$_? /L=_oa+3qvNDpYof&҈2%;ɅMlT%QJ/%J# [Ï>qWueFLPk?*I J(Ղ0U+O=KOټ0zEAKM|:}sⴸ3k4gYr`]=s𨪞*a?X647+/ D#?i”r_ԊoP=+tM)C\yv_Tpz6a^,|M a ŊIpI m#zK;F3dNӛlkaJ|V$^SJ4j'H7v2LFTtgᆉiW1V%?SuAK{ăoܬ (4D6 FqZM/C+Rh(xZҽ՗ [Q A Y8٠4o W.jxȐTTa{]f#>p'mPjDa.C.AA.IAf;fqSgB 9pEr7tۭP9dStQW̬(A.=k!k #,,R􊼈$Kw:u~ ZRV+O%)IFn)C[cO ބ1 JlQhz1O3PЋ6Լa:YiN ,MyQM<8nsOwʮK=3<NV\|" $d:\zO$¨ >Ř&VO d_~l{c'ziPH*Paм/F' 4d6?5w 'rN. 4Q<'٬ۋY!4Iv{K0"oRjXQ҅v(|8>Q}eus)s8-i`Ax%J ]N˾<OӐBߤw%JǟEc>$Km7{OTj>8"nvb l ~>\fi)K3垱iZ줎oEz;vByO گVUJ(85tE1m90o%n,).N6.?PPRe〨=힧c&9M-?ijGZ&(v0YCZR9f+m=q;%'Jr=* Xcb$[t'S$̐7 &%"!F>ghu+]L7M#͐OkV={l=OQ2D&eAԃKbfƩQjf)zj?VRg DQNam.+wf9WA-AE#ԢOnw1 -VikZ )OZ8J{'":y[(߫ߍ_ԭ s{v\yndU7,b$gF}GFʤ/)IDv}ËG9T?ܦSVRE\*Q@- LO eV!Epܚ ؋1 K|鉱N"BXs/k󕉗Z|k*Pr,Wn^?]̗)7'yQ&J=55ZP_Oϯ JŌ4) EIOgxn? ~L3:(bZhpNRPo go eG3TKdXpշw=#N,}⇾ Zb`'ݎFq*<1G"ZwVkJ˭S]\JqtXJVN`)pr'Rlh@wً]ŏBlF;cYW!ȂzlE>n) Ae4Z1߄K!Q3Fħ0f.G<}lf8)j+6EergPEPJvʨ֘띖Kk1=:E%Li&׾TMn[SQ8p\?Q]F'^hl+׶3=<@$oPe@h Q(,ѽjw =vE(k_#tQthysts'y!Uic467},$jz2 i'?V;dfNJJ d[(Ӧƿ)s2OuZ>xyf+IlbפAcGf#kwulhͰ dĭ2)1ݐrz iR\m';9$< {TP`=[l0bThv$Uc G`% 43($6`Ȝk9oS\Ȝ ے&2uD9hM]4bGf'A._9Yk !p]ʰŴhI>I gEY̚Jp5IcpM$K{{7Fo4'b&7:QdOы_mOohLYi d.5^\]+>(.>W8 bW,߷ VG+85 Fy[捍d  ->eO5oF'Y #S#0[1Qۓu=$:߉Z $]RMfwiɂ_[ǒ~CclxvBkA~9p#|e]>tHLɔsڞ:eT{ OV)ў8߀oj]0#άQD0 ("<<{:8={X^#iuw C-QZeKY%,9XvMA\OZM7 u#AgzZnwQS`}<44VA6_I0'##jCbvSέ_~Csfs)ʪ>C I@t軹ľP3Rb TM%PeʩorkԂ| 8A2#4WU~2qR)_v,%eJSήVLRi=ؠfRN0Cۗ(8,I_F~ү D U>$ CӪ&]C4FGxy,<乫pc?W)\6G@|ʥa+!4P]~AkvTu#؈U/}a =*`\G̲"X9aȎ|d9ˇC|KAkP+%%cC+*bԵ]%cKԭ.!9k4^wMK-s%~dzp*hK̼wdCP\~2eN0nC]z|\hDs> N"5`럼P"ϱ(c r`Ι]&.ΨJ[G/9m1%ܠAۯ!V8j(~{^6==8:/w|ok'V~6lC#OrٲG)yP0o1GPA%R-$dYf&Q,ZClȲTo@¯* ⒳dz!kh4]eZ'Y!Zs>]Oy n~fG}.@w@Pf!4U&甎o:Jߋ"<ћb&~"]"7~r41H߰o7CPLà;{C%A=a&nu %l >Ya@p cU-8y%p ʦ`ٴ0VA6^Bv'~)@+aUY0׃x.5JSH('ǰ6&$6- P*L2,M(!B+֗Rm^_._6to ң{Pᯮ-,;WW~} 6ਲS0@E3-}^ rʏW'6U_ IqIxװ0b' v$l೛Og;ECq ({; GXSrxR}q !h}?7rɒ~\NK`mVgZ[R;׭ڹW,/a N /ݟJ V24@8b7W-l?ΤLf7XkPAiB "6ME7:e' *3!M _97r!"*fLn~BzuUN>>O_qC+F_ٴ`s߲;v Fej+nlc]kNӟyLji n4WoU<#!VT4䒍ʬQK1Hh=a} ,KQ wP;Vt, W~|"-aib`I(/d[7⍎ZVɎN:~h]1= 1[LF¾8 6Mtb UT) 8ϘsOv8{H%|%PY ܢ-έ3E?Be hoe6 `$;@;q ;3|}`}JcZ5Y ڹɢ}YOI=I3h\.sH'3LWiOY!_OзxdaVW]Ƥ_ 'KCHqnNiEةxj;7γ䙰z( ֭Sto B1 ~aV$sl}4w /b6JyE@ d2gzUuʏ~6R|fj$"y箩uWBG y$ \41 tx9tZ>Ԥ_${,bѕ9K#mNE:Bw,^dɉyh%9u0T׳6A=g?!-cAmqMWXϻ^ز"EYǰVh9pl!+q9tlp7ǯƶa `9q@oQӓ ElAJ"ԇk_ py6c|.nabTkc*r;]Q) Dw)ݩzd1Hvow?bľbIl/4{'AX}\V؃Z(*D\# Rql[۴sUއY(bO{낯~2%C@!~n8SayȺ1Е)6(л;%, Xɶ׉W-c 8d3Br,z?Ƞ f Sj2 oiRUZ!R.yg0[!>oӁ2vkx+i^!f%|FCSۻHn;W[]H|\"Н#pD?.cX4rE:9X `u}K"!E#trl[d$w8S3NA1GaWP<'%)f1P\jNc &@j۳V, :ZSbJSj؁|< ;`h(g{zqprgJHѪL\vqY,bui%d; ys˜WS>}a1_ox5.7LͅNˏSkt? 33Y'9 ܅W)ةb{4G,~wXþ`i3Sͺ E[˿( yrYj휿io#-@LW@V r-KC^ȵajhkqeo0] ߪ[hq}ԡ* q0Z!h9w^ԉAJ48&CԣőJ>J 剟 zJ7P)q2% Gsm.D?RJ|R)"?QVǩ-=nrKw(ʌT3;1AO-y37ckr%Lums;%YsQH*tE/|[Loػc9UoizX>k@Wr[dŽ|ʒa , 2NgVO(;5%s;(b]L]zYs;%J,))8ߠ82 dtc74UvW_6D!tP$ΰ=}{^$֝iRO7, k@9*i8ئ:0;(^M7m.6\)͔pYژ}ҒJ6M=ɥ_M .'lTd4f[A^o(hjbK_Ė~Ǽ9]qI =ۉo(`RaރO)IP_k0- kڗK4Ǎ'oU)B~>^oV)Kw# _fHW)RL4N (# g&RL%ğKju"3-}m7Ła @rǴ9rQ}H=XUsΎwfեu/QyF@JLn&΀t¼qX5񹖪W5p͓ӴO*;ޙ|佢_bK;4| s9[)$ YoA sF@|u[r+;>eOj#TTp 8&LΦ_w0L[F3ho}K=m4ښd=mw8O1^ru_ jc$+ӂé(!}zG1hչ mYq;y<$qU?Am]K7$ȱFz&h|f TˮsE7^Pf]*L!OꄷG]|,aja?n-Okd}1̱k9#:I߮yNBm*VG9&tsF [Ojj>ksW’ (Ҩ&T8#讣0,8җ5Hɏ!бq֌7ȧ/npu'R`J>S%J)#CF~00N n a#S/hwiש1NWj,nSJpix`[3ԳbѪhm6Ճ˧c`Qp]"t( |n\q%Pj&c7P(fjUإ>oV\}sioMjsJ8ޮ;g9rc%KktHs8ֳ:Z5:|͇Yt_ܙnCJ$ذ[xtJ@Wk]ݣET98r8p!҅U1_g>C-"` H>HUHtnbH l..lp[ ݪh~n;kKuo7\caW0#m!^O CEM} NMk(fW蠃F.l羋13v"w|m3x, [2ԭIJ.6~Hmgާk Gǐ31a u3x#mr"bJ|Էul37t,v$`+jxłBKOenSݯ8YF^\Fxȧ`F]͚>bzU@N*uݳV}Kײ_X$}_{QSMa@4/ rtL 2L_n§o;sYsXk dTʏN=Ȓ/d3d> oBxWβֽW=ٳX&.%'N1~1s&ÆW^xFbRxher'N6n>pGj׻g;{bw$IXa)49.E/T`zh+gA.>JRL ʢ/n,\#Sp^ҡmMv}Gi_T'$aJ}sYd!B0tŐK:猯Y*`U 9,bgHNsLX#X&KQ &Cz9.g,!kBgzu۩ ſ^mЦ'=LR8bzyvW3nMݰ˹ aS)W!ުu$ۼ:4 @o`EYpwZUԾeE`[hu*Qk>LtM(M}r?D [HBTbJFP7/p%2%p`*wd0|me,H?*ijZݡzD#DO Ht7'G(C@pҿ\yH>[_TB`Jbђ>I'mOĿ{|`«C:H`I g@GjZDil[j'.D1kMJ6 W2ao#G8P㡃gcX$ C8[|"7~z~n{S ѮEO$42[ K9ą5=@ :op\$'B7~箧yԏ\[C[':^%3yǬL$P7fҵŁW+U=gcH( =fpLmf(b ߼ Hh-_x Ϟ/e^zr{D!&Zqtv NVXM(/*tSq y1.m|3s-ԒV GhC֣@hcW*Jag,E̻t{STYE.xIԗU'&ihKR=0\IZ*.zI@LmYH!-:](ͻSgW}gUܖ֣cҒ6ѵ3v&'8V7 `Zzҏǰ1$VƐ7k҇oxoi=_0[7c87Wn 1SOi=& ƒ;Q_ 7[lM?<j lP.: B=Vg)ύz24esM,YC*;< >@96yrX|.] yH1ߠ3V˽K2GQws(+^2g~6ҙmlh-ld3Bӝv/Hu0v)9=Q /=X]&;s tkgPhPZL+݄U[|d+$; ҌJH_i@Ps3TFBJ΀n],(2,P3?r=vhT}'?Yz OИ詝G1S4*l_[5UzNZnGM 2#'; .ω a1&{ht4ui'-g=FH\ U֩(䘾ukf\YVN BUZ >@d|>WjR \0>(V'i~&C[ibcGZ%R+HТa]! [S+f u+HcTx#TU'<윣Pxv'YCk$?E %JJQAZhk迌@Ө+P^+퀵g-?ޟ'"NuUogt|Qegj{`kA:)_^}vy.>358=w0_#H50soH`M偯v6K3eAЛF0DIہN򅲙RH|.E 3g[cqT|!>Xz'r1 :0?ڤK竢IOv$fxb]>UJ:cENk d rCFsaOmj=UOŝI9nIN)Nm[[ ]rW 2oQHA֍U8-SI|c{1;8򴂪N D6058ܸnrᩈDl>ւ lH- \(Ttb)G*4[UjH*-g~՛;ϽVR<~х $d,34t<J_^P?^$Ro;B_{♻20C/1nC]/Q;8L.A"Ryˮ|%h9spI>y' S&̪볽1Da>b#[H/lLTߴ)Jօt#g/е 7a7CX$sX\/mWĵX,RRטQx9Di(JaTLޱJKl*&lŷ] R;TP'/P%-Z W`>M}uly3*fէ= tZ7sI[1Hyq:1H.1kwVO(篶Ҡ ̕%)z1Ɲ9Hi: e.)J )a譶!BFV4? ;A\=|\wgE AH̆Pumo 2{W3ئi@N_:AomI{𻗪A\7l; 3o!0ϭ?oYeK+GS*;e,zԞV 4QcQ 0ga-|#1S9@=ܐL4 qy1eym!t!M0 ['3~38s`Yt񚅍(UG>Ej_m]Ӽm߸N@ N3d6Iڬw^-*Cx? 4@L+Un?=l|5ICP).'/jȰᖠ?X{Y4umgٞ%;- M5йRkxބ!8wV:j1]z"jx<%oSLGcI vd/p6;(c#Y Hm hGn8Y60`ZK*#c! *b$uz\2Km 6m*Cf"EGxg!~^e6+ p("T' ȌYok-+/[^ǝ< Yk>wj⚥i*(f(9DK}A'97`plBXM)>"Un3SuPc=",)=}L9,[6js ̺$Ƭ]ɓ\*͈oLh0~fd~\Y0M'H,?5WL1 ͅ Q ln^(|i'i⃥ 1E^R"b$`юI |ȕn<,%s97ЇQl_f6\ktХ_Ò#*\ˮECYB=\Eܱϯ|$ %b[1 >acTbB:<=5ׄt &H@`rNCYrK./`_fۏ+.Z\w6hr֯C b5zqy}"N:r0 1AZC624#r'SZ<=$&g)R CfiXRP6B_^zIziܫFЄU4\ z|,ƽ\S%) 5_GFb4$]6I9ap7޼i#gOլo| )C{h>_Dҏ"Y堎X78WG4 >Aa.2vy%PjʿT dHR.,:3?CC~~}< [|~%z/ZS6P;is-z46d2tpҸb<ډӠ oXRqݓ\Gۏ{NJG?C8FY)Rw/Sڨv1J0znJQN kݞ)x( g_m(u)͂8:u.88E0p* 5/6%?C[Vn\6w}ls1Bm.3 RĪ/2k1JO]йr 苮27oP\ϣۚAz)'9-A:SNuI Yj>؍X"$9͛}>BʞmI>!isk ra=:|B5j`~55eZR,Z̲jjgbXrtaǩ +ґ]t" Oq4cj`|, .柠-3-` )9CZ$e}0wOcrq&7 'b1y蜭dRJd7O,da^#Ϸ^˔nSw1?|=^/epU9aӞӁ㔒]޶K8:TM7 (3&9}Ax̖JU]V:т+ClZ.K}7j]P!J&@ficj:u&D2][?XMq|: 3'g]j]NOǮbTUL`Gn@ iC@LMHGAN2b%lש["S4)%W[J0]%ݟ eRhvh"ŹC1)c>A,[cSE4?Ph;婎0BbϬlYw65P2ek8; f4HejT$ɵe(ːcGLW~obۢa,mRJ"GJ"ص:uJ#U=Drf)y5tVb *4r/ju,Jzqyn>Idd*Due4$E?Io;C1t:㏗X:5ثQk9lifN jaR!.?kg.W] :yϱ |gzWWa1t+<4]lV@9"j?UG&Cw2^$8XY|.g-+ۃUj%隭xi69Iȇ7HMXpy_(yM%I1XSQMZ+6*BJփ79c)ZLٟ7yL]pB0mkN; 5${a5hnh9V5˗W L2^ܨ1Ƹ>n`G"d7ᨎʪ*ܝa[uJs6 yS/$ 7z߅3@5[䑗zްNK&H3Uz~ 䪃\7=BB:(N+_IP5{qBm'BЃrǖ|y bp.,sWHٓ?"ek#ATkA-qmrY+qP#띬KO)| LX Zy:<9{.d^zY+Ty|ukktS}&ƞbkX$ _-X"_ݮ\-k[H˪Mk~7@" G /a ="OG<4](ݮs&|?> |JÙ$VJ'gc!Z3`#/q 9ޚ uTk]TyIU|=I[0]$oEKD4ēꀙtͫ]fz uvn+LEhM'اL"t[d\ <&jCK݉Dxډ0I}d[[tl4+"H'?v(ڱ Gs"%.ގ'iAllUeVJ]I a:LĎx̗e#Yi:>ϳI)!6>j8% <@˂GZLЌh,hVŽ89uIv:&{6-X-ξg ??t9#ٳ: b+h_-T4=vCQa:k4Uޟ+|Nς9b6h乩ʕx;ed ~_$n'ܬj(IƘ!--<WMLNG=B$&w<g)^ } 1p{{WBрۛr[m`rB(`dw G+u L b׮:4Zȃ-he<3^{pBHpqԛ8VO.`. gkB1}2  M Ds_ZEVboen(*GC5ٵΦCڧ=if( umx; DQv`C^*N}[j28E$WDNS\cfzQ?>ᔵ 81c)־ļڽW h (䛴IJ$b9I^TXJHp3P>:mu+x@R!- { Rge˞K-q5} y/@fnBc:W( ?mjQ"E0[.#}7QϔliU֌LH [](oc7 /[VV0pB{Na~?,wQ<%XaZ 3tg~Eٽ] ;M\a!+2e-TZ,@-CuW;sk4(>dPzHX`~Gǵù<(14kS?q~3/@C{% g h$jW38\G1l*I"ik" &di *'@!54Ⱥ1w+Um\d(G@` i*r?W3U=Y}\2Ȅ`d<> SA}O6^>8U?12qlv&2⺪Z<TԻ:ܞΗA:A3&}ڃ8wu_PUq\9K?hgi6%`ł\Tgc 9bXs1,mLl\}YgI 9p xq]_0k”lâN:JQu!khMyO 1oFB.jVo xC#> 6*IoSfyiX7+Fn6r (+&XM\`NߒQ#I&f.tѐ5c>F<+,biEWBMT{&[):/Qa+9̖aiC/oj0̂v"1I!ҐzWVwdrDx-I9>)l=1A7i76 b3F AJ7SJq4)(p z )s"!"cH8{2>@#s&-Ov>7‡+2SoZ}=n*&m4)oMzbHBjE%JqJlW^TaPhɜ3@ |7y %lInK0]j3w)!u%+rk.[Kg(fs<{N["MC1Ee!EMObV6 +n1HFhCMc<hZr1m Oǃ¿{7@l=EmGKb6ِEkB|:ˎӫ9=J8ĥtD<y^KC]dXbBJC<;9ހa >-.I]m:_,PC}x; ׮$&Fzk V=i"Uvl!Y|P>jUisX[s6'-=yS,?~FdR"w 9k5!WVu82hn~~,)[>#}KX 0Oa{8G0D? q: KXMտz]IkPOa{Q rr$ܢ]w.^GO WR- {`Hm+i n#0,"s3FX,;t_V'-X (;Bx}ܨ@+R,o~rO/H8 xdue>KwT{ ^\Z?(%C%T*c۽4M/茘=Ir p^RMa)PVm!KF9 qvjN< Hvh]NyeŠh%R- ℽqXbCо!gxmE 48{lscy7nvs}Ř@! iS+=xٚ$" (W,zH%cZ;p6 z=K,XvL,YyU"aʹ@^E5V DvR1Yٚ Q I?J- l֬ʢ\[GHHOX"@huͦ;&Y1-~NO°c%Gw d vѧD֖fJ@gF,frEMSaNjLLIR4N: %uvA2+yc5lxkCĻ \m*Tb KMc`兺sG+.er {:.k %≲RRt`F?SScݘ;mYxJjcsvbE׈<,{8skLUhlP4/vRƔ$Pw(h9ylp>2~):˹if7ƤE\K*hfazzjE /<8q9 [;+{d?Cy1^W" M>}#&9O".F9+;Rt@="`)nvnuW $KGz4%cYWFԆ^RŅv88kKeYm6PPyx˲Mv{byP9tNѽoǨřԳJ9 }x3I v:O+OJʥq7 кYH3wWlޯ% GX̢Ey:+ -MW1, WNܙ9eH`(9WcETpK޶ {"XeEMBrgw)ig' bٕǽ1T? Hd+R3 NBX?l,f'*ף:vvP$)oD 'zGkCw\jfX IGGw'HRaߤ- ض 0WvWD(N"_\\i}ǰbfTRnq$Bjy@Z iTiat"΁7+hWd:rA?WOMKZHak=.ig<"ʭk;~\='I7|zS\ Ba'{b7",KaeЦB4P5"ksLlY|ݴK~xLh:?b _Z'/xtׂS2ywm tݑqq]wDcshU.n0(3pI)=4(Cݟ{ʎLm/؈}O7껍NOyKŸ<0'jmnA+ w #2^F$aisWJj~֗kֆdM-tߓ,Ň#,t§H:i*-j ?Ό|M-.+0;oXfηVDɋ$%=O;T,.L|Cv;]s1Zkm&&X0vFnՎXpH[L>ZuCDUeʙXL?c6!-g$8NfMs~l sl4.Vl̮ԂoD4 IŽPk EJDdVfZ:ȕIW(Q n\7$ɟ/%4n&Iގ(ٓR}^ˢiF2_ Osw8_ܓF˘6u""6VtXֹ38J/nlck'ٶ ɦph=ösLdV,w_N/ Hh`.]DQ|ZJ{Q$a)qodDNsg/d'"sC,(ڿ7m(\K=jr?kq6&fL]o"T$Pq~^{x6:UOeƪ#GG&8 򛆌q;Y BCS̚6ȆO bSx-IW@Y=Uc~ljQtwٜ>B8g{8BƧƒ1CfPp dj{vtjǥBE׊3עDSpIF}MM4N\54>(cJ!KSb)'N k(-U[4hY1'Q'h1_F|I-jlp33nR|%F*%B"@0uðPk-ׇH6v5AAAU0vuˎ>Fz bq}$Q3nO :Rw IHPI,.e1tVT?gEblfϻPs5;k!).qڙu%/IdyhA>VQ&&lKx{? !̖ʞʪ.ԑ_э1v陰= ~iZ KIs?邦a3OlC7Ba]Rû'2O}3u| t` lu@o!a<)CɆѣ)DbSBV_7-w,.^:tPy/]JU8}wdzEETcYLk_^WKL#}:CU{~>u(p"=}}bHq˂昄M^4ج%7Aoi?V sOrWz5:Vg@Mi 0DP{@1*P zh晌4$ꍫOW $J?cU"~?iYd{O K)X6aCtWp;RÉ5I4 >S྇ cpZbKBM{ѝ-Uu4HF+10NXɂ#w-!8rK e[0^OҶV{f ]-}(wr̰jGO7쌴}1;E_T[5vHj^ B0_ϳlʗrYZ(NY^9FmC0d=!/ȉQYUd>"(g7v|ۙhnqqMW& ĕ#MbF:"G1ff?=$uno-xb֘?9$eʼn#JbA gэ{?T[u)H p9okeSiwx4hHǀF$n?ϏMI:M.{rX;U%V,| sEǁ&v!qvld3ޕRwIɥ?UCu@f2ɞ L b Ӝa_qhmY3YrLd:8 8,$$ْ]?<2b>̜,@dԟcvvNvQ|Wy.ԯQDdF -$Nx̕V}ݞ4.M!\ [n)"Loā3XҸw+/jHBoks}$KcD6C9f"~ teGH`\3@y# BU&SR- L){L7+/?kBПhxR k)NX9?*Er :zeW3޴O.Z֖VLbKΘdД Rkգ~(AcV|ZdyZ ^pRhbDLzKPHRuL,amHѥ`頂m,,OlZ!*̴|N ;@sxBKiG,bܒ8:qVHlR[ԯ_G@Q=%2Aag8/o?VEs:t,7̪EANwo-j h)̼qi8b@xj617>Eӳdnn9«n#¬@QDwCrYm's`M:Fk=uW 3iN֖q`oCɚ0`vA`6r~NT+76Gv+7\O 6VRzf`'FVx I: ak)9tx 7܍/u-l[|E+B/i$ Y3'kʪpab>IE5YQ GHM! u <}U~]ê{fe.f͙ܧNqyRHgD-Ư|XwF*e pPY" LuY,w7aI P\Dq0^5nxw[ޞ)B5Arjf$^kΝ r<}4J_0wPDA|7K[δ/X7PZM2@dH Cg4좶rIJ-/)dJ8noG\ J-vӒDI FQS/Fj2{x ^\_ L2W*nzc9+PRur h 6۩{o2G#mn܆ZIɁx.NT=ްjKtm6lE#y1"ZEgܨMELEQĘ 窠7(\}YDƫVGYu9AC?H7o{CP*( =]8Za.)!M^ @>.~vP|ڳVP⑅t%U=K4MA#~mX9 8}ySUN4yh˚jڃ;B vrvE=gS~1}N Ć%ʃ(iq.ьzl)|AYh܁Vq(G"! ͎ɪzZ|X EC~#P+R?(XMo9(SW0mkkQ`2̘PH{/fQK>LۺW~:kgkp=x1՞Bꤧz h;T#Ձ}]v7t8'֠ >*!(s&D-oQwAVxD)`>䊊ޤ ܨtzk+0Cx.),W GL%ɯޞc#⚛̆=)3Rf M`fuE_BJV~%|?7~)+_\:եg}c(泧M(ogy&^z;c*Ǥ!@2BijWq|[>`3#388f|U |X>HWlB3bFC[0EiHES:+,po-2u~c0!I 0usֻb6t PfA>f)(τY )&HvfwyA1E\l}4ٲu>6cNW;ӡd\@51z`ʬD r4r`CR ƫ>g {_dcaݥH|5 7Q&$kP-a uOņޢ;#6]sڦ^ Ru)|[Z5v{S5<36\_Zooaadn 9w $H`C77{/-TT@x|4g`ضTa:yLv$"G :d5{v.\\e„;ld$ci6}ėL4g-|ޖ-R$ mIp)Ot~y<DI'x$'&NRx}Zi0\,/̌Y:^z*՞ݴA&1aQ4jY,/(3.;fa'"^[x}|ª;"ҹ4V-=V;^vN$5v Z M M;{$*ߐk@HCwnwNN~+1qy+\V %|5dx}P5ٗϴZ {䪀;dwu[HlC*,QpkSV$G0zW~}Wӽz?1PV]sOr?dv`BXc"`r9@vaEVpGD** jM_0RgGv0؊ ACi<j׾ L-s/0#wsJR(8 w$B;BmSz=)RUq[|/G3fjɶ^HyUNBLnp&kF8-`Ph>,ou:2Viz^_g>gQdt)&SЗMS穧bdF3f.-"g k!5sVXU  ^\1S!2K}V_@n-ݍ3Hu9 #jV^E 샄H]hRݯptp^et*X0+MlHn#3|v^}Laelb >R#8i}FC(n7gZSUAK|V > Y'af$?]e ؈1a2 N3B;q)i^:pMs6ZOn2z*Bp:\̕ĥ{h? @&@@z*v]M7D&76ʁ2,7Yg|6/q/WȒaֳָk3wҠ?O2SƂFMʼn6%rLtkX%UiHm.&ɘH'¼enWSͣwTrB|0yCb[oZ6l1 cp;OY(ؘO, X3ڹ6{eBN{Pԩ(GGZQT' *L:WԺG 883] W ~gElB+ c#"V`Jk̀.ZB:f:6P"G@C=k'6l1eO6AkbS3ِ"hu*U|xyYn AmTbl.zK[ŨD*mȈ4Nkq-wRcZ4^"Gsu8~/̜ScGc!ۂ]_AݟJbyG2-5i^H#pPbu ֓Se_EA5Q`ٿl\4Ftpi 醙}"i>D)w#T\O`ecʸThnγ2`P|r-< ԡqw'8Oq0%| ~߰N{ t5JD7 IJɦjTur;y%F2T@-~jÿH6R.̀rY*DX-+bɢ56E;&9Ɯe+7,Rl4"JpDLϐr%l6150UA*nJv;C:vZ-Ty5Ej 8*#1waJQMp?@$s+Svd'W0a?*C+8uC^ҁT]o0;ũM S*2`|OϏŘn ֐2d}`̬VtS 8|+1FlBr2%ޗr2߸#3V~-$^ EUNBQQj9܆9M0=C`,I6.U-MPzOB9.:30ӱҏY~C>@ftާ;i5UpeyZE1BU;JQKBL4\!j8 vyh>_yחו4~]4"}i~?ypYz[}V6Yc%@Lt[ U,&?{M1́wU Gk~ V:ywus%U5^a#Yr4Ა\mHGdn!|UBʒcZ(qCp3. LkКymDV81?K7Bm5! o sDDԛ95V]Ub{Bn-E7,T XJ̞D *LZI;XvwjՕ$ jSbwWgRɶӯ+= dkG2 eՃB Α"ՠߤ=+t>'8 n$jYXεI?pV[49QV)᧓Z3[gdԉ 1jfTܻo0 M w?GreJ5Vu I%=cn("lSN,dtτ[0ʞ*Z2`oat $xuUh5)]LҮ /9DEC:YgZà`~o]i tOYu#6t&[W`RWp ~^J2[:0|VK #6R3K('k- E De(*bջ |J8~bz<[7R =R.;zK^LOXg6> T}[l ˕>iS` ]*orq8iE!-~ew5g/˖;.})ZGpTѣى,u#4 GTϵG*{kD1iӖxJ=$T/[X2HڎHw0'~W#8pHh!5ZaW0"SF/ٹD70^L0DsJ70R54&E^ruloEJo<-Kn̬.a_'M|cM7Z;rA`wNGy}2hbV:0 htFruQfHWTa/Eߎ-EL).segGʝ%ly 8þI11aMru gry*N;b`<9EצV ]7Lq<Y*Qsħ] 24\J,/&?q;Aꃇn!|6IWzns 9$Al7E":k`*Ɣ,VU>7@buGQ]5OEJw a< j?Gܻc%s/e_U &aADѱPl!JV!}I7#R$a@ԢHv`Q6˨} ˨_ 8ӪPOr$ kA.r6u"&oT;wUz"^ [8}_bzxv*qjY-b2[|䐚Y?ZE_D2OC6;Rm=(k5 0}9Dƪ{(Jjipef,gk aڞ{㪵>b;o}|h@g}ј^ ̷V T}apC!-s=.78[N6k\xrKvƓGO.wƒ0߽ ?f/|th嶺RM!oMD 4JNڿq=mytᓼ4~.Փzjr;AѝѠg u->^"7R*x_!`TFBtB[tlh\\NcR/KFRt(#/=~'k^d ?! AiBUE[|*I*lLaW. LtȌ@4(2># XlShUmDdS1:QPE-n\I\ejt|H\zYiϐJHMoGXIO1H32~T2 }-Et\.]F6MEQθs?Y6Y8NSN_P Ҡ{@T0n^stK4ȼMr :-LI65؎TKҏˆK&Qj?L}Lv8׬lQۋv,e~$MUl[J¸4ZA?cԗ>1#|]~kDJ:5-Z9ntq[nmEP 28lMYAdj{; Gk4fW|X4>u1UF}[Nt`/}<@r}"/򀡥^^{bafNzUq}k@{,I@Hİ#)%ƦsBÒFn~a7XFa_!@E3sDZ:] «vs.-`M/xAP?TS@*4MbMs' zG!Q{ 6mD}{而YfOhbYL"2+v2J?sȒ')G 7qlπ1]J"YO^*,G)IEV7yٳLO8bAMkUjɿkemyMB| zԤKQshTM%6zZx$IX~PCaNo+I\3h>h-,Y +b)Txql:7eHOiuWSq@}} ԪB3:aVwä́&WKV/?.S=u9Ɏ i0AkJ>19¢$@AmׅD^]9tp`Ȫ,g UrLwLS` F6Ҙgy.?\rQs ꒱!y+]~Hk EMH{p OfӲ=M@:0p`l?< B3 O.X1SIJM=°kA^Xd! P 1A)HEI{ēf11 9zd Xˁ5~fj-I_5`x 0UYo_)dz*eUՉRc"t,ҝEpyjz l:xG\0/y3PMli*{}\|wqG%'<&t@(>ȸ&Cs4Sĸur-S`mB9Η:\yG$8j3k )<]l+[$C jDJ`TsTJ=)qe|򬞴@ :g7Add$X)1J7u7M =0"ezE-+0c?˛ٓG]>G!ZFBS\Y( s˞,=;z3em*MCY9nu68!4.+Ζ*q MDA[ҞrvIfշZ KGEQ-XD "7ιFr 2pv ܜnp;QC$>SZұ{u"N gO|]ƞi%m?,-J!X0,Xś\^=Do |ijkdus{h_>ÖqnjTk*L9N{ucRr u:x 4?V}ə20W('J#zO `r?J wR'" ÁG&CTcc (|8O>{R!tQXQzzNzcke32.Av29rŪQ;[و%ٵ;֐nJ,f$eE&=eҿ14f`qL\D\"KM~|m,)鞣觼/Lg["c58j;`Χj5F殷j,Xgc4(j3D'rEj{%`oL2;Pd=xi("XB?{KD Jޒ/~vst ȽIj[$],hB3vFT;dY4pyŴ؈Uץ]IqfSj`UNѽvDU뼺|a_,;I)Q[Ho2:ry}sR㉑)mg![qPEzV@\߾AF[dw6}޺/+3"*.Iu9j^B٪,bN5H.5FGnhqv7]]m]YXqS[% #QOp+YWPV̯;vm4o_$ueLzB4vLrL~T^H ({]n鲆:r+qT&*8GuK0ԅVߥݢ8X# BaT@ &ᒆ.˧i/Zì@{@˽I8Kxe0bUEA* ZsUs N-.R4kun5-qz1# M9Hcl3sMN./%|@%,f(ʑ@; :3?e0WoUڈfaHW)tz_tP[,_0 ?z(Wyٿrx yrDIе?3 ơFp{GAc Z 25Kq4DY&90ЌWv _ncb?¤4U2|ףgygF?.#཈*1O?hƝMLOzH7?IB%-6d h s&7 Ve]ȝRU Z8_Jݛm ӧٍ:)obtM\/Yϣ's3\;h\l Ԃ1kp}1E;s``jਖW9RZsBUHSh}s%%M0 !hL  aPy!m㾡N:d*'dfdIԀTϮhdۤ&x1}Z9Q`ڞe]CI7]S}~<")j @am1zFkk,:Y(/e&C R;#vD,'XY$EIw~j*)O_| l G^L|) n3Iڎm/_'M -Q-+P8.Flh˧iW`ģߵ Ou{;Aٞ`o{+XU4Jֶ.d <]_# CP ` D/[91@'0U`įzV}79}rJH":}f0Ɍk 6'mh-|xjJF#m!y[w7~QH#Y5t/ggj0Լ Iv&B E^u19؜'Ԉ $@1{Fiui2Hp̌<䊑.t*U ?(nxw,޲vse}0r)qIFy@(ݽԘصH:#"jq ;IfLz)Y~X0QsezrlGŃ i$G[K=GxAȥ*}>cXD )hiX,Lyo#OMLm^!*b#%\`4@N It3Q)?dvBܸj(w$e~9W~df7Xq$d9|??-8e+QRA~Y4{2o&̕jv΢-*/:!^b]Mjvhq/^i/ĢTWQ!粀%B~d8o](~wNUΔO l"FeұȐyqf'hU /_7VJ@E1P3U:ٲc  “N4@{iHZڱJ?E67QoWRS_R/{A "J?}tJU֩-Xk:DeX j胦ԈAB\3fz{`P*-C{U_)ty0&q-LFRPO0.m1+!3}݋k}2K=0^e(9IVOMQ LAc̳n1Lb˛bf33Yކ2,]grE R ZFr!aX~ނ{(3,l~AU)gZ|"CqsmS8UeӀ-2 (cT(n8nN#F"ܥ@-_-y. &f/W)d&մ@?+N޴sńi&epX ˾;~rrci+u'D6(MiYj] PLQTy/A91EZ~7+! DK(Ᏽ\aLpfȯA/^Zbڧ)y>V&q3`s 9fGTԹ gɉ97GZsC\QGc2LOt#C 4CZte .q˦$,vj<(RxiaBd՗CC5]$'K^k9} " ޔAi-0+F NY=UDHU(j QbUd#{?5"Qǟ04kRV`3NYCܨIõO<>Ft_bV) 4ή._&Y${> N0~ $(Sx2: 21X Wa )VAjt4Kh}R{xz"k-ɟL.T4>`Րā :GZ$TqBd/KaRۺ],9pVU)T@&5TSVI:[XK-akڰw$0"-p.<|I[ߐSsG[~^Ij-[Z>K1?"2^n&c"?Q),J)QUhῢJ7+vGKy~A.Ù"xANu{Jun\2'uKB>P22m|K%ʺO@} MGC%}e酤I]"SH6F͞kI '4\lqbT)p ]s@@ 96ܹ~a`{@cH#q \}X< anMu"\l 홸⌈v)=*}[ix5K +Jzogy^{v%x >F7.:SxVk^>+3ftZMJSbǒQl/eT1v̮MS1D&Z}. 8<,z1(qA-yI٦d713eһ+rk)t}pKv6R26浖Zݯ)'᜖~WF0Y-*toIu07 w/IzȾHӚ"N#N,^tX/OWr׾I $ KCawôv0r uP;YpeW A6C91oRcr68T!N^?{şyiL5~,}Bɯ]*S7L(FgBi0$/}{V] |6b!Pl v&?,5˱oYZpo,A_94а CM-fYjpY-s YS߼zňRORlX}Bϑ(3it #Y;BYB%e*+ 2\_DPQ/'ٔnΦ*Ľ ]NcߎلbnLW4i nT`u3{ X8È|kJMZ^;M_$wg3KBkz͖慸I!lN;D"n^~1p?!ھ! t0τ&Z , ۡ Qwv ˝kb"] )#ŒM KI! KxRwkz;yo Qg4EVE;Jmge&^DzMۊLx ]B&7d_)R T@c QG_aa _= G9mG "@}5ZC\3 w8 ƴ!2qx{2;iq. FsT"5Ru*+~!CPc;8ong%!wdFd;R)'N;,5cL΃_۞6 SlAXn >E2ѡ~(-peJdë$ԏ WJLUtq$׏Wm="FfQcn/תȺx]#[2# 'U2beyuzm#,i|v{;#ҀXpAr)F :8e&nt9P>*hRm [`yG}O< W3K/#r0_0@8jePEQC JiEq-59`Y#pBd’#L X1 f =R _S4?< KY/"qs9%!ۉ:yv6@1pkm#Y=1ޖy_^ ݦR}J4wjܨǟWC"擭mxaVaX\D^#vb6beI&S $wV ;vd[=;h,<]\U*lW/{%()\rǐuwq솏k@Q5>hzv=;tC]-aqv|?Bsqi}"}{ŗ`pEf%'* F`L;Qku٠a 7 <7.by/uu#_GBtL6N8W`ZJ֛lj6%t|Y9 d\+X4P9!T׵[łby=M⬽yv;F'XidqڱLЌp v67w-$"p7ҒX87ȖѴF0l-_+Y1QϹyUSJ2{_v77jݚJaUZ8mz^F?TB\k|D΃( +zB L YZ