Messages in this thread |  | | Date | Fri, 29 Nov 1996 14:57:33 -0500 (EST) | From | Benjamin C R LaHaise <> | Subject | [PATCH] Re: Corrupted inode list? |
| |
On Thu, 28 Nov 1996, Andrew E. Mileski wrote:
> I've tracked down my REPEATABLE OOPSes to the inode list getting > corrupted...at least that is my take on it. This happens after a > lot of activity on an IDE VFAT fs. > > In fs/inode.c, sync_inodes() will try to de-reference a NULL pointer :-( > The real problem is, how is the list getting corrupted in the first place > > I've had this problem with all v2.* kernels, including v2.1.13. > > I'll post more info on this as I discover it, but I'd sure like > some help with this, as my fs knowledge is almost non-existant.
Ok, this is still the same bug I've had a patch avail for the past month... no more inode corruption. The following patch fixes the following: a. inode list corrupted if put_inode slept after calling clear_inode, inode could be allocated by iget b. some routines which called iput forgot that iput could sleep c. mounting multiple filesystems on top of the same mount point should work (underlying filesystems _must_ use __iget in their lookup routines) d. adds Documentation/filesystems/vfs.txt
I apologize for the ugliness of it, but there isn't really a better way to deal with it that I can think of - the alternative is to split iput up into two parts and make require each underlying filesystem to call either clear_inode or the new alternative (reuse_inode?). As it stands, most filesystems do not seem to be aware of the potential races surrounding iput, and almost everyone forgets that iput can (and will) sleep.
For what it's worth, I checked 0.99pl8, and this bug is indeed present. Granted only the msdos, smb, umsdos and vfat filesystems were affected, but can we safely say that this is the longest outstanding bug in the kernel? Ouch!
-b (who really hates races)
p.s: The patch is against 2.0.24 and needs a slight massage to fit into 2.1, however I think that stable 2.0 needs it much more (as newbies will try vfat/umsdos with a stable kernel and get bitten). It compiles cleanly this time (tested w/all fs as modules).
--snip (also at ftp://dot.superaje.com/pub/linux/vfs-2.diff.gz) begin 644 vfs-2.diff.gz M'XL(`'HQGS("`^Q<>7/;1I;_6_P4;:>2D.(ADCJL8Z2-QU82;1S992D[F<VZ M4"#0%#$"`0X.29R,O_N^HP$T@`8)95VU.U6KQ(*`[G[=_:[^O=<-7`6N?#H5 MOA>D3WMO0R==RB"Q$R\,]N:>+^-UG,AEO#<>#Z^NWU[^VG&]^5P,T]8-3B<C M^N\Y#::=X7#X[!YV_B)=<1T^"'$DIONGD\GI_I&8G)P<=?K]?FMJ.[>+E*F\ M@L:GX\GI6%'Y[CLQG!P,]D4??A^*[[[KB)VA\()Y*,)`)`LITF7LAK&03XD, M8N@@%DE(!?R\Z&[4$0]S.QDE3TF)2!I[P1VU^(_O7]]J#:`$)N<%XB_P[_I6 MV(%+?YX<=OH/\Y@(]2NCN9=1(/UO8Z!U(WQ[+2,D<"<#&=E^YZJ=W#/BF=CW M7/FP%Z2^W[8E2H?$F;?4.3P=GZ*H#MO+29'=+*;Q8`Q2&DQ>[:.8^J_%GR-/ MSL7[!QD]>/)1A'-FLA<EJ>V+[X&^N*$..OWS]C_`\ME:_%D&?[.7P-IW]H^V M%TO1G?GVXCLW3$9QN@)F_TV.G'#9Z_0[_>LP#*20/M2*)4P'%60FQ6/D)2QY M+QZ(.!0+&4F0G"W^GGK.O7!E[$3>"IF!8W]<V"#NJV\?I/"E#5)VX1'.(:/C MA\"ET0A[O"5ENA&1](&9#])?B]A;KGPY$+,T$1[\'XO`<Z0(P@2'L["!+`XK M"A]AF,DB"M.[1:>_LN]DC+T[H4L57)G(".8M:3Q(1CZMI)/0:&20#\8N*7[_ MQW`EYZ`&:YHMS-1?P42#-3+&3J#.BEK%J;/`IM).!L*.Q:,$G8.K@S/&"NFJ MT\?R1P'3":/$#A*Q"KT@B4'35C)P[<#Q9$Q,Z/0C>>?!`")+LZENG$2ID]#P M+'YF)>N5%+OS&*^]9RF#KA:@<C!:36V%'4GA1#`9X([\.R@=B$>$$<P811@G MJ(\@F<2.$A&F>`LEC_9ZA-I;$!J@MJ#,`K$,W11$/@\C>`J4P'#NR4<HG\/F M/Q"!E"[IF>VZG;Z7Q-*?9WXIL6=``F2J#Q54VK%]'WELXMJCEX!@`B`5@'QM MW_L']%IC(;,VC>1(B-?!6LS3"#J,X!HX";E&ML%.7R.-3+(=1\;H[)3BT3CG MH>^'CSBBK#T//5/R3K]!E(T2Q#8[JA%9J37S0["TW>XN2,FUZ%DO5Y%2E7@V M$`^AYXK=D$P23!:X#F;E@\?JG1%I\$^@W/`_#A\>1VM63IRV7=8-X-`5^R.- M%:#^#@H.29&PTX#,@N4'/F(FXD68^BXJ1"2!T^`%0`^0R8_HA*Y_>?<.**L1 MPDB0DLV#`#F@/HBE_>0MTR6.Z</K'RZMFZO_O!Q.0`$2MO1\>L!*#W5B#8W^ M(:,0:;'QDT(#DW!L*YL$-X_")0\8^B<VH.M`7LPCF)*PYSB`@LM(C&?`OL\- MR17!BH=N(1MQS)KM)2.-OZ`A"3H@:YG&B04NE>Q(Q%:X$DNYG$$_,`W@%;1D M]M.\'T!K723"8@W123.;"K6E7AQXE@AG84=B-["74LGV&OY4OH8)*@:0T=(` M,E,!2=\'X6-5NK,UT\<11>`.O$C&%JR/BOX-S0,9YMMWV,-$>#4-R=I!]ZR7 MT![=.*\HQ'])DPR#D:[M=6\'+N(IT=5V[DE0K&*"V#/6J;=-E.=?P4!`R]$O M%?,?D,H!4BDT5?<90)B45#/?JCPVFB^N;,T")'T#)I0=244SR`'IMEV1/UFY M\@A>`.M>X1'H5NSR4V#>SF]L+0`GAJ#",@Z^37#U3D`6]CTN]T$L/[&N9]1P MC&A6P(S96L&^&UX\O3N9:,4H;!GS<AIPWT@*[<3VD>"Z*@+N@+PDF*&''2(] M,A$ET;3$!O0SV$1U)=W<T(!8F6U<L9"J(JH,BXM+4MS9T=>#V]R;Z,L.X8Y8 MKFQH)6LT<)U#.BZHO).$`.?`65!SPL+Q>HGK7TQ3A;$ZP*69+/2++*V["_SR MYFL+##JXJ\MR(+)[P"%@\66Q?BKT`9&-;%"(6J.\\U6:M%<BTI2\Q09%P1L? M`80'K@H@CRP$A`Y2(KI@/\`+-]%!:7E`G1PTM`@0%0)V`],4Z/,\5_&=#;R0 M]-)FQ:.%#4T?U71IKZ$C]-?<+W:$&*9`$;G"IP%(3($X*U?C?'8PGF+./_]R M<ZN6-G:`7I(Q06N?13MT0QZG6`-QJ2H9,A+?M+)OD?@?:@I22>9Q0ZM<Y;@6 M/O`80Y1IL09%DMRZM8$<5H0++UD&7<Q=;=U(6R`E\O^:4>["HC.W4S^Q5$E, M/2[!)&TPTC5I,4+AFCGG_B`6N':S]5>)\1)$*VO(\(4=3'48%:_-S&*T73=R M?4T?0%7Z5ZZSP8C],+Q/5S6JX)8&HHH66!H`"@O'HNC#M&&>!HMG\IJYYS9. M!N_%"QD705H5$,2A#X]M@9VS0T>OK-8+L*VW7H2D;9%YT75F/1H9LNO?%EF4 M]@FGE=@>NW&LBU8EZN@/.Q5=F.T=N!FX]!#Y9_8+<DO),U%C+W!A`0"0R209 M-/&275I#@'08<=Y#L8P$O+N["Q@L3.0I!;H0%<;I4BJ/A)"QQ!0"ECD7R#EY MU4GC..88C8&J%KRA!C'[R$A".4C4LM#E=2$$@-+!N*?Y1DK1`,/G,G$6&;.4 M)PY*43!$]DK0"L#J>HOK6%UKMRAQD\<`?VLDU[:]6E=;6)'^H(G:\AZ8V\XB M&UW@LA6)YA%`@Y8^8:,C1FUO06=;N=';:]W8KI']O-@I0K-TGGL:@TO)B)@Q M!.@K5J![-'2)D!]C5(14L]#W'$HLC`I\Z&G&1!:WE#+A./?&NKIY=_T3.(<8 MDS:`RV!LI4`)[N<<\4$?,%Z.-77UYU#?:F4%;;TW@UB-<I%&@-D0^@EDC'D' M&\U^7C)6M&OT2\`F<(=DUX^8%'$I]4+QI<ZI&.`_*H>_SF*V4C$P&5T5Q<BV M<CN>O`MJ'AB#AA@"80X<1I3HV-FYPFA&/G)TB!DSQ%E#X&T(RZBS@$&Z*6:^ M$LK2O:CH$L;AS:B7HG1@GDGA"?^T;9XO_YPKRGIFS=ZY"D08N9@*`H?+"%Z% MK$M[]:T[R.N3`N4=4W)(Q;PN\4+/BQ'@1P1*Z6W/L3(B>P4!1I"`ES!;R`H[ M@RY)"$H=P->_S]#C`+$R0!,0U(.,,)W/2$6E:\%21D+C+Y*J,\?H0Q0PA)J! M8X(H35YGA6MNC",Q2&&3$V\]M'(>;3LXU)>M6,K[9NU`@G@;SN>6YO8*W=S> M5+G-2EN2;XO&NN<U=&]<5:I$..E'<:</#2R=2`R1EI-LIT%>GRM;G'[=U:AX MH9/XVXFD$*+=!9SMU>[\,+C3B"V-<J_24K</2PLLS+;4K3XHT(-@&QVJGJ=+ M*.ALU40Y_7@=.,^I;[=I4)6SLY#.O;64KF<7*8![5SY8"2;/2AI!*)2-LURC MO'$VC_?DDW1&3F5?-']>V?[4G^N[G+7ZU<W,\>ED6MTDRQOIFV'C\>EX__1@ MK.U9[D\&DR/1I^LKWK?<F0\OYM8JC,6Y&)_E#]`2[/*C<`7WQ-_A!:96AA>F MD&\GK^%@A-KO$P'PN%U%9'C!6O0[/B<NRRB"!>!<E"IT&=G,>V=<#PA0O:PA MCXGZ&`ZY#F5)T@#1MS5WNW.7Y(B-H:";I5:HI@I&B"(_^HR_Z9>31H#J$B"/ MBPI<W-_F[B<<WUEG:)X?ME,DYRX\^%S3#0Z\#,JA"NK:4114U*/2HJ5^J%:; M%>3@8#(X%GV\*/6`F<%OY'X^[W@FOOE&:+?#"TJFFAX.+[1<U^\E]AFJY#(: MLL!?Y)4Y>"'U*@^EB4:/A,HR41*JR03!F6>2B2JHRZ0HV"_+I-*BI4Q4J](. M]M'I_N3T<*(9[>$K$$:?+R@3[:<"=X7*)G3(1DQI(1'/D+MH=8@A,C^'?P_0 M&I3%0VL59L,#3)V>*25X@:LC#^OH9#"9P+CP.E6^1&L%%<\T&2A'\IEWO)$4 M1,Y<C0790_WIPJTX/Q<L5[5ST4/-Z2L?P"5."$`,2MB\2\]TR]S9VQ4V+44( M\2+;`2;ML3M!CX!SX3%2MZ)$IW`[/&?=;0POK]]?7M^2GNZH&>C>[K-R"5EK M]I?BG_\4Q=WP(DL@_<[\/#X>G``[CT\&TP/%SCHW=69^AN[5?8UJE])0G'JB MM).69Z)1=5G8K1MF0N#3!=UNEKC"UB2G3$AEE4R6N&C4:[-CAM(2Z_J99/2T MF,X&:$"//L,O_%>X<7*Z@,+W=CM]4'/Q!G,QN/&BQWJX[80''O`\"1@HG[&A MG#06_YL05XEXI"1.K+)J3,P)8]JN7=@/V&(11I$W\]>5&(MR.[Z?'2F!7F54 MRBPA*3I]$Y?.,?@RH<QF&N/&/!]WF*>T<X5G'B@S"M5D\.!%88!C9U(/=N01 M;)1/*YM.&>4;7-DFB(`9.IP>S'*"V4;IHTI6J1GBQC3OQD'D\^\8W=@"<_=W M"]P:&`[Q(`M6!?-!AZ%QM8*\!"E0Y9E*R0MR-KB5R6F*)>4N#$Y,K1@=91O3 MPQ-<EJ:O#K-E2;,#%/L0D^805R-1B[QJ5X?Y$)$F"];IRL!F@$X'G:&H_50F M&6\<9O^/]?N\3LBGZ]21!F]%,U\IUP`FJT!-=;5#4&5:[/AY?:W+GU?@1[E^ MRY6.&QG`A[;038]HH>,+2KD#:D]Z3#$[GJM8@WM>@(*5N8PV1EFX#D$,D^Z= M%3L799TD%Y5Q,(.#<)MA4A9JUL/@FPRAT("/`48?P(CQJHX!UK!F%6FBUZ8Z M!<P$C+EZ9+#*_K):A.VJSS(L3AX=Z4%3ZE%UV!WWE'&8N#AG-NK1(R#7_Q$# M2P$776IL1:;MC\>XSNV/@6=CQ3-M6;U]>_4Q`QO=3`A%ND-%!3^__JMU^>OE M&UB57@!BZ=49_:69+`RX?QOCJQ9HSS<%`GIIW1HKI16;-+4U6.:)P3+UIG7[ M/)P6]GD\!:0';IBN)V8_C&"+W"%H'1"V"EANVN=FG[:*+%?.TKONR]???W]S M*DI0_OQK/P4\@OI[_G7:^Z_@Y2`7!.Z[5"*$LVJPHG8]*/3(HH%^%4=IPHUA M"<S"7B2$B>R/ES\4!)<4R@!6S8*3=$0S]4:>M>`H!921'F5I/<T=T',\_,2` M7(]D2O.BRMK>=K<X&)#M@V?676:L6>D:(QV]M$'IBE*3TFT/?!J5SA#]**7; MUZ*?HS%%/W1100;*Y?NK=Y?6Y?7;[FPQO)A9KIW8`\3IPXLP\NZ\P/859,?3 M+N=BD82!WZ81PWX2TRS"6`7J<D#*+JG`HK3[EX<O*#T$R7F@HM54.X6EN@/P M6EA=A15%]F4'.]4?#R]?OWES>7-F2#<E>ZA*OA<GL3GO5*I@2D!5*]0R448* M!BGO&U-2I=8&0>OGZ5]-2=!T04%_)0.8D>97\#0]VX[)HP@=B[6JJ0?)O!ME M+7`##-#90EO0RK2@5,Z],Q6R30?3*<9L="7M+%*$9WGFY(7JL-D%E9,=F%_D M+-<J@MG<=U\6_9^J62QLVA+BDW[@%5E'-WDXW2O2$H9+YZ151U3]_&NWY'WI MX?.ZS9WQ]JFQPR_WF+GX[3V^T/SJUOX@;@K"8"B?<"\O2)[!4\I@:%TIF*`_ MA#\46!PSNAUGZ#9CC?B3F&!J`/^\H!Q$.D*=BV>CV`KXY,'6.8SQW'=I%O2< M)P$MTP"7&SZVA$F4IJE-="Y6QC+WHCC!KHDTK5_D8\$>,,;O-MA+3VRGDWGC MGN@SL_8/!D?`++@H9G%N!EPH.E0:Y=*.[BUEM_A\W6*\`U!X;&M@Q[:%E>85 MR$?E4C@`J8>^/:.;;@1]6J'9/3="/D/+9[CE9L"GN>3I_@`(]/E"+MD+'#^% MJ?X)0HH]]1['XJ)6(.\P2T$EFNO>@@5SQ]T&,QK<RB;W:D)WV%4-H0UW*DM' M#7<UE+/*E.9*VM7PVH!931IAFE9H5I-&D&9H^0PU:89H^LI]=,P0[5C;-%!^ MD-B>15!E0,5IR&UXZO<\8;D%3XVYMJCF=O/84J$H')V!]],]S_9!.@W<+XJ- M_"\5UR50;VV0P9%9!D5;@Q1.]&V""6\33)IR9)ER3G7WO`5%M:F[>;-A`\1B MY=G'?'=?7=G7YPO)U"H3E/&70U6B^[(RP2^)K2XJT&IS;SK`4MNB7Q)E;9FJ MAK7*G7\1P-70,Z.NYX,N]MQ33AD(QD+T.A11_=I/<1JB$DN3IIUP@'$RS2-) M(L1))CS'*31@I5B!J>"7^#I%]""SHZB,M,I`ZYDP*^<=17@Y;IDR<"$MWR&= MM^ZB,*4M%'U&8HC:M2<N?[V=6E?7[]]>WE@?+C]:/WQ\_\L'[I;6[^F44-1T MVHRB]//S6IZB%4#:VVWPI!O0SG0CW)ENQ#O3%H"GV8LV(A[-B7)FJU\DN#I" MVUD@":4K/`RR(;#DM+X;6G0PY:SL>8MW&K8ZWJU5R<S8%KS8L2/76M')Q-#1 M)5EW#2K8*+3I_)PUZ?6;=];5VU]1HZ`.M.6-D(::;U_?OL:J+8"74FY,D;F) MMY0[Y^+-+Q\_7E[?6K=7/U^6()JNG'6&*PY?W5@W?[U^D^WUGVW*X.4%9%!Q M+S?\#/R),OHK+WDF_&>NP3;QE0OA4)"]M81'`;,Q!WBL3-4NLP0"G]^Z4/RI M9[:G3;!PNA$73C<"PVD+9-AH3PW0\.!TK!\X>G7`29T#+7M7WGJO;JG3]GEV M_J,"#X6&^80&$!L08K6ZRKG]CL<"W!`WAYTHC&.QS-\7UX\'"-,@<Q`)@^1% MA5'728ZZ#+C7=6QG(2W;=6N[ZUFJEZ&QV(2-FR;_A>=>F7H;^#RW-T2X6F%= M1<N%%0TUM*PKZ'1L4%"MI4$_M2V-*>=DB@W'W%L#B58!:XMZ.C[.7A*BSQ(, MQ"Z_JG_6`*`1/_.Q+!SF@69$/]^\?7]C7>7NQ+/42__%<1T^S(;:4:\\2^-U MC\;.JND%#[9?/X/UW`T3)%@+J7$"AS2!0VT"&3J\"O@M'UJ8NN.GKU>]T^+K M$7@_$'=A0G_E`!77I8R%RKMF<^3'-,G0=Y7YXKAP,\H./`>!WLO1:*2`IC[' M4A*,V6<FJW.9W1D7\V2/#NA@%%ZF7VRZ+-[:=/EQ-JY\"^Q+3+E.NC9M585U MHHX/:XYBL5*_8&@F7U$NK[N+6GG%8YC;&U:U8X/3*#<V^`T]Y3$Y.B*_SU<2 M,@"S'T(!B[^+$0*]Z9V_<$?%>^A<E+MF/U!+>BB_GGOUK%HMXU&X=!0&:$PH M9K;G3S@\-@!S+PXW[0.6B@UG42O%U1.IIM8&MA^8SJ7J;0U</]8/B!SS`9$\ MT51**7%X^'\JL;3T`N]I;^8E@`--;"^7U_E>*Z\PWMR^)>?+C>NLG^B'4%\= M#@[P>U=X56F:$F;14DQ$M^5&7<NZV[;J2N\]"-IS^?_-MW^AS;<_L/=6FEMY M&ZUX=G%>/I*>CECA_M#>FFEK;2M(JNT%*AZ!U9PW#\T#D_R-)G`A)ON?>AO& M6!H8-,-3J`0B"4.V&27W:SIL8CZ"HF;`1>`^:!/S&W&,09`H3E;PTF0:,K3! M1%W^O1*B)-V1TK>>>7=OMN#=NZT;=3R?/[)5QQZQ,90I%3<YZ\9PQMCZ6:ZZ M,:31/?5TPIMVDX9-.VUOKEP"4@E7L;YIQXQL$P6UJOFE-NZX,\/676TQJ25O M&FMDBD2Y/FWR3KA<>DF>!S5O<@P:%*D1;96*FQ2I$6T96S]+D1K1UD2+C2=3 MSMU,#_Y5M_7H6YL;I*`7&Z10*:Y*P=2ZY=9JJ6U="E,=>)V<D#VKJSIC3$*@ MU(.-YU51F2FU-.Z=U5E5G#,9][*O<-!2U)!EJTNKRNS&C)M)>(;<664%^@J( MC95O4+FRAI=1NF6@M]L3W]`0:QJR?6I%J+5]+N5H:V?KC-@/GU"P0I?\O`\8 M";U/":)39H/D5?CRX>/5]>U/HMM]20JBF"`.1H>XC/]O6Q>?".%)[>>34N\# M94D#_44?S+\P<?IBW+EHJ%2H;/':3Y/\D)(:?_;G]CQP0RMM]N5T2<&CDB!. MQ1L;$Z<+>[62V<&J;>GLVCN'#J89H+[QO<.BT/#N8:FPXHT,+5L>Q=5:&CR1 M=A+W>$(G<?F2I;5L/BZ/"R>NS]=O/O!^I/7N_?N?+M]:OWS($DLHTF9CA%%8 M^,5B\F2TVPJ&S]1[_!;8)O/<U!KMML$IYB2S5PCX;:/C?<H*\Z7RPB7][.V* M'_$C18_TH13H+"F^.T;CP/>X(ORZF?KL4IU$MK&6?7J/DT/5*L_D%]>FY\2T M9G(M6:@3S/FH;PT7%+"L-D.-XPV&T(BU2\5-QM"(M8VM6VX>E-IN-HDIYZ.. M\^T#_-XWK:X)!#5A+*WYJEMZ+P9^KWA/6,>:R/PF\(R"U/:@MU055;+%%_=: M5-Y\:LW4@C]6U_AMW,HG[?+O$\$?@.BS@QG30P::AQK0_%SAD<Z$_^[N6'O; MN)&?W5^Q#9!"LF5;3SLR+L6E;8+F@"0'IX_<?1$42[GX8LLZRTJ<._2_'V>& MY`[)&2XENT!3H\U*X@R7NQS.#.?%K[)O@>TVHC3IQ2>J5(!+U$P%7(AG/7O^ M\MFKP&/1&XT@=@(N;G*5S7"P'O*AI,'[25=$=CUD5T-V+12E!DE^WD5V'0SK M=4`,T_/+\E7`HRO,W29!5<[FFISA(LJD&\6+*`]:2=UNL"X,1OFR,\"91217 MA0S7S_$`'$U[<+%)B"^?O9Y\_^3['Y\^?_E+N,4M?F/>2EOXVJIXDP]C.'WZ M\LD+HP7\\/R4EV7`9SZ_N/A,Q=/0]+18+]E./K`2+,^Q`+OP(REO<IH46X-! MKG@WB-5MGEV(U:4<9.M\\)Y^<I>]0VI\7'VSF'_"SS[),W7T`$M$&*HM<CX+ ME?7(VY-`.Q\^MZO!`[Q[;\!/*$C@W=2`SGS<OWUHY[9+]\C+ZZLSG>OPUI3M M1*T1WY%P"ZT4'%7@/$'LL2U"X7RM6X6H\T4!]VZT>;%%40)_/Y:OE(3%<3>3 MLN$4AI)]3$YB0,6N##&%CQ19O8@1X<;8E7T#-"B&147NH2)L)J'8KPD7!+.G M@;GEX+?A06175'8&JX>X/:V+/G.EX,XQDI)J=[4KLEZ1U0%Y2;PV5I=O];T: M:TQ71M@8+0P!L]!%S3"%9<$\I4='J%+1Y0^ZA6E!22Z^P]APQQ+C6\IP4^KM M__0X7U/L@MWFR3.MLL&@69MME1&*V(6[\P!7F',>NXKFVO[PKIL1<\M2/:H! MM(J[+=:*7,?E2A=@W%&/ZO4HCZ57[^?RNY#<X^N[$,""RL)0GIOV((:\7[_X M3MR$]&D3TE>6L?O[@4R'K0?!D$[`=WPQPS,TD`*L6A#__?85^RAM7NKG3Q;. MY]7'3.9,T"PLG*@Y7C@2=BFKY+CIPADP$_L0;9K#<;S[)+HR_13&,I2!-F7+ M!"4Y?/;HZ+@S&%1[=.%),GA3=XOKJ>5Y]QG^$#W6[QP#D;D;#X2H[CL2(O>4 M+!RBVB8>HA7G";?+;KY];(0:=X!^(,-N_O'ZE\GIJU<_V5A_EGQL1B('1BB# M['9ZG?[V$1(V%@*R8#Z"2V0Z:UF'BZ?'CAL7)O1BRW^AX/$>A=/O&Q+ZUH^= MAC[QZPH"%%;M=N,;7R^PE)8K@DW/1BO33(,]4.<!=&$YY8.'*R0(2/B'76PK M6$*T^Y)VIOFT:[^"05$5EGB;!5CP%_"-^OR4\!R;J("GC!^!<!G[8+K4D%5% M\77;%"2AX6\3C4$L7-7)6*LF652-3,#=2*YH^MB`^<\'?73<TH74B<8T:7Q7 M)0$7)8#W%6^!]Q+"+6)YEU"$!J!$!^.K5;WUO%69;]57+^%N,M^JIWX0Q$M0 MI9I^]TN-EUC3_Q-US44`Z32D`%&=5*4'P373$R8CP@[JID)BQ\F01PMWCZ#" MV)Z]LI3H(%IUS8V:V:R\(LC,HG,Z=KWVPE]<Y54GHX+[G9`:@KY*K)=OWLDE M1M&1>*H>S@Y]"B_?GCMG=_7BR=]>G892ROQHY/]I(KHH>;1+KX^N+K>I.,?. M/=M:*H2UO[-V=;`4WJ&T5SLVC+Y^B;%13`A^=W2C,I<(0"=LE<4H/6Q(V#JC M&7%&0[D'_3KU0/@[W*W>O'F#)]!!T`*<B&`H=G%VN6RUS:^K^1Q3&=_9O"^I MBQ8,Z7)Z<_:^A=$W%(@S<QQ&VXR:._\ZIW.)X&!)@PZWV%?A=1/1;/_;V<19 M!YO14QN1Z\!9#;4^0C5'@R)*:\E=V<K&_U.)#_6J'/%9`)WX:@"%JT8]%#J\ M(VR!JS(KTP!MQ_@OD)YGH1G;2R5X@JO(%3PGTYTU6?E>58-1Y3E)C-+@H#*4 MQ.QB10BU"40YF[+R;P^/*GN,JR,<?AHB2B>$Z_IMV"X01=P>,R01OU#K"9$C MBNB/3X:,'0V0&PT<,W()T'\G*7;;KFP-BEN67?DSA8*5:+IEH/C*Z_@YR&&U M!2%NJZM/B_DU?(!##A[.8+-AOOGD!M"..MY50$^.>=GSR]D$<856TY68F5F[ M):S!V;LG0'(O5_/U[&IR?75UTP[+<_R,'9]4KX"`Z-0,/$>W1C@P,P#.\>K? MTS,XEO.OJZN+]=G5]?+@/V<'9U/G\0//8YB3FHA6N5E1RM<-0;3KABC:=4,8 M[;HTCC9#IKK49(QK?#2`&M)P\>%K\%<3#9V0YO0LH)0D_<4='Y$42?%'4.SL M2!47,,(,:Y#27TC#[ZG\/`HO9B6JP3$'5*11<+<AC;JC+M3>K7`4"H[*';I8 MXJ!+"VC-U^CG8T"&OLR-7&?0>9]<@2T8`]VN\PW^Q/N&]X6H]))B"OP(V=PJ M_?'6E/JBUHCV)-Q"A8VCIG0W8B40QH,NAF?8ZY\R@'O[R&W+'O^(`=SC(?I0 MZ1+4J;ZF`CV_!2('*&*+B.T5>(`.-MGE>XR-H[?'Y!4>>Z_PGSUZF\W)O01O MWYY/S;]Z.F_8GK*CI#UB2#)^8;1>B"PPI2&O>S'J]$=THD)_Y%V+]OFIH'MM M(L&>"YU@A;#.+ZKG]'*/:>HF0\N"F/2+A@_N^$K,+H+5)42REI`@FQ3=3%\_ M[ADZX3_[@DH\Z35)0_U+-8CPR-\2)8#2NTMR4]V?LPN]>?YD'^JDO_5^BM9# M4&RQ.'KUZX]/3Y].GIZ>XCH4S23,YRM4L+66H]2!A!ME\-1@:)"AL@FX85J> MO6)\!7^9D.R2&8(83NN1X_32EGGL9Z\GWSW_B6J=_1-<%/N]=IQRJKTMM)&M M'M@S"'K@^H!+:$&1G3GV^?`?_GH114]4Q6::T\BUTJF2"<?WB1)TY@)A&OPJ MA%P[5DI<*L0CU#UGT*RQ+W7'*6)OQ+Q4OTK`NT:4X#JJ_2IV>[Z>(">XGBYF M5Y>3Q35.0<##2C:<19!N78J6WF*.(YA3:YI)C:9UFV0Y93=0@5CD:_V8F]6I MI9E2]?&@62,A52,7L3<B(5TGYQ94LF+UO!F+<43GL%E:TZ%C?-QIXYE4HW8* MBHT$G=%0.<L/])-$K:-1!Q-D'8R'](U.FU@=O(_F28&*IDN'XK/6T)>PGTHR M8I4N`K-3_V0P.ADR-O!H0$E:8<X!D#:ZZ+&7;+R9B(%GR#:A&"Y18^12%FRQ MIC!O`?Z-#)=U;[G`.^GNN>@["\\;#-XNC3KKC[<4)]UP.IM1?&\K08E/KP)N M&/_F#P(CFP8_QHDVB_;T<OIP\WD)7"M#X52-L8G"/526PCF43N%)7P*%#_,4 M[KL0*)QQJ>$1%JRE"PFZ0Z-`VY@V=-L(4TR5ZOOU#%?B%-OCA^$M[\9F](:Z MSY$-O1G:#3-4V!$/U6J&O:K4:,]DA'2(KPUXH7V/CDUO%`^0VQOZ<^3BQS`\ MV4S4ZH85>XAJN^+0Z>P#:4PUQZGR+(?`&;L1X--)4=W/TISD@),GAV*U&PP\ MK3B;(C6LVZ)E6[1JBQ;M':62ZR&_9(_1%W)\))+7A-*=8L*ZNIA-D'L&9]K! MKS5'A&_`%9-"DA4L\Q0;?JVQX9OGJ7!R_>3M?!+R^.W.NDA)M''GG]!I`8;* M/U+VH:FQ"<7CX]$97(J50:![?G*7ZNE$IZ9E$&1')#-B2A/GB_.;"1$6)J5( M=RQ581`XJ[TD4U6F:S2!)H/8.`I?F)R:&S6R+H*%A(;&,^,S_*B1%S7R(0LP M4'G0W?A/PGN.3X;]H%[/D`AMZ"EM!Z<$-AV.A-H2F[8'W0=Z;`(H)-_Z_AG5 M23?8=W#L)'"!XNPPLD`5[PHIJZU+_'!XI=!$F0J@2K^8<]4=@U$)+LF6I$(B MQ;Y6K?J(L(B:L5JXJ'9PGL(Q-LR7YLOZ=SZN-AIG^;WT3B[NI1=VEJCZJB^G MJP]Y?F$+B35QC1HLRSL",%V+27O;G(_4?0B:#$^L[=)I&=U^*K>HCR]'FRDN M"!@)R;+BI.&R*L61=1I7=&XKK:9^S(WT&C;B#36;7I^*W_=[.HW@:>]5OL]= M/!+<L!,[WVC*%T=9K`T1>+D^E"]@*,YQJ4YDRWK>42NRO13J10SZKIH117,T M<SH/EN=T'"S#Z9+>MN!TOH\\I^MWNW0PHXO;/[2K-+2QN&+_@I#.RVA`RLKI MM*P))Y_F`P9"XBR!KZ0;9-T``HZZ%B.K)^9@LV#)70PQ6JY2?AW<U-\B,ZX. MC687#_*EC&0XJ/TF3]&4EM)$T!XJ2\\<2B?GI"^!FD=Y:O9=Y(EY0!:N@63A MPBZ^'*E=FC<6K9>B+-QPR12BR"(;D;>4V/X1-Q+8]7`;Y'602LP%]V!,5#(> MB5L5))-F05L_P6:[D/1NY7(ZF_<F36NIE$;@NPIIZJ101M?`=Q71:R_JEEF6 MQN"R3"V$T]F:T)_`V([RC(UU$L69#T=!)5RLQ+;GZ['M6`,0')T";]9(;7A7 M1FCW1X?=WN%X5'7[!_W1P>`1BG$FU7O]P^X1`HP/AN:_+N:GB('IE29QI=!T M#;B*N\Z4DZ;ESA$LP6DU]N!-"&7V<O1R>SYMEG\.*$LI#$@GD[BGS1UFK@=! M]ATSCS#N6!_5QSN2#WVG0"HQZ&+Y5!!_$S&OLMBXD(F5XLC"B;"WE$[U`U*< MERIF*.QF>3W_".[AZYBULD?(=Y18SK$PQWBL6,YMO[+MG!J+]XL$7BZ'\D%" MXAR62B(;%'9'461[*91%#'IS8?3!]#*_./RP^GR9GNH4-D;,)&GDUG,9LR0^ M/\0,F,;8:,N^TA(YV<%H._392SY#G[KZUWSQ?A;5C[,*^:?I4FPX@Z@%:-F+ M6U`^8;9_LEJ1.TW7MQ.J-`%^U=4<'/0?WLZ(BL$FZ?S8O2'&+_:&_0X=4[KS MIF7("_A:NX/?*+[(?H$H(O-QSWR$T,WYY?+F\P2+/]&/D\F[&H+LPA:3?[[@ 07\Q^;N$A_P\(J6?\.;0``/-Q ` end
|  |