Path: utzoo!attcan!uunet!cs.utexas.edu!sun-barr!newstop!grapevine!panarthea.ebay.sun.com From: koreth@panarthea.ebay.sun.com (Steven Grimm) Newsgroups: comp.sources.atari.st Subject: v03i096: nrchbar -- Generate change bars in n/troff documents Keywords: arc, uue, C Message-ID: <312@grapevine.EBay.Sun.COM> Date: 17 Sep 90 20:27:57 GMT Sender: news@grapevine.EBay.Sun.COM Reply-To: rosenkra%c1yankee@convex.com (Bill Rosenkranz) Lines: 334 Approved: koreth@panarthea.ebay.sun.com Submitted-by: rosenkra%c1yankee@convex.com (Bill Rosenkranz) Posting-number: Volume 3, Issue 96 Archive-name: nrchbar This is nrchbar, a program to insert changebars in nroff/troff files based on differences between 2 versions of the file. It works with the nroff I just posted, though you will need to change a single line in nroff (v1.10 at patch level 2) and recompile. It will work with the current nroff p2 (it needs the .mc command) as is, but only "|" bars will appear, i.e. not "+" or "-". The diff at the end of this file fixes nroff to handle all single char margin characters. it DOES NOT interpolate special characters like \(br! You will need diff(1) to use this program. If you do not have diff, skip this program. It will be useless. If you do have diff, and have nroff up to v1.10 p2, then this could be a very handy program. The version of nrchbar I used was a unix version and had a popen(3) call to pipe the output of diff to a stream. I have simulated the popen call in this version. See source file for more info. Note that diff command is hardwired to c:\bin\diff.ttp so if your diff is not that, you need to recompile nrchbar! Here is the line to change in command.c of nroff v1.10, patch level 2. It is also included in the postings (both bin and src) as nroff.dif: *** old\command.c Tue Jul 24 22:55:10 1990 --- new\command.c Wed Jul 25 13:50:14 1990 *************** *** 855,862 **** else { mc_ing = TRUE; /* turn on... */ ! mc_space = 2; /* force these for now... */ ! mc_char = '|'; } break; case NA: --- 855,862 ---- else { mc_ing = TRUE; /* turn on... */ ! mc_space = 2; /* force this for now... */ ! mc_char = argtyp; /* use SINGLE char input */ } break; case NA: Enjoy... -bill rosenkranz rosenkra%c1yankee@convex.com ---------------- cut here --------------------- cut here ------------------- table !"#$%&'()*+,-./0123456789:;<=>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ begin 644 nrchbars.arc M&@A-04M%1DE,10 #_'P0 /D4X&H]#W ' ,(T"T";.FC)DT;,J ,/-&z M#@@W+B]2"2+E2)&F3Q]&G%C1x M!1TZ<"XV">($2A"K3J%"E$A1C@L2*)0R37%Q2! J9M%F7ZN4AUB)$D3(H8YMO61<4Q29%0?1QY[];*<]!85%"E2A'.DCTC=ENGv M3IF+2(H$(5)$RI2T20G?S@HW]NS:4U(<[NL"LX(G5&+;-BRG3!@R;10.+'@Pu M(0BX8YT,'D)7 9$D4ZB@O@T5+G+EP:_'U=W]B1 EN]5^[OJFKA$F9^-?9$+Dt M?G[#+*=0<.ESD%!!E2/1&BWG H9 (TRD4!AMLB-#BEF+4q M@1 =ZDU5U57=79DE&EO2T>6788)@88ICEGDF"&FN^<*>=/39)E5641%G EAJp MR:67((!)D$(NFDE'G66D>.B;BEK)Z)QUWAEIGF,D%(8;EF[97!MO] 3"&V*Ho MD24=:A)<;B:ZZ*VA0BII02!<_ 8D9A;I>$J7(VA]BRHN8ZZ:V@577NNMF,HA*Y#U2D$UQ2:22&NK>3:m M*6V>K96A+K7]NC'&&V24M*FSZI5V&F1%= =D0 -9V&)%9Y1!QY)-8G11GSHXl MQ2RB< +Y,:>\%Y"M<0W*G'GW]'I-?"EB,C?#)\PL'%!((I*_"P0*?"k M$4;%(*!0QQP*!77B=U;!Z7LOML )GQVU5V=@)1MC=/U\ZM1MZ7LRDDRYVi M;#8*S8:L@,>,@ZRH>B*2*$43.:-0>8V=^NQY0((3:F@:AF>QO\YUXYT[-08[H[W6/;g M#7WPPQ[[3&W2@X9.2AVNL0*G.#>6I'&VHYQ[.(/CTT]MHVPUDKV+\f M*D?'Y)]Z?OK&3]XW]F#SW&6J]+C%-48X85!/N!B6N>^$9SSCGPPKWIM4$X2I"#06.@&#/9P,PP$TDX*YB4W%$Q@:)!&CIB(/SH)HV9,G/HN)@C9\S)E ()&D2H$!*#>8J1I$6,,C31Dz M@'!3%(V8,')<&$6I4FG+I@UDX+"AE:K-&#)TT(C(=8Q7L"YX'BW+DNE+&CENy M2*18]69.&%OEO#%CQ@49GWN3]G7),,8-CH-K=H01EX8-$'+*A"'3QB1*&@A.x M4D-(0D%2+D, 4D, /!T /D41&T[,"$^ ,(^JX(5/&# @G3[Y 20*E2(($w M+U2 (&B0SAL09=BD:9/&31@Z92:F,6,0A9PR83($HD2*("R":!. LW8V#""3,FI)DWu M"!0'G#9PRt M;E#,T#EG8QTV'].\<0,B#-HW=-"4"1NSSMBV/Q'/-./39T2?.Q.XD3,&C9@Ps M85O4=#-G,QT0J]^,;6WY3,C78.'#E%&(&&W0S/(R,90SER&"!0@1T!%)EE$U!Q7?A24:9;H09AIAB.O57QFV9-:= :FJ\(<9$p MDY5A8!WEP93'36U@R*!*,>&=-1)1=4:(666QASVY?%&';B5489*o M_AE&!X;VL8="#"G8-\>*(+6XF'WG7;@8=):I!,<85]7F(@J-M?'81T>"H-E)n M@H7E8)0O;N>&?V,H-D4*!HX$@I!$HMBC9M!E21D<+=F1!D%DV$>$72<\. )%m M>PU5U%%)+35$",[UI(!;'8%9!T$@\!"C9"Z@X4-I/XT$55]VX07I6B 0D801l M1D AQ1-')"#"&#IPP848'?G*G@MT#"B"6QG5YJI>L,I*JZVXZOH"L&Z\P-ZQk MH0TT$JITY'$810ET=)L8;[S!Q@ZHOF4&5%1(4441> G$KKOP9CL:I^L*9412j M1<4;%PC[,M&OO=O^]&H9";3[[D,QN'5P @$7]1 ,Z3XH0.@;9WC41AE0J[LJ$W2UJ@#>f M>O.MPA=_!Q[&X"#T<-]JK0$G0N&B%4RNN0^9 =D905B5@.41%P'UYVR$/KH0e M)X6Q1A!F@!26Y0JK[A/KKH=Q!A$9;1@2ZOSJK@#O"1 D1AUG8#=GY0 7#S7Cd M>_<-GASB46:Y")B[!AL(,;A P@H4/'$G2#D ,,+,-SP@@PU@ ##3K4$$/]c M.(#04FUNK"%'&)M#U6D^I(($?$4.=X -&9)7!C#!)C*3F4.F?&*$),"L<7W[b M"GJ>((5CC"$OI0#&5PWA"\%Q8B[JYP]"1!( RH/W\)VBH0D78G.&5E9'#&>RP'P6 S:%CF)XGPW)0A]IAt M"UV FM"B5@8\V(XR8%-21[PVM)*>]#AHW)"2ZAA)K6TM:X5TR"'- (=%LF!Hs M&%0!3]>6->HYS@Q)6]I/HQ94I!(U7:H2"JON$K7("6YX((!<2R0W.,YU<6A6r MG1Q6/;H%&(046?=$50+N@(;WD \%6;%M8\(PB &,MA!/SH)q M@>6*\ 0C5#0!(WW('.Z0!CJTAGQC."QB@3J&,(!P8R?0@4$'$)BJP),W0P<=W)>G192Z&-4PFF71XJ08E@ BJ, ??k M30<$_07!%EH0ABXHN05Bj MN*Y0:N]KLY: /@S-S9$<6F"&MA-G @\],WG>>#J$FSJT 8EAH5"7C;-GS9#%i M+%U*RUYH%+6=$'>QC7VL726:%=FH=""'3>QL0W*_! "5IXN$WJCZ-=TT"&2@67Q!)9 +g M:'3FRRMIRJZ;K2>I>ZIVN$7K RDJVU3+8N?_F^,RX#NO& X"<5&,YRE@B=)0)*)VPW*H:.'3SOc M )8UM#.)-F&TWDC+RB&">HT)A\/:%ARU 4[=F6!""67J8,Q$G]D%H!PZ@+2C0(%NVV?D8R(/P&J*8$B48E,? A"!P^:a M'CX=\2F$*QJ: )LU5!1LK:&\'G=P6XET),0@]-$(6F977WRB< %;<@*B\F=^F%Q[E50#.]!%(%Q(Q 1M&0R$HT1H)4"(;N'R@D5/.)%1P@( Du MR%DFB(*@M!).DP NV&51<1$Q8GN.%C3\!!WU1Q.R=V@26!D@@!W@01ENX&> t M5AT&D8'&P1(N41VP0H52L8,#H4#087NT=WQ#@WEH@#9&DP8B" ?PQ59NA0(,s M^(4^(#^9]FF#86.!"#TPP'F 6("AHAJ!N ,U$8BM)EF)!4IL1R>XEH1.HQ,]r M,%B%=5AAAG[JEQZITVMP!C=O %2=. "/)5<;DA5M)XHN468#P':U:(J&%6.Jq MN'[DTXK,17N,(WEZUV8(TE;,H4*/!7(D.>(\I. QR'IT2 8*%" #(B"8F&YZ(A!\Q1QZL%P+Il M^'_MB!N!"(^[*%E 5 1"I$(B(! E=1@/J1*$9005YQ08P7-T, i M,G5KUWS&!7V^)0?3IU_>=WURD'WPQ7W6%W[ >8T;LHIW"7B B5 &]' VJ7CSh M9XXA:4%%L!.TIHX@U'9791\XHW.=]$FAA%1B58]-*!\A<5556!WH09?-=%#=g M29X/B"!A,($T08B/)14/MQ+H*9.(R7K7:9,@\(7YF1Q4.!C+]):-M5:-A08,f MLG="-!B#,P!N9+A'_1J9<>XQYKD0"$%003c M$Z9[D0 .$@120 5?$ 1#, 15T 0)T# K(Z8( Z=R2J<)( -H.J9%83Y,0 1&b M<"MT.@-_BC"!^@2#:CX)0 .)JJ8Q,P1-D#$)4 .1&JA.4 174*A/0*N:A>OU@>Q1:L_ S"XNC<%(%1ST 9#y MH'Y08ZVVBJL&U*U;8$Y.9CF'*5"\BC#!>AV-8P#MBJRW]S,24J%1LP[&(I:=S"K%/$ 022[%#8[$8RP((VZ<*NZB#ZJE-0+(F.[$5"[)[v M-09DT+(T\+(QPZB$:JCV ;-$8#Y#.ZF52K,G6[$R@+'_&K #6[ 'RZ\S\+)4u MP*9N*K(S&T\EN[0I6[7]^K0<*[4("[9[H+5*:[-?B[%ZD*B[:'s MZ[7YNKCUT;(V$+>D*K-Y6[&6^V4/T0(@N["CRJF<"P*:RJE&.[EJFZ^9JRMBr M^[>/>P.#V["2&[&MBUBTR[AC"[@)L+MG&Z>&B[N)NP>[6Z0 ]K:BJ[FJ2[>Lq M6[S+FP PP 3*.[K$"Q@2P3_BY1'P!!K4BBKB,H8;$FJYV"3%03<5E5--)8C8p M&Y]46!9%0U!N@)#W<2U,27MT&3>B13=[8P J0 ;G6S?M>X_) 2"U8:_C(3=To M(T,6$1;\J7K0D49KE !?Z!]BN!YK) (,-#<9QF_CD8$UPGH @H>/>15OL ;&n MH1$\HI 61D#04:1:0;Z$3II@#VWT64Om M[$\=&&:U<1C_T\ OG(@HL,.]93MZ]04M01)!O)GPJQ)&[,*L9\.^<:.4@42*l MML(=4ALMO!,O3!GPY 9KS )LC!MKG!:X <COR0ZRD)VU<,09^j M5CG22ZR'M*R3P]W6@9,'"MU%20HESL!5=(4%,19JM-L!,Z80*,U 9E]6KIO'H/L@8&TLIND*-C>!%;$1,Y:$]D %1T^1"$R!RXYL_JUP(^4-%P)[I 90(Fe MT-+>^M(Q;:P+ G?MFLE AT78N+0%]LISS,XSP)68H@H(TQMF/-1CX<-G(1*605;<)P0!T)G8K'[0(]?V(BP9T[+)_&D5M4X5@,B@(=a M!A:2E=+,A]-NO=-H4LVBZ\QA.9;JL1S,<0;:,27QZQTT03-K= +W*R 5%UWJz MS-FM7-),IT<_NI&5@< H11DNV*Z;35S-V42FK,J&C=0^\-V8J +?#0)P5Z:8y M^-V;*(M871):W3STZ]5@?=9BW7T])G(>5H,Y*UX?7"YK7=W^KK(G7E,Iu MSN2EVZF&:N$2L67V <8Z:*P8B>4$H.5T ]-(LS8(F&HX[F=@GN1BON0@E+JEt M^@1/GN9DL^:]$1*6N>%Q'L!TCF]L^9N:66&'EITs M_>:*+N?B335+<^>1GN-[_ESP->9_CNES2QWMR^GZ<^@F#>>BWNA5;]8IMQMP.+PAD6@NWA$PKC\X@9";[4Q\q M!B"[,ID[N]U ]=-VW:&.;=L@0:_P);$KC3 ]5M=A,=-1.C30G,I6BI=[*9T"p M]49Q-$<^E']9RCI\#$]52D'4>80\!9_W:)1O.3F1R8QH^5U>Z7WKI<"E4=[-,%_F5!9ZGA@3[ZBGG4^M1):1S85I;\\ #3E[3:4A'A7=F4/?EN>T33(5%2)WKk M2U0#?))\MF7F29>I=_&L=_8!]X4WLB"U?.C@9=U[CWM=AHE4.@)[SX8KWVUIj MXH8OP7 MOX !^%16*?OO1JP,N#9#8!AY %^Y?VH2:3FW[@-U3C:Z+AO#7_QEi MXS0@$.0QD#4,6#7:*OR,3OSO=OP34?VDSC3,[_S0/_MDL_MA:#F_?P?PI>"2h M-OQ=#J/2!4(70P0=QU17>5ZH==5'NNY:Z>CB/X&)V.,V'?#[3D>YN'4/'F,Ug MR479>;'RDW5;5^+EO_^RQUS #NQL5_[[#P+];_^;!7ROQT3D5/[[#P+]#P+_G_%R1$>YN'4/'F,UR479>;'RDW5;5^+EO_^Rd MQUS #NQL5_[[#P+];_^;!7ROQT3DR52SB(P;I4(GL 5-CW,"a MDHPGL 5-CW,"DHS3^-&\6)- )=T/0X)R#)> )=T/0X)R#).(T?[8I M4SW99 R9'^B]9SL^&YJOT;Hy M-A"PUT2]9I=OUGYBJ6-9T2X@4V%Z79FD'5;9_ P@_"&K_!W'W",x MKRD7BH207X+Q:1W.4Q4&Y%86/T"I4744/'LM008^PQ82WY"A57QAT<7X:E/*w M+\K/7\E&HQKV)UI9 _=TDSQTKU9>!]&QHQ+<3O%=,@?8DL]1@_\H(,%]Y'9Fv MP*\F(.HID #IG?/YVM#9#DHD7Q8"4<3,3_%= NY,!8#]2/T<[ +*?^>RH?S*u M#-\![$ITY-4N S,RX\P 6$.775.?VG \6UIU\ND-5!Z1+XFD/9LO_8,UVO*+\JBs M[@+*K^LK4*=9D]E>!]&00=(9R(%J-S3X#U?^]R3VL:]LOW62!5]VV7Y7T #ITAK-'IC+YTJ.G"*M$:CIYT(9T".7E'M&9ZW;Y+4867FJ1IBq MQ9Z_.I*.KO G2?E=IAIB9?DSF1H#ITAK9!PI_*%5HQ,K4*?-'W=RD,H?l MNG7-#SY6[57*$C5=#CTFT.7+8P8+;7'W$C6Y3'W.!E==\V'&D63]%6#.4BNWk M<@0)]VX)Y^AZYW40_=P(QEB9(88#-YLIS5-0D$@"EY]PU3445V E"@=0D$C5j MG*('+]4M^J(IZW$\5M8>5J/5)L8@G9\#YQ6#,:0NEKPQEG.(W#5/BF;66%->i M!]%A9QG; 0<4:!9XJT 9!2CB'"<%(Z1B0f ML2 #IX&%%A(.,N5L, 9"X@9X0AB)E-RU-_%T)!5=QFBI0:54B/<,/!B"]G Te M4_F65=(#%Q)XS\!@P6AJS'IU!TPZJ%V/H1)@ DREF1<59J$d MD4CFR8$V@B.5(08W(@=4 4]G9AS-CDUD1!4Q.&&A9V@#YQ4N>1%JX1MRP&CXc M"C$'/Y(96E->!]&3P083&#M>XFU%1\#5P;8\M"D]4-NH!9.AP+)9A0YM8S-#78X:!G)?1LG,1,Ga M<:U2P6<4WR7@SE0\4UEUU>5Z!0(^L-Q,Q3.555==;A_)9A0YM8S-[4S/W5ASz M^=F']A@J0<9M !8Z&#SV"AYJHL?4H2< @HV\_-"5J/5!A/8IFVX885Dv M5QAO#O$)TEBFZ6TA0&XYUVO0G*('+]5^]V;MQ_7+^8UU!TP(\1YJ-S1@ DQW5V "t MH19.AP+)9A0Y5>]H-1H@$!%3!1IH-1H@$!$A@&R#!!K*2?;,:9 R9'^B]9QCs M+YV.9Y R9'^B!:#L*(!LKX!&PX *?Y(&*4,*^8+\N!;&\9&-#S,(S[XE&)\Ir MJ-$L:9X@>?D#E!H&*4/V)UK/^84&*4,)L)-I4(:J@89 N88U1#1B6/H(^H>0q ME!JOC3VQ;S2M,8C.Z$6'*!O]S_[)X\JOO%EL%_/'C(L\9?.EB//!>-8[3Y9Fp M64SAE29KN=PUQ8SK#HT,*HW4" +_'XV6,XURT/1O)N_'N7[)^7[+^8T[[Z58o MVGA&1!Z;(99-U 9S< 85U9ZAU 9S,*R'"<&LM_,4+!N=CS"6@1$/&A:)5A@:n M 1)L,($E]2D4"AI#<]_.EM\T2FTHYU_)6VZ Z)M, =G4&!\%Z7N!QH(3E)#m M2$)!4BY-04X "T' #Y%(1E51-%S!FO)@1(Z,-'3-FZ(#!4AU#EK%Z_>B7PGOJGCALQ?-C%[YS5>=@R=-&_(L@!1QDX9OVG,g M@*"#IDR>NM'GI($+@JW6-]S'G@$A9C<(%6O;@F_3YBZ9.2ZDTK8MYB:1-PVAf MUU=9!W\&!X!AED*&>6&?=D09W16VQQ4#V!18:&Q^^.",(,M(H0A==B'#A5#L1d M4<040TA!VVM+W>1$9%W=-!:!=/ UQAOTVL+;( &5<3W13&'&"Vz M48:K$)XUXY=TX"K'ALFZT6N,@R477;ACA9B=&9>ZD2E[G'IZ7;&C'6MM<5J=y MJF^YE+Y+YTUFRE$?':D2JT!H^1*6+%]GI&&=&].]ZL:TDJ&I@(S(@2 '<0&Wx M-?#"?KE$HVK!E5I'6=MU5]YNYX*0UVERA$'BK\$J(,1W"37[+!W3;96Q6&=$w M&NN#$6X[Z(1E. <=6>"YP:X;+T::'EXWM7?6G_)MV66KT]V!1AH0P;A=&&LHv M72N]I'['QEA*;QJQ&U3C!>2,:!3%A0M&WI3%<'7=59YUU]?JTH7:<3A=C2^:-7 74C$V7QS't M! <;820*F%TU.^?@VHTWZY7A9Z!Q%EO4U9[WHLPU+7GKKR.=>X->*0N8""L,s M5/!?9"24O-/A33<]'];#J4 ;AF:71HM,r MM/.R/L]:LB]$F.+V1X@]*L]A>5>Nn M%66)@B HU!EJUH8 T0I F"L0!5EVH 3=3P&J D%]TL8MU)7A1"#@T1N(2#X$m M93(-:7M/?.!%KM.DYE@2=(^V[L(MFTV(2W19%'N Z3HG. L87 @!(&$)V2]l MZCMS\-"SR' D@2 )!%"0PE*JX(0A)"$(4'*"5 3R%)\@H055PHDQ#5,$*F2Ak M"4]@PA..D(5IBJ G:@+!3Y(&@J!(@35%F4(1B@""(#!A"D^(B@(<,J83BB<=<<9R%PNY,:YC.MAXXAJXB9XMX8Pd MG;?!A;CEB=]X9M?%1QKA3*7-$VGA$)KQ=,!VAC!=QN@33&c MI7$UJ\GZXZYBMJF"T855+K+;!P&TN2,9)@A5T,D3WHD3-RBL"E3# P@VF\$5b MZN F^GL)")B FO%X=EMGF0)#&]0&ODQ!+5Z-V+:FDP1Y70@',H!!#0YS!74Ba MJ P*.ATRV7 A(1R$<+6B& CV"P(0Y. &,!#Q35!0@Y (R@8TF$$+M&D3Q@T9%V- @*!2IPP()778@)!!8Z,,'35JZ(@! T2,v M'#E@-%#00B (-V7N(%3(T"%$B5?*D+F8<6,-DS- PAC9\63*E0$?('6)(R0+u M'#9D@ A(8*7$! G*L)E3QBH(K'N\)A#89LR7-&[.@!#88Z*4*D5V)'BA @2=t M.G+<$'3CPJ6*%RM#?"5K=@Z<,&,LMI4A=VY=,V_D)+:+I@Q7$)#EO'QSI^_ s MOX$'#RC[90R:,)I!M#W!Y\0.L0GZP!8CITR8-:\57!T3YK*3(#I6MAS8M,;3r MJ"!:5M7]->O6KLS!BB5\-NW: 6VIO(WKV"Y>O6_X^@6L0/#8T84/3U[8;<"NM!!H(4D5!1$U% $E& $X +<$ #W%-L5o M-=*[!@ #%30E $APHV<,6C$A)$C @0<.6_.R G3!D09,V;*C*&3QDX9-GE n MI'$SIXP<.G- N'E!!R+&%G/HY&$S$&$8-V<&*I0#8LR;-FUNDIG30,%(.F] m MF$E#,^4=-&D0@E@X$,7#,G/J!!4#,H5*EB[-@)CSIL[!,BY @##RAF>;M@-'l MFFD;E.,;-RR*^B19APT=$'0$@@CJQF&8G"Z*%J62=&3,,&S8$#2(<*<('8H5k MQ$B1( E).!K_BF@29LU%IF4:SN7Y\ UHGF2P\P>0='[&!)4<>CE0IGV=EFL:Fc M;>7A::BC!F5:3S3=E%D2S(:11D6!U3;=E*U)1!$(=X3AE)ITT-&;1;X-^U%(b M8H2TI(:]14F;\V6E*B.a M8:X(1QU<197I3]+BQ2U44D'KQAMW%$7&&^TAP;&K)FD(K;(#;WO(& AK?]NN&F&",6AB<Y/%4A1-)8$$J0B-AI>%(v M8[!11X X9;Z@N!59\6A1E,X!N;C]BK5B@',$+^V2/(4AQAL>F7Q"B3TO&Z9 u M"TVU_>@@B'Z&U&2\(%U&M9E51E&\Q5&';',LKT 08ZRQ\1TT(4-."(:2J4QMt M.C=90TK")(4W,.XD()#"B"PG%BJ480TMN%PYO^$M "$ C!@2!@q M0AGFM;8$J,6",3$>@]J0DBFTQ&DE]!T(/#.&1[D1!#B0 0QJD+DKN(1ZUH.!SJP*!#6@P@Q;D0 8XB$%Fo M_N@"2 P@!.+"($0$A0=8YB<-(=@>5T#@2NFX4I=L +EP.:"*E1A"%#(#!H n m end