home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-10-22 | 55.8 KB | 1,485 lines |
- Newsgroups: comp.sources.misc
- From: jmd@cyclone.bt.co.uk (John Downey)
- Subject: v33i013: xvi - portable multi-window vi-like editor, Part04/18
- Message-ID: <1992Oct23.181117.29959@sparky.imd.sterling.com>
- X-Md4-Signature: 3c8e32974bf0f6b1def97681fdae8c33
- Date: Fri, 23 Oct 1992 18:11:17 GMT
- Approved: kent@sparky.imd.sterling.com
-
- Submitted-by: jmd@cyclone.bt.co.uk (John Downey)
- Posting-number: Volume 33, Issue 13
- Archive-name: xvi/part04
- Environment: Unix, MS-DOS, OS/2, QNX
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then feed it
- # into a shell via "sh file" or similar. To overwrite existing files,
- # type "sh file -c".
- # Contents: xvi/doc/source.UU.b xvi/src/ex_cmds1.c
- # Wrapped by kent@sparky on Thu Oct 22 09:03:41 1992
- PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin ; export PATH
- echo If this archive is complete, you will see the following message:
- echo ' "shar: End of archive 4 (of 18)."'
- if test -f 'xvi/doc/source.UU.b' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xvi/doc/source.UU.b'\"
- else
- echo shar: Extracting \"'xvi/doc/source.UU.b'\" \(34078 characters\)
- sed "s/^X//" >'xvi/doc/source.UU.b' <<'END_OF_FILE'
- XM90H@(" @(&UO9'5L92 @=&\@8F4@86)L92!T;R!T96QL('1H92!T97)M:6YA
- XM;"!I;G1E<F9A8V4@;6]D=6QE('1O(&5N=&5R"B @(" @;W(@97AI="!?"'9?
- XM"&E?"'-?"'5?"&%?"&P@;6]D92X@(%1H:7,@;6EG:'0@;65A;B!C:&%N9VEN
- XM9R!T:&4@=&5R;6EN86P@<W1A=&4*(" @("!B971W965N(")R87<B(&%N9" B
- XM8V]O:V5D(B!M;V1E<RP@;W(@<W=I=&-H:6YG(&1I<W!L87D@<&%G97,N("!.
- XM;PH@(" @('-P96-I9FEC(&EN=&5R9F%C92!F;W(@=&AI<R!I<R @9&5F:6YE
- XM9"P@(&%L=&AO=6=H("!T:&4@('-T86YD87)D"B @(" @54Y)6" @86YD("!-
- XM4RU$3U,@:6UP;&5M96YT871I;VYS(&1O('5S92!S=6-H(&$@9F%C:6QI='DL
- XM(&%N9"!T:&4*(" @("!I;G1E<F9A8V4@9G5N8W1I;VYS(&9O<B!B;W1H('-Y
- XM<W1E;7,@87)E(&ED96YT:6-A;&QY(&1E9FEN960N"@H@(" @(%\(-"Y?"#<N
- XM("!?"$9?"'5?"&Y?"&-?"'1?"&E?"&]?"&X@7PA+7PAE7PAY7PAS+U\(35\(
- XM;U\(=5\(<U\(92!?"$A?"&%?"&Y?"&1?"&Q?"&E?"&Y?"&<*"B @(" @1G5N
- XM8W1I;VX@:V5Y('9A;'5E<R!A<F4@8V]D960@:6YT;R!A('-E="!O9B C7PAD
- XM7PAE7PAF7PAI7PAN7PAE9"!C;VYS=&%N=',@:6X*(" @("!T:&4@9FEL92!?
- XM"&%?"'-?"&-?"&E?"&DN7PAH.R!E+F<N('1H92!V86QU92!?"$M?7PA57PA!
- XM7PA27PA27PA/7PA7(&UI9VAT(&)E(&=I=F5N(&%S(&EN<'5T"B @(" @=VAE
- XM;B!T:&4@:V5Y8F]A<F0@=7 M87)R;W<@:V5Y(&AA<R!B965N('!R97-S960N
- XM"@H@(" @($EF('1H92!G;&]B86P@=F%R:6%B;&4@7PA37PAT7PAA7PAT7PAE
- XM(&ES(&YO="!E<75A;"!T;R!?"$Y?"$]?"%)?"$U?"$%?"$PL(&%L;"!F=6YC
- XM=&EO;@H@(" @(&ME>7,@97AC97!T(&9O<B!A(&)A8VMS<&%C92!K97D@87)E
- XM(&EN=F%L:60@:6YP=70N("!)9B!A;B!I;G9A;&ED"B @(" @:V5Y(&ES('!R
- XM97-S960L('1H92!S869E<W0@<W1R871E9WD@;6%Y(&)E('1O(&)E97 @86YD
- XM("!W86ET("!F;W(*(" @("!A;F]T:&5R(&ME>2!T;R!B92!P<F5S<V5D+B @
- XM7PA.7PA/7PA27PA-7PA!7PA,(&ES(&1E9FEN960@:6X@7PAX7PAV7PAI+E\(
- XM:"X*"@H*(" @("!?"#)?"#5?"'1?"&@@7PA37PAE7PAP7PAT7PAE7PAM7PAB
- XM7PAE7PAR(%\(,5\(.5\(.5\(,B @(" @(" @(" @(" @(" @(" @(" @(" @
- XM(" @(" @(" @(" @(%\(4%\(85\(9U\(92!?"#%?"#,*"@H*"@H@(" @(%\(
- XM,5\(-" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
- XM(%\(6%\(=E\(:2!?"%-?"&]?"'5?"')?"&-?"&4@7PA#7PAO7PAD7PAE(%\(
- XM3E\(;U\(=%\(95\(<PH*"B @(" @06YO=&AE<B!F86-I;&ET>2!W:&EC:"!M
- XM87D@8F4@<')O=FED960@:7,@:&%N9&QI;F<@;6]U<V4@:6YP=70@;VX*(" @
- XM("!S>7-T96US("!W:&5R92 @:70@(&ES("!A=F%I;&%B;&4N("!4:&4@<W1R
- XM871E9WD@9F]R(&EN=&5R<')E=&EN9PH@(" @(&UO=7-E(&EN<'5T("!I<R @
- XM8V]N=')O;&QE9" @8GD@('1H92 @7PAM7PAO7PAU7PAS7PAE7PAC7PAL7PAI
- XM7PAC7PAK*"D@(&9U;F-T:6]N(" H:6X*(" @("!?"&U?"&]?"'5?"'-?"&4N
- XM7PAC*3L@('1H92 @:61E82 @:7,@('1O(&UA:V4@=&AE('-T<F%T96=Y(&EN
- XM9&5P96YD96YT(&]F(&%N>0H@(" @('-P96-I9FEC(&1E=FEC92!I;G1E<F9A
- XM8V4N("!)9B!A(&UO=7-E(&)U='1O;B!I<R!P<F5S<V5D(&)E9F]R92!A"B @
- XM(" @:V5Y8F]A<F0@:V5Y(&ES('!R97-S960L('1H92!F;VQL;W=I;F<@<F]U
- XM=&EN92!S:&]U;&0@8F4@8V%L;&5D.@H*"2 @(" @7PAM7PAO7PAU7PAS7PAE
- XM7PAC7PAL7PAI7PAC7PAK*%\(:5\(;E\(="!?"')?"&]?"'<L(%\(:5\(;E\(
- XM="!?"&-?"&]?"&Q?"'5?"&U?"&XI.PH*(" @("!W:&5R92!R;W<@86YD(&-O
- XM;'5M;B!A<F4@=&AE("!C=7)R96YT("!C;RUO<F1I;F%T97,L("!C;W5N=&5D
- XM("!I;@H@(" @(&-H87)A8W1E<B @<&]S:71I;VYS+" @;V8@('1H92!M;W5S
- XM92!P;VEN=&5R('=I=&AI;B!T:&4@<V-R965N(&]R"B @(" @961I=&EN9R!W
- XM:6YD;W<N("!)9B!T:&4@;6]U<V4@:7,@;6]V960@=VAI;&4@(&$@(&)U='1O
- XM;B @:7,@(&AE;&0*(" @("!D;W=N+"!T:&4@<F]U=&EN90H*"2 @(" @7PAM
- XM7PAO7PAU7PAS7PAE7PAD7PAR7PAA7PAG*%\(:5\(;E\(="!?"'-?"'1?"&%?
- XM"')?"'1?"')?"&]?"'<L(%\(:5\(;E\(="!?"&5?"&Y?"&1?"')?"&]?"'<L
- XM(%\(:5\(;E\(="!?"'-?"'1?"&%?"')?"'1?"&-?"&]?"&Q?"'5?"&U?"&XL
- XM(%\(:5\(;E\(="!?"&5?"&Y?"&1?"&-?"&]?"&Q?"'5?"&U?"&XI.PH*(" @
- XM("!S:&]U;&0@8F4@8V%L;&5D('=I=&@@8V\M;W)D:6YA=&5S(&1E<V-R:6)I
- XM;F<@=&AE("!M;W9E;65N="X@("!)9@H@(" @('1H92!G;&]B86P@=F%R:6%B
- XM;&4@7PA37PAT7PAA7PAT7PAE(&ES(&YO="!E<75A;"!T;R!?"$Y?"$]?"%)?
- XM"$U?"$%?"$PL(&UO=7-E(&EN<'5T(&-A;@H@(" @(&)E(&EG;F]R960@86QT
- XM;V=E=&AE<BX*"B @(" @06QL('1H:7,@=VEL;"!B92!C;VYS:61E<F%B;'D@
- XM=&ED:65D('5P(&%T(&$@;&%T97(@<W1A9V4L('=H96X@=V4*(" @("!H879E
- XM('!R;W!E<B!?"'A?"'9?"$5?"'9?"&5?"&Y?"'0@='EP97,@9F]R(&9U;F-T
- XM:6]N(&ME>7,@86YD(&UO=7-E(&%C=&EO;G,N"@H@(" @(%\(-"Y?"#@N("!?
- XM"$U?"&%?"&E?"&X*"B @(" @1FEN86QL>2P@=&AE("!S>7-T96T@(&EN=&5R
- XM9F%C92 @;6]D=6QE("!M=7-T("!P<F]V:61E("!A("!M86EN*"D*(" @("!F
- XM=6YC=&EO;BX@("!4:&ES("!F=6YC=&EO;B @;75S="!C86QL('AV:5]S=&%R
- XM='5P*'9S+"!A<F=C+"!A<F=V+ H@(" @(&5N=BD@870@<W1A<G1U<"P@=VET
- XM:"!P87)A;65T97)S(&%S(&9O;&QO=W,Z"@H@(" @(%9I<G-T4V-R("IV<SL*
- XM"2 @5&AI<R!I<R!A('!O:6YT97(@=&\@=&AE(%9I<G138W(@('-T<G5C='5R
- XM92 @9F]R("!T:&4@(&9I<G-T"@D@('=I;F1O=RP@;W(@9F]R('1H92!T97)M
- XM:6YA;"!S8W)E96XN"@H@(" @(&EN="!A<F=C+"!C:&%R("HJ87)G=CL*"2 @
- XM5&AE<V4@87)E(&%S(&9O<B!A(&UA:6XH*2!F=6YC=&EO;BX*"B @(" @8VAA
- XM<B J96YV.PH)("!4:&ES(&ES(&%N(&5N=FER;VYM96YT('-T<FEN9RP@(&YO
- XM<FUA;&QY("!T:&4@(')E='5R;B @=F%L=64*"2 @9G)O;2 @(&=E=&5N=B@B
- XM6%9)3DE4(BDN(" @268@('1H92 @8V]N8V5P=" @;V8@(&5N=FER;VYM96YT
- XM"@D@('9A<FEA8FQE<R @9&]E<R @;F]T(" @97AI<W0L(" @82 @('-T<FEN
- XM9R @(&]F(" @=&AE(" @9F]R;0H)(" B<V]U<F-E(%\(9E\(:5\(;%\(95\(
- XM;E\(85\(;5\(92(@(&UA>2 @8F4@('!A<W-E9" @:6YS=&5A9"P@('-O(&%S
- XM('1O(&%L;&]W"@D@('5S97)S('1O(&QO8V%L:7-E('1H96ER('5S86=E(&]F
- XM('1H92!E9&ET;W(N"@H@(" @(%1H92!R971U<FX@=F%L=64@9G)O;2!X=FE?
- XM<W1A<G1U<"@I(&ES(&$@<&]I;G1E<BP@=VAI8V@@('=I;&P@(&)E"B @(" @
- XM=7-E9"!I;B!F=71U<F4@=&\@:61E;G1I9GD@=&AE('=I;F1O=R!F;W(@:6YP
- XM=70@979E;G1S+B @1F]R(&YO=RP*(" @("!I="!S:&]U;&0@8F4@<W1O<F5D
- XM(&EN('1H92!6:7)T4V-R)W,@<'9?=VEN9&]W(&9I96QD+@H*(" @("!(879I
- XM;F<@8V%L;&5D('AV:5]S=&%R='5P*"DL(&EN<'5T(&5V96YT<R!M87D@=&AE
- XM;B!B92 @<&%S<V5D("!T;PH@(" @('1H92 @961I=&]R("!B>2 @8V%L;&EN
- XM9R @>'9I7VAA;F1L95]E=F5N=" @=VET:" @82!P;VEN=&5R('1O(&%N"B @
- XM(" @>'9%=F5N="!S=')U8W1U<F4@(&%S("!T:&4@('-O;&4@(&%R9W5M96YT
- XM+B @(%1H:7,@('-T<G5C='5R92 @:7,*(" @("!D969I;F5D(&%S(&9O;&QO
- XM=W,Z"@H*"@H*"B @(" @7PA07PAA7PAG7PAE(%\(,5\(-" @(" @(" @(" @
- XM(" @(" @(" @(" @(" @(" @(" @(" @(" @(%\(,E\(-5\(=%\(:"!?"%-?
- XM"&5?"'!?"'1?"&5?"&U?"&)?"&5?"'(@7P@Q7P@Y7P@Y7P@R"@H*"@H*(" @
- XM("!?"%A?"'9?"&D@7PA37PAO7PAU7PAR7PAC7PAE(%\(0U\(;U\(9%\(92!?
- XM"$Y?"&]?"'1?"&5?"',@(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
- XM(" @(" @(" @("!?"#%?"#4*"@H*"2 @(" @7PAT7PAY7PAP7PAE7PAD7PAE
- XM7PAF(%\(<U\(=%\(<E\(=5\(8U\(="!?"&5?"'9?"&5?"&Y?"'0@>PH)"2!?
- XM"&5?"&Y?"'5?"&T@>PH)"2 @(" @7PA%7PAV7U\(8U\(:%\(85\(<BP*"0D@
- XM(" @(%\(15\(=E]?"'1?"&E?"&U?"&5?"&]?"'5?"'0*"0D@?2 @(" @(" @
- XM(" @(" @(" @("!?"&5?"'9?7PAT7PAY7PAP7PAE.PH)"2!?"'5?"&Y?"&E?
- XM"&]?"&X@>PH)"2 @(" @+RH@7PA%7PAV7U\(8U\(:%\(85\(<CH@*B\*"0D@
- XM(" @(%\(:5\(;E\(="!?"&5?"'9?"'5?7PAI7PAN7PAC7PAH7PAA7PAR.PH*
- XM"0D@(" @("\J(%\(15\(=E]?"'1?"&E?"&U?"&5?"&]?"'5?"'0Z("HO"@D)
- XM('T@(" @(" @(" @(" @(" @(" @7PAE7PAV7U\(=3L*"2 @(" @?2!?"'A?
- XM"'9?"$5?"'9?"&5?"&Y?"'0["@H)(" @(" C7PAD7PAE7PAF7PAI7PAN7PAE
- XM(%\(95\(=E]?"&E?"&Y?"&-?"&A?"&%?"'(@(" @(" @7PAE7PAV7U\(=2Y?
- XM"&5?"'9?"'5?7PAI7PAN7PAC7PAH7PAA7PAR"@H*(" @("!4:&4@979?='EP
- XM92!F:65L9"!I<R!A('1A9R!W:&EC:"!I9&5N=&EF:65S("!T:&4@('1Y<&4@
- XM(&]F("!E=F5N= H@(" @('=H:6-H("!H87,@(&]C8W5R<F5D+B @070@<')E
- XM<V5N="P@;VYL>2!T=V\@979E;G1S(&%R92!S=7!P;W)T960Z"B @(" @86X@
- XM:6YP=70@8VAA<F%C=&5R(&9R;VT@=&AE('5S97(L(&%N9"!A('1I;65O=70N
- XM("!4:&4@=6YI;VX@=VAI8V@*(" @("!F;VQL;W=S("!C;VYT86EN<R!D871A
- XM(&%S<V]C:6%T960@=VET:"!E86-H(&5V96YT('1Y<&4[(&-U<G)E;G1L>0H@
- XM(" @(&]N;'D@=&AE('1Y<&4@179?8VAA<B!R97%U:7)E<R!D871A+"!A<R!M
- XM87D@8F4@<V5E;BX@(%1H92 C7PAD7PAE7PAF7PAI7PAN7PAE"B @(" @9F]R
- XM(&5V7VEN8VAA<B!I<R!P<F]V:61E9"!P=7)E;'D@9F]R(&-O;G9E;FEE;F-E
- XM+@H*(" @("!4:&4@<F5T=7)N('9A;'5E(&9R;VT@>'9I7VAA;F1L95]E=F5N
- XM="@I(&ES(&$@;&]N9R!I;G1E9V5R("!V86QU90H@(" @('=H:6-H("!I<R @
- XM=&AE("!T:6UE("!I;B @;6EL;&ES96-O;F1S("!F;W(@('=H:6-H("!T:&4@
- XM961I=&]R(&ES"B @(" @<')E<&%R960@=&\@=V%I="!F;W(@;6]R92!I;G!U
- XM="X@($EF(&YO(&EN<'5T(&%R<FEV97,@=VET:&EN('1H870*(" @("!T:6UE
- XM+" @=&AE("!F=6YC=&EO;B!S:&]U;&0@8F4@8V%L;&5D(&%G86EN('=I=&@@
- XM86X@979E;G0@;V8@='EP90H@(" @($5V7W1I;65O=70N("!4:&4@=&EM96]U
- XM="!V86QU92!R971U<FYE9" @;6%Y("!B92 @,$PL("!I;F1I8V%T:6YG"B @
- XM(" @=&AA="!N;R!T:6UE;W5T(&ES(&YE8V5S<V%R>2X@($ET(&ES('9E<GD@
- XM:6UP;W)T86YT('1H870@=&EM96]U=',*(" @("!S:&]U;&0@86-T=6%L;'D@
- XM8F4@:6UP;&5M96YT960@8F5C875S92!T:&5Y(&%R92 @;F5E9&5D("!F;W(@
- XM('1H90H@(" @(%\(<%\(<E\(95\(<U\(95\(<E\(=E\(92!F86-I;&ET>2X*
- XM"B @(" @0W5R<F5N=&QY+" @("!I9B @("!A(" @(&ME>6)O87)D(" @(&EN
- XM=&5R<G5P=" @("!I<R @("!R96-E:79E9"P*(" @("!?"'A?"'9?"&E?7PAH
- XM7PAA7PAN7PAD7PAL7PAE7U\(95\(=E\(95\(;E\(="@I("!N965D("!N;W0@
- XM(&)E(&-A;&QE9" H:70@<VAO=6QD+"!I;B!A;GD@8V%S92P*(" @("!N979E
- XM<B!B92!C86QL960@9G)O;2!A;B!A<WEN8VAR;VYO=7,@:6YT97)R=7!T(&]R
- XM('-I9VYA;"!H86YD;&5R*0H@(" @(&)U=" @=&AE("!G;&]B86P@('9A<FEA
- XM8FQE("!?"&M?"&)?"&1?"&E?"&Y?"'1?"'(@('-H;W5L9" @8F4@<V5T('1O
- XM(&$@;F]N+7IE<F\*(" @("!V86QU92X*"@H*(" @("!?"#4N("!?"$1?"$%?
- XM"%1?"$$@7PA37PA47PA27PA57PA#7PA47PA57PA27PA%7PA3"@H@(" @(%-T
- XM<G5C='5R97,@=7-E9"!I;B!X=FD@87)E(&%L;"!T>7!E9&5F)V0L(&%N9"!A
- XM;&P@(&)E9VEN("!W:71H("!A"B @(" @8V%P:71A;" @;&5T=&5R+B @(%1H
- XM97D@87)E(&1E9FEN960@:6X@7PAX7PAV7PAI+E\(:"X@(%1H92!F;VQL;W=I
- XM;F<@9&%T80H@(" @('-T<G5C='5R97,@87)E(&1E9FEN960Z"@H@(" @(%\(
- XM-2Y?"#$N("!?"$Q?"&E?"&Y?"&4*"B @(" @5&AI<R!S=')U8W1U<F4@:7,@
- XM=7-E9"!T;R!H;VQD(&$@<VEN9VQE('1E>'0@;&EN92X@("!)=" @8V]N=&%I
- XM;G,*(" @("!F;W)W87)D("!A;F0@(&)A8VMW87)D("!P;VEN=&5R<R @=VAI
- XM8V@@87)E(&-O;FYE8W1E9"!T;V=E=&AE<B!T;PH@(" @(&9O<FT@82!T=V\M
- XM=V%Y(&QI;FME9"!L:7-T+B @270@86QS;R!C;VYT86EN<R @82 @<&]I;G1E
- XM<B @=&\@(&%N"B @(" @86QL;V-A=&5D("!T97AT("!B=69F97(L(&%N(&EN
- XM=&5G97(@<F5C;W)D:6YG('1H92!N=6UB97(@;V8@8GET97,*(" @("!A;&QO
- XM8V%T960@9F]R('1H92!T97AT+"!A;F0@=&AE(&QI;F4@;G5M8F5R("AA;B @
- XM=6YS:6=N960@(&QO;F<I+@H@(" @(%1H92 @=&5X=" @:7,@;G5L;"UT97)M
- XM:6YA=&5D+"!A;F0@=&AE('-P86-E(&%L;&]C871E9"!F;W(@:70@;6%Y"@H*
- XM(" @("!?"#)?"#5?"'1?"&@@7PA37PAE7PAP7PAT7PAE7PAM7PAB7PAE7PAR
- XM(%\(,5\(.5\(.5\(,B @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
- XM(" @(" @(%\(4%\(85\(9U\(92!?"#%?"#4*"@H*"@H@(" @(%\(,5\(-B @
- XM(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(%\(6%\(
- XM=E\(:2!?"%-?"&]?"'5?"')?"&-?"&4@7PA#7PAO7PAD7PAE(%\(3E\(;U\(
- XM=%\(95\(<PH*"B @(" @8F4@9W)O=VX@8G5T(&ES(&YE=F5R('-H<G5N:RX@
- XM(%1H92!M87AI;75M('-I>F4@;V8@=&AI<R!S<&%C92 @:7,*(" @("!G:79E
- XM;B!B>2!?"$U?"$%?"%A?7PA,7PA)7PA.7PA%7U\(3%\(15\(3E\(1U\(5%\(
- XM2"X*"B @(" @5&AE(&QI;F4@;G5M8F5R(&ES('5S960@=VAE;B!S:&]W:6YG
- XM(&QI;F4@;G5M8F5R<R!O;B!S8W)E96XL("!B=70*(" @("!T:&ES(&ES('-E
- XM8V]N9&%R>2!T;R!I=',@;6%I;B!P=7)P;W-E(&]F('!R;W9I9&EN9R!A;B!O
- XM<F1E<FEN9R!O;@H@(" @(&QI;F5S.R!T:&4@;W)D97)I;F<@;V8@='=O(&QI
- XM;F5S(&EN(&$@;&ES="!M87D@8F4@97-T86)L:7-H960@(&)Y"B @(" @<VEM
- XM<&QY("!C;VUP87)I;F<@('1H96ER("!L:6YE("!N=6UB97)S("AM86-R;W,@
- XM87)E(&%V86EL86)L92!F;W(*(" @("!T:&ES('!U<G!O<V4[('-E92!L871E
- XM<B!F;W(@9&5T86EL<RDN"@H@(" @(%\(-2Y?"#(N("!?"$)?"'5?"&9?"&9?
- XM"&5?"'(*"B @(" @5&AI<R!S=')U8W1U<F4@:&]L9',@=&AE(&EN=&5R;F%L
- XM(')E<')E<V5N=&%T:6]N(&]F(&$@(&9I;&4N(" @270*(" @("!C;VYT86EN
- XM<R @<&]I;G1E<G,@=&\@=&AE(&QI;FME9"!L:7-T(&]F(&QI;F5S('=H:6-H
- XM(&-O;7!R:7-E('1H90H@(" @(&%C='5A;"!T97AT+B @5V4@86QW87ES(&%L
- XM;&]C871E(&%N(&5X=')A(&QI;F4@870@('1H92 @8F5G:6YN:6YG"B @(" @
- XM86YD("!T:&4@96YD+"!W:71H(&QI;F4@;G5M8F5R<R P(&%N9"!?"$U?"$%?
- XM"%A?7PA,7PA)7PA.7PA%7PA.7PA/(')E<W!E8W1I=F5L>2P@:6X*(" @("!O
- XM<F1E<B!T;R!M86ME('1H92!C;V1E('=H:6-H(&1E86QS('=I=&@@('1H:7,@
- XM('-T<G5C='5R92 @96%S:65R+@H@(" @(%1H92 @;&EN92 @;G5M8F5R<R @
- XM;V8@($QI;F4@('-T<G5C='5R97,@(&EN("!A($)U9F9E<B!A<F4@86QW87ES
- XM"B @(" @;6%I;G1A:6YE9"!B>2!C;V1E(&EN('5N9&\N8RP@=VAI8V@@:7,@
- XM=&AE(&]N;'D@;6]D=6QE('=H:6-H(&5V97(*(" @("!C:&%N9V5S('1H92!T
- XM97AT(&]F(&$@0G5F9F5R+@H*(" @("!4:&4@0G5F9F5R('-T<G5C='5R92!A
- XM;'-O(&-O;G1A:6YS.@H*(" @("!O""L@(" @9FQA9W,L(&EN8VQU9&EN9R!R
- XM96%D;VYL>2!A;F0@;6]D:69I960*"B @(" @;P@K(" @(&-U<G)E;G0@9FEL
- XM96YA;64@87-S;V-I871E9"!W:71H('1H92!B=69F97(*"B @(" @;P@K(" @
- XM('1E;7!O<F%R>2!F:6QE;F%M92!F;W(@8G5F9F5R('!R97-E<G9A=&EO;@H*
- XM(" @("!O""L@(" @<W!A8V4@9F]R('1H92!?"&U?"&%?"')?"&L@;6]D=6QE
- XM('1O('-T;W)E(&EN9F]R;6%T:6]N(&%B;W5T("!M87)K960*"2 @;&EN97,*
- XM"B @(" @;P@K(" @('-P86-E(&9O<B!T:&4@7PAU7PAN7PAD7PAO(&UO9'5L
- XM92!T;R @<W1O<F4@(&EN9F]R;6%T:6]N("!A8F]U=" @=&AE"@D@(&QA<W0@
- XM8VAA;F=E"@H@(" @(&\(*R @("!N=6UB97(@;V8@=VEN9&]W<R!A<W-O8VEA
- XM=&5D('=I=&@@=&AE(&)U9F9E<@H*(" @("!4:&4@9F]L;&]W:6YG(&UA8W)O
- XM<R!A<F4@=7-E9"!T;R @9FEN9" @;W5T("!C97)T86EN("!I;F9O<FUA=&EO
- XM;@H@(" @(&%B;W5T($QI;F5S('=I=&AI;B!"=69F97)S.@H*(" @("!L:6YE
- XM;F\H0G5F9F5R("IB+"!,:6YE("IL*0H)("!2971U<FYS('1H92!L:6YE(&YU
- XM;6)E<B!O9B!T:&4@<W!E8VEF:65D($QI;F4L('=H:6-H(&)E;&]N9W,*"2 @
- XM=&\@=&AE('-P96-I9FEE9"!"=69F97(N"@H@(" @(&5A<FQI97(H3&EN92 J
- XM;#$L($QI;F4@*FPR*0H)("!2971U<FYS(%\(5%\(4E\(55\(12!I9B!L,2!I
- XM<R!E87)L:65R(&EN('1H92!B=69F97(@=&AA;B!L,BX*"B @(" @;&%T97(H
- XM3&EN92 J;#$L($QI;F4@*FPR*0H)("!2971U<FYS(%\(5%\(4E\(55\(12!I
- XM9B!L,2!I<R!L871E<B!I;B!T:&4@8G5F9F5R('1H86X@;#(N"@H@(" @(&ES
- XM7VQA<W1L:6YE*$QI;F4@*FPQ*0H)("!2971U<FYS(%\(5%\(4E\(55\(12!I
- XM9B!L,2!I<R!T:&4@;&%S="!L:6YE("AI+F4N('1H92!E>'1R82!L:6YE("!A
- XM= H)("!T:&4@96YD+"!N;W0@=&AE(&QA<W0@=&5X="!L:6YE*2!O9B!T:&4@
- XM8G5F9F5R+@H*"@H*"B @(" @7PA07PAA7PAG7PAE(%\(,5\(-B @(" @(" @
- XM(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(%\(,E\(-5\(=%\(:"!?
- XM"%-?"&5?"'!?"'1?"&5?"&U?"&)?"&5?"'(@7P@Q7P@Y7P@Y7P@R"@H*"@H*
- XM(" @("!?"%A?"'9?"&D@7PA37PAO7PAU7PAR7PAC7PAE(%\(0U\(;U\(9%\(
- XM92!?"$Y?"&]?"'1?"&5?"',@(" @(" @(" @(" @(" @(" @(" @(" @(" @
- XM(" @(" @(" @(" @("!?"#%?"#<*"@H@(" @(&ES7VQI;F4P*$QI;F4@*FPQ
- XM*0H)("!2971U<FYS(%\(5%\(4E\(55\(12!I9B!L,2!I<R!T:&4@,'1H(&QI
- XM;F4@*&DN92X@=&AE(&5X=')A("!L:6YE("!A= H)("!T:&4@<W1A<G0L(&YO
- XM="!T:&4@9FER<W0@=&5X="!L:6YE*2!O9B!T:&4@8G5F9F5R+@H*(" @("!?
- XM"#4N7P@S+B @7PA07PAO7PAS7PAN"@H@(" @(%1H:7,@<W1R=6-T=7)E(&ES
- XM('9E<GD@<VEM<&QE.R!I="!C;VYT86EN<R!A($QI;F4@<&]I;G1E<B!A;F0@
- XM(&%N"B @(" @:6YT96=E<B @:6YD97@@(&EN=&\@('1H92 @;&EN92=S("!T
- XM97AT+" @86YD(&ES('5S960@=&\@<F5C;W)D(&$*(" @("!P;W-I=&EO;B!W
- XM:71H:6X@82!B=69F97(L(&4N9RX@=&AE(&-U<G)E;G0@8W5R<V]R('!O<VET
- XM:6]N+@H*(" @("!4:&5S92!F=6YC=&EO;G,@87)E(&%V86EL86)L92!F;W(@
- XM;W!E<F%T:6YG(&]N(%!O<VX@<W1R=6-T=7)E<SH*"B @(" @9V-H87(H4&]S
- XM;B J*0H)("!2971U<FYS('1H92!C:&%R86-T97(@=VAI8V@@:7,@870@=&AE
- XM(&=I=F5N('!O<VET:6]N+@H*(" @("!I;F,H4&]S;B J*0H)("!);F-R96UE
- XM;G1S('1H92!G:79E;B!P;W-I=&EO;BP@;6]V:6YG("!P87-T("!E;F0M;V8M
- XM;&EN92 @=&\*"2 @=&AE(&YE>'0@;&EN92!I9B!N96-E<W-A<GDN("!4:&4@
- XM9F]L;&]W:6YG('1Y<&4@:7,@<F5T=7)N960Z"@H)(" @(%\(95\(;E\(=5\(
- XM;2!?"&U?"'9?"'1?"'E?"'!?"&4@>PH)"5\(;5\(=E]?"$Y?"$]?"$U?"$]?
- XM"%9?"$4L(" @("\J(%\(85\(="!?"&)?"&5?"&=?"&E?"&Y?"&Y?"&E?"&Y?
- XM"&<@7PAO7PAR(%\(95\(;E\(9"!?"&]?"&8@7PAB7PAU7PAF7PAF7PAE7PAR
- XM("HO"@D)7PAM7PAV7U\(4U\(05\(35\(15\(3%\(25\(3E\(12P@("\J(%\(
- XM<U\(=%\(:5\(;%\(;"!?"'=?"&E?"'1?"&A?"&E?"&X@7PAS7PAA7PAM7PAE
- XM(%\(;%\(:5\(;E\(92 J+PH)"5\(;5\(=E]?"$-?"$A?"$Q?"$E?"$Y?"$4L
- XM(" @("\J(%\(8U\(:%\(85\(;E\(9U\(95\(9"!?"'1?"&\@7PAD7PAI7PAF
- XM7PAF7PAE7PAR7PAE7PAN7PAT(%\(;%\(:5\(;E\(92 J+PH)"5\(;5\(=E]?
- XM"$5?"$]?"$PL(" @(" @("\J(%\(85\(="!?"'1?"&5?"')?"&U?"&E?"&Y?
- XM"&%?"'1?"&E?"&Y?"&<@)U\(7%\(,"<@*B\*"2 @("!].PH*"B @(" @9&5C
- XM*%!O<VX@*BD*"2 @07,@9F]R(&EN8R@I(&)U="!D96-R96UE;G1S('1H92!P
- XM;W-I=&EO;BX*"B @(" @;'0H4&]S;B J<#$L(%!O<VX@*G R*0H)("!2971U
- XM<FYS(%\(5%\(4E\(55\(12!I9B!T:&4@<&]S:71I;VX@<W!E8VEF:65D(&)Y
- XM(' Q(&ES("!E87)L:65R("!I;@H)("!T:&4@8G5F9F5R('1H86X@=&AA="!S
- XM<&5C:69I960@8GD@<#(N"@H@(" @(%\(-2Y?"#0N("!?"%A?"'9?"&E?"'=?
- XM"&E?"&X*"B @(" @5&AI<R!S=')U8W1U<F4@;6%P<R!A('-C<F5E;B!W:6YD
- XM;W<@;VYT;R!A($)U9F9E<BX@($ET(&-O;G1A:6YS.@H*(" @("!O""L@(" @
- XM82!P;VEN=&5R('1O('1H92!"=69F97(@<W1R=6-T=7)E('=H:6-H(&ET(&ES
- XM(&UA<'!E9"!O;G1O"@H@(" @(&\(*R @("!T:&4@(&-U<G-O<B=S("!?"&Q?
- XM"&]?"&=?"&E?"&-?"&%?"&P@('!O<VET:6]N("!I;B @=&AE("!B=69F97(@
- XM("AA(" @4&]S;@H)("!S=')U8W1U<F4I"@H@(" @(&\(*R @("!T:&4@8W5R
- XM<V]R)W,@(%\(<%\(:%\(>5\(<U\(:5\(8U\(85\(;" @<&]S:71I;VX@(&EN
- XM("!T:&4@('=I;F1O=R @*')O=R @86YD"@D@(&-O;'5M;BD*"B @(" @;P@K
- XM(" @(&EN9F]R;6%T:6]N(&%B;W5T('-I>F4@86YD(&QO8V%T:6]N(&]F('-C
- XM<F5E;B!W:6YD;W<*"B @(" @;P@K(" @(&-U<G)E;G0@=&5X="!O9B!S=&%T
- XM=7,@;&EN90H*(" @("!O""L@(" @9F]R=V%R9"!A;F0@8F%C:W=A<F0@<&]I
- XM;G1E<G,@=&\@;W1H97(@=VEN9&]W<PH*(" @("!.;W1E('1H870@=&AE<F4@
- XM:7,@870@;&5A<W0@;VYE(%AV:7=I;B!F;W(@979E<GD@0G5F9F5R+@H*(" @
- XM("!7:&5N('1H92!E9&ET;W(@=V%S(&UO9&EF:65D("!T;R @<W5P<&]R=" @
- XM8G5F9F5R("!W:6YD;W=S+" @;6%N>0H*"B @(" @7P@R7P@U7PAT7PAH(%\(
- XM4U\(95\(<%\(=%\(95\(;5\(8E\(95\(<B!?"#%?"#E?"#E?"#(@(" @(" @
- XM(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @("!?"%!?"&%?"&=?"&4@
- XM7P@Q7P@W"@H*"@H*(" @("!?"#%?"#@@(" @(" @(" @(" @(" @(" @(" @
- XM(" @(" @(" @(" @(" @(" @("!?"%A?"'9?"&D@7PA37PAO7PAU7PAR7PAC
- XM7PAE(%\(0U\(;U\(9%\(92!?"$Y?"&]?"'1?"&5?"',*"@H@(" @(&=L;V)A
- XM;" @('9A<FEA8FQE<R @('=E<F4@("!M;W9E9" @:6YT;R @=&AE("!"=69F
- XM97(@(&%N9" @6'9I=VEN"B @(" @<W1R=6-T=7)E<SL@<V]M92!W97)E(&QE
- XM9G0@87,@9VQO8F%L<RX@($9O<B @:6YS=&%N8V4L("!T:&4@(%\(=5\(;E\(
- XM9%\(;PH@(" @(&%N9" @7PAM7PAA7PAR7PAK("!F86-I;&ET:65S("!A<F4@
- XM(&]B=FEO=7-L>2!B=69F97(M<F5L871E9"P@8G5T(%\(>5\(85\(;E\(:R!I
- XM<PH@(" @('5S969U;"!I9B!I="!I<R!G;&]B86P@*&%C='5A;&QY('-T871I
- XM8R!W:71H:6X@:71S("!O=VX@(&UO9'5L92D["B @(" @:70@=V%S(&1E8VED
- XM960@=&AA="!?"'-?"&5?"&%?"')?"&-?"&@@86YD(%\(<E\(95\(9%\(;R!S
- XM:&]U;&0@86QS;R!B92!G;&]B86PN"@H@(" @(%-O;64@;6]D=6QE<R!H879E
- XM('1H96ER(&]W;B!I;G1E<FYA;"!S=&%T:6,@9&%T82!S=')U8W1U<F5S.R @
- XM9F]R"B @(" @:6YS=&%N8V4L("!T:&4@(%\(<U\(95\(85\(<E\(8U\(:"!M
- XM;V1U;&4@<F5M96UB97)S('1H92!L87-T('!A='1E<FX@<V5A<F-H960*(" @
- XM("!F;W(N(" @06QS;RP@(&-E<G1A:6X@(&UO9'5L97,@('5S92 @9&%T82 @
- XM<W1R=6-T=7)E<R @=VAI8V@@(&%R90H@(" @(&EN8VQU9&5D(&EN(&UO<F4@
- XM9VQO8F%L(&]N97,[(&4N9RX@96%C:"!"=69F97(@<W1R=6-T=7)E(&-O;G1A
- XM:6YS"B @(" @<V]M92!D871A('5S960@(&]N;'D@('=I=&AI;B @7PAU7PAN
- XM7PAD7PAO+E\(8RX@("!4:&ES("!I<R @;F]T("!V97)Y("!W96QL"B @(" @
- XM<W1R=6-T=7)E9"P@(&)U=" @:6X@('!R86-T:6-E(&ET)W,@<75I=&4@8VQE
- XM86X@8F5C875S92!W92!S:6UP;'D*(" @("!E;G-U<F4@=&AA="!R969E<F5N
- XM8V5S('1O('-U8V@@<W1R=6-T=7)E<R!A<F4@:V5P="!L;V-A;" @=&\@('1H
- XM90H@(" @(&UO9'5L92!W:&EC:" B;W=N<R(@=&AE;2X*"B @(" @7P@U+E\(
- XM-2X@(%\(35\(85\(<E\(:PH*(" @("!4:&ES(&1A=&$@<W1R=6-T=7)E(')E
- XM8V]R9',@82!M87)K("AD969I;F5D(&)Y("!T:&4@(&T@(&-O;6UA;F0I+@H@
- XM(" @($ET(&-O;G1A:6YS(&$@4&]S;B!A;F0@82!C:&%R86-T97(@9FEE;&0@
- XM=&\@:&]L9"!T:&4@;&5T=&5R('=H:6-H"B @(" @9&5F:6YE<R!T:&4@(&UA
- XM<FLN(" @16%C:" @0G5F9F5R("!C;VYT86EN<R @86X@(&%R<F%Y("!O9B @
- XM=&AE<V4*(" @("!S=')U8W1U<F5S("!F;W(@(&AO;&1I;F<@(&%L<&AA8F5T
- XM:6,@(&UA<FMS+" @<&QU<R @;VYE("!F;W(@('1H90H@(" @('!R979I;W5S
- XM(&-O;G1E>'0@;6%R:R H87,@=7-E9"!B>2!T:&4@)R<@86YD(&!@("!C;VUM
- XM86YD<RDN(" @5&AE"B @(" @9FEL92!?"&U?"&%?"')?"&LN7PAC(&1E86QS
- XM('=I=&@@;6%R:W,N"@H@(" @(%\(-2Y?"#8N("!?"$-?"&A?"&%?"&Y?"&=?
- XM"&4*"B @(" @5&AI<R!S=')U8W1U<F4@<F5C;W)D<R!A('-I;F=L92!C:&%N
- XM9V4@=VAI8V@@:&%S(&)E96X@;6%D92 @=&\@(&$*(" @("!B=69F97(N(" @
- XM270@(&%L<V\@(&-O;G1A:6YS("!A('!O:6YT97(L('-O('1H870@:70@;6%Y
- XM(&)E(&9O<FUE9 H@(" @(&EN=&\@82!L:7-T+B @4V5E('1H92!D:7-C=7-S
- XM:6]N("!O9B @7PAU7PAN7PAD7PAO+E\(8R @8F5L;W<@(&9O<B @9G5R=&AE
- XM<@H@(" @(&1E=&%I;',N"@H@(" @(%\(-2Y?"#<N("!?"$9?"&Q?"&5?"'A?
- XM"&)?"'5?"&8*"B @(" @5&AI<R!S=')U8W1U<F4@:7,@=7-E9"!T;R!S=&]R
- XM92!T97AT('-T<FEN9W,@9F]R('=H:6-H('1H92!L96YG=&@*(" @("!I<R @
- XM=6YK;F]W;BX@(%1H92!F;VQL;W=I;F<@;W!E<F%T:6]N<R!A<F4@9&5F:6YE
- XM9"!F;W(@=&AI<R!T>7!E+@H@(" @($%L;"!F=6YC=&EO;G,@=&%K92!A($9L
- XM97AB=68@<&]I;G1E<B!A<R!A('!A<F%M971E<BX*"B @(" @9FQE>&YE=RAF
- XM*0H)("!);FET:6%L:7-E(&$@1FQE>&)U9CL@;F]T(&YE961E9"!F;W(@<W1A
- XM=&EC($9L97AB=69S+@H*(" @("!F;&5X8VQE87(H9BD*"2 @5')U;F-A=&4@
- XM82!&;&5X8G5F("!T;R @>F5R;R @;&5N9W1H+" @8G5T("!D;VXG=" @9G)E
- XM92 @:71S"@D@('-T;W)A9V4N"@H@(" @(&9L97AD96QE=&4H9BD*"2 @1G)E
- XM92!A;&P@<W1O<F%G92!B96QO;F=I;F<@=&\@82!&;&5X8G5F+@H*(" @("!F
- XM;&5X96UP='DH9BD*"2 @4F5T=7)N(%\(5%\(4E\(55\(12!I9B!T:&4@1FQE
- XM>&)U9B!I<R!E;7!T>2X*"B @(" @9FQE>&QE;BAF*0H)("!2971U<FX@=&AE
- XM(&YU;6)E<B!O9B!C:&%R86-T97)S(&EN('1H92!&;&5X8G5F+@H*"@H*"B @
- XM(" @7PA07PAA7PAG7PAE(%\(,5\(." @(" @(" @(" @(" @(" @(" @(" @
- XM(" @(" @(" @(" @(" @(%\(,E\(-5\(=%\(:"!?"%-?"&5?"'!?"'1?"&5?
- XM"&U?"&)?"&5?"'(@7P@Q7P@Y7P@Y7P@R"@H*"@H*(" @("!?"%A?"'9?"&D@
- XM7PA37PAO7PAU7PAR7PAC7PAE(%\(0U\(;U\(9%\(92!?"$Y?"&]?"'1?"&5?
- XM"',@(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @("!?
- XM"#%?"#D*"@H@(" @(&9L97AR;6-H87(H9BD*"2 @4F5M;W9E('1H92!L87-T
- XM(&-H87)A8W1E<B!F<F]M(&$@1FQE>&)U9BX*"B @(" @9FQE>'!O<&-H*&8I
- XM"@D@(%)E;6]V92!T:&4@9FER<W0@8VAA<F%C=&5R(&9R;VT@82!&;&5X8G5F
- XM(&%N9"!R971U<FX@:70N"@H@(" @(&9L97AG971S='(H9BD*"2 @4F5T=7)N
- XM(&$@<&]I;G1E<B!T;R!T:&4@<W1R:6YG(&-O;G1A:6YE9"!I;B!T:&4@1FQE
- XM>&)U9BX*"B @(" @9FQE>&%D9&-H*&8L(&,I"@D@($%D9"!T:&4@8VAA<F%C
- XM=&5R(&,@=&\@=&AE(&5N9"!O9B!T:&4@1FQE>&)U9BX*"B @(" @;&9O<FUA
- XM="AF+"!F;70L("XN+BD*"2 @02!S=6)S970@;V8@<W!R:6YT9B@I(&)U="!F
- XM;W(@1FQE>&)U9G,N"@H@(" @('9F;W)M870H9BP@9FUT+"!V85]L:7-T*0H)
- XM("!!('-U8G-E="!O9B!V<W!R:6YT9B@I(&)U="!F;W(@1FQE>&)U9G,N"@H@
- XM(" @(%1H92!L87-T('1W;R!F=6YC=&EO;G,@87)E(&5S<&5C:6%L;'D@=7-E
- XM9G5L+" @<VEN8V4@('1H97D@(&%V;VED"B @(" @=&AE('5S=6%L('!R;V)L
- XM96US('=I=&@@=&AE(&QA8VL@;V8@8F]U;F1S+6-H96-K:6YG(&EN('-P<FEN
- XM=&8H*2X*(" @("!!;&P@8V]D92!I;B!T:&4@961I=&]R(&ET<V5L9B!N;W<@
- XM('5S97,@($9L97AB=69S("!T;R @879O:60@('1H90H@(" @('!O<W-I8FEL
- XM:71Y("!O9B @8G5F9F5R("!O=F5R<G5N<RP@(&%N9"!T;R!R961U8V4@=&AE
- XM('-I>F4@;V8@=&AE"B @(" @97AE8W5T86)L92X@(%-O;64@3U,M<W!E8VEF
- XM:6,@;6]D=6QE<RP@:&]W979E<BP@;6%Y('-T:6QL('5S92!T:&4*(" @("!P
- XM<FEN=&8H*2 @9F%M:6QY+B @(%1H92 @<W5B<V5T("!O9B!P<FEN=&8M;&EK
- XM92!F;W)M870@<W!E8VEF:65R<PH@(" @(&EM<&QE;65N=&5D(&EN8VQU9&5S
- XM('1H;W-E(&9O<B!I;G1E9V5R<R!A;F0@<W1R:6YG<RP@8G5T(&YO=" @9F]R
- XM"B @(" @9FQO871I;F<M<&]I;G0@;G5M8F5R<RX*"B @(" @7P@U+E\(."X@
- XM(%\(8E\(;U\(;U\(;%]?"'0*"B @(" @02!S:6UP;&4@0F]O;&5A;B!T>7!E
- XM.R!H87,@('9A;'5E<R @7PA47PA27PA57PA%("!A;F0@(%\(1E\(05\(3%\(
- XM4U\(12P@('=H:6-H("!A<F4*(" @("!D969I;F5D("!A<R @,2 @86YD(" P
- XM("!S;R @87,@=&\@8F4@8V]M<&%T:6)L92!W:71H($,@8V]M<&%R:7-O;@H@
- XM(" @(&]P97)A=&]R<RX*"B @(" @7P@U+E\(.2X@(%\(>%\(=E\(15\(=E\(
- XM95\(;E\(= H*(" @("!4:&ES('1Y<&4@:7,@9&5F:6YE9"!I;B!T:&4@<')E
- XM=FEO=7,@<V5C=&EO;BP@<VEN8V4@:70@9F]R;7,@<&%R= H@(" @(&]F('1H
- XM92!P;W)T:6YG(&EN=&5R9F%C92X*"B @(" @7P@U+E\(,5\(,"X@(%\(5E\(
- XM:5\(<E\(=%\(4U\(8U\(<@H*(" @("!4:&ES('1Y<&4@<F5P<F5S96YT<R!A
- XM('9I<G1U86P@<V-R965N+"!A;F0@:7,@(&-O;G-T<G5C=&5D("!I;B @80H@
- XM(" @('-I;6EL87(@=V%Y('1O(&$@7PAC7PAL7PAA7PAS7PAS+B @270@8V]N
- XM=&%I;G,@<V]M92!F=6YC=&EO;B!P;VEN=&5R<R!W:&EC: H@(" @(&UA>2!B
- XM92!U<V5D('1O(&UA;FEP=6QA=&4@=&AE('-C<F5E;B!I;B!V87)I;W5S("!W
- XM87ES+" @86YD("!S;VUE"B @(" @<')I=F%T92!D871A('=H:6-H(&ES('5S
- XM960@8GD@=&AE(&EM<&QE;65N=&%T:6]N(&]F('1H92!C;&%S<RX*"B @(" @
- XM5&AE(&]L9"!T97)M:6YA;"!I;G1E<F9A8V4L('=H:6-H(&-O;G-I<W1E9"!O
- XM9B!A('-E="!O9B!D:7-P87)A=&4*(" @("!F=6YC=&EO;G,L("!I<R!B96EN
- XM9R!R97!L86-E9"!B>2!T:&4@5FER=%-C<B!I;G1E<F9A8V4[('1H92!F:7)S
- XM= H@(" @('-T97 @:6X@=&AI<R!P<F]C97-S(&AA<R!B965N(&%C8V]M<&QI
- XM<VAE9"!B>2!T:&4@<')O=FES:6]N(&]F("!A"B @(" @9&5F875L="!6:7)T
- XM4V-R(&EM<&QE;65N=&%T:6]N('5S:6YG('1H92!O;&0@<')I;6ET:79E(&9U
- XM;F-T:6]N<RX*(" @("!.97<L(&YA=&EV92P@5FER=%-C<B!I;7!L96UE;G1A
- XM=&EO;G,@;6%Y(&YO=R!B92!C;V1E9"P@=VAI8V@@=VEL; H@(" @(&EN8W)E
- XM87-E('1H92!E9F9I8VEE;F-Y(&]F('-C<F5E;B!O=71P=70N"@H@(" @($%S
- XM('1H92!F:6YA;"!S=&%G92P@82!W:6YD;W=I;F<@(&EM<&QE;65N=&%T:6]N
- XM("!O9B @=&AE("!6:7)T4V-R"B @(" @8VQA<W,@("!W:6QL(" @8F4@("!P
- XM<F]V:61E9"P@("!U<VEN9R @('1H92 @('5N9&5R;'EI;F<@(%9I<G138W(*
- XM(" @("!I;7!L96UE;G1A=&EO;G,L(&%N9"!T:&4@=VEN9&]W+6AA;F1L:6YG
- XM(&-O9&4@:6X@=&AE(&5D:71O<B @=VEL; H*"B @(" @7P@R7P@U7PAT7PAH
- XM(%\(4U\(95\(<%\(=%\(95\(;5\(8E\(95\(<B!?"#%?"#E?"#E?"#(@(" @
- XM(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @("!?"%!?"&%?"&=?
- XM"&4@7P@Q7P@Y"@H*"@H*(" @("!?"#)?"# @(" @(" @(" @(" @(" @(" @
- XM(" @(" @(" @(" @(" @(" @(" @("!?"%A?"'9?"&D@7PA37PAO7PAU7PAR
- XM7PAC7PAE(%\(0U\(;U\(9%\(92!?"$Y?"&]?"'1?"&5?"',*"@H@(" @(&)E
- XM("!M;V1I9FEE9" @=&\@=&AA="!E86-H(&]C8W5R<F5N8V4@;V8@86X@6'9I
- XM=VEN(')E9F5R96YC97,@:71S"B @(" @;W=N(%9I<G138W(N("!)="!W:6QL
- XM('1H96X@8F4@<&]S<VEB;&4@=&\@8G5I;&0@82!V97)S:6]N(&]F("!T:&4*
- XM(" @("!E9&ET;W(@('=H:6-H(&]P97)A=&5S(&EN(&$@=')U92!W:6YD;W=I
- XM;F<@96YV:7)O;FUE;G0@8GD@=7-I;F<@80H@(" @('-E<&%R871E('-C<F5E
- XM;B!W:6YD;W<@9F]R(&5A8V@@8G5F9F5R+"!I;G-T96%D("!O9B @=&AE("!C
- XM=7)R96YT"B @(" @=F5R=&EC86PM<W!L:70@;65T:&]D+@H*(" @("!!(&9U
- XM;&P@9&5F:6YI=&EO;B!O9B!T:&4@(%9I<G138W(@('1Y<&4@('=I;&P@(&)E
- XM("!F;W5N9" @:6X@('1H90H@(" @('!R979I;W5S('-E8W1I;VXN"@H@(" @
- XM(%\(-2Y?"#%?"#$N("!?"$=?"&Q?"&]?"&)?"&%?"&P@7PA67PAA7PAR7PAI
- XM7PAA7PAB7PAL7PAE7PAS"@H@(" @(%1H97)E(&%R92!O;FQY(&$@9F5W(&=L
- XM;V)A;"!V87)I86)L97,@:6X@=&AE(&5D:71O<BX@("!4:&5S92 @87)E"B @
- XM(" @=&AE(&EM<&]R=&%N="!O;F5S.@H*(" @("!C=7)B=68*"2 @("!P;VEN
- XM=&5R('1O('1H92!C=7)R96YT($)U9F9E<@H*(" @("!C=7)W:6X*"2 @("!P
- XM;VEN=&5R('1O('1H92!C=7)R96YT(%AV:7=I;@H*(" @("!3=&%T92 @('1H
- XM92!C=7)R96YT(%\(<U\(=%\(85\(=%\(92!O9B!T:&4@961I=&]R.R!C;VYT
- XM<F]L<R!W:&%T('=E(&1O('=I=&@*"2 @("!I;G!U="!C:&%R86-T97)S+B @
- XM5&AE('9A;'5E(&ES(&]N92!O9B!T:&4@9F]L;&]W:6YG.@H*"2 @("!.3U)-
- XM04P@(" @5&AE("!D969A=6QT("!S=&%T93L@('9I+6UO9&4@(&-O;6UA;F1S
- XM("!M87D@(&)E"@D)(" @(" @97AE8W5T960*"@D@(" @24Y315)4(" @($EN
- XM<V5R="!M;V1E+"!I+F4N(&-H87)A8W1E<G,@='EP960@9V5T("!I;G-E<G1E
- XM9 H)"2 @(" @(&EN=&\@=&AE(&-U<G)E;G0@8G5F9F5R"@H)(" @(%)%4$Q!
- XM0T4@("!297!L86-E("!M;V1E+" @8VAA<F%C=&5R<R @:6X@('1H92 @8G5F
- XM9F5R("!G970*"0D@(" @("!O=F5R=W)I='1E;B!B>2!W:&%T(&ES('1Y<&5D
- XM"@H)(" @($--1$Q)3D4@("!296%D:6YG(&$@8V]L;VXM8V]M;6%N9"P@<F5G
- XM=6QA<B @97AP<F5S<VEO;B @;W(*"0D@(" @("!P:7!E(&-O;6UA;F0*"@D@
- XM(" @1$E34$Q!62 @($1I<W!L87EI;F<@=&5X="P@:2YE+B Z<" @8V]M;6%N
- XM9"P@(&]R(" Z<V5T("!O<@H)"2 @(" @(#IM87 @=VET:"!N;R!A<F=U;65N
- XM= H*(" @("!E8VAO(" @5&AI<R @=F%R:6%B;&4@("!C;VYT<F]L<R @('=H
- XM870@("!O=71P=70@("!I<R @(&-U<G)E;G1L>0H)(" @(&1I<W!L87EA8FQE
- XM+B @($ET("!I<R @=7-E9" @870@('9A<FEO=7,@<&]I;G1S('=I=&AI;B!T
- XM:&4*"2 @("!E9&ET;W(@=&\@<W1O<"!C97)T86EN(&]U='!U="!W:&EC:"!I
- XM<R!E:71H97(@('5N9&5S:7)A8FQE"@D@(" @;W(@('-U8BUO<'1I;6%L+B @
- XM($ET("!M=7-T("!A;'=A>7,@(&)E("!R97-T;W)E9" @=&\@(&ET<PH)(" @
- XM('!R979I;W5S("!V86QU92 @869T97(@('1H92 @8V]D92 @=VAI8V@@(&-H
- XM86YG960@(&ET("!H87,*"2 @("!F:6YI<VAE9"!W:&%T(&ET(&ES(&1O:6YG
- XM+@H*(" @("!K8F1I;G1R"@D@(" @5&AI<R!C86X@8F4@<V5T('1O(&$@;F]N
- XM+7IE<F\@=F%L=64@=&\@(&EN9&EC871E("!T:&%T("!A;@H)(" @(&%S>6YC
- XM:')O;F]U<R @=7-E<BUG96YE<F%T960@:6YT97)R=7!T("AS=6-H(&%S(&$@
- XM:V5Y8F]A<F0*"2 @("!I;G1E<G)U<'0I(&AA<R!O8V-U<G)E9"X@("!3964@
- XM('1H92 @9&ES8W5S<VEO;B @;V8@(&5V96YT"@D@(" @:&%N9&QI;F<@:6X@
- XM=&AE('!R979I;W5S('-E8W1I;VXN"@H*"@H*"@H@(" @(%\(4%\(85\(9U\(
- XM92!?"#)?"# @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
- XM("!?"#)?"#5?"'1?"&@@7PA37PAE7PAP7PAT7PAE7PAM7PAB7PAE7PAR(%\(
- XM,5\(.5\(.5\(,@H*"@H*"B @(" @7PA87PAV7PAI(%\(4U\(;U\(=5\(<E\(
- XM8U\(92!?"$-?"&]?"&1?"&4@7PA.7PAO7PAT7PAE7PAS(" @(" @(" @(" @
- XM(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @7P@R7P@Q"@H*(" @("!?
- XM"#8N("!?"%-?"$]?"%5?"%)?"$-?"$4@7PA&7PA)7PA,7PA%7PA3"@H@(" @
- XM(%1H92!H96%D97(@9FEL92!?"'A?"'9?"&DN7PAH(&-O;G1A:6YS("!A;&P@
- XM('1H92 @='EP92 @9&5F:6YI=&EO;G,@('5S960*(" @("!W:71H:6X@=&AE
- XM(&5D:71O<BP@87,@=V5L;"!A<R!F=6YC=&EO;B!D96-L87)A=&EO;G,@971C
- XM+@H*(" @("!4:&4@9F]L;&]W:6YG('-O=7)C92!F:6QE<R!F;W)M("!T:&4@
- XM('!R:6UA<GD@(&EN=&5R9F%C92 @=&\@('1H90H@(" @(&5D:71O<CH*"B @
- XM(" @<W1A<G1U<"YC"@D@(" @(" @16YT<GD@<&]I;G0@9F]R('1H92!E9&ET
- XM;W(N("!$96%L<R @=VET:" @87)G=6UE;G0@(&%N9 H)(" @(" @(&]P=&EO
- XM;B @('!A<G-I;F<@(&%N9" @:6YI=&EA;" @<V5T=7 L("!C86QL:6YG("!M
- XM;V1U;&4*"2 @(" @("!I;FET:6%L:7-A=&EO;B!F=6YC=&EO;G,@87,@;F5C
- XM97-S87)Y+@H*(" @("!E=F5N=',N8R @($-O;G1A:6YS('1H92!R;W5T:6YE
- XM('AV:5]H86YD;&5?979E;G0H*2P@=VAI8V@@:7,@('1H90H)(" @(" @(&5N
- XM=')Y("!P;VEN="!F;W(@:&%N9&QI;F<@:6YP=70@=&\@=&AE(&5D:71O<CL@
- XM:6YP=70@:7,*"2 @(" @("!P87-S960@=&\@9&EF9F5R96YT(')O=71I;F5S
- XM("!A8V-O<F1I;F<@('1O("!T:&4@(%-T871E"@D@(" @(" @=F%R:6%B;&4N
- XM(" @5&EM96]U=',@;VX@:6YP=70@87)E(&%L<V\@:&%N9&QE9"!H97)E+"!B
- XM>0H)(" @(" @(&-A;&QI;F<@87!P<F]P<FEA=&4@<F]U=&EN97,@:6X@;6%P
- XM+F,@;W(@<')E<V5R=F4N8RX*"B @(" @961I="YC(" @($1E86QS('=I=&@@
- XM:6YS97)T(&%N9"!R97!L86-E(&UO9&5S+@H*(" @("!N;W)M86PN8R @($AA
- XM;F1L97,@;F]R;6%L+6UO9&4@8V]M;6%N9',N"@H@(" @(&UA<"YC(" @("!4
- XM:&ES(&9I;&4@:7,@<F5S<&]N<VEB;&4@9F]R(&%L;" @:6YP=70@(&UA<'!I
- XM;F<@("AB;W1H"@D@(" @(" @<V5T(" @=7 @("!B>2 @=&AE(" Z;6%P("!C
- XM;VUM86YD("!A;F0@(&EN=&5R;F%L;'D@(&9O<@H)(" @(" @(&9U;F-T:6]N
- XM+6ME>2!M87!P:6YG<SL@(&ET("!A;'-O("!I;7!L96UE;G1S("!A("!S='5F
- XM9BT*"2 @(" @("!C:&%R86-T97)S+6EN=&\M=&AE+6EN<'5T+7-T<F5A;2 @
- XM(&9U;F-T:6]N(" @9F]R(" @=7-E"@D@(" @(" @=VET:&EN('1H92!E9&ET
- XM;W(N(" @5&AI<R @:7,@('5S960L("!F;W(@(&5X86UP;&4L("!T;PH)(" @
- XM(" @(&EM<&QE;65N="!C;VUM86YD(')E9&\@*&)U="!?"&Y?"&]?"'0@=&\@
- XM:6UP;&5M96YT(")U;F1O(B!A;F0*"2 @(" @(" B<'5T(B!A<R!I;B!35$56
- XM244I+@H*"B @(" @0V]L;VX@*&5X+71Y<&4I(&-O;6UA;F1S(&%R92!H86YD
- XM;&5D(&)Y('1H:7,@9W)O=7 Z"@H@(" @(&-M9&QI;F4N8PH)(" @(" @($1E
- XM8V]D97,@86YD(&5X96-U=&5S(&-O;&]N(&-O;6UA;F1S+@H*(" @("!E>%]C
- XM;61S,2YC"@D@(" @(" @1FEL92TL($)U9F9E<BT@86YD(%AV:7=I;BUR96QA
- XM=&5D(&-O;&]N(&-O;6UA;F1S+@H*(" @("!E>%]C;61S,BYC"@D@(" @(" @
- XM3W1H97(@8V]L;VX@8V]M;6%N9',@*&4N9RX@<VAE;&P@97-C87!E*2X*"@H@
- XM(" @(%-C<F5E;B!U<&1A=&EN9R!I<R!D;VYE('=I=&AI;B!T:&4@9F]L;&]W
- XM:6YG(&9I;&5S.@H*(" @("!S8W)E96XN8R @(%-C<F5E;B!U<&1A=&EN9R!C
- XM;V1E+"!I;F-L=61I;F<@:&%N9&QI;F<@;V8@;&EN92UB87-E9 H)(" @(" @
- XM(&5N=')Y(" H9F]R("!C;VQO;B @8V]M;6%N9',L('-E87)C:&5S(&5T8RD@
- XM87,@=&AE>2!A<F4*"2 @(" @("!T>7!E9" @:6XL("!A;F0@(&1I<W!L87DM
- XM;6]D92 @<W1U9F8@(" H9F]R(" @<&%R86UE=&5R"@D@(" @(" @9&ES<&QA
- XM>6EN9RP@.E\(9R]?"')?"&4O7PAP(&5T8RDN"@H@(" @(&-U<G-O<BYC(" @
- XM5&AI<R!F:6QE(&-O;G1A:6YS('1H92!S:6YG;&4@(&9U;F-T:6]N("!C=7)S
- XM=7!D871E*"DL"@D@(" @(" @=VAI8V@@(&ES("!R97-P;VYS:6)L92 @9F]R
- XM(&1E8VED:6YG('=H97)E('1H92!P:'ES:6-A; H)(" @(" @('-C<F5E;B!C
- XM=7)S;W(@<VAO=6QD(&)E+"!A8V-O<F1I;F<@=&\@=&AE("!P;W-I=&EO;B @
- XM;V8*"2 @(" @("!T:&4@(&QO9VEC86P@(&-U<G-O<B @:6X@=&AE(&)U9F9E
- XM<B!A;F0@=&AE('!O<VET:6]N(&]F"@H*(" @("!?"#)?"#5?"'1?"&@@7PA3
- XM7PAE7PAP7PAT7PAE7PAM7PAB7PAE7PAR(%\(,5\(.5\(.5\(,B @(" @(" @
- XM(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(%\(4%\(85\(9U\(92!?
- XM"#)?"#$*"@H*"@H@(" @(%\(,E\(,B @(" @(" @(" @(" @(" @(" @(" @
- XM(" @(" @(" @(" @(" @(" @(%\(6%\(=E\(:2!?"%-?"&]?"'5?"')?"&-?
- XM"&4@7PA#7PAO7PAD7PAE(%\(3E\(;U\(=%\(95\(<PH*"@D@(" @(" @=&AE
- XM('=I;F1O=R!O;G1O('1H870@8G5F9F5R+B @5&AI<R!R;W5T:6YE(&ES(&YO
- XM=" @=F5R>0H)(" @(" @(&]P=&EM86PL(&%N9"!W:6QL('!R;V)A8FQY(&1I
- XM<V%P<&5A<B!I;B!D=64@8V]U<G-E+@H*(" @("!D969S8W(N8R @(%1H:7,@
- XM9FEL92!C;VYT86EN<R!T:&4@9&5F875L="!I;7!L96UE;G1A=&EO;B @;V8@
- XM('1H90H)(" @(" @(%9I<G138W(@(&-L87-S+" @;VX@('1O<" @;V8@('1H
- XM92 @;VQD("!T97)M:6YA;"]S>7-T96T*"2 @(" @("!I;G1E<F9A8V4N"@H@
- XM(" @('-T871U<RYC(" @1G5N8W1I;VYS('1O('5P9&%T92!T:&4@<W1A='5S
- XM(&QI;F4@;V8@82!W:6YD;W<[('1H97)E"@D@(" @(" @87)E("!D:69F97)E
- XM;G0@(&9U;F-T:6]N<R @=&\@(&1I<W!L87D@9FEL92!I;F9O<FUA=&EO;@H)
- XM(" @(" @("AN86UE+"!P;W-I=&EO;B!E=&,N*2!A;F0@97)R;W(O:6YF;W)M
- XM871I;VX@;65S<V%G97,N"@H*(" @("!4:&5S92!F:6QE<R!D96%L('=I=&@@
- XM<W!E8VEF:6,@87)E87,@;V8@9G5N8W1I;VYA;&ET>3H*"B @(" @9FEN9"YC
- XM(" @(%-E87)C:"!F=6YC=&EO;G,Z("!A;&P@(&MI;F1S("!O9B @<V5A<F-H
- XM97,L("!I;F-L=61I;F<*"2 @(" @("!C:&%R86-T97(M8F%S960@("!A;F0@
- XM('=O<F0M8F%S960@(&-O;6UA;F1S+" @<V5C=&EO;G,L"@D@(" @(" @<&%R
- XM86=R87!H<RP@(&%N9" @=&AE("!I;G1E<F9A8V4@('1O(" B<F5A;"(@('-E
- XM87)C:&EN9PH)(" @(" @("AW:&EC:"!I<R!A8W1U86QL>2!D;VYE(&EN(%\(
- XM<U\(95\(85\(<E\(8U\(:"Y?"&,I+@H*(" @("!M87)K+F,@(" @4')O=FED
- XM97,@<')I;6ET:79E<R!T;R!R96-O<F0@;6%R:W,@('=I=&AI;B @82 @0G5F
- XM9F5R+ H)(" @(" @(&%N9"!T;R!F:6YD('1H92!M87)K<R!A9V%I;BX*"B @
- XM(" @;6]U<V4N8R @($-O9&4@=&\@(&AA;F1L92 @;6EC92 @;6]V:6YG("!T
- XM:&4@(&-U<G-O<B @87)O=6YD("!A;F0*"2 @(" @("!R97-I>FEN9R!W:6YD
- XM;W=S+@H*(" @("!P87)A;2Y;8VA="@D@(" @(" @0V]D92!T;R!H86YD;&4@
- XM<V5T=&EN9R!O9BP@86YD(&%C8V5S<R @=&\L("!P87)A;65T97)S+@H)(" @
- XM(" @("A4:&5S92!A<F4@=&AI;F=S(&QI:V4@=&%B<W1O<',L(&%U=&]I;F1E
- XM;G0L(&5T8RXI"@H@(" @('!I<&4N8R @("!(86YD;&5S('!I<&EN9R!T:')O
- XM=6=H('-Y<W1E;2!C;VUM86YD<RX*"B @(" @<')E<V5R=F4N8PH)(" @(" @
- XM($9I;&4@<')E<V5R=F%T:6]N(')O=71I;F5S+@H*(" @("!S96%R8V@N8R @
- XM($-O9&4@(&9O<B @<&%T=&5R;BUS96%R8VAI;F<@(&EN("!A("!B=69F97(L
- XM("!A;F0@(&9O<@H)(" @(" @('-U8G-T:71U=&EO;G,@(&%N9" @9VQO8F%L
- XM(&5X96-U=&EO;BX@(%5S97,@<F5G97AP+EMC:%T*"2 @(" @("!F;W(@=&AE
- XM(&%C='5A;"!R96=U;&%R(&5X<')E<W-I;VX@<W1U9F8N"@H@(" @('1A9W,N
- XM8R @("!2;W5T:6YE<R!T;R!H86YD;&4@=&%G<R M(&9O<B Z=&%G+" M="!A
- XM;F0@7ETN"@H@(" @('5N9&\N8R @("!#;V1E('1O(&1E86P@=VET:"!D;VEN
- XM9R!A;F0@=6YD;VEN9SL@(&DN92X@(&UA:VEN9R @86YD"@D@(" @(" @=6YM
- XM86MI;F<@(&-H86YG97,@=&\@82!B=69F97(N("!4:&ES(&ES(&]N92!O9B!T
- XM:&4@;6]R90H)(" @(" @(&-O;7!L97@@86YD(&1E;&EC871E(&9I;&5S+@H*
- XM(" @("!Y86YK<'5T+F,*"2 @(" @("!#;V1E('1O(&1E86P@=VET:"!Y86YK
- XM:6YG(&%N9"!P=71T:6YG("!T97AT+" @:6YC;'5D:6YG"@D@(" @(" @;F%M
- XM960@8G5F9F5R<RX*"@H@(" @('=H:6QE('1H97-E(&9I;&5S('!R;W9I9&4@
- XM;&]W97(M;&5V96P@9G5N8W1I;VYS.@H*(" @("!A;&QO8RYC(" @365M;W)Y
- XM(&%L;&]C871I;VX@<F]U=&EN97,N"@H*"@H*(" @("!?"%!?"&%?"&=?"&4@
- XM7P@R7P@R(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
- XM7P@R7P@U7PAT7PAH(%\(4U\(95\(<%\(=%\(95\(;5\(8E\(95\(<B!?"#%?
- XM"#E?"#E?"#(*"@H*"@H@(" @(%\(6%\(=E\(:2!?"%-?"&]?"'5?"')?"&-?
- XM"&4@7PA#7PAO7PAD7PAE(%\(3E\(;U\(=%\(95\(<R @(" @(" @(" @(" @
- XM(" @(" @(" @(" @(" @(" @(" @(" @(" @(%\(,E\(,PH*"B @(" @87-C
- XM:6DN6V-H70H)(" @(" @($1E86QS("!W:71H("!T:&4@('9I<W5A;" @<F5P
- XM<F5S96YT871I;VX@("!O9B @('-P96-I86P*"2 @(" @("!C:&%R86-T97)S
- XM(&]N('1H92!D:7-P;&%Y("AE+F<N('1A8G,L(&-O;G1R;VP@8VAA<G,I+@H*
- XM(" @("!B=69F97)S+F,*"2 @(" @("!2;W5T:6YE<R!D96%L:6YG('=I=&@@
- XM=&AE("!A;&QO8V%T:6]N("!A;F0@(&9R965I;F<@(&]F"@D@(" @(" @0G5F
- XM9F5R<RX*"B @(" @9FEL96EO+F,@("!&:6QE($DO3R!R;W5T:6YE<SL@<F5A
- XM9&EN9RP@=W)I=&EN9RP@<F4M961I=&EN9R!F:6QE<RX*"2 @(" @("!!;'-O
- XM(&AA;F1L:6YG(&]F('1H92!F;W)M870@<&%R86UE=&5R+@H*(" @("!F;&5X
- XM8G5F+F,*"2 @(" @("!&;&5X:6)L92UL96YG=&@@8VAA<F%C=&5R+6)U9F9E
- XM<B!R;W5T:6YE<RX*"B @(" @;6ES8V-M9',N8PH)(" @(" @($UI<V-E;&QA
- XM;F5O=7,@9G5N8W1I;VYS+@H*(" @("!M;W9E;65N="YC"@D@(" @(" @0V]D
- XM92!T;R!D96%L('=I=&@@(&UO=FEN9R @=&AE("!C=7)S;W(@(&%R;W5N9" @
- XM:6X@('1H90H)(" @(" @(&)U9F9E<BP@86YD('-C<F]L;&EN9R!T:&4@<V-R
- XM965N(&5T8RX*"B @(" @<'1R9G5N8RY;8VA="@D@(" @(" @4')I;6ET:79E
- XM<R!T;R!H86YD;&4@4&]S;B!S=')U8W1U<F5S.R!I;F-L=61I;F<@=F%R:6]U
- XM<PH)(" @(" @(&]P97)A=&]R<R!T;R!C;VUP87)E('!O<VET:6]N<R!I;B!A
- XM('1E>'0@8G5F9F5R+@H*(" @("!R96=E>' N6V-H72P@<F5G;6%G:6,N: H)
- XM(" @(" @(%)E9W5L87(M97AP<F5S<VEO;B!S='5F9BP@;W)I9VEN86QL>2!W
- XM<FET=&5N("!B>2 @2&5N<GD*"2 @(" @("!3<&5N8V5R(" H=&AA;FMS("!(
- XM96YR>2D@(&%N9" @<VQI9VAT;'D@(&AA8VME9"!F;W(@=7-E"@D@(" @(" @
- XM=VET:&EN('AV:2X*"B @(" @<VEG;F%L+F,@("!(86YD;&EN9R!O9B @=&5R
- XM;6EN86PM9V5N97)A=&5D("!S:6=N86QS("!I;B @86X@($%.4TD*"2 @(" @
- XM("!E;G9I<F]N;65N="X*"B @(" @=FER='-C<BYH"@D@(" @(" @5FER='5A
- XM;"!38W)E96X@:6YT97)F86-E(&1E9FEN:71I;VXN(" @5&AI<R @:7,@(&$@
- XM(&YE=PH)(" @(" @('!A<G0@(&]F("!X=FDL(&%N9"!I<R!N;W0@>65T(&9U
- XM;&QY(&-O;7!L971E9"X@(%=H96X@:70*"2 @(" @("!I<R!F:6YI<VAE9"P@
- XM:70@=VEL;"!P<F]V:61E('1H92!A8FEL:71Y("!T;R @:6UP;&5M96YT"@D@
- XM(" @(" @(FYA=&EV92(@("!V97)S:6]N<R @;V8@('AV:2 @=6YD97(@('9A
- XM<FEO=7,@('=I;F1O=VEN9PH)(" @(" @('-Y<W1E;7,L(&EN(&$@8VQE86X@
- XM86YD('=H;VQE<V]M92!W87DN("!#=7)R96YT;'D@=&AE<F4*"2 @(" @("!I
- XM<R @82 @<VEN9VQE("!I;G-T86YC92 @;V8@=&AE(%9I<G138W(@8VQA<W,L
- XM('=H:6-H(&ES"@D@(" @(" @9&5F:6YE9"!O;B!T;W @;V8@=&AE(&]L9"!S
- XM>7-T96TO=&5R;6EN86P@:6YT97)F86-E+@H*(" @("!W:6YD;W=S+F,*"2 @
- XM(" @("!#;V1E('1O(&1E86P@=VET:"!C<F5A=&EN9RP@9&5L971I;F<L(')E
- XM<VEZ:6YG('=I;F1O=W,N"@H@(" @('9E<G-I;VXN8PH)(" @(" @($-O;G1A
- XM:6YS(&]N;'D@=&AE('9E<G-I;VX@<W1R:6YG+@H*"@H*"@H*"@H*(" @("!?
- XM"#)?"#5?"'1?"&@@7PA37PAE7PAP7PAT7PAE7PAM7PAB7PAE7PAR(%\(,5\(
- XM.5\(.5\(,B @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
- X7(%\(4%\(85\(9U\(92!?"#)?"#,*"@H@
- X
- Xend
- END_OF_FILE
- if test 34078 -ne `wc -c <'xvi/doc/source.UU.b'`; then
- echo shar: \"'xvi/doc/source.UU.b'\" unpacked with wrong size!
- elif test -f 'xvi/doc/source.UU.a'; then
- echo shar: Uudecoding \"'xvi/doc/source.lst'\" \(56183 characters\)
- cat 'xvi/doc/source.UU.a' 'xvi/doc/source.UU.b' | uudecode
- if test -f xvi/doc/source.lst; then
- if test 56183 -ne `wc -c <'xvi/doc/source.lst'`; then
- echo shar: \"'xvi/doc/source.lst'\" uudecoded with wrong size!
- else
- rm 'xvi/doc/source.UU.a' 'xvi/doc/source.UU.b'
- fi
- else
- echo shar: \"'xvi/doc/source.lst'\" uudecode failed!
- fi
- fi
- # end of 'xvi/doc/source.UU.b'
- fi
- if test -f 'xvi/src/ex_cmds1.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xvi/src/ex_cmds1.c'\"
- else
- echo shar: Extracting \"'xvi/src/ex_cmds1.c'\" \(18835 characters\)
- sed "s/^X//" >'xvi/src/ex_cmds1.c' <<'END_OF_FILE'
- X/* Copyright (c) 1990,1991,1992 Chris and John Downey */
- X#ifndef lint
- Xstatic char *sccsid = "@(#)ex_cmds1.c 2.1 (Chris & John Downey) 7/29/92";
- X#endif
- X
- X/***
- X
- X* program name:
- X xvi
- X* function:
- X PD version of UNIX "vi" editor, with extensions.
- X* module name:
- X ex_cmds1.c
- X* module function:
- X File, window and buffer-related command functions
- X for ex (colon) commands.
- X* history:
- X STEVIE - ST Editor for VI Enthusiasts, Version 3.10
- X Originally by Tim Thompson (twitch!tjt)
- X Extensive modifications by Tony Andrews (onecom!wldrdg!tony)
- X Heavily modified by Chris & John Downey
- X
- X***/
- X
- X#include "xvi.h"
- X
- X#ifdef MEGAMAX
- Xoverlay "ex_cmds1"
- X#endif
- X
- Xstatic char **files; /* list of input files */
- Xstatic int numfiles; /* number of input files */
- Xstatic int curfile; /* number of the current file */
- X
- Xchar *altfilename;
- Xstatic long altfileline;
- X
- Xstatic char nowrtmsg[] = "No write since last change (use ! to override)";
- Xstatic char nowrtbufs[] = "Some buffers not written (use ! to override)";
- X
- Xstatic bool_t more_files P((void));
- X
- Xvoid
- Xdo_quit(window, force)
- XXviwin *window;
- Xbool_t force;
- X{
- X Xviwin *wp;
- X bool_t changed;
- X bool_t canexit;
- X
- X if (force) {
- X canexit = TRUE;
- X } else {
- X /*
- X * See if any buffers remain modified and unwritten.
- X */
- X changed = FALSE;
- X wp = window;
- X do {
- X if (is_modified(wp->w_buffer)) {
- X changed = TRUE;
- X }
- X } while ((wp = next_window(wp)) != window);
- X
- X if (changed) {
- X show_error(window, nowrtbufs);
- X canexit = FALSE;
- X } else {
- X canexit = ! more_files();
- X }
- X }
- X
- X if (canexit) {
- X sys_exit(0);
- X }
- X}
- X
- X/*
- X * Split the current window into two, leaving both windows mapped
- X * onto the same buffer.
- X */
- Xvoid
- Xdo_split_window(window)
- XXviwin *window;
- X{
- X Xviwin *newwin;
- X
- X newwin = split_window(window);
- X if (newwin == NULL) {
- X show_error(window, "No more windows!");
- X return;
- X }
- X
- X map_window_onto_buffer(newwin, window->w_buffer);
- X
- X /*
- X * Update the status line of the old window
- X * (since it will have been moved).
- X * Also update the window - this will almost certainly
- X * have no effect on the screen, but is necessary.
- X */
- X show_file_info(window);
- X update_window(window);
- X
- X /*
- X * Show the new window.
- X */
- X init_sline(newwin);
- X update_window(newwin);
- X show_file_info(newwin);
- X
- X /*
- X * Update the global window variable.
- X */
- X curwin = newwin;
- X}
- X
- X/*
- X * Open a new buffer window, with a possible filename arg.
- X *
- X * do_buffer() is responsible for updating the screen image for the
- X * old window, but not the new one, since we may want to move to a
- X * different location in the new buffer (e.g. for a tag search).
- X */
- Xbool_t
- Xdo_buffer(window, filename)
- XXviwin *window;
- Xchar *filename;
- X{
- X Buffer *buffer;
- X Buffer *new;
- X Xviwin *newwin;
- X
- X buffer = window->w_buffer;
- X
- X if (window->w_nrows < (MINROWS + 1) * 2) {
- X show_error(window, "Not enough room!");
- X return(FALSE);
- X }
- X
- X new = new_buffer();
- X if (new == NULL) {
- X show_error(window, "No more buffers!");
- X return(FALSE);
- X }
- X newwin = split_window(window);
- X if (newwin == NULL) {
- X free_buffer(new);
- X show_error(window, "No more windows!");
- X return(FALSE);
- X }
- X
- X map_window_onto_buffer(newwin, new);
- X
- X /*
- X * Update the status lines of each buffer.
- X *
- X * Even if (echo & e_SHOWINFO) is turned off, show_file_info()
- X * will always call update_sline(), which is what we really
- X * need here.
- X *
- X * Note that we don't need to call move_window_to_cursor() for
- X * the old window until it becomes the current window again.
- X */
- X show_file_info(window);
- X init_sline(newwin);
- X
- X if (filename != NULL) {
- X (void) do_edit(newwin, FALSE, filename);
- X } else {
- X new->b_filename = new->b_tempfname = NULL;
- X show_file_info(newwin);
- X }
- X
- X update_window(window);
- X
- X /*
- X * The current buffer (a global variable) has
- X * to be updated here. No way around this.
- X */
- X curbuf = new;
- X curwin = newwin;
- X
- X return(TRUE);
- X}
- X
- X/*
- X * "close" (the current window).
- X */
- Xvoid
- Xdo_close_window(win, force)
- XXviwin *win;
- Xbool_t force;
- X{
- X Buffer *buffer;
- X Xviwin *best;
- X
- X buffer = win->w_buffer;
- X
- X if (is_modified(buffer) && !force && buffer->b_nwindows < 2) {
- X /*
- X * Don't close a modified buffer.
- X */
- X show_error(win, nowrtmsg);
- X } else if (next_window(win) != win || !more_files()) {
- X Xviwin *w;
- X
- X /*
- X * We can close this window if:
- X *
- X * (
- X * the buffer has not been modified
- X * or they are forcing the close
- X * or there are other windows onto this buffer
- X * )
- X * AND
- X * (
- X * there are other windows still open
- X * or there are no more files to be edited
- X * )
- X */
- X
- X /*
- X * Find an adjacent window to take up the screen
- X * space used by the one being closed.
- X */
- X best = NULL;
- X for (w = next_window(win); w != win; w = next_window(w)) {
- X
- X if (w->w_cmdline + 1 == win->w_winpos ||
- X w->w_winpos - 1 == win->w_cmdline ||
- X w->w_nrows == 0) {
- X
- X /*
- X * We have found an adjacent window;
- X * if it is the first such, or if
- X * it is smaller than the previous
- X * best, it is now the new best.
- X */
- X if (best == NULL || w->w_nrows < best->w_nrows) {
- X best = w;
- X }
- X }
- X }
- X
- X if (best == NULL) {
- X sys_exit(0);
- X }
- X
- X if (buffer->b_nwindows == 1 && buffer->b_filename != NULL) {
- X /*
- X * Before we free the buffer, save its filename.
- X */
- X if (altfilename != NULL) {
- X free(altfilename);
- X }
- X altfilename = buffer->b_filename;
- X buffer->b_filename = NULL;
- X altfileline = lineno(buffer,
- X win->w_cursor->p_line);
- X }
- X
- X /*
- X * Now "best" points to the smallest adjacent window;
- X * amalgamate the spaces used.
- X */
- X if (best->w_winpos > win->w_winpos) {
- X best->w_winpos = win->w_winpos;
- X }
- X best->w_nrows += win->w_nrows;
- X best->w_cmdline = best->w_winpos + best->w_nrows - 1;
- X free_window(win);
- X
- X if (buffer->b_nwindows == 0) {
- X free_buffer(buffer);
- X }
- X
- X /*
- X * Have to update the globals "curbuf" and "curwin" here.
- X */
- X curwin = best;
- X curbuf = best->w_buffer;
- X {
- X unsigned savecho;
- X
- X savecho = echo;
- X /*
- X * Adjust position of new current window
- X * within buffer before updating it, to avoid
- X * wasting screen output - but don't do any
- X * scrolling at this stage because the old
- X * window is still on the screen.
- X */
- X echo &= ~(e_CHARUPDATE | e_SHOWINFO | e_SCROLL);
- X move_window_to_cursor(curwin);
- X echo = savecho;
- X
- X }
- X update_window(curwin);
- X show_file_info(curwin);
- X }
- X}
- X
- X/*
- X * Close current window.
- X *
- X * If it is the last window onto the buffer, also close the buffer.
- X *
- X * If the buffer has been modified, we must write it out before closing it.
- X */
- Xvoid
- Xdo_xit(window)
- XXviwin *window;
- X{
- X Buffer *buffer;
- X
- X buffer = window->w_buffer;
- X
- X if (is_modified(buffer) && buffer->b_nwindows < 2) {
- X if (buffer->b_filename != NULL) {
- X if (!writeit(window, buffer->b_filename,
- X (Line *) NULL, (Line *) NULL, FALSE)) {
- X return;
- X }
- X } else {
- X show_error(window, "No output file");
- X return;
- X }
- X }
- X
- X do_close_window(window, FALSE);
- X}
- X
- X/*
- X * Edit the given filename in the given buffer,
- X * replacing any current contents. Note that the
- X * screen is not updated, since there are routines
- X * which use this function before moving the cursor
- X * to a different position in the file.
- X *
- X * Returns TRUE for success, FALSE for failure.
- X */
- Xbool_t
- Xdo_edit(window, force, arg)
- XXviwin *window;
- Xbool_t force;
- Xchar *arg;
- X{
- X long line = 1; /* line # to go to in new file */
- X long nlines; /* no of lines read from file */
- X Line *head; /* start of list of lines */
- X Line *tail; /* last element of list of lines */
- X bool_t readonly; /* true if cannot write file */
- X Buffer *buffer;
- X Xviwin *wp;
- X
- X buffer = window->w_buffer;
- X
- X if (!force && is_modified(buffer)) {
- X show_error(window, nowrtmsg);
- X return(FALSE);
- X }
- X
- X if (arg == NULL || arg[0] == '\0') {
- X /*
- X * No filename specified; we must already have one.
- X */
- X if (buffer->b_filename == NULL) {
- X show_error(window, "No filename");
- X return(FALSE);
- X }
- X } else /* arg != NULL */ {
- X /*
- X * Filename specified.
- X */
- X
- X /*
- X * First detect a ":e" on the current file. This is mainly
- X * for ":ta" commands where the destination is within the
- X * current file.
- X */
- X if (buffer->b_filename != NULL &&
- X strcmp(arg, buffer->b_filename) == 0) {
- X if (!is_modified(buffer) || (is_modified(buffer) && !force)) {
- X return(TRUE);
- X }
- X }
- X
- X /*
- X * Detect an edit of the alternate file, and set
- X * the line number.
- X */
- X if (altfilename != NULL && strcmp(arg, altfilename) == 0) {
- X line = altfileline;
- X }
- X
- X /*
- X * Save the name of the previous file.
- X * If the strsave() of the new filename
- X * fails, we will have lost the previous
- X * value of altfilename. What a shame.
- X */
- X if (buffer->b_filename != NULL) {
- X if (altfilename != NULL)
- X free(altfilename);
- X altfilename = strsave(buffer->b_filename);
- X altfileline = lineno(buffer, window->w_cursor->p_line);
- X }
- X
- X /*
- X * Edit a named file.
- X */
- X buffer->b_filename = strsave(arg);
- X if (buffer->b_filename == NULL)
- X return(FALSE);
- X if (buffer->b_tempfname != NULL)
- X free(buffer->b_tempfname);
- X buffer->b_tempfname = NULL;
- X }
- X
- X /*
- X * Clear out the old buffer and read the file.
- X */
- X if (clear_buffer(buffer) == FALSE) {
- X show_error(window, "Out of memory");
- X return(FALSE);
- X }
- X
- X /*
- X * Be sure to re-map all window structures onto the buffer,
- X * in order to eliminate any pointers into the old buffer.
- X */
- X wp = window;
- X do {
- X if (wp->w_buffer != buffer)
- X continue;
- X
- X unmap_window(wp);
- X map_window_onto_buffer(wp, buffer);
- X
- X } while ((wp = next_window(wp)) != window);
- X
- X readonly = Pb(P_readonly) || !can_write(buffer->b_filename);
- X
- X nlines = get_file(window, buffer->b_filename, &head, &tail,
- X (readonly ? " [Read only]" : ""),
- X " [New file]");
- X
- X update_sline(window); /* ensure colour is updated */
- X
- X if (nlines == gf_NEWFILE) { /* no such file */
- X return(FALSE);
- X } else if (nlines >= 0) {
- X unsigned savecho;
- X
- X /*
- X * Success.
- X */
- X if (readonly) {
- X buffer->b_flags |= FL_READONLY;
- X } else {
- X buffer->b_flags &= ~FL_READONLY;
- X }
- X
- X if (nlines == 0) { /* empty file */
- X return(TRUE);
- X }
- X
- X /*
- X * We have successfully read the file in,
- X * so now we must link it into the buffer.
- X */
- X replbuffer(window, head);
- X
- X move_cursor(window, gotoline(buffer, line), 0);
- X begin_line(window, TRUE);
- X setpcmark(window);
- X
- X /*
- X * We only call update_window() here because we want
- X * window->w_botline to be updated; we don't let it do any
- X * actual screen updating, for the reason explained above.
- X */
- X savecho = echo;
- X echo &= ~(e_CHARUPDATE | e_SCROLL | e_REPORT | e_SHOWINFO);
- X update_window(window);
- X echo = savecho;
- X
- X return(TRUE);
- X } else {
- X /*
- X * We failed to read in the file. An appropriate
- X * message will already have been printed by
- X * get_file() (or alloc()).
- X */
- X
- X if (buffer->b_filename != NULL)
- X free(buffer->b_filename);
- X if (buffer->b_tempfname != NULL)
- X free(buffer->b_tempfname);
- X buffer->b_filename = buffer->b_tempfname = NULL;
- X return(FALSE);
- X }
- X}
- X
- Xvoid
- Xdo_args(window)
- XXviwin *window;
- X{
- X register char *tmpbuf;
- X int count;
- X register int curpos = 0;
- X
- X if (numfiles == 0) {
- X show_message(window, "No files");
- X return;
- X }
- X
- X tmpbuf = alloc((unsigned) window->w_ncols + 1);
- X if (tmpbuf == NULL) {
- X return;
- X }
- X
- X for (count = 0; count < numfiles; count++) {
- X register char *sp;
- X
- X if (count == curfile && curpos < window->w_ncols)
- X tmpbuf[curpos++] = '[';
- X for (sp = files[count]; curpos < window->w_ncols &&
- X (tmpbuf[curpos] = *sp++) != '\0'; curpos++) {
- X ;
- X }
- X if (count == curfile && curpos < window->w_ncols)
- X tmpbuf[curpos++] = ']';
- X if (curpos < window->w_ncols)
- X tmpbuf[curpos++] = ' ';
- X }
- X tmpbuf[curpos < window->w_ncols ? curpos : window->w_ncols] = '\0';
- X
- X show_message(window, "%s", tmpbuf);
- X
- X free(tmpbuf);
- X}
- X
- X/*
- X * Change the current file list to the one specified, or edit the next
- X * file in the current file list, or edit the next file in the list if
- X * no argument is given.
- X */
- Xvoid
- Xdo_next(window, argc, argv, force)
- XXviwin *window;
- Xint argc;
- Xchar *argv[];
- Xbool_t force;
- X{
- X unsigned savecho;
- X
- X savecho = echo;
- X if (argc > 0) {
- X int count;
- X
- X /*
- X * Arguments given - this means a new set of filenames.
- X */
- X if (!force && is_modified(window->w_buffer)) {
- X show_error(window, nowrtmsg);
- X return;
- X }
- X
- X /*
- X * There were no files before, so start from square one.
- X */
- X if (numfiles == 0) {
- X files = (char **) alloc((unsigned) argc * sizeof(char *));
- X if (files == NULL) {
- X return;
- X }
- X } else {
- X /*
- X * We can change the existing list of files.
- X * Free up all the individual filenames
- X * which we got last time.
- X */
- X for (count = 0; count < numfiles; count++) {
- X free(files[count]);
- X }
- X if (argc != numfiles) {
- X files = (char **) realloc((char *) files,
- X (unsigned) argc * sizeof(char *));
- X if (files == NULL) {
- X numfiles = 0;
- X return;
- X }
- X }
- X }
- X
- X /*
- X * Now record all the new filenames.
- X */
- X for (count = 0; count < argc; count++) {
- X files[count] = strsave(argv[count]);
- X if (files[count] == NULL) {
- X /*
- X * Aargh. Failed half-way through.
- X * Clean up the mess ...
- X */
- X while (--count >= 0)
- X free(files[count]);
- X free((char *) files);
- X files = NULL;
- X numfiles = 0;
- X return;
- X }
- X }
- X numfiles = argc;
- X curfile = 0;
- X
- X /*
- X * And try to edit the first few of them.
- X *
- X * In this case, we don't want report() or
- X * show_file_info() to be called, because otherwise
- X * the messages printed by get_file() won't be seen.
- X */
- X echo &= ~(e_SCROLL | e_REPORT | e_SHOWINFO);
- X
- X (void) do_edit(curwin, force, files[0]);
- X
- X /*
- X * This is not very good because it
- X * doesn't split the screen evenly for
- X * autosplit > 2. However, it will
- X * just have to do for the moment.
- X */
- X
- X /*
- X * Update the current window before
- X * creating any new ones.
- X */
- X move_window_to_cursor(curwin);
- X
- X while ((curfile + 1) < numfiles && can_split()) {
- X bool_t success;
- X
- X success = do_buffer(curwin, files[++curfile]);
- X /*
- X * Make sure move_window_to_cursor() is called
- X * for every window before calling
- X * update_buffer().
- X */
- X move_window_to_cursor(curwin);
- X if (!success)
- X break;
- X }
- X update_window(curwin);
- X
- X } else if ((curfile + 1) < numfiles) {
- X /*
- X * No arguments; this is the normal usage, and
- X * indicates we should edit the next file in the list.
- X * Don't grab the next file if the current one is
- X * modified and not written, or we will "lose"
- X * files from the list.
- X */
- X if (!force && is_modified(window->w_buffer)) {
- X show_error(window, nowrtmsg);
- X return;
- X }
- X
- X /*
- X * Just edit the next file.
- X */
- X echo &= ~(e_SCROLL | e_REPORT | e_SHOWINFO);
- X (void) do_edit(window, force, files[++curfile]);
- X move_window_to_cursor(window);
- X update_buffer(window->w_buffer);
- X } else {
- X show_message(window, "No more files");
- X }
- X echo = savecho;
- X}
- X
- X/*ARGSUSED*/
- Xvoid
- Xdo_rewind(window, force)
- XXviwin *window;
- Xbool_t force;
- X{
- X unsigned savecho;
- X
- X if (numfiles <= 1) /* nothing to rewind */
- X return;
- X
- X curfile = 0;
- X
- X savecho = echo;
- X echo &= ~(e_SCROLL | e_REPORT | e_SHOWINFO);
- X (void) do_edit(window, force, files[0]);
- X move_window_to_cursor(window);
- X update_buffer(window->w_buffer);
- X echo = savecho;
- X}
- X
- X/*
- X * Write out the buffer, to the given filename,
- X * from "line1" to "line2", forcing if necessary.
- X *
- X * If no filename given, use the buffer's filename.
- X */
- Xbool_t
- Xdo_write(window, filename, l1, l2, force)
- XXviwin *window;
- Xchar *filename;
- XLine *l1, *l2;
- Xbool_t force;
- X{
- X if (filename == NULL) {
- X filename = window->w_buffer->b_filename;
- X }
- X
- X if (filename == NULL) {
- X show_error(window, "No output file");
- X return(FALSE);
- X } else {
- X return(writeit(window, filename, l1, l2, force));
- X }
- X}
- X
- X/*
- X * Write to the given filename then quit.
- X */
- Xvoid
- Xdo_wq(window, filename, force)
- XXviwin *window;
- Xchar *filename;
- Xbool_t force;
- X{
- X if (do_write(window, filename, (Line *) NULL, (Line *) NULL, force)) {
- X do_quit(window, force);
- X }
- X}
- X
- X/*
- X * Read the given file into the buffer after the specified line.
- X * The line may not be NULL, but should be a line in the buffer
- X * referenced by the passed window parameter.
- X */
- Xvoid
- Xdo_read(window, filename, atline)
- XXviwin *window;
- Xchar *filename;
- XLine *atline;
- X{
- X Line *head; /* start of list of lines */
- X Line *tail; /* last element of list of lines */
- X long nlines; /* number of lines read */
- X
- X nlines = get_file(window, filename, &head, &tail, "", " No such file");
- X
- X /*
- X * If nlines > 0, we need to insert the lines returned into
- X * the buffer. Otherwise, either the file is empty or an error
- X * message has already been printed: in either case, we don't
- X * need to do anything.
- X */
- X if (nlines > 0) {
- X /*
- X * We want to see the message printed by
- X * get_file() here, not the message printed by
- X * report().
- X */
- X echo &= ~e_REPORT;
- X repllines(window, atline->l_next, 0L, head);
- X echo |= e_REPORT;
- X update_buffer(window->w_buffer);
- X
- X /*
- X * Move the cursor to the first character
- X * of the file we just read in.
- X */
- X move_cursor(window, atline->l_next, 0);
- X begin_line(window, TRUE);
- X }
- X}
- X
- X/*
- X * Edit alternate file. Called when control-^ is typed.
- X */
- Xvoid
- Xdo_alt_edit(window)
- XXviwin *window;
- X{
- X if (altfilename == NULL) {
- X show_error(window, "No alternate file to edit");
- X } else {
- X if (do_buffer(window, altfilename)) {
- X move_window_to_cursor(curwin);
- X update_window(curwin);
- X }
- X }
- X}
- X
- Xvoid
- Xdo_compare()
- X{
- X Xviwin *w;
- X enum mvtype incres;
- X Posn pos1, pos2;
- X
- X w = next_window(curwin);
- X if (w == curwin) {
- X show_error(curwin, "No other buffers to compare");
- X } else if (w->w_buffer == curbuf) {
- X show_error(curwin, "Next window has same buffer");
- X } else {
- X pos1 = *(curwin->w_cursor);
- X pos2 = *(w->w_cursor);
- X while ((incres = inc(&pos1)) == inc(&pos2)) {
- X if (incres == mv_EOL) {
- X continue;
- X } else if (incres == mv_NOMOVE) {
- X (void) dec(&pos1);
- X (void) dec(&pos2);
- X break;
- X } else {
- X if (gchar(&pos1) != gchar(&pos2)) {
- X break;
- X }
- X }
- X }
- X if (gchar(&pos1) == '\0' && pos1.p_index > 0) {
- X (void) dec(&pos1);
- X }
- X if (gchar(&pos2) == '\0' && pos2.p_index > 0) {
- X (void) dec(&pos2);
- X }
- X move_cursor(curwin, pos1.p_line, pos1.p_index);
- X move_cursor(w, pos2.p_line, pos2.p_index);
- X move_window_to_cursor(w);
- X cursupdate(w);
- X wind_goto(w);
- X }
- X}
- X
- Xstatic bool_t
- Xmore_files()
- X{
- X int n;
- X
- X n = numfiles - (curfile + 1);
- X if (n > 0) {
- X show_error(curwin, "%d more file%s to edit", n, (n > 1) ? "s" : "");
- X return(TRUE);
- X } else {
- X return(FALSE);
- X }
- X}
- END_OF_FILE
- if test 18835 -ne `wc -c <'xvi/src/ex_cmds1.c'`; then
- echo shar: \"'xvi/src/ex_cmds1.c'\" unpacked with wrong size!
- fi
- # end of 'xvi/src/ex_cmds1.c'
- fi
- echo shar: End of archive 4 \(of 18\).
- cp /dev/null ark4isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 18 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still must unpack the following archives:
- echo " " ${MISSING}
- fi
- exit 0
- exit 0 # Just in case...
-