$ od -c -N 50000 [Indigo]<AltoSource>CMDSCANSOURCE.DM!3
0000000  377  \0  \0   C   m   d   S   c   a   n   .   d   e   c   l  \0
0000020  373 224 345 357   t  \0  \0 376 001  \0   7 273   /   /       C
0000040    m   d   S   c   a   n   .   d   e   c   l       -   -       d
0000060    e   c   l   a   r   a   t   i   o   n   s       f   o   r    
0000100    C   o   m   m   a   n   d       S   c   a   n   n   e   r    
0000120    P   a   c   k   a   g   e  \r   /   /       C   o   p   y   r
0000140    i   g   h   t       X   e   r   o   x       C   o   r   p   o
0000160    r   a   t   i   o   n       1   9   7   9  \r  \r   /   /  \t
0000200    L   a   s   t       m   o   d   i   f   i   e   d       J   u
0000220    l   y       1   3   ,       1   9   7   7           5   :   4
0000240    2       P   M  \r  \r   g   e   t       "   s   t   r   e   a
0000260    m   s   .   d   "  \r  \r  \r   /   /   -   -   -   -   -   -
0000300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0000400    -   -   -   -   -  \r   s   t   r   u   c   t   u   r   e    
0000420    P   D   :           /   /   P   h   r   a   s 376 001  \0 271
0000440  343   e       D   e   s   c   r   i   p   t   o   r  \r   /   /
0000460    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0000560    -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   i   F
0000600    i   r   s   t       w   o   r   d  \t  \t   /   /   i   n   d
0000620    e   x       o   f       f   i   r   s   t       c   h   a   r
0000640    a   c   t   e   r       o   f       p   h   r   a   s   e  \r
0000660    i   L   a   s   t       w   o   r   d  \t  \t   /   /   i   n
0000700    d   e   x       o   f       p   h   r   a   s   e       t   e
0000720    r   m   i   n   a   t   o   r  \r   W   o   r   d   B   r   e
0000740    a   k       w   o   r   d  \t  \t   /   /   w   o   r   d    
0000760    b   r   e   a   k       p   r   e   d   i   c   a   t   e  \r
0001000    P   h   r   a   s   e   T   e   r   m   i   n   a   t   o   r
0001020        w   o   r   d  \t   /   /   p   h   r   a   s   e       t
0001040    e 376 001  \0   A 261   r   m   i   n   a   t   o   r       p
0001060    r   e   d   i   c   a   t   e  \r   E   c   h   o       w   o
0001100    r   d  \t  \t   /   /   e   c   h   o       p   r   e   d   i
0001120    c   a   t   e  \r   c   a   t   c   h   F   r   a   m   e    
0001140    w   o   r   d  \t  \t   /   /   E   n   a   b   l   e   C   a
0001160    t   c   h       f   r   a   m   e       (   0       =   >    
0001200    n   o   n   e   )  \r   c   a   t   c   h   P   C       w   o
0001220    r   d  \t  \t   /   /   E   n   a   b   l   e   C   a   t   c
0001240    h       p   c  \r   ]  \r   m   a   n   i   f   e   s   t    
0001260    l   e   n   P   D       =       s   i   z   e       P   D   /
0001300    1   6  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -
0001320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0001420    -  \r   s   t   r   u   c   t   u   r   e       C   S   :    
0001440        /   /   C   o   m 376 001  \0 024 350   m   a   n   d    
0001460    S   t   a   t   e  \r   /   /   -   -   -   -   -   -   -   -
0001500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0001600    -   -   -  \r   [  \r   @   S   T  \t  \t  \t   /   /   d   e
0001620    f   i   n   e   d       s   t   r   e   a   m       o   p   e
0001640    r   a   t   i   o   n   s  \r   b   u   f       w   o   r   d
0001660   \t  \t   /   /   -   >       c   o   m   m   a   n   d       b
0001700    u   f   f   e   r  \r   m   a   x   C   h   a   r   s       w
0001720    o   r   d  \t  \t   /   /   m   a   x   i   m   u   m       n
0001740    u   m   b   e   r       o   f       c   h   a   r   s       i
0001760    n       c   o   m   m   a   n   d       b   u   f   f   e   r
0002000   \r   i   C   h   I   n       w   o   r   d  \t  \t   /   /   i
0002020    n   d   e   x       o   f       n   e   x   t       c   h   a
0002040    r       t   o       p   u   t       i   n 376 001  \0 036   G
0002060        b   u   f   f   e   r  \r   i   C   h   O   u   t       w
0002100    o   r   d  \t  \t   /   /   i   n   d   e   x       o   f    
0002120    n   e   x   t       c   h   a   r       t   o       t   a   k
0002140    e       f   r   o   m       b   u   f   f   e   r  \r   p   u
0002160    t   b   a   c   k   C   h   a   r       w   o   r   d  \t   /
0002200    /   i   n   p   u   t       c   h   a   r   a   c   t   e   r
0002220        t   o       r   e   -   u   s   e       i   f       n   o
0002240    n   z   e   r   o  \r   k   e   y   S       w   o   r   d  \t
0002260   \t   /   /   k   e   y   b   o   a   r   d       (   i   n   p
0002300    u   t   )       s   t   r   e   a   m  \r   d   s   p   S    
0002320    w   o   r   d  \t  \t   /   /   d   i   s   p   l   a   y    
0002340    (   o   u   t   p   u   t   )       s   t   r   e   a   m  \r
0002360    E   r   a   s   e       w   o   r   d  \t  \t   /   /   c   h
0002400    a   r   a   c   t   e   r       e   r   a   s   i   n   g    
0002420    p   r   o   c   e   d   u   r   e  \r   z   o   n   e       w
0002440    o   r   d  \t  \t   /   /   s   t   o   r   a   g   e       z
0002460  376 001  \0 002 226   o   n   e  \r   m   a   x   P   h   r   a
0002500    s   e   s       w   o   r   d  \t  \t   /   /   m   a   x   i
0002520    m   u   m       n   u   m   b   e   r       o   f       p   h
0002540    r   a   s   e       d   e   s   c   r   i   p   t   o   r   s
0002560   \r   i   P   h   I   n       w   o   r   d  \t  \t   /   /   i
0002600    n   d   e   x       o   f       p   h   r   a   s   e       b
0002620    e   i   n   g       i   n   p   u   t  \r   i   P   h   O   u
0002640    t       w   o   r   d  \t  \t   /   /   i   n   d   e   x    
0002660    o   f       p   h   r   a   s   e       b   e   i   n   g    
0002700    c   o   n   s   u   m   e   d  \r   i   P   h   T   a   r   g
0002720    e   t       w   o   r   d  \t  \t   /   /   i   n   d   e   x
0002740        o   f       t   a   r   g   e   t       p   h   r   a   s
0002760    e       f   o   r       B   a   c   k   u   p   P   h   r   a
0003000    s   e  \r   e   r   r   o   r   C   o   d   e       w   o   r
0003020    d  \t  \t   /   /   r   e   a   s   o   n       f   o   r    
0003040    b   a   c   k   u   p       (   0       =   >       n   o   r
0003060    m   a   l       r 376 001  \0 267 365   e   p   a   r   s   e
0003100    )  \r   f   l   a   g   s       w   o   r   d       =  \r    
0003120            [  \r               p   h   r   a   s   e   R   e   a
0003140    d       b   i   t  \t   /   /   c   u   r   r   e   n   t    
0003160    o   u   t   p   u   t       p   h   r   a   s   e       h   a
0003200    s       b   e   e   n       r   e   a   d  \r               r
0003220    e   p   a   r   s   e       b   i   t  \t  \t   /   /   i   n
0003240    p   u   t       i   s       b   e   i   n   g       r   e   p
0003260    a   r   s   e   d  \r               r   e   u   s   e       b
0003300    i   t  \t  \t   /   /   c   u   r   r   e   n   t       p   h
0003320    r   a   s   e       i   s       b   e   i   n   g       r   e
0003340    -   u   s   e   d  \r               d   e   s   t   r   o   y
0003360        b   i   t  \t  \t   /   /   d   e   s   t   r   o   y    
0003400    s   t   r   e   a   m       a   f   t   e   r       b   a   c
0003420    k   u   p       c   o   m   p   l   e   t   e   d  \r        
0003440        b   l   a   n   k       b   i   t       4  \r            
0003460    e   d   i   t   C   o   n   t   r   o 376 001  \0   * 002   l
0003500        b   y   t   e  \t   /   /   e   d   i   t       c   o   n
0003520    t   r   o   l       f   o   r       c   u   r   r   e   n   t
0003540        i   n   p   u   t       p   h   r   a   s   e  \r        
0003560        ]  \r   p   d   ^   0   ,   0       @   P   D  \t  \t   /
0003600    /   p   h   r   a   s   e       d   e   s   c   r   i   p   t
0003620    o   r   s       (   f   i   r   s   t       o   n   e       i
0003640    s       d   u   m   m   y   )  \r   ]  \r   m   a   n   i   f
0003660    e   s   t       l   e   n   C   S       =       s   i   z   e
0003700        C   S   /   1   6           /   /   +       m   a   x   P
0003720    h   r   a   s   e   s   *   l   e   n   P   D  \r  \r   m   a
0003740    n   i   f   e   s   t  \r   [  \r   /   /   e   d   i   t   C
0003760    o   n   t   r   o   l       v   a   l   u   e   s  \r   e   d
0004000    i   t   N   e   w       =       1  \t   /   /   n   e   x   t
0004020        E   d   i   t   P   h   r   a   s   e       s   h   o   u
0004040    l   d       t   r   e   a   t       t   h   i   s       a   s
0004060        n   e   w       p   h   r   a   s   e  \r   e   d   i 376
0004100  001  \0   K   w   t   A   p   p   e   n   d       =       2  \t
0004120    /   /   n   e   x   t       E   d   i   t   P   h   r   a   s
0004140    e       s   h   o   u   l   d       a   p   p   e   n   d    
0004160    t   o       t   h   i   s       p   h   r   a   s   e  \r   e
0004200    d   i   t   R   e   p   l   a   c   e       =       3  \t   /
0004220    /   n   e   x   t       E   d   i   t   P   h   r   a   s   e
0004240        s   h   o   u   l   d       r   e   p   l   a   c   e    
0004260    t   h   i   s       p   h   r   a   s   e  \r   ]  \r  \r   /
0004300    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0004320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0004400    -   -   -   -   -   -   -   -   -   -   -   -  \r   s   t   r
0004420    u   c   t   u   r   e       B   u   f   ^   0   ,   1       b
0004440    y   t   e  \r   /   /   -   -   -   -   -   -   -   -   -   -
0004460    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0004500    -   -   -   - 376 001  \0 250   S   -   -   -   -   -   -   -
0004520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0004560    -   -   -   -   -   -  \r  \f  \r   m   a   n   i   f   e   s
0004600    t  \r   [  \r   /   /   e   r   a   s   e       c   o   n   t
0004620    e   x   t       c   o   d   e   s  \r   e   r   a   s   e   C
0004640    h   a   r       =       0  \r   e   r   a   s   e   W   o   r
0004660    d       =       1  \r   e   r   a   s   e   T   e   r   m   i
0004700    n   a   t   o   r       =       2  \r  \r   /   /   e   r   r
0004720    o   r       c   o   d   e   s       f   o   r       m   a   i
0004740    n       C   m   d   S   c   a   n       p   a   c   k   a   g
0004760    e  \r   e   c   E   n   d   O   f   P   h   r   a   s   e    
0005000    =       2   8   0   0  \r   e   c   C   m   d   D   e   l   e
0005020    t   e       =       2   8   0   1  \r   e   c   T   o   o   M
0005040    a   n   y   P   h   r   a   s   e   s       =       2   8   0
0005060    2  \r   e   c   C   m   d   T   o   o   L   o   n   g       =
0005100        2   8   0   3  \r  \r   /   / 376 001  \0 251   {   e   r
0005120    r   o   r       c   o   d   e   s       f   o   r       C   m
0005140    d   S   c   a   n   A   u   x       u   t   i   l   i   t   y
0005160        p   r   o   c   e   d   u   r   e   s  \r   e   c   E   m
0005200    p   t   y   N   u   m   b   e   r       =       2   8   5   0
0005220   \r   e   c   N   o   n   N   u   m   e   r   i   c   C   h   a
0005240    r       =       2   8   5   1  \r   e   c   N   u   m   b   e
0005260    r   O   v   e   r   f   l   o   w       =       2   8   5   2
0005300   \r   e   c   C   a   n   t   O   p   e   n   F   i   l   e    
0005320    =       2   8   5   3  \r   e   c   B   a   d   C   o   n   f
0005340    i   r   m   i   n   g   C   h   a   r       =       2   8   5
0005360    4  \r   e   c   K   e   y   N   o   t   F   o   u   n   d    
0005400    =       2   8   5   5  \r   e   c   K   e   y   A   m   b   i
0005420    g   u   o   u   s       =       2   8   5   6  \r  \r   /   /
0005440    e   r   r   o   r       c   o   d   e   s       d   i   r   e
0005460    c   t   i   n   g       s   p   e   c   i   f   i   c       b
0005500    a   c   k   u   p       a   c   t   i   o   n   s  \r 376  \0
0005520    C 021 322   e   c   C   m   d   D   e   s   t   r   o   y    
0005540    =       2   8   7   5  \r   e   c   B   a   c   k   u   p   A
0005560    p   p   e   n   d       =       2   8   7   6  \r   e   c   B
0005600    a   c   k   u   p   R   e   p   l   a   c   e       =       2
0005620    8   7   7  \r   ]  \r 377  \0  \0   C   m   d   S   c   a   n
0005640    .   b   c   p   l  \0 373 224 345 357   t  \0  \0 376 001  \0
0005660  037 371   /   /       C   m   d   S   c   a   n   .   b   c   p
0005700    l       -   -       C   o   m   m   a   n   d       S   c   a
0005720    n   n   e   r       P   a   c   k   a   g   e   ,       m   a
0005740    i   n       m   o   d   u   l   e  \r   /   /       C   o   p
0005760    y   r   i   g   h   t       X   e   r   o   x       C   o   r
0006000    p   o   r   a   t   i   o   n       1   9   7   9  \r  \r   /
0006020    /  \t   L   a   s   t       m   o   d   i   f   i   e   d    
0006040    J   u   l   y       1   3   ,       1   9   7   7           5
0006060    :   4   7       P   M  \r  \r   g   e   t       "   C   m   d
0006100    S   c   a   n   .   d   e   c   l   "  \r  \r   e   x   t   e
0006120    r   n   a   l  \r   [  \r   /   /   o   u   t   g   o   i   n
0006140    g       p   r   o   c   e   d   u   r   e   s  \r   I   n   i
0006160    t   C   m   d   ;       E   r   a   s   e   P   h   r   a   s
0006200    e   ;       B   a   c   k   u   p   P   h   r   a   s   e  \r
0006220    D   e   f   a   u   l   t   P   h   r   a   s   e   ;       B
0006240    e   g   i   n   D   e   f   a   u   l   t   P   h   r   a   s
0006260    e   ; 376 001  \0 264 225       E   n   d   D   e   f   a   u
0006300    l   t   P   h   r   a   s   e  \r   E   n   a   b   l   e   C
0006320    a   t   c   h   ;       D   i   s   a   b   l   e   C   a   t
0006340    c   h   ;       E   n   d   C   a   t   c   h  \r   C   u   r
0006360    r   e   n   t   P   h   r   a   s   e   ;       N   e   x   t
0006400    P   h   r   a   s   e   ;       T   e   r   m   i   n   a   t
0006420    i   n   g   C   h   a   r   ;       C   m   d   E   r   r   o
0006440    r   C   o   d   e  \r  \r   /   /   f   o   r       O   E   P
0006460        d   e   c   l   a   r   a   t   i   o   n       o   n   l
0006500    y  \r   C   S   G   e   t   s   ;       C   S   P   u   t   s
0006520    ;       C   S   E   n   d   o   f   s   ;       C   S   C   l
0006540    o   s   e   s   ;       C   S   R   e   s   e   t   s  \r  \r
0006560    /   /   i   n   c   o   m   i   n   g       p   r   o   c   e
0006600    d   u   r   e   s  \r   D   e   f   E   r   a   s   e   ;    
0006620    D   e   f   E   r   r   o   r   ;       D   e   f   B   r   e
0006640    a   k   ;       D   e   f   E   c   h   o   ;       A   p   p
0006660    e   n   d   C   h   a   r 376 001  \0 214 300   ;       E   r
0006700    a   s   e   I   n   p   u   t  \r   G   e   t   s   ;       P
0006720    u   t   s   ;       E   r   r   o   r   s   ;       W   s   s
0006740    ;       C   l   o   s   e   s  \r   D   e   f   a   u   l   t
0006760    A   r   g   s   ;       A   l   l   o   c   a   t   e   ;    
0007000    F   r   e   e   ;       Z   e   r   o  \r   C   a   l   l   e
0007020    r   s   F   r   a   m   e   ;       G   o   t   o   L   a   b
0007040    e   l  \r  \r   /   /   i   n   c   o   m   i   n   g       s
0007060    t   a   t   i   c   s  \r   s   y   s   Z   o   n   e   ;    
0007100    k   e   y   s   ;       d   s   p  \r   ]  \r  \r  \r   /   /
0007120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0007220    -   -   -   -   -   -   -   -   -   -   -  \r   l   e   t    
0007240    I   n   i   t   C   m   d   (   m   a   x   C   h   a   r   s
0007260    ,       m   a   x   P   h   r   a   s   e   s 376 001  \0 372
0007300  003   ,       W   o   r   d   B   r   e   a   k   ,       P   h
0007320    r   a   s   e   T   e   r   m   i   n   a   t   o   r   ,  \r
0007340                        E   c   h   o   ,       k   e   y   S   ,
0007360        d   s   p   S   ,       E   r   a   s   e   ,       E   r
0007400    r   o   r   ,       z   o   n   e   ;       n   u   m   a   r
0007420    g   s       n   a   )       =       v   a   l   o   f  \r   /
0007440    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0007460    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0007540    -   -   -   -   -   -   -   -   -   -   -   -  \r   /   /   C
0007560    r   e   a   t   e   s       a   n   d       i   n   i   t   i
0007600    a   l   i   z   e   s       a       C   o   m   m   a   n   d
0007620        S   t   a   t   e       (   c   s   )       s   t   r   u
0007640    c   t   u   r   e   .  \r   /   /   R   e   q   u   i   r   e
0007660    d       a   r   g   u   m   e   n   t   s       a   r   e    
0007700    m 376 001  \0 326 255   a   x   C   h   a   r   s   ,       t
0007720    h   e       m   a   x   i   m   u   m       n   u   m   b   e
0007740    r       o   f       c   h   a   r   a   c   t   e   r   s  \r
0007760    /   /   p   e   r   m   i   t   t   e   d       i   n       t
0010000    h   e       c   o   m   m   a   n   d       (   i   n   c   l
0010020    u   d   i   n   g       n   o   i   s   e       w   o   r   d
0010040    s   )   ,       a   n   d       m   a   x   P   h   r   a   s
0010060    e   s   ,  \r   /   /   t   h   e       m   a   x   i   m   u
0010100    m       n   u   m   b   e   r       o   f       p   h   r   a
0010120    s   e   s   .           W   o   r   d   B   r   e   a   k   ,
0010140        P   h   r   a   s   e   T   e   r   m   i   n   a   t   o
0010160    r   ,       a   n   d  \r   /   /   E   c   h   o       a   r
0010200    e       t   h   e       d   e   f   a   u   l   t       w   o
0010220    r   d       b   r   e   a   k   ,       p   h   r   a   s   e
0010240        t   e   r   m   i   n   a   t   o   r   ,       a   n   d
0010260        e   c   h   o  \r   /   /   p   r   e   d   i   c   a   t
0010300    e   s       f   o   r 376 001  \0 026   (       t   h   e    
0010320    c   o   m   m   a   n   d       (   t   h   e   y       m   a
0010340    y       b   e       o   v   e   r   r   i   d   d   e   n    
0010360    o   n       a  \r   /   /   p   e   r   -   p   h   r   a   s
0010400    e       b   a   s   i   s   )   .           k   e   y   S    
0010420    a   n   d       d   s   p   S       a   r   e       t   h   e
0010440        i   n   p   u   t       a   n   d       o   u   t   p   u
0010460    t  \r   /   /   s   t   r   e   a   m   s       f   o   r    
0010500    t   h   e       c   o   m   m   a   n   d       s   c   a   n
0010520    n   e   r   .           E   r   a   s   e       i   s       a
0010540        p   r   o   c   e   d   u   r   e       f   o   r  \r   /
0010560    /   e   r   a   s   i   n   g       c   h   a   r   a   c   t
0010600    e   r   s       f   r   o   m       t   h   e       d   i   s
0010620    p   l   a   y   .           E   r   r   o   r       i   s    
0010640    t   h   e       E   r   r   o   r   s  \r   /   /   p   r   o
0010660    c   e   d   u   r   e       f   o   r       t   h   e       c
0010700    o   m   m   a   n   d       s   t   r   e 376 001  \0 333 224
0010720    a   m   .  \r   /   /   r   e   t   u   r   n   s       a    
0010740    p   o   i   n   t   e   r       t   o       t   h   e       C
0010760    S       s   t   r   u   c   t   u   r   e   .  \r   [  \r   D
0011000    e   f   a   u   l   t   A   r   g   s   (   l   v       n   a
0011020    ,       -   2   ,       D   e   f   B   r   e   a   k   ,    
0011040    D   e   f   B   r   e   a   k   ,       D   e   f   E   c   h
0011060    o   ,  \r       k   e   y   s   ,       d   s   p   ,       D
0011100    e   f   E   r   a   s   e   ,       D   e   f   E   r   r   o
0011120    r   ,       s   y   s   Z   o   n   e   )  \r   l   e   t    
0011140    c   s       =       A   l   l   o   c   a   t   e   (   z   o
0011160    n   e   ,       l   e   n   C   S   +   m   a   x   P   h   r
0011200    a   s   e   s   *   l   e   n   P   D   )  \r   Z   e   r   o
0011220    (   c   s   ,       l   e   n   C   S   )  \r   c   s   >   >
0011240    C   S   .   b   u   f       =       A   l   l   o   c   a   t
0011260    e   (   z   o   n   e   ,       m   a   x   C   h   a   r   s
0011300        r   s   h   i   f   t       1       +   1   )  \r   c   s
0011320  376 001  \0 220   k   >   >   C   S   .   m   a   x   C   h   a
0011340    r   s       =       m   a   x   C   h   a   r   s  \r   c   s
0011360    >   >   C   S   .   m   a   x   P   h   r   a   s   e   s    
0011400    =       m   a   x   P   h   r   a   s   e   s  \r   c   s   >
0011420    >   C   S   .   p   d   ^   0   .   W   o   r   d   B   r   e
0011440    a   k       =       W   o   r   d   B   r   e   a   k  \r   c
0011460    s   >   >   C   S   .   p   d   ^   0   .   P   h   r   a   s
0011500    e   T   e   r   m   i   n   a   t   o   r       =       P   h
0011520    r   a   s   e   T   e   r   m   i   n   a   t   o   r  \r   c
0011540    s   >   >   C   S   .   p   d   ^   0   .   E   c   h   o    
0011560    =       E   c   h   o  \r   c   s   >   >   C   S   .   k   e
0011600    y   S       =       k   e   y   S  \r   c   s   >   >   C   S
0011620    .   d   s   p   S       =       d   s   p   S  \r   c   s   >
0011640    >   C   S   .   E   r   a   s   e       =       E   r   a   s
0011660    e  \r   c   s   >   >   C   S   .   z   o   n   e       =    
0011700    z   o   n   e  \r   c   s   >   >   C   S   .   g   e   t   s
0011720        =       C   S 376 001  \0 332   F   G   e   t   s  \r   c
0011740    s   >   >   C   S   .   p   u   t   s       =       C   S   P
0011760    u   t   s  \r   c   s   >   >   C   S   .   e   n   d   o   f
0012000        =       C   S   E   n   d   o   f   s  \r   c   s   >   >
0012020    C   S   .   c   l   o   s   e       =       C   S   C   l   o
0012040    s   e   s  \r   c   s   >   >   C   S   .   r   e   s   e   t
0012060        =       C   S   R   e   s   e   t   s  \r   c   s   >   >
0012100    C   S   .   e   r   r   o   r       =       E   r   r   o   r
0012120   \r   c   s   >   >   C   S   .   p   d   ^   0   .   c   a   t
0012140    c   h   F   r   a   m   e       =       C   a   l   l   e   r
0012160    s   F   r   a   m   e   (   )  \r   c   s   >   >   C   S   .
0012200    p   d   ^   0   .   c   a   t   c   h   P   C       =       (
0012220    c   s   >   >   C   S   .   p   d   ^   0   .   c   a   t   c
0012240    h   F   r   a   m   e   )   !   1       +   1  \r   c   s   >
0012260    >   C   S   .   p   h   r   a   s   e   R   e   a   d       =
0012300        t   r   u   e           /   /   d   o   n   '   t       u
0012320    s   e       d   u   m   m   y       p 376 001  \0   V 237   h
0012340    r   a   s   e  \r   c   s   >   >   C   S   .   e   d   i   t
0012360    C   o   n   t   r   o   l       =       e   d   i   t   N   e
0012400    w  \r   r   e   s   u   l   t   i   s       c   s  \r   ]  \r
0012420   \f  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0012440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0012520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0012540    a   n   d       C   S   C   l   o   s   e   s   (   c   s   )
0012560        b   e  \r   /   /   -   -   -   -   -   -   -   -   -   -
0012600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0012700    -  \r   [  \r   F   r   e   e   (   c   s   >   >   C   S   .
0012720    z   o   n   e   ,       c   s   >   >   C   S   .   b   u 376
0012740  001  \0 275   |   f   )  \r   F   r   e   e   (   c   s   >   >
0012760    C   S   .   z   o   n   e   ,       c   s   )  \r   ]  \r  \r
0013000   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0013020    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0013100    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a
0013120    n   d       C   S   G   e   t   s   (   c   s   )       =    
0013140    v   a   l   o   f  \r   /   /   -   -   -   -   -   -   -   -
0013160    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0013260    -   -   -  \r   /   /   R   e   t   u   r   n   s       t   h
0013300    e       n   e   x   t       c   h   a   r   a   c   t   e   r
0013320        f   r   o   m       t   h   e       c   u   r   r   e   n
0013340    t       p   h 376 001  \0   z 211   r   a   s   e   .        
0013360    C   a   l   l   s       E   r   r   o   r   s       i   f  \r
0013400    /   /   t   h   e       p   h   r   a   s   e       i   s    
0013420    e   x   h   a   u   s   t   e   d   .  \r   [  \r   l   e   t
0013440        i       =       c   s   >   >   C   S   .   i   C   h   O
0013460    u   t  \r   i   f       i       g   e       C   u   r   r   e
0013500    n   t   P   h   r   a   s   e   (   c   s   )   >   >   P   D
0013520    .   i   L   a   s   t       t   h   e   n       r   e   s   u
0013540    l   t   i   s       E   r   r   o   r   s   (   c   s   ,    
0013560    e   c   E   n   d   O   f   P   h   r   a   s   e   )  \r   c
0013600    s   >   >   C   S   .   i   C   h   O   u   t       =       i
0013620    +   1  \r   r   e   s   u   l   t   i   s       c   s   >   >
0013640    C   S   .   b   u   f   >   >   B   u   f   ^   i       &    
0013660    #   1   7   7  \r   ]  \r  \r  \r   /   /   -   -   -   -   -
0013700    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0013740    -   -   -   -   -   -   -   -   - 376 001  \0 031 316   -   -
0013760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0014000    -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d    
0014020    C   S   E   n   d   o   f   s   (   c   s   )       =       c
0014040    s   >   >   C   S   .   i   C   h   O   u   t       g   e    
0014060    C   u   r   r   e   n   t   P   h   r   a   s   e   (   c   s
0014100    )   >   >   P   D   .   i   L   a   s   t  \r   /   /   -   -
0014120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0014220    -   -   -   -   -   -   -   -   -  \r   /   /   R   e   t   u
0014240    r   n   s       t   r   u   e       i   f       t   h   e    
0014260    c   u   r   r   e   n   t       p   h   r   a   s   e       i
0014300    s       e   x   h   a   u   s   t   e   d  \r  \r  \r   /   /
0014320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0014340    -   -   -   -   -   -   -   -   -   -   -   -   -   - 376 001
0014360   \0 004 333   -   -   -   -   -   -   -   -   -   -   -   -   -
0014400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0014440   \r   a   n   d       C   S   P   u   t   s   (   c   s   ,    
0014460    c   h   a   r   )       b   e       u   n   l   e   s   s    
0014500    c   s   >   >   C   S   .   r   e   p   a   r   s   e       d
0014520    o       A   p   p   e   n   d   C   h   a   r   (   c   s   ,
0014540        c   h   a   r   ,       t   r   u   e   )  \r   /   /   -
0014560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0014660    -   -   -   -   -   -   -   -   -   -  \r   /   /   O   u   t
0014700    p   u   t   s       c   h   a   r       t   o       t   h   e
0014720        s   t   r   e   a   m       d   s   p   S   ,       a   n
0014740    d       a   l   s   o       p   u   t   s       i   t       i
0014760    n       t 376 001  \0   _ 367   h   e       c   o   m   m   a
0015000    n   d  \r   /   /   b   u   f   f   e   r       (   t   o    
0015020    f   a   c   i   l   i   t   a   t   e       r   e   t   y   p
0015040    i   n   g       a   n   d       b   a   c   k   s   p   a   c
0015060    i   n   g       o   v   e   r   )   .  \r  \r  \r   /   /   -
0015100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0015200    -   -   -   -   -   -   -   -   -   -  \r   a   n   d       C
0015220    S   R   e   s   e   t   s   (   c   s   )       b   e       [
0015240        c   s   >   >   C   S   .   p   h   r   a   s   e   R   e
0015260    a   d       =       f   a   l   s   e   ;       c   s   >   >
0015300    C   S   .   r   e   u   s   e       =       t   r   u   e    
0015320    ]  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0015340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0015360    -   -   -   -   -   -   -   - 376 001  \0   % 372   -   -   -
0015400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0015440    -   -   -   -  \r   /   /   R   e   s   e   t   s       t   h
0015460    e       o   u   t   p   u   t       p   o   i   n   t   e   r
0015500        t   o       t   h   e       b   e   g   i   n   n   i   n
0015520    g       o   f       t   h   e       c   u   r   r   e   n   t
0015540        p   h   r   a   s   e  \r   /   /   s   u   c   h       t
0015560    h   a   t       t   h   e       n   e   x   t       G   e   t
0015600    P   h   r   a   s   e       w   i   l   l       r   e   t   u
0015620    r   n       t   h   e       s   a   m   e       p   h   r   a
0015640    s   e       a   s       b   e   f   o   r   e   .  \r  \f  \r
0015660    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0015700    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0015760    -   -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0
0016000  301 357  \r   a   n   d       N   e   x   t   P   h   r   a   s
0016020    e   (   c   s   )       =       v   a   l   o   f  \r   /   /
0016040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0016140    -   -   -   -   -   -   -   -   -   -   -  \r   /   /   a   d
0016160    v   a   n   c   e   s       t   h   e       o   u   t   p   u
0016200    t       p   o   i   n   t   e   r       t   o       t   h   e
0016220        n   e   x   t       u   n   r   e   a   d       p   h   r
0016240    a   s   e   ,       u   n   l   e   s   s  \r   /   /   t   h
0016260    e       c   u   r   r   e   n   t       p   h   r   a   s   e
0016300        h   a   s   n   '   t       b   e   e   n       r   e   a
0016320    d       y   e   t   .  \r   /   /   r   e   t   u   r   n   s
0016340        p   o   i   n   t   e   r       t   o       p   h   r   a
0016360    s   e   '   s       P   D   .  \r   [  \r   i   f       c   s
0016400    >   > 376 001  \0   ~   "   C   S   .   p   h   r   a   s   e
0016420    R   e   a   d       t   h   e   n  \r               [  \r    
0016440            i   f       c   s   >   >   C   S   .   i   P   h   O
0016460    u   t       e   q       c   s   >   >   C   S   .   m   a   x
0016500    P   h   r   a   s   e   s       t   h   e   n       E   r   r
0016520    o   r   s   (   c   s   ,       e   c   T   o   o   M   a   n
0016540    y   P   h   r   a   s   e   s   )  \r               c   s   >
0016560    >   C   S   .   i   P   h   O   u   t       =       c   s   >
0016600    >   C   S   .   i   P   h   O   u   t   +   1  \r            
0016620    c   s   >   >   C   S   .   p   h   r   a   s   e   R   e   a
0016640    d       =       f   a   l   s   e  \r               i   f    
0016660    c   s   >   >   C   S   .   i   P   h   O   u   t       g   r
0016700        c   s   >   >   C   S   .   i   P   h   I   n       t   h
0016720    e   n  \r                           [           /   /   n   o
0016740    t       r   e   s   c   a   n   n   i   n   g       -       r
0016760    e   a   l   l   y       c   r   e   a   t   e       n   e   w
0017000        p   h   r   a   s   e 376 001  \0   % 347  \r            
0017020                c   s   >   >   C   S   .   i   P   h   I   n    
0017040    =       c   s   >   >   C   S   .   i   P   h   O   u   t  \r
0017060                            l   e   t       p   d       =       C
0017100    u   r   r   e   n   t   P   h   r   a   s   e   (   c   s   )
0017120   \r                           Z   e   r   o   (   p   d   ,    
0017140    l   e   n   P   D   )  \r                           p   d   >
0017160    >   P   D   .   i   F   i   r   s   t       =       c   s   >
0017200    >   C   S   .   i   C   h   I   n  \r                        
0017220    ]  \r               ]  \r   r   e   s   u   l   t   i   s    
0017240    C   u   r   r   e   n   t   P   h   r   a   s   e   (   c   s
0017260    )  \r   ]  \r  \r  \r   /   /   -   -   -   -   -   -   -   -
0017300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0017400    -   -   -  \r   a   n   d       D   e   f   a 376 001  \0   *
0017420    6   u   l   t   P   h   r   a   s   e   (   c   s   ,       s
0017440    t   r   i   n   g   ,       c   h   a   r   ;       n   u   m
0017460    a   r   g   s       n   a   )       b   e  \r   /   /   -   -
0017500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0017600    -   -   -   -   -   -   -   -   -  \r   /   /   C   r   e   a
0017620    t   e   s       a       n   e   w       p   h   r   a   s   e
0017640        c   o   n   t   a   i   n   i   n   g       t   h   e    
0017660    d   e   f   a   u   l   t       v   a   l   u   e       "   s
0017700    t   r   i   n   g   "   ,  \r   /   /   a   n   d       s   e
0017720    t   s       t   h   e       e   d   i   t   C   o   n   t   r
0017740    o   l       t   o       e   d   i   t   R   e   p   l   a   c
0017760    e   .           T   h   e       s   t   r   i   n   g       s
0020000    h   o   u   l   d       n   o   t  \r   /   /   c   o   n   t
0020020    a 376 001  \0 241 002   i   n       a       t   e   r   m   i
0020040    n   a   t   i   n   g       c   h   a   r   a   c   t   e   r
0020060    .  \r   /   /   T   h   e       i   d   e   a       i   s    
0020100    t   h   a   t       o   n   e       t   h   e   n       c   a
0020120    l   l   s       G   e   t   P   h   r   a   s   e       t   o
0020140        i   n   p   u   t       t   h   e       p   h   r   a   s
0020160    e  \r   /   /   a   f   t   e   r       g   i   v   i   n   g
0020200        t   h   e       u   s   e   r       a       c   h   a   n
0020220    c   e       t   o       r   e   p   l   a   c   e       o   r
0020240        e   d   i   t       i   t   .  \r   /   /   I   f       c
0020260    h   a   r       i   s       s   u   p   p   l   i   e   d   ,
0020300        i   t       i   s       u   s   e   d       a   s       t
0020320    h   e       t   e   r   m   i   n   a   t   i   n   g       c
0020340    h   a   r   a   c   t   e   r       a   n   d  \r   /   /   t
0020360    h   e       u   s   e   r       i   s       n   o   t       g
0020400    i   v   e   n       a       c   h   a   n   c   e       t   o
0020420        e   d   i   t     376 001  \0   g 315   t   h   e       p
0020440    h   r   a   s   e   .  \r   [  \r   D   e   f   a   u   l   t
0020460    A   r   g   s   (   l   v       n   a   ,       -   2   ,    
0020500    0   )  \r   B   e   g   i   n   D   e   f   a   u   l   t   P
0020520    h   r   a   s   e   (   c   s   )  \r   W   s   s   (   c   s
0020540    ,       s   t   r   i   n   g   )  \r   E   n   d   D   e   f
0020560    a   u   l   t   P   h   r   a   s   e   (   c   s   ,       c
0020600    h   a   r   )  \r   ]  \r  \r  \r   /   /   -   -   -   -   -
0020620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0020720    -   -   -   -   -   -  \r   a   n   d       B   e   g   i   n
0020740    D   e   f   a   u   l   t   P   h   r   a   s   e   (   c   s
0020760    )       b   e       N   e   x   t   P   h   r   a   s   e   (
0021000    c   s   )  \r   /   /   -   -   -   -   -   -   -   -   -   -
0021020    -   -   -   -   -   -   -   -   -   -   - 376 001  \0   E   &
0021040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0021120    -   -   -   -   -   -  \r  \r  \r   /   /   -   -   -   -   -
0021140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0021240    -   -   -   -   -   -  \r   a   n   d       E   n   d   D   e
0021260    f   a   u   l   t   P   h   r   a   s   e   (   c   s   ,    
0021300    c   h   a   r   ;       n   u   m   a   r   g   s       n   a
0021320    )       b   e  \r   /   /   -   -   -   -   -   -   -   -   -
0021340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0021440  376 001  \0 303   v   -   -  \r               u   n   l   e   s
0021460    s       c   s   >   >   C   S   .   r   e   p   a   r   s   e
0021500        d   o  \r                           [  \r                
0021520            C   u   r   r   e   n   t   P   h   r   a   s   e   (
0021540    c   s   )   >   >   P   D   .   i   L   a   s   t       =    
0021560    c   s   >   >   C   S   .   i   C   h   I   n  \r            
0021600                c   s   >   >   C   S   .   e   d   i   t   C   o
0021620    n   t   r   o   l       =       e   d   i   t   R   e   p   l
0021640    a   c   e  \r                           i   f       n   a    
0021660    g   r       1       &       c   h   a   r       n   e       0
0021700        t   h   e   n       c   s   >   >   C   S   .   p   u   t
0021720    b   a   c   k   C   h   a   r       =       c   h   a   r  \r
0021740                            ]  \r  \f  \r   /   /   -   -   -   -
0021760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0022040    -   -   -   -   - 376 001  \0   P 335   -   -   -   -   -   -
0022060    -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d
0022100        E   n   a   b   l   e   C   a   t   c   h   (   c   s   )
0022120        =       v   a   l   o   f  \r   /   /   -   -   -   -   -
0022140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0022240    -   -   -   -   -   -  \r   [  \r   l   e   t       p   d    
0022260    =       N   e   x   t   P   h   r   a   s   e   (   c   s   )
0022300   \r   p   d   >   >   P   D   .   c   a   t   c   h   F   r   a
0022320    m   e       =       C   a   l   l   e   r   s   F   r   a   m
0022340    e   (   )  \r   p   d   >   >   P   D   .   c   a   t   c   h
0022360    P   C       =       (   p   d   >   >   P   D   .   c   a   t
0022400    c   h   F   r   a   m   e   )   !   1       +       1  \r   r
0022420    e   s   u   l   t   i   s       f   a   l   s   e  \r   ]  \r
0022440   \r  \r   /   /   -   -   -   -   -   - 376 001  \0   I  \r   -
0022460    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0022560    -   -   -   -  \r   a   n   d       D   i   s   a   b   l   e
0022600    C   a   t   c   h   (   c   s   )       b   e       C   u   r
0022620    r   e   n   t   P   h   r   a   s   e   (   c   s   )   >   >
0022640    P   D   .   c   a   t   c   h   F   r   a   m   e       =    
0022660    0  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0022700    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0022760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0023000   \r  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0023020    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0023040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   - 376
0023060  001  \0   { 030   -   -   -   -   -   -   -   -   -   -   -   -
0023100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0023120    -   -   -   -  \r   a   n   d       E   n   d   C   a   t   c
0023140    h   (   c   s   )       b   e  \r   /   /   -   -   -   -   -
0023160    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0023260    -   -   -   -   -   -  \r   [  \r   i   f       c   s   >   >
0023300    C   S   .   i   P   h   O   u   t       g   r       c   s   >
0023320    >   C   S   .   i   P   h   T   a   r   g   e   t       t   h
0023340    e   n  \r               [       c   s   >   >   C   S   .   i
0023360    P   h   O   u   t       =       c   s   >   >   C   S   .   i
0023400    P   h   O   u   t   -   1   ;       D   o   B   a   c   k   u
0023420    p   (   c   s   )       ]  \r   c   s   >   >   C   S   .   i
0023440    C   h   O   u   t       =       C   u   r   r   e   n   t   P
0023460    h   r   a   s 376 001  \0 356   K   e   (   c   s   )   >   >
0023500    P   D   .   i   F   i   r   s   t  \r   c   s   >   >   C   S
0023520    .   p   h   r   a   s   e   R   e   a   d       =       c   s
0023540    >   >   C   S   .   i   P   h   O   u   t       e   q       0
0023560   \r   c   s   >   >   C   S   .   e   r   r   o   r   C   o   d
0023600    e       =       0  \r   ]  \r  \f  \r   /   /   -   -   -   -
0023620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0023720    -   -   -   -   -   -   -  \r   a   n   d       E   r   a   s
0023740    e   P   h   r   a   s   e   (   c   s   ,       n   P   h   ,
0023760        e   d   i   t   C   o   n   t   r   o   l   ,       c   h
0024000    a   r   ;       n   u   m   a   r   g   s       n   a   )    
0024020    b   e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0024040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0024060    -   -   -   -   -   -   -   -   - 376 001  \0   i 200   -   -
0024100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0024140    -   -   -   -   -  \r   /   /   S   e   n   d   s       c   o
0024160    n   t   r   o   l       b   a   c   k       n   P   h       p
0024200    h   r   a   s   e   s       r   e   l   a   t   i   v   e    
0024220    t   o       C   S   .   i   P   h   O   u   t       a   f   t
0024240    e   r  \r   /   /   e   r   a   s   i   n   g       a   l   l
0024260        i   n   t   e   r   v   e   n   i   n   g       p   h   r
0024300    a   s   e   s   .  \r   [  \r   D   e   f   a   u   l   t   A
0024320    r   g   s   (   l   v       n   a   ,       -   1   ,       0
0024340    ,       e   d   i   t   R   e   p   l   a   c   e   ,       0
0024360    )  \r   l   e   t       p   d       =       l   v       c   s
0024400    >   >   C   S   .   p   d   ^   (   c   s   >   >   C   S   .
0024420    i   P   h   O   u   t   -   n   P   h   )  \r   E   r   a   s
0024440    e   I   n   p   u   t   (   c   s   ,       (   e   d   i   t
0024460    C   o   n   t   r   o   l       e   q       e   d   i 376 001
0024500   \0   q   1   t   N   e   w   ?       p   d   >   >   P   D   .
0024520    i   F   i   r   s   t   ,       p   d   >   >   P   D   .   i
0024540    L   a   s   t   )   ,  \r       e   r   a   s   e   W   o   r
0024560    d   )  \r   B   a   c   k   u   p   P   h   r   a   s   e   (
0024600    c   s   ,       n   P   h   ,       e   d   i   t   C   o   n
0024620    t   r   o   l   ,       c   h   a   r   )  \r   ]  \r  \r  \r
0024640    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0024660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0024740    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n
0024760    d       B   a   c   k   u   p   P   h   r   a   s   e   (   c
0025000    s   ,       n   P   h   ,       e   d   i   t   C   o   n   t
0025020    r   o   l   ,       c   h   a   r   ;       n   u   m   a   r
0025040    g   s       n   a   )       b   e  \r   /   /   -   -   -   -
0025060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0025100    -   -   - 376 001  \0       3   -   -   -   -   -   -   -   -
0025120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0025160    -   -   -   -   -   -   -   -   -   -   -   -  \r   /   /   B
0025200    a   c   k   s       u   p       t   h   e       c   o   m   m
0025220    a   n   d       s   c   a   n   n   e   r       n   P   h    
0025240    p   h   r   a   s   e   s       r   e   l   a   t   i   v   e
0025260        t   o       C   S   .   i   P   h   O   u   t   ,  \r   /
0025300    /   a   n   d       s   t   o   r   e   s       e   d   i   t
0025320    C   o   n   t   r   o   l       i   n   t   o       C   S   .
0025340    e   d   i   t   C   o   n   t   r   o   l       a   n   d    
0025360    c   h   a   r       i   n   t   o  \r   /   /   C   S   .   p
0025400    u   t   b   a   c   k   C   h   a   r   .  \r   /   /   A   l
0025420    l       i   n   t   e   r   v   e   n   i   n   g       e   n
0025440    a   b   l   e   d       c   a   t   c   h       p   h   r   a
0025460    s   e   s       a   r   e       e   x   e   c   u   t   e   d
0025500    ,       i   n   c   l   u   d 376 001  \0   ; 331   i   n   g
0025520   \r   /   /   t   h   e       o   n   e       a   s   s   o   c
0025540    i   a   t   e   d       w   i   t   h       t   h   e       t
0025560    a   r   g   e   t       p   h   r   a   s   e       i   f    
0025600    a   n   y   .           T   h   i   s       p   r   o   c   e
0025620    d   u   r   e  \r   /   /   d   o   e   s       n   o   t    
0025640    a   c   t   u   a   l   l   y       e   r   a   s   e       a
0025660    n   y       c   h   a   r   a   c   t   e   r   s       f   r
0025700    o   m       t   h   e       c   o   m   m   a   n   d   ,    
0025720    i   t  \r   /   /   m   e   r   e   l   y       s   e   n   d
0025740    s       c   o   n   t   r   o   l       b   a   c   k       t
0025760    o       a   n       e   a   r   l   i   e   r       p   o   i
0026000    n   t       o   f       i   n   t   e   r   p   r   e   t   a
0026020    t   i   o   n   .  \r   [  \r   D   e   f   a   u   l   t   A
0026040    r   g   s   (   l   v       n   a   ,       -   1   ,       0
0026060    ,       e   d   i   t   R   e   p   l   a   c   e   ,       0
0026100    )  \r   c   s   >   >   C   S   .   i   P   h   T 376 001  \0
0026120  224   b   a   r   g   e   t       =       c   s   >   >   C   S
0026140    .   i   P   h   O   u   t   -   n   P   h  \r   c   s   >   >
0026160    C   S   .   e   d   i   t   C   o   n   t   r   o   l       =
0026200        e   d   i   t   C   o   n   t   r   o   l  \r   c   s   >
0026220    >   C   S   .   p   u   t   b   a   c   k   C   h   a   r    
0026240    =       c   h   a   r  \r   c   s   >   >   C   S   .   r   e
0026260    p   a   r   s   e       =       t   r   u   e  \r   D   o   B
0026300    a   c   k   u   p   (   c   s   )  \r   ]  \r  \r  \r   /   /
0026320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0026420    -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d    
0026440    D   o   B   a   c   k   u   p   (   c   s   )       b   e  \r
0026460    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0026500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0026520    -   - 376 001  \0 345 027   -   -   -   -   -   -   -   -   -
0026540    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0026600    -   -  \r   [  \r   l   e   t       p   d       =       C   u
0026620    r   r   e   n   t   P   h   r   a   s   e   (   c   s   )  \r
0026640    l   e   t       f   r   a   m   e   ,       p   c       =    
0026660    p   d   >   >   P   D   .   c   a   t   c   h   F   r   a   m
0026700    e   ,       p   d   >   >   P   D   .   c   a   t   c   h   P
0026720    C  \r   i   f       f   r   a   m   e       n   e       0    
0026740    t   h   e   n  \r               [  \r               i   f    
0026760    c   s   >   >   C   S   .   i   P   h   O   u   t       e   q
0027000        0       t   h   e   n  \r                           t   e
0027020    s   t       c   s   >   >   C   S   .   d   e   s   t   r   o
0027040    y  \r                                       i   f   s   o    
0027060    [       C   l   o   s   e   s   (   c   s   )   ;       c   s
0027100        =       0       ]  \r                                    
0027120    i   f   n   o   t       E 376 001  \0   ! 223   n   d   C   a
0027140    t   c   h   (   c   s   )  \r               G   o   t   o   L
0027160    a   b   e   l   (   f   r   a   m   e   ,       p   c   ,    
0027200    c   s   )  \r               ]  \r   c   s   >   >   C   S   .
0027220    i   P   h   O   u   t       =       c   s   >   >   C   S   .
0027240    i   P   h   O   u   t   -   1  \r   ]       r   e   p   e   a
0027260    t  \r  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -
0027300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0027400    -  \r   a   n   d       C   u   r   r   e   n   t   P   h   r
0027420    a   s   e   (   c   s   )       =       l   v       c   s   >
0027440    >   C   S   .   p   d   ^   (   c   s   >   >   C   S   .   i
0027460    P   h   O   u   t   )  \r   /   /   -   -   -   -   -   -   -
0027500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0027520    -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0 034
0027540  207   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0027560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0027600    -   -   -   -   -   -   -   -   -  \r  \r  \r   /   /   -   -
0027620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0027720    -   -   -   -   -   -   -   -   -  \r   a   n   d       T   e
0027740    r   m   i   n   a   t   i   n   g   C   h   a   r   (   c   s
0027760    )       =  \r   /   /   -   -   -   -   -   -   -   -   -   -
0030000    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0030100    -  \r               c   s   >   >   C   S   .   b   u   f   >
0030120    >   B   u   f   ^   (   C   u   r   r   e   n   t   P   h   r
0030140    a 376  \0 337   9 357   s   e   (   c   s   )   >   >   P   D
0030160    .   i   L   a   s   t   )       &       #   1   7   7  \r  \r
0030200   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0030220    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0030300    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a
0030320    n   d       C   m   d   E   r   r   o   r   C   o   d   e   (
0030340    c   s   )       =       c   s   >   >   C   S   .   e   r   r
0030360    o   r   C   o   d   e  \r   /   /   -   -   -   -   -   -   -
0030400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0030500    -   -   -   -  \r 377  \0  \0   C   m   d   S   c   a   n   E
0030520    d   i   t   .   b   c   p   l  \0 373 224 345 357   t  \0  \0
0030540  376 001  \0   ~ 253   /   /       C   m   d   S   c   a   n   E
0030560    d   i   t   .   b   c   p   l       -   -       C   o   m   m
0030600    a   n   d       S   c   a   n   n   e   r       P   a   c   k
0030620    a   g   e       e   d   i   t   i   n   g       f   u   n   c
0030640    t   i   o   n   s  \r   /   /       C   o   p   y   r   i   g
0030660    h   t       X   e   r   o   x       C   o   r   p   o   r   a
0030700    t   i   o   n       1   9   7   9  \r  \r   /   /  \t   L   a
0030720    s   t       m   o   d   i   f   i   e   d       J   u   l   y
0030740        1   1   ,       1   9   7   7           3   :   2   5    
0030760    P   M  \r  \r   g   e   t       "   C   m   d   S   c   a   n
0031000    .   d   e   c   l   "  \r  \r   e   x   t   e   r   n   a   l
0031020   \r   [  \r   /   /   o   u   t   g   o   i   n   g       p   r
0031040    o   c   e   d   u   r   e   s  \r   G   e   t   P   h   r   a
0031060    s   e   ;       A   p   p   e   n   d   C   h   a   r   ;    
0031100    E   r   a   s   e   I   n   p   u   t  \r  \r   /   /   i   n
0031120    c   o   m   i   n   g       p   r   o   c   e   d   u   r   e
0031140    s  \r   N   e   x 376 001  \0   F   a   t   P   h   r   a   s
0031160    e   ;       C   u   r   r   e   n   t   P   h   r   a   s   e
0031200    ;       B   a   c   k   u   p   P   h   r   a   s   e  \r   G
0031220    e   t   s   ;       P   u   t   s   ;       E   r   r   o   r
0031240    s   ;       W   s   s  \r   D   e   f   a   u   l   t   A   r
0031260    g   s   ;       A   l   l   o   c   a   t   e   ;       F   r
0031300    e   e   ;       Z   e   r   o  \r   ]  \r  \r  \r   /   /   -
0031320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0031420    -   -   -   -   -   -   -   -   -   -  \r   l   e   t       G
0031440    e   t   P   h   r   a   s   e   (   c   s   ,       W   o   r
0031460    d   B   r   e   a   k   ,       P   h   r   a   s   e   T   e
0031500    r   m   i   n   a   t   o   r   ,       E   c   h   o   ,  \r
0031520                    H   e   l   p   ,       h   e   l   p   A   r
0031540    g   ;       n   u   m   a   r   g   s 376 001  \0 337 313    
0031560    n   a   )       =       v   a   l   o   f  \r   /   /   -   -
0031600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0031700    -   -   -   -   -   -   -   -   -  \r   /   /   R   e   a   d
0031720    i   e   s       t   h   e       n   e   x   t       p   h   r
0031740    a   s   e       t   o       b   e       t   a   k   e   n   ,
0031760        i   n   p   u   t   t   i   n   g       o   n   e       f
0032000    r   o   m       t   h   e  \r   /   /   k   e   y   b   o   a
0032020    r   d       i   f       n   e   c   e   s   s   a   r   y    
0032040    a   n   d       u   p   d   a   t   i   n   g       t   h   e
0032060        p   h   r   a   s   e       s   t   a   t   e   .  \r   /
0032100    /   S   e   t   s       u   p       c   s   >   >   C   S   .
0032120    i   C   h   O   u   t       t   o       p   o   i   n   t    
0032140    t   o       t   h   e       f   i   r   s   t       c   h 376
0032160  001  \0 213 303   a   r   a   c   t   e   r       o   f       t
0032200    h   e  \r   /   /   p   h   r   a   s   e   ,       a   n   d
0032220        r   e   t   u   r   n   s       t   h   e       n   u   m
0032240    b   e   r       o   f       c   h   a   r   a   c   t   e   r
0032260    s       i   n       t   h   e       p   h   r   a   s   e   ,
0032300   \r   /   /   n   o   t       i   n   c   l   u   d   i   n   g
0032320        t   h   e       t   e   r   m   i   n   a   t   o   r   .
0032340   \r   [  \r   D   e   f   a   u   l   t   A   r   g   s   (   l
0032360    v       n   a   ,       -   1   ,       c   s   >   >   C   S
0032400    .   p   d   ^   0   .   W   o   r   d   B   r   e   a   k   ,
0032420   \r       c   s   >   >   C   S   .   p   d   ^   0   .   P   h
0032440    r   a   s   e   T   e   r   m   i   n   a   t   o   r   ,    
0032460    c   s   >   >   C   S   .   p   d   ^   0   .   E   c   h   o
0032500    ,       0   ,       0   )  \r   l   e   t       p   d       =
0032520        N   e   x   t   P   h   r   a   s   e   (   c   s   )  \r
0032540    p   d   >   >   P   D   .   W   o   r   d   B   r   e   a   k
0032560        =       W 376 001  \0   4  \b   o   r   d   B   r   e   a
0032600    k  \r   p   d   >   >   P   D   .   P   h   r   a   s   e   T
0032620    e   r   m   i   n   a   t   o   r       =       P   h   r   a
0032640    s   e   T   e   r   m   i   n   a   t   o   r  \r   p   d   >
0032660    >   P   D   .   E   c   h   o       =       E   c   h   o  \r
0032700   \r   i   f       c   s   >   >   C   S   .   i   P   h   I   n
0032720        e   q       c   s   >   >   C   S   .   i   P   h   O   u
0032740    t       t   h   e   n       c   s   >   >   C   S   .   r   e
0032760    p   a   r   s   e       =       f   a   l   s   e  \r   u   n
0033000    l   e   s   s       c   s   >   >   C   S   .   r   e   p   a
0033020    r   s   e       %       c   s   >   >   C   S   .   r   e   u
0033040    s   e       d   o       E   d   i   t   P   h   r   a   s   e
0033060    (   c   s   ,       H   e   l   p   ,       h   e   l   p   A
0033100    r   g   )  \r  \r   c   s   >   >   C   S   .   r   e   u   s
0033120    e       =       f   a   l   s   e  \r   c   s   >   >   C   S
0033140    .   p   h   r   a   s   e   R   e   a   d       =       t   r
0033160    u   e  \r   c   s   >   >   C   S 376 001  \0   s 026   .   i
0033200    C   h   O   u   t       =       p   d   >   >   P   D   .   i
0033220    F   i   r   s   t           /   /   r   e   a   d   y       t
0033240    o       t   a   k   e       f   i   r   s   t       c   h   a
0033260    r  \r   r   e   s   u   l   t   i   s       p   d   >   >   P
0033300    D   .   i   L   a   s   t   -   p   d   >   >   P   D   .   i
0033320    F   i   r   s   t  \r   ]  \r  \f  \r   /   /   -   -   -   -
0033340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0033440    -   -   -   -   -   -   -  \r   a   n   d       E   d   i   t
0033460    P   h   r   a   s   e   (   c   s   ,       H   e   l   p   ,
0033500        h   e   l   p   A   r   g   )       b   e  \r   /   /   -
0033520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0033560    -   -   -   -   -   -   -   -   -   -   -   -   -   - 376 001
0033600   \0   "   !   -   -   -   -   -   -   -   -   -   -   -   -   -
0033620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0033640    /   /   E   d   i   t   s       t   h   e       c   u   r   r
0033660    e   n   t       p   h   r   a   s   e       (   t   h   e    
0033700    c   u   r   r   e   n   t       i   n   p   u   t       a   n
0033720    d       o   u   t   p   u   t       p   h   r   a   s   e   s
0033740   \r   /   /   a   r   e       a   s   s   u   m   e   d       t
0033760    o       b   e       t   h   e       s   a   m   e   )   ,    
0034000    r   e   t   u   r   n   i   n   g       w   h   e   n       a
0034020        t   e   r   m   i   n   a   t   i   n   g  \r   /   /   c
0034040    h   a   r   a   c   t   e   r       i   s       i   n   p   u
0034060    t   .  \r   /   /   T   h   e       d   i   s   p   o   s   i
0034100    t   i   o   n       o   f       t   h   e       e   x   i   s
0034120    t   i   n   g       c   o   n   t   e   n   t   s       o   f
0034140        t   h   e       p   h   r   a   s   e       (   i   f    
0034160    a   n   y   )  \r   /   /   i   s       c   o   n   t   r   o
0034200    l   l   e 376 001  \0   ? 370   d       b   y       c   s   >
0034220    >   C   S   .   e   d   i   t   C   o   n   t   r   o   l   ,
0034240        w   h   i   c   h       i   s       o   n   e       o   f
0034260    :  \r   /   /       e   d   i   t   N   e   w  \t   N   e   w
0034300        p   h   r   a   s   e       -   -       f   i   l   l    
0034320    i   t       i   n       (   t   h   i   s       i   s       t
0034340    h   e       d   e   f   a   u   l   t   )   .  \r   /   /    
0034360    e   d   i   t   A   p   p   e   n   d  \t   P   h   r   a   s
0034400    e       e   x   i   s   t   s       -   -       r   e   m   o
0034420    v   e       t   e   r   m   i   n   a   t   i   n   g       c
0034440    h   a   r   a   c   t   e   r  \r   /   /  \t  \t   a   n   d
0034460        a   p   p   e   n   d       m   o   r   e       c   h   a
0034500    r   a   c   t   e   r   s       t   o       i   t   .  \r   /
0034520    /       e   d   i   t   R   e   p   l   a   c   e  \t   P   h
0034540    r   a   s   e       e   x   i   s   t   s       -   -       i
0034560    f       t   h   e       f   i   r   s   t       c   h   a   r
0034600    a   c   t   e   r       i   n 376 001  \0   C   Y   p   u   t
0034620        i   s  \r   /   /  \t  \t   n   o   t       a       t   e
0034640    r   m   i   n   a   t   i   n   g       c   h   a   r   a   c
0034660    t   e   r   ,       e   r   a   s   e       i   t       a   n
0034700    d       s   t   a   r   t  \r   /   /  \t  \t   o   v   e   r
0034720    ;           i   f       i   t       i   s   ,       j   u   s
0034740    t       r   e   t   u   r   n       t   h   e       p   h   r
0034760    a   s   e       a   s   -   i   s   .  \r   /   /   I   f    
0035000    c   s   >   >   C   S   .   p   u   t   b   a   c   k   C   h
0035020    a   r       i   s       n   o   n   z   e   r   o   ,       i
0035040    t       i   s       u   s   e   d       a   s       t   h   e
0035060        f   i   r   s   t  \r   /   /   c   h   a   r   a   c   t
0035100    e   r       o   f       t   h   e       p   h   r   a   s   e
0035120        a   s       i   f       i   t       h   a   d       b   e
0035140    e   n       t   y   p   e   d       i   n   .  \r   [  \r   l
0035160    e   t       p   d       =       C   u   r   r   e   n   t   P
0035200    h   r   a   s   e   (   c   s   )  \r  \r         376 001  \0
0035220    X 364       [       /   /   r   e   p   e   a   t  \r        
0035240        l   e   t       c   h   a   r       =       c   s   >   >
0035260    C   S   .   p   u   t   b   a   c   k   C   h   a   r       n
0035300    e       0   ?       c   s   >   >   C   S   .   p   u   t   b
0035320    a   c   k   C   h   a   r   ,       G   e   t   s   (   c   s
0035340    >   >   C   S   .   k   e   y   S   )  \r               c   s
0035360    >   >   C   S   .   p   u   t   b   a   c   k   C   h   a   r
0035400        =       0  \r               i   f       c   s   >   >   C
0035420    S   .   e   d   i   t   C   o   n   t   r   o   l       n   e
0035440        e   d   i   t   N   e   w       &       c   s   >   >   C
0035460    S   .   i   C   h   I   n       g   r       p   d   >   >   P
0035500    D   .   i   L   a   s   t       t   h   e   n  \r            
0035520                E   r   a   s   e   I   n   p   u   t   (   c   s
0035540    ,       p   d   >   >   P   D   .   i   L   a   s   t   ,    
0035560    e   r   a   s   e   T   e   r   m   i   n   a   t   o   r   )
0035600   \r               s   w   i   t   c   h   o   n       c   h   a
0035620    r     376 001  \0 244   y   i   n   t   o  \r                
0035640            [  \r                           c   a   s   e       $
0035660    *   0   1   0   :       c   a   s   e       $   *   0   0   1
0035700    :           /   /   b   a   c   k   s   p   a   c   e   ,    
0035720    c   o   n   t   r   o   l   -   A  \r                        
0035740                [       E   r   a   s   e   B   a   c   k   T   o
0035760    (   c   s   ,       B   a   c   k   u   p   C   h   a   r   s
0036000    (   c   s   ,       f   a   l   s   e   )   ,       e   r   a
0036020    s   e   C   h   a   r   )   ;       e   n   d   c   a   s   e
0036040        ]  \r                           c   a   s   e       $   *
0036060    0   2   7   :           /   /   c   o   n   t   r   o   l   -
0036100    W  \r                                       [       E   r   a
0036120    s   e   B   a   c   k   T   o   (   c   s   ,       B   a   c
0036140    k   u   p   C   h   a   r   s   (   c   s   ,       t   r   u
0036160    e   )   ,       e   r   a   s   e   W   o   r   d   )   ;    
0036200    e   n   d   c   a   s   e       ]  \r                        
0036220    c   a   s   e       $   * 376 001  \0   7 352   1   7   7   :
0036240            /   /   d   e   l   e   t   e  \r                    
0036260                    [       E   r   r   o   r   s   (   c   s   ,
0036300        e   c   C   m   d   D   e   l   e   t   e   )   ;       l
0036320    o   o   p       ]  \r                           c   a   s   e
0036340        $   *   0   2   2   :           /   /   c   o   n   t   r
0036360    o   l   -   R  \r                                       [    
0036400    R   e   t   y   p   e   C   m   d   (   c   s   )   ;       l
0036420    o   o   p       ]  \r                           c   a   s   e
0036440        $   ?   :  \r                                       [  \r
0036460                                        i   f       H   e   l   p
0036500        n   e       0       t   h   e   n  \r                    
0036520                                [  \r                            
0036540                        W   s   s   (   c   s   >   >   C   S   .
0036560    d   s   p   S   ,       "   ?       "   )  \r                
0036600                                    H   e   l   p   (   c   s   >
0036620    >   C   S   .   d   s   p   S   ,       h   e 376 001  \0   q
0036640    M   l   p   A   r   g   )  \r                                
0036660                    R   e   t   y   p   e   C   m   d   (   c   s
0036700    )  \r                                                   l   o
0036720    o   p  \r                                                   ]
0036740   \r                                       /   /   i   f       n
0036760    o       h   e   l   p   ,       f   a   l   l       t   h   r
0037000    u       t   o       d   e   f   a   u   l   t       c   a   s
0037020    e  \r                                       ]  \r            
0037040                d   e   f   a   u   l   t   :  \r                
0037060                        [  \r                                    
0037100    i   f       c   s   >   >   C   S   .   e   d   i   t   C   o
0037120    n   t   r   o   l       e   q       e   d   i   t   R   e   p
0037140    l   a   c   e       &  \r                                    
0037160        n   o   t       p   d   >   >   P   D   .   P   h   r   a
0037200    s   e   T   e   r   m   i   n   a   t   o   r   (   c   s   ,
0037220        c   h   a   r   )       t   h   e   n  \r                
0037240      376 001  \0   S   w                               E   r   a
0037260    s   e   B   a   c   k   T   o   (   c   s   ,       p   d   >
0037300    >   P   D   .   i   F   i   r   s   t   ,       e   r   a   s
0037320    e   W   o   r   d   )  \r                                    
0037340    i   f       A   p   p   e   n   d   C   h   a   r   (   c   s
0037360    ,       c   h   a   r   ,       p   d   >   >   P   D   .   E
0037400    c   h   o   (   c   s   ,       c   h   a   r   )   )       &
0037420   \r                                           p   d   >   >   P
0037440    D   .   P   h   r   a   s   e   T   e   r   m   i   n   a   t
0037460    o   r   (   c   s   ,       c   h   a   r   )       t   h   e
0037500    n  \r                                                   [  \r
0037520                                                    p   d   >   >
0037540    P   D   .   i   L   a   s   t       =       c   s   >   >   C
0037560    S   .   i   C   h   I   n   -   1  \r                        
0037600                            t   e   s   t       c   h   a   r    
0037620    e   q       $   *   s       &       p   d   >   >   P   D   .
0037640    i   L   a   s   t     376 001  \0   u 016   e   q       p   d
0037660    >   >   P   D   .   i   F   i   r   s   t  \r                
0037700                                                i   f   s   o    
0037720    p   d   >   >   P   D   .   i   F   i   r   s   t       =    
0037740    p   d   >   >   P   D   .   i   F   i   r   s   t   +   1  \r
0037760                                                                i
0040000    f   n   o   t       [       c   s   >   >   C   S   .   e   d
0040020    i   t   C   o   n   t   r   o   l       =       e   d   i   t
0040040    N   e   w   ;       b   r   e   a   k       ]  \r            
0040060                                        ]  \r                    
0040100                    ]  \r                           ]  \r        
0040120        c   s   >   >   C   S   .   e   d   i   t   C   o   n   t
0040140    r   o   l       =       e   d   i   t   N   e   w  \r        
0040160        ]       r   e   p   e   a   t  \r   ]  \r  \f  \r   /   /
0040200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0040240    -   -   -   -   -   -   -   -   -   -   - 376 001  \0   ` 271
0040260    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0040320   \r   a   n   d       A   p   p   e   n   d   C   h   a   r   (
0040340    c   s   ,       c   h   a   r   ,       e   c   h   o   )    
0040360    =       v   a   l   o   f  \r   /   /   -   -   -   -   -   -
0040400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0040500    -   -   -   -   -  \r   /   /   A   p   p   e   n   d   s    
0040520    a       c   h   a   r   a   c   t   e   r       t   o       t
0040540    h   e       c   o   m   m   a   n   d       b   u   f   f   e
0040560    r   ,       a   n   d       a   l   s   o       e   c   h   o
0040600    s       i   t       i   f       e   c   h   o  \r   /   /   i
0040620    s       t   r   u   e   .           I   f       e   c   h   o
0040640        i   s       f   a   l   s   e   ,       #   2   0   0    
0040660  376 001  \0   q   @   i   s       a   d   d   e   d       t   o
0040700        t   h   e       c   h   a   r   a   c   t   e   r       a
0040720    s       a       s   i   g   n   a   l  \r   /   /   t   h   a
0040740    t       t   h   e       c   h   a   r   a   c   t   e   r    
0040760    i   s       n   o   n   -   p   r   i   n   t   i   n   g   .
0041000            R   e   t   u   r   n   s       t   r   u   e       n
0041020    o   r   m   a   l   l   y   .  \r   /   /   I   f       t   h
0041040    e       b   u   f   f   e   r       o   v   e   r   f   l   o
0041060    w   s   ,       E   r   r   o   r   s       i   s       c   a
0041100    l   l   e   d   ;           i   f       E   r   r   o   r   s
0041120        r   e   t   u   r   n   s   ,       A   p   p   e   n   d
0041140    C   h   a   r  \r   /   /   r   e   t   u   r   n   s       f
0041160    a   l   s   e       h   a   v   i   n   g       d   o   n   e
0041200        n   o   t   h   i   n   g   .  \r   [  \r   l   e   t    
0041220    i       =       c   s   >   >   C   S   .   i   C   h   I   n
0041240   \r   i   f       i       g   e       c   s   >   >   C   S   .
0041260    m   a   x   C   h 376 001  \0 235 231   a   r   s       t   h
0041300    e   n       [       E   r   r   o   r   s   (   c   s   ,    
0041320    e   c   C   m   d   T   o   o   L   o   n   g   )   ;       r
0041340    e   s   u   l   t   i   s       f   a   l   s   e       ]  \r
0041360    t   e   s   t       e   c   h   o  \r               i   f   s
0041400    o       P   u   t   s   (   c   s   >   >   C   S   .   d   s
0041420    p   S   ,       c   h   a   r   )  \r               i   f   n
0041440    o   t       c   h   a   r       =       c   h   a   r   +   #
0041460    2   0   0  \r   c   s   >   >   C   S   .   b   u   f   >   >
0041500    B   u   f   ^   i       =       c   h   a   r  \r   c   s   >
0041520    >   C   S   .   i   C   h   I   n       =       i   +   1  \r
0041540    r   e   s   u   l   t   i   s       t   r   u   e  \r   ]  \r
0041560   \r  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0041600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0041660    -   -   -   -   -   -   -   -   -   - 376 001  \0 320   d   -
0041700    -   -   -   -  \r   a   n   d       B   a   c   k   u   p   C
0041720    h   a   r   s   (   c   s   ,       b   a   c   k   u   p   W
0041740    o   r   d   )       =       v   a   l   o   f  \r   /   /   -
0041760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0042060    -   -   -   -   -   -   -   -   -   -  \r   /   /   I   f    
0042100    b   a   c   k   u   p   W   o   r   d       i   s       f   a
0042120    l   s   e   ,       r   e   t   u   r   n   s       t   h   e
0042140        i   n   d   e   x       o   f       t   h   e       l   a
0042160    s   t       c   h   a   r   a   c   t   e   r       i   n   p
0042200    u   t   .  \r   /   /   i   f       t   r   u   e   ,       r
0042220    e   t   u   r   n   s       t   h   e       i   n   d   e   x
0042240        o   f       t   h   e       f   i   r   s   t       c   h
0042260    a   r   a   c   t   e   r       o   f       t   h   e     376
0042300  001  \0   6 351   c   u   r   r   e   n   t       w   o   r   d
0042320    .  \r   [  \r   l   e   t       i   C   h       =       c   s
0042340    >   >   C   S   .   i   C   h   I   n  \r   l   e   t       p
0042360    d       =       l   v       c   s   >   >   C   S   .   p   d
0042400    ^   (   F   i   n   d   P   h   r   a   s   e   (   c   s   ,
0042420        i   C   h   )   )  \r   l   e   t       n   o   n   B   r
0042440    e   a   k   S   e   e   n       =       f   a   l   s   e  \r
0042460                [       /   /   r   e   p   e   a   t  \r        
0042500        l   e   t       i   N   e   w       =       i   C   h   -
0042520    1  \r               i   f       i   C   h       e   q       p
0042540    d   >   >   P   D   .   i   F   i   r   s   t       t   h   e
0042560    n  \r                           [       /   /   b   a   c   k
0042600        u   p       t   o       p   r   e   v   i   o   u   s    
0042620    p   h   r   a   s   e  \r                           p   d    
0042640    =       p   d   -   l   e   n   P   D  \r                    
0042660        i   f       p   d       e   q       l   v       c   s   >
0042700    >   C   S   . 376 001  \0 260   K   p   d   ^   0       t   h
0042720    e   n       b   r   e   a   k  \r                           i
0042740    N   e   w       =       p   d   >   >   P   D   .   i   L   a
0042760    s   t  \r                           ]  \r               u   n
0043000    l   e   s   s       b   a   c   k   u   p   W   o   r   d    
0043020    r   e   s   u   l   t   i   s       i   N   e   w  \r        
0043040        t   e   s   t       p   d   >   >   P   D   .   W   o   r
0043060    d   B   r   e   a   k   (   c   s   ,       c   s   >   >   C
0043100    S   .   b   u   f   >   >   B   u   f   ^   i   N   e   w    
0043120    &       #   1   7   7   )  \r                           i   f
0043140    s   o       i   f       n   o   n   B   r   e   a   k   S   e
0043160    e   n       t   h   e   n       b   r   e   a   k  \r        
0043200                    i   f   n   o   t       n   o   n   B   r   e
0043220    a   k   S   e   e   n       =       t   r   u   e  \r        
0043240        i   C   h       =       i   N   e   w  \r               ]
0043260        r   e   p   e   a   t  \r   r   e   s   u   l   t   i   s
0043300        i   C   h  \r   ]  \r  \f  \r 376 001  \0   n   {   /   /
0043320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0043420    -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d    
0043440    E   r   a   s   e   I   n   p   u   t   (   c   s   ,       i
0043460    ,       c   o   n   t   e   x   t   )       b   e  \r   /   /
0043500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0043600    -   -   -   -   -   -   -   -   -   -   -  \r   /   /   E   r
0043620    a   s   e   s       c   h   a   r   a   c   t   e   r   s    
0043640    f   r   o   m       t   h   e       o   n   e       m   o   s
0043660    t       r   e   c   e   n   t   l   y       i   n   p   u   t
0043700        b   a   c   k       t   o       i  \r   /   /   ( 376 001
0043720   \0 267   g   i   n   c   l   u   s   i   v   e   )       a   n
0043740    d       r   e   s   e   t   s       t   h   e       i   n   p
0043760    u   t       p   o   i   n   t   e   r       t   o       t   h
0044000    e       b   e   g   i   n   n   i   n   g       o   f  \r   /
0044020    /   t   h   e       e   r   a   s   e   d       p   o   r   t
0044040    i   o   n   .  \r   [  \r   i   f       i       l   s       c
0044060    s   >   >   C   S   .   i   C   h   I   n       t   h   e   n
0044100        c   s   >   >   C   S   .   E   r   a   s   e   (   c   s
0044120    ,       i   ,       c   s   >   >   C   S   .   i   C   h   I
0044140    n   -   1   ,       c   o   n   t   e   x   t   )  \r   c   s
0044160    >   >   C   S   .   i   C   h   I   n       =       i  \r   c
0044200    s   >   >   C   S   .   i   P   h   I   n       =       F   i
0044220    n   d   P   h   r   a   s   e   (   c   s   ,       i   )  \r
0044240    ]  \r  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -
0044260    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0044320    -   -   - 376 001  \0 330 306   -   -   -   -   -   -   -   -
0044340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0044360    -   -   -   -   -   -  \r   a   n   d       E   r   a   s   e
0044400    B   a   c   k   T   o   (   c   s   ,       i   ,       c   o
0044420    n   t   e   x   t   )       b   e  \r   /   /   -   -   -   -
0044440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0044540    -   -   -   -   -   -   -  \r   /   /   S   a   m   e       a
0044560    s       E   r   a   s   e   I   n   p   u   t   ;           a
0044600    d   d   i   t   i   o   n   a   l   l   y   ,       i   f    
0044620    c   h   a   r   a   c   t   e   r   s       b   e   f   o   r
0044640    e       t   h   e       c   u   r   r   e   n   t  \r   /   /
0044660    p   h   r   a   s   e       a   r   e       e   r   a   s   e
0044700    d   ,       i   n   i   t   i   a   t   e   s       a       r
0044720    e   p   a   r   s   e       o 376 001  \0   _ 373   f       p
0044740    r   e   c   e   d   i   n   g       p   h   r   a   s   e   s
0044760    .  \r   [  \r   E   r   a   s   e   I   n   p   u   t   (   c
0045000    s   ,       i   ,       c   o   n   t   e   x   t   )  \r   i
0045020    f       c   s   >   >   C   S   .   i   P   h   I   n       l
0045040    s       c   s   >   >   C   S   .   i   P   h   O   u   t    
0045060    t   h   e   n  \r               B   a   c   k   u   p   P   h
0045100    r   a   s   e   (   c   s   ,       c   s   >   >   C   S   .
0045120    i   P   h   O   u   t   -   c   s   >   >   C   S   .   i   P
0045140    h   I   n   ,       e   d   i   t   A   p   p   e   n   d   )
0045160   \r   ]  \r  \r  \r   /   /   -   -   -   -   -   -   -   -   -
0045200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0045300    -   -  \r   a   n   d       F   i   n   d   P   h   r   a   s
0045320    e   (   c   s   ,       i   C   h   )       =     376 001  \0
0045340    K 246   v   a   l   o   f  \r   /   /   -   -   -   -   -   -
0045360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0045460    -   -   -   -   -  \r   /   /   R   e   t   u   r   n   s    
0045500    i   n   d   e   x       o   f       p   h   r   a   s   e    
0045520    t   o       w   h   i   c   h       c   h   a   r   a   c   t
0045540    e   r       i   C   h       b   e   l   o   n   g   s  \r   [
0045560   \r   l   e   t       i   P   h       =       c   s   >   >   C
0045600    S   .   i   P   h   I   n  \r   w   h   i   l   e       i   C
0045620    h       l   s       c   s   >   >   C   S   .   p   d   ^   i
0045640    P   h   .   i   F   i   r   s   t       d   o       i   P   h
0045660        =       i   P   h   -   1  \r   r   e   s   u   l   t   i
0045700    s       i   P   h  \r   ]  \r  \r  \r   /   /   -   -   -   -
0045720    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0045740    -   - 376 001  \0   5   :   -   -   -   -   -   -   -   -   -
0045760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0046020    -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d
0046040        R   e   t   y   p   e   C   m   d   (   c   s   )       b
0046060    e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0046100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0046160    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0046200    [  \r   P   u   t   s   (   c   s   >   >   C   S   .   d   s
0046220    p   S   ,       $   *   n   )  \r   f   o   r       i       =
0046240        0       t   o       c   s   >   >   C   S   .   i   C   h
0046260    I   n   -   1       d   o  \r               [  \r            
0046300    l   e   t       c   h   a   r       =       c   s   >   >   C
0046320    S   .   b   u   f   >   >   B   u   f   ^   i  \r            
0046340    i   f       c   h   a   r 376  \0   -  \f 265       l   s    
0046360    #   2   0   0       t   h   e   n       P   u   t   s   (   c
0046400    s   >   >   C   S   .   d   s   p   S   ,       c   h   a   r
0046420    )  \r               ]  \r   ]  \r 377  \0  \0   C   m   d   S
0046440    c   a   n   D   i   s   p   l   a   y   .   b   c   p   l  \0
0046460  373 224 345 357   t  \0  \0 376 001  \0 301 026   /   /       C
0046500    m   d   S   c   a   n   D   i   s   p   l   a   y   .   b   c
0046520    p   l       -   -       A   l   t   o       d   i   s   p   l
0046540    a   y       d   e   p   e   n   d   e   n   t       p   o   r
0046560    t   i   o   n       o   f  \r   /   /  \t  \t  \t   c   o   m
0046600    m   a   n   d       s   c   a   n   n   e   r       p   a   c
0046620    k   a   g   e  \r   /   /       C   o   p   y   r   i   g   h
0046640    t       X   e   r   o   x       C   o   r   p   o   r   a   t
0046660    i   o   n       1   9   7   9   ,       1   9   8   0  \r  \r
0046700    /   /  \t   L   a   s   t       m   o   d   i   f   i   e   d
0046720        F   e   b   r   u   a   r   y       2   8   ,       1   9
0046740    8   0           7   :   4   7       P   M       b   y       T
0046760    a   f   t  \r  \r   g   e   t       "   c   m   d   s   c   a
0047000    n   .   d   e   c   l   "  \r   g   e   t       "   A   l   t
0047020    o   D   e   f   s   .   d   "  \r  \r   e   x   t   e   r   n
0047040    a   l  \r   [  \r   /   /   o   u   t   g   o   i   n   g    
0047060    p   r   o   c   e   d   u   r   e   s  \r   D 376 001  \0 323
0047100    u   e   f   E   r   a   s   e   ;       D   e   f   E   r   r
0047120    o   r   ;       D   e   f   B   r   e   a   k   ;       D   e
0047140    f   E   c   h   o   ;       C   m   d   E   r   r   o   r   ;
0047160        I   n   v   e   r   t   W   i   n   d   o   w  \r  \r   /
0047200    /   i   n   c   o   m   i   n   g       p   r   o   c   e   d
0047220    u   r   e   s  \r   C   h   a   r   W   i   d   t   h   ;    
0047240    G   e   t   B   i   t   P   o   s   ;       G   e   t   L   m
0047260    a   r   g   ;       E   r   a   s   e   B   i   t   s  \r   P
0047300    u   t   s   ;       R   e   s   e   t   s   ;       W   s   s
0047320    ;       S   y   s   E   r   r  \r   C   u   r   r   e   n   t
0047340    P   h   r   a   s   e   ;       B   a   c   k   u   p   P   h
0047360    r   a   s   e   ;       D   i   s   m   i   s   s  \r   ]  \r
0047400   \r  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0047420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0047500    - 376 001  \0   J   -   -   -   -   -   -   -   -   -   -   -
0047520    -   -   -   -  \r   l   e   t       D   e   f   E   r   a   s
0047540    e   (   c   s   ,       f   i   r   s   t   ,       l   a   s
0047560    t   ,       c   o   n   t   e   x   t   )       b   e  \r   /
0047600    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0047620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0047700    -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   l
0047720    e   t       d   s       =       c   s   >   >   C   S   .   d
0047740    s   p   S  \r   l   e   t       b   i   t   s       =       0
0047760   \r   f   o   r       i       =       f   i   r   s   t       t
0050000    o       l   a   s   t       d   o  \r               [  \r    
0050020            l   e   t       c   h   a   r       =       c   s   >
0050040    >   C   S   .   b   u   f   >   >   B   u   f   ^   i  \r    
0050060            i   f       c   h   a   r       l   s       #   2   0
0050100    0       t   h   e   n 376 001  \0 337 027  \r                
0050120            [  \r                           i   f       c   h   a
0050140    r       e   q       $   *   n       t   h   e   n       [    
0050160    b   i   t   s       =       9   9   9   9   ;       b   r   e
0050200    a   k       ]  \r                           b   i   t   s    
0050220    =       b   i   t   s       +       (   c   h   a   r       g
0050240    e       #   4   0   ?       C   h   a   r   W   i   d   t   h
0050260    (   d   s   ,       c   h   a   r   )   ,  \r                
0050300                C   h   a   r   W   i   d   t   h   (   d   s   ,
0050320        $   ^   )   +   C   h   a   r   W   i   d   t   h   (   d
0050340    s   ,       c   h   a   r   +   #   1   0   0   )   )  \r    
0050360                        ]  \r               ]  \r   t   e   s   t
0050400        b   i   t   s       l   e       G   e   t   B   i   t   P
0050420    o   s   (   d   s   )   -   G   e   t   L   m   a   r   g   (
0050440    d   s   )  \r               i   f   s   o       E   r   a   s
0050460    e   B   i   t   s   (   d   s   ,       -   b   i   t   s   )
0050500   \r               i   f   n   o   t  \r     376 001  \0   a 374
0050520                        [           /   /   e   r   a   s   i   n
0050540    g       p   a   s   t       l   e   f   t       m   a   r   g
0050560    i   n  \r                           R   e   s   e   t   s   (
0050600    d   s   )  \r                           f   o   r       i    
0050620    =       0       t   o       f   i   r   s   t   -   1       d
0050640    o  \r                                       i   f       c   s
0050660    >   >   C   S   .   b   u   f   >   >   B   u   f   ^   i    
0050700    l   s       #   2   0   0       t   h   e   n       P   u   t
0050720    s   (   d   s   ,       c   s   >   >   C   S   .   b   u   f
0050740    >   >   B   u   f   ^   i   )  \r                           ]
0050760   \r   ]  \r  \r  \r   /   /   -   -   -   -   -   -   -   -   -
0051000    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0051100    -   -  \r   a   n   d       D   e   f   B   r   e   a   k   (
0051120  376 001  \0 237 306   c   s   ,       c   h   a   r   )       =
0051140        c   h   a   r       e   q       $   *   n       %       c
0051160    h   a   r       e   q       $   *   s       %       c   h   a
0051200    r       e   q       $   *   0   3   3  \r   /   /   -   -   -
0051220    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0051320    -   -   -   -   -   -   -   -  \r  \r   /   /   -   -   -   -
0051340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0051440    -   -   -   -   -   -   -  \r   a   n   d       D   e   f   E
0051460    c   h   o   (   c   s   ,       c   h   a   r   )       =    
0051500    n   o   t       C   u   r   r   e   n   t   P   h   r   a   s
0051520    e   (   c   s   ) 376 001  \0 023   :   >   >   P   D   .   P
0051540    h   r   a   s   e   T   e   r   m   i   n   a   t   o   r   (
0051560    c   s   ,       c   h   a   r   )  \r   /   /   -   -   -   -
0051600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0051700    -   -   -   -   -   -   -  \r  \f  \r   /   /   -   -   -   -
0051720    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0052020    -   -   -   -   -   -   -  \r   a   n   d       D   e   f   E
0052040    r   r   o   r   (   c   s   ,       e   c   )       b   e  \r
0052060    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0052100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0052120    -   -   -   -   -   -   -   -   -   - 376 001  \0   ^   R   -
0052140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0052200    -   -  \r   [  \r   c   s   >   >   C   S   .   e   r   r   o
0052220    r   C   o   d   e       =       e   c  \r   s   w   i   t   c
0052240    h   o   n       e   c       i   n   t   o  \r               [
0052260   \r               c   a   s   e       e   c   C   m   d   D   e
0052300    l   e   t   e   :  \r                           W   s   s   (
0052320    c   s   >   >   C   S   .   d   s   p   S   ,       "       X
0052340    X   X   "   )           /   /   f   a   l   l       i   n   t
0052360    o       n   e   x   t       c   a   s   e  \r               c
0052400    a   s   e       e   c   C   m   d   D   e   s   t   r   o   y
0052420    :  \r                           [       c   s   >   >   C   S
0052440    .   d   e   s   t   r   o   y       =       t   r   u   e   ;
0052460        B   a   c   k   u   p   P   h   r   a   s   e   (   c   s
0052500    ,       c   s   >   >   C   S   .   i   P   h   O   u   t   )
0052520        ]  \r               c   a   s   e       e   c   C   m 376
0052540  001  \0   `   P   d   T   o   o   L   o   n   g   :           /
0052560    /   j   u   s   t       b   l   i   n   k       w   i   n   d
0052600    o   w       a   n   d       d   o       n   o   t   h   i   n
0052620    g  \r                           [       C   m   d   E   r   r
0052640    o   r   (   c   s   )   ;       e   n   d   c   a   s   e    
0052660    ]  \r               c   a   s   e       e   c   K   e   y   A
0052700    m   b   i   g   u   o   u   s   :  \r               c   a   s
0052720    e       e   c   B   a   c   k   u   p   A   p   p   e   n   d
0052740    :  \r                           [       C   m   d   E   r   r
0052760    o   r   (   c   s   )   ;       B   a   c   k   u   p   P   h
0053000    r   a   s   e   (   c   s   ,       0   ,       e   d   i   t
0053020    A   p   p   e   n   d   )       ]  \r               c   a   s
0053040    e       e   c   T   o   o   M   a   n   y   P   h   r   a   s
0053060    e   s   :  \r               c   a   s   e       e   c   E   n
0053100    d   O   f   P   h   r   a   s   e   :  \r                    
0053120        S   y   s   E   r   r   (   c   s   ,       e   c   )  \r
0053140                d 376 001  \0  \v   Q   e   f   a   u   l   t   :
0053160            /   /   a   l   l       t   y   p   e   s       o   f
0053200        s   y   n   t   a   x       e   r   r   o   r   s       g
0053220    e   t       s   a   m   e       h   a   n   d   l   i   n   g
0053240   \r                           C   m   d   E   r   r   o   r   (
0053260    c   s   ,       "       ?   "   )           /   /   f   a   l
0053300    l       i   n   t   o       n   e   x   t       c   a   s   e
0053320   \r               c   a   s   e       e   c   B   a   c   k   u
0053340    p   R   e   p   l   a   c   e   :  \r                        
0053360    B   a   c   k   u   p   P   h   r   a   s   e   (   c   s   )
0053400   \r               ]  \r   ]  \r  \r  \r   /   /   -   -   -   -
0053420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0053520    -   -   -   -   -   -   -  \r   a   n   d       C   m   d   E
0053540    r   r   o   r   (   c   s   ,     376 001  \0 326 227   s   t
0053560    r   i   n   g   ;       n   u   m   a   r   g   s       n   a
0053600    )       b   e  \r   /   /   -   -   -   -   -   -   -   -   -
0053620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0053720    -   -  \r   /   /   D   i   s   p   l   a   y   s       s   t
0053740    r   i   n   g       i   f       p   r   e   s   e   n   t   ,
0053760        b   l   i   n   k   s       d   i   s   p   l   a   y    
0054000    w   i   n   d   o   w   ,       a   n   d       r   e   s   e
0054020    t   s       k   e   y   b   o   a   r   d  \r   [  \r   i   f
0054040        n   a       g   r       1       &       s   t   r   i   n
0054060    g       n   e       0       t   h   e   n       W   s   s   (
0054100    c   s   ,       s   t   r   i   n   g   )  \r   I   n   v   e
0054120    r   t   W   i   n   d   o   w   (   c   s   >   >   C   S   .
0054140    d   s   p   S   )  \r   D   i   s   m   i   s   s   ( 376 001
0054160   \0 237   l   5   0   )  \r   I   n   v   e   r   t   W   i   n
0054200    d   o   w   (   c   s   >   >   C   S   .   d   s   p   S   )
0054220   \r   R   e   s   e   t   s   (   c   s   >   >   C   S   .   k
0054240    e   y   S   )  \r   ]  \r  \r  \r   /   /   -   -   -   -   -
0054260    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0054360    -   -   -   -   -   -  \r   a   n   d       I   n   v   e   r
0054400    t   W   i   n   d   o   w   (   d   s   )       b   e  \r   /
0054420    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0054440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0054520    -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   l
0054540    e   t       d   c   b       =       d   s   >   >   D   S   .
0054560    f   d   c 376  \0 201 317   A   b  \r               [  \r    
0054600            d   c   b   >   >   D   C   B   .   b   a   c   k   g
0054620    r   o   u   n   d       =       n   o   t       d   c   b   >
0054640    >   D   C   B   .   b   a   c   k   g   r   o   u   n   d  \r
0054660                i   f       d   c   b       e   q       d   s   >
0054700    >   D   S   .   l   d   c   b       t   h   e   n       b   r
0054720    e   a   k  \r               d   c   b       =       d   c   b
0054740    >   >   D   C   B   .   n   e   x   t  \r               ]    
0054760    r   e   p   e   a   t  \r   ]  \r 377  \0  \0   C   m   d   S
0055000    c   a   n   T   t   y   .   b   c   p   l  \0 373 224 345 357
0055020    t  \0  \0 376 001  \0 267   [   /   /       C   m   d   S   c
0055040    a   n   T   t   y   .   b   c   p   l       -   -       C   o
0055060    m   m   a   n   d       s   c   a   n   n   e   r       e   n
0055100    v   i   r   o   n   m   e   n   t   -   s   p   e   c   i   f
0055120    i   c       p   r   o   c   e   d   u   r   e   s  \r   /   /
0055140   \t  \t  \t   f   o   r       d   e   a   l   i   n   g       w
0055160    i   t   h       s   e   q   u   e   n   t   i   a   l       t
0055200    e   r   m   i   n   a   l       s   t   r   e   a   m   s  \r
0055220    /   /       C   o   p   y   r   i   g   h   t       X   e   r
0055240    o   x       C   o   r   p   o   r   a   t   i   o   n       1
0055260    9   7   9  \r  \r   /   /  \t   L   a   s   t       m   o   d
0055300    i   f   i   e   d       J   u   l   y       1   4   ,       1
0055320    9   7   7           6   :   5   4       P   M  \r  \r   g   e
0055340    t       "   c   m   d   s   c   a   n   .   d   e   c   l   "
0055360   \r  \r   e   x   t   e   r   n   a   l  \r   [  \r   /   /   o
0055400    u   t   g   o   i   n   g       p   r   o   c   e   d   u   r
0055420    e   s  \r   D   e   f   E   r 376 001  \0   n 273   a   s   e
0055440    ;       D   e   f   E   r   r   o   r   ;       D   e   f   B
0055460    r   e   a   k   ;       D   e   f   E   c   h   o   ;       C
0055500    m   d   E   r   r   o   r  \r  \r   /   /   i   n   c   o   m
0055520    i   n   g       p   r   o   c   e   d   u   r   e   s  \r   P
0055540    u   t   s   ;       R   e   s   e   t   s   ;       W   s   s
0055560    ;       S   y   s   E   r   r  \r   C   u   r   r   e   n   t
0055600    P   h   r   a   s   e   ;       B   a   c   k   u   p   P   h
0055620    r   a   s   e   ;       D   i   s   m   i   s   s  \r   ]  \r
0055640   \r  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0055660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0055740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0055760    l   e   t       D   e   f   E   r   a   s   e   (   c   s   ,
0056000        f   i   r   s   t   ,       l   a   s   t   ,       c   o
0056020    n   t   e   x   t   )       b   e  \r   /   /   - 376 001  \0
0056040  213 307   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0056060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0056140    -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   l
0056160    e   t       d   s       =       c   s   >   >   C   S   .   d
0056200    s   p   S  \r   s   w   i   t   c   h   o   n       c   o   n
0056220    t   e   x   t       i   n   t   o  \r               [  \r    
0056240            c   a   s   e       e   r   a   s   e   C   h   a   r
0056260    :  \r                           [  \r                        
0056300    P   u   t   s   (   d   s   ,       $   \   )  \r            
0056320                i   f       c   s   >   >   C   S   .   b   u   f
0056340    >   >   B   u   f   ^   f   i   r   s   t       l   s       #
0056360    2   0   0       t   h   e   n       P   u   t   s   (   d   s
0056400    ,       c   s   >   >   C   S   .   b   u   f   >   >   B   u
0056420    f   ^   f   i   r   s   t   )  \r                           e
0056440    n   d 376 001  \0 337 036   c   a   s   e  \r                
0056460            ]  \r               c   a   s   e       e   r   a   s
0056500    e   W   o   r   d   :  \r                           [       W
0056520    s   s   (   d   s   ,       "   _       "   )   ;       e   n
0056540    d   c   a   s   e       ]  \r               ]  \r   ]  \r  \r
0056560   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0056600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0056660    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a
0056700    n   d       D   e   f   B   r   e   a   k   (   c   s   ,    
0056720    c   h   a   r   )       =       c   h   a   r       e   q    
0056740    $   *   n       %       c   h   a   r       e   q       $   *
0056760    s       %       c   h   a   r       e   q       $   *   0   3
0057000    3  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0057020    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0057040    -   -   -   -   -   -   - 376 001  \0   "   K   -   -   -   -
0057060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0057120    -   -   -   -  \r  \r   /   /   -   -   -   -   -   -   -   -
0057140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0057240    -   -   -  \r   a   n   d       D   e   f   E   c   h   o   (
0057260    c   s   ,       c   h   a   r   )       =       n   o   t    
0057300    C   u   r   r   e   n   t   P   h   r   a   s   e   (   c   s
0057320    )   >   >   P   D   .   P   h   r   a   s   e   T   e   r   m
0057340    i   n   a   t   o   r   (   c   s   ,       c   h   a   r   )
0057360   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0057400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0057440    -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0   P
0057460  347   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0057500    -   -   -  \r  \f  \r   /   /   -   -   -   -   -   -   -   -
0057520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0057620    -   -   -  \r   a   n   d       D   e   f   E   r   r   o   r
0057640    (   c   s   ,       e   c   )       b   e  \r   /   /   -   -
0057660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0057760    -   -   -   -   -   -   -   -   -  \r   [  \r   c   s   >   >
0060000    C   S   .   e   r   r   o   r   C   o   d   e       =       e
0060020    c  \r   s   w   i   t   c   h   o   n       e   c       i   n
0060040    t   o  \r               [  \r               c   a   s   e    
0060060    e 376 001  \0 351  \n   c   C   m   d   D   e   l   e   t   e
0060100    :  \r                           W   s   s   (   c   s   >   >
0060120    C   S   .   d   s   p   S   ,       "       X   X   X   "   )
0060140            /   /   f   a   l   l       i   n   t   o       n   e
0060160    x   t       c   a   s   e  \r               c   a   s   e    
0060200    e   c   C   m   d   D   e   s   t   r   o   y   :  \r        
0060220                    [       c   s   >   >   C   S   .   d   e   s
0060240    t   r   o   y       =       t   r   u   e   ;       B   a   c
0060260    k   u   p   P   h   r   a   s   e   (   c   s   ,       c   s
0060300    >   >   C   S   .   i   P   h   O   u   t   )       ]  \r    
0060320            c   a   s   e       e   c   C   m   d   T   o   o   L
0060340    o   n   g   :           /   /   j   u   s   t       d   i   n
0060360    g       a   n   d       d   o       n   o   t   h   i   n   g
0060400   \r                           [       C   m   d   E   r   r   o
0060420    r   (   c   s   )   ;       e   n   d   c   a   s   e       ]
0060440   \r               c   a   s   e       e   c   K   e   y   A   m
0060460    b   i   g   u   o   u 376 001  \0   X 306   s   :  \r        
0060500        c   a   s   e       e   c   B   a   c   k   u   p   A   p
0060520    p   e   n   d   :  \r                           [       C   m
0060540    d   E   r   r   o   r   (   c   s   )   ;       B   a   c   k
0060560    u   p   P   h   r   a   s   e   (   c   s   ,       0   ,    
0060600    e   d   i   t   A   p   p   e   n   d   )       ]  \r        
0060620        c   a   s   e       e   c   T   o   o   M   a   n   y   P
0060640    h   r   a   s   e   s   :  \r               c   a   s   e    
0060660    e   c   E   n   d   O   f   P   h   r   a   s   e   :  \r    
0060700                        S   y   s   E   r   r   (   c   s   ,    
0060720    e   c   )  \r               d   e   f   a   u   l   t   :    
0060740        /   /   a   l   l       t   y   p   e   s       o   f    
0060760    s   y   n   t   a   x       e   r   r   o   r   s       g   e
0061000    t       s   a   m   e       h   a   n   d   l   i   n   g  \r
0061020                            C   m   d   E   r   r   o   r   (   c
0061040    s   ,       "       ?   "   )           /   /   f   a   l   l
0061060        i   n   t   o       n   e   x   t     376 001  \0 236 021
0061100    c   a   s   e  \r               c   a   s   e       e   c   B
0061120    a   c   k   u   p   R   e   p   l   a   c   e   :  \r        
0061140                    B   a   c   k   u   p   P   h   r   a   s   e
0061160    (   c   s   )  \r               ]  \r   ]  \r  \r  \r   /   /
0061200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0061300    -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d    
0061320    C   m   d   E   r   r   o   r   (   c   s   ,       s   t   r
0061340    i   n   g   ;       n   u   m   a   r   g   s       n   a   )
0061360        b   e  \r   /   /   -   -   -   -   -   -   -   -   -   -
0061400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0061500  376  \0 262   X 031   -  \r   /   /   D   i   s   p   l   a   y
0061520    s       s   t   r   i   n   g       i   f       p   r   e   s
0061540    e   n   t   ,       r   i   n   g   s       b   e   l   l   ,
0061560        a   n   d       r   e   s   e   t   s       k   e   y   b
0061600    o   a   r   d       s   t   r   e   a   m  \r   [  \r   i   f
0061620        n   a       g   r       1       &       s   t   r   i   n
0061640    g       n   e       0       t   h   e   n       W   s   s   (
0061660    c   s   ,       s   t   r   i   n   g   )  \r   P   u   t   s
0061700    (   c   s   >   >   C   S   .   d   s   p   S   ,       $   *
0061720    0   0   7   )  \r   D   i   s   m   i   s   s   (   5   0   )
0061740   \r   R   e   s   e   t   s   (   c   s   >   >   C   S   .   k
0061760    e   y   S   )  \r   ]  \r 377  \0  \0   C   m   d   S   c   a
0062000    n   A   u   x   .   b   c   p   l  \0 373 230 336   K 022  \0
0062020   \0 376 001  \0   2   B   /   /       C   m   d   S   c   a   n
0062040    A   u   x   .   b   c   p   l       -   -       A   u   x   i
0062060    l   i   a   r   y       c   o   m   m   a   n   d       s   c
0062100    a   n   n   e   r       u   t   i   l   i   t   i   e   s  \r
0062120    /   /       C   o   p   y   r   i   g   h   t       X   e   r
0062140    o   x       C   o   r   p   o   r   a   t   i   o   n       1
0062160    9   7   9   ,       1   9   8   1   ,       1   9   8   2  \r
0062200   \r   /   /       L   a   s   t       m   o   d   i   f   i   e
0062220    d       A   p   r   i   l       9   ,       1   9   8   2    
0062240        6   :   0   2       P   M       b   y       T   a   f   t
0062260   \r  \r   g   e   t       "   c   m   d   s   c   a   n   .   d
0062300    e   c   l   "  \r  \r   e   x   t   e   r   n   a   l  \r   [
0062320   \r   /   /       o   u   t   g   o   i   n   g       p   r   o
0062340    c   e   d   u   r   e   s  \r   G   e   t   N   u   m   b   e
0062360    r   ;       G   e   t   S   t   r   i   n   g   ;       G   e
0062400    t   F   i   l   e   ;       C   o   n   f   i   r   m   ;    
0062420    G   e   t   K   e   y 376 001  \0   ! 210   w   o   r   d   ;
0062440        K   e   y   w   o   r   d   H   e   l   p  \r  \r   /   /
0062460        i   n   c   o   m   i   n   g       p   r   o   c   e   d
0062500    u   r   e   s  \r   G   e   t   P   h   r   a   s   e   ;    
0062520    T   e   r   m   i   n   a   t   i   n   g   C   h   a   r   ;
0062540        C   u   r   r   e   n   t   P   h   r   a   s   e   ;    
0062560    A   p   p   e   n   d   C   h   a   r  \r   L   o   o   k   u
0062600    p   K   e   y   w   o   r   d   ;       E   n   u   m   e   r
0062620    a   t   e   K   e   y   w   o   r   d   T   a   b   l   e  \r
0062640    D   e   f   a   u   l   t   A   r   g   s   ;       G   e   t
0062660    s   ;       P   u   t   s   ;       E   n   d   o   f   s   ;
0062700        E   r   r   o   r   s   ;       W   s   s   ;       W   n
0062720    s  \r   A   l   l   o   c   a   t   e   ;       F   r   e   e
0062740    ;       O   p   e   n   F   i   l   e   ;       T   r   u   e
0062760    P   r   e   d   i   c   a   t   e   ;       F   a   l   s   e
0063000    P   r   e   d   i   c   a   t   e   ;       Z   e   r   o   ;
0063020        D   o   u   b   l   e   A   d   d  \r 376 001  \0   .   J
0063040    ]  \r  \r   s   t   r   u   c   t   u   r   e       S   t   r
0063060    i   n   g       [       l   e   n   g   t   h       b   y   t
0063100    e   ;       c   h   a   r   ^   1   ,   2   5   5       b   y
0063120    t   e       ]  \r  \f  \r   /   /   -   -   -   -   -   -   -
0063140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0063240    -   -   -   -  \r   l   e   t       G   e   t   N   u   m   b
0063260    e   r   (   c   s   ,       r   a   d   i   x   ,       l   v
0063300    R   e   s   u   l   t   ;       n   u   m   a   r   g   s    
0063320    n   a   )       =       v   a   l   o   f  \r   /   /   -   -
0063340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0063440  376 001  \0 005 204   -   -   -   -   -   -   -   -   -  \r   /
0063460    /       I   n   t   e   r   p   r   e   t   s       t   h   e
0063500        n   e   x   t       p   h   r   a   s   e       a   s    
0063520    a       s   i   g   n   e   d       o   r       u   n   s   i
0063540    g   n   e   d       n   u   m   b   e   r       i   n       t
0063560    h   e       s   p   e   c   i   f   i   e   d  \r   /   /    
0063600    r   a   d   i   x       (   d   e   f   a   u   l   t       1
0063620    0   )   .           I   f       l   v   R   e   s   u   l   t
0063640        i   s       s   u   p   p   l   i   e   d   ,       a   c
0063660    c   e   p   t   s       a       3   2   -   b   i   t       n
0063700    u   m   b   e   r       a   n   d  \r   /   /       s   t   o
0063720    r   e   s       i   t       i   n       @   l   v   R   e   s
0063740    u   l   t   .           I   n       a   n   y       e   v   e
0063760    n   t   ,       r   e   t   u   r   n   s       t   h   e    
0064000    l   o   w   -   o   r   d   e   r       1   6       b   i   t
0064020    s       o   f  \r   /   /       t   h   e       r   e   s   u
0064040    l   t   .  \r   [ 376 001  \0 201   A  \r   l   e   t       d
0064060    i   g   i   t       =       n   i   l  \r   l   e   t       m
0064100    y   R   e   s   u   l   t       =       v   e   c       1  \r
0064120    D   e   f   a   u   l   t   A   r   g   s   (   l   v       n
0064140    a   ,       -   1   ,       1   0   ,       m   y   R   e   s
0064160    u   l   t   )  \r  \r   /   /       F   r   a   m   e       o
0064200    f   f   s   e   t   s       o   f       a   b   o   v   e    
0064220    a   r   g   s       a   n   d       l   o   c   a   l   s    
0064240    u   s   e   d       b   y       a   s   s   e   m   b   l   y
0064260        l   a   n   g   u   a   g   e   :  \r   m   a   n   i   f
0064300    e   s   t       [       o   R   a   d   i   x       =       5
0064320    ;       o   l   v   R   e   s   u   l   t       =       6   ;
0064340        o   D   i   g   i   t       =       8       ]           /
0064360    /       n   a       i   s       o   f   f   s   e   t       7
0064400   \r  \r   l   e   t       d   i   g   i   t   S   e   e   n    
0064420    =       f   a   l   s   e  \r   l   e   t       n   e   g   a
0064440    t   i   v   e       =       f   a   l 376 001  \0   u 324   s
0064460    e  \r   Z   e   r   o   (   l   v   R   e   s   u   l   t   ,
0064500        2   )  \r   G   e   t   P   h   r   a   s   e   (   c   s
0064520    ,       0   ,       0   ,       0   ,       N   u   m   b   e
0064540    r   H   e   l   p   ,       r   a   d   i   x   )  \r   u   n
0064560    t   i   l       E   n   d   o   f   s   (   c   s   )       d
0064600    o  \r               [  \r               d   i   g   i   t    
0064620    =       G   e   t   s   (   c   s   )   -   $   0  \r        
0064640        i   f       d   i   g   i   t       u   g   e       r   a
0064660    d   i   x       t   h   e   n  \r                           [
0064700   \r                           i   f       (   d   i   g   i   t
0064720        e   q       $   +   -   $   0       %       d   i   g   i
0064740    t       e   q       $   -   -   $   0   )       &       n   o
0064760    t       d   i   g   i   t   S   e   e   n       t   h   e   n
0065000   \r                                       [       n   e   g   a
0065020    t   i   v   e       =       d   i   g   i   t       e   q    
0065040    $   -   -   $   0   ;       l   o   o   p       ]  \r     376
0065060  001  \0 224   p                       E   r   r   o   r   s   (
0065100    c   s   ,       e   c   N   o   n   N   u   m   e   r   i   c
0065120    C   h   a   r   )  \r                           ]  \r        
0065140        d   i   g   i   t   S   e   e   n       =       t   r   u
0065160    e  \r               i   f       (   t   a   b   l   e  \r    
0065200                        [           /   /       @   l   v   R   e
0065220    s   u   l   t       =       (   @   l   v   R   e   s   u   l
0065240    t   )   *   r   a   d   i   x       +       d   i   g   i   t
0065260        w   i   t   h       o   v   e   r   f   l   o   w       c
0065300    h   e   c   k  \r                               #   5   5   0
0065320    0   1  \t  \t   /   /       s   t   a       3       1       2
0065340   \r                           #   1   5   5   0   0   0  \t  \t
0065360    /   /       m   o   v       2       3  \r                    
0065400            #   1   1   4   0   0   +   o   l   v   R   e   s   u
0065420    l   t  \t   /   /       i   s   z       o   l   v   R   e   s
0065440    u   l   t       3  \r                               #   2   1
0065460    4   0   0   + 376 001  \0 200 203   o   D   i   g   i   t  \t
0065500    /   /       l   d   a       0       o   D   i   g   i   t    
0065520    3  \r                               #   2   7   4   0   0   +
0065540    o   l   v   R   e   s   u   l   t  \t   /   /       l   d   a
0065560        1       @   o   l   v   R   e   s   u   l   t       3  \r
0065600                                #   3   1   4   0   0   +   o   R
0065620    a   d   i   x  \t   /   /       l   d   a       2       o   R
0065640    a   d   i   x       3  \r                               #   6
0065660    1   0   2   0  \t  \t   /   /       m   u   l  \r            
0065700                    #   4   7   4   0   0   +   o   l   v   R   e
0065720    s   u   l   t  \t   /   /       s   t   a       1       @   o
0065740    l   v   R   e   s   u   l   t       3  \r                    
0065760            #   1   5   4   0   0   +   o   l   v   R   e   s   u
0066000    l   t  \t   /   /       d   s   z       o   l   v   R   e   s
0066020    u   l   t       3  \r                               #   2   7
0066040    4   0   0   +   o   l   v   R   e   s   u   l   t  \t   /   /
0066060        l   d   a       1       @   o 376 001  \0 237 003   l   v
0066100    R   e   s   u   l   t       3  \r                            
0066120    #   6   1   0   2   0  \t  \t   /   /       m   u   l  \r    
0066140                            #   4   7   4   0   0   +   o   l   v
0066160    R   e   s   u   l   t  \t   /   /       s   t   a       1    
0066200    @   o   l   v   R   e   s   u   l   t       3  \r            
0066220                #   1   7   1   0   0   0  \t  \t   /   /       m
0066240    o   v       3       2  \r                               #   3
0066260    5   0   0   1  \t  \t   /   /       l   d   a       3       1
0066300        2  \r                                   #   1   4   0   1
0066320   \t  \t   /   /       j   m   p       1       3  \r            
0066340                ]   )   (   )       n   e       0       t   h   e
0066360    n       E   r   r   o   r   s   (   c   s   ,       e   c   N
0066400    u   m   b   e   r   O   v   e   r   f   l   o   w   )  \r    
0066420            ]  \r  \r   u   n   l   e   s   s       d   i   g   i
0066440    t   S   e   e   n       d   o       E   r   r   o   r   s   (
0066460    c   s   ,       e   c   E   m   p   t   y   N   u   m 376 001
0066500   \0   N 022   b   e   r   )  \r   i   f       l   v   R   e   s
0066520    u   l   t   !   0       n   e       0       &       l   v   R
0066540    e   s   u   l   t       e   q       m   y   R   e   s   u   l
0066560    t       t   h   e   n       E   r   r   o   r   s   (   c   s
0066600    ,       e   c   N   u   m   b   e   r   O   v   e   r   f   l
0066620    o   w   )  \r   i   f       n   e   g   a   t   i   v   e    
0066640    t   h   e   n  \r               [  \r               l   v   R
0066660    e   s   u   l   t   !   0       =       n   o   t       l   v
0066700    R   e   s   u   l   t   !   0   ;       l   v   R   e   s   u
0066720    l   t   !   1       =       n   o   t       l   v   R   e   s
0066740    u   l   t   !   1  \r               D   o   u   b   l   e   A
0066760    d   d   (   l   v   R   e   s   u   l   t   ,       t   a   b
0067000    l   e       [       0   ;       1       ]   )  \r            
0067020    ]  \r   r   e   s   u   l   t   i   s       l   v   R   e   s
0067040    u   l   t   !   1  \r   ]  \r  \r   /   /   -   -   -   -   -
0067060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0067100    -   -   - 376 001  \0   R   #   -   -   -   -   -   -   -   -
0067120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0067160    -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d    
0067200    N   u   m   b   e   r   H   e   l   p   (   s   t   r   ,    
0067220    r   a   d   i   x   )       b   e  \r   /   /   -   -   -   -
0067240    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0067340    -   -   -   -   -   -   -  \r   [  \r   s   w   i   t   c   h
0067360    o   n       r   a   d   i   x       i   n   t   o  \r        
0067400        [  \r               c   a   s   e       1   0   :  \r    
0067420                        [       W   s   s   (   s   t   r   ,    
0067440    "   d   e   c   i   m   a   l   "   )   ;       e   n   d   c
0067460    a   s   e       ]  \r               c   a   s   e       8   :
0067500   \r                           [ 376 001  \0 354 271       W   s
0067520    s   (   s   t   r   ,       "   o   c   t   a   l   "   )   ;
0067540        e   n   d   c   a   s   e       ]  \r               d   e
0067560    f   a   u   l   t   :  \r                           [       W
0067600    s   s   (   s   t   r   ,       "   b   a   s   e       "   )
0067620    ;       W   n   s   (   s   t   r   ,       r   a   d   i   x
0067640    )       ]  \r               ]  \r   W   s   s   (   s   t   r
0067660    ,       "       n   u   m   b   e   r   "   )  \r   ]  \r  \f
0067700   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0067720    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0070000    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a
0070020    n   d       G   e   t   S   t   r   i   n   g   (   c   s   ,
0070040        P   h   r   a   s   e   T   e   r   m   i   n   a   t   o
0070060    r   ,       H   e   l   p   ,       h   e   l   p   A   r   g
0070100    ,       E   c   h   o   ;       n   u   m   a   r 376 001  \0
0070120    c 312   g   s       n   a   )       =       v   a   l   o   f
0070140   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0070160    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0070240    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   /
0070260    /       R   e   t   u   r   n   s       t   h   e       n   e
0070300    x   t       p   h   r   a   s   e       a   s       a       b
0070320    c   p   l       s   t   r   i   n   g  \r   [  \r   D   e   f
0070340    a   u   l   t   A   r   g   s   (   l   v       n   a   ,    
0070360    -   1   ,       0   ,       0   ,       0   ,       0   )  \r
0070400    l   e   t       n       =       G   e   t   P   h   r   a   s
0070420    e   (   c   s   ,       0   ,       P   h   r   a   s   e   T
0070440    e   r   m   i   n   a   t   o   r   ,       E   c   h   o   ,
0070460        H   e   l   p   ,       h   e   l   p   A   r   g   )  \r
0070500    l   e   t       s       =       A   l   l   o   c   a   t   e
0070520    (   c 376 001  \0   '   ~   s   >   >   C   S   .   z   o   n
0070540    e   ,       n       r   s   h   i   f   t       1       +   1
0070560    )  \r   s   >   >   S   t   r   i   n   g   .   l   e   n   g
0070600    t   h       =       n  \r   f   o   r       i       =       1
0070620        t   o       n       d   o       s   >   >   S   t   r   i
0070640    n   g   .   c   h   a   r   ^   i       =       G   e   t   s
0070660    (   c   s   )  \r   r   e   s   u   l   t   i   s       s  \r
0070700    ]  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0070720    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0071020   \r   a   n   d       G   e   t   F   i   l   e   (   c   s   ,
0071040        k   s   T   y   p   e   ,       i   t   e   m   S   i   z
0071060    e   ,       v   e   r   s   i   o   n   C   o   n   t   r   o
0071100    l   ,       h   i   n   t   F   p   ,       e   r   r   R   t
0071120    n   ,       z   o   n   e 376 001  \0 271   ~   ,  \r        
0071140            l   o   g   I   n   f   o   ,       d   i   s   k   ;
0071160        n   u   m   a   r   g   s       n   a   )       =       v
0071200    a   l   o   f  \r   /   /   -   -   -   -   -   -   -   -   -
0071220    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0071320    -   -  \r   /   /       R   e   t   u   r   n   s       a    
0071340    s   t   r   e   a   m       f   o   r       a       f   i   l
0071360    e       w   h   o   s   e       n   a   m   e       i   s    
0071400    t   h   e       n   e   x   t       p   h   r   a   s   e   .
0071420   \r   /   /       A   l   l       a   r   g   u   m   e   n   t
0071440    s       e   x   c   e   p   t       t   h   e       f   i   r
0071460    s   t       a   r   e       p   a   s   s   e   d       d   i
0071500    r   e   c   t   l   y       t   o       O   p   e   n   F   i
0071520    l   e   .  \r   [  \r   D   e   f   a   u   l 376 001  \0 335
0071540   \b   t   A   r   g   s   (   l   v       n   a   ,       -   1
0071560    ,       0   ,       0   ,       0   ,       0   ,       0   ,
0071600        0   ,       0   ,       0   )  \r   l   e   t       s   t
0071620    r   i   n   g       =       G   e   t   S   t   r   i   n   g
0071640    (   c   s   ,       0   ,       W   s   s   ,       "   f   i
0071660    l   e       n   a   m   e   "   )  \r   l   e   t       s   t
0071700    r   e   a   m       =       O   p   e   n   F   i   l   e   (
0071720    s   t   r   i   n   g   ,       k   s   T   y   p   e   ,    
0071740    i   t   e   m   S   i   z   e   ,       v   e   r   s   i   o
0071760    n   C   o   n   t   r   o   l   ,       h   i   n   t   F   p
0072000    ,  \r       e   r   r   R   t   n   ,       z   o   n   e   ,
0072020        l   o   g   I   n   f   o   ,       d   i   s   k   )  \r
0072040    F   r   e   e   (   c   s   >   >   C   S   .   z   o   n   e
0072060    ,       s   t   r   i   n   g   )  \r   i   f       s   t   r
0072100    e   a   m       e   q       0       t   h   e   n       E   r
0072120    r   o   r   s   (   c   s   ,       e   c   C   a   n   t   O
0072140    p 376 001  \0 235  \b   e   n   F   i   l   e   )  \r   r   e
0072160    s   u   l   t   i   s       s   t   r   e   a   m  \r   ]  \r
0072200   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0072220    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0072300    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a
0072320    n   d       C   o   n   f   i   r   m   (   c   s   ,       s
0072340    t   r   i   n   g   ;       n   u   m   a   r   g   s       n
0072360    a   )       =       v   a   l   o   f  \r   /   /   -   -   -
0072400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0072500    -   -   -   -   -   -   -   -  \r   /   /       I   n   p   u
0072520    t   s       a   n   d       r   e   t   u   r   n   s       a
0072540        t   r   u   e     376 001  \0 316 031   o   r       f   a
0072560    l   s   e       c   o   n   f   i   r   m   a   t   i   o   n
0072600   \r   [  \r   i   f       n   a       g   r       1       &    
0072620    s   t   r   i   n   g       n   e       0       t   h   e   n
0072640        W   s   s   (   c   s   ,       s   t   r   i   n   g   )
0072660   \r   W   s   s   (   c   s   ,       "       [   C   o   n   f
0072700    i   r   m   ]       "   )  \r   G   e   t   P   h   r   a   s
0072720    e   (   c   s   ,       T   r   u   e   P   r   e   d   i   c
0072740    a   t   e   ,       T   r   u   e   P   r   e   d   i   c   a
0072760    t   e   ,       F   a   l   s   e   P   r   e   d   i   c   a
0073000    t   e   ,       W   s   s   ,       "   y       o   r       n
0073020    "   )  \r   s   w   i   t   c   h   o   n       T   e   r   m
0073040    i   n   a   t   i   n   g   C   h   a   r   (   c   s   )    
0073060    i   n   t   o  \r               [  \r               c   a   s
0073100    e       $   Y   :       c   a   s   e       $   y   :       c
0073120    a   s   e       $   *   n   :  \r                           [
0073140        W   s   s   (   c   s   ,       "   y 376 001  \0   8 365
0073160    e   s   .       "   )   ;       r   e   s   u   l   t   i   s
0073200        t   r   u   e       ]  \r               c   a   s   e    
0073220    $   N   :       c   a   s   e       $   n   :  \r            
0073240                [       W   s   s   (   c   s   ,       "   n   o
0073260    .       "   )   ;       r   e   s   u   l   t   i   s       f
0073300    a   l   s   e       ]  \r               d   e   f   a   u   l
0073320    t   :  \r                           E   r   r   o   r   s   (
0073340    c   s   ,       e   c   B   a   d   C   o   n   f   i   r   m
0073360    i   n   g   C   h   a   r   )  \r               ]  \r   ]  \r
0073400   \f  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0073420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0073500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0073520    a   n   d       G   e   t   K   e   y   w   o   r   d   (   c
0073540    s   ,       k   t   ,       r   e   t   u   r   n   O   n   F
0073560  376 001  \0   0 376   a   i   l   ,       P   h   r   a   s   e
0073600    T   e   r   m   i   n   a   t   o   r   ;       n   u   m   a
0073620    r   g   s       n   a   )       =       v   a   l   o   f  \r
0073640    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0073660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0073740    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   /   /
0073760        L   o   o   k   s       u   p       p   h   r   a   s   e
0074000        i   n       k   e   y   w   o   r   d       t   a   b   l
0074020    e       k   t       a   n   d       r   e   t   u   r   n   s
0074040        p   o   i   n   t   e   r       t   o       c   o   r   r
0074060    e   s   p   o   n   d   i   n   g  \r   /   /       t   a   b
0074100    l   e       e   n   t   r   y   .           I   f       r   e
0074120    t   u   r   n   O   n   F   a   i   l       i   s       t   r
0074140    u   e   ,       r   e   t   u   r   n   s       z   e   r   o
0074160        o   n       f 376 001  \0   C 223   a   i   l   u   r   e
0074200    .  \r   /   /       I   f       a   n       a   b   b   r   e
0074220    v   i   a   t   e   d       k   e   y   w   o   r   d       i
0074240    s       r   e   c   o   g   n   i   z   e   d   ,       a   p
0074260    p   e   n   d   s       t   h   e       r   e   m   a   i   n
0074300    d   e   r       o   f       t   h   e  \r   /   /       k   e
0074320    y   w   o   r   d       t   o       t   h   e       c   o   m
0074340    m   a   n   d       l   i   n   e       i   f   f       t   h
0074360    e       t   e   r   m   i   n   a   t   i   n   g       c   h
0074400    a   r   a   c   t   e   r       d   i   d       n   o   t    
0074420    e   c   h   o   .  \r   [  \r   D   e   f   a   u   l   t   A
0074440    r   g   s   (   l   v       n   a   ,       -   2   ,       f
0074460    a   l   s   e   ,       0   )  \r   l   e   t       k   e   y
0074500        =       G   e   t   S   t   r   i   n   g   (   c   s   ,
0074520        P   h   r   a   s   e   T   e   r   m   i   n   a   t   o
0074540    r   ,       K   e   y   w   o   r   d   H   e   l   p   ,    
0074560    k   t   )  \r   l   e   t       l   e 376 001  \0 177   N   n
0074600    g   t   h       =       k   e   y   >   >   S   t   r   i   n
0074620    g   .   l   e   n   g   t   h  \r   l   e   t       t   a   b
0074640    l   e   K   e   y       =       n   i   l  \r   l   e   t    
0074660    e   n   t   r   y       =       L   o   o   k   u   p   K   e
0074700    y   w   o   r   d   (   k   t   ,       k   e   y   ,       l
0074720    v       t   a   b   l   e   K   e   y   )  \r   F   r   e   e
0074740    (   c   s   >   >   C   S   .   z   o   n   e   ,       k   e
0074760    y   )  \r   i   f       e   n   t   r   y       e   q       0
0075000        t   h   e   n  \r               t   e   s   t       t   a
0075020    b   l   e   K   e   y       e   q       0       %       l   e
0075040    n   g   t   h       e   q       0           /   /       a   m
0075060    b   i   g   u   o   u   s       o   r       o   u   t   r   i
0075100    g   h   t       f   a   i   l   u   r   e   ?  \r            
0075120                i   f   s   o       r   e   s   u   l   t   i   s
0075140        r   e   t   u   r   n   O   n   F   a   i   l   ?       0
0075160    ,       E   r   r   o   r   s   (   c   s   ,       e   c 376
0075200  001  \0 033   a   K   e   y   N   o   t   F   o   u   n   d   )
0075220   \r                           i   f   n   o   t       E   r   r
0075240    o   r   s   (   c   s   ,       e   c   K   e   y   A   m   b
0075260    i   g   u   o   u   s   )  \r   i   f       l   e   n   g   t
0075300    h       l   s       t   a   b   l   e   K   e   y   >   >   S
0075320    t   r   i   n   g   .   l   e   n   g   t   h       t   h   e
0075340    n  \r               [  \r               l   e   t       c   h
0075360    a   r       =       T   e   r   m   i   n   a   t   i   n   g
0075400    C   h   a   r   (   c   s   )  \r               u   n   l   e
0075420    s   s       C   u   r   r   e   n   t   P   h   r   a   s   e
0075440    (   c   s   )   >   >   P   D   .   E   c   h   o   (   c   s
0075460    ,       c   h   a   r   )       d   o  \r                    
0075500        [           /   /       a   p   p   e   n   d       t   a
0075520    i   l       o   f       k   e   y   w   o   r   d       a   s
0075540        i   f       i   t       h   a   d       b   e   e   n    
0075560    t   y   p   e   d       i   n  \r                           c
0075600    s   >   >   C 376 001  \0   - 312   S   .   i   C   h   I   n
0075620        =       c   s   >   >   C   S   .   i   C   h   I   n   -
0075640    1  \r                           f   o   r       i       =    
0075660    l   e   n   g   t   h   +   1       t   o       t   a   b   l
0075700    e   K   e   y   >   >   S   t   r   i   n   g   .   l   e   n
0075720    g   t   h       d   o  \r                                    
0075740    P   u   t   s   (   c   s   ,       t   a   b   l   e   K   e
0075760    y   >   >   S   t   r   i   n   g   .   c   h   a   r   ^   i
0076000    )  \r                           C   u   r   r   e   n   t   P
0076020    h   r   a   s   e   (   c   s   )   >   >   P   D   .   i   L
0076040    a   s   t       =       c   s   >   >   C   S   .   i   C   h
0076060    I   n  \r                           A   p   p   e   n   d   C
0076100    h   a   r   (   c   s   ,       c   h   a   r   ,       f   a
0076120    l   s   e   )  \r                           ]  \r            
0076140    ]  \r   r   e   s   u   l   t   i   s       e   n   t   r   y
0076160   \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -
0076200    -   -   -   -   -   -   -   -   - 376 001  \0   6   ^   -   -
0076220    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0076300    -   -   -   -   -   -  \r   a   n   d       K   e   y   w   o
0076320    r   d   H   e   l   p   (   s   t   r   ,       k   t   )    
0076340    b   e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0076360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0076460   \r   [  \r   W   s   s   (   s   t   r   ,       "   o   n   e
0076500        o   f       t   h   e       f   o   l   l   o   w   i   n
0076520    g   :   *   n   "   )  \r   l   e   t       c   o   u   n   t
0076540    ,       s   t   r   1       =       0   ,       s   t   r  \r
0076560    E   n   u   m   e   r   a   t   e   K   e   y   w   o   r   d
0076600    T   a   b   l   e   (   k   t   ,       P   r   i   n 376 001
0076620   \0 331   p   t   K   e   y   w   o   r   d   ,       l   v    
0076640    c   o   u   n   t   )  \r   ]  \r  \r   /   /   -   -   -   -
0076660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0076760    -   -   -   -   -   -   -  \r   a   n   d       P   r   i   n
0077000    t   K   e   y   w   o   r   d   (   e   n   t   r   y   ,    
0077020    k   t   ,       k   e   y   ,       l   v   C   o   u   n   t
0077040    )       b   e  \r   /   /   -   -   -   -   -   -   -   -   -
0077060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0077160    -   -  \r   [  \r   l   e   t       c   o   u   n   t       =
0077200        @   l   v   C   o   u   n   t  \r   l   e   t       s   t
0077220    r       = 376  \0 312 363 317       l   v   C   o   u   n   t
0077240    !   1  \r   t   e   s   t       c   o   u   n   t   +   k   e
0077260    y   >   >   S   t   r   i   n   g   .   l   e   n   g   t   h
0077300        g   r       6   0  \r               i   f   s   o       [
0077320        W   s   s   (   s   t   r   ,       "   ,   *   n   "   )
0077340    ;       c   o   u   n   t       =       0       ]  \r        
0077360        i   f   n   o   t       i   f       c   o   u   n   t    
0077400    n   e       0       t   h   e   n       [       W   s   s   (
0077420    s   t   r   ,       "   ,       "   )   ;       c   o   u   n
0077440    t       =       c   o   u   n   t   +   2       ]  \r   W   s
0077460    s   (   s   t   r   ,       k   e   y   )  \r   @   l   v   C
0077500    o   u   n   t       =       c   o   u   n   t   +   k   e   y
0077520    >   >   S   t   r   i   n   g   .   l   e   n   g   t   h  \r
0077540    ]  \r 377  \0  \0   C   m   d   S   c   a   n   O   E   P   .
0077560    b   c   p   l  \0 373 230 336   K   ;  \0  \0 376 001  \0 200
0077600  033   /   /       C   m   d   S   c   a   n   O   E   P   .   b
0077620    c   p   l       -   -       o   v   e   r   l   a   y       e
0077640    n   t   r   y       p   o   i   n   t       d   e   c   l   a
0077660    r   a   t   i   o   n   s       f   o   r       C   m   d   S
0077700    c   a   n       p   a   c   k   a   g   e  \r   /   /       C
0077720    o   p   y   r   i   g   h   t       X   e   r   o   x       C
0077740    o   r   p   o   r   a   t   i   o   n       1   9   7   9   ,
0077760        1   9   8   2  \r  \r   /   /  \t   L   a   s   t       m
0100000    o   d   i   f   i   e   d       A   p   r   i   l       9   ,
0100020        1   9   8   2           6   :   0   4       P   M       b
0100040    y       T   a   f   t  \r  \r   e   x   t   e   r   n   a   l
0100060   \r   [  \r   /   /   o   u   t   g   o   i   n   g       p   r
0100100    o   c   e   d   u   r   e   s  \r   I   n   i   t   C   m   d
0100120    S   c   a   n   O   E   P  \r  \r   /   /   i   n   c   o   m
0100140    i   n   g       p   r   o   c   e   d   u   r   e   s  \r   D
0100160    e   c   l   a   r   e   O   E   P   ;       C   S   G   e   t
0100200    s 376 001  \0 020   x   ;       C   S   P   u   t   s   ;    
0100220    C   S   E   n   d   o   f   s   ;       C   S   C   l   o   s
0100240    e   s  \r   C   S   R   e   s   e   t   s   ;       D   e   f
0100260    B   r   e   a   k   ;       D   e   f   E   c   h   o   ;    
0100300    D   e   f   E   r   a   s   e   ;       D   e   f   E   r   r
0100320    o   r  \r   K   e   y   w   o   r   d   H   e   l   p  \r   ]
0100340   \r  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0100360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0100440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0100460    l   e   t       I   n   i   t   C   m   d   S   c   a   n   O
0100500    E   P   (   o   e   v   )       b   e  \r   /   /   -   -   -
0100520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0100600    -   -   -   -   -   - 376  \0 256 270   =   -   -   -   -   -
0100620    -   -   -   -   -   -   -   -   -   -   -   -   -  \r        
0100640        D   e   c   l   a   r   e   O   E   P   (   o   e   v   ,
0100660        l   v       C   S   G   e   t   s   ,       l   v       C
0100700    S   P   u   t   s   ,       l   v       C   S   E   n   d   o
0100720    f   s   ,       l   v       C   S   C   l   o   s   e   s   ,
0100740   \r                   l   v       C   S   R   e   s   e   t   s
0100760    ,       l   v       D   e   f   B   r   e   a   k   ,       l
0101000    v       D   e   f   E   c   h   o   ,       l   v       D   e
0101020    f   E   r   a   s   e   ,       l   v       D   e   f   E   r
0101040    r   o   r   ,  \r                   l   v       K   e   y   w
0101060    o   r   d   H   e   l   p   )  \r 377  \0  \0   K   e   y   w
0101100    o   r   d   .   d   e   c   l  \0 373 231  \t 271 023  \0  \0
0101120  376 001  \0 351 253   /   /       K   e   y   w   o   r   d   .
0101140    d   e   c   l       -   -       d   e   c   l   a   r   a   t
0101160    i   o   n   s       f   o   r       k   e   y   w   o   r   d
0101200        t   a   b   l   e       p   a   c   k   a   g   e  \r   /
0101220    /       C   o   p   y   r   i   g   h   t       X   e   r   o
0101240    x       C   o   r   p   o   r   a   t   i   o   n       1   9
0101260    7   9  \r  \r   /   /       L   a   s   t       m   o   d   i
0101300    f   i   e   d       M   a   y       1   2   ,       1   9   8
0101320    2           5   :   4   0       P   M       b   y       T   a
0101340    f   t  \r  \r  \r   /   /   -   -   -   -   -   -   -   -   -
0101360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0101460    -   -  \r   s   t   r   u   c   t   u   r   e       K   T   E
0101500    :           /   /       K   e   y   w   o   r   d       T   a
0101520    b   l   e       E 376 001  \0 206  \0   n   t   r   y  \r   /
0101540    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0101560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0101640    -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   k
0101660    e   y       w   o   r   d  \t  \t   /   /       -   >       k
0101700    e   y   w   o   r   d       s   t   r   i   n   g  \r   e   n
0101720    t   r   y       w   o   r   d  \t  \t   /   /       o   n   e
0101740        o   r       m   o   r   e       w   o   r   d   s       o
0101760    f       c   l   i   e   n   t       d   a   t   a       s   t
0102000    a   r   t       h   e   r   e  \r   ]  \r  \r   /   /   -   -
0102020    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0102120    -   -   -   -   -   -   -   -   -  \r 376 001  \0 306   -   s
0102140    t   r   u   c   t   u   r   e       K   T   :           /   /
0102160        K   e   y   w   o   r   d       T   a   b   l   e  \r   /
0102200    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0102220    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0102300    -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   /
0102320    /       d   e   f   i   n   e   d       o   p   e   r   a   t
0102340    i   o   n   s  \r   I   n   s   e   r   t       w   o   r   d
0102360   \t  \t   /   /       C   a   l   l   0   :       i   n   s   e
0102400    r   t       k   e   y   w   o   r   d       i   n       t   a
0102420    b   l   e  \r   D   e   l   e   t   e       w   o   r   d  \t
0102440   \t   /   /       C   a   l   l   1   :       d   e   l   e   t
0102460    e       k   e   y   w   o   r   d       f   r   o   m       t
0102500    a   b   l   e  \r   L   o   o   k   u   p       w   o   r   d
0102520   \t  \t   /   /       C   a   l   l   2   :       l   o   o 376
0102540  001  \0   + 177   k   u   p       k   e   y   w   o   r   d  \r
0102560    E   n   u   m   e   r   a   t   e       w   o   r   d  \t  \t
0102600    /   /       C   a   l   l   3   :       e   n   u   m   e   r
0102620    a   t   e       k   e   y   w   o   r   d       t   a   b   l
0102640    e  \r   D   e   s   t   r   o   y       w   o   r   d  \t  \t
0102660    /   /       C   a   l   l   4   :       d   e   s   t   r   o
0102700    y       k   e   y   w   o   r   d       t   a   b   l   e  \r
0102720   \r   /   /       i   n   s   t   a   n   c   e       d   a   t
0102740    a  \r   z   o   n   e       w   o   r   d  \t  \t   /   /    
0102760    z   o   n   e       f   r   o   m       w   h   i   c   h    
0103000    K   T       a   l   l   o   c   a   t   e   d  \r   n   u   m
0103020    E   n   t   r   i   e   s       w   o   r   d  \t  \t   /   /
0103040        p   r   e   s   e   n   t       n   u   m   b   e   r    
0103060    o   f       e   n   t   r   i   e   s       i   n       t   a
0103100    b   l   e  \r   m   a   x   E   n   t   r   i   e   s       w
0103120    o   r   d  \t  \t   /   /       m   a   x   i   m   u   m    
0103140    n   u   m   b 376  \0 321 361  \b   e   r       o   f       e
0103160    n   t   r   i   e   s  \r   l   e   n   K   T   E       w   o
0103200    r   d  \t  \t   /   /       l   e   n   g   t   h       o   f
0103220        e   a   c   h       k   e   y   w   o   r   d       t   a
0103240    b   l   e       e   n   t   r   y  \r   k   t   e   ^   0   ,
0103260    0       @   K   T   E  \t  \t   /   /       f   i   r   s   t
0103300        e   n   t   r   y       s   t   a   r   t   s       h   e
0103320    r   e  \r   ]  \r  \r   m   a   n   i   f   e   s   t  \r   [
0103340   \r   /   /       e   r   r   o   r       c   o   d   e   s  \r
0103360    e   c   K   e   y   A   l   r   e   a   d   y   E   x   i   s
0103400    t   s       =       2   8   2   5  \r   e   c   K   e   y   T
0103420    a   b   l   e   F   u   l   l       =       2   8   2   6  \r
0103440    e   c   K   e   y   D   o   e   s   n   t   E   x   i   s   t
0103460        =       2   8   2   7  \r   ]  \r 377  \0  \0   K   e   y
0103500    w   o   r   d   .   b   c   p   l  \0 373 231  \n 361 362  \0
0103520   \0 376 001  \0 331 217   /   /       K   e   y   w   o   r   d
0103540    .   b   c   p   l       -   -       m   a   i   n       p   o
0103560    r   t   i   o   n       o   f       k   e   y   w   o   r   d
0103600        t   a   b   l   e       p   a   c   k   a   g   e   ,  \r
0103620    /   /  \t  \t   c   o   n   t   a   i   n   i   n   g       p
0103640    r   i   m   i   t   i   v   e   s       t   o       l   o   o
0103660    k       u   p       k   e   y   w   o   r   d   s       a   n
0103700    d       t   o  \r   /   /  \t  \t   e   n   u   m   e   r   a
0103720    t   e       a   n   d       d   e   s   t   r   o   y       k
0103740    e   y   w   o   r   d       t   a   b   l   e   s   .  \r   /
0103760    /       C   o   p   y   r   i   g   h   t       X   e   r   o
0104000    x       C   o   r   p   o   r   a   t   i   o   n       1   9
0104020    7   9   ,       1   9   8   2  \r  \r   /   /       L   a   s
0104040    t       m   o   d   i   f   i   e   d       M   a   y       1
0104060    3   ,       1   9   8   2           3   :   5   5       P   M
0104100        b   y       T   a   f   t  \r  \r   g   e   t       "   K
0104120    e   y   w   o   r   d 376 001  \0   [ 241   .   d   e   c   l
0104140    "  \r  \r   e   x   t   e   r   n   a   l  \r   [  \r   /   /
0104160        o   u   t   g   o   i   n   g       p   r   o   c   e   d
0104200    u   r   e   s  \r   K   T   L   o   o   k   u   p   ;       K
0104220    T   E   n   u   m   e   r   a   t   e   ;       K   T   D   e
0104240    s   t   r   o   y   ;       B   i   n   a   r   y   S   e   a
0104260    r   c   h   ;       C   o   m   p   a   r   e   K   e   y  \r
0104300   \r   /   /       i   n   c   o   m   i   n   g       p   r   o
0104320    c   e   d   u   r   e   s  \r   S   t   r   i   n   g   C   o
0104340    m   p   a   r   e   ;       F   r   e   e   ;       M   a   x
0104360   \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -
0104400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0104500    -  \r   l   e   t       K   T   L   o   o   k   u   p   (   k
0104520    t   ,       k   e   y   ,       l   v   T 376 001  \0   V 343
0104540    a   b   l   e   K   e   y   ;       n   u   m   a   r   g   s
0104560        n   a   )       =       v   a   l   o   f  \r   /   /   -
0104600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0104700    -   -   -   -   -   -   -   -   -   -  \r   /   /       L   o
0104720    o   k   s       u   p       k   e   y       i   n       k   t
0104740        a   n   d       r   e   t   u   r   n   s       a       p
0104760    o   i   n   t   e   r       t   o       t   h   e       c   o
0105000    r   r   e   s   p   o   n   d   i   n   g       e   n   t   r
0105020    y  \r   /   /       i   f       i   t       i   s       f   o
0105040    u   n   d   ,       z   e   r   o       i   f       n   o   t
0105060        f   o   u   n   d   .           I   f       t   h   e    
0105100    k   e   y       i   s       a   n       i   n   i   t   i   a
0105120    l       s   u   b   s   t   r   i   n   g       o   f  \r   /
0105140  376 001  \0   g 005   /       e   x   a   c   t   l   y       o
0105160    n   e       e   n   t   r   y       i   t       i   s       c
0105200    o   n   s   i   d   e   r   e   d       f   o   u   n   d   ,
0105220        b   u   t       i   f       i   t       i   s       a   n
0105240        i   n   i   t   i   a   l       s   u   b   s   t   r   i
0105260    n   g  \r   /   /       o   f       m   o   r   e       t   h
0105300    a   n       o   n   e       e   n   t   r   y       i   t    
0105320    i   s       c   o   n   s   i   d   e   r   e   d       n   o
0105340    t       f   o   u   n   d   .  \r   /   /       I   f       l
0105360    v   T   a   b   l   e   K   e   y       i   s       p   r   o
0105400    v   i   d   e   d   ,       a       p   o   i   n   t   e   r
0105420        t   o       t   h   e       k   e   y   w   o   r   d    
0105440    s   t   r   i   n   g       i   n       t   h   e       m   a
0105460    t   c   h   i   n   g  \r   /   /       e   n   t   r   y    
0105500    i   s       s   t   o   r   e   d       i   n       @   l   v
0105520    T   a   b   l   e   K   e   y       i   f       t   h   e    
0105540    k   e   y       i 376 001  \0 300 231   s       e   i   t   h
0105560    e   r       f   o   u   n   d       o   r       a   m   b   i
0105600    g   u   o   u   s   .  \r   /   /       T   o       c   l   a
0105620    r   i   f   y   :  \r   /   /               C   o   n   d   i
0105640    t   i   o   n   :  \t  \t  \t           r   e   t   u   r   n
0105660    s   :  \t           @   l   v   T   a   b   l   e   K   e   y
0105700    :  \r   /   /       E   x   a   c   t       m   a   t   c   h
0105720   \t  \t  \t   e   n   t   r   y       p   o   i   n   t   e   r
0105740   \t   m   a   t   c   h   i   n   g       t   a   b   l   e    
0105760    k   e   y  \r   /   /       U   n   i   q   u   e       i   n
0106000    i   t   i   a   l       s   u   b   s   t   r   i   n   g  \t
0106020    e   n   t   r   y       p   o   i   n   t   e   r  \t   m   a
0106040    t   c   h   i   n   g       t   a   b   l   e       k   e   y
0106060   \r   /   /       A   m   b   i   g   u   o   u   s       i   n
0106100    i   t   i   a   l       s   u   b   s   t   r   i   n   g  \t
0106120    z   e   r   o  \t  \t   f   i   r   s   t       m   a   t   c
0106140    h   i   n   g       t   a   b   l   e 376 001  \0 335 022    
0106160    k   e   y  \r   /   /       N   o       m   a   t   c   h  \t
0106200   \t  \t   z   e   r   o  \t  \t   z   e   r   o  \r   [  \r   i
0106220    f       n   a       l   s       3       t   h   e   n       l
0106240    v   T   a   b   l   e   K   e   y       =       l   v       n
0106260    a  \r   l   e   t       n   u   m   E   n   t   r   i   e   s
0106300        =       k   t   >   >   K   T   .   n   u   m   E   n   t
0106320    r   i   e   s  \r   l   e   t       r       =       B   i   n
0106340    a   r   y   S   e   a   r   c   h   (   k   e   y   ,       k
0106360    t   ,       n   u   m   E   n   t   r   i   e   s   ,       C
0106400    o   m   p   a   r   e   K   e   y   )  \r   l   e   t       i
0106420        =       M   a   x   (   r   ,       n   o   t       r   )
0106440            /   /       i   n   d   e   x       o   f       s   m
0106460    a   l   l   e   s   t       e   n   t   r   y       g   e    
0106500    k   e   y  \r   l   e   t       k   t   e       =       l   v
0106520        k   t   >   >   K   T   .   k   t   e   ^   0       +    
0106540    i       *       k   t   >   >   K   T   .   l   e   n   K 376
0106560  001  \0 366   W   T   E  \r   l   e   t       e   n   t   r   y
0106600        =       l   v       k   t   e   >   >   K   T   E   .   e
0106620    n   t   r   y  \r   i   f       r       l   s       0       t
0106640    h   e   n  \r               [           /   /       n   o   t
0106660        e   x   a   c   t       m   a   t   c   h   ,       t   e
0106700    s   t       f   o   r       s   u   b   s   t   r   i   n   g
0106720        m   a   t   c   h  \r               i   f       i       g
0106740    e       n   u   m   E   n   t   r   i   e   s       %       S
0106760    t   r   i   n   g   C   o   m   p   a   r   e   (   k   e   y
0107000    ,       k   t   e   >   >   K   T   E   .   k   e   y   )    
0107020    n   e       -   2       t   h   e   n  \r                    
0107040        [       @   l   v   T   a   b   l   e   K   e   y       =
0107060        0   ;       r   e   s   u   l   t   i   s       0       ]
0107100            /   /       n   o   t       s   u   b   s   t   r   i
0107120    n   g       m   a   t   c   h  \r               i   f       i
0107140    +   1       l   s       n   u   m   E   n   t   r   i   e   s
0107160        &       C 376 001  \0 216   i   o   m   p   a   r   e   K
0107200    e   y   (   k   e   y   ,       k   t   ,       i   +   1   )
0107220        e   q       -   2       t   h   e   n  \r                
0107240            e   n   t   r   y       =       0           /   /    
0107260    a   m   b   i   g   u   o   u   s  \r               ]  \r   @
0107300    l   v   T   a   b   l   e   K   e   y       =       k   t   e
0107320    >   >   K   T   E   .   k   e   y  \r   r   e   s   u   l   t
0107340    i   s       e   n   t   r   y  \r   ]  \r  \r   /   /   -   -
0107360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0107460    -   -   -   -   -   -   -   -   -  \r   a   n   d       K   T
0107500    E   n   u   m   e   r   a   t   e   (   k   t   ,       P   r
0107520    o   c   ,       a   r   g   )       b   e  \r   /   /   -   -
0107540    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0107560    -   -   -   -   -   -   -   -   - 376 001  \0 257 275   -   -
0107600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0107640    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   /
0107660    /       C   a   l   l   s       P   r   o   c   (   e   n   t
0107700    r   y   ,       k   t   ,       k   e   y   w   o   r   d   ,
0107720        a   r   g   )       f   o   r       e   a   c   h       e
0107740    n   t   r   y       i   n       t   h   e       t   a   b   l
0107760    e   .  \r   /   /       P   r   o   c       m   a   y       c
0110000    h   a   n   g   e       t   h   e       e   n   t   r   y    
0110020    b   u   t       m   u   s   t       n   o   t       i   n   s
0110040    e   r   t       o   r       d   e   l   e   t   e       k   e
0110060    y   s   .  \r   [  \r   l   e   t       k   t   e       =    
0110100    l   v       k   t   >   >   K   T   .   k   t   e   ^   0  \r
0110120    l   e   t       e   n   d   K   T   E       =       k   t   e
0110140        +       k   t   >   >   K   T   .   n   u   m   E   n   t
0110160    r   i   e   s       *       k   t   >   >   K   T   . 376 001
0110200   \0 243 263   l   e   n   K   T   E  \r   u   n   t   i   l    
0110220    k   t   e       e   q       e   n   d   K   T   E       d   o
0110240   \r               [  \r               P   r   o   c   (   l   v
0110260        k   t   e   >   >   K   T   E   .   e   n   t   r   y   ,
0110300        k   t   ,       k   t   e   >   >   K   T   E   .   k   e
0110320    y   ,       a   r   g   )  \r               k   t   e       =
0110340        k   t   e       +       k   t   >   >   K   T   .   l   e
0110360    n   K   T   E  \r               ]  \r   ]  \r  \f  \r   /   /
0110400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0110500    -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d    
0110520    K   T   D   e   s   t   r   o   y   (   k   t   )       b   e
0110540   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0110560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0110600    -   -   - 376 001  \0 305   /   -   -   -   -   -   -   -   -
0110620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0110660    -   -   -  \r   /   /       D   e   s   t   r   o   y   s    
0110700    k   e   y   w   o   r   d       t   a   b   l   e  \r   [  \r
0110720    K   T   E   n   u   m   e   r   a   t   e   (   k   t   ,    
0110740    F   r   e   e   K   e   y   )  \r   F   r   e   e   (   k   t
0110760    >   >   K   T   .   z   o   n   e   ,       k   t   )  \r   ]
0111000   \r  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0111020    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0111100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0111120    a   n   d       F   r   e   e   K   e   y   (   e   n   t   r
0111140    y   ,       k   t   ,       k   e   y   w   o   r   d   ,    
0111160    n   i   l   )       b   e       F   r   e   e   (   k   t   >
0111200    >   K   T   .   z   o   n   e 376 001  \0   a 334   ,       k
0111220    e   y   w   o   r   d   )  \r   /   /   -   -   -   -   -   -
0111240    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0111340    -   -   -   -   -  \r  \r   /   /   -   -   -   -   -   -   -
0111360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0111460    -   -   -   -  \r   a   n   d       C   o   m   p   a   r   e
0111500    K   e   y   (   k   e   y   ,       k   t   ,       i   )    
0111520    =  \r               S   t   r   i   n   g   C   o   m   p   a
0111540    r   e   (   k   e   y   ,       (   l   v       k   t   >   >
0111560    K   T   .   k   t   e   ^   0       +       i       *       k
0111600    t   >   >   K   T   .   l   e   n   K   T   E   ) 376 001  \0
0111620  323   s   >   >   K   T   E   .   k   e   y   )  \r   /   /   -
0111640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0111740    -   -   -   -   -   -   -   -   -   -  \r   /   /       C   o
0111760    m   p   a   r   e   s       k   e   y       a   g   a   i   n
0112000    s   t       t   h   e       k   t       e   n   t   r   y    
0112020    w   h   o   s   e       i   n   d   e   x       i   s       i
0112040    .           R   e   t   u   r   n   s       a       v   a   l
0112060    u   e  \r   /   /       d   e   s   c   r   i   b   i   n   g
0112100        t   h   e       o   u   t   c   o   m   e   :  \r   /   /
0112120        -   2       t   h   e       k   e   y       i   s       a
0112140    n       i   n   i   t   i   a   l       s   u   b   s   t   r
0112160    i   n   g       o   f       t   h   e       e   n   t   r   y
0112200   \r   /   /       -   1       t   h   e       k   e   y       i
0112220    s     376 001  \0 036 277   "   l   e   s   s       t   h   a
0112240    n   "       t   h   e       e   n   t   r   y       b   u   t
0112260        n   o   t       a   n       i   n   i   t   i   a   l    
0112300    s   u   b   s   t   r   i   n   g  \r   /   /           0    
0112320    t   h   e       k   e   y       i   s       "   e   q   u   a
0112340    l       t   o   "       t   h   e       e   n   t   r   y  \r
0112360    /   /           1       t   h   e       k   e   y       i   s
0112400        "   g   r   e   a   t   e   r       t   h   a   n   "    
0112420    t   h   e       e   n   t   r   y  \r  \r   /   /   -   -   -
0112440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0112540    -   -   -   -   -   -   -   -  \r   a   n   d       B   i   n
0112560    a   r   y   S   e   a   r   c   h   (   k   e   y   ,       t
0112600    b   l   ,       l   e   n   T   b   l   ,       C   o   m   p
0112620    a   r   e   )       =     376 001  \0 322   a   v   a   l   o
0112640    f  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0112660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0112740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0112760    /   /       S   e   a   r   c   h   e   s       f   o   r    
0113000    k   e   y       i   n       t   h   e       s   o   r   t   e
0113020    d       t   a   b   l   e       t   b   l   ,       w   h   i
0113040    c   h       h   a   s       e   n   t   r   i   e   s       n
0113060    u   m   b   e   r   e   d  \r   /   /       z   e   r   o    
0113100    t   o       l   e   n   T   b   l   -   1   .           T   h
0113120    e       c   o   m   p   a   r   i   s   o   n       p   r   o
0113140    c   e   d   u   r   e       C   o   m   p   a   r   e   (   k
0113160    e   y   ,       t   b   l   ,       i   )       i   s  \r   /
0113200    /       e   x   p   e   c   t   e   d       t   o       c   o
0113220    m   p   a   r   e       k   e   y       a   g 376 001  \0   ;
0113240  006   a   i   n   s   t       e   n   t   r   y       i       i
0113260    n       t   h   e       t   a   b   l   e       a   n   d    
0113300    r   e   t   u   r   n  \r   /   /       a       n   e   g   a
0113320    t   i   v   e       n   u   m   b   e   r       i   f       t
0113340    h   e       k   e   y       i   s       "   l   e   s   s    
0113360    t   h   a   n   "       t   h   e       e   n   t   r   y   ,
0113400        z   e   r   o       i   f       "   e   q   u   a   l   "
0113420    ,  \r   /   /       o   r       a       p   o   s   i   t   i
0113440    v   e       n   u   m   b   e   r       i   f       "   g   r
0113460    e   a   t   e   r       t   h   a   n   "   .  \r   /   /    
0113500    I   f       t   h   e       r   e   q   u   e   s   t   e   d
0113520        k   e   y       i   s       f   o   u   n   d   ,       B
0113540    i   n   a   r   y   S   e   a   r   c   h       r   e   t   u
0113560    r   n   s       t   h   e       i   n   d   e   x       o   f
0113600        t   h   e  \r   /   /       m   a   t   c   h   i   n   g
0113620        e   n   t   r   y       i   n       t   h   e       t   a
0113640    b 376 001  \0 303   $   l   e   .           I   f       n   o
0113660    t       f   o   u   n   d   ,       r   e   t   u   r   n   s
0113700        -   i   -   1       (   =       n   o   t       i   )   ,
0113720   \r   /   /       w   h   e   r   e       i       i   s       t
0113740    h   e       i   n   d   e   x       o   f       t   h   e    
0113760    e   n   t   r   y       b   e   f   o   r   e       w   h   i
0114000    c   h       t   h   e       k   e   y       s   h   o   u   l
0114020    d       b   e       i   n   s   e   r   t   e   d   .  \r   [
0114040   \r   l   e   t       l   o   w   ,       h   i   g   h       =
0114060        0   ,       l   e   n   T   b   l   -   1  \r            
0114100    [  \r               i   f       h   i   g   h       l   s    
0114120    l   o   w       r   e   s   u   l   t   i   s       n   o   t
0114140        l   o   w  \r               l   e   t       p   r   o   b
0114160    e       =       (   l   o   w   +   h   i   g   h   )       r
0114200    s   h   i   f   t       1  \r               l   e   t       r
0114220        =       C   o   m   p   a   r   e   (   k   e   y   ,    
0114240    t   b   l   ,       p 376  \0   s   #   }   r   o   b   e   )
0114260   \r               i   f       r       e   q       0       r   e
0114300    s   u   l   t   i   s       p   r   o   b   e  \r            
0114320    t   e   s   t       r       l   s       0  \r                
0114340            i   f   s   o       h   i   g   h       =       p   r
0114360    o   b   e   -   1  \r                           i   f   n   o
0114400    t       l   o   w       =       p   r   o   b   e   +   1  \r
0114420                ]       r   e   p   e   a   t  \r   ]  \r 377  \0
0114440   \0   K   e   y   w   o   r   d   I   n   i   t   .   b   c   p
0114460    l  \0 373 231  \t 276  \t  \0  \0 376 001  \0   7 265   /   /
0114500        K   e   y   w   o   r   d   I   n   i   t   .   b   c   p
0114520    l       -   -       i   n   i   t   i   a   l   i   z   a   t
0114540    i   o   n       f   o   r       k   e   y   w   o   r   d    
0114560    t   a   b   l   e       p   a   c   k   a   g   e   ,  \r   /
0114600    /  \t  \t   c   o   n   t   a   i   n   i   n   g       p   r
0114620    i   m   i   t   i   v   e   s       f   o   r       c   r   e
0114640    a   t   i   n   g       k   e   y   w   o   r   d       t   a
0114660    b   l   e   s  \r   /   /  \t  \t   a   n   d       i   n   s
0114700    e   r   t   i   n   g       a   n   d       d   e   l   e   t
0114720    i   n   g       k   e   y   w   o   r   d       t   a   b   l
0114740    e       e   n   t   r   i   e   s   .  \r   /   /       C   o
0114760    p   y   r   i   g   h   t       X   e   r   o   x       C   o
0115000    r   p   o   r   a   t   i   o   n       1   9   7   9   ,    
0115020    1   9   8   2  \r  \r   /   /       L   a   s   t       m   o
0115040    d   i   f   i   e   d       M   a   y       1   2   ,       1
0115060    9   8   2           5   :   2   4       P   M       b 376 001
0115100   \0   Y 311   y       T   a   f   t  \r  \r   g   e   t       "
0115120    K   e   y   w   o   r   d   .   d   e   c   l   "  \r  \r   e
0115140    x   t   e   r   n   a   l  \r   [  \r   /   /       o   u   t
0115160    g   o   i   n   g       p   r   o   c   e   d   u   r   e   s
0115200   \r   C   r   e   a   t   e   K   e   y   w   o   r   d   T   a
0115220    b   l   e   ;       D   e   s   t   r   o   y   K   e   y   w
0115240    o   r   d   T   a   b   l   e   ;       E   n   u   m   e   r
0115260    a   t   e   K   e   y   w   o   r   d   T   a   b   l   e  \r
0115300    L   o   o   k   u   p   K   e   y   w   o   r   d   ;       I
0115320    n   s   e   r   t   K   e   y   w   o   r   d   ;       D   e
0115340    l   e   t   e   K   e   y   w   o   r   d  \r  \r   /   /    
0115360    f   o   r       O   E   P       d   e   c   l   a   r   a   t
0115400    i   o   n       o   n   l   y  \r   K   T   I   n   s   e   r
0115420    t   ;       K   T   D   e   l   e   t   e  \r  \r   /   /    
0115440    i   n   c   o   m   i   n   g       p   r   o   c   e   d   u
0115460    r   e   s  \r   K   T   L   o   o   k   u   p   ;       K   T
0115500    E   n   u 376 001  \0   < 017   m   e   r   a   t   e   ;    
0115520    K   T   D   e   s   t   r   o   y  \r   B   i   n   a   r   y
0115540    S   e   a   r   c   h   ;       C   o   m   p   a   r   e   K
0115560    e   y   ;       E   x   t   r   a   c   t   S   u   b   s   t
0115600    r   i   n   g  \r   D   e   f   a   u   l   t   A   r   g   s
0115620    ;       A   l   l   o   c   a   t   e   ;       F   r   e   e
0115640    ;       M   o   v   e   B   l   o   c   k   ;       Z   e   r
0115660    o   ;       S   y   s   E   r   r  \r   C   a   l   l   0   ;
0115700        C   a   l   l   1   ;       C   a   l   l   2   ;       C
0115720    a   l   l   3   ;       C   a   l   l   4  \r  \r   /   /    
0115740    i   n   c   o   m   i   n   g       s   t   a   t   i   c   s
0115760   \r   s   y   s   Z   o   n   e  \r   ]  \r  \r   s   t   a   t
0116000    i   c  \r   [  \r   D   e   s   t   r   o   y   K   e   y   w
0116020    o   r   d   T   a   b   l   e   ;       E   n   u   m   e   r
0116040    a   t   e   K   e   y   w   o   r   d   T   a   b   l   e  \r
0116060    L   o   o   k   u   p   K   e   y   w   o   r   d   ;       I
0116100    n   s   e   r   t   K   e   y 376 001  \0 377   (   w   o   r
0116120    d   ;       D   e   l   e   t   e   K   e   y   w   o   r   d
0116140   \r   ]  \r  \r   s   t   r   u   c   t   u   r   e       S   t
0116160    r   i   n   g   :       [       l   e   n   g   t   h       b
0116200    y   t   e   ;       c   h   a   r   ^   1   ,   2   5   5    
0116220    b   y   t   e       ]  \r  \r   /   /   -   -   -   -   -   -
0116240    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0116340    -   -   -   -   -  \r   l   e   t       C   r   e   a   t   e
0116360    K   e   y   w   o   r   d   T   a   b   l   e   (   m   a   x
0116400    E   n   t   r   i   e   s   ,       l   e   n   E   n   t   r
0116420    y   ,       z   o   n   e   ;       n   u   m   a   r   g   s
0116440        n   a   )       =       v   a   l   o   f  \r   /   /   -
0116460    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0116500    -   -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0
0116520  353   j   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0116540    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0116560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0116600    /   /       C   r   e   a   t   e   s       a   n   d       r
0116620    e   t   u   r   n   s       a       k   e   y   w   o   r   d
0116640        t   a   b   l   e       c   a   p   a   b   l   e       o
0116660    f       h   o   l   d   i   n   g       a       m   a   x   i
0116700    m   u   m       o   f  \r   /   /       m   a   x   E   n   t
0116720    r   i   e   s       e   n   t   r   i   e   s       o   f    
0116740    l   e   n   E   n   t   r   y       w   o   r   d   s       e
0116760    a   c   h  \r   [  \r   D   e   f   a   u   l   t   A   r   g
0117000    s   (   l   v       n   a   ,       -   1   ,       1   ,    
0117020    s   y   s   Z   o   n   e   )  \r   l   e   t       l   e   n
0117040    K   T   E       =       o   f   f   s   e   t       K   T   E
0117060    .   e   n   t   r   y   /   1   6       +       l   e   n   E
0117100    n   t   r   y  \r   l   e   t       k   t       =       A   l
0117120    l   o 376 001  \0 204 220   c   a   t   e   (   z   o   n   e
0117140    ,       (   o   f   f   s   e   t       K   T   .   k   t   e
0117160    ^   0   )   /   1   6       +       m   a   x   E   n   t   r
0117200    i   e   s   *   l   e   n   K   T   E   )  \r   k   t   >   >
0117220    K   T   .   I   n   s   e   r   t       =       K   T   I   n
0117240    s   e   r   t  \r   k   t   >   >   K   T   .   D   e   l   e
0117260    t   e       =       K   T   D   e   l   e   t   e  \r   k   t
0117300    >   >   K   T   .   L   o   o   k   u   p       =       K   T
0117320    L   o   o   k   u   p  \r   k   t   >   >   K   T   .   E   n
0117340    u   m   e   r   a   t   e       =       K   T   E   n   u   m
0117360    e   r   a   t   e  \r   k   t   >   >   K   T   .   D   e   s
0117400    t   r   o   y       =       K   T   D   e   s   t   r   o   y
0117420   \r   k   t   >   >   K   T   .   z   o   n   e       =       z
0117440    o   n   e  \r   k   t   >   >   K   T   .   n   u   m   E   n
0117460    t   r   i   e   s       =       0  \r   k   t   >   >   K   T
0117500    .   m   a   x   E   n   t   r   i   e   s       =       m   a
0117520    x   E   n   t   r   i   e 376 001  \0   ^ 246   s  \r   k   t
0117540    >   >   K   T   .   l   e   n   K   T   E       =       l   e
0117560    n   K   T   E  \r   I   n   s   e   r   t   K   e   y   w   o
0117600    r   d       =       C   a   l   l   0  \r   D   e   l   e   t
0117620    e   K   e   y   w   o   r   d       =       C   a   l   l   1
0117640   \r   L   o   o   k   u   p   K   e   y   w   o   r   d       =
0117660        C   a   l   l   2  \r   E   n   u   m   e   r   a   t   e
0117700    K   e   y   w   o   r   d   T   a   b   l   e       =       C
0117720    a   l   l   3  \r   D   e   s   t   r   o   y   K   e   y   w
0117740    o   r   d   T   a   b   l   e       =       C   a   l   l   4
0117760   \r   r   e   s   u   l   t   i   s       k   t  \r   ]  \r  \f
0120000   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0120020    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0120100    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a
0120120    n   d       K   T   I   n   s   e   r   t   ( 376 001  \0   ]
0120140    p   k   t   ,       k   e   y   )       =       v   a   l   o
0120160    f  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0120200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0120260    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0120300    /   /       I   n   s   e   r   t   s       a       c   o   p
0120320    y       o   f       t   h   e       s   u   p   p   l   i   e
0120340    d       k   e   y       s   t   r   i   n   g       i   n   t
0120360    o       t   h   e       t   a   b   l   e       k   t  \r   /
0120400    /       a   n   d       r   e   t   u   r   n   s       a    
0120420    p   o   i   n   t   e   r       t   o       t   h   e       n
0120440    e   w       e   n   t   r   y       (   w   h   i   c   h    
0120460    h   a   s       b   e   e   n       z   e   r   o   e   d   )
0120500    .  \r   [  \r   l   e   t       i       =       n   o   t    
0120520    B   i   n   a   r   y   S   e   a   r   c   h   (   k   e   y
0120540    , 376 001  \0 361   #       k   t   ,       k   t   >   >   K
0120560    T   .   n   u   m   E   n   t   r   i   e   s   ,       C   o
0120600    m   p   a   r   e   K   e   y   )  \r   i   f       i       l
0120620    s       0       t   h   e   n       S   y   s   E   r   r   (
0120640    k   t   ,       e   c   K   e   y   A   l   r   e   a   d   y
0120660    E   x   i   s   t   s   )  \r   i   f       k   t   >   >   K
0120700    T   .   n   u   m   E   n   t   r   i   e   s       e   q    
0120720    k   t   >   >   K   T   .   m   a   x   E   n   t   r   i   e
0120740    s       t   h   e   n       S   y   s   E   r   r   (   k   t
0120760    ,       e   c   K   e   y   T   a   b   l   e   F   u   l   l
0121000    )  \r   l   e   t       k   t   e       =       G   e   t   K
0121020    T   E   (   k   t   ,       i   )  \r   l   e   t       p    
0121040    =       G   e   t   K   T   E   (   k   t   ,       k   t   >
0121060    >   K   T   .   n   u   m   E   n   t   r   i   e   s   )   -
0121100    1  \r   w   h   i   l   e       p       g   e       k   t   e
0121120        d   o       [       p   !   (   k   t   >   >   K   T   .
0121140    l   e   n   K   T   E 376 001  \0 346 005   )       =       p
0121160    !   0   ;       p       =       p   -   1       ]  \r   k   t
0121200    >   >   K   T   .   n   u   m   E   n   t   r   i   e   s    
0121220    =       k   t   >   >   K   T   .   n   u   m   E   n   t   r
0121240    i   e   s   +   1  \r   Z   e   r   o   (   k   t   e   ,    
0121260    k   t   >   >   K   T   .   l   e   n   K   T   E   )  \r   k
0121300    t   e   >   >   K   T   E   .   k   e   y       =       E   x
0121320    t   r   a   c   t   S   u   b   s   t   r   i   n   g   (   k
0121340    e   y   ,       0   ,       0   ,       k   t   >   >   K   T
0121360    .   z   o   n   e   )  \r   r   e   s   u   l   t   i   s    
0121400    l   v       k   t   e   >   >   K   T   E   .   e   n   t   r
0121420    y  \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -   -
0121440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0121540    -   -  \r   a   n   d       K   T   D   e 376 001  \0 211   m
0121560    l   e   t   e   (   k   t   ,       k   e   y   )       b   e
0121600   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0121620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0121700    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   /
0121720    /       D   e   l   e   t   e   s       t   h   e       e   n
0121740    t   r   y       m   a   t   c   h   i   n   g       k   e   y
0121760        f   r   o   m       t   h   e       t   a   b   l   e   .
0122000   \r   [  \r   l   e   t       i       =       B   i   n   a   r
0122020    y   S   e   a   r   c   h   (   k   e   y   ,       k   t   ,
0122040        k   t   >   >   K   T   .   n   u   m   E   n   t   r   i
0122060    e   s   ,       C   o   m   p   a   r   e   K   e   y   )  \r
0122100    i   f       i       l   s       0       t   h   e   n       S
0122120    y   s   E   r   r   (   k   t   ,       e   c   K   e   y   D
0122140    o   e   s   n   t   E   x   i   s   t   )  \r   l   e   t    
0122160  376 001  \0 351 025   k   t   e       =       G   e   t   K   T
0122200    E   (   k   t   ,       i   )  \r   F   r   e   e   (   k   t
0122220    >   >   K   T   .   z   o   n   e   ,       k   t   e   >   >
0122240    K   T   E   .   k   e   y   )  \r   k   t   >   >   K   T   .
0122260    n   u   m   E   n   t   r   i   e   s       =       k   t   >
0122300    >   K   T   .   n   u   m   E   n   t   r   i   e   s   -   1
0122320   \r   /   /       t   h   i   s       m   a   y       m   o   v
0122340    e       z   e   r   o       w   o   r   d   s   ,       b   u
0122360    t       t   h   a   t   '   s       s   u   p   p   o   s   e
0122400    d       t   o       b   e       o   k  \r   M   o   v   e   B
0122420    l   o   c   k   (   k   t   e   ,       k   t   e   +   k   t
0122440    >   >   K   T   .   l   e   n   K   T   E   ,       (   k   t
0122460    >   >   K   T   .   n   u   m   E   n   t   r   i   e   s   -
0122500    i   )   *   k   t   >   >   K   T   .   l   e   n   K   T   E
0122520    )  \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -   -
0122540    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0122560    -   -   -   -   - 376  \0 264   X   J   -   -   -   -   -   -
0122600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0122640    -   -   -   -   -   -   -  \r   a   n   d       G   e   t   K
0122660    T   E   (   k   t   ,       i   )       =       l   v       k
0122700    t   >   >   K   T   .   k   t   e   ^   0       +       i    
0122720    *       k   t   >   >   K   T   .   l   e   n   K   T   E  \r
0122740    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0122760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0123040    -   -   -   -   -   -   -   -   -   -   -   -   -  \r 377  \0
0123060   \0   K   e   y   w   o   r   d   O   E   P   .   b   c   p   l
0123100   \0 373 224 345 357   t  \0  \0 376 001  \0 221   V   /   /    
0123120    K   e   y   w   o   r   d   O   E   P   .   b   c   p   l    
0123140    -   -       o   v   e   r   l   a   y       e   n   t   r   y
0123160        p   o   i   n   t       d   e   c   l   a   r   a   t   i
0123200    o   n   s       f   o   r       k   e   y   w   o   r   d    
0123220    p   a   c   k   a   g   e  \r   /   /       C   o   p   y   r
0123240    i   g   h   t       X   e   r   o   x       C   o   r   p   o
0123260    r   a   t   i   o   n       1   9   7   9  \r  \r   /   /  \t
0123300    L   a   s   t       m   o   d   i   f   i   e   d       O   c
0123320    t   o   b   e   r       7   ,       1   9   7   7           2
0123340    :   5   4       P   M  \r  \r   e   x   t   e   r   n   a   l
0123360   \r   [  \r   /   /   o   u   t   g   o   i   n   g       p   r
0123400    o   c   e   d   u   r   e   s  \r   I   n   i   t   K   e   y
0123420    w   o   r   d   O   E   P  \r  \r   /   /   i   n   c   o   m
0123440    i   n   g       p   r   o   c   e   d   u   r   e   s  \r   D
0123460    e   c   l   a   r   e   O   E   P   ;       K   T   I   n   s
0123500    e   r   t   ;       K   T   D   e   l   e   t   e 376 001  \0
0123520    p 372   ;       K   T   L   o   o   k   u   p   ;       K   T
0123540    E   n   u   m   e   r   a   t   e   ;       K   T   D   e   s
0123560    t   r   o   y   ;       C   o   m   p   a   r   e   K   e   y
0123600   \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -
0123620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0123720    -  \r   l   e   t       I   n   i   t   K   e   y   w   o   r
0123740    d   O   E   P   (   o   e   v   )       b   e  \r   /   /   -
0123760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0124060    -   -   -   -   -   -   -   -   -   -  \r               D   e
0124100    c   l   a   r   e   O   E   P   (   o   e   v   ,       l   v
0124120        K 376  \0   T 024  \t   T   I   n   s   e   r   t   ,    
0124140    l   v       K   T   D   e   l   e   t   e   ,       l   v    
0124160    K   T   L   o   o   k   u   p   ,  \r                   l   v
0124200        K   T   E   n   u   m   e   r   a   t   e   ,       l   v
0124220        K   T   D   e   s   t   r   o   y   ,       l   v       C
0124240    o   m   p   a   r   e   K   e   y   )  \r 377  \0  \0   C   m
0124260    d   S   c   a   n   T   e   s   t   .   b   c   p   l  \0 373
0124300  224 345 357   t  \0  \0 376 001  \0   & 231   /   /   C   m   d
0124320    S   c   a   n   T   e   s   t   .   b   c   p   l  \r   /   /
0124340        C   o   p   y   r   i   g   h   t       X   e   r   o   x
0124360        C   o   r   p   o   r   a   t   i   o   n       1   9   7
0124400    9  \r  \r   g   e   t       "   C   m   d   S   c   a   n   .
0124420    d   e   c   l   "  \r  \r   e   x   t   e   r   n   a   l  \r
0124440    [  \r   I   n   i   t   C   m   d   ;       B   e   g   i   n
0124460    D   e   f   a   u   l   t   P   h   r   a   s   e   ;       E
0124500    n   d   D   e   f   a   u   l   t   P   h   r   a   s   e   ;
0124520        D   e   f   a   u   l   t   P   h   r   a   s   e  \r   E
0124540    n   a   b   l   e   C   a   t   c   h   ;       E   n   d   C
0124560    a   t   c   h   ;       G   e   t   N   u   m   b   e   r   ;
0124600        G   e   t   F   i   l   e   ;       G   e   t   S   t   r
0124620    i   n   g   ;       C   o   n   f   i   r   m  \r   G   e   t
0124640    s   ;       P   u   t   s   ;       C   l   o   s   e   s   ;
0124660        E   n   d   o   f   s   ;       W   s   s   ;       W   n
0124700    s   ;       F   r   e   e   ;       O   p 376 001  \0 344   y
0124720    e   n   F   i   l   e  \r   T   r   u   e   P   r   e   d   i
0124740    c   a   t   e   ;       F   a   l   s   e   P   r   e   d   i
0124760    c   a   t   e   ;       T   e   r   m   i   n   a   t   i   n
0125000    g   C   h   a   r   ;       E   r   a   s   e   P   h   r   a
0125020    s   e   ;       G   e   t   P   h   r   a   s   e  \r   C   r
0125040    e   a   t   e   K   e   y   w   o   r   d   T   a   b   l   e
0125060    ;       D   e   s   t   r   o   y   K   e   y   w   o   r   d
0125100    T   a   b   l   e   ;       I   n   s   e   r   t   K   e   y
0125120    w   o   r   d   ;       G   e   t   K   e   y   w   o   r   d
0125140   \r   s   y   s   Z   o   n   e  \r   ]  \r  \r   l   e   t    
0125160    C   m   d   S   c   a   n   T   e   s   t   (   )       b   e
0125200   \r   [  \r   l   e   t       k   t       =       C   r   e   a
0125220    t   e   K   e   y   w   o   r   d   T   a   b   l   e   (   1
0125240    0   )  \r   I   n   s   e   r   t   K   e   y   w   o   r   d
0125260    (   k   t   ,       "   N   u   m   b   e   r   "   )   !   0
0125300        =       1  \r   I   n   s   e   r   t   K   e   y   w   o
0125320  376 001  \0 354 223   r   d   (   k   t   ,       "   C   o   p
0125340    y   "   )   !   0       =       2  \r   I   n   s   e   r   t
0125360    K   e   y   w   o   r   d   (   k   t   ,       "   Q   u   i
0125400    t   "   )   !   0       =       3  \r   I   n   s   e   r   t
0125420    K   e   y   w   o   r   d   (   k   t   ,       "   C   o   m
0125440    m   e   n   t   "   )   !   0       =       4  \r   l   e   t
0125460        c   s       =       n   i   l  \r   c   s       =       I
0125500    n   i   t   C   m   d   (   2   5   6   ,       1   0   )    
0125520    r   e   p   e   a   t   u   n   t   i   l       c   s       n
0125540    e       0  \r   W   s   s   (   c   s   ,       "   *   n   *
0125560    *   "   )  \r   s   w   i   t   c   h   o   n       G   e   t
0125600    K   e   y   w   o   r   d   (   c   s   ,       k   t   )   !
0125620    0       i   n   t   o  \r               [  \r               c
0125640    a   s   e       1   :           /   /   n   u   m   b   e   r
0125660        t   e   s   t  \r                           [  \r        
0125700                    P   u   t   s   (   c   s   ,       $   *   s
0125720    )  \r             376 001  \0   * 204               l   e   t
0125740        n   1       =       G   e   t   N   u   m   b   e   r   (
0125760    c   s   )  \r                           W   s   s   (   c   s
0126000    ,       "       A   n   o   t   h   e   r   :       "   )  \r
0126020                            B   e   g   i   n   D   e   f   a   u
0126040    l   t   P   h   r   a   s   e   (   c   s   )  \r            
0126060                W   n   s   (   c   s   ,       n   1   +   1   )
0126100   \r                           E   n   d   D   e   f   a   u   l
0126120    t   P   h   r   a   s   e   (   c   s   )  \r                
0126140            l   e   t       n   2       =       G   e   t   N   u
0126160    m   b   e   r   (   c   s   )  \r                           i
0126200    f       C   o   n   f   i   r   m   (   c   s   )       t   h
0126220    e   n  \r                                       [       W   s
0126240    s   (   c   s   ,       "       =       "   )   ;       W   n
0126260    s   (   c   s   ,       n   1   )   ;       W   s   s   (   c
0126300    s   ,       "   ,       "   )   ;       W   n   s   (   c   s
0126320    ,       n   2   )       ]  \r         376 001  \0 025   a    
0126340                e   n   d   c   a   s   e  \r                    
0126360        ]  \r               c   a   s   e       2   :           /
0126400    /   f   i   l   e       t   e   s   t  \r                    
0126420        [  \r                           W   s   s   (   c   s   ,
0126440        "       f   i   l   e       "   )  \r                    
0126460        l   e   t       s       =       n   i   l  \r            
0126500                i   f       E   n   a   b   l   e   C   a   t   c
0126520    h   (   c   s   )       t   h   e   n       [       i   f    
0126540    s       n   e       0       t   h   e   n       C   l   o   s
0126560    e   s   (   s   )   ;       E   n   d   C   a   t   c   h   (
0126600    c   s   )       ]  \r                           s       =    
0126620    0  \r                           s       =       G   e   t   F
0126640    i   l   e   (   c   s   ,       k   s   T   y   p   e   R   e
0126660    a   d   O   n   l   y   ,       c   h   a   r   I   t   e   m
0126700    )  \r                           W   s   s   (   c   s   ,    
0126720    "       t   o       f   i   l   e       "   )  \r         376
0126740  001  \0   d   v                   D   e   f   a   u   l   t   P
0126760    h   r   a   s   e   (   c   s   ,       "   f   o   o   .   b
0127000    a   z   "   ,       $   *   s   )  \r                        
0127020    l   e   t       s   t   r   ,       s   2       =       n   i
0127040    l   ,       n   i   l  \r                           i   f    
0127060    E   n   a   b   l   e   C   a   t   c   h   (   c   s   )    
0127100    t   h   e   n  \r                                       [  \r
0127120                                        i   f       s   t   r    
0127140    n   e       0       t   h   e   n       F   r   e   e   (   s
0127160    y   s   Z   o   n   e   ,       s   t   r   )  \r            
0127200                            i   f       s   2       n   e       0
0127220        t   h   e   n       C   l   o   s   e   s   (   s   2   )
0127240   \r                                       E   n   d   C   a   t
0127260    c   h   (   c   s   )  \r                                    
0127300    ]  \r                           s   t   r   ,       s   2    
0127320    =       0   ,       0  \r                           s   t   r
0127340        =       G 376 001  \0 360 027   e   t   S   t   r   i   n
0127360    g   (   c   s   )  \r                           s   2       =
0127400        O   p   e   n   F   i   l   e   (   s   t   r   ,       k
0127420    s   T   y   p   e   W   r   i   t   e   O   n   l   y   ,    
0127440    c   h   a   r   I   t   e   m   ,       v   e   r   L   a   t
0127460    e   s   t   )  \r                           W   s   s   (   c
0127500    s   ,       (   s   2       e   q       0   ?       "       [
0127520    N   e   w       f   i   l   e   ]   "   ,       "       [   O
0127540    l   d       f   i   l   e   ]   "   )   )  \r                
0127560            G   e   t   P   h   r   a   s   e   (   c   s   ,    
0127600    T   r   u   e   P   r   e   d   i   c   a   t   e   ,       T
0127620    r   u   e   P   r   e   d   i   c   a   t   e   ,       F   a
0127640    l   s   e   P   r   e   d   i   c   a   t   e   ,       W   s
0127660    s   ,  \r                               "   r   e   t   u   r
0127700    n       t   o       c   o   n   f   i   r   m   ,       o   r
0127720        t   y   p   e       a   n   o   t   h   e   r       f   i
0127740    l   e   n   a   m   e   "   )  \r 376 001  \0   q   +        
0127760                    i   f       T   e   r   m   i   n   a   t   i
0130000    n   g   C   h   a   r   (   c   s   )       n   e       $   *
0130020    n       t   h   e   n  \r                                    
0130040    E   r   a   s   e   P   h   r   a   s   e   (   c   s   ,    
0130060    1   ,       0   ,       T   e   r   m   i   n   a   t   i   n
0130100    g   C   h   a   r   (   c   s   )   )  \r                    
0130120        i   f       s   2       e   q       0       t   h   e   n
0130140        s   2       =       O   p   e   n   F   i   l   e   (   s
0130160    t   r   ,       k   s   T   y   p   e   W   r   i   t   e   O
0130200    n   l   y   ,       c   h   a   r   I   t   e   m   )  \r    
0130220                        F   r   e   e   (   s   y   s   Z   o   n
0130240    e   ,       s   t   r   )  \r                           u   n
0130260    t   i   l       E   n   d   o   f   s   (   s   )       d   o
0130300        P   u   t   s   (   s   2   ,       G   e   t   s   (   s
0130320    )   )  \r                           C   l   o   s   e   s   (
0130340    s   )   ;       C   l   o   s   e   s   (   s   2   ) 376 001
0130360   \0   x 310  \r                           e   n   d   c   a   s
0130400    e  \r                           ]  \r               c   a   s
0130420    e       3   :           /   /   q   u   i   t  \r            
0130440                f   i   n   i   s   h  \r               c   a   s
0130460    e       4   :           /   /   c   o   m   m   e   n   t  \r
0130500                            [  \r                           P   u
0130520    t   s   (   c   s   ,       $   *   s   )  \r                
0130540            G   e   t   P   h   r   a   s   e   (   c   s   ,    
0130560    0   ,       0   ,       T   r   u   e   P   r   e   d   i   c
0130600    a   t   e   )       r   e   p   e   a   t   u   n   t   i   l
0130620   \r                                       T   e   r   m   i   n
0130640    a   t   i   n   g   C   h   a   r   (   c   s   )       e   q
0130660        $   *   n  \r                           e   n   d   c   a
0130700    s   e  \r                           ]  \r               ]  \r
0130720    C   l   o   s   e   s   (   c   s   )  \r   D   e   s   t   r
0130740    o   y   K   e   y   w   o   r   d   T   a   b   l   e   (   k
0130760    t   )  \r 376  \0  \t 241   g   ]       r   e   p   e   a   t
0131000   \r 377  \0  \0   L   o   a   d   C   m   d   S   c   a   n   T
0131020    e   s   t   .   c   m  \0 373 224 345 357   t  \0  \0 376  \0
0131040    | 230 204   b   l   d   r       c   m   d   s   c   a   n   t
0131060    e   s   t       c   m   d   s   c   a   n       c   m   d   s
0131100    c   a   n   e   d   i   t       c   m   d   s   c   a   n   d
0131120    i   s   p   l   a   y       c   m   d   s   c   a   n   a   u
0131140    x       k   e   y   w   o   r   d       k   e   y   w   o   r
0131160    d   i   n   i   t       a   l   t   o   t   i   m   e   r    
0131200    c   o   n   t   e   x   t       s   t   r   i   n   g   u   t
0131220    i   l       a   l   t   o   b   y   t   e   b   l   t  \r 377
0131240   \0  \0   C   o   m   p   i   l   e   C   m   d   S   c   a   n
0131260    .   c   m  \0 373 230 035 245 240  \0  \0 376  \0 251   b 345
0131300    B   c   p   l   /   f   o       C   m   d   S   c   a   n   .
0131320    b   c   p   l       C   m   d   S   c   a   n   E   d   i   t
0131340    .   b   c   p   l       C   m   d   S   c   a   n   D   i   s
0131360    p   l   a   y   .   b   c   p   l       C   m   d   S   c   a
0131400    n   T   t   y   .   b   c   p   l       C   m   d   S   c   a
0131420    n   A   u   x   .   b   c   p   l       C   m   d   S   c   a
0131440    n   O   E   P   .   b   c   p   l       K   e   y   w   o   r
0131460    d   .   b   c   p   l       K   e   y   w   o   r   d   I   n
0131500    i   t   .   b   c   p   l       K   e   y   w   o   r   d   O
0131520    E   P   .   b   c   p   l       C   m   d   S   c   a   n   T
0131540    e   s   t   .   b   c   p   l  \r 377  \0  \0   R   e   l   e
0131560    a   s   e   C   m   d   S   c   a   n   .   c   m  \0 373 227
0131600    l 365   n  \0  \0 376  \0 350 352  \n   F   t   p       M   a
0131620    x   c       c   o   n   n   /   c       A   l   t   o       d
0131640    u   m   p   /   c       C   m   d   S   c   a   n   .   d   m
0131660        C   m   d   S   c   a   n   .   d   e   c   l       C   m
0131700    d   S   c   a   n   .   b   r       C   m   d   S   c   a   n
0131720    E   d   i   t   .   b   r       C   m   d   S   c   a   n   D
0131740    i   s   p   l   a   y   .   b   r       C   m   d   S   c   a
0131760    n   T   t   y   .   b   r       C   m   d   S   c   a   n   A
0132000    u   x   .   b   r       C   m   d   S   c   a   n   O   E   P
0132020    .   b   r       K   e   y   w   o   r   d   .   b   r       K
0132040    e   y   w   o   r   d   I   n   i   t   .   b   r       K   e
0132060    y   w   o   r   d   O   E   P   .   b   r       ^  \r   c   o
0132100    n   n   /   c       A   l   t   o   S   o   u   r   c   e    
0132120    d   u   m   p   /   c       C   m   d   S   c   a   n   S   o
0132140    u   r   c   e   .   d   m       @   C   m   d   S   c   a   n
0132160    @  \r 377  \0  \0   C   m   d   S   c   a   n   .   c   m  \0
0132200  373 227   l 365 206  \0  \0 376  \0 374 224   A   C   m   d   S
0132220    c   a   n   .   d   e   c   l       C   m   d   S   c   a   n
0132240    .   b   c   p   l       C   m   d   S   c   a   n   E   d   i
0132260    t   .   b   c   p   l       C   m   d   S   c   a   n   D   i
0132300    s   p   l   a   y   .   b   c   p   l       C   m   d   S   c
0132320    a   n   T   t   y   .   b   c   p   l       C   m   d   S   c
0132340    a   n   A   u   x   .   b   c   p   l       C   m   d   S   c
0132360    a   n   O   E   P   .   b   c   p   l       K   e   y   w   o
0132400    r   d   .   d   e   c   l       K   e   y   w   o   r   d   .
0132420    b   c   p   l       K   e   y   w   o   r   d   I   n   i   t
0132440    .   b   c   p   l       K   e   y   w   o   r   d   O   E   P
0132460    .   b   c   p   l       C   m   d   S   c   a   n   T   e   s
0132500    t   .   b   c   p   l       L   o   a   d   C   m   d   S   c
0132520    a   n   T   e   s   t   .   c   m       C   o   m   p   i   l
0132540    e   C   m   d   S   c   a   n   .   c   m       R   e   l   e
0132560    a   s   e   C   m   d   S   c   a   n   .   c   m       C   m
0132600    d   S   c   a   n   .   c   m 374                            
0132611