Attached is a module that I used to do just that. (You may need to filter
thru the fluff, but the meat is certainly there). See the routine called
“find_session()”.
In my case, I have a program that talks to many PLCs. Each PLC uses a
separate connection or “session”. Like you, I found that if I try to
connect to a down PLC, it takes around 70 secods to actually get a timeout
from connect(). Using “alarm()” doesn’t stop the connect process either.
What I need to do is initiate a connection request and then come back and
periodically check if the socket becomes connected. If so, use it. If it
finally times out, know that.
So, I found that the following works:
- call socket()
- set the socket options to non-blocking.
- call connect()
Connect will either return with success, or failure. If it fails, certain
erros (like EINPROGRESS) mean that it’s trying, so don’t give up yet.
Then you can do other things, process other I/O, even do select() until the
specific socket shows ready to write.
If it shows ready to write, do
getsockopt (sock, SOL_SOCKET, SO_ERROR, &optval, &optlen);
if (optval == ETIMEDOUT)
{
/* socket finally timed out /
}
else
{
/ socket is connected and ready */
}
Good Luck!
Jeff.
“Hakim” <ddrv2002@yahoo.ca> wrote in message
news:dfnmbp$6li$1@inn.qnx.com…
Hello,
Is there any way to set a timeout for ‘connect’ routine for TCP. I tried
on
receive timeout and that did not not work.
Or
If I set the socket non-blocking then how will I be able to find that
‘connect’ succeeds or times out by using select? I tried to set FD_SET on
read\write and I don’t get consistent result from select. What is the
usual
way to do this?
Thanks,
Hakim
begin 666 modtcp_comm.c
M+RHJBHJBHJBHJBHJBHJBHJBHJBHJBHJBHJBHJBHJBHJBHJ
MBHJBHJBHJBHJBHJBHJBHJBHJBHJBHJBHJ"@H);6]D=&-P7V-O
M;6TN8R M(&-O;6T@<W5B<F]U=&EN97,@=&@=&%L:R!M;V1B=7,@;W9E<B!T
M8W O:7 N"@H)2&ES=&]R>3H"0DQ,B\Q-B\P,@EJ<V$)“4-R96%T960N”@D)
M,3(O,C8O,#():G-A"0EC;VYV97)T960@=&@<W5B<F]U=&EN92!O9B!M;V1T
M8W!?<&]L;“X*“0DP,B\R-R\P-0EJ<V$)“4UU8V@@8F5T=&5R(&AA;F1L:6YG
M(&]F(&-O;FYE8W0@<F5Q=65S=’,@=&@9&]W;B "0D)“0D)“5!,0W,N(”!!
M;’-O(&-H96-K<R!F;W(@=6YU<V5D(’-E<W-I;VYS(&%N9” "0D)"0D)"61I
M<V-O;FYE8W1S(&9R;VT@=&AE;2X"BHJBHJBHJBHJBHJBHJBHJBHJ
MBHJBHJBHJBHJBHJBHJBHJBHJBHJBHJBHJBHJBHJBHJBHJ
MBHJBHJBHJ+PH*(VEN8VQU9&4@/’-Y<V1E9BYH/@HC:6YC;'5D92 <WES
M+W-O8VME=“YH/@HC:6YC;'5D92 ;F5T:6YE=”]I;BYH/@HC:6YC;'5D92
M;F5T:6YE=”]T8W N:#X*(VEN8VQU9&4@/&YE=&1B+F@^“B-I;F-L=61E(#QS
M>7,O=6EO+F@^“B-I;F-L=61E(#QS>7,O=&EM92YH/@HC:6YC;'5D92 B+BXO
M;6]D:6-O;B]M;V1I8V]N7V1E9G,N:”("B-D969I;F4@1D1?4T544TE:12 Q
M,C@)+RH@;6%X:6UU;2!N=6UB97(@;V8@9F1S(&%V86EL86)L92!F;W(@<V5L
M96-T"D@B*(VEN8VQU9&4@/’-Y<R]S96QE8W0N:#X(VEN8VQU9&4@/&EO
M8W1L+F@^“B-I;F-L=61E(#QE<G)N;RYH/@H*(V1E9FEN92!(3U-43D%-15]3
M25I%(#0P”@IS=’)U8W0@;6]D=&-P7W-E<W-I;VX*“7L*“6-H87():&]S=&YA
M;64@6TA/4U1.04U%7U-)6D5=.PH):6YT"0ES;V-K.PH)9F1?<V5T"7=R:71E
M7V9D<SL*“49,04<)<V]C:U]C;VYN96-T960[”@ET:6UE7W0)8V]N;F5C=%]T
M:6UE.PH)=&EM95]T"6QA<W1?;65S<V%G95]T:6UE.PH)=6EN=#$V"71N>%]I
M9#L)“2\J(‘1H92!L87-T(‘5S960@=’)A;G-A8W1I;VX@240[(&EN8W)E;65N
M=&5D(&5A8V@@=&YX(“HO”@EI;G0)"65R<F]R7V-O=6YT.PH)<W1R=6-T(&UO
M9’1C<%]S97-S:6]N("IN97AT.PH)?3L*“F5X=&5R;B!I;G0);6]D=&-P7W!O
M<G0[“2\J('1H92!P;W)T(”,@9F]R(&UO9&)U<R!T<F%N<V%C=&EO;G,@B*
M"G-T<G5C="!M;V1T8W!?<V5S<VEO;@DJ9FER<W1?<V5S<VEO;CU.54Q,+" J
M9G)E95]S97-S:6]N/4Y53$PL("IP<V5S<VEO;CL”@IV;VED(’-T;W)E7V9R
M965?<V5S<VEO;B H0H)>PH):68@’!S97-S:6]N+3YS;V-K(”$](“TQ0H)
M"7L"0ES:‘5T9&]W;B H<’-E<W-I;VXM/G-O8VLL(#(I.PH)“6-L;W-E(“AP
M<V5S<VEO;BT^<V]C:RD[”@D)?0H)<’-E<W-I;VXM/G-O8VL@/2 M,3L*“7!S
M97-S:6]N+3YN97AT(#T@9G)E95]S97-S:6]N.PH)9G)E95]S97-S:6]N(#T@
M<’-E<W-I;VX[”@E](” OB!S=&]R95]F<F5E7W-E<W-I;VX@B*"@IV;VED
M(&-L;W-E7V-U<G)E;G1?<V5S<VEO;B H0H)>PH)<W1R=6-T(&UO9’1C<%]S
M97-S:6]N("IP<RP@G!R979I;W5S7W!S.PH"7!R979I;W5S7W!S(#T@3E5,
M3#L"7!S(#T@9FER<W1?<V5S<VEO;CL*”@EW:&EL92 H<’,@(3T@3E5,3"D*
M"0E"@D):68@*’!S(#T"0E[”@D)“6EF(“AP<F5V:6]U
M<U]P<R ]/2!.54Q,0H)“0D)9FER<W1?<V5S<VEO;B ](’!S+3YN97AT.PH)
M"0EE;’-E”@D)“0EP<F5V:6]U<U]P<RT^;F5X=” ](’!S+3YN97AT.PH)"0ES
M=&]R95]F<F5E7W-E<W-I;VX@“D[”@D)“7)E=‘5R;CL*"0D)?0H)"7!R979I
M;W5S7W!S(#T@<’,[”@D)<’,@/2!P<RT^;F5X=#L*“0E]”@EM<V<@")M;V1T
M8W!?8V]M;3H@0V]U;&0@;F]T(&-L;W-E(&-U<G)E;G0@<V5S<VEO;B!<(B5S
M7"(N7&XB+"!P<V5S<VEO;BT^:&]S=&YA;64I.PH)?2 @+RH@8VQO<V5?8W5R
M<F5N=%]S97-S:6]N(“HO”@H=F]I9”!C:&5C:U]F;W)?=6YU<V5D7VUO9’1C
M<%]S97-S:6]N<R H0H)>PH)=&EM95]T"6UY7W1I;64["@ES=’)U8W0@;6]D
M=&-P7W-E<W-I;VX@FYE>'1?<V5S<VEO;CL"@ET:6UE("@F;7E?=&EM92D[
M"@EP<V5S<VEO;B ](&9I<G-T7W-E<W-I;VX["@EW:&EL92 H<’-E<W-I;VX@
M(3T@3E5,3"D"0E[”@D);F5X=%]S97-S:6]N(#T@<’-E<W-I;VXM/FYE>‘0[
M"2\J(&IU<W0@:6X@8V%S92!W92!C;&]S92!T:&ES(’-E<W-I;VX@B*“0EI
M9B H<’-E<W-I;VXM/FQA<W1?;65S<V%G95]T:6UE(#P@;7E?=&EM92 M(#<R
M,# I(”\J(&YO="!U<V5D(&EN(#(@:&]U<G,@B*“0D)8VQO<V5?8W5R<F5N
M=%]S97-S:6]N(”@I.PH)"7!S97-S:6]N(#T@;F5X=%]S97-S:6]N.PH)"7T
M"7T@("\J(&-H96-K7V9O<E]U;G5S961?;6]D=&-P7W-E<W-I;VYS(“HO”@H
M=F]I9”!S971?<V]C:V5T7V]P=&EO;G,@&EN="!S;V-K0H)>PH):6YT"6]P
M='9A;” ](#$[”@ES=’)U8W0@=&EM979A;”!T.PH*“6EF(“AS971S;V-K;W!T
M(“AS;V-K+”!G971P<F]T;V)Y;F%M92 H(E1#4”(I+3YP7W!R;W1O+”!40U!?
M3D]$14Q!62P@"@D)“29O<‘1V86PL(’-I>F5O9B H;W!T=F%L2D@/" P0H)
M"6US9R H(FUO9’1C<#H@1F%I;&5D(‘1O(’-E=”!O<‘1I;VX@5$-07TY/1$5,
M05DN7&XB3L"B\J"@EI9B H<V5T<V]C:V]P=" H<V]C:RP@4T],7U-/0TM%
M5"P@4T]?4D554T5!1$12+" "0D))F]P='9A;"P@<VEZ96]F("AO<'1V86PI
M2 (# I"@D);7-G("@B;6]D=&-P.B!&86EL960@=&@<V5T(&]P=&EO;B!3
M3U]2155314%$1%(N7&XB3L**B*"@EI9B H<V5T<V]C:V]P=" H<V]C:RP@
M4T],7U-/0TM%5"P@4T]?2T5%4$%,259%+" "0D))F]P='9A;"P@<VEZ96]F
M("AO<'1V86PI2 (# I"@D);7-G("@B;6]D=&-P.B!&86EL960@=&@<V5T
M(&]P=&EO;B!33U]+145004Q)5D4N7&XB3L*"@ET+G1V7W-E8R ](#(["@ET
M+G1V7W5S96,@/2 P.PH*"6EF(“AS971S;V-K;W!T(“AS;V-K+”!33TQ?4T]#
M2T54+”!33U]33D1424U%3RP@)G0L(’-I>F5O9B H=“DI(#P@,“D*“0EM<V<@
M*”)M;V1T8W Z($9A:6QE9”!T;R!S970@;W!T:6]N(%-/7U-.1%1)345/+EQN
M(BD[”@H):68@’-E=’-O8VMO<'0@’-O8VLL(%-/3%]33T-+150L(%-/7U)#
M5E1)345/+" F=“P@<VEZ96]F(“AT2D@/" P0H)“6US9R H(FUO9’1C<#H@
M1F%I;&5D(‘1O(’-E=”!O<'1I;VX@4T]?4D-65$E-14\N7&XB3L"7T@(”\J
M(’-E=%]S;V-K7V]P=&EO;G,@B*"@IV;VED(’-E=%]S;V-K971?;F]N8FQO
M8VMI;F<@$9,04<@;F]N8FQO8VMI;F<I”@E["@EI9B H:6]C=&P@’!S97-S
M:6]N+3YS;V-K+"!&24].0DE/+" F;F]N8FQO8VMI;F<I(#P@,"D"0EM<V<@
M*")M;V1T8W Z($9A:6QE9"!T;R!S970@<V]C:V5T(‘1O(“5S8FQO8VMI;F=<
M;B(L( H)“0D);F]N8FQO8VMI;F<@/R B;F]N+2(@.B B(BD[”@E](” OB!S
M971?<V]C:V5T7VYO;F)L;V-K:6YG(“HO”@H1DQ!1R!F:6YD7W-E<W-I;VX@
M*&-H87(@FAO<W1N86UE+"!&3$%’(&-R96%T95]N97<I"@E["@ES=’)U8W0@
M<V]C:V%D9’)?:6X@<V5R=F5R.PH)<W1R=6-T(&AO<W1E;G0@FAP.PH"6EF
M("AS=’)L96X@&AO<W1N86UE2 ^/2!(3U-43D%-15]325I%0D)+RH@:&]S
M=&YA;64@;75S="!B92!T97)M:6YA=&5D(“HO”@D)<F5T=7)N($9!3%-%.PH)
M:68@’-T<FQE;B H:&]S=&YA;64I(#T](# I"@D)<F5T=7)N($9!3%-%.PH
M"7!S97-S:6]N(#T@9FER<W1?<V5S<VEO;CL*“7=H:6QE(”@H<’-E<W-I;VX@
M(3T@3E5,3"D@)B8@’-T<F-M<" H:&]S=&YA;64L(’!S97-S:6]N+3YH;W-T
M;F%M92D@(3T@,"D@0H)“7!S97-S:6]N(#T@<’-E<W-I;VXM/FYE>'0[”@EI
M9B H<’-E<W-I;VX@(3T@3E5,3"D"0ER971U<FX@%12544I.PH):68@"%C
M<F5A=&5?;F5W0H)“7)E=‘5R;B H1D%,4T4I.PH*"2\J($9I;F0@;W(@9V5T
M(&$@9G)E92!S97-S:6]N(’-T<G5C='5R92!T;R!U<V4@9F]R(‘1H:7,@;F5W
M(’-E<W-I;VX@B*"6EF("AF<F5E7W-E<W-I;VX@/3T@3E5,3"D"0E[”@D)
M:68@" H<’-E<W-I;VX@/2!M86QL;V,@’-I>F5O9B H<W1R=6-T(&UO9’1C
M<%]S97-S:6]N2DI(#T]($Y53$PI"@D)"7L"0D);7-G("@B;6]D=&-P.B!U
M;F%B;&4@=&@86QL;V-A=&4@<W1R=6-T=7)E(&UO9’1C<%]S97-S:6]N+EQN
M(BD["@D)“7)E=‘5R;B H1D%,4T4I.PH)“0E]”@D)?0H)96QS90H)"7L*"0EP
M<V5S<VEO;B ](&9R965?<V5S<VEO;CL*"0EF<F5E7W-E<W-I;VX@/2!P<V5S
M<VEO;BT^;F5X=#L*“0E]”@H);65M<V5T("AP<V5S<VEO;BP@,"P@<VEZ96]F
M("AS=’)U8W0@;6]D=&-P7W-E<W-I;VXI3L"7-T2 H<’-E<W-I;VXM
M/FAO<W1N86UE+”!H;W-T;F%M92D[“0H)<’-E<W-I;VXM/G-O8VL@/2 M,3L*
M"71I;64@"9P<V5S<VEO;BT^;&%S=%]M97-S86=E7W1I;64I.PDOB!$;VXG
M=”!D:7-C87)D(’-E<W-I;VX@FEG:'0@87=A2 J+PH)<’-E<W-I;VXM/FYE
M>‘0@/2!.54Q,.PH*"2\J($QI;FL@=&AE(’-E<W-I;VX@<F5C;W)D(&EN=&@
M=&AE(’-E<W-I;VYS(&QI<W0@B*"7!S97-S:6]N+3YN97AT(#T@9FER<W1?
M<V5S<VEO;CL"69I<G-T7W-E<W-I;VX@/2!P<V5S<VEO;CL*"@DOB!.;W<@
M8W)E871E('1H92!S;V-K970@=&@=&AE(&UO9&)U<R!S97)V97(@B*“6EF
M(”@H<’-E<W-I;VXM/G-O8VL@/2!S;V-K970@$%&7TE.150L(%-/0TM?4U12
M14%-+" P2D@/" P0H)"7L"0EM<V<@")M;V1T8W Z($5R<F]R(&-R96%T
M:6YG(&YE=R!S97-S:6]N(’-O8VME="Y<;B(I.PH)"6-L;W-E7V-U<G)E;G1?
M<V5S<VEO;B H3L*“0ER971U<FX@$9!3%-%3L"0E]"@H)+RH@;6]D:69Y
M(&-E<G1A:6X@<V]C:V5T(&]P=&EO;G,@9F]R(‘1C<"]M;V1B=7,@B*“7-E
M=%]S;V-K971?;W!T:6]N<R H<’-E<W-I;VXM/G-O8VLI.PH)<V5T7W-O8VME
M=%]N;VYB;&]C:VEN9R H5%)512D[“2\J(’-E=”!T;R!N;VXM8FQO8VMI;F<@
M9F]R(&-O;FYE8W0@B*“49$7U-%5” @’!S97-S:6]N+3YS;V-K+” F<’-E
M<W-I;VXM/G=R:71E7V9D<RD[“2\J(’-E=”!U<"!F;W(@<V5L96-T"D@B*
M"7!S97-S:6]N+3YS;V-K7V-O;FYE8W1E9" ]($9!3%-%.PH"2\J($EN:71I
M871E(&$@8V]N;F5C=&EO;B!T;R!T:&4@4$Q#(“HO”@ET:6UE("@F<’-E<W-I
M;VXM/F-O;FYE8W1?=&EM92D["@H)+RH@;&]O:RUU<"!R97%U97-T960@:&]S
M=&YA;64@B*"7-E<G9E<BYS:6Y?9F%M:6QY(#T@049?24Y%5#L"6EF("@@
M&AP(#T@9V5T:&]S=&)Y;F%M92 H:&]S=&YA;64I2 ]/2 P0H)“7L*“0EI
M9B H5D520D]312D*“0D);7-G(”@B;6]D=&-P.B!5;FMN;W=N(&AO<W1N86UE
M(%PB)7-<(EQN(BP@:&]S=&YA;64I.PH)“7)E=‘5R;B H1D%,4T4I.PH)"7T*
M"6UE;6-P>2 H)G-E<G9E<BYS:6Y?861D<BP@:’ M/FA?861D<BP@:’ M/FA?
M;&5N9W1H3L"7-E<G9E<BYS:6Y?<&]R=” ](&AT;VYS(“AM;V1T8W!?<&]R
M=“D[”@H):68@%9%4D)/4T4I"@D);7-G("@B;6]D=&-P.B!/<&5N:6YG(&$@
M;F5W(&-O;FYE8W1I;VX@=&@:&]S="!<(B5S7")<;B(L(&AO<W1N86UE3L*
M”@EI9B H8V]N;F5C=” H<’-E<W-I;VXM/G-O8VLL(“AS=’)U8W0@<V]C:V%D
M9’(@BD@)G-E<G9E<BP@<VEZ96]F("AS97)V97(I2 A/2 M,2D*“0ER971U
M<FX@5%)513L)+RH@<’)E;&EM:6YA<GD@<W5C8V5S<R J+PH*“2\J(&-H96-K
M(&9O<B B86-C97!T86)L92(@97)R;W)S+B J+PH)<W=I=&-H(“AE<G)N;RD*
M"0E[”@D)8V%S92!%04Q214%$63H)“2\J($$@<’)E=FEO=7,@8V]N;F5C=&EO
M;B!A='1E;7!T(&AA<VXG=”!C;VUP;&5T960@B*"0EC87-E($5)3E!23T=2
M15-3.@DOB!4:&4@8V]N;F5C=&EO;B!C86XG=”!B92!C;VUP;&5T960@:6UM
M961I871E;‘D@B*"0EC87-E($5)4T-/3DXZ"0DOB!!;’)E861Y(&-O;FYE
M8W1E9” J+PH)“0ER971U<FX@5%)513L*“0E]”@H)+RH@(G5N86-C97!T86)L
M92!E<G)O<G,Z(“HO”@EI9B H5D520D]312D*“0EM<V<@")M;V1T8W Z($5R
M<F]R("5D(&-O;FYE8W1I;F<@=&@<V5R=F5R(%PB)7,Z)61<(BY<;B(L( H)
M"0D)"0EE<G)N;RP@:&]S=&YA;64L(&UO9’1C<%]P;W)T3L*“6-L;W-E7V-U
M<G)E;G1?<V5S<VEO;B H3L"7)E='5R;B!&04Q313L*“7T@(”\J(&9I;F1?
M<V5S<VEO;B J+PH*“D9,04<@<V]C:V5T7W)E861Y7V9O<E]W<FET92 H:6YT
M('1I;65O=70I”@E[”@ES=’)U8W0@=&EM979A;”!T=CL*”@ET=BYT=E]S96,@
M/2!T:6UE;W5T.PH)='8N='9?=7-E8R ](# [”@ER971U<FX@’-E;&5C=" H
M,2LH<’-E<W-I;VXM/G-O8VLI+"!.54Q,+" F<’-E<W-I;VXM/G=R:71E7V9D
M<RP@3E5,3"P@)G1V2 ^(# I.PH)?2 @+RH@<V]C:V5T7W)E861Y7V9O<E]W
M<FET92 J+PH*“D9,04<@=F5R:69Y7W-O8VM?8V]N;F5C=&EO;B H0H)>PH)
M=&EM95]T"6UY7W1I;64["@H)+RH@8VAE8VL@=&@<V5E(&EF(‘1H92!C;VYN
M96-T:6]N(&ES(’)E861Y(“HO”@EI9B H<V]C:V5T7W)E861Y7V9O<E]W<FET
M92 H,2DI"2\J(&%L;&]W(‘5P(‘1O(#$@<V5C;VYD(&9O<B!S;V-K970@=&@
M8F4@<F5A9’D@B*“0E[”@D)+RH@4V]C:V5T(&ES(’)E861Y(“HO”@D):68@
M"%P<V5S<VEO;BT^<V]C:U]C;VYN96-T960I"2\J(’-O8VME="!W87-N)W0@
M<’)E=FEO=7-L>2!C;VYN96-T960@B*"0D)>PH)"0EI;G0)"6]P='9A;#L
M"0D)<VEZ95]T"6]P=&QE;CL”@D)“6]P=&QE;B ](’-I>F5O9B H;W!T=F%L
M3L"0D)9V5T<V]C:V]P=” H<’-E<W-I;VXM/G-O8VLL(%-/3%]33T-+150L
M(%-/7T524D]2+” F;W!T=F%L+” F;W!T;&5N3L"@D)“6EF(“AO<'1V86P@
M/3T@151)345$3U540H)"0D)>PH)"0D):68@%9%4D)/4T4I”@D)“0D);7-G
M(”@B;6]D=&-P.B!#;VYN96-T:6]N(‘1O(’-E<G9E<B!<(B5S.B5D7”(@=&EM
M960@;W5T+EQN(BP@"@D)“0D)“0EP<V5S<VEO;BT^:&]S=&YA;64L(&UO9’1C
M<%]P;W)T3L"0D)“6-L;W-E7V-U<G)E;G1?<V5S<VEO;B H3L"0D)“7)E
M=‘5R;B!&04Q313L*“0D)“7T*“0D)<V5T7W-O8VME=%]N;VYB;&]C:VEN9R H
M1D%,4T4I.R OB!S;V-K970@;F]W(&)L;V-K:6YG(&9O<B!R96%D+W=R:71E
M(“HO”@D)“7!S97-S:6]N+3YS;V-K7V-O;FYE8W1E9” ](%12544["@D)"7T
M"0ER971U<FX@5%)513L*“0E]”@H)+RH@4V]C:V5T(&ES($Y/5”!R96%D>2 J
M+PH):68@’!S97-S:6]N+3YS;V-K7V-O;FYE8W1E9"D"0DOB!S;V-K970@
M=V%S(’!R979I;W5S;'D@8V]N;F5C=&5D(“HO”@D)>PH)"6EF("A615)"3U-%
M0H)“0EM<V<@")3;V-K970@=&@)7,@;F@;&]N9V5R(’)E861Y(&9O<B!W
M<FET93L@9&ES8V]N;F5C=&EN9UQN(BP@"@D)"0EP<V5S<VEO;BT^:&]S=&YA
M;64I.PH)"6-L;W-E7V-U<G)E;G1?<V5S<VEO;B H3L*“0ER971U<FX@$9!
M3%-%3L"0E]"@H)+RH@4V]C:V5T(&AA<VXG="!C;VYN96-T960@>65T+B @
M5V%I="!U<"!T;R Y,"!S96-O;F1S('1O(&-O;7!L971E(&-O;FYE8W1I;VXN
M"@D)44Y8(%1#4"])4"!S965M<R!T;R!A;&QO=R!U<"!T;R W,"!S96-O;F1S
M(“AV-2XP+” P,B\R,# U2!B969O<F4@”@D)=&EM:6YG(&]U=“P@<V@9VEV
M92!I=”!A=”!L96%S=”!T:&%T(&QO;F<N”@DJ+PH)=&EM92 H)FUY7W1I;64I
M.PH):68@&UY7W1I;64@/B!P<V5S<VEO;BT^8V]N;F5C=%]T:6UE(“L@.3 I
M”@D)>PH)“6EF(“A615)“3U-%0H)"0EM<V<@”)M;V1T8W Z($9A:6QE9”!T
M;R!C;VYN96-T(‘1O(’-E<G9E<B!<(B5S.B5D7”(N7&XB+" “0D)“0D)<’-E
M<W-I;VXM/FAO<W1N86UE+”!M;V1T8W!?<&]R=“D[”@D)8VQO<V5?8W5R<F5N
M=%]S97-S:6]N(”@I.PH)"7)E='5R;B H1D%,4T4I.PH)"7T"@EI9B H5D52
M0D]312D"0EI9B H;7E?=&EM92 ^(’!S97-S:6]N+3YL87-T7VUE<W-A9V5?
M=&EM92 K(#4I”@D)“7L*“0D);7-G(”@B;6]D=&-P.B!786ET:6YG(&9O<B!C
M;VYN96-T:6]N(‘1O(’-E<G9E<B!<(B5S.B5D7”(N7&XB+” "0D)“0D)<’-E
M<W-I;VXM/FAO<W1N86UE+”!M;V1T8W!?<&]R=“D[”@D)“7!S97-S:6]N+3YL
M87-T7VUE<W-A9V5?=&EM92 ](&UY7W1I;64[”@D)"7T"7)E=‘5R;B H1D%,
M4T4I.PH)?2 @+RH@=F5R:69Y7W-O8VM?8V]N;F5C=&EO;B J+PH*"D9,04<@
M=’)A;G-A8W1?;6]D=&-P7VUE<W-A9V4@&-H87(@FAO<W1N86UE+" "0D)
M"0D)“0E"651%(“IT>%]M97-S86=E+”!I;G0@='A?8V]U;G0L”@D)"0D)"0D)
M0EE412 J<GA?;65S<V%G92P@:6YT("IR>%]C;W5N="D"7L"7-T<G5C=" *
M"0E["@D)=6EN=#$V"71N>%]I9#L)"0DOB!T:&ES(&ES(&QI='1L92!E;F1I
M86X@9F]R;6%T.R!P<F]T;V-O;”!S:&]U;&1N)W0@8V%R92 J+PH)“75I;G0Q
M-@EP<F]T;V-O;%]I9#L)+RH@9&ET=&[(&)U=”!V86QU92!I<R!Z97)O+”!S
M;R!W:&@8V%R97,A(“HO”@D)0EE410EL96YG=&A?:&EG:“P@;&5N9W1H7VQO
M=SL*“0E](&UO9’1C<%]H96%D97([”@ES=’)U8W0@:6]V96,@<&%R=’,@6S)=
M.PH):6YT(&EO7V)Y=&5S.PH*“6EF(”@A9FEN9%]S97-S:6]N(“AH;W-T;F%M
M92P@5%)512DI”@D)>PH)“6EF(“A615)“3U-%0H)"0EM<V<@”)M;V1T8W Z
M(%5N86)L92!T;R!F:6YD+V-R96%T92!S;V-K970@=&@:&]S=”!<(B5S7”(N
M7&XB+”!H;W-T;F%M92D["@D)<F5T=7)N($9!3%-%.PH)“7T*”@EI9B H(79E
M5]S;V-K7V-O;FYE8W1I;VX@“DI”@D)>PH)"6EF("A615)“3U-%0H)
M"0EM<V<@”).;W0@8V]N;F5C=&5D.R B3L*“0ER971U<FX@$9!3%-%3L
M"0E]"@H)+RH@26YI=&EA=&4@82!T<F%N<V%C=&EO;B!T;R!T:&4@<F5Q=65S
M=&5D(&AO<W0@B*"6UO9’1C<%]H96%D97(N=&YX7VED(#T@RMP<V5S<VEO
M;BT^=&YX7VED.PH);6]D=&-P7VAE861E<BYP<F]T;V-O;%]I9" ](# [("\J
M($U/1$)54R!P<F]T;V-O;" J+PH);6]D=&-P7VAE861E<BYL96YG=&A?:&EG
M:" ](# ["@EM;V1T8W!?:&5A9&5R+FQE;F=T:%]L;W<@(#T@=‘A?8V]U;G0[
M"@H)<&%R=’,@6S!=+FEO=E]B87-E(#T@&-A9&1R7W0I("9M;V1T8W!?:&5A
M9&5R.PH)<&%R=’,@6S!=+FEO=E]L96X@(#T@<VEZ96]F("AM;V1T8W!?:&5A
M9&5R3L"7!A<G1S(%LQ72YI;W9?8F%S92 ]('1X7VUE<W-A9V4[”@EP87)T
M<R!;,5TN:6]V7VQE;B @/2!T>%]C;W5N=#L*"@EI;U]B>71E<R ](# ["@EE
M<G)N;R ](# ["@EI;U]B>71E<R ](’=R:71E=B H<’-E<W-I;VXM/G-O8VLL
M(’!A<G1S+" R3L"6EF(“AI;U]B>71E<R A/2 H='A?8V]U;G0@R!S:7IE
M;V8@&UO9’1C<%]H96%D97(I2D"0E[”@D):68@%9%4D)/4T4I"@D)“6US
M9R H(FUO9’1C<#H@17)R;W(@=W)I=&EN9R!D871A('1O(&AO<W0@7”(E<UPB
M+EQN(BP@:&]S=&YA;64I.PH)“6EF(”@KW!S97-S:6]N+3YE<G)O<E]C;W5N
M=" ^(#4I"@D)“6-L;W-E7V-U<G)E;G1?<V5S<VEO;B H3L"0ER971U<FX@
M1D%,4T4"@D)?0H*"7!A<G1S(%LQ72YI;W9?8F%S92 X7VUE<W-A9V4[
M”@EP87)T<R!;,5TN:6]V7VQE;B @/2 R-38["@EF;W(@#L[0H)"7L"0EI
M;U]B>71E<R ](# ["@D):6]?8GET97,@/2!R96%D=B H<’-E<W-I;VXM/G-O
M8VLL(’!A<G1S+" R3L*"0EI9B H:6]?8GET97,@/#T@,"D*"0D)>PH)"0EI
M9B HRMP<V5S<VEO;BT^97)R;W)?8V]U;G0@/B Q,"D"0D)"6-L;W-E7V-U
M<G)E;G1?<V5S<VEO;B H3L"0D)<F5T=7)N(“A&04Q312D[”@D)"7T*“0EI
M9B H;6]D=&-P7VAE861E<BYT;GA?:60@(3T@<’-E<W-I;VXM/G1N>%]I9"D*
M"0D)8V]N=&EN=64[”@D):68@&EO7V)Y=&5S("$]("AM;V1T8W!?:&5A9&5R
M+FQE;F=T:%]L;W<@R!S:7IE;V8@&UO9’1C<%]H96%D97(I2D*“0D)8V]N
M=&EN=64[”@D)G)X7V-O=6YT(#T@;6]D=&-P7VAE861E<BYL96YG=&A?;&]W
M.PH"0EP<V5S<VEO;BT^97)R;W)?8V]U;G0@/2 P.PH)"71I;64@*“9P<V5S
M<VEO;BT^;&%S=%]M97-S86=E7W1I;64I.PH)“7)E='5R;B H5%)512D[”@D)
E?0H)?2 @+RH@=’)A;G-A8W1?;6]D=&-P7VUE<W-A9V4@*B*”@``
`
end