Google
 

Trailing-Edge - PDP-10 Archives - BB-H137C-BM - uetp/lib/sender.exe
There are 20 other files named sender.exe in the archive. Click here to see a list.
?p0` 00 ?h@?x " 
 
<++#2	`ph+@"Y2+9@3gtI9(+ 3 @@L *" " $0,,. " B; " $;,F 5@D H`f+`f+:`f+:, ",] H,]+:ZHZT= H,L.P ,,, =,4+:DC`!<,S4A
H.(,9+R\ 	
+@@B@@B@@C@@C,(4@,B@4" $@,4@A,4@ BC $,# BC $4" B,jO@D+. & $\&&,/+.,(4@0\$!"46XB
q 
q 84= 
q\$	M &@ (4B $@/\"	M,;+oZ
q	+ @@
q+. F $\&F,/+. > B
+.\"M $@\&K,/$" \"M,;+. "J,9+@ +.O@	,	,K,_6B,9+@DC`+. " U$@@+ + \"O,u+.\"H,u+. C6@, @@C+. O B
\"P $,>,;,^4,K1+,>,>,>,>,>,>Y B4,,	 
 O B
,9+!\ 	M @E\"	M $(,; Z $D Z &@+ +  $@/\"	M,; V
+.!>+
6"D,9+.@ +.1+3,>,>,>,>,>,>,> B D F,H4@e,>:\  @4j,^+.@@
	 l*&	 FG,9+@\ 
	 E,9+C\ 
`l E,9+F\ 
lE\"},>&\(
,S,^&"t\(
,S * "
 BH " $G,5@1B
+R1B
+R1B+R,4s=jK+Q1+V,>,>,>,>w-!  &$ D &$ D~ F~,9+a\  `0 w`~0 w`~0E+.1+e,>,>,>,>{Q",9+i@DC` { \"MX$Q$S&}@+ +  "M,9+p@DC` } +.,9+t@DC`  l,~,9+w@ ,~  
  "Q@@*"!" B0  B0\" B0\" B0,~  
  "Q@@*"!" B0  B0\" B0\" B0,~7@D+
@$+@@+ 
Hp (`(H9 @H9 @H((H9 @H9(`(H9 @H #@@(H"'
w @H%)+@@(H')
(`(H*9 @H+3(59)0P	x`pSENDER>:+5+5

********************************************************************


SENDER Program

FUNCTION	THIS PROGRAM IS MEANT TO BE USED BY THE BATCH
	TEST CREATOR FOR UETP COMMUNICATION.  ALL EVENT AND 
	ERROR CONDITIONS OCCURING IN THE BATCH TEST CAN BE RELAYED
	TO THE UETP VIA THIS PROGRAM.  THERE IS NO OTHER WAY
	TO COMMUNICATE WITH THE UETP.



COMMANDS

        a.      Commands which qualify the messages to be sent.  

                1.      TEST NAME <text>

                        The first 10 characters of <text>  go  into  the
                        test name field of all messages to be sent until
                        the next "TEST NAME" command.

                2.      BLABEL <text>

                        The first 10 characters of <text>  go  into  the
                        batch test  label field of all messages to be sent
                        until the next "BLABEL" command.

                3.                           /  MAJOR  \
                                            /   MINOR   \
                         TYPE  (OF MESSAGE) \   END     /
                                             \  ERROR  /
                                              \ START /


                        A code corresponding to  message  type  will  be
                        placed  into  the  message  type  field  of  all
                        messages sent until the next "TYPE"  command  is
                        given.  The message types are:


                        MAJOR   major run milestone
                        MINOR   minor run milestone
                        ERROR   errors  
                        END             end of run (a major milestone message)
                        START   start of run (a major milestone message)



        b.      Commands which relate to the message text.

                1.       EXTRACT (MESSAGES FROM) <file-spec>

                This tells "SENDER" that the messages are to  come  from
                the  named  file.   These messages will be placed in the
                ninth (text) position of  message  records.   The  first
                eight field being filled in by SENDER.

                Each message sent will also be written to  the  terminal
                assigned  to  the  job, so that in normal usage, running
                under a batch control file, the messages will show up in
                the test log file.

                All the messages in  the  file  will  be  sent  in  this
                manner.   When  "SENDER"  reaches  "end of file" it will
                return to the user  terminal  (batch  control  file)  to
                accept more commands.


                2.       SEND (MESSAGE TO UETP) <text><carraige return>

                The contents of <text> will be used for a message  which
                will  be  sent  immediately,  along  with any qualifying
                information provided via the commands a.1  through  a.6.
                The  time  stamp  will be taken from the current monitor
                time and will be labeled "origination time  stamp"  ("O"
                in position 19).


                3.      EXIT (TO MONITOR)

                This command terminates the execution of SENDER.




RESTRICTIONS

        The general conventions for running batch jobs are  intended  to
        guarantee  communication  with  the  Command  Processor  at  the
        beginning and end of each batch run.  To  accomplish  this  goal
        each  batch  job  should run the SENDER program at the beginning
        and end of each batch run.  

        SENDER  gives the batch run creator
        the  ability  to  communicate  with  UETP  which  records  all
        information in the error and  event  logs.   This  recording  is
        essential  to  the sucess of UETP.  If all batch runs follow the
        recording  conventions  then  their  flow  and  status  can   be
        monitored and reported promptly and accurately.

        The basic conventions are quite simple.  The first step  in  any
        batch  control  statement  will  be an execution of SENDER.  The
        information sent must identify the sender  and  give  the  start
        time.  The last logical step must have two components.  first, a
        %ERR::  execution of  SENDER  which  traps  unknown  errors  and
        informs UETP.  Second, a SENDER run informing UETP that this
        is a succesfull end of this run.  An  example  may  clarify  the
        convention:

                
                @RUN SENDER
                SENDER> TYPE (OF MESSAGE) START
                SENDER> TEST NAME COBOL2
                SENDER> SEND BEGINNING COBOL2 RUN
                SENDER> EXIT
                        .
                        .  ACTUAL BATCH RUN
                        .
                @GOTO NOERR
                ; We execute here if there was an unexpected error
                %ERR::@CHKPNT
                PRINT COBOL2.LOG
                @RUN SENDER
                SENDER>TYPE ERROR
                SENDER>BLABEL %ERR
                SEBDER>TEST NAME COBOL2
                SENDER>SEND UNKNOWN ERROR IN COBOL2 RUN
                SENDER>TYPE MINOR
                SENDER>EXTRACT COBOL2.LOG
                SENDER>EXIT
                ;We always pass through this next section
                NOERR::@RUN SENDER
                SENDER> TYPE END
                SENDER>TEST NAME COBOL2
                SENDER> SEND END OF COBOL2 RUN
                SENDER> EXIT
                %FIN::;In case of disatorous errors

                @CHKPNT
                @PRINT  COBOL2.LOG
                
        The basic philosophy of the convention is to guarantee that some
        message gets back to UETP about the ending status of this run.
        If the run ends with no errors then that fact will be  conveyed.
        However,  if  any unexpected errors occur then UETP will still
        receive information about the end of the test.  

HINTS

EXAMPLES

:x,~\" 2 &#46\"J  7J4; * = B(@@(\"(\$I@@4B " $D,4@K,4@RZ
 `F`,4\ ( B
q BG+.@
UETP-                                                                                t
yHM,@@D+:Improper field (input file) in TAKE command\",b+.
?Cannot open TAKE command file
 \"	,u+.Could not set file byte size for TAKE input file\",b B, +.
?Cannot open output file for TAKE command
 \",u B, +.Could not set file byte size for TAKE output file\",b B,  C, +.H
?Error in BLABEL command (from SENDER)
?Error when trying to parse filespec in EXTRACT command\"*,u,q+.Error opening file for EXTRACT command\"2,b+.?ERROR IN OPEN FOR EXTRACT (FROM SENDER)\"8,+.?ERROR IN SIN IN EXTRACT (FROM SENDER) 
q
`d+u\">,+.H
?ERROR IN TEST NAME COMMAND (FROM SENDER)?Error in SEND command (from SENDER)
ERROR?SENDER started illegally.  BATCH control error1:},^,^,^,^,^,~UH	M@1:},^,^,^,^,^,^,~[
?Error parsing TEXT field of current command\"`,u,q+.ERROR WITH SOUT JSYS AT STTXT:\"g,+.A
	Can't send message to UETP because  m p lg:(qgtI91:~,^,^,^,~t:1:~,^,^,^,~x?SENDER error:  ?Jsys error message:  ?GALAXY error:  ?{UETPCMDLOGTake command illegal within a take file..command ignoredBLABEL
xEXIT0EXTRACTAKE
X!TESTx.TYPE 1current label of BATCH control fileto MONITORmessages fromfile to extract messages fromwith SENDERmessage to the UETPcommands from filefile to take commands fromlogging output onfile to log output inname of testof messageEND  LOG  MAJORMINORSTARTxUnexpected error in GETJI at GPID:\"2,b,K@Unexpected error in NOUT at GPID:\"8,b,K)`Error in SOUT Jsys attempting to write UETP's PID\"=,b,KUnable to send message to INFO becase  D G lg9HgtI9,4JFailure in receiving INFO mes L  lg9OgtI9,4QCan't get UETP's PID  (probably not running in this directory) S I U XZgtI9@@ab,77@b+
!$Zb"(D ",ZbZb.RbX" BO@a[b[b."  Dc+
O@m\"r Bo\"u Bp Bp "  B) "  B* "? Bn@@q "@ Bq\"5 Br "@ Br "u Bs@@$ "n B @@o@@p ": B!,~,0B0b+vO@n4"L@@nSX$"*$"0B+w7@m,7,D,W7B# "r,c ": D!7@n6@m+?6@a+x+T,F4@06@},`Z! p B_ "n,V  Fk4@SX( *(`f+,af+e[,a4@ df+z " $ ,5@T6@+0,W +06&!0f,4 & B" " $ ,sZ!,h4@m  " $ , 4@u !  Z!,^5@t0F1F7+{Z  Z`4B{:XB!+T!(bH'+z7@ $!(GH' Bl+0BH'+? &A" 
&6@(+ B(Q&A`X&uZ&:Q(A`B5BZ" A"QB( &A$/"QC&!"@cB'+!"GB( " B(@*'6@il" Bj Jj!"BBn,@@a\"u Bp "@ Bq "u Bk " $j+
6@m+7@*+,!4@,#5@+,W +0,'+,' $+0!"GB'O@( $	+0`f+!"@GB' $
ad++
 (, 4A )0B, 4A+
 "  B) "  B*@@i@@*!"BB',~!"BBn`f+]!"GB'O@( $ D%@@a, 
&6@#+76B$+5 J$+6,4 J$6@(+<!&A`X& F &} F,9+<  B!%E $@*'l"  Bj Dl Jj "u Bk " $j@@(+? +B+
@@m7@*7B$+P  FoQ(A`X(u@@3B+V,h
4LLL9
JL Jm Jq\"u Bp Bp,~!&6@*GF'S)X* Fo6@a,~@@q\"u Bp,~,k 
+M7J#+\ J&[(: F(.&( F&,~6J$+b,3 B& & F.& F& &XF,~ J&@@$,~,h Do D_@6@9e Fd+
RhdidQ$A`X,~ " 4 " 4  
<&q,^B+o@B +
~~"**<*."*"7"< XG& &QG&:& Z!Z,^7@[ G&:&,~ 7 
 &\"  
`Z$*&Z`/"QB  0XB  @@u*"| 0	+ ,~ XI& (QI&:&  I&:&Z   I&:&,~ XG& &QG&:&,~ &.(Q(A` _2Fp+@
+!
3Fp+!J+J+& &.(Q(A`S&A`X&5
J5J$Z(  /&QI& XI&*&,~ XI& (QI&:&  I&:&,~Zaf+"\&." (,4'Z$ 
/&QE&  XE&*
&+
Z  ,h* &.(Q(A`+$+" & .& F&,~,y!"@BB' @@u*"| ":&(0F+E,^:XB!+TZ! B`,e4@N  " $ , 5@N7@ $(!(GH' Bl+ `Z5BG+
 
Z( (,hab+^Z(/&SfX&*& ",X!&BFSX&~Z	0h,45*& ~ &~ F 
(Z(/
 (0~ &~|O@},~@@}|[ ? +.0d2d,49QF4FhQ$*$'@@ +
!"GB+gZo1F ,9+n !9 : =E` >+o & >Z
 0J+  F&.& Q&A` Ff Fg/&.(`$( Hg o Ff!& Fe &> Fh@@h & Fe "e,\4@!"bBe+!"bBe++@"$ p/$```BB "?/q Bq\"u Bp Bp "@ Bq!"GB'Zo1F ,9+ !9_ uD`+@bf p Bi &:,9+  #   "BiZf." /&QE& $XE&*& $XE& $QE&:&+
 $@+ $E+Xo1F ,9+# !9 G`  H K+Bi+
 @HM&8@*801 `.,pPQ(:@@+ @@u*"|!" Bu  Bv\"R Bw\"S Bx\"S Bv,~7@*,~ " $T+O@*!&BF'6@dGF' 
& 0."0,,4@N0B+N,(4@O ,5@E,I4A,4@N!"GB' @@,r4@P+
,4@Q0B
0BQ@@i+
 $X+R $[+R $_+R $b+R@@*+ @HeU( (HfW @HjY(\ 
& 0."0,,4@h0B+h,&4@h 
1b7`+i,W 7` "0b "$"t;+ +
 $k+ $n+,-! 
 !"
 Bu\"v 
4 	4 "u@@+r-!  B~ D} "C B " $~,4A B(O@* $,#4A B)l"	+s ) t+s7 B)7`}+u " B~ " $},4A B) $,#4A B*l"	+s * w+s7 B* ( )+
 B]@@^+
 ]+
7B^+ B]+
 ] @^[].@]+
 ]Z+ ]Z+
,0B++,0B++,0B+ +,0B+ +,0B++,0B++,0B++,0B++,0B++,0B++.,0B++.,0B+ ][+,0B+ ][+,0B	++1,0B+ abp+Q&A`X& w@@4B>1b=1"07/"/"`hpB+9 +,0B++7,&4A 
,24@F,&4A  +
 " +
,0B+[ ]+,0B+[ ]+,0B+[ ]+,0B	+[ ]+,0B
+[ ]+!"@GB'+
/"7@,4}Z[3D+./+
,X4A1d+6B+
+,X4A1d+6B+
+,X4A1d+6B+
+,X4A1d+6B+
+6@*+
 c,X4A
, ,_2Bd+v6@+v &@ Fq@Bq\"u Bp #X Cc+
7@a+
,x+
,K .$Z D`!"X"Zb)4}+
,9+@ ~ +
7D`+
!"X"Zb)4@@`+
-M6@c+7@a,~7@`,~@@` c,X7@,~O@cS"Xb/!"X"=!"X"l&>[o $&,~@@c "0, &@ Fq Bq\"u Bp c,X #X CcO@a,~Q$A`X$u@@4G
9,
+
,-!
@T@@p!@@p" BphdidQ$A` Dp  "C Bp " $p,4@ BpO@,# Bp p  1f++F+(@F,56@@@6@,9+1@@6"p, 7D+
+ p @@p@@ 1Dl,1D+1Dl, `l+B,e4@B1D+1D+1D +	1D+
`l:p,L+:6@p+D $H+ $,i,9+H@ p"D`+
 p  dll,,e4@T`l,i0D+K,e4@T`l,i0D+Kdll,l,@+
,J+
l,1B+ $W+ p `l + d,,e4@TD0D+[ $d,e4@T0D+\"p\$p,W6@`bl,`bl,+
+
 p,0D1D,~d,@,~? p!+kDp!,~,>,>,9+n@ p"D` "y Bp!  Dp!,^,^+iPARSER>Invalid parser block size $s+0@@"9K6$&x1F,+?XF!+TINVALID FUNCTION CODE FROM COMMAND { ~S_C9Action routine error aborted commandError closing TAKE command fileEnd of file durring TAKE commandEnd of string durring incore parseInterrupt durring command parse?{Rescan JSYS failed,   _C9,4$$@.XvError releasing command file JFN $+DEVICE DESIGNATOR CONVERSION ERROR ! $I%_C96$Error durring default filling routineSHARED SWITCH TABLE SIZE OF  TOO SMALL FOR TABLE OF SIZE  ,`/ 0`gS3_C9TABLE DELETE ERROR 6i(8_C9Enter text and terminate with ZBad argument in message  -  expected confirmError durring text input%  Message truncated - text exceeded buffer capacityCommands FromDISPLAY@P-NODISPLAY@X-SYSTEMCMDDSKTAKE command is illegal in a command fileInvalid TAKE commandNo input file specified in TAKE commandCan't open TAKE command fileInvalid argument in TAKE commandforNumber of Seconds to Wait between 1 and 60SecondsInvalid WAIT commandWait time must be a positive number between 1 and 60 "+ " B) B*+	HInvalid PDB Header in Parse Block x {SC{_C9
?Timer Setup Failed for  $3O@p+-Hp%Help file "" not foundl,+9,Y+:,J+:,S+:,e+:%No help available for ""?Error reading help file "l,+
HpHp"+ ,>,>,,^,^Q$,J+
,/5@
 =.,>? "B,>,> "(B{Q"[A"1D="4"$\"v ?
4$\$v,35@, "vl"A`\$v,35@, @ Bv "vl"`\$v,35@,\"@<++,^,^ "BT`&+
 "Q"42adg\ ,~   GB5B5!" +<lQ" G@4<\ 7  ,~ 
 =/,~=SYS:? GLXINI - Unable to obtain run-time system
GLXLIB.EXEHEx6H6`HXk@Xk9Z
j+	j*	j*aA>#sI["
X;X0X.X.X-X-
G

@
?~T2O|Z\Hjb
P3fWPC3S:HWPC%[O3ETPG+
P@+PbaP?`Xn%T3n)<n)5;sP`PYu6)9tX9x@2Bwc(PEPE\#
BV\#	#Y\#cY\!>U\!yW\fX\mKX&HW\5GV>jr7iI[S+U`.M
j}P
Ial$4IaZ0IaU-.Ia)%+IZ8P,IP%+IP${-IP$v,IL.$3IL/IJ5"/ID/&.I@ZM-I@I*T+#RL(KG|1.>7E1,)OE1)<C1)7D1$CB1 53C1B1*@1}OA1hD10?1O@1oNA1TBF[|!\{bBz[z	\yc]wZXI]
Xw5@KzJ@JKzJ?|pK^gn|w=
Qhb6P
~eM
`Kg}rHR
@`Lg|hLg|ZNg|YNg|YMg|g|}Jgz$sRgtmKKl <K1y=
O2Bl[@P	xLny7!
/G<!
/G8$
/G7 
/<B"hz4h*Kh)t]4]L#\NK\Mt!'#Vd%SM7 
.ow$Qq"MN4PRXHY.B/UQgCUQ#GUOn{E7UO'tUKMUE0UBCU>fU2GCU0Yt:Bt=&,t=%$t=%,IlOwOvOvA*WD"%
IOmgOQiOPf^OPS@OPE=OPE6OPB:OP;:OP9MOOqh WwZsWj;$W`ZPI=Wh	WWNWW;&Oq|PimOO
2OO
	OO>	OO#OO=ONyiONs3ONm&ONdiON`wON_{ON@^ON@FON-mON-GON-@ON-?ON JON|ON+ONONqONMON
s
ON
]ON
VOD~wODJGOD9_OD9PHhoPHhjPHgPHgPHg
PHg
PWmvPGpPGjWvWuP^WuP],WLoPdP7PtW4SW0"W.IdW+|.W+|+W+e=W(Y1WPC3WPC%[_C9W1n}spW1Qt*p PG+
1$D4AP@+KM;,~W-F6l}W+C)p"W+CpW+ADpW+A
pW+@PpW( 
~W(ju2Z#,W'M+rp!W'M+rp!PbaPG@,V~d,V}|\,V{mi,V{mh,V%c,V%`,V$S,UDpY,UD\W,UDHUP?`X'se'z'u't'mUqQwx2ch0][`Nnch0qOaN)h/+bh/zaP;3@P`Uex&ex#"~exzGxMP}%}MPbcMPd%ePst*MLF  MLEt@KS:K6
K7E!K7EK/>7K*=~K!:*KiK
wK	{<Ku]~KjI<KWKI|.K9C"K:E&K:E$PEPEM[/_dM[,YM[luYM[k&fM[K^28L=M>@PG@De 7;L	M6w_.5q5o*0k5[5?5EE4~:*nM4_(gM4^uLM4^EcM4^CG]k
KiU
)wvU
)woU
)vzU
)ukU
)uWU
)uRU
)u/U
)u,
vd
@^
2^[S+UavUaUa9Ua9UUY	dUXq7UXHfUX8UX/tuE"stkGtkGtkFtkFtkEta+&t\sTt]tVBjUus~UusvUusrUus3Uuq/U`.P
P
P	P	Ugd@Ud	mU\f|URxUK)<UK' UI57@UH^UG?& UFc\UBc
sh,:Vw&:|K
1w:kLl[eV~Pm&XTCf3	TCeGx8HY&hT+#R(Q)L*(Q#,)L$9.x
Xw5@
Xp4@KzK
$'on
^~ev^}/(S^~6h^\RWD^\TV^\TR^\TP^\TM^\TL^\TJP%u@E$qQeE$\mHE$PHKE$>GSE$+h3E$&VE$&WE$%_LE$%\TE$JE$YE$
`E$	[@z-@z+D@z*B@z):@z%+@z%(S,;:S+@.+?.Bu(Ug(T|wo(T}&(T}%
(T}%(TpeF(T]#(TWe>(TWe9(TWd7(T05
Nt.(T%e1(TE(TE(TD(T
KeS
2~S
1gS
14
CB'SPSSP/QSPwSOc\SO^ SO^@SOW[HtFH	%NH	%GSe&SBp@SB1VRd=^R'^R%^O
$^KdB^O,]{0]{F<]{F7]{E6]{E5REsP^o&P^nP^l^`RO
RO:RO^ROI@RO7M
*mRMqvRMq.RMo/RMoJM@:@L? L?#KRM; KR.WKR1FbKR1E^KR1E\KRL)KR,(KQ~KQ}wKQ{sKQjBnRK,@H&=t@JL  JLJLOK!o&#KvGHY\!RT5s+@R:eP^yR8H.@8v:u
+sU)0R.@#N5IA/u
"
tB7&RmxxGb,P%@rT*@p]zoz~3wdUG{PIYOOrc PI=O9RHOi),O(h,O(hO(hO(hnE%OQVOKiO/gOXO{O/L`cujiMKOOwON_}ONK]ON@ION?)ON36ON-ONkODp~WgPHhoPHhjPHgPHgPHg
PHg
PWmvPGpPGjWvWuVWuV~5WuPrWuPqWLoPdP7PtW4SW0"W.IdW+|.W+|+W+e=W(Y1WPC%[gtI9OPBiW1UK ~PG+
P@+KM;,~W.	{~W+P2Z#,PbaPG@{zLV7
z.@7
tM=xi5=xi3_g	1_cz.=w*=w)=w'=w#_c&!_]X_w=Zo_	_	=VT@9^t=P@VP?`XVKV;/PbK=}G
I~:aC
qUqR$.@qQS/UqQUsUqQUp@UqQUoC`UqQUnDUqQUm@UqQUm`UqQUkUqQUk`UqQUjUqQUf UqQUdEqQ;t	
nJqn5@RW3
h0GS;F3;F3
P;3@e-!
c;r+c;1ABc;+,Bc;z@c;@D>#9>#9wc;>'ePZPZPYPYUX8z!P:	 e5PUT9<H9sRp@,u	QRpb8(UPK	UP9@@9EI;P99@y?VMD:KKPst*UJuSvUJuSmUJuS/UJuRzUJuRdPEPEM[+QM[+RM[+KI c8Q-5tQ+-P*&1;+.*[34z-xw.	)U
)ukU
)uWU
)u/
=w:[S+%B3PWx`$c
UTuNUTmxxUTTfUTI@uADK:uC<Uus~Uus3u~h;u}C=P
P
P	P	Ugd@URxHUK'UG?&PD@Pm&XQut
mC?2
	C>9t	MP>.@;
:
T:"zT:"hT:QIT+#R(P~s
Xw5@
Xp4@Sb` 3@&EDiS`'uKK`+	g`|>P%u@PeSvSWbxSWbBSWbSWaI@0E$X,J
l

k[LK1+G\ "?C.S,;:P
XVK+mK+lu_K+l>@
Nv)
NtY#&
qKO.K5kbK "jS
2~S
1gS
14Se&SB1V	Wcwo6kL
q6M\uRd=_	LR`=3
_sGR^C3
	KHY4}*2@P
u?
RO:ROI@M^$G
RMo/L>G
KRY"KRBJKQ(TK!?<#ll	HX|JSD89w+R8H.@8v:
+t+sU)
[~BP%@z3g>PKPJPJMD9zZ0\B:/\>X\>5'\7N+\2g'r'I(\)8*\)7\	\	)\+,\6.\.,[rO.O[mNO[mO[m	O[l|[l{&O[l+O[kO[kO[j]O[jRO[i%r%H([Z[X%[Qgr%0[Ms/[M"-[M	+[L,[FG[@v*r#eOD^w'dw]!+{0