Copying directly to /dev/shmem on the target via Qnet protoc

bridged with qnx.rtos
Jacek Rudnicki

Re: Re: Re: Copying directly to /dev/shmem on the target via

Post by Jacek Rudnicki » Fri Jul 06, 2007 1:05 pm

Hi Andrew,

I'm ready for an "experimental" driver testing.

One more observation. I can copy data from workstation
to flash file system on the target (i.e. mounted as /flash):
# cp /tmp/file1 /net/viper/flash

without any problem. Probably ram disk created by the
devb-ram will work as well. I will check this very soon.

Maybe there is something wrong with (/dev/shmem) ?
All what I know is that this device acts as some kind
of resource manager implemented in procnto.

Maybe /dev/shmem should has implemented some buffering
mechanizm too ?

Maybe smc9000 driver works fine (I mean sends data quite fast)
but /dev/shmem doesn't response in right moment (timing issue)
and that is a reason why target receives only first 16kB.
I don't know.

I'm trying to reproduce this problem on the another target.
This time it is also armle board but running devn-crys8900
driver (10 MB).

So, on my workstation I do:

# cp -V /bin/gzip /net/triton.net.intra/dev/shmem
cp: Copying /bin/gzip to /net/triton.net.intra/dev/shmem/gzip
cp: write (/net/triton.net.intra/dev/shmem//gzip): Host is down
32.00% (16/50 kbytes, 0 kb/s)
cp: close (/net/triton.net.intra/dev/shmem//gzip): Bad file descriptor

Meantime on the target I get the following error message:
"Crash[0,0] at kerext_process line 253."
and system immediately reboots.

Where this error message come from ?

Jacek

Uzytkownik "Andrew_Boyd" <aboyd@qnx-dot-com.no-spam.invalid> napisal w
wiadomosci news:f6gmir$783$1@inn.qnx.com...
I think the difference might be how hard the packets are hammered at
the receiving nic (smc9000). I don't think it deals with bursts very
well.

Update: I am getting old. I had forgotten that last year I had
re-written
the SMC9000 driver to split the receive up into two threads to deal
with
this problem of lost packets.

Normally the io-net driver rx thread runs at pri 21 (quite high) and
is woken
up by the hardware interrupt from the nic, whereupon it drains the rxd
packets
and passes them up to the protocol. This works fine with nics who
have dma
rings and tolerate servicing latency.

But what I did for the smc9000, which is crippled by limited hardware
buffers,
is to create two rx threads in the driver: one running at pri 22,
which is woken
up by the hardware interrupt, drains the rxd packets, and puts them on
a queue.
The other rx thread runs at pri 21 and pulls the rxd packets off the
queue and
blocks, passing the packets up to the protocols. My thinking at the
time was
that the pri 22 thread should pre-empt the pri 21 thread, which is
processing
rxd packets in the protocols, and should have less latency wrt
draining the
rxd packets.

However, in the meantime there was a re-org here (this driver isn't
mine
any more) testing resources were scarce, and this new driver
languished
on the head branch. On the sly, I have a guy here testing my new
driver,
and if it works for him, I will attempt to get you an
"experimental" driver
which I hope will not result in a horde of little men in white lab
coats
beating me about the head with clipboards labelled iso900x :-)

My apologies about this. I will do my best to fix this.

Andrew_Boyd

RE: Re: Re: Re: Copying directly to /dev/shmem on the target

Post by Andrew_Boyd » Fri Jul 06, 2007 5:49 pm

Hiya Jacus. /dev/shmem, /dev/null and /dev/zero are all strange
beasties. I would tend to avoid them. Please start devb-ram on
the target and try copying to it. If that works, I would just use
it instead of /dev/shmem.

P.S. I have done some rudimentary testing on the head branch
split-priority dual-receive thread smc9000 driver on armle, and
it worked very well - at 10mbits, I was able to ttcp to the board
at a sustained 900 Kbytes/sec with the default ttcp args, so it did
not lose any packets. But let's try devb-ram first.

P.P.S. The crys8900 is another museum gem that is similarly
crippled by small hardware receive packet buffers. It has
received a similar re-write (not by me) which never saw
the light of released day.

P.P.P.S I think you managed to crash the kernel. Not sure how,
maybe Colin has some ideas?

Colin Burgess

Re: Copying directly to /dev/shmem on the target

Post by Colin Burgess » Fri Jul 06, 2007 8:16 pm

Well it appears that the process' channels and connections vector has not successfully cleaned up during process termination, but why?
We'll have to look into it...

We have reproduced this inhouse, with an ARM target.

Andrew_Boyd wrote:
Hiya Jacus. /dev/shmem, /dev/null and /dev/zero are all strange
beasties. I would tend to avoid them. Please start devb-ram on
the target and try copying to it. If that works, I would just use
it instead of /dev/shmem.

P.S. I have done some rudimentary testing on the head branch
split-priority dual-receive thread smc9000 driver on armle, and
it worked very well - at 10mbits, I was able to ttcp to the board
at a sustained 900 Kbytes/sec with the default ttcp args, so it did
not lose any packets. But let's try devb-ram first.

P.P.S. The crys8900 is another museum gem that is similarly
crippled by small hardware receive packet buffers. It has
received a similar re-write (not by me) which never saw
the light of released day.

P.P.P.S I think you managed to crash the kernel. Not sure how,
maybe Colin has some ideas?
--
cburgess@qnx.com

Colin Burgess

Re: Copying directly to /dev/shmem on the target

Post by Colin Burgess » Fri Jul 06, 2007 8:16 pm

That is, we've reproduced the initial problem, not this particular kernel crash...

Colin Burgess wrote:
Well it appears that the process' channels and connections vector has
not successfully cleaned up during process termination, but why?
We'll have to look into it...

We have reproduced this inhouse, with an ARM target.

Andrew_Boyd wrote:
Hiya Jacus. /dev/shmem, /dev/null and /dev/zero are all strange
beasties. I would tend to avoid them. Please start devb-ram on
the target and try copying to it. If that works, I would just use
it instead of /dev/shmem.

P.S. I have done some rudimentary testing on the head branch
split-priority dual-receive thread smc9000 driver on armle, and
it worked very well - at 10mbits, I was able to ttcp to the board
at a sustained 900 Kbytes/sec with the default ttcp args, so it did
not lose any packets. But let's try devb-ram first.

P.P.S. The crys8900 is another museum gem that is similarly
crippled by small hardware receive packet buffers. It has
received a similar re-write (not by me) which never saw
the light of released day.

P.P.P.S I think you managed to crash the kernel. Not sure how,
maybe Colin has some ideas?

--
cburgess@qnx.com

Jacek Rudnicki

Re: Re: Re: Re: Copying directly to /dev/shmem on the target

Post by Jacek Rudnicki » Mon Jul 09, 2007 1:20 pm

Hiya Jacus. /dev/shmem, /dev/null and /dev/zero are all strange
beasties. I would tend to avoid them. Please start devb-ram on
the target and try copying to it. If that works, I would just use
it instead of /dev/shmem.
I have tested devb-ram on target running either smc9000
and crys8900 without any problem. RAM disk works
fast and stable. It means that memory settings are
correct and ...

.... some improvement in /dev/shmem are really welcome.
P.S. I have done some rudimentary testing on the head branch
split-priority dual-receive thread smc9000 driver on armle, and
it worked very well - at 10mbits, I was able to ttcp to the board
at a sustained 900 Kbytes/sec with the default ttcp args, so it did
not lose any packets. But let's try devb-ram first.
That's great, but in my opinion this driver will fail if you try to copy
directly to the /dev/shmem via qnet.

Looks like that this is "generic" problem. Two nics (smc9000,
crys8900) the same behaviour - resource manager copies
only first 16kB of data.

I see this issue on armle and maybe other little endians have
similar problems.

I have to test how qnet and /dev/shmem co-opertes on the x86
machines.
P.P.P.S I think you managed to crash the kernel. Not sure how,
maybe Colin has some ideas?
Kernel crash appeared with laptop which sometimes do stange
things during crosslink connection.

We can forget about this.

Jacek

Jacek Rudnicki

Re: Copying directly to /dev/shmem on the target

Post by Jacek Rudnicki » Mon Jul 09, 2007 1:28 pm

That is, we've reproduced the initial problem, not this particular kernel
crash...
It will be very nice to have /dev/shmem working as on standard x86
machines...
.... especially when 'cp' command called on the target side works ok.

Jacek

Jacek Rudnicki

Re: Re: Re: Re: Copying directly to /dev/shmem on the target

Post by Jacek Rudnicki » Wed Jul 25, 2007 11:37 am

Looks like that this is "generic" problem. Two nics (smc9000,
crys8900) the same behaviour - resource manager copies
only first 16kB of data.
I had occasion to test one more ethernet card on the arm platform.
This time it was NIC compatible with NE2000. The devn-ne2000.so
works much faster in comaprison to the smc9000 and crys8900 drivers.

Unfortunately, tranfering data directly to /dev/shmem fails as usual.
See attached output from sloginfo.

No problems with /dev/shmem on the x86 platform at all.

Regards,
Jacek


begin 666 sloginfo_viper_ne2000.txt
M5&EM92 @(" @(" @(" @("!3978@36%J;W(@36EN;W(@07)G<PI&96(@,#$@
M,#,Z,S4Z-#D@(" @-2 @(" Q," @(" @,"!R86U?8F%S93H@-# P,"P@<F%M
M7W-I>F4Z(#0P,# *1F5B(# Q(# S.C,U.C0Y(" @(#4@(" @,3 @(" @(# @
M3D4R,# P"D9E8B P,2 P,SHS-3HT.2 @(" U(" @(#$P(" @(" P(%9E;F1O
M<B N+BXN+BXN+BXN+BXN+B P>&9F9F9F9F9F"D9E8B P,2 P,SHS-3HT.2 @
M(" U(" @(#$P(" @(" P($1E=FEC92 N+BXN+BXN+BXN+BXN+B P>&9F9F9F
M9F9F"D9E8B P,2 P,SHS-3HT.2 @(" U(" @(#$P(" @(" P(%)E=FES:6]N
M("XN+BXN+BXN+BXN+B P># *1F5B(# Q(# S.C,U.C0Y(" @(#4@(" @,3 @
M(" @(# @22]/('!O<G0@8F%S92 N+BXN+BXN(#!X,S P,# S,# *1F5B(# Q
M(# S.C,U.C0Y(" @(#4@(" @,3 @(" @(# @26YT97)R=7!T("XN+BXN+BXN
M+BXN(#!X-C<*1F5B(# Q(# S.C,U.C0Y(" @(#4@(" @,3 @(" @(# @26YT
M97)R=7!T("XN+BXN+BXN+BXN(#!X-C<*1F5B(# Q(# S.C,U.C0Y(" @(#4@
M(" @,3 @(" @(# @34%#(&%D9')E<W,@+BXN+BXN+BXN(# P,#<S,B P-34P
M.3D*1F5B(# Q(# S.C,U.C0Y(" @(#<@(" @,34@(" @(# @;G!M+7%N970H
M3#0I.B!Q;F5T7V)I<G1H*"DZ('%N971?:6YI="@I("T@8V%L;&EN9PH*1F5B
M(# Q(# S.C,U.C0Y(" @(#<@(" @,34@(" @(# @;G!M+7%N970H3#0I.B!E
M;E]I;VYE=%]R>%]C=')L*"DZ(&YE=R!I;G1E<F9A8V4Z(&5N,#H@:6YD97@@
M,"!C96QL(# @96YD<'0@,"!I9F%C92 P(&UA8R!A9&1R(# P.C W.C,R.C U
M.C4P.CDY"@I&96(@,#$@,#,Z,S4Z-#D@(" @-R @(" Q-2 @(" @,"!N<&TM
M<6YE="A13U,I.B!N9%]C:&%N9V5?;F]T:69Y*"DZ($YO9&4@57 Z(" @;F0@
M,"!V:7!E<BYN970N:6YT<F$*"D9E8B P,2 P,SHS-3HT.2 @(" W(" @(#$U
M(" @(" P(&YP;2UQ;F5T*$PT*3H@<6YE=%]B:7)T:"@I.B!Q;F5T7VEN:70H
M*2 M(&-O;7!L971E.B P"@I&96(@,#$@,#,Z,S4Z-#D@(" @-R @(" Q-2 @
M(" @,"!N<&TM<6YE="A,-"DZ(&5N7VEO;F5T7W)X7V-T<FPH*3H@9'5P;&EC
M871E(# O,"\P(# @7TE/7TY%5%]-4T=?1$Q?041615)4+"!D:7-C87)D:6YG
M"@I&96(@,#$@,#,Z,S4Z-#D@(" @-R @(" Q-2 @(" @,"!N<&TM<6YE="A,
M-"DZ(&5N7VEO;F5T7W)X7V-T<FPH*3H@9'5P;&EC871E(# O,"\P(# @7TE/
M7TY%5%]-4T=?1$Q?041615)4+"!D:7-C87)D:6YG"@I&96(@,#$@,#,Z,S4Z
M-#D@(" @-R @(" Q-2 @(" @,"!N<&TM<6YE="A,-"DZ(&QR7W9E<FEF>5]M
M>5]N86UE7V%N9%]D;VUA:6XH*3H@<W1A<G1I;F<@<F5S;VQU=&EO;B!O9B!O
M=7(@:&]S=&YA;64@=FEP97(N;F5T+FEN=')A('1O(&5N<W5R92!U;FEQ=64*
M"D9E8B P,2 P,SHS-3HT.2 @(" W(" @(#$U(" @(" P(&YP;2UQ;F5T*$PT
M*3H@;')?:6YB;W5N9"@I.B!D:7-C87)D:6YG('!K="!F<F]M('!C,RYQ='1C
M+FQO8V%L+"!Q;F5T(&ES(&YO="!O;FQI;F4*"D9E8B P,2 P,SHS-3HT.2 @
M(" W(" @(#$U(" @(" P(&YP;2UQ;F5T*$PT*3H@;')?:6YB;W5N9"@I.B!D
M:7-C87)D:6YG('!K="!F<F]M('!C,RYQ='1C+FQO8V%L+"!Q;F5T(&ES(&YO
M="!O;FQI;F4*"D9E8B P,2 P,SHS-3HU," @(" W(" @(#$U(" @(" P(&YP
M;2UQ;F5T*$PT*3H@;')?=F5R:69Y7VUY7VYA;65?86YD7V1O;6%I;B@I.B!Q
M;F5T(&=O:6YG(&]N;&EN90H*1F5B(# Q(# S.C,U.C4P(" @(#<@(" @,34@
M(" @(# @;G!M+7%N970H3#0I.B!L<E]A9&1?;F1B*"DZ(&%D9&EN9R!,-" P
M(&%D9'(@=&\@;F1B(&9O<B!N9" Q("!P8S,N<71T8RYL;V-A; H*1F5B(# Q
M(# S.C,U.C4P(" @(#<@(" @,34@(" @(# @;G!M+7%N970H44]3*3H@;F1?
M8VAA;F=E7VYO=&EF>2@I.B!.;V1E(%5P.B @(&YD(#$@<&,S+G%T=&,N;&]C
M86P*"D9E8B P,2 P,SHT,3HS," @(" W(" @(#$U(" @(" P(&YP;2UQ;F5T
M*%%/4RDZ('1X7WAM:71?:6YI=%]C;VYN7W!K="@I.B!T;R!N9" Q(&]N($PT
M(# *"D9E8B P,2 P,SHT,3HS-2 @(" W(" @(#$U(" @(" P(&YP;2UQ;F5T
M*%%/4RDZ('%O<U]V97)I9GE?<GA?8V]N;E]S97$H*3H@<GAD(&]L9"!D=7 @
M*#DO,3 I(&YD(#$@(')X(&-O;FX@,0H*1F5B(# Q(# S.C0Q.C,U(" @(#<@
M(" @,34@(" @(# @;G!M+7%N970H44]3*3H@<GA?=7-E<E]D871A*"DZ(&)A
M9"!C;VYN+W-E<2!R>&0@9G)O;2!N9" Q"@I&96(@,#$@,#,Z-#$Z,S4@(" @
M-R @(" Q-2 @(" @,"!N<&TM<6YE="AK:68I.B!C;&EE;G1?<'5L<V4H*3H@
M37-G4F5P;'DH,3DV-C,W*2!?7TM%4E]-4T=?4D5!1%8@9F%I;&5D("A"860@
M861D<F5S<RD*"D9E8B P,2 P,SHT,3HS-B @(" W(" @(#$U(" @(" P(&YP
M;2UQ;F5T*$PT*3H@;#1?='A?=&EM96]U="@I.B!T:6UE;W5T.B!N9" Q('-C
M(#$@9&,@,2!S<R Q.2!T:R Q.3<S,"!C=" Q.3<S,@H*1F5B(# Q(# S.C0Q
M.C,V(" @(#<@(" @,34@(" @(# @;G!M+7%N970H3#0I.B!L-%]T>%]T:6UE
M;W5T*"DZ('1I;65O=70Z(&YD(#$@<V,@,2!D8R Q('-S(#$X('1K(#$Y-S,P
M(&-T(#$Y-S,R"@I&96(@,#$@,#,Z-#$Z,S8@(" @-R @(" Q-2 @(" @,"!N
M<&TM<6YE="A,-"DZ(&PT7W1X7W1I;65O=70H*3H@=&EM96]U=#H@;F0@,2!S
M8R Q(&1C(#$@<W,@,3D@=&L@,3DW,S(@8W0@,3DW,S0*"D9E8B P,2 P,SHT
M,3HS-B @(" W(" @(#$U(" @(" P(&YP;2UQ;F5T*$PT*3H@;#1?='A?=&EM
M96]U="@I.B!T:6UE;W5T.B!N9" Q('-C(#$@9&,@,2!S<R Q."!T:R Q.3<S
M,B!C=" Q.3<S- H*1F5B(# Q(# S.C0Q.C,V(" @(#<@(" @,34@(" @(# @
M;G!M+7%N970H3#0I.B!L-%]T>%]T:6UE;W5T*"DZ('1I;65O=70Z(&YD(#$@
M<V,@,2!D8R Q('-S(#$Y('1K(#$Y-S,T(&-T(#$Y-S,V"@I&96(@,#$@,#,Z
M-#$Z,S8@(" @-R @(" Q-2 @(" @,"!N<&TM<6YE="A,-"DZ(&PT7W1X7W1I
M;65O=70H*3H@=&EM96]U=#H@;F0@,2!S8R Q(&1C(#$@<W,@,3@@=&L@,3DW
M,S0@8W0@,3DW,S8*"D9E8B P,2 P,SHT,3HS-R @(" W(" @(#$U(" @(" P
M(&YP;2UQ;F5T*$PT*3H@;#1?='A?=&EM96]U="@I.B!T:6UE;W5T.B!N9" Q
M('-C(#$@9&,@,2!S<R Q.2!T:R Q.3<S-B!C=" Q.3<S. H*1F5B(# Q(# S
M.C0Q.C,W(" @(#<@(" @,34@(" @(# @;G!M+7%N970H3#0I.B!L-%]T>%]T
M:6UE;W5T*"DZ('1I;65O=70Z(&YD(#$@<V,@,2!D8R Q('-S(#$X('1K(#$Y
M-S,V(&-T(#$Y-S,X"@I&96(@,#$@,#,Z-#$Z,S<@(" @-R @(" Q-2 @(" @
M,"!N<&TM<6YE="A,-"DZ(&PT7W1X7W1I;65O=70H*3H@=&EM96]U=#H@;F0@
M,2!S8R Q(&1C(#$@<W,@,3D@=&L@,3DW,S@@8W0@,3DW-# *"D9E8B P,2 P
M,SHT,3HS-R @(" W(" @(#$U(" @(" P(&YP;2UQ;F5T*$PT*3H@;#1?='A?
M=&EM96]U="@I.B!T:6UE;W5T.B!N9" Q('-C(#$@9&,@,2!S<R Q."!T:R Q
M.3<S."!C=" Q.3<T, H*1F5B(# Q(# S.C0Q.C,X(" @(#<@(" @,34@(" @
M(# @;G!M+7%N970H3#0I.B!L-%]T>%]T:6UE;W5T*"DZ('1I;65O=70Z(&YD
M(#$@<V,@,2!D8R Q('-S(#$Y('1K(#$Y-S0P(&-T(#$Y-S0R"@I&96(@,#$@
M,#,Z-#$Z,S@@(" @-R @(" Q-2 @(" @,"!N<&TM<6YE="A,-"DZ(&PT7W1X
M7W1I;65O=70H*3H@=&EM96]U=#H@;F0@,2!S8R Q(&1C(#$@<W,@,3@@=&L@
M,3DW-# @8W0@,3DW-#(*"D9E8B P,2 P,SHT,3HS." @(" W(" @(#$U(" @
M(" P(&YP;2UQ;F5T*$PT*3H@;#1?='A?=&EM96]U="@I.B!T:6UE;W5T.B!N
M9" Q('-C(#$@9&,@,2!S<R Q.2!T:R Q.3<T,B!C=" Q.3<T- H*1F5B(# Q
M(# S.C0Q.C,X(" @(#<@(" @,34@(" @(# @;G!M+7%N970H3#0I.B!E;E]I
M;VYE=%]T>%]P:W0H*3H@;G!K=" Q.# P,4,@='@@<W1I;&P@:6X@<')O9W)E
M<W,*"D9E8B P,2 P,SHT,3HS." @(" W(" @(#$U(" @(" P(&YP;2UQ;F5T
M*$PT*3H@;#1?='A?=&EM96]U="@I.B!R96%L('1I;65O=70Z(&1P+3YT>%]P
M:W0H*2!O9B!L87-T('!K="!F86EL960@9F]R($PT(# @=&\@;F0@,2!F;W(@
M<V5Q(#$Y"@I&96(@,#$@,#,Z-#$Z,S@@(" @-R @(" Q-2 @(" @,"!N<&TM
M<6YE="A,-"DZ(&PT7W1X7W1I;65O=70H*3H@=&EM96]U=#H@;F0@,2!S8R Q
M(&1C(#$@<W,@,3@@=&L@,3DW-#(@8W0@,3DW-#0*"D9E8B P,2 P,SHT,3HS
M." @(" W(" @(#$U(" @(" P(&YP;2UQ;F5T*$PT*3H@96Y?:6]N971?='A?
M<&MT*"DZ(&YP:W0@,31!,#%#('1X('-T:6QL(&EN('!R;V=R97-S"@I&96(@
M,#$@,#,Z-#$Z,S@@(" @-R @(" Q-2 @(" @,"!N<&TM<6YE="A,-"DZ(&PT
M7W1X7W1I;65O=70H*3H@<F5A;"!T:6UE;W5T.B!D<"T^='A?<&MT*"D@;V8@
M;&%S="!P:W0@9F%I;&5D(&9O<B!,-" P('1O(&YD(#$@9F]R('-E<2 Q. H*
M1F5B(# Q(# S.C0Q.C,X(" @(#<@(" @,34@(" @(# @;G!M+7%N970H3#0I
M.B!L-%]T>%]T:6UE;W5T*"DZ('1I;65O=70Z(&YD(#$@<V,@,2!D8R Q('-S
M(#$Y('1K(#$Y-S0T(&-T(#$Y-S0V"@I&96(@,#$@,#,Z-#$Z,S@@(" @-R @
M(" Q-2 @(" @,"!N<&TM<6YE="A,-"DZ(&5N7VEO;F5T7W1X7W!K="@I.B!N
M<&MT(#$X,# Q0R!T>"!S=&EL;"!I;B!P<F]G<F5S<PH*1F5B(# Q(# S.C0Q
M.C,X(" @(#<@(" @,34@(" @(# @;G!M+7%N970H3#0I.B!L-%]T>%]T:6UE
M;W5T*"DZ(')E86P@=&EM96]U=#H@9' M/G1X7W!K="@I(&]F(&QA<W0@<&MT
M(&9A:6QE9"!F;W(@3#0@,"!T;R!N9" Q(&9O<B!S97$@,3D*"D9E8B P,2 P
M,SHT,3HS." @(" W(" @(#$U(" @(" P(&YP;2UQ;F5T*$PT*3H@;#1?='A?
M=&EM96]U="@I.B!T:6UE;W5T.B!N9" Q('-C(#$@9&,@,2!S<R Q."!T:R Q
M.3<T-"!C=" Q.3<T-@H*1F5B(# Q(# S.C0Q.C,X(" @(#<@(" @,34@(" @
M(# @;G!M+7%N970H3#0I.B!E;E]I;VYE=%]T>%]P:W0H*3H@;G!K=" Q-$$P
M,4,@='@@<W1I;&P@:6X@<')O9W)E<W,*"D9E8B P,2 P,SHT,3HS." @(" W
M(" @(#$U(" @(" P(&YP;2UQ;F5T*$PT*3H@;#1?='A?=&EM96]U="@I.B!R
M96%L('1I;65O=70Z(&1P+3YT>%]P:W0H*2!O9B!L87-T('!K="!F86EL960@
M9F]R($PT(# @=&\@;F0@,2!F;W(@<V5Q(#$X"@I&96(@,#$@,#,Z-#$Z,SD@
M(" @-R @(" Q-2 @(" @,"!N<&TM<6YE="A,-"DZ(&PT7W1X7W1I;65O=70H
M*3H@=&EM96]U=#H@;F0@,2!S8R Q(&1C(#$@<W,@,3D@=&L@,3DW-#8@8W0@
M,3DW-#@*"D9E8B P,2 P,SHT,3HS.2 @(" W(" @(#$U(" @(" P(&YP;2UQ
M;F5T*$PT*3H@96Y?:6]N971?='A?<&MT*"DZ(&YP:W0@,3@P,#%#('1X('-T
M:6QL(&EN('!R;V=R97-S"@I&96(@,#$@,#,Z-#$Z,SD@(" @-R @(" Q-2 @
M(" @,"!N<&TM<6YE="A,-"DZ(&PT7W1X7W1I;65O=70H*3H@<F5A;"!T:6UE
M;W5T.B!D<"T^='A?<&MT*"D@;V8@;&%S="!P:W0@9F%I;&5D(&9O<B!,-" P
M('1O(&YD(#$@9F]R('-E<2 Q.0H*1F5B(# Q(# S.C0Q.C,Y(" @(#<@(" @
M,34@(" @(# @;G!M+7%N970H3#0I.B!L-%]T>%]T:6UE;W5T*"DZ('1I;65O
M=70Z(&YD(#$@<V,@,2!D8R Q('-S(#$X('1K(#$Y-S0V(&-T(#$Y-S0X"@I&
M96(@,#$@,#,Z-#$Z,SD@(" @-R @(" Q-2 @(" @,"!N<&TM<6YE="A,-"DZ
M(&5N7VEO;F5T7W1X7W!K="@I.B!N<&MT(#$T03 Q0R!T>"!S=&EL;"!I;B!P
M<F]G<F5S<PH*1F5B(# Q(# S.C0Q.C,Y(" @(#<@(" @,34@(" @(# @;G!M
M+7%N970H3#0I.B!L-%]T>%]T:6UE;W5T*"DZ(')E86P@=&EM96]U=#H@9' M
M/G1X7W!K="@I(&]F(&QA<W0@<&MT(&9A:6QE9"!F;W(@3#0@,"!T;R!N9" Q
M(&9O<B!S97$@,3@*"D9E8B P,2 P,SHT,3HS.2 @(" W(" @(#$U(" @(" P
M(&YP;2UQ;F5T*$PT*3H@;#1?='A?=&EM96]U="@I.B!T:6UE;W5T.B!N9" Q
M('-C(#$@9&,@,2!S<R Q.2!T:R Q.3<T."!C=" Q.3<U, H*1F5B(# Q(# S
M.C0Q.C,Y(" @(#<@(" @,34@(" @(# @;G!M+7%N970H3#0I.B!E;E]I;VYE
M=%]T>%]P:W0H*3H@;G!K=" Q.# P,4,@='@@<W1I;&P@:6X@<')O9W)E<W,*
M"D9E8B P,2 P,SHT,3HS.2 @(" W(" @(#$U(" @(" P(&YP;2UQ;F5T*$PT
M*3H@;#1?='A?=&EM96]U="@I.B!R96%L('1I;65O=70Z(&1P+3YT>%]P:W0H
M*2!O9B!L87-T('!K="!F86EL960@9F]R($PT(# @=&\@;F0@,2!F;W(@<V5Q
M(#$Y"@I&96(@,#$@,#,Z-#$Z,SD@(" @-R @(" Q-2 @(" @,"!N<&TM<6YE
M="A,-"DZ(&PT7W1X7W1I;65O=70H*3H@=&EM96]U=#H@;F0@,2!S8R Q(&1C
M(#$@<W,@,3@@=&L@,3DW-#@@8W0@,3DW-3 *"D9E8B P,2 P,SHT,3HS.2 @
M(" W(" @(#$U(" @(" P(&YP;2UQ;F5T*$PT*3H@96Y?:6]N971?='A?<&MT
M*"DZ(&YP:W0@,31!,#%#('1X('-T:6QL(&EN('!R;V=R97-S"@I&96(@,#$@
M,#,Z-#$Z,SD@(" @-R @(" Q-2 @(" @,"!N<&TM<6YE="A,-"DZ(&PT7W1X
M7W1I;65O=70H*3H@<F5A;"!T:6UE;W5T.B!D<"T^='A?<&MT*"D@;V8@;&%S
M="!P:W0@9F%I;&5D(&9O<B!,-" P('1O(&YD(#$@9F]R('-E<2 Q. H*1F5B
M(# Q(# S.C0Q.C0P(" @(#<@(" @,34@(" @(# @;G!M+7%N970H3#0I.B!L
M-%]T>%]T:6UE;W5T*"DZ('1I;65O=70Z(&YD(#$@<V,@,2!D8R Q('-S(#$Y
M('1K(#$Y-S4P(&-T(#$Y-S4R"@I&96(@,#$@,#,Z-#$Z-# @(" @-R @(" Q
M-2 @(" @,"!N<&TM<6YE="A,-"DZ(&5N7VEO;F5T7W1X7W!K="@I.B!N<&MT
M(#$X,# Q0R!T>"!S=&EL;"!I;B!P<F]G<F5S<PH*1F5B(# Q(# S.C0Q.C0P
M(" @(#<@(" @,34@(" @(# @;G!M+7%N970H3#0I.B!L-%]T>%]T:6UE;W5T
M*"DZ(')E86P@=&EM96]U=#H@9' M/G1X7W!K="@I(&]F(&QA<W0@<&MT(&9A
M:6QE9"!F;W(@3#0@,"!T;R!N9" Q(&9O<B!S97$@,3D*"D9E8B P,2 P,SHT
M,3HT," @(" W(" @(#$U(" @(" P(&YP;2UQ;F5T*$PT*3H@;#1?='A?=&EM
M96]U="@I.B!T:6UE;W5T.B!N9" Q('-C(#$@9&,@,2!S<R Q."!T:R Q.3<U
M,"!C=" Q.3<U,@H*1F5B(# Q(# S.C0Q.C0P(" @(#<@(" @,34@(" @(# @
M;G!M+7%N970H3#0I.B!E;E]I;VYE=%]T>%]P:W0H*3H@;G!K=" Q-$$P,4,@
M='@@<W1I;&P@:6X@<')O9W)E<W,*"D9E8B P,2 P,SHT,3HT," @(" W(" @
M(#$U(" @(" P(&YP;2UQ;F5T*$PT*3H@;#1?='A?=&EM96]U="@I.B!R96%L
M('1I;65O=70Z(&1P+3YT>%]P:W0H*2!O9B!L87-T('!K="!F86EL960@9F]R
M($PT(# @=&\@;F0@,2!F;W(@<V5Q(#$X"@I&96(@,#$@,#,Z-#$Z-# @(" @
M-R @(" Q-2 @(" @,"!N<&TM<6YE="A,-"DZ(&PT7W1X7W1I;65O=70H*3H@
M=&EM96]U=#H@;F0@,2!S8R Q(&1C(#$@<W,@,3D@=&L@,3DW-3(@8W0@,3DW
M-30*"D9E8B P,2 P,SHT,3HT," @(" W(" @(#$U(" @(" P(&YP;2UQ;F5T
M*$PT*3H@96Y?:6]N971?='A?<&MT*"DZ(&YP:W0@,3@P,#%#('1X('-T:6QL
M(&EN('!R;V=R97-S"@I&96(@,#$@,#,Z-#$Z-# @(" @-R @(" Q-2 @(" @
M,"!N<&TM<6YE="A,-"DZ(&PT7W1X7W1I;65O=70H*3H@<F5A;"!T:6UE;W5T
M.B!D<"T^='A?<&MT*"D@;V8@;&%S="!P:W0@9F%I;&5D(&9O<B!,-" P('1O
M(&YD(#$@9F]R('-E<2 Q.0H*1F5B(# Q(# S.C0Q.C0P(" @(#<@(" @,34@
M(" @(# @;G!M+7%N970H3#0I.B!L-%]T>%]T:6UE;W5T*"DZ('1I;65O=70Z
M(&YD(#$@<V,@,2!D8R Q('-S(#$X('1K(#$Y-S4R(&-T(#$Y-S4T"@I&96(@
M,#$@,#,Z-#$Z-# @(" @-R @(" Q-2 @(" @,"!N<&TM<6YE="A,-"DZ(&5N
M7VEO;F5T7W1X7W!K="@I.B!N<&MT(#$T03 Q0R!T>"!S=&EL;"!I;B!P<F]G
M<F5S<PH*1F5B(# Q(# S.C0Q.C0P(" @(#<@(" @,34@(" @(# @;G!M+7%N
M970H3#0I.B!L-%]T>%]T:6UE;W5T*"DZ(')E86P@=&EM96]U=#H@9' M/G1X
M7W!K="@I(&]F(&QA<W0@<&MT(&9A:6QE9"!F;W(@3#0@,"!T;R!N9" Q(&9O
M<B!S97$@,3@*"D9E8B P,2 P,SHT,3HT," @(" W(" @(#$U(" @(" P(&YP
M;2UQ;F5T*$PT*3H@;#1?='A?=&EM96]U="@I.B!T:6UE;W5T.B!N9" Q('-C
M(#$@9&,@,2!S<R Q.2!T:R Q.3<U-"!C=" Q.3<U-@H*1F5B(# Q(# S.C0Q
M.C0P(" @(#<@(" @,34@(" @(# @;G!M+7%N970H3#0I.B!E;E]I;VYE=%]T
M>%]P:W0H*3H@;G!K=" Q.# P,4,@='@@<W1I;&P@:6X@<')O9W)E<W,*"D9E
M8B P,2 P,SHT,3HT," @(" W(" @(#$U(" @(" P(&YP;2UQ;F5T*$PT*3H@
M;#1?='A?=&EM96]U="@I.B!R96%L('1I;65O=70Z(&1P+3YT>%]P:W0H*2!O
M9B!L87-T('!K="!F86EL960@9F]R($PT(# @=&\@;F0@,2!F;W(@<V5Q(#$Y
M"@I&96(@,#$@,#,Z-#$Z-# @(" @-R @(" Q-2 @(" @,"!N<&TM<6YE="A,
M-"DZ(&PT7W1X7W1I;65O=70H*3H@=&EM96]U=#H@;F0@,2!S8R Q(&1C(#$@
M<W,@,3@@=&L@,3DW-30@8W0@,3DW-38*"D9E8B P,2 P,SHT,3HT," @(" W
M(" @(#$U(" @(" P(&YP;2UQ;F5T*$PT*3H@96Y?:6]N971?='A?<&MT*"DZ
M(&YP:W0@,31!,#%#('1X('-T:6QL(&EN('!R;V=R97-S"@I&96(@,#$@,#,Z
M-#$Z-# @(" @-R @(" Q-2 @(" @,"!N<&TM<6YE="A,-"DZ(&PT7W1X7W1I
M;65O=70H*3H@<F5A;"!T:6UE;W5T.B!D<"T^='A?<&MT*"D@;V8@;&%S="!P
M:W0@9F%I;&5D(&9O<B!,-" P('1O(&YD(#$@9F]R('-E<2 Q. H*1F5B(# Q
M(# S.C0Q.C0Q(" @(#<@(" @,34@(" @(# @;G!M+7%N970H3#0I.B!L-%]T
M>%]T:6UE;W5T*"DZ('1I;65O=70Z(&YD(#$@<V,@,2!D8R Q('-S(#$Y('1K
M(#$Y-S4V(&-T(#$Y-S4X"@I&96(@,#$@,#,Z-#$Z-#$@(" @-R @(" Q-2 @
M(" @,"!N<&TM<6YE="A,-"DZ(&5N7VEO;F5T7W1X7W!K="@I.B!N<&MT(#$X
M,# Q0R!T>"!S=&EL;"!I;B!P<F]G<F5S<PH*1F5B(# Q(# S.C0Q.C0Q(" @
M(#<@(" @,34@(" @(# @;G!M+7%N970H3#0I.B!L-%]T>%]T:6UE;W5T*"DZ
M(')E86P@=&EM96]U=#H@9' M/G1X7W!K="@I(&]F(&QA<W0@<&MT(&9A:6QE
M9"!F;W(@3#0@,"!T;R!N9" Q(&9O<B!S97$@,3D*"D9E8B P,2 P,SHT,3HT
M,2 @(" W(" @(#$U(" @(" P(&YP;2UQ;F5T*$PT*3H@;#1?='A?=&EM96]U
M="@I.B!T:6UE;W5T.B!N9" Q('-C(#$@9&,@,2!S<R Q."!T:R Q.3<U-B!C
M=" Q.3<U. H*1F5B(# Q(# S.C0Q.C0Q(" @(#<@(" @,34@(" @(# @;G!M
M+7%N970H3#0I.B!E;E]I;VYE=%]T>%]P:W0H*3H@;G!K=" Q-$$P,4,@='@@
M<W1I;&P@:6X@<')O9W)E<W,*"D9E8B P,2 P,SHT,3HT,2 @(" W(" @(#$U
M(" @(" P(&YP;2UQ;F5T*$PT*3H@;#1?='A?=&EM96]U="@I.B!R96%L('1I
M;65O=70Z(&1P+3YT>%]P:W0H*2!O9B!L87-T('!K="!F86EL960@9F]R($PT
M(# @=&\@;F0@,2!F;W(@<V5Q(#$X"@I&96(@,#$@,#,Z-#$Z-#$@(" @-R @
M(" Q-2 @(" @,"!N<&TM<6YE="A,-"DZ(&PT7W1X7W1I;65O=70H*3H@=&EM
M96]U=#H@;F0@,2!S8R Q(&1C(#$@<W,@,3D@=&L@,3DW-3@@8W0@,3DW-C *
M"D9E8B P,2 P,SHT,3HT,2 @(" W(" @(#$U(" @(" P(&YP;2UQ;F5T*$PT
M*3H@96Y?:6]N971?='A?<&MT*"DZ(&YP:W0@,3@P,#%#('1X('-T:6QL(&EN
M('!R;V=R97-S"@I&96(@,#$@,#,Z-#$Z-#$@(" @-R @(" Q-2 @(" @,"!N
M<&TM<6YE="A,-"DZ(&PT7W1X7W1I;65O=70H*3H@<F5A;"!T:6UE;W5T.B!D
M<"T^='A?<&MT*"D@;V8@;&%S="!P:W0@9F%I;&5D(&9O<B!,-" P('1O(&YD
M(#$@9F]R('-E<2 Q.0H*1F5B(# Q(# S.C0Q.C0Q(" @(#<@(" @,34@(" @
M(# @;G!M+7%N970H3#0I.B!L-%]T>%]T:6UE;W5T*"DZ('1I;65O=70Z(&YD
M(#$@<V,@,2!D8R Q('-S(#$X('1K(#$Y-S4X(&-T(#$Y-S8P"@I&96(@,#$@
M,#,Z-#$Z-#$@(" @-R @(" Q-2 @(" @,"!N<&TM<6YE="A,-"DZ(&5N7VEO
M;F5T7W1X7W!K="@I.B!N<&MT(#$T03 Q0R!T>"!S=&EL;"!I;B!P<F]G<F5S
M<PH*1F5B(# Q(# S.C0Q.C0Q(" @(#<@(" @,34@(" @(# @;G!M+7%N970H
M3#0I.B!L-%]T>%]T:6UE;W5T*"DZ(')E86P@=&EM96]U=#H@9' M/G1X7W!K
M="@I(&]F(&QA<W0@<&MT(&9A:6QE9"!F;W(@3#0@,"!T;R!N9" Q(&9O<B!S
M97$@,3@*"D9E8B P,2 P,SHT,3HT,B @(" W(" @(#$U(" @(" P(&YP;2UQ
M;F5T*$PT*3H@;#1?='A?=&EM96]U="@I.B!T:6UE;W5T.B!N9" Q('-C(#$@
M9&,@,2!S<R Q.2!T:R Q.3<V,"!C=" Q.3<V,@H*1F5B(# Q(# S.C0Q.C0R
M(" @(#<@(" @,34@(" @(# @;G!M+7%N970H3#0I.B!E;E]I;VYE=%]T>%]P
M:W0H*3H@;G!K=" Q.# P,4,@='@@<W1I;&P@:6X@<')O9W)E<W,*"D9E8B P
M,2 P,SHT,3HT,B @(" W(" @(#$U(" @(" P(&YP;2UQ;F5T*$PT*3H@;#1?
M='A?=&EM96]U="@I.B!R96%L('1I;65O=70Z(&1P+3YT>%]P:W0H*2!O9B!L
M87-T('!K="!F86EL960@9F]R($PT(# @=&\@;F0@,2!F;W(@<V5Q(#$Y"@I&
M96(@,#$@,#,Z-#$Z-#(@(" @-R @(" Q-2 @(" @,"!N<&TM<6YE="A,-"DZ
M(&PT7W1X7W1I;65O=70H*3H@=&EM96]U=#H@;F0@,2!S8R Q(&1C(#$@<W,@
M,3@@=&L@,3DW-C @8W0@,3DW-C(*"D9E8B P,2 P,SHT,3HT,B @(" W(" @
M(#$U(" @(" P(&YP;2UQ;F5T*$PT*3H@96Y?:6]N971?='A?<&MT*"DZ(&YP
M:W0@,31!,#%#('1X('-T:6QL(&EN('!R;V=R97-S"@I&96(@,#$@,#,Z-#$Z
M-#(@(" @-R @(" Q-2 @(" @,"!N<&TM<6YE="A,-"DZ(&PT7W1X7W1I;65O
M=70H*3H@<F5A;"!T:6UE;W5T.B!D<"T^='A?<&MT*"D@;V8@;&%S="!P:W0@
M9F%I;&5D(&9O<B!,-" P('1O(&YD(#$@9F]R('-E<2 Q. H*1F5B(# Q(# S
M.C0Q.C0R(" @(#<@(" @,34@(" @(# @;G!M+7%N970H3#0I.B!L-%]T>%]T
M:6UE;W5T*"DZ('1I;65O=70Z(&YD(#$@<V,@,2!D8R Q('-S(#$Y('1K(#$Y
M-S8R(&-T(#$Y-S8T"@I&96(@,#$@,#,Z-#$Z-#(@(" @-R @(" Q-2 @(" @
M,"!N<&TM<6YE="A,-"DZ(&5N7VEO;F5T7W1X7W!K="@I.B!N<&MT(#$X,# Q
M0R!T>"!S=&EL;"!I;B!P<F]G<F5S<PH*1F5B(# Q(# S.C0Q.C0R(" @(#<@
M(" @,34@(" @(# @;G!M+7%N970H3#0I.B!L-%]T>%]T:6UE;W5T*"DZ(')E
M86P@=&EM96]U=#H@9' M/G1X7W!K="@I(&]F(&QA<W0@<&MT(&9A:6QE9"!F
M;W(@3#0@,"!T;R!N9" Q(&9O<B!S97$@,3D*"D9E8B P,2 P,SHT,3HT,B @
M(" W(" @(#$U(" @(" P(&YP;2UQ;F5T*$PT*3H@;#1?='A?=&EM96]U="@I
M.B!T:6UE;W5T.B!N9" Q('-C(#$@9&,@,2!S<R Q."!T:R Q.3<V,B!C=" Q
M.3<V- H*1F5B(# Q(# S.C0Q.C0R(" @(#<@(" @,34@(" @(# @;G!M+7%N
M970H3#0I.B!E;E]I;VYE=%]T>%]P:W0H*3H@;G!K=" Q-$$P,4,@='@@<W1I
M;&P@:6X@<')O9W)E<W,*"D9E8B P,2 P,SHT,3HT,B @(" W(" @(#$U(" @
M(" P(&YP;2UQ;F5T*$PT*3H@;#1?='A?=&EM96]U="@I.B!R96%L('1I;65O
M=70Z(&1P+3YT>%]P:W0H*2!O9B!L87-T('!K="!F86EL960@9F]R($PT(# @
M=&\@;F0@,2!F;W(@<V5Q(#$X"@I&96(@,#$@,#,Z-#$Z-#(@(" @-R @(" Q
M-2 @(" @,"!N<&TM<6YE="A,-"DZ(&PT7W1X7W1I;65O=70H*3H@=&EM96]U
M=#H@;F0@,2!S8R Q(&1C(#$@<W,@,3D@=&L@,3DW-C0@8W0@,3DW-C8*"D9E
M8B P,2 P,SHT,3HT,B @(" W(" @(#$U(" @(" P(&YP;2UQ;F5T*$PT*3H@
M96Y?:6]N971?='A?<&MT*"DZ(&YP:W0@,3@P,#%#('1X('-T:6QL(&EN('!R
M;V=R97-S"@I&96(@,#$@,#,Z-#$Z-#(@(" @-R @(" Q-2 @(" @,"!N<&TM
M<6YE="A,-"DZ(&PT7W1X7W1I;65O=70H*3H@<F5A;"!T:6UE;W5T.B!D<"T^
M='A?<&MT*"D@;V8@;&%S="!P:W0@9F%I;&5D(&9O<B!,-" P('1O(&YD(#$@
M9F]R('-E<2 Q.0H*1F5B(# Q(# S.C0Q.C0R(" @(#<@(" @,34@(" @(# @
M;G!M+7%N970H3#0I.B!L-%]T>%]T:6UE;W5T*"DZ('1I;65O=70Z(&YD(#$@
M<V,@,2!D8R Q('-S(#$X('1K(#$Y-S8T(&-T(#$Y-S8V"@I&96(@,#$@,#,Z
M-#$Z-#(@(" @-R @(" Q-2 @(" @,"!N<&TM<6YE="A,-"DZ(&5N7VEO;F5T
M7W1X7W!K="@I.B!N<&MT(#$T03 Q0R!T>"!S=&EL;"!I;B!P<F]G<F5S<PH*
M1F5B(# Q(# S.C0Q.C0R(" @(#<@(" @,34@(" @(# @;G!M+7%N970H3#0I
M.B!L-%]T>%]T:6UE;W5T*"DZ(')E86P@=&EM96]U=#H@9' M/G1X7W!K="@I
M(&]F(&QA<W0@<&MT(&9A:6QE9"!F;W(@3#0@,"!T;R!N9" Q(&9O<B!S97$@
M,3@*"D9E8B P,2 P,SHT,3HT,R @(" W(" @(#$U(" @(" P(&YP;2UQ;F5T
M*$PT*3H@;#1?='A?=&EM96]U="@I.B!T:6UE;W5T.B!N9" Q('-C(#$@9&,@
M,2!S<R Q.2!T:R Q.3<V-B!C=" Q.3<V. H*1F5B(# Q(# S.C0Q.C0S(" @
M(#<@(" @,34@(" @(# @;G!M+7%N970H3#0I.B!E;E]I;VYE=%]T>%]P:W0H
M*3H@;G!K=" Q.# P,4,@='@@<W1I;&P@:6X@<')O9W)E<W,*"D9E8B P,2 P
M,SHT,3HT,R @(" W(" @(#$U(" @(" P(&YP;2UQ;F5T*$PT*3H@;#1?='A?
M=&EM96]U="@I.B!R96%L('1I;65O=70Z(&1P+3YT>%]P:W0H*2!O9B!L87-T
M('!K="!F86EL960@9F]R($PT(# @=&\@;F0@,2!F;W(@<V5Q(#$Y"@I&96(@
M,#$@,#,Z-#$Z-#,@(" @-R @(" Q-2 @(" @,"!N<&TM<6YE="A,-"DZ(&PT
M7W1X7W1I;65O=70H*3H@=&EM96]U=#H@;F0@,2!S8R Q(&1C(#$@<W,@,3@@
M=&L@,3DW-C8@8W0@,3DW-C@*"D9E8B P,2 P,SHT,3HT,R @(" W(" @(#$U
M(" @(" P(&YP;2UQ;F5T*$PT*3H@96Y?:6]N971?='A?<&MT*"DZ(&YP:W0@
M,31!,#%#('1X('-T:6QL(&EN('!R;V=R97-S"@I&96(@,#$@,#,Z-#$Z-#,@
M(" @-R @(" Q-2 @(" @,"!N<&TM<6YE="A,-"DZ(&PT7W1X7W1I;65O=70H
M*3H@<F5A;"!T:6UE;W5T.B!D<"T^='A?<&MT*"D@;V8@;&%S="!P:W0@9F%I
M;&5D(&9O<B!,-" P('1O(&YD(#$@9F]R('-E<2 Q. H*1F5B(# Q(# S.C0Q
M.C0S(" @(#<@(" @,34@(" @(# @;G!M+7%N970H3#0I.B!L-%]T>%]T:6UE
M;W5T*"DZ('1I;65O=70Z(&YD(#$@<V,@,2!D8R Q('-S(#$Y('1K(#$Y-S8X
M(&-T(#$Y-S<P"@I&96(@,#$@,#,Z-#$Z-#,@(" @-R @(" Q-2 @(" @,"!N
M<&TM<6YE="A,-"DZ(&5N7VEO;F5T7W1X7W!K="@I.B!N<&MT(#$X,# Q0R!T
M>"!S=&EL;"!I;B!P<F]G<F5S<PH*1F5B(# Q(# S.C0Q.C0S(" @(#<@(" @
M,34@(" @(# @;G!M+7%N970H3#0I.B!L-%]T>%]T:6UE;W5T*"DZ(')E86P@
M=&EM96]U=#H@9' M/G1X7W!K="@I(&]F(&QA<W0@<&MT(&9A:6QE9"!F;W(@
M3#0@,"!T;R!N9" Q(&9O<B!S97$@,3D*"D9E8B P,2 P,SHT,3HT,R @(" W
M(" @(#$U(" @(" P(&YP;2UQ;F5T*$PT*3H@;#1?='A?=&EM96]U="@I.B!T
M:6UE;W5T.B!N9" Q('-C(#$@9&,@,2!S<R Q."!T:R Q.3<V."!C=" Q.3<W
M, H*1F5B(# Q(# S.C0Q.C0S(" @(#<@(" @,34@(" @(# @;G!M+7%N970H
M3#0I.B!E;E]I;VYE=%]T>%]P:W0H*3H@;G!K=" Q-$$P,4,@='@@<W1I;&P@
M:6X@<')O9W)E<W,*"D9E8B P,2 P,SHT,3HT,R @(" W(" @(#$U(" @(" P
M(&YP;2UQ;F5T*$PT*3H@;#1?='A?=&EM96]U="@I.B!R96%L('1I;65O=70Z
M(&1P+3YT>%]P:W0H*2!O9B!L87-T('!K="!F86EL960@9F]R($PT(# @=&\@
M;F0@,2!F;W(@<V5Q(#$X"@I&96(@,#$@,#,Z-#$Z-#0@(" @-R @(" Q-2 @
M(" @,"!N<&TM<6YE="A,-"DZ(&PT7W1X7W1I;65O=70H*3H@=&EM96]U=#H@
M;F0@,2!S8R Q(&1C(#$@<W,@,3D@=&L@,3DW-S @8W0@,3DW-S(*"D9E8B P
M,2 P,SHT,3HT-" @(" W(" @(#$U(" @(" P(&YP;2UQ;F5T*$PT*3H@96Y?
M:6]N971?='A?<&MT*"DZ(&YP:W0@,3@P,#%#('1X('-T:6QL(&EN('!R;V=R
M97-S"@I&96(@,#$@,#,Z-#$Z-#0@(" @-R @(" Q-2 @(" @,"!N<&TM<6YE
M="A,-"DZ(&PT7W1X7W1I;65O=70H*3H@<F5A;"!T:6UE;W5T.B!D<"T^='A?
M<&MT*"D@;V8@;&%S="!P:W0@9F%I;&5D(&9O<B!,-" P('1O(&YD(#$@9F]R
M('-E<2 Q.0H*1F5B(# Q(# S.C0Q.C0T(" @(#<@(" @,34@(" @(# @;G!M
M+7%N970H3#0I.B!L-%]T>%]T:6UE;W5T*"DZ('1I;65O=70Z(&YD(#$@<V,@
M,2!D8R Q('-S(#$X('1K(#$Y-S<P(&-T(#$Y-S<R"@I&96(@,#$@,#,Z-#$Z
M-#0@(" @-R @(" Q-2 @(" @,"!N<&TM<6YE="A,-"DZ(&5N7VEO;F5T7W1X
M7W!K="@I.B!N<&MT(#$T03 Q0R!T>"!S=&EL;"!I;B!P<F]G<F5S<PH*1F5B
M(# Q(# S.C0Q.C0T(" @(#<@(" @,34@(" @(# @;G!M+7%N970H3#0I.B!L
M-%]T>%]T:6UE;W5T*"DZ(')E86P@=&EM96]U=#H@9' M/G1X7W!K="@I(&]F
M(&QA<W0@<&MT(&9A:6QE9"!F;W(@3#0@,"!T;R!N9" Q(&9O<B!S97$@,3@*
M"D9E8B P,2 P,SHT,3HT-" @(" W(" @(#$U(" @(" P(&YP;2UQ;F5T*$PT
M*3H@;#1?='A?=&EM96]U="@I.B!T:6UE;W5T.B!N9" Q('-C(#$@9&,@,2!S
M<R Q.2!T:R Q.3<W,B!C=" Q.3<W- H*1F5B(# Q(# S.C0Q.C0T(" @(#<@
M(" @,34@(" @(# @;G!M+7%N970H3#0I.B!E;E]I;VYE=%]T>%]P:W0H*3H@
M;G!K=" Q.# P,4,@='@@<W1I;&P@:6X@<')O9W)E<W,*"D9E8B P,2 P,SHT
M,3HT-" @(" W(" @(#$U(" @(" P(&YP;2UQ;F5T*$PT*3H@;#1?='A?=&EM
M96]U="@I.B!R96%L('1I;65O=70Z(&1P+3YT>%]P:W0H*2!O9B!L87-T('!K
M="!F86EL960@9F]R($PT(# @=&\@;F0@,2!F;W(@<V5Q(#$Y"@I&96(@,#$@
M,#,Z-#$Z-#0@(" @-R @(" Q-2 @(" @,"!N<&TM<6YE="A,-"DZ(&PT7W1X
M7W1I;65O=70H*3H@=&EM96]U=#H@;F0@,2!S8R Q(&1C(#$@<W,@,3@@=&L@
M,3DW-S(@8W0@,3DW-S0*"D9E8B P,2 P,SHT,3HT-" @(" W(" @(#$U(" @
M(" P(&YP;2UQ;F5T*$PT*3H@96Y?:6]N971?='A?<&MT*"DZ(&YP:W0@,31!
M,#%#('1X('-T:6QL(&EN('!R;V=R97-S"@I&96(@,#$@,#,Z-#$Z-#0@(" @
M-R @(" Q-2 @(" @,"!N<&TM<6YE="A,-"DZ(&PT7W1X7W1I;65O=70H*3H@
M<F5A;"!T:6UE;W5T.B!D<"T^='A?<&MT*"D@;V8@;&%S="!P:W0@9F%I;&5D
M(&9O<B!,-" P('1O(&YD(#$@9F]R('-E<2 Q. H*1F5B(# Q(# S.C0Q.C0T
M(" @(#<@(" @,34@(" @(# @;G!M+7%N970H3#0I.B!L-%]T>%]T:6UE;W5T
M*"DZ('1I;65O=70Z(&YD(#$@<V,@,2!D8R Q('-S(#$Y('1K(#$Y-S<T(&-T
M(#$Y-S<V"@I&96(@,#$@,#,Z-#$Z-#0@(" @-R @(" Q-2 @(" @,"!N<&TM
M<6YE="A,-"DZ(&5N7VEO;F5T7W1X7W!K="@I.B!N<&MT(#$X,# Q0R!T>"!S
M=&EL;"!I;B!P<F]G<F5S<PH*1F5B(# Q(# S.C0Q.C0T(" @(#<@(" @,34@
M(" @(# @;G!M+7%N970H3#0I.B!L-%]T>%]T:6UE;W5T*"DZ(')E86P@=&EM
M96]U=#H@9' M/G1X7W!K="@I(&]F(&QA<W0@<&MT(&9A:6QE9"!F;W(@3#0@
M,"!T;R!N9" Q(&9O<B!S97$@,3D*"D9E8B P,2 P,SHT,3HT-" @(" W(" @
M(#$U(" @(" P(&YP;2UQ;F5T*$PT*3H@;#1?='A?=&EM96]U="@I.B!T:6UE
M;W5T.B!N9" Q('-C(#$@9&,@,2!S<R Q."!T:R Q.3<W-"!C=" Q.3<W-@H*
M1F5B(# Q(# S.C0Q.C0T(" @(#<@(" @,34@(" @(# @;G!M+7%N970H3#0I
M.B!E;E]I;VYE=%]T>%]P:W0H*3H@;G!K=" Q-$$P,4,@='@@<W1I;&P@:6X@
M<')O9W)E<W,*"D9E8B P,2 P,SHT,3HT-" @(" W(" @(#$U(" @(" P(&YP
M;2UQ;F5T*$PT*3H@;#1?='A?=&EM96]U="@I.B!R96%L('1I;65O=70Z(&1P
M+3YT>%]P:W0H*2!O9B!L87-T('!K="!F86EL960@9F]R($PT(# @=&\@;F0@
M,2!F;W(@<V5Q(#$X"@I&96(@,#$@,#,Z-#$Z-#4@(" @-R @(" Q-2 @(" @
M,"!N<&TM<6YE="A,-"DZ(&PT7W1X7W1I;65O=70H*3H@=&EM96]U=#H@;F0@
M,2!S8R Q(&1C(#$@<W,@,3D@=&L@,3DW-S8@8W0@,3DW-S@*"D9E8B P,2 P
M,SHT,3HT-2 @(" W(" @(#$U(" @(" P(&YP;2UQ;F5T*$PT*3H@96Y?:6]N
M971?='A?<&MT*"DZ(&YP:W0@,3@P,#%#('1X('-T:6QL(&EN('!R;V=R97-S
M"@I&96(@,#$@,#,Z-#$Z-#4@(" @-R @(" Q-2 @(" @,"!N<&TM<6YE="A,
M-"DZ(&PT7W1X7W1I;65O=70H*3H@<F5A;"!T:6UE;W5T.B!D<"T^='A?<&MT
M*"D@;V8@;&%S="!P:W0@9F%I;&5D(&9O<B!,-" P('1O(&YD(#$@9F]R('-E
M<2 Q.0H*1F5B(# Q(# S.C0Q.C0U(" @(#<@(" @,34@(" @(# @;G!M+7%N
M970H3#0I.B!L-%]T>%]T:6UE;W5T*"DZ('1I;65O=70Z(&YD(#$@<V,@,2!D
M8R Q('-S(#$X('1K(#$Y-S<V(&-T(#$Y-S<X"@I&96(@,#$@,#,Z-#$Z-#4@
M(" @-R @(" Q-2 @(" @,"!N<&TM<6YE="A,-"DZ(&5N7VEO;F5T7W1X7W!K
M="@I.B!N<&MT(#$T03 Q0R!T>"!S=&EL;"!I;B!P<F]G<F5S<PH*1F5B(# Q
M(# S.C0Q.C0U(" @(#<@(" @,34@(" @(# @;G!M+7%N970H3#0I.B!L-%]T
M>%]T:6UE;W5T*"DZ(')E86P@=&EM96]U=#H@9' M/G1X7W!K="@I(&]F(&QA
M<W0@<&MT(&9A:6QE9"!F;W(@3#0@,"!T;R!N9" Q(&9O<B!S97$@,3@*"D9E
M8B P,2 P,SHT,3HT-2 @(" W(" @(#$U(" @(" P(&YP;2UQ;F5T*$PT*3H@
M;#1?='A?=&EM96]U="@I.B!T:6UE;W5T.B!N9" Q('-C(#$@9&,@,2!S<R Q
M.2!T:R Q.3<W."!C=" Q.3<X, H*1F5B(# Q(# S.C0Q.C0U(" @(#<@(" @
M,34@(" @(# @;G!M+7%N970H3#0I.B!E;E]I;VYE=%]T>%]P:W0H*3H@;G!K
M=" Q.# P,4,@='@@<W1I;&P@:6X@<')O9W)E<W,*"D9E8B P,2 P,SHT,3HT
M-2 @(" W(" @(#$U(" @(" P(&YP;2UQ;F5T*$PT*3H@;#1?='A?=&EM96]U
M="@I.B!R96%L('1I;65O=70Z(&1P+3YT>%]P:W0H*2!O9B!L87-T('!K="!F
M86EL960@9F]R($PT(# @=&\@;F0@,2!F;W(@<V5Q(#$Y"@I&96(@,#$@,#,Z
M-#$Z-#4@(" @-R @(" Q-2 @(" @,"!N<&TM<6YE="A,-"DZ(&PT7W1X7W1I
M;65O=70H*3H@=&EM96]U=#H@;F0@,2!S8R Q(&1C(#$@<W,@,3@@=&L@,3DW
M-S@@8W0@,3DW.# *"D9E8B P,2 P,SHT,3HT-2 @(" W(" @(#$U(" @(" P
M(&YP;2UQ;F5T*$PT*3H@96Y?:6]N971?='A?<&MT*"DZ(&YP:W0@,31!,#%#
M('1X('-T:6QL(&EN('!R;V=R97-S"@I&96(@,#$@,#,Z-#$Z-#4@(" @-R @
M(" Q-2 @(" @,"!N<&TM<6YE="A,-"DZ(&PT7W1X7W1I;65O=70H*3H@<F5A
M;"!T:6UE;W5T.B!D<"T^='A?<&MT*"D@;V8@;&%S="!P:W0@9F%I;&5D(&9O
M<B!,-" P('1O(&YD(#$@9F]R('-E<2 Q. H*1F5B(# Q(# S.C0Q.C0V(" @
M(#<@(" @,34@(" @(# @;G!M+7%N970H3#0I.B!L-%]T>%]S97)V:6-E*"DZ
M(&5X8V5E9&5D(#(U(')E=')I97,@9'5R:6YG('1X(&]F('-E<2 Q.2!T;R!N
M9" Q"@I&96(@,#$@,#,Z-#$Z-#8@(" @-R @(" Q-2 @(" @,"!N<&TM<6YE
M="A13U,I.B!Q;W-?='A?9&]N92@I.B!46%]%4E)?1%)64B!F<F]M($PT(# @
M9F]R(&YD(#$L('=I;&P@9&5L971E(&EN=&5R9F%C90H*1F5B(# Q(# S.C0Q
M.C0V(" @(#<@(" @,34@(" @(# @;G!M+7%N970H44]3*3H@='A?;F1B7V1E
M;%]I9B@I.B!D96QE=&EN9R!M87!P:6YG(&9O<B!,-" P(&9O<B!N9" Q"@I&
M96(@,#$@,#,Z-#$Z-#8@(" @-R @(" Q-2 @(" @,"!N<&TM<6YE="A13U,I
M.B!T>%]N9&)?9&5L7VEF*"DZ(&YO(&UO<F4@:6YT97)F86-E<RP@=&5A<FEN
M9R!D;W=N(&YD(#$*"D9E8B P,2 P,SHT,3HT-B @(" W(" @(#$U(" @(" P
M(&YP;2UQ;F5T*%%/4RDZ(&YD7V-H86YG95]N;W1I9GDH*3H@3F]D92!$;W=N
M.B!N9" Q('!C,RYQ='1C+FQO8V%L"@I&96(@,#$@,#,Z-#$Z-#8@(" @-R @
M(" Q-2 @(" @,"!N<&TM<6YE="A13U,I.B!Q;W-?='A?9&]N92@I.B!46%]%
M4E)?3D1$3B!F;W(@;F0@,2P@9F%I;&EN9R!46"!W+T5(3U-41$]73@H*1F5B
M(# Q(# S.C0Q.C0V(" @(#<@(" @,34@(" @(# @;G!M+7%N970H44]3*3H@
M='A?8V]M<&QE=&4H*3H@8V%L;&)A8VL@9F]R(&YD(#$@=&\@;&%Y97(@,"!W
M:71H(&5R<FYO(#(V- H*1F5B(# Q(# S.C0Q.C0V(" @(#<@(" @,34@(" @
M(# @;G!M+7%N970H:VEF*3H@:VEF7V-L:65N=%]O=71B;W5N9%]F86EL960H
M*3H@37-G17)R;W(H,3DV-C,W*2!F86EL960@*$YO('-U8V@@<')O8V5S<RD*
M"D9E8B P,2 P,SHT,3HT-B @(" W(" @(#$U(" @(" P(&YP;2UQ;F5T*%%/
M4RDZ('1X7V-O;7!L971E*"DZ(&-A;&QB86-K(&9O<B!N9" Q('1O(&QA>65R
3(# @=VET:"!E<G)N;R R-C0*"@``
`
end

Post Reply

Return to “qnx.rtos”