$ od -c -N 50000 [Indigo]<AltoSource>OEDITSOURCES.DM!2
0000000  377  \0  \0   O   e   d   i   t   .   d  \0 373 226   H   2   *
0000020   \0  \0 376 001  \0 211 203   /   /       O   e   d   i   t   .
0000040    D      \r   /   /       C   o   p   y   r   i   g   h   t    
0000060    X   e   r   o   x       C   o   r   p   o   r   a   t   i   o
0000100    n       1   9   7   9  \r  \r  \r   m   a   n   i   f   e   s
0000120    t  \r  \t   [  \r  \t   o   c   t   a   l       =       #   1
0000140   \r  \t   h   a   l   f   O   c   t   a   l       =       #   2
0000160   \r  \t   h   a   l   f   A   s   c   i   i       =       #   4
0000200   \r  \t   h   a   l   f   H   e   x       =       #   1   0  \r
0000220   \t   h   a   l   f   E   b   c   d   i   c       =       #   2
0000240    0  \r  \t   d   e   c   i   m   a   l       =       #   4   0
0000260   \r  \t   h   a   l   f   D   e   c   i   m   a   l       =    
0000300    #   1   0   0  \r  \t   o   n   e   W   o   r   d   O   c   t
0000320    a   l       =       #   2   0   0  \t   /   /   o   n   l   y
0000340        u   s   e   d       i   n       i   n   p   u   t  \r  \t
0000360    ]  \r  \r   m   a   n   i   f   e   s   t       [       e   r
0000400    r   R   e   t       =       1   ;           o   k   R   e   t
0000420        =       0       ]  \r 376  \0 200   T   9  \r   s   t   r
0000440    u   c   t   u   r   e       [       l   e   f   t       b   y
0000460    t   e   ;       r   i   g   h   t       b   y   t   e       ]
0000500   \r  \r   s   t   r   u   c   t   u   r   e       D   P   :  \r
0000520   \t   [  \r  \t   H   i   g   h  \t   w   o   r   d  \r  \t   L
0000540    o   w  \t   w   o   r   d  \r  \t   ]  \r   s   t   r   u   c
0000560    t   u   r   e       D   P   V   :  \r  \t   [  \r  \t   L   e
0000600    n      \t  \t   w   o   r   d  \r  \t   E   l   t   ^   1   ,
0000620    2   5   5  \t   @   D   P  \r  \t   ]  \r  \r 377  \0  \0   I
0000640    n   t   e   r   D   i   s   k   .   b   c   p   l  \0 373 226
0000660    H   5 001  \0  \0 376 001  \0 347   5   /   /       I   n   t
0000700    e   r   D   i   s   k   .   b   c   p   l      \r   /   /    
0000720    C   o   p   y   r   i   g   h   t       X   e   r   o   x    
0000740    C   o   r   p   o   r   a   t   i   o   n       1   9   7   9
0000760   \r  \r  \r   /   /   T   h   i   s       i   s       a       l
0001000    i   t   t   l   e       m   o   d   u   l   e       t   h   a
0001020    t       L   y   l   e       R   a   m   s   h   a   w       w
0001040    r   o   t   e       t   o       a   l   l   o   w       O   e
0001060    d   i   t       t   o  \r   /   /       r   e   f   e   r   e
0001100    n   c   e       d   i   s   k       f   i   l   e   s       o
0001120    n       a   n   y       D   i   a   b   l   o       o   r    
0001140    T   r   i   d   e   n   t       d   r   i   v   e   ,       w
0001160    i   t   h   o   u   t  \r   /   /       w   o   r   r   y   i
0001200    n   g       a   b   o   u   t       d   e   t   a   i   l   s
0001220        l   i   k   e       w   h   e   t   h   e   r       t   h
0001240    e   y       h   a   d       b   e   e   n       I   n   i   t
0001260    '   e   d       o   r       n   o   t 376 001  \0 337 236   ,
0001300   \r   /   /       a   n   d       w   h   e   t   h   e   r    
0001320    o   r       n   o   t       t   h   e   y       n   e   e   d
0001340    e   d       f   a   n   c   y       m   i   c   r   o   c   o
0001360    d   e   .  \r  \r   /   /   T   h   e       p   r   i   m   a
0001400    r   y       e   x   p   o   r   t   e   d       p   r   o   c
0001420    e   d   u   r   e   s       a   r   e       S   e   t   U   p
0001440    I   n   t   e   r   D   i   s   k   (   z   o   n   e   )   ,
0001460        w   h   i   c   h      \r   /   /       t   a   k   e   s
0001500        a       z   o   n   e       f   o   r       d   i   s   k
0001520        s   p   a   c   e       a   s       t   h   e       a   r
0001540    g   u   m   e   n   t   ,       a   n   d       s   e   t   s
0001560        u   p       t   h   e  \r   /   /       I   n   t   e   r
0001600    D   i   s   k       s   t   a   t   i   c       d   a   t   a
0001620        s   t   r   u   c   t   u   r   e   s   .           Y   o
0001640    u       s   h   o   u   l   d       a   l   l   o   w       1
0001660    0   2   4   *   n   u   m   b   e   r  \r   /   /       o 376
0001700  001  \0 303  \t   f       T   r   i   d   e   n   t       f   i
0001720    l   e   s       +       (   ~   1   2   5   )   *   n   u   m
0001740    b   e   r       o   f       T   r   i   d   e   n   t       d
0001760    r   i   v   e   s       +       2   5   6   *   n   u   m   b
0002000    e   r  \r   /   /       o   f       D   i   a   b   l   o    
0002020    f   i   l   e   s       +       (   ~   1   0   0   )   *   [
0002040    D   P   1       o   p   e   n   ?       1   ,       0   ]    
0002060    +       s   l   o   p   .  \r   /   /   A   f   t   e   r    
0002100    e   x   e   c   u   t   i   n   g       S   e   t   U   p   I
0002120    n   t   e   r   D   i   s   k   ,       y   o   u       c   a
0002140    n       u   s   e       I   n   t   e   r   D   i   s   k   O
0002160    p   e   n   F   i   l   e       i   n   s   t   e   a   d  \r
0002200    /   /       o   f       O   p   e   n   F   i   l   e   ,    
0002220    a   n   d       i   t       w   i   l   l       p   a   r   s
0002240    e       t   h   e       d   r   i   v   e       s   p   e   c
0002260    i   f   i   c   a   t   i   o   n   s       o   n       t   h
0002300    e  \r   /   / 376 001  \0   l 024       f   i   l   e       n
0002320    a   m   e   s   ,       i   n   i   t       t   h   e       d
0002340    r   i   v   e       i   f       n   e   c   e   s   s   a   r
0002360    y   ,       a   n   d       t   h   e   n       o   p   e   n
0002400        t   h   e       f   i   l   e   .  \r   /   /   I   n   t
0002420    e   r   D   i   s   k   O   p   e   n   F   i   l   e       o
0002440    n   l   y       p   a   y   s       a   t   t   e   n   t   i
0002460    o   n       t   o       i   t   s       f   i   r   s   t    
0002500    t   h   r   e   e       a   r   g   u   m   e   n   t   s   .
0002520   \r  \r   /   /   T   h   e       z   o   n   e       a   r   g
0002540    u   m   e   n   t       t   o       S   e   t   U   p   I   n
0002560    t   e   r   D   i   s   k       i   s       u   s   e   d    
0002600    f   o   r       a   l   l       s   p   a   c   e       r   e
0002620    q   u   i   r   e   m   e   n   t   s   .  \r   /   /       W
0002640    h   e   n       y   o   u       h   a   v   e       e   i   t
0002660    h   e   r       a   l   r   e   a   d   y       o   p   e   n
0002700    e   d       a       f   i   l   e 376 001  \0 274   y       o
0002720    n       a       T   r   i   d   e   n   t       d   r   i   v
0002740    e   ,       o   r  \r   /   /       y   o   u       k   n   o
0002760    w       t   h   a   t       y   o   u       w   i   l   l    
0003000    n   e   v   e   r       u   s   e       a   n   y       T   r
0003020    i   d   e   n   t       d   r   i   v   e   ,       y   o   u
0003040        m   a   y       c   a   l   l  \r   /   /       t   h   e
0003060        r   o   u   t   i   n   e       O   v   e   r   w   r   i
0003100    t   e   L   o   a   d   R   a   m   ,       a   n   d       i
0003120    t       w   i   l   l       d   o       a       S   e   t   E
0003140    n   d   C   o   d   e       t   o  \r   /   /       g   e   t
0003160        b   a   c   k       t   h   e       s   p   a   c   e    
0003200    t   a   k   e   n       u   p       b   y       L   o   a   d
0003220    R   a   m       a   n   d       T   r   i   c   o   n   M   C
0003240    .           A       s   y   s   t   e   m       u   s   i   n
0003260    g       t   h   i   s  \r   /   /       f   e   a   t   u   r
0003300    e       s   h   o   u   l   d       e   n   d       i 376 001
0003320   \0   " 207   t   s       l   o   a   d       c   o   m   m   a
0003340    n   d       w   i   t   h       "   L   o   a   d   R   a   m
0003360        T   r   i   c   o   n   M   C   "       i   n       t   h
0003400    a   t  \r   /   /       o   r   d   e   r   .  \r  \r   g   e
0003420    t       "   s   t   r   e   a   m   s   .   d   "  \r   g   e
0003440    t       "   a   l   t   o   d   e   f   s   .   d   "  \r  \r
0003460    e   x   t   e   r   n   a   l       [  \t  \t   /   /   t   h
0003500    e       e   x   p   o   r   t   e   d       p   r   o   c   e
0003520    d   u   r   e   s  \r  \t   S   e   t   U   p   I   n   t   e
0003540    r   D   i   s   k  \r  \t   I   n   t   e   r   D   i   s   k
0003560    O   p   e   n   F   i   l   e  \r  \t   O   v   e   r   w   r
0003600    i   t   e   L   o   a   d   R   a   m  \r  \t   ]  \r  \r   e
0003620    x   t   e   r   n   a   l       [  \r   /   /   f   r   o   m
0003640        B   F   S       p   a   c   k   a   g   e  \r  \t   B   F
0003660    S   I   n   i   t  \r  \t   B   F   S   C   l   o   s   e  \r
0003700   \r   /   /   f   r   o   m       T   F   S       p   a   c   k
0003720    a   g   e 376 001  \0   p 363  \r                            
0003740        T   F   S   I   n   i   t  \r                            
0003760        T   F   S   C   l   o   s   e  \r                        
0004000            T   F   S   S   i   l   e   n   t   B   o   o   t  \r
0004020                                    L   o   a   d   R   a   m  \r
0004040                                    D   i   s   k   R   a   m   I
0004060    m   a   g   e  \r                                   T   F   S
0004100    S   w   a   t   C   o   n   t   e   x   t   P   r   o   c  \r
0004120   \r   /   /   f   r   o   m       t   h   e       O   S  \r    
0004140                                l   v   U   s   e   r   F   i   n
0004160    i   s   h   P   r   o   c  \r                                
0004200    l   v   S   w   a   t   C   o   n   t   e   x   t   P   r   o
0004220    c  \r  \r                                   S   e   t   E   n
0004240    d   C   o   d   e  \r  \t   C   a   l   l   S   w   a   t  \r
0004260   \t   O   p   e   n   F   i   l   e  \r  \t   A   l   l   o   c
0004300    a   t   e  \r  \t   s   y   s   D   i   s   k  \r  \t   W   l
0004320   \r  \t   W   s  \r             376 001  \0 316 222            
0004340            ]  \r  \r  \r   s   t   a   t   i   c       [       s
0004360    a   v   e   d   U   F   P   ;       s   a   v   e   d   S   C
0004400    P       ]  \r   s   t   a   t   i   c       [       t   r   i
0004420    D   i   s   k   s   ;           d   i   D   i   s   k   1   ;
0004440            d   i   s   k   Z   o   n   e       ]  \r  \r   s   t
0004460    r   u   c   t   u   r   e       U   n   P   a   c   k   e   d
0004500    :  \r  \t   [  \r  \t   T   y   p   e       b   i   t       1
0004520   \t   /   /   0       f   o   r       D   i   a   b   l   o   ,
0004540        1       f   o   r       T   r   i   d   e   n   t  \r  \t
0004560    N   u   m       b   i   t       1   5  \r  \t   ]  \r   m   a
0004600    n   i   f   e   s   t       [       D   i   a   b   l   o    
0004620    =       0   ;           T   r   i   d   e   n   t       =    
0004640    1       ]  \r   s   t   r   u   c   t   u   r   e  \r  \t   [
0004660   \r  \t   L   e   f   t  \t   b   y   t   e  \r  \t   R   i   g
0004700    h   t  \t   b   y   t   e  \r  \t   ]  \r   s   t   r   u   c
0004720    t   u   r   e       P   a   c   k   e   d   :  \r 376 001  \0
0004740  235   @  \t   [  \r  \t   b   l   a   n   k       b   i   t    
0004760    1   1  \r  \t   F   i   l   e   S   y   s       b   i   t    
0005000    2  \t   /   /   F   o   r       T   -   3   0   0   '   s   ,
0005020        s   a   y   s       w   h   i   c   h       f   i   l   e
0005040        s   y   s   t   e   m  \r  \t   N   u   m       b   i   t
0005060        3  \r  \t   ]  \r  \r   s   t   r   u   c   t   u   r   e
0005100        S   t   r   :  \r  \t   [  \r  \t   L   e   n  \t  \t   b
0005120    y   t   e  \r  \t   C   h   a   r   ^   1   ,   2   5   5  \t
0005140    b   y   t   e  \r  \t   ]  \r  \r   l   e   t       S   e   t
0005160    U   p   I   n   t   e   r   D   i   s   k   (   z   o   n   e
0005200    )       b   e  \r   [  \r   /   /   a   s   s   i   g   n    
0005220    z   o   n   e       t   o       s   t   a   t   i   c       v
0005240    a   r   i   a   b   l   e   ,       t   o       r   e   m   e
0005260    m   b   e   r       i   t  \r  \t   d   i   s   k   Z   o   n
0005300    e       =       z   o   n   e  \r   /   /   s   e   t       u
0005320    p       d   i   s   k       o   b   j   e   c   t   s       t
0005340    o     376 001  \0 340   =   b   e       0   ,       s   i   n
0005360    c   e       n   o       d   i   s   k   s       I   n   i   t
0005400    '   e   d  \r  \t   t   r   i   D   i   s   k   s       =    
0005420    A   l   l   o   c   a   t   e   (   z   o   n   e   ,       3
0005440    2   )  \r  \t   f   o   r       i   =   0       t   o       3
0005460    1       d   o       t   r   i   D   i   s   k   s   !   i   =
0005500    0  \r  \t   d   i   D   i   s   k   1   =   0  \r   ]  \r  \r
0005520    a   n   d       O   v   e   r   w   r   i   t   e   L   o   a
0005540    d   R   a   m   (   )       b   e  \r           S   e   t   E
0005560    n   d   C   o   d   e   (   L   o   a   d   R   a   m   )  \r
0005600   \r   a   n   d       I   n   t   e   r   D   i   s   k   O   p
0005620    e   n   F   i   l   e   (   n   a   m   e   ,       k   s   T
0005640    y   p   e   ,       i   t   e   m   S   i   z   e   )       =
0005660        v   a   l   o   f  \r   [  \r   l   e   t       n   a   m
0005700    e   W   o   r   d   L   e   n   g   t   h       =       (   n
0005720    a   m   e   >   >   S   t   r   .   L   e   n   /   2   )    
0005740    +       1  \r   l   e   t 376 001  \0 322   2       n   a   m
0005760    e   C   o   p   y       =       A   l   l   o   c   a   t   e
0006000    (   d   i   s   k   Z   o   n   e   ,       n   a   m   e   W
0006020    o   r   d   L   e   n   g   t   h   )  \r   A   s   s   i   g
0006040    n   S   t   r   (   n   a   m   e   C   o   p   y   ,       n
0006060    a   m   e   )  \r   l   e   t       d   r   i   v   e   =   P
0006100    a   r   s   e   D   r   i   v   e   S   p   e   c   (   n   a
0006120    m   e   C   o   p   y   )  \r   i   f       d   r   i   v   e
0006140        e   q       -   1       t   h   e   n       r   e   s   u
0006160    l   t   i   s       0  \r   i   f       d   r   i   v   e    
0006200    e   q       0       t   h   e   n       r   e   s   u   l   t
0006220    i   s  \t   /   /   m   e   a   n   s       u   s   e       D
0006240    P   0       =       s   y   s   D   i   s   k  \r  \t        
0006260    O   p   e   n   F   i   l   e   (   n   a   m   e   C   o   p
0006300    y   ,   k   s   T   y   p   e   ,   i   t   e   m   S   i   z
0006320    e   ,   0   ,   0   ,   0   ,   d   i   s   k   Z   o   n   e
0006340    ,   0   ,   s   y   s   D   i   s   k   )  \r 376 001  \0 331
0006360  267   l   e   t       t   y   p   e       =       d   r   i   v
0006400    e   <   <   U   n   P   a   c   k   e   d   .   T   y   p   e
0006420   \r   l   e   t       n   u   m       =       d   r   i   v   e
0006440    <   <   U   n   P   a   c   k   e   d   .   N   u   m  \r   s
0006460    w   i   t   c   h   o   n       t   y   p   e       i   n   t
0006500    o  \r  \t   [  \r           c   a   s   e       D   i   a   b
0006520    l   o   :  \r  \t   i   f       n   u   m       n   e       1
0006540        t   h   e   n       r   e   s   u   l   t   i   s       0
0006560   \r  \t   i   f       d   i   D   i   s   k   1       e   q    
0006600    0       t   h   e   n       I   n   i   t   D   P   1   (   )
0006620   \r  \t   r   e   s   u   l   t   i   s       O   p   e   n   F
0006640    i   l   e   (   n   a   m   e   C   o   p   y   ,   k   s   T
0006660    y   p   e   ,   i   t   e   m   S   i   z   e   ,   0   ,   0
0006700    ,   0   ,   d   i   s   k   Z   o   n   e   ,   0   ,   d   i
0006720    D   i   s   k   1   )  \r           c   a   s   e       T   r
0006740    i   d   e   n   t   :  \r  \t  \t   [  \r  \t  \t   l   e   t
0006760      376 001  \0 254 366   t   r   i   D   r   i   v   e   ,    
0007000    f   i   l   e   S   y   s       =       n   u   m   <   <   R
0007020    i   g   h   t   ,       n   u   m   <   <   L   e   f   t  \r
0007040   \t  \t   i   f       (   t   r   i   D   r   i   v   e       l
0007060    s       0   )       %       (   t   r   i   D   r   i   v   e
0007100        g   r       7   )       t   h   e   n       r   e   s   u
0007120    l   t   i   s       0  \r  \t  \t   i   f       (   f   i   l
0007140    e   S   y   s       l   s       0   )       %       (   f   i
0007160    l   e   S   y   s       g   r       2   )       t   h   e   n
0007200        r   e   s   u   l   t   i   s       0  \r  \t  \t   l   e
0007220    t       p   a   c   k   e   d       =       0  \r  \t  \t   p
0007240    a   c   k   e   d   <   <   P   a   c   k   e   d   .   F   i
0007260    l   e   S   y   s       =       f   i   l   e   S   y   s  \r
0007300   \t  \t   p   a   c   k   e   d   <   <   P   a   c   k   e   d
0007320    .   N   u   m       =       t   r   i   D   r   i   v   e  \r
0007340   \t  \t   i   f       t   r   i   D   i   s   k   s   !   p   a
0007360    c   k   e   d       e 376 001  \0 263   n   q       0       t
0007400    h   e   n       I   n   i   t   T   r   i   d   e   n   t   D
0007420    r   i   v   e   (   n   u   m   ,       p   a   c   k   e   d
0007440    )  \r  \t  \t   r   e   s   u   l   t   i   s  \r  \t        
0007460        O   p   e   n   F   i   l   e   (   n   a   m   e   C   o
0007500    p   y   ,   k   s   T   y   p   e   ,   i   t   e   m   S   i
0007520    z   e   ,   0   ,   0   ,   0   ,   d   i   s   k   Z   o   n
0007540    e   ,   0   ,   t   r   i   D   i   s   k   s   !   p   a   c
0007560    k   e   d   )  \r  \t  \t   ]  \r  \t   ]  \r   ]  \r  \r   a
0007600    n   d       I   n   i   t   D   P   1   (   n   u   m   )    
0007620    b   e  \r   [  \r   l   e   t       r   e   s       =       B
0007640    F   S   I   n   i   t   (   d   i   s   k   Z   o   n   e   ,
0007660        t   r   u   e   ,       1   )  \r   i   f       r   e   s
0007700        e   q       0       t   h   e   n       B   i   t   c   h
0007720    (   "   C   o   u   l   d   n   '   t       o   p   e   r   a
0007740    t   e       D   P   1   .   "   )  \r   d   i   D   i   s   k
0007760    1       =       r   e   s  \r   ]  \r  \r 376 001  \0   Z 224
0010000    a   n   d       I   n   i   t   T   r   i   d   e   n   t   D
0010020    r   i   v   e   (   u   n   p   a   c   k   e   d   ,       p
0010040    a   c   k   e   d   )       b   e  \r   [  \r   t   e   s   t
0010060        @   l   v   U   s   e   r   F   i   n   i   s   h   P   r
0010100    o   c       e   q       F   i   n   i   s   h  \r       i   f
0010120    s   o  \r  \t   [  \r  \t   l   e   t       r   e   s       =
0010140        T   F   S   I   n   i   t   (   d   i   s   k   Z   o   n
0010160    e   ,       t   r   u   e   ,       u   n   p   a   c   k   e
0010200    d   )  \r  \t   i   f       r   e   s       e   q       0    
0010220    t   h   e   n  \r  \t  \t   [  \r  \t  \t   l   e   t       m
0010240    e   s   s   a   g   e       =       "   C   o   u   l   d   n
0010260    '   t       o   p   e   r   a   t   e       T   P   n   .   "
0010300   \r  \t  \t   m   e   s   s   a   g   e   >   >   S   t   r   .
0010320    C   h   a   r   ^   2   0       =       (   u   n   p   a   c
0010340    k   e   d   <   <   R   i   g   h   t   )       +       $   0
0010360   \r  \t  \t   B   i   t   c   h   (   m   e   s   s   a   g   e
0010400  376 001  \0   l 345   )  \r  \t  \t   ]  \r  \t   t   r   i   D
0010420    i   s   k   s   !   p   a   c   k   e   d       =       r   e
0010440    s  \r  \t   ]  \r           i   f   n   o   t  \r  \t   /   /
0010460    T   i   m   e       t   o       l   o   a   d       t   h   e
0010500        R   A   M       w   i   t   h       t   h   e       T   r
0010520    i   d   e   n   t       m   i   c   r   o   c   o   d   e  \r
0010540   \t   [  \r  \t   l   e   t       l   o   a   d       =       L
0010560    o   a   d   R   a   m   (   D   i   s   k   R   a   m   I   m
0010600    a   g   e   ,       t   r   u   e   )  \r  \t   l   e   t    
0010620    A   l   t   o   V   e   r   s   i   o   n   =   (   t   a   b
0010640    l   e       [       #   6   1   0   1   4   ;       #   1   4
0010660    0   1       ]       )   (   )  \r  \t   l   e   t       e   n
0010700    g   =   A   l   t   o   V   e   r   s   i   o   n   <   <   V
0010720    E   R   S   .   e   n   g  \r  \t   i   f       (   e   n   g
0010740        l   e       3   )       &       (   l   o   a   d       l
0010760    s       0   )       t   h   e   n       B   i   t   c   h   (
0011000    "   C   o   u   l 376 001  \0   > 346   d   n   '   t       l
0011020    o   a   d       t   h   e       R   A   M   .   "   )  \r  \t
0011040    /   /   o   t   h   e   r   w   i   s   e   ,       a   s   s
0011060    u   m   e       t   h   a   t       c   o   r   r   e   c   t
0011100        m   i   c   r   o   c   o   d   e       i   s       l   o
0011120    a   d   e   d       o   n       a  \r  \t   /   /   D   o   l
0011140    p   h   i   n       o   r       D   o   r   a   d   o   ,    
0011160    a   n   d       p   l   u   g   e       o   n  \r  \t   s   a
0011200    v   e   d   U   F   P       =       @   l   v   U   s   e   r
0011220    F   i   n   i   s   h   P   r   o   c  \r  \t   @   l   v   U
0011240    s   e   r   F   i   n   i   s   h   P   r   o   c       =    
0011260    F   i   n   i   s   h  \r  \t   s   a   v   e   d   S   C   P
0011300        =       @   l   v   S   w   a   t   C   o   n   t   e   x
0011320    t   P   r   o   c  \r  \t   @   l   v   S   w   a   t   C   o
0011340    n   t   e   x   t   P   r   o   c       =       T   F   S   S
0011360    w   a   t   C   o   n   t   e   x   t   P   r   o   c  \r  \t
0011400    I   n   i   t   T   r   i   d   e   n 376 001  \0 261 355   t
0011420    D   r   i   v   e   (   u   n   p   a   c   k   e   d   ,    
0011440    p   a   c   k   e   d   )  \r  \t   ]  \r   ]  \r  \r   a   n
0011460    d       B   i   t   c   h   (   m   s   g   )       b   e  \r
0011500    [  \r  \t   W   l   (   m   s   g   )  \r  \t   l   e   t    
0011520    A   l   t   o   V   e   r   s   i   o   n   =   (   t   a   b
0011540    l   e       [       #   6   1   0   1   4   ;       #   1   4
0011560    0   1       ]       )   (   )  \r  \t   t   e   s   t       A
0011600    l   t   o   V   e   r   s   i   o   n   <   <   V   E   R   S
0011620    .   e   n   g       g   e       4  \r  \t       i   f   s   o
0011640            W   s   (   "   C   o   r   r   e   c   t       m   i
0011660    c   r   o   c   o   d   e       l   o   a   d   e   d   ?    
0011700    "   )  \r  \t       i   f   n   o   t      \t   W   s   (   "
0011720    T   h   e   r   e   f   o   r   e   ,       f   a   r   e   w
0011740    e   l   l   !       "   )  \r  \t   a   b   o   r   t  \r   ]
0011760   \r  \r   /   /   T   h   e       f   o   l   l   o   w   i   n
0012000    g       r   o   u   t   i   n   e       r   e   a   d   s 376
0012020  001  \0 200 237       t   h   e       "   D   P   1   :   "    
0012040    p   o   r   t   i   o   n       o   f       t   h   e       f
0012060    i   l   e       n   a   m   e  \r  \r   a   n   d       P   a
0012100    r   s   e   D   r   i   v   e   S   p   e   c   (   s   t   r
0012120    )       =       v   a   l   o   f  \r   [  \r   l   e   t    
0012140    c   o   l   o   n   I   n   d   e   x       =       C   o   n
0012160    t   a   i   n   s   (   s   t   r   ,       $   :   )  \r   t
0012200    e   s   t       c   o   l   o   n   I   n   d   e   x  \r    
0012220    i   f   n   o   t  \r  \t   [  \t  \t   /   /   d   e   f   a
0012240    u   l   t       d   r   i   v   e       i   s       D   P   0
0012260    =   s   y   s   D   i   s   k  \r  \t   r   e   s   u   l   t
0012300    i   s       0  \t  \r  \t   ]  \r       i   f   s   o  \r  \t
0012320    [  \r  \t   l   e   t       r   e   s   ,       n   u   m    
0012340    =       n   i   l   ,       n   i   l  \r  \t   i   f       c
0012360    o   l   o   n   I   n   d   e   x       l   s       3       t
0012400    h   e   n       r   e   s   u   l   t   i   s       -   1  \r
0012420   \t   i   f     376 001  \0 277   ?   (   s   t   r   >   >   S
0012440    t   r   .   C   h   a   r   ^   2       n   e       $   P   )
0012460    &   (   s   t   r   >   >   S   t   r   .   C   h   a   r   ^
0012500    2       n   e       $   p   )       t   h   e   n  \r  \t  \t
0012520    r   e   s   u   l   t   i   s       -   1  \r  \t   n   u   m
0012540        =       0  \r  \t   f   o   r       i   =   3       t   o
0012560        c   o   l   o   n   I   n   d   e   x   -   1       d   o
0012600       \r  \t  \t   n   u   m       =       (   n   u   m       l
0012620    s   h   i   f   t       3   )       +       s   t   r   >   >
0012640    S   t   r   .   C   h   a   r   ^   i       -       $   0  \r
0012660   \t   r   e   s   <   <   U   n   P   a   c   k   e   d   .   N
0012700    u   m       =       n   u   m  \r  \t   s   w   i   t   c   h
0012720    o   n       s   t   r   >   >   S   t   r   .   C   h   a   r
0012740    ^   1       i   n   t   o  \r  \t  \t   [  \r  \t           c
0012760    a   s   e       $   D   :       c   a   s   e       $   d   :
0013000   \r  \t  \t   r   e   s   <   <   U   n   P   a   c   k   e   d
0013020    .   T   y   p   e       =       D 376 001  \0 324 306   i   a
0013040    b   l   o  \r  \t  \t   R   e   m   o   v   e   D   r   i   v
0013060    e   S   p   e   c   (   s   t   r   ,       c   o   l   o   n
0013100    I   n   d   e   x   )  \r  \t  \t   r   e   s   u   l   t   i
0013120    s       r   e   s  \r  \t           c   a   s   e       $   T
0013140    :       c   a   s   e       $   t   :  \r  \t  \t   r   e   s
0013160    <   <   U   n   P   a   c   k   e   d   .   T   y   p   e    
0013200    =       T   r   i   d   e   n   t  \r  \t  \t   R   e   m   o
0013220    v   e   D   r   i   v   e   S   p   e   c   (   s   t   r   ,
0013240        c   o   l   o   n   I   n   d   e   x   )  \r  \t  \t   r
0013260    e   s   u   l   t   i   s       r   e   s  \r  \t           d
0013300    e   f   a   u   l   t   :  \r  \t  \t   r   e   s   u   l   t
0013320    i   s       -   1  \r  \t  \t   ]  \r  \t   ]  \r   ]  \r  \r
0013340    a   n   d       R   e   m   o   v   e   D   r   i   v   e   S
0013360    p   e   c   (   s   t   r   ,       i   n   d   e   x   )    
0013400    b   e  \r  \t   [  \r  \t   s   t   r   >   >   S   t   r   .
0013420    L   e   n       =       s   t   r   >   >   S   t   r 376 001
0013440   \0 342 204   .   L   e   n       -       i   n   d   e   x  \r
0013460   \t   f   o   r       i   =   1       t   o       s   t   r   >
0013500    >   S   t   r   .   L   e   n       d   o  \r  \t  \t   s   t
0013520    r   >   >   S   t   r   .   C   h   a   r   ^   i       =    
0013540    s   t   r   >   >   S   t   r   .   C   h   a   r   ^   (   i
0013560    +   i   n   d   e   x   )  \r  \t   ]  \r  \r   a   n   d    
0013600    C   o   n   t   a   i   n   s   (   s   t   r   ,       c   h
0013620    a   r   )       =       v   a   l   o   f  \r  \t   [  \r  \t
0013640    f   o   r       i   =   1       t   o       s   t   r   >   >
0013660    S   t   r   .   L   e   n       d   o  \r  \t  \t   i   f    
0013700    s   t   r   >   >   S   t   r   .   C   h   a   r   ^   i    
0013720    e   q       c   h   a   r       t   h   e   n       r   e   s
0013740    u   l   t   i   s       i  \r  \t   r   e   s   u   l   t   i
0013760    s       0  \r  \t   ]  \r  \t  \t  \t      \r   a   n   d    
0014000    A   s   s   i   g   n   S   t   r   (   s   t   r   1   ,    
0014020    s   t   r   2   )       b   e  \r  \t   [  \r  \t   s   t   r
0014040    1   >   > 376 001  \0   r 300   S   t   r   .   L   e   n    
0014060    =       s   t   r   2   >   >   S   t   r   .   L   e   n  \r
0014100   \t   f   o   r       i   =   1       t   o       s   t   r   1
0014120    >   >   S   t   r   .   L   e   n       d   o  \r  \t  \t   s
0014140    t   r   1   >   >   S   t   r   .   C   h   a   r   ^   i    
0014160    =       s   t   r   2   >   >   S   t   r   .   C   h   a   r
0014200    ^   i  \r  \t   ]  \r  \r   a   n   d       F   i   n   i   s
0014220    h   (   )       b   e  \r  \t   [  \r  \t   f   o   r       i
0014240    =   0       t   o       3   1       d   o  \r  \t  \t   i   f
0014260        t   r   i   D   i   s   k   s   !   i       t   h   e   n
0014300        T   F   S   C   l   o   s   e   (   t   r   i   D   i   s
0014320    k   s   !   i   )  \r  \t   i   f       d   i   D   i   s   k
0014340    1       t   h   e   n       B   F   S   C   l   o   s   e   (
0014360    d   i   D   i   s   k   1   )  \r  \t   @   l   v   U   s   e
0014400    r   F   i   n   i   s   h   P   r   o   c       =       s   a
0014420    v   e   d   U   F   P  \r  \t   @   l   v   S   w   a   t   C
0014440    o   n   t   e   x   t   P   r 376  \0   " 334   j   o   c    
0014460    =       s   a   v   e   d   S   C   P  \r  \t   T   F   S   S
0014500    i   l   e   n   t   B   o   o   t   (   )  \r  \t   ]  \r 377
0014520   \0  \0   O   e   d   i   t   .   b   c   p   l  \0 373 226   H
0014540    3 237  \0  \0 376 001  \0   & 366   /   /       O   e   d   i
0014560    t   .   b   c   p   l      \r   /   /       C   o   p   y   r
0014600    i   g   h   t       X   e   r   o   x       C   o   r   p   o
0014620    r   a   t   i   o   n       1   9   7   9   ,   1   9   8   0
0014640   \r  \r  \r   /   /       O   e   d   i   t       w   a   s    
0014660    r   e   w   r   i   t   t   e   n       b   y       L   y   l
0014700    e       R   a   m   s   h   a   w       i   n       N   o   v
0014720    e   m   b   e   r   /   D   e   c   e   m   b   e   r   ,    
0014740    1   9   7   9   ,  \r   /   /  \t   t   o       p   u   t    
0014760    i   n       T   r   i   d   e   n   t       d   r   i   v   e
0015000    s       o   t   h   e   r       t   h   a   n       d   r   i
0015020    v   e       #   0  \r   /   /  \t   E   a   c   h       f   i
0015040    l   e       n   o   w       h   a   s       a   n       o   p
0015060    t   i   o   n   a   l       <   d   i   s   k   >   :       i
0015100    n       f   r   o   n   t       o   f       t   h   e       f
0015120    i   l   e  \r   /   /  \t   n   a   m   e   ,       a   s    
0015140    i   n       "   T   P   3   :   n 376 001  \0 210 260   a   m
0015160    e   .   e   x   t   "       o   r       "   D   P   1   :   n
0015200    a   m   e   .   e   x   t   "   .           D   e   f   a   u
0015220    l   t  \r   /   /  \t   d   i   s   k       i   s       D   P
0015240    0   .  \r   /   /       I   n       a   d   d   i   t   i   o
0015260    n   ,       t   h   e       n   e   w       O   E   d   i   t
0015300        a   l   l   o   w   s       i   n   p   u   t       i   n
0015320        m   o   d   e   s       o   t   h   e   r       t   h   a
0015340    n       o   c   t   a   l   ,  \r   /   /  \t   a   n   d    
0015360    a       i   t   e   r   a   t   i   v   e       f   i   n   d
0015400    /   r   e   p   l   a   c   e       c   o   m   m   a   n   d
0015420    ;           c   h   e   c   k       o   u   t       t   h   e
0015440        d   o   c   u   m   e   n   t   a   t   i   o   n  \r   /
0015460    /  \t   i   n       t   h   e       s   t   a   n   d   a   r
0015500    d       p   l   a   c   e   ,       <   a   l   t   o   d   o
0015520    c   s   >   o   e   d   i   t   .   t   t   y   .  \r   /   /
0015540        O   E   d   i   t       h   a   s       t   h   e 376 001
0015560   \0   [ 177       t   w   o       f   i   l   e   s       O   E
0015600    d   i   t       a   n   d       O   E   d   i   t   C   o   m
0015620    ;           o   n   e       d   e   f   s       f   i   l   e
0015640    s       f   o   r       t   h   e  \r   /   /  \t   m   o   d
0015660    e       c   o   n   v   e   n   t   i   o   n   s   ,       O
0015700    E   d   i   t   .   D   .           I   n       a   d   d   i
0015720    t   i   o   n   ,       t   h   e       s   y   s   t   e   m
0015740        n   e   e   d   s       U   t   i   l   D   P   ,  \r   /
0015760    /  \t   G   P   ,       T   e   m   p   l   a   t   e   ,    
0016000    I   n   t   e   r   D   i   s   k   ,       T   r   i   d   e
0016020    n   t       f   i   l   e       s   t   u   f   f   ,       D
0016040    i   a   b   l   o       f   i   l   e       s   t   u   f   f
0016060    .  \r  \r   g   e   t       "   s   t   r   e   a   m   s   .
0016100    d   "  \r   g   e   t       "   o   e   d   i   t   .   d   "
0016120   \r  \r   e   x   t   e   r   n   a   l       [  \r   /   /   i
0016140    m   p   o   r   t       f   r   o   m       t   h   e       O
0016160    S  \r  \t 376 001  \0 356 027   G   e   t   s   ;       P   u
0016200    t   s   ;       d   s   p   ;       k   e   y   s   ;       W
0016220    s   s   ;       S   e   t   F   i   l   e   P   o   s   ;  \r
0016240   \t   R   e   s   e   t   s   ;       C   l   o   s   e   s   ;
0016260        E   n   d   o   f   s   ;       f   p   C   o   m   C   m
0016300   \r  \t   C   r   e   a   t   e   D   i   s   p   l   a   y   S
0016320    t   r   e   a   m   ;       S   h   o   w   D   i   s   p   l
0016340    a   y   S   t   r   e   a   m   ;  \r  \t   T   r   u   n   c
0016360    a   t   e   D   i   s   k   S   t   r   e   a   m  \r  \t   F
0016400    i   l   e   L   e   n   g   t   h   ;       U   s   c   ;    
0016420    W   s   ;       C   a   l   l   S   w   a   t  \r  \t   D   o
0016440    u   b   l   e   A   d   d   ;       O   p   e   n   F   i   l
0016460    e   ;           R   e   a   d   B   l   o   c   k   ;        
0016500    M   o   v   e   B   l   o   c   k  \r  \t   I   n   i   t   i
0016520    a   l   i   z   e   Z   o   n   e   ;       G   e   t   F   i
0016540    x   e   d   ;       F   i   x   e   d   L   e   f   t  \r  \r
0016560    /   /   i   m   p   o   r   t 376 001  \0 241 321       f   r
0016600    o   m       G   P  \r  \t   S   e   t   u   p   R   e   a   d
0016620    P   a   r   a   m   ;       R   e   a   d   P   a   r   a   m
0016640    ;       A   d   d   I   t   e   m  \r  \r   /   /   i   m   p
0016660    o   r   t       f   r   o   m       T   e   m   p   l   a   t
0016700    e  \r  \t   P   u   t   T   e   m   p   l   a   t   e  \r  \r
0016720    /   /   i   m   p   o   r   t       f   r   o   m       U   t
0016740    i   l   D   P  \r  \t   S   e   t   U   p   D   P  \r  \t   D
0016760    o   u   b   l   e   U   s   c   ;       A   s   s   i   g   n
0017000    D   P   ;           N   e   g   a   t   e   D   P   ;        
0017020    D   o   u   b   l   e   L   S   h   i   f   t   ;           D
0017040    o   u   b   l   e   R   S   h   i   f   t  \r  \t   z   e   r
0017060    o   D   P   ;           o   n   e   D   P   ;           m   i
0017100    n   u   s   O   n   e   D   P  \r  \r   /   /   i   m   p   o
0017120    r   t       f   r   o   m       I   n   t   e   r   D   i   s
0017140    k  \r  \t   S   e   t   U   p   I   n   t   e   r   D   i   s
0017160    k  \r  \t   I   n   t   e   r   D   i   s   k   O 376 001  \0
0017200    L 343   p   e   n   F   i   l   e  \r  \t   O   v   e   r   w
0017220    r   i   t   e   L   o   a   d   R   a   m  \r  \r   /   /   i
0017240    m   p   o   r   t       f   r   o   m       O   E   d   i   t
0017260    C   o   m  \r  \t   R   e   a   d   A   n   d   D   o   C   o
0017300    m   m   a   n   d  \r                                   ]  \r
0017320   \r   e   x   t   e   r   n   a   l       [  \r   /   /   e   x
0017340    p   o   r   t       t   o       O   E   d   i   t   C   o   m
0017360   \r  \t   d   a   t   a   ;       a   d   d   r   ;       l   a
0017400    s   t   V   a   l   ;       o   u   t   s   t   r   e   a   m
0017420   \r  \t   d   a   t   a   F   l   a   g   ;       w   r   i   t
0017440    e   F   l   a   g   ;       s   t   a   n   d   a   r   d   ;
0017460        f   i   l   e   s   ;       m   o   d   e   s  \r  \t   G
0017500    e   t   K   e   y   s   ;       P   u   t   b   a   c   k   K
0017520    e   y   s   ;       D   i   s   p   l   a   y   ;       D   i
0017540    s   p   l   a   y   V   a   l   u   e  \r  \t   W   r   i   t
0017560    e   F   i   l   e   ;       P   o   s   i   t   i   o   n   F
0017600    i   l 376 001  \0   j 331   e  \r  \t   A   s   c   i   i   T
0017620    o   E   b   c   d   i   c   ;       E   b   c   d   i   c   T
0017640    o   A   s   c   i   i  \r  \t   ]  \r  \r   m   a   n   i   f
0017660    e   s   t       [  \r  \t   d   i   s   k   Z   o   n   e   S
0017700    i   z   e       =       1   0   0   0   0  \t   /   /   S   h
0017720    o   u   l   d       b   e       e   n   o   u   g   h       f
0017740    o   r       5       f   i   l   e   s       o   n       5  \r
0017760   \t  \t  \t  \t   /   /   d   i   f   f   e   r   e   n   t    
0020000    T   r   i   d   e   n   t   s   ;           w   h   a   t    
0020020    d   o       y   o   u       w   a   n   t   ?  \r  \t   n   u
0020040    m   I   n   p   u   t   F   i   l   e   s       =       5   0
0020060   \r  \t   ]  \r  \r   s   t   a   t   i   c       [       m   o
0020100    d   e   s       ]  \r   s   t   a   t   i   c       [       f
0020120    i   l   e   s   ;       f   L   e   n   s   ;       a   d   d
0020140    r   ;       d   a   t   a   ;       f   i   r   s   t   N   a
0020160    m   e   ;       l   a   s   t   V   a   l       =       0    
0020200    ]  \r   s   t   a   t   i 376 001  \0 230 274   c       [    
0020220    w   r   i   t   e   F   l   a   g   =   f   a   l   s   e   ;
0020240        d   a   t   a   F   l   a   g   ;       o   u   t   s   t
0020260    r   e   a   m   ;       d   i   s   p   S   t   r   e   a   m
0020300        ]  \r   s   t   a   t   i   c       [       d   r   i   b
0020320    b   l   e   F   l   a   g       =       f   a   l   s   e   ;
0020340            d   r   i   b   b   l   e   F   i   l   e       ]  \r
0020360    s   t   a   t   i   c       [       p   u   t   b   a   c   k
0020400    I   n   F   o   r   c   e       =       f   a   l   s   e   ;
0020420            p   u   t   b   a   c   k   C   h   a   r       ]  \r
0020440   \r   s   t   a   t   i   c       [       s   t   a   n   d   a
0020460    r   d       =       o   c   t   a   l   +   h   a   l   f   O
0020500    c   t   a   l   +   h   a   l   f   A   s   c   i   i       ]
0020520   \r  \r   l   e   t       O   e   d   i   t   (   v   ,       s
0020540    w   i   t   c   h   e   s   )       b   e       [  \r  \r  \t
0020560    l   e   t       s   t   a   t   i   c   D   P   w   o   r   d
0020600    s       =       v   e   c       6  \r  \t   S 376 001  \0   o
0020620  234   e   t   U   p   D   P   (   s   t   a   t   i   c   D   P
0020640    w   o   r   d   s   )  \r  \r  \t   m   o   d   e   s       =
0020660            t   a   b   l   e       [  \r  \t  \t   0   ;       h
0020700    a   l   f   A   s   c   i   i   ;       0   ;       h   a   l
0020720    f   A   s   c   i   i   ;       d   e   c   i   m   a   l   ;
0020740        h   a   l   f   E   b   c   d   i   c   ;       0   ;    
0020760    0   ;  \r  \t  \t   h   a   l   f   O   c   t   a   l   ;    
0021000    0   ;       0   ;       0   ;       0   ;       0   ;       h
0021020    a   l   f   D   e   c   i   m   a   l   ;       o   c   t   a
0021040    l   ;  \r  \t  \t   0   ;       0   ;       0   ;       h   a
0021060    l   f   A   s   c   i   i   ;       0   ;       0   ;       0
0021100    ;       0   ;       h   a   l   f   H   e   x   ;       0   ;
0021120        0       ]  \r  \r  \t   l   e   t       z   o   n   e   V
0021140    e   c       =       v   e   c       d   i   s   k   Z   o   n
0021160    e   S   i   z   e  \r  \t   l   e   t       z   o   n   e    
0021200    =       I   n   i   t   i   a   l   i   z   e   Z   o   n   e
0021220    ( 376 001  \0   T 212   z   o   n   e   V   e   c   ,       d
0021240    i   s   k   Z   o   n   e   S   i   z   e   )  \r  \t   S   e
0021260    t   U   p   I   n   t   e   r   D   i   s   k   (   z   o   n
0021300    e   )  \r  \r   /   /   R   e   a   d       t   h   e       s
0021320    w   i   t   c   h   e   s       o   n       t   h   e       c
0021340    o   m   m   a   n   d       n   a   m   e       O   E   d   i
0021360    t   ,       w   h   i   c   h       c   a   n       r   e   s
0021400    e   t       t   h   e  \r   /   /       s   t   a   n   d   a
0021420    r   d       d   i   s   p   l   a   y       m   o   d   e   :
0021440   \r  \t   l   e   t       v   a   l       =       t   r   u   e
0021460   \r  \t   f   o   r       i       =       1       t   o       9
0021500    9   9       d   o  \r  \t                                    
0021520    [  \r  \t                                       s   w   i   t
0021540    c   h   o   n       s   w   i   t   c   h   e   s   !   i    
0021560    i   n   t   o  \r  \t  \t   [       c   a   s   e       $   T
0021600    :       c   a   s   e       $   t   :       A   n   n   o   u
0021620    n   c   e   N   e   w 376 001  \0   &   "   T   r   i   (   )
0021640   \r  \t  \t           c   a   s   e       $   W   :       c   a
0021660    s   e       $   w   :       w   r   i   t   e   F   l   a   g
0021700        =       v   a   l   ;       e   n   d   c   a   s   e  \r
0021720   \t  \t           c   a   s   e       $   O   :       c   a   s
0021740    e       $   o   :       S   e   t   S   t   d   (   o   c   t
0021760    a   l   ,       v   a   l   )   ;       e   n   d   c   a   s
0022000    e  \r  \t  \t           c   a   s   e       $   H   :       c
0022020    a   s   e       $   h   :       S   e   t   S   t   d   (   h
0022040    a   l   f   O   c   t   a   l   ,       v   a   l   )   ;    
0022060    e   n   d   c   a   s   e  \r  \t  \t           c   a   s   e
0022100        $   A   :       c   a   s   e       $   a   :       S   e
0022120    t   S   t   d   (   h   a   l   f   A   s   c   i   i   ,    
0022140    v   a   l   )   ;       e   n   d   c   a   s   e  \r  \t  \t
0022160            c   a   s   e       $   S   :       c   a   s   e    
0022200    $   s   :       S   e   t   S   t   d   (   h   a   l   f   A
0022220    s   c   i   i   ,       v   a   l   )   ; 376 001  \0 251 356
0022240        e   n   d   c   a   s   e  \r  \t  \t           c   a   s
0022260    e       $   C   :       c   a   s   e       $   c   :       S
0022300    e   t   S   t   d   (   h   a   l   f   A   s   c   i   i   ,
0022320        v   a   l   )   ;       e   n   d   c   a   s   e  \r  \t
0022340   \t           c   a   s   e       $   X   :       c   a   s   e
0022360        $   x   :       S   e   t   S   t   d   (   h   a   l   f
0022400    H   e   x   ,       v   a   l   )   ;       e   n   d   c   a
0022420    s   e  \r  \t  \t           c   a   s   e       $   E   :    
0022440    c   a   s   e       $   e   :       S   e   t   S   t   d   (
0022460    h   a   l   f   E   b   c   d   i   c   ,       v   a   l   )
0022500    ;       e   n   d   c   a   s   e  \r  \t  \t           c   a
0022520    s   e       $   D   :       c   a   s   e       $   d   :    
0022540    S   e   t   S   t   d   (   d   e   c   i   m   a   l   ,    
0022560    v   a   l   )   ;       e   n   d   c   a   s   e  \r  \t  \t
0022600            c   a   s   e       $   N   :       c   a   s   e    
0022620    $   n   :       S   e   t   S   t   d   (   h   a   l   f   D
0022640  376 001  \0   6 037   e   c   i   m   a   l   ,       v   a   l
0022660    )   ;       e   n   d   c   a   s   e  \r  \t  \t           c
0022700    a   s   e       $   F   :       c   a   s   e       $   f   :
0022720   \r  \t  \t               c   a   s   e       $   L   :       c
0022740    a   s   e       $   l   :       d   r   i   b   b   l   e   F
0022760    l   a   g       =       v   a   l   ;       e   n   d   c   a
0023000    s   e  \r  \t  \t           c   a   s   e       $   -   :    
0023020    v   a   l       =       n   o   t       v   a   l   ;       l
0023040    o   o   p  \r  \t  \t           c   a   s   e       0   :    
0023060    b   r   e   a   k   ;           d   e   f   a   u   l   t   :
0023100        e   n   d   c   a   s   e       ]  \r  \t                
0023120                            v   a   l       =       t   r   u   e
0023140   \r  \t                                           ]  \r  \r  \t
0023160    l   e   t       n   a   m   e       =       v   e   c       2
0023200    5   6   ;       l   e   t       s   w   =   v   e   c       1
0023220    2   8  \r  \t   S   e   t   u   p   R   e   a   d   P   a   r
0023240    a   m   (   n   a 376 001  \0   j   b   m   e   ,       s   w
0023260    )  \r  \t   l   e   t       f   i   r   s   t   N   a   m   e
0023300    V   e   c       =       v   e   c       2   5   6   ;        
0023320    f   i   r   s   t   N   a   m   e   =   f   i   r   s   t   N
0023340    a   m   e   V   e   c  \r  \r  \t   W   s   (   "   T   h   i
0023360    s       i   s       O   E   d   i   t       o   f       N   o
0023400    v   e   m   b   e   r       2   3   ,       1   9   8   0   .
0023420    *   N   "   )  \r  \r   /   /   o   p   e   n       t   h   e
0023440        i   n   p   u   t       f   i   l   e   s   :  \r  \t   l
0023460    e   t       f   i   l   e   s   V   e   c   =   v   e   c    
0023500    n   u   m   I   n   p   u   t   F   i   l   e   s   ;       f
0023520    i   l   e   s   =   f   i   l   e   s   V   e   c  \r  \t   f
0023540    i   l   e   s   !   0   =   0  \r  \t   l   e   t       f   L
0023560    e   n   s   V   e   c   =   v   e   c       2   *   n   u   m
0023600    I   n   p   u   t   F   i   l   e   s   ;       f   L   e   n
0023620    s   =   f   L   e   n   s   V   e   c  \r  \t   f   o   r    
0023640    c   n   t   =   1       t   o       n 376 001  \0   ~ 026   u
0023660    m   I   n   p   u   t   F   i   l   e   s       d   o  \r  \t
0023700   \t   [  \r  \t  \t   l   e   t       f   =   R   e   a   d   P
0023720    a   r   a   m   (   "   P   "   ,       -   1   )  \r  \t  \t
0023740    i   f       f       e   q       -   1       t   h   e   n    
0023760    b   r   e   a   k  \r  \t  \t   l   e   t       a   c   c   =
0024000    n   i   l  \r  \t  \t   t   e   s   t       (   c   n   t    
0024020    e   q       1   )   &       w   r   i   t   e   F   l   a   g
0024040       \r  \t  \t  \t   i   f   s   o       a   c   c   =   k   s
0024060    T   y   p   e   R   e   a   d   W   r   i   t   e  \r  \t  \t
0024100   \t   i   f   n   o   t       a   c   c   =   k   s   T   y   p
0024120    e   R   e   a   d   O   n   l   y  \r  \t  \t   i   f       c
0024140    n   t       e   q       1       t   h   e   n       M   o   v
0024160    e   B   l   o   c   k   (   f   i   r   s   t   N   a   m   e
0024200    ,       n   a   m   e   ,       2   5   6   )  \r  \t  \t   f
0024220    =   I   n   t   e   r   D   i   s   k   O   p   e   n   F   i
0024240    l   e   (   n   a   m   e   ,       a   c   c   ,       w 376
0024260  001  \0 257 024   o   r   d   I   t   e   m   )  \r  \t  \t   i
0024300    f       f       e   q       0       t   h   e   n  \r  \t  \t
0024320   \t   [  \r  \t  \t  \t   P   u   t   T   e   m   p   l   a   t
0024340    e   (   d   s   p   ,   "   $   S       n   o   t       f   o
0024360    u   n   d   ,       i   g   n   o   r   e   d   *   N   "   ,
0024400    n   a   m   e   )  \r  \t  \t  \t   l   o   o   p  \r  \t  \t
0024420   \t   ]  \r  \t  \t   A   d   d   I   t   e   m   (   f   i   l
0024440    e   s   ,       f   )  \r  \t  \t   ]  \r  \r   /   /   n   o
0024460    w       t   h   a   t       a   l   l       f   i   l   e   s
0024500        a   r   e       o   p   e   n   ,       t   h   e       L
0024520    o   a   d   R   a   m       s   t   u   f   f       c   a   n
0024540        b   e  \r   /   /           o   v   e   r   l   a   i   d
0024560    ;           w   e       w   i   l   l       s   t   e   a   l
0024600        t   h   e       r   e   s   t       o   f       c   o   r
0024620    e       f   o   r       d   i   s   p   l   a   y       p   u
0024640    r   p   o   s   e   s  \r  \t   O   v   e   r   w   r   i   t
0024660    e   L   o   a 376 001  \0   l 311   d   R   a   m   (   )  \r
0024700   \r   /   /   f   i   r   s   t   ,       t   r   y       f   o
0024720    r       t   h   e       f   o   n   t       G   a   c   h   a
0024740    1   0   .   a   l  \r  \t   l   e   t       f   o   n   t   F
0024760    i   l   e       =       O   p   e   n   F   i   l   e   (   "
0025000    G   a   c   h   a   1   0   .   a   l   "   ,   k   s   T   y
0025020    p   e   R   e   a   d   O   n   l   y   ,   w   o   r   d   I
0025040    t   e   m   )  \r  \t   l   e   t       f   o   n   t       =
0025060        n   i   l  \r  \t   i   f       f   o   n   t   F   i   l
0025100    e       t   h   e   n  \r  \t  \t   [  \r  \t  \t   l   e   t
0025120        f   o   n   t   L   e   n       =       v   e   c       1
0025140   \r  \t  \t   F   i   l   e   L   e   n   g   t   h   (   f   o
0025160    n   t   F   i   l   e   ,       f   o   n   t   L   e   n   )
0025200   \r  \t  \t   l   e   t       f   o   n   t   L   e   n   W   o
0025220    r   d   s       =       (   f   o   n   t   L   e   n   !   1
0025240    +   1   )       r   s   h   i   f   t       1  \r  \t  \t   f
0025260    o   n   t       =       G   e   t 376 001  \0   !   [   F   i
0025300    x   e   d   (   f   o   n   t   L   e   n   W   o   r   d   s
0025320    )  \r  \t  \t   R   e   s   e   t   s   (   f   o   n   t   F
0025340    i   l   e   )  \r  \t  \t   R   e   a   d   B   l   o   c   k
0025360    (   f   o   n   t   F   i   l   e   ,       f   o   n   t   ,
0025400        f   o   n   t   L   e   n   W   o   r   d   s   )  \r  \t
0025420   \t   f   o   n   t       =       f   o   n   t   +   2  \r  \t
0025440   \t   ]  \r  \t   l   e   t       d   i   s   p   S   i   z   e
0025460        =       F   i   x   e   d   L   e   f   t   (   )   -   2
0025500    0   0   0  \r  \t   l   e   t       d   i   s   p   V   e   c
0025520        =       G   e   t   F   i   x   e   d   (   d   i   s   p
0025540    S   i   z   e   )  \r  \t   t   e   s   t       f   o   n   t
0025560    F   i   l   e  \r  \t       i   f   s   o  \t   d   i   s   p
0025600    S   t   r   e   a   m       =       C   r   e   a   t   e   D
0025620    i   s   p   l   a   y   S   t   r   e   a   m   (   #   6   0
0025640    ,       d   i   s   p   V   e   c   ,       d   i   s   p   S
0025660    i   z   e   ,       f   o   n   t   )  \r  \t       i 376 001
0025700   \0 346 034   f   n   o   t  \t   d   i   s   p   S   t   r   e
0025720    a   m       =       C   r   e   a   t   e   D   i   s   p   l
0025740    a   y   S   t   r   e   a   m   (   #   6   0   ,       d   i
0025760    s   p   V   e   c   ,       d   i   s   p   S   i   z   e   )
0026000   \r  \t   S   h   o   w   D   i   s   p   l   a   y   S   t   r
0026020    e   a   m   (   d   i   s   p   S   t   r   e   a   m   )  \r
0026040   \r   /   /   n   o   w   ,       c   h   e   c   k       i   f
0026060        w   e       s   h   o   u   l   d       b   e       d   r
0026100    i   b   b   l   i   n   g  \r   /   /   a   n   d       c   o
0026120    n   s   t   r   u   c   t       t   h   e       o   u   t   s
0026140    t   r   e   a   m       a   c   c   o   r   d   i   n   g   l
0026160    y  \r  \t   l   e   t       o   u   t   s   t   r   e   a   m
0026200    V   e   c       =       v   e   c       l   S   T   ;        
0026220    o   u   t   s   t   r   e   a   m       =       o   u   t   s
0026240    t   r   e   a   m   V   e   c  \r  \t   t   e   s   t       d
0026260    r   i   b   b   l   e   F   l   a   g       i   f   s   o  \r
0026300   \t  \t   [ 376 001  \0   T   N  \r  \t  \t   d   r   i   b   b
0026320    l   e   F   i   l   e       =       O   p   e   n   F   i   l
0026340    e   (   "   O   E   d   i   t   .   l   s   t   "   ,       k
0026360    s   T   y   p   e   R   e   a   d   W   r   i   t   e   ,    
0026400    c   h   a   r   I   t   e   m   )  \r  \t  \t   o   u   t   s
0026420    t   r   e   a   m   >   >   S   T   .   p   u   t   s       =
0026440        P   u   t   s   O   u   t   s   t   r   e   a   m  \r  \t
0026460   \t   o   u   t   s   t   r   e   a   m   >   >   S   T   .   r
0026500    e   s   e   t       =       R   e   s   e   t   s   O   u   t
0026520    s   t   r   e   a   m  \r  \t  \t   o   u   t   s   t   r   e
0026540    a   m   >   >   S   T   .   c   l   o   s   e       =       C
0026560    l   o   s   e   s   O   u   t   s   t   r   e   a   m  \r  \t
0026600   \t   l   e   t       c   o   m   m   a   n   d   L   i   n   e
0026620        =  \r  \t  \t               O   p   e   n   F   i   l   e
0026640    (   "   C   o   m   .   C   m   "   ,       k   s   T   y   p
0026660    e   R   e   a   d   O   n   l   y   ,       c   h   a   r   I
0026700    t   e   m   ,       0   ,     376 001  \0   a  \f   f   p   C
0026720    o   m   C   m   )  \r  \t  \t   i   f       c   o   m   m   a
0026740    n   d   L   i   n   e       n   e       0       t   h   e   n
0026760   \r  \t  \t  \t   u   n   t   i   l       E   n   d   o   f   s
0027000    (   c   o   m   m   a   n   d   L   i   n   e   )       d   o
0027020   \r  \t  \t  \t  \t   P   u   t   s   (   d   r   i   b   b   l
0027040    e   F   i   l   e   ,       G   e   t   s   (   c   o   m   m
0027060    a   n   d   L   i   n   e   )   )  \r  \t  \t   ]  \r  \t    
0027100        i   f   n   o   t  \r  \t  \t   o   u   t   s   t   r   e
0027120    a   m       =       d   i   s   p   S   t   r   e   a   m  \r
0027140   \r   /   /       f   i   n   d       l   e   n   g   t   h   s
0027160        a   n   d       p   r   i   n   t       t   h   e   m  \r
0027200   \t   P   u   t   T   e   m   p   l   a   t   e   (   o   u   t
0027220    s   t   r   e   a   m   ,   "   *   N   *   N           L   e
0027240    n   g   t   h       (   b   y   t   e   s   )               "
0027260    )  \r  \t   f   o   r       i   =   1       t   o       f   i
0027300    l   e   s   !   0       d   o  \r  \t  \t   [  \r 376 001  \0
0027320  341 332  \t  \t   l   e   t       b   y   t   e   p   o   s   =
0027340    v   e   c       1  \r  \t  \t   F   i   l   e   L   e   n   g
0027360    t   h   (   f   i   l   e   s   !   i   ,       b   y   t   e
0027400    p   o   s   )  \r  \t  \t   P   u   t   T   e   m   p   l   a
0027420    t   e   (   o   u   t   s   t   r   e   a   m   ,   "   $   9
0027440    E   O   "   ,       b   y   t   e   p   o   s   )  \r   /   /
0027460    N   o   w       t   o       c   h   a   n   g   e       t   h
0027500    e       l   e   n   g   t   h       f   r   o   m       b   y
0027520    t   e   s       t   o       w   o   r   d   s   ,       r   o
0027540    u   n   d   i   n   g       u   p   ,       a   n   d  \r   /
0027560    /       s   t   o   r   e       t   h   e       w   o   r   d
0027600        l   e   n   g   t   h       i   n       f   L   e   n   s
0027620   \r  \t  \t   D   o   u   b   l   e   A   d   d   (   b   y   t
0027640    e   p   o   s   ,       o   n   e   D   P   )  \r  \t  \t   D
0027660    o   u   b   l   e   R   S   h   i   f   t   (   l   v       f
0027700    L   e   n   s   >   >   D   P   V   .   E   l   t   ^   i   ,
0027720        b 376 001  \0 360 002   y   t   e   p   o   s   ,       1
0027740    )  \r  \t  \t   ]  \r  \t   P   u   t   T   e   m   p   l   a
0027760    t   e   (   o   u   t   s   t   r   e   a   m   ,   "   *   N
0030000            L   e   n   g   t   h       (   w   o   r   d   s   )
0030020                "   )  \r  \t   f   o   r       i   =   1       t
0030040    o       f   i   l   e   s   !   0       d   o  \r  \t  \t   P
0030060    u   t   T   e   m   p   l   a   t   e   (   o   u   t   s   t
0030100    r   e   a   m   ,   "   $   9   E   O   "   ,       l   v    
0030120    f   L   e   n   s   >   >   D   P   V   .   E   l   t   ^   i
0030140    )  \r  \t   P   u   t   s   (   o   u   t   s   t   r   e   a
0030160    m   ,   $   *   N   )  \r  \r  \t   l   e   t       a   d   d
0030200    r   V   e   c       =       v   e   c       1   ;           a
0030220    d   d   r   =   a   d   d   r   V   e   c  \r  \t   A   s   s
0030240    i   g   n   D   P   (   a   d   d   r   ,       z   e   r   o
0030260    D   P   )  \r  \t   l   e   t       d   a   t   a   V   e   c
0030300        =       v   e   c       1   ;           d   a   t   a   =
0030320    d   a   t   a   V   e   c 376 001  \0   U 246  \r  \r   /   /
0030340    n   o   w   ,       g   o       i   n   t   o       t   h   e
0030360        m   a   i   n       c   o   m   m   a   n   d       l   o
0030400    o   p  \r  \t   l   e   t       f   u   l   l   P   a   g   e
0030420    D   i   s   p   l   a   y   =   f   a   l   s   e  \r  \t   f
0030440    u   l   l   P   a   g   e   D   i   s   p   l   a   y       =
0030460        R   e   a   d   A   n   d   D   o   C   o   m   m   a   n
0030500    d   (   f   u   l   l   P   a   g   e   D   i   s   p   l   a
0030520    y   )           r   e   p   e   a   t  \r   ]  \r  \r   a   n
0030540    d       D   i   s   p   l   a   y   (   m   o   d   e   W   o
0030560    r   d   )       b   e  \r   [  \r   P   u   t   s   (   o   u
0030600    t   s   t   r   e   a   m   ,       $   *   N   )  \r   P   u
0030620    t   T   e   m   p   l   a   t   e   (   o   u   t   s   t   r
0030640    e   a   m   ,   "   $   U   E   O   "   ,       a   d   d   r
0030660    )  \r   L   J   u   s   t   (   o   u   t   s   t   r   e   a
0030700    m   ,   a   d   d   r   ,   9   )  \r  \r   f   o   r       i
0030720    =   1       t   o       f   i   l   e   s   ! 376 001  \0 237
0030740  005   0       d   o  \r               t   e   s   t       P   o
0030760    s   i   t   i   o   n   F   i   l   e   (   i   ,       a   d
0031000    d   r   )  \r                   i   f   n   o   t       P   u
0031020    t   T   e   m   p   l   a   t   e   (   o   u   t   s   t   r
0031040    e   a   m   ,       "                                        
0031060        o   v   e   r   f   l   o   w                            
0031100    "   )  \r                   i   f   s   o       [  \r  \t   l
0031120    a   s   t   V   a   l   =   G   e   t   s   (   f   i   l   e
0031140    s   !   i   )  \r  \t   l   e   t       l   e   f   t   ,    
0031160    r   i   g   h   t       =       l   a   s   t   V   a   l   <
0031200    <   l   e   f   t   ,       l   a   s   t   V   a   l   <   <
0031220    r   i   g   h   t  \r  \t   i   f       (   o   c   t   a   l
0031240        &       m   o   d   e   W   o   r   d   )       n   e    
0031260    0  \r  \t  \t       t   h   e   n       P   u   t   T   e   m
0031300    p   l   a   t   e   (   o   u   t   s   t   r   e   a   m   ,
0031320        "   $   8   U   O           "   ,   l   a   s   t   V   a
0031340    l 376 001  \0  \f 357   )  \r  \t   i   f       (   h   a   l
0031360    f   O   c   t   a   l       &       m   o   d   e   W   o   r
0031400    d   )       n   e       0  \r  \t  \t       t   h   e   n    
0031420    P   u   t   T   e   m   p   l   a   t   e   (   o   u   t   s
0031440    t   r   e   a   m   ,       "   $   3   O       $   3   O    
0031460        "   ,       l   e   f   t   ,       r   i   g   h   t   )
0031500   \r  \t   i   f       (   h   a   l   f   A   s   c   i   i    
0031520    &       m   o   d   e   W   o   r   d   )       n   e       0
0031540   \r  \t       t   h   e   n  \r  \t                   P   u   t
0031560    T   e   m   p   l   a   t   e   (   o   u   t   s   t   r   e
0031600    a   m   ,       "   $   P       $   P           "   ,       S
0031620    h   o   w   C   h   a   r   ,       l   e   f   t   ,       S
0031640    h   o   w   C   h   a   r   ,       r   i   g   h   t   )  \r
0031660   \t   i   f       (   h   a   l   f   H   e   x       &       m
0031700    o   d   e   W   o   r   d   )       n   e       0       t   h
0031720    e   n  \r   P   u   t   T   e   m   p   l   a   t   e   (   o
0031740    u   t   s   t   r   e 376 001  \0   r 247   a   m   ,       "
0031760    $   P       $   P           "   ,       S   h   o   w   H   e
0032000    x   ,       l   e   f   t   ,       S   h   o   w   H   e   x
0032020    ,       r   i   g   h   t   )  \r  \t   i   f       (   h   a
0032040    l   f   E   b   c   d   i   c       &       m   o   d   e   W
0032060    o   r   d   )       n   e       0       t   h   e   n  \r   P
0032100    u   t   T   e   m   p   l   a   t   e   (   o   u   t   s   t
0032120    r   e   a   m   ,       "   $   P       $   P           "   ,
0032140        S   h   o   w   E   B   C   D   I   C   ,       l   e   f
0032160    t   ,       S   h   o   w   E   B   C   D   I   C   ,       r
0032200    i   g   h   t   )  \r  \t   i   f       (   d   e   c   i   m
0032220    a   l       &       m   o   d   e   W   o   r   d   )       n
0032240    e       0  \r  \t  \t   t   h   e   n       P   u   t   T   e
0032260    m   p   l   a   t   e   (   o   u   t   s   t   r   e   a   m
0032300    ,       "   $   8   D           "   ,       l   a   s   t   V
0032320    a   l   )  \r  \t   i   f       (   h   a   l   f   D   e   c
0032340    i   m   a   l       &       m   o   d   e 376 001  \0   ) 251
0032360    W   o   r   d   )       n   e       0  \r  \t  \t   t   h   e
0032400    n       P   u   t   T   e   m   p   l   a   t   e   (   o   u
0032420    t   s   t   r   e   a   m   ,       "   $   3   D       $   3
0032440    D           "   ,       l   e   f   t   ,       r   i   g   h
0032460    t   )  \r  \t   ]  \r   P   u   t   s   (   o   u   t   s   t
0032500    r   e   a   m   ,       $   *   S   )  \r   ]  \r  \r   a   n
0032520    d       D   i   s   p   l   a   y   V   a   l   u   e   (   )
0032540        b   e  \r   [  \r   P   u   t   s   (   o   u   t   s   t
0032560    r   e   a   m   ,       $   *   N   )  \r   P   u   t   T   e
0032600    m   p   l   a   t   e   (   o   u   t   s   t   r   e   a   m
0032620    ,   "                       $   E   U   O   b       =       $
0032640    E   D   .   "   ,       d   a   t   a   ,       d   a   t   a
0032660    )  \r   ]  \r  \r   a   n   d       S   e   t   S   t   d   (
0032700    m   a   s   k   ,       s   e   n   s   e   )       b   e  \r
0032720    t   e   s   t       s   e   n   s   e  \r           i   f   s
0032740    o       s   t   a   n   d   a   r   d       =       s   t   a
0032760  376 001  \0 320 314   n   d   a   r   d       %       m   a   s
0033000    k  \r           i   f   n   o   t       s   t   a   n   d   a
0033020    r   d       =       s   t   a   n   d   a   r   d       &    
0033040    (   n   o   t       m   a   s   k   )  \r  \r   a   n   d    
0033060    W   r   i   t   e   F   i   l   e   (   )       b   e  \r   [
0033100   \r   i   f       f   i   l   e   s   !   0       l   s       1
0033120        t   h   e   n  \t  \t   /   /   n   o       f   i   l   e
0033140        t   o       w   r   i   t   e       i   n   !  \r  \t   [
0033160   \r  \t   W   s   s   (   o   u   t   s   t   r   e   a   m   ,
0033200        "   ?   *   N   N   o       f   i   r   s   t       f   i
0033220    l   e       t   o       w   r   i   t   e       i   n   !   "
0033240    )  \r  \t   r   e   t   u   r   n  \r  \t   ]  \r   i   f    
0033260    w   r   i   t   e   F   l   a   g       e   q       f   a   l
0033300    s   e       t   h   e   n  \r  \t   [  \r  \t   W   s   s   (
0033320    o   u   t   s   t   r   e   a   m   ,       "   *   N   O   p
0033340    e   n       f   i   r   s   t       f   i   l   e       f   o
0033360    r       w   r   i 376 001  \0   d   +   t   i   n   g       [
0033400    c   o   n   f   i   r   m       w   i   t   h       C   R   ]
0033420    "   )  \r  \t   t   e   s   t       G   e   t   K   e   y   s
0033440    (   )       e   q       $   *   N  \r  \t       i   f   s   o
0033460   \r  \t           [  \r  \t           C   l   o   s   e   s   (
0033500    f   i   l   e   s   !   1   )  \r          \t           l   e
0033520    t       f   =   I   n   t   e   r   D   i   s   k   O   p   e
0033540    n   F   i   l   e   (   f   i   r   s   t   N   a   m   e   ,
0033560    k   s   T   y   p   e   R   e   a   d   W   r   i   t   e   ,
0033600    w   o   r   d   I   t   e   m   )  \r  \t           i   f    
0033620    f       e   q       0       t   h   e   n  \r  \t  \t   [  \r
0033640   \t  \t   W   s   s   (   d   s   p   ,       "   *   N   S   o
0033660    r   r   y   ,       r   e   o   p   e   n       n   o   t    
0033700    s   u   c   c   e   s   s   f   u   l   .   "   )  \r  \t  \t
0033720    a   b   o   r   t  \r  \t  \t   ]  \r  \t           f   i   l
0033740    e   s   !   1   =   f  \r  \t           w   r   i   t   e   F
0033760    l   a   g       =       t   r   u   e 376 001  \0 275 241  \r
0034000   \t           ]  \r  \t       i   f   n   o   t  \r  \t        
0034020    [  \r  \t           W   s   s   (   o   u   t   s   t   r   e
0034040    a   m   ,       "   ?   *   n   C   a   n   c   e   l   l   i
0034060    n   g       t   h   e       w   r   i   t   e       r   e   q
0034100    u   e   s   t   !   "   )  \r  \t           r   e   t   u   r
0034120    n  \r  \t           ]  \r  \t   ]  \r   t   e   s   t       P
0034140    o   s   i   t   i   o   n   F   i   l   e   (   1   ,       a
0034160    d   d   r   )  \r       i   f   s   o       P   u   t   s   (
0034200    f   i   l   e   s   !   1   ,       d   a   t   a   >   >   D
0034220    P   .   L   o   w   )  \r       i   f   n   o   t       W   s
0034240    s   (   o   u   t   s   t   r   e   a   m   ,   "           O
0034260    v   e   r   f   l   o   w   "   )  \r   ]  \r  \r   /   /    
0034300    f       i   s       a       f   i   l   e   V   e   c       i
0034320    n   d   e   x   .  \r   /   /       I   f       p       g   r
0034340        f   L   e   n   s   >   >   D   P   V   .   E   l   t   ^
0034360    i       (   d   o   u   b   l   e   -   p   r   e   c   i 376
0034400  001  \0 336 255   s   i   o   n   )       r   e   s   u   l   t
0034420    i   s       f   a   l   s   e       a   n   d       n   o  \r
0034440    /   /       p   o   s   i   t   i   o   n   i   n   g       i
0034460    s       d   o   n   e   .           O   t   h   e   r   w   i
0034500    s   e       r   e   s   u   l   t   i   s       t   r   u   e
0034520   \r  \r   a   n   d       P   o   s   i   t   i   o   n   F   i
0034540    l   e   (   f   ,       p   )   =   v   a   l   o   f       [
0034560   \r   /   /       c   h   e   c   k       f   o   r       o   v
0034600    e   r   f   l   o   w  \r  \t   i   f       D   o   u   b   l
0034620    e   U   s   c   (   p   ,       l   v       f   L   e   n   s
0034640    >   >   D   P   V   .   E   l   t   ^   f   )       g   e    
0034660    0       t   h   e   n       r   e   s   u   l   t   i   s    
0034700    f   a   l   s   e  \r  \t   f   =   f   i   l   e   s   !   f
0034720   \r  \t   l   e   t       p   B   y   t   e   s       =       v
0034740    e   c       1  \r  \t   D   o   u   b   l   e   L   S   h   i
0034760    f   t   (   p   B   y   t   e   s   ,       p   ,       1   )
0035000   \r  \t   S   e 376 001  \0 265 030   t   F   i   l   e   P   o
0035020    s   (   f   ,       p   B   y   t   e   s   )  \r  \t   r   e
0035040    s   u   l   t   i   s       t   r   u   e  \r  \t   ]  \r  \r
0035060    a   n   d       C   l   o   s   e   s   O   u   t   s   t   r
0035100    e   a   m   (   s   )       b   e  \r  \t   [  \r  \t   C   l
0035120    o   s   e   s   (   d   i   s   p   S   t   r   e   a   m   )
0035140   \r  \t   T   r   u   n   c   a   t   e   D   i   s   k   S   t
0035160    r   e   a   m   (   d   r   i   b   b   l   e   F   i   l   e
0035200    )  \r  \t   C   l   o   s   e   s   (   d   r   i   b   b   l
0035220    e   F   i   l   e   )  \r  \t   ]  \r  \r   a   n   d       P
0035240    u   t   s   O   u   t   s   t   r   e   a   m   (   s   ,    
0035260    c   )       b   e  \r  \t   [  \r  \t   P   u   t   s   (   d
0035300    i   s   p   S   t   r   e   a   m   ,       c   )  \r  \t   P
0035320    u   t   s   (   d   r   i   b   b   l   e   F   i   l   e   ,
0035340        c   )  \r  \t   ]  \r  \r   a   n   d       R   e   s   e
0035360    t   s   O   u   t   s   t   r   e   a   m   (   s   )       b
0035400    e  \r  \t   R   e   s   e   t   s 376 001  \0  \n   `   (   d
0035420    i   s   p   S   t   r   e   a   m   )  \r  \r   a   n   d    
0035440    L   J   u   s   t   (   s   ,       d   A   ,       f   L   )
0035460        b   e  \r  \t   [  \r  \t   f   o   r       i       =    
0035500    1       t   o       f   L   -   (   d   A   !   0   ?       5
0035520    +   L   J   H   i   g   h   (   d   A   !   0   )   ,       L
0035540    J   L   o   w   (   d   A   !   1   )   )       d   o       P
0035560    u   t   s   (   s   ,   $   *   S   )  \r  \t   ]  \r  \r   a
0035600    n   d       L   J   L   o   w   (   n   )       =       (   n
0035620    &   #   1   0   0   0   0   0   )       n   e       0   ?    
0035640    6   ,       (   n   &   #   7   0   0   0   0   )       n   e
0035660        0   ?       5   ,       (   n   &   #   7   0   0   0   )
0035700        n   e       0   ?       4   ,  \r  \t  \t   (   n   &   #
0035720    7   0   0   )       n   e       0   ?       3   ,       (   n
0035740    &   #   7   0   )       n   e       0   ?       2   ,       1
0035760   \r  \r   a   n   d       L   J   H   i   g   h   (   n   )    
0036000    =       (   n   &   #   1   4   0   0   0   0   )     376 001
0036020   \0 234   v   n   e       0   ?       6   ,       (   n   &   #
0036040    3   4   0   0   0   )       n   e       0   ?       5   ,    
0036060    (   n   &   #   3   4   0   0   )       n   e       0   ?    
0036100    4   ,  \r  \t  \t   (   n   &   #   3   4   0   )       n   e
0036120        0   ?       3   ,       (   n   &   #   3   4   )       n
0036140    e       0   ?       2   ,       1  \r  \r   a   n   d       S
0036160    h   o   w   C   h   a   r   (   s   ,       c   )       b   e
0036200   \r               P   u   t   T   e   m   p   l   a   t   e   (
0036220    s   ,       (   c       g   e       #   1   7   7   ?       "
0036240            "   ,       c   >   #   3   7   ?       "   *   S   $
0036260    C   "   ,       "   ^   $   C   "   )   ,       (   c   >   #
0036300    3   7   ?       c   ,       c   +   #   1   0   0   )   )  \r
0036320   \r   a   n   d       S   h   o   w   H   e   x   (   s   ,    
0036340    c   )       b   e       f   o   r       i       =       0    
0036360    t   o       1       d   o  \r  \t   [       l   e   t       b
0036400        =       (   c       r   s   h   i   f   t       4   )   &
0036420    #   1   7 376 001  \0 312 003   ;       P   u   t   s   (   s
0036440    ,       b   <   1   0   ?       $   0   +   b   ,       (   $
0036460    A   -   1   0   )   +   b   )   ;       c       =       c    
0036500    l   s   h   i   f   t       4       ]  \r  \r   a   n   d    
0036520    S   h   o   w   E   B   C   D   I   C   (   s   ,       c   )
0036540        b   e       P   u   t   s   (   s   ,       E   b   c   d
0036560    i   c   T   o   A   s   c   i   i   (   c   )   )  \r  \r   a
0036600    n   d       E   b   c   d   i   c   T   o   A   s   c   i   i
0036620    (   c   )       =  \r   (   c       l   s       #   1   0   0
0036640    ?       $   ~   ,       (       t   a   b   l   e       [  \r
0036660   \t   $   *   S   ;   $   ~   ;   $   ~   ;   $   ~   ;   $   ~
0036700    ;   $   ~   ;   $   ~   ;   $   ~   ;           $   ~   ;   $
0036720    ~   ;   $   \   ;   $   .   ;   $   <   ;   $   (   ;   $   +
0036740    ;   $   |   ;  \r  \t   $   &   ;   $   ~   ;   $   ~   ;   $
0036760    ~   ;   $   ~   ;   $   ~   ;   $   ~   ;   $   ~   ;        
0037000    $   ~   ;   $   ~   ;   $   !   ;   $   $   ;   $   *   *   ;
0037020    $   )   ;   $   ;   ;   $   ^ 376 001  \0   b 272   ;  \r  \t
0037040    $   -   ;   $   /   ;   $   ~   ;   $   ~   ;   $   ~   ;   $
0037060    ~   ;   $   ~   ;   $   ~   ;           $   ~   ;   $   ~   ;
0037100    $   ~   ;   $   ,   ;   $   %   ;   $   _   ;   $   >   ;   $
0037120    ?   ;  \r  \t   $   ~   ;   $   ~   ;   $   ~   ;   $   ~   ;
0037140    $   ~   ;   $   ~   ;   $   ~   ;   $   ~   ;           $   ~
0037160    ;   $   ~   ;   $   :   ;   $   #   ;   $   @   ;   $   '   ;
0037200    $   =   ;   $   "   ;  \r  \t   $   ~   ;   $   a   ;   $   b
0037220    ;   $   c   ;   $   d   ;   $   e   ;   $   f   ;   $   g   ;
0037240            $   h   ;   $   i   ;   $   ~   ;   $   ~   ;   $   ~
0037260    ;   $   ~   ;   $   ~   ;   $   ~   ;  \r  \t   $   ~   ;   $
0037300    j   ;   $   k   ;   $   l   ;   $   m   ;   $   n   ;   $   o
0037320    ;   $   p   ;           $   q   ;   $   r   ;   $   ~   ;   $
0037340    ~   ;   $   ~   ;   $   ~   ;   $   ~   ;   $   ~   ;  \r  \t
0037360    $   ~   ;   $   ~   ;   $   s   ;   $   t   ;   $   u   ;   $
0037400    v   ;   $   w   ;   $   x   ;           $   y   ;   $   z   ;
0037420    $   ~   ;   $   ~   ;   $   ~   ;   $   ~   ;   $ 376 001  \0
0037440    _ 261   ~   ;   $   ~   ;  \r  \t   $   ~   ;   $   ~   ;   $
0037460    ~   ;   $   ~   ;   $   ~   ;   $   ~   ;   $   ~   ;   $   ~
0037500    ;           $   ~   ;   $   ~   ;   $   ~   ;   $   ~   ;   $
0037520    ~   ;   $   ~   ;   $   ~   ;   $   ~   ;  \r  \t   $   ~   ;
0037540    $   A   ;   $   B   ;   $   C   ;   $   D   ;   $   E   ;   $
0037560    F   ;   $   G   ;           $   H   ;   $   I   ;   $   ~   ;
0037600    $   ~   ;   $   ~   ;   $   ~   ;   $   ~   ;   $   ~   ;  \r
0037620   \t   $   ~   ;   $   J   ;   $   K   ;   $   L   ;   $   M   ;
0037640    $   N   ;   $   O   ;   $   P   ;           $   Q   ;   $   R
0037660    ;   $   ~   ;   $   ~   ;   $   ~   ;   $   ~   ;   $   ~   ;
0037700    $   ~   ;  \r  \t   $   ~   ;   $   ~   ;   $   S   ;   $   T
0037720    ;   $   U   ;   $   V   ;   $   W   ;   $   X   ;           $
0037740    Y   ;   $   Z   ;   $   ~   ;   $   ~   ;   $   ~   ;   $   ~
0037760    ;   $   ~   ;   $   ~   ;  \r  \t   $   0   ;   $   1   ;   $
0040000    2   ;   $   3   ;   $   4   ;   $   5   ;   $   6   ;   $   7
0040020    ;           $   8   ;   $   9   ;   $   ~   ;   $   ~   ;   $
0040040    ~   ; 376 001  \0 261 300   $   ~   ;   $   ~   ;   $   ~    
0040060    ]       )       !       (   c   -   #   1   0   0   )       )
0040100   \r  \r   a   n   d       A   s   c   i   i   T   o   E   b   c
0040120    d   i   c   (   c   )       =       v   a   l   o   f  \r   [
0040140   \r   i   f       c       e   q       $   ~       t   h   e   n
0040160        r   e   s   u   l   t   i   s       0  \r   f   o   r    
0040200    i   n   d       =       #   1   0   0       t   o       #   3
0040220    7   7       d   o      \r  \t   i   f       E   b   c   d   i
0040240    c   T   o   A   s   c   i   i   (   i   n   d   )       e   q
0040260        c       t   h   e   n       r   e   s   u   l   t   i   s
0040300        i   n   d  \r   r   e   s   u   l   t   i   s       0  \r
0040320    ]  \r  \r   a   n   d       G   e   t   K   e   y   s   (   )
0040340        =       v   a   l   o   f  \r  \t   t   e   s   t       p
0040360    u   t   b   a   c   k   I   n   F   o   r   c   e  \r  \t    
0040400        i   f   s   o  \r  \t  \t   [  \r  \t  \t   p   u   t   b
0040420    a   c   k   I   n   F   o   r   c   e       =       f   a   l
0040440    s   e  \r  \t  \t   r   e 376 001  \0   T 251   s   u   l   t
0040460    i   s       p   u   t   b   a   c   k   C   h   a   r  \r  \t
0040500   \t   ]  \r  \t           i   f   n   o   t  \r  \t  \t   r   e
0040520    s   u   l   t   i   s       G   e   t   s   (   k   e   y   s
0040540    )  \r  \r   a   n   d       P   u   t   b   a   c   k   K   e
0040560    y   s   (   c   h   a   r   )       b   e  \r   [  \r   i   f
0040600        p   u   t   b   a   c   k   I   n   F   o   r   c   e    
0040620    t   h   e   n       C   a   l   l   S   w   a   t   (   "   A
0040640    t   t   e   m   p   t       t   o       p   u   t   b   a   c
0040660    k       w   i   t   h       a       p   u   t   b   a   c   k
0040700        i   n       f   o   r   c   e   .   "   )  \r   p   u   t
0040720    b   a   c   k   I   n   F   o   r   c   e       =       t   r
0040740    u   e  \r   p   u   t   b   a   c   k   C   h   a   r       =
0040760        c   h   a   r  \r   ]  \r  \r   a   n   d       A   n   n
0041000    o   u   n   c   e   N   e   w   T   r   i   (   )       b   e
0041020   \r  \t   [  \r  \t   W   s   (   "   O   E   d   i   t       n
0041040    o       l   o   n   g   e   r       a   l   l 376  \0 220 001
0041060    7   o   w   s       t   h   e       /   T       s   w   i   t
0041100    c   h   .   *   n   "   )  \r  \t   W   s   (   "   I   n   s
0041120    t   e   a   d   ,       p   r   e   c   e   d   e       e   a
0041140    c   h       f   i   l   e       n   a   m   e       b   y    
0041160    a       d   r   i   v   e       s   p   e   c   i   f   i   c
0041200    a   t   i   o   n   *   n   "   )  \r  \t   W   s   (   "    
0041220    o   f       t   h   e       f   o   r   m       *   "   D   P
0041240    i   :   *   "       o   r       *   "   T   P   i   :   *   "
0041260    .   *   n   "   )  \r  \t   a   b   o   r   t  \r  \t   ]  \r
0041300   \r 377  \0  \0   O   e   d   i   t   C   o   m   .   b   c   p
0041320    l  \0 373 226   H   9 250  \0  \0 376 001  \0 331 323   /   /
0041340        O   e   d   i   t   C   o   m   .   b   c   p   l      \r
0041360    /   /       C   o   p   y   r   i   g   h   t       X   e   r
0041400    o   x       C   o   r   p   o   r   a   t   i   o   n       1
0041420    9   7   9   ,   1   9   8   0  \r  \r   g   e   t       "   s
0041440    t   r   e   a   m   s   .   d   "  \r   g   e   t       "   o
0041460    e   d   i   t   .   d   "  \r  \r   e   x   t   e   r   n   a
0041500    l  \r  \t   [  \r   /   /   i   m   p   o   r   t       f   r
0041520    o   m       t   h   e       O   S  \r  \t   G   e   t   s   ;
0041540        P   u   t   s   ;       d   s   p   ;       k   e   y   s
0041560    ;       W   s   s  \r  \t   R   e   s   e   t   s   ;       C
0041600    l   o   s   e   s   ;       E   n   d   o   f   s  \r  \t   D
0041620    o   u   b   l   e   A   d   d   ;       U   s   c   ;       W
0041640    s  \r  \r   /   /   i   m   p   o   r   t       f   r   o   m
0041660        T   e   m   p   l   a   t   e  \r  \t   P   u   t   T   e
0041700    m   p   l   a   t   e  \r  \r   /   /   i   m   p   o   r   t
0041720        f   r   o   m       U   t   i   l   D   P  \r  \t 376 001
0041740   \0 316 303   A   s   s   i   g   n   D   P  \r  \t   N   e   g
0041760    a   t   e   D   P  \r  \t   D   o   u   b   l   e   L   S   h
0042000    i   f   t  \r  \t   D   o   u   b   l   e   U   s   c  \r  \t
0042020    z   e   r   o   D   P  \r  \t   o   n   e   D   P  \r  \t   m
0042040    i   n   u   s   O   n   e   D   P  \r  \r   /   /   i   m   p
0042060    o   r   t       f   r   o   m       O   E   d   i   t  \r  \t
0042100    D   i   s   p   l   a   y   ;       D   i   s   p   l   a   y
0042120    V   a   l   u   e  \r  \t   W   r   i   t   e   F   i   l   e
0042140   \r  \t   P   o   s   i   t   i   o   n   F   i   l   e  \r  \t
0042160    G   e   t   K   e   y   s  \r  \t   P   u   t   b   a   c   k
0042200    K   e   y   s  \r  \t   A   s   c   i   i   T   o   E   b   c
0042220    d   i   c   ;           E   b   c   d   i   c   T   o   A   s
0042240    c   i   i  \r  \t   m   o   d   e   s   ;       f   i   l   e
0042260    s   ;       a   d   d   r   ;       d   a   t   a   ;       l
0042300    a   s   t   V   a   l  \r  \t   w   r   i   t   e   F   l   a
0042320    g   ;           d   a   t   a   F   l   a   g   ;       o   u
0042340    t   s   t 376 001  \0   7 277   r   e   a   m   ;       s   t
0042360    a   n   d   a   r   d  \r  \t   ]  \r  \r   e   x   t   e   r
0042400    n   a   l  \r  \t   [  \r   /   /   e   x   p   o   r   t    
0042420    t   o       O   E   d   i   t  \r  \t   R   e   a   d   A   n
0042440    d   D   o   C   o   m   m   a   n   d  \r  \t   ]  \r  \r   l
0042460    e   t       R   e   a   d   A   n   d   D   o   C   o   m   m
0042500    a   n   d   (   f   u   l   l   P   a   g   e   O   n   D   i
0042520    s   p   l   a   y   )       =       v   a   l   o   f  \r   [
0042540   \r   l   e   t       n   u   m   T   o   S   h   o   w       =
0042560        n   i   l  \r   A   s   s   i   g   n   D   P   (   d   a
0042600    t   a   ,       z   e   r   o   D   P   )  \r   d   a   t   a
0042620    F   l   a   g       =       f   a   l   s   e  \r   W   s   s
0042640    (   o   u   t   s   t   r   e   a   m   ,       "   #   "   )
0042660   \r   i   f       G   e   t   D   a   t   a   (   )       e   q
0042700        e   r   r   R   e   t       t   h   e   n      \r  \t   [
0042720   \r  \t   W   s   s   (   o   u   t   s   t   r   e   a   m   ,
0042740        "           ?   ?   "   ) 376 001  \0   l   d  \r  \t   D
0042760    i   s   p   l   a   y   (   s   t   a   n   d   a   r   d   )
0043000   \r  \t   r   e   s   u   l   t   i   s       f   a   l   s   e
0043020   \r  \t   ]  \r   l   e   t       c   =   G   e   t   K   e   y
0043040    s   (   )  \r   s   w   i   t   c   h   o   n       c       i
0043060    n   t   o       [  \r   /   /   F   i   r   s   t   ,       t
0043100    h   e       c   o   n   t   r   o   l       c   h   a   r   a
0043120    c   t   e   r   s       f   o   r       d   i   s   p   l   a
0043140    y  \r  \t           c   a   s   e       #   1   7   :        
0043160    /   /   c   o   n   t   r   o   l   -   O   ,       d   i   p
0043200    l   a   y       i   n       o   c   t   a   l  \r  \t        
0043220    c   a   s   e       #   1   0   :           /   /   c   o   n
0043240    t   r   o   l   -   H   ,       d   i   p   l   a   y       i
0043260    n       h   a   l   f   O   c   t   a   l  \r  \t           c
0043300    a   s   e       #   3   0   :           /   /   c   o   n   t
0043320    r   o   l   -   X   ,       d   i   p   l   a   y       i   n
0043340        h   a   l   f   H   e   x  \r  \t           c 376 001  \0
0043360  350 314   a   s   e       #   1   :           c   a   s   e    
0043400    #   3   :           c   a   s   e       #   2   3   :  \r  \t
0043420   \t  \t   /   /   c   o   n   t   r   o   l   -   (   A       o
0043440    r       C       o   r       S   )   ,       d   i   p   l   a
0043460    y       i   n       h   a   l   f   A   s   c   i   i  \r  \t
0043500            c   a   s   e       #   5   :           /   /   c   o
0043520    n   t   r   o   l   -   E   ,       d   i   p   l   a   y    
0043540    i   n       h   a   l   f   E   b   c   d   i   c  \r  \t    
0043560        c   a   s   e       #   4   :           /   /   c   o   n
0043600    t   r   o   l   -   D   ,       d   i   p   l   a   y       i
0043620    n       d   e   c   i   m   a   l  \r  \t           c   a   s
0043640    e       #   1   6   :           /   /   c   o   n   t   r   o
0043660    l   -   N   ,       d   i   p   l   a   y       i   n       h
0043700    a   l   f   D   e   c   i   m   a   l  \r  \t  \t   i   f    
0043720    d   a   t   a   F   l   a   g       t   h   e   n       A   s
0043740    s   i   g   n   D   P   (   a   d   d   r   ,       d   a   t
0043760    a   ) 376 001  \0 271 036  \r  \t  \t   P   u   t   s   (   o
0044000    u   t   s   t   r   e   a   m   ,       $   ^   )  \r  \t  \t
0044020    P   u   t   s   (   o   u   t   s   t   r   e   a   m   ,    
0044040    c   +   #   1   0   0   )  \r  \t  \t   D   i   s   p   l   a
0044060    y   (   m   o   d   e   s       !       c   )  \r  \t  \t   r
0044100    e   s   u   l   t   i   s       f   a   l   s   e  \r   /   /
0044120    N   o   w   ,       f   o   r       t   h   e       s   t   o
0044140    r   e       a   n   d       t   h   e   n       d   i   s   p
0044160    l   a   y       s   t   a   n   d   a   r   d       m   o   d
0044200    e  \r  \t           c   a   s   e       #   2   6   :        
0044220    c   a   s   e       $   V   :           c   a   s   e       $
0044240    v   :           c   a   s   e       $   =   :           /   /
0044260    d   i   s   p   l   a   y       v   a   l   u   e  \r  \t  \t
0044300    P   u   t   s   (   o   u   t   s   t   r   e   a   m   ,    
0044320    $   =   )  \r  \t  \t   D   i   s   p   l   a   y   V   a   l
0044340    u   e   (   )  \r  \t  \t   D   i   s   p   l   a   y   (   s
0044360    t   a   n   d   a   r   d 376 001  \0   v 216   )  \r  \t  \t
0044400    r   e   s   u   l   t   i   s       f   a   l   s   e  \r  \t
0044420            c   a   s   e       #   1   2   :       i   f       d
0044440    a   t   a   F   l   a   g       t   h   e   n       W   r   i
0044460    t   e   F   i   l   e   (   )  \r  \t  \t   D   o   u   b   l
0044500    e   A   d   d   (   a   d   d   r   ,       o   n   e   D   P
0044520    )  \r  \t  \t   D   i   s   p   l   a   y   (   s   t   a   n
0044540    d   a   r   d   )  \r  \t  \t   r   e   s   u   l   t   i   s
0044560        f   a   l   s   e  \r  \t           c   a   s   e       $
0044600    >   :           i   f       d   a   t   a   F   l   a   g    
0044620    t   h   e   n       W   r   i   t   e   F   i   l   e   (   )
0044640   \r  \t  \t   R   e   s   e   t   s   (   o   u   t   s   t   r
0044660    e   a   m   )  \r  \t  \t   D   i   s   p   l   a   y   (   s
0044700    t   a   n   d   a   r   d   )  \r  \t  \t   f   o   r       i
0044720    =   1       t   o       #   4   0       d   o  \r  \t  \t  \t
0044740    [  \r  \t  \t  \t   D   o   u   b   l   e   A   d   d   (   a
0044760    d   d   r   ,       o   n   e   D   P   )  \r 376 001  \0   C
0045000  024  \t  \t  \t   D   i   s   p   l   a   y   (   s   t   a   n
0045020    d   a   r   d   )  \r  \t  \t  \t   ]  \r  \t  \t   r   e   s
0045040    u   l   t   i   s       t   r   u   e  \r  \t           c   a
0045060    s   e       $   ^   :       c   a   s   e       #   2   7   :
0045100       \r  \t  \t   P   u   t   s   (   o   u   t   s   t   r   e
0045120    a   m   ,       $   ^   )  \r  \t  \t   i   f       d   a   t
0045140    a   F   l   a   g       t   h   e   n       W   r   i   t   e
0045160    F   i   l   e   (   )  \r  \t  \t   D   o   u   b   l   e   A
0045200    d   d   (   a   d   d   r   ,       m   i   n   u   s   O   n
0045220    e   D   P   )  \r  \t  \t   D   i   s   p   l   a   y   (   s
0045240    t   a   n   d   a   r   d   )  \r  \t  \t   r   e   s   u   l
0045260    t   i   s       f   a   l   s   e  \r  \t           c   a   s
0045300    e       $   <   :       i   f       d   a   t   a   F   l   a
0045320    g       t   h   e   n       W   r   i   t   e   F   i   l   e
0045340    (   )  \r  \t  \t   i   f       f   u   l   l   P   a   g   e
0045360    O   n   D   i   s   p   l   a   y       t   h   e   n  \r  \t
0045400   \t 376 001  \0   l 215           f   o   r       i   =   1    
0045420    t   o       #   4   0       d   o       D   o   u   b   l   e
0045440    A   d   d   (   a   d   d   r   ,       m   i   n   u   s   O
0045460    n   e   D   P   )  \r  \t  \t   f   o   r       i   =   1    
0045500    t   o       #   4   0       d   o       D   o   u   b   l   e
0045520    A   d   d   (   a   d   d   r   ,       m   i   n   u   s   O
0045540    n   e   D   P   )  \r  \t  \t   R   e   s   e   t   s   (   o
0045560    u   t   s   t   r   e   a   m   )  \r  \t  \t   D   i   s   p
0045600    l   a   y   (   s   t   a   n   d   a   r   d   )  \r  \t  \t
0045620    f   o   r       i   =   1       t   o       #   4   0       d
0045640    o  \r  \t  \t  \t   [  \r  \t  \t  \t   D   o   u   b   l   e
0045660    A   d   d   (   a   d   d   r   ,       o   n   e   D   P   )
0045700   \r  \t  \t  \t   D   i   s   p   l   a   y   (   s   t   a   n
0045720    d   a   r   d   )  \r  \t  \t  \t   ]  \r  \t  \t   r   e   s
0045740    u   l   t   i   s       t   r   u   e  \r   /   /   A   n   d
0045760        t   h   e       c   r   ,       t   a   b   ,       s   l
0046000    a   s   h   ,       a 376 001  \0 305 001   n   d       b   a
0046020    n   g       c   o   m   m   a   n   d   s  \r  \t           c
0046040    a   s   e       $   *   N   :  \r  \t  \t   i   f       d   a
0046060    t   a   F   l   a   g       t   h   e   n       W   r   i   t
0046100    e   F   i   l   e   (   )  \r  \t  \t   D   i   s   p   l   a
0046120    y   (   s   t   a   n   d   a   r   d   )  \r  \t  \t   r   e
0046140    s   u   l   t   i   s       f   a   l   s   e  \r  \t        
0046160    c   a   s   e       #   1   1   :  \r  \t  \t   W   s   s   (
0046200    o   u   t   s   t   r   e   a   m   ,       "   ^   I   "   )
0046220   \r  \t  \t   i   f       d   a   t   a   F   l   a   g       t
0046240    h   e   n       W   r   i   t   e   F   i   l   e   (   )  \r
0046260   \t  \t   a   d   d   r   !   0   =   0   ;           a   d   d
0046300    r   !   1   =   l   a   s   t   V   a   l  \r  \t  \t   D   i
0046320    s   p   l   a   y   (   s   t   a   n   d   a   r   d   )  \r
0046340   \t  \t   r   e   s   u   l   t   i   s       f   a   l   s   e
0046360   \r  \t           c   a   s   e       $   /   :  \r  \t  \t   W
0046400    s   s   (   o   u   t   s   t   r   e   a 376 001  \0   {   U
0046420    m   ,       "   /   "   )  \r  \t  \t   i   f       d   a   t
0046440    a   F   l   a   g       t   h   e   n       A   s   s   i   g
0046460    n   D   P   (   a   d   d   r   ,       d   a   t   a   )  \r
0046500   \t  \t   D   i   s   p   l   a   y   (   s   t   a   n   d   a
0046520    r   d   )  \r  \t  \t   r   e   s   u   l   t   i   s       f
0046540    a   l   s   e  \r  \t           c   a   s   e       $   !   :
0046560   \r  \t  \t   W   s   s   (   o   u   t   s   t   r   e   a   m
0046600    ,       "   !   "   )  \r  \t  \t   i   f       d   a   t   a
0046620    F   l   a   g       t   h   e   n       A   s   s   i   g   n
0046640    D   P   (   a   d   d   r   ,       d   a   t   a   )  \r  \t
0046660   \t   R   e   s   e   t   s   (   o   u   t   s   t   r   e   a
0046700    m   )  \r  \t  \t   D   i   s   p   l   a   y   (   s   t   a
0046720    n   d   a   r   d   )  \r  \t  \t   f   o   r       i   =   1
0046740        t   o       #   4   0       d   o      \r  \t  \t  \t   [
0046760   \r  \t  \t  \t   D   o   u   b   l   e   A   d   d   (   a   d
0047000    d   r   ,       o   n   e   D   P   )  \r  \t  \t  \t   D   i
0047020  376 001  \0   0 375   s   p   l   a   y   (   s   t   a   n   d
0047040    a   r   d   )  \r  \t  \t  \t   ]  \r  \t  \t   r   e   s   u
0047060    l   t   i   s       t   r   u   e  \r   /   /   f   i   n   a
0047100    l   l   y   ,       t   h   e       f   u   n   n   y       g
0047120    u   y   s       a   l   l       b   y       t   h   e   m   s
0047140    e   l   v   e   s  \r  \t           c   a   s   e       $   F
0047160    :           c   a   s   e       $   f   :           c   a   s
0047200    e       #   6   :  \r  \t  \t   P   u   t   s   (   o   u   t
0047220    s   t   r   e   a   m   ,       $   F   )  \r  \t  \t   t   e
0047240    s   t       d   a   t   a   F   l   a   g       i   f   s   o
0047260   \r  \t  \t  \t   [  \r  \t  \t  \t   W   s   s   (   o   u   t
0047300    s   t   r   e   a   m   ,       "   *   N   S   e   a   r   c
0047320    h   i   n   g       [   h   i   t       a   n   y       k   e
0047340    y       t   o       i   n   t   e   r   r   u   p   t   ]   .
0047360    .   .   "   )  \r  \t  \t  \t   F   i   n   d   A   d   d   r
0047400    (   )  \r  \t  \t  \t   D   i   s   p   l   a   y   (   s   t
0047420    a   n   d   a   r 376 001  \0 377 342   d   )  \r  \t  \t  \t
0047440    r   e   s   u   l   t   i   s       f   a   l   s   e  \r  \t
0047460   \t  \t   ]  \r  \t  \t           i   f   n   o   t  \r  \t  \t
0047500   \t   [  \r  \t  \t  \t   D   o   W   i   z   a   r   d   C   o
0047520    m   m   a   n   d   (   )  \r  \t  \t  \t   r   e   s   u   l
0047540    t   i   s       f   a   l   s   e  \r  \t  \t  \t   ]  \r  \t
0047560            c   a   s   e       $   Q   :       c   a   s   e    
0047600    $   q   :       c   a   s   e       #   2   1   :  \r  \t  \t
0047620    W   s   s   (   o   u   t   s   t   r   e   a   m   ,   "   *
0047640    N   Q   u   i   t       [   c   o   n   f   i   r   m       w
0047660    i   t   h       C   R   ]   "   )  \r  \t  \t   i   f       G
0047700    e   t   K   e   y   s   (   )       e   q       $   *   N    
0047720    t   h   e   n       [  \r  \t  \t           C   l   o   s   e
0047740    s   (   o   u   t   s   t   r   e   a   m   )  \r  \t  \t    
0047760        i   f       w   r   i   t   e   F   l   a   g       d   o
0050000        C   l   o   s   e   s   (   f   i   l   e   s   !   1   )
0050020   \r  \t  \t           f   i   n   i   s 376 001  \0 203 334   h
0050040   \r  \t  \t           ]  \r  \t  \t   W   s   s   (   o   u   t
0050060    s   t   r   e   a   m   ,       "   *   N   C   a   n   c   e
0050100    l   l   i   n   g       t   h   e       Q   u   i   t   !   "
0050120    )  \r  \t  \t   D   i   s   p   l   a   y   (   s   t   a   n
0050140    d   a   r   d   )  \r  \t  \t   r   e   s   u   l   t   i   s
0050160        f   a   l   s   e  \r  \t           d   e   f   a   u   l
0050200    t   :       P   u   t   T   e   m   p   l   a   t   e   (   o
0050220    u   t   s   t   r   e   a   m   ,   "   $   C       ?   ?   "
0050240    ,   c   )  \r  \t  \t   D   i   s   p   l   a   y   (   s   t
0050260    a   n   d   a   r   d   )  \r  \t  \t   r   e   s   u   l   t
0050300    i   s       f   a   l   s   e  \r  \t   ]  \r   ]  \r  \r   a
0050320    n   d       G   e   t   D   a   t   a   (   )       =       v
0050340    a   l   o   f  \r   [  \r   l   e   t       c   =   G   e   t
0050360    K   e   y   s   (   )  \r   l   e   t       d       =       n
0050400    i   l  \r   s   w   i   t   c   h   o   n       c       i   n
0050420    t   o  \r  \t  \t   [  \r  \t           c   a   s   e     376
0050440  001  \0   < 241   $   0       t   o       $   7   :       c   a
0050460    s   e       $   -   :  \r  \t  \t   P   u   t   b   a   c   k
0050500    K   e   y   s   (   c   )  \r  \t  \t   i   f       G   e   t
0050520    D   a   t   u   m   (   o   c   t   a   l   )       e   q    
0050540    e   r   r   R   e   t       t   h   e   n       r   e   s   u
0050560    l   t   i   s       e   r   r   R   e   t  \r  \t  \t   d   a
0050600    t   a   F   l   a   g       =       t   r   u   e  \r  \t  \t
0050620    l   o   o   p  \r  \t           c   a   s   e       $   H   :
0050640            c   a   s   e       $   A   :           c   a   s   e
0050660        $   S   :       c   a   s   e       $   C   :       c   a
0050700    s   e       $   X   :  \r  \t               c   a   s   e    
0050720    $   O   :       c   a   s   e       $   E   :       c   a   s
0050740    e       $   D   :       c   a   s   e       $   N   :  \r  \t
0050760   \t   P   u   t   s   (   o   u   t   s   t   r   e   a   m   ,
0051000        c   )  \r  \t  \t   d   =   G   e   t   K   e   y   s   (
0051020    )  \r  \t  \t   i   f       d       n   e       $   :       t
0051040    h   e   n  \r 376 001  \0   P  \n  \t  \t  \t   [  \r  \t  \t
0051060   \t   P   u   t   s   (   o   u   t   s   t   r   e   a   m   ,
0051100        d   )  \r  \t  \t  \t   r   e   s   u   l   t   i   s    
0051120    e   r   r   R   e   t  \r  \t  \t  \t   ]  \r  \t  \t   P   u
0051140    t   s   (   o   u   t   s   t   r   e   a   m   ,       $   :
0051160    )  \r  \t  \t   i   f       G   e   t   D   a   t   u   m   (
0051200    m   o   d   e   s   !   (   c   -   #   1   0   0   )   )    
0051220    e   q       e   r   r   R   e   t       t   h   e   n       r
0051240    e   s   u   l   t   i   s       e   r   r   R   e   t  \r  \t
0051260   \t   d   a   t   a   F   l   a   g       =       t   r   u   e
0051300   \r  \t  \t   l   o   o   p  \r  \t           c   a   s   e    
0051320    $   h   :           c   a   s   e       $   a   :           c
0051340    a   s   e       $   s   :       c   a   s   e       $   c   :
0051360        c   a   s   e       $   x   :  \r  \t               c   a
0051400    s   e       $   o   :       c   a   s   e       $   e   :    
0051420    c   a   s   e       $   d   :       c   a   s   e       $   n
0051440    :  \r  \t  \t   P   u   t   s   ( 376 001  \0 020 202   o   u
0051460    t   s   t   r   e   a   m   ,       c   )  \r  \t  \t   d   =
0051500    G   e   t   K   e   y   s   (   )  \r  \t  \t   i   f       d
0051520        n   e       $   :       t   h   e   n  \r  \t  \t  \t   [
0051540   \r  \t  \t  \t   P   u   t   s   (   o   u   t   s   t   r   e
0051560    a   m   ,       d   )  \r  \t  \t  \t   r   e   s   u   l   t
0051600    i   s       e   r   r   R   e   t  \r  \t  \t  \t   ]  \r  \t
0051620   \t   P   u   t   s   (   o   u   t   s   t   r   e   a   m   ,
0051640        $   :   )  \r  \t  \t   i   f       G   e   t   D   a   t
0051660    u   m   (   m   o   d   e   s   !   (   c   -   #   1   4   0
0051700    )   )       e   q       e   r   r   R   e   t       t   h   e
0051720    n       r   e   s   u   l   t   i   s       e   r   r   R   e
0051740    t  \r  \t  \t   d   a   t   a   F   l   a   g       =       t
0051760    r   u   e  \r  \t  \t   l   o   o   p  \r  \t           c   a
0052000    s   e       $   W   :           c   a   s   e       $   w   :
0052020   \r  \t  \t   P   u   t   s   (   o   u   t   s   t   r   e   a
0052040    m   ,       c   )  \r  \t  \t   d   =   G   e   t   K 376 001
0052060   \0 226 334   e   y   s   (   )  \r  \t  \t   i   f       d    
0052100    n   e       $   :       t   h   e   n  \r  \t  \t  \t   [  \r
0052120   \t  \t  \t   P   u   t   s   (   o   u   t   s   t   r   e   a
0052140    m   ,       d   )  \r  \t  \t  \t   r   e   s   u   l   t   i
0052160    s       e   r   r   R   e   t  \r  \t  \t  \t   ]  \r  \t  \t
0052200    P   u   t   s   (   o   u   t   s   t   r   e   a   m   ,    
0052220    $   :   )  \r  \t  \t   i   f       G   e   t   D   a   t   u
0052240    m   (   o   n   e   W   o   r   d   O   c   t   a   l   )    
0052260    e   q       e   r   r   R   e   t       t   h   e   n       r
0052300    e   s   u   l   t   i   s       e   r   r   R   e   t  \r  \t
0052320   \t   d   a   t   a   F   l   a   g       =       t   r   u   e
0052340   \r  \t  \t   l   o   o   p  \r  \t           c   a   s   e    
0052360    $   *   S   :  \r  \t  \t   P   u   t   s   (   o   u   t   s
0052400    t   r   e   a   m   ,       c   )  \r  \t  \t   l   o   o   p
0052420   \r  \t           d   e   f   a   u   l   t   :      \r  \t  \t
0052440    P   u   t   b   a   c   k   K   e   y   s   (   c   )  \r  \t
0052460   \t   r   e 376 001  \0  \r   `   s   u   l   t   i   s       o
0052500    k   R   e   t  \r  \t  \t   ]  \r   ]       r   e   p   e   a
0052520    t  \r  \r  \r   a   n   d       G   e   t   D   a   t   u   m
0052540    (   m   o   d   e   )       =       v   a   l   o   f  \r   [
0052560   \r   l   e   t       r   e   s   =       v   e   c       1  \r
0052600    A   s   s   i   g   n   D   P   (   r   e   s   ,       z   e
0052620    r   o   D   P   )  \r   s   w   i   t   c   h   o   n       m
0052640    o   d   e       i   n   t   o  \r  \t   [  \r           c   a
0052660    s   e       o   c   t   a   l   :  \r  \t   G   e   t   O   c
0052700    t   a   l   (   r   e   s   ,       t   r   u   e   )  \r  \t
0052720    A   s   s   i   g   n   D   P   (   d   a   t   a   ,       r
0052740    e   s   )  \r  \t   r   e   s   u   l   t   i   s       o   k
0052760    R   e   t  \r           c   a   s   e       o   n   e   W   o
0053000    r   d   O   c   t   a   l   :  \r  \t   G   e   t   O   c   t
0053020    a   l   (   r   e   s   ,       t   r   u   e   )  \r  \t   d
0053040    a   t   a   !   0   =   d   a   t   a   !   1   ;           d
0053060    a   t   a   !   1   =   r   e 376 001  \0 277 314   s   !   1
0053100   \r  \t   r   e   s   u   l   t   i   s       o   k   R   e   t
0053120   \r           c   a   s   e       h   a   l   f   O   c   t   a
0053140    l   :  \r  \t   D   o   u   b   l   e   L   S   h   i   f   t
0053160    (   d   a   t   a   ,       d   a   t   a   ,       8   )  \r
0053200   \t   G   e   t   O   c   t   a   l   (   r   e   s   ,       t
0053220    r   u   e   )  \r  \t   d   a   t   a   !   1   <   <   r   i
0053240    g   h   t       =       r   e   s   !   1   <   <   r   i   g
0053260    h   t  \r  \t   r   e   s   u   l   t   i   s       o   k   R
0053300    e   t  \r           c   a   s   e       d   e   c   i   m   a
0053320    l   :  \r  \t   G   e   t   D   e   c   i   m   a   l   (   r
0053340    e   s   ,       t   r   u   e   )  \r  \t   A   s   s   i   g
0053360    n   D   P   (   d   a   t   a   ,   r   e   s   )  \r  \t   r
0053400    e   s   u   l   t   i   s       o   k   R   e   t  \r        
0053420    c   a   s   e       h   a   l   f   D   e   c   i   m   a   l
0053440    :  \r  \t   D   o   u   b   l   e   L   S   h   i   f   t   (
0053460    d   a   t   a   ,       d   a   t   a   ,       8 376 001  \0
0053500  324 032   )  \r  \t   G   e   t   D   e   c   i   m   a   l   (
0053520    r   e   s   ,       t   r   u   e   )  \r  \t   d   a   t   a
0053540    !   1   <   <   r   i   g   h   t       =       r   e   s   !
0053560    1   <   <   r   i   g   h   t  \r  \t   r   e   s   u   l   t
0053600    i   s       o   k   R   e   t  \r           c   a   s   e    
0053620    h   a   l   f   A   s   c   i   i   :  \r  \t   D   o   u   b
0053640    l   e   L   S   h   i   f   t   (   d   a   t   a   ,       d
0053660    a   t   a   ,       8   )  \r  \t   d   a   t   a   !   1   <
0053700    <   r   i   g   h   t       =       G   e   t   K   e   y   s
0053720    (   )  \r  \t   P   u   t   s   (   o   u   t   s   t   r   e
0053740    a   m   ,       d   a   t   a   !   1   <   <   r   i   g   h
0053760    t   )  \r  \t   r   e   s   u   l   t   i   s       o   k   R
0054000    e   t  \r           c   a   s   e       h   a   l   f   H   e
0054020    x   :  \r  \t   D   o   u   b   l   e   L   S   h   i   f   t
0054040    (   d   a   t   a   ,       d   a   t   a   ,       8   )  \r
0054060   \t   G   e   t   H   e   x   a   d   e   c   i   m   a   l   (
0054100    r   e 376 001  \0   o   f   s   ,       t   r   u   e   )  \r
0054120   \t   d   a   t   a   !   1   <   <   r   i   g   h   t       =
0054140        r   e   s   !   1   <   <   r   i   g   h   t  \r  \t   r
0054160    e   s   u   l   t   i   s       o   k   R   e   t  \r        
0054200    c   a   s   e       h   a   l   f   E   b   c   d   i   c   :
0054220   \r  \t  \t   [  \r  \t  \t   l   e   t       c   A   s   c   i
0054240    i       =       G   e   t   K   e   y   s   (   )  \r  \t  \t
0054260    l   e   t       c   E   b   c   d   i   c       =       A   s
0054300    c   i   i   T   o   E   b   c   d   i   c   (   c   A   s   c
0054320    i   i   )  \r  \t  \t   i   f       c   E   b   c   d   i   c
0054340        e   q       0       t   h   e   n      \r  \t  \t  \t   [
0054360   \r  \t  \t  \t   P   u   t   s   (   o   u   t   s   t   r   e
0054400    a   m   ,       c   A   s   c   i   i   )  \r  \t  \t  \t   r
0054420    e   s   u   l   t   i   s       e   r   r   R   e   t  \r  \t
0054440   \t  \t   ]  \r  \t  \t   P   u   t   s   (   o   u   t   s   t
0054460    r   e   a   m   ,       E   b   c   d   i   c   T   o   A   s
0054500    c   i   i   (   c   E   b 376 001  \0 311 355   c   d   i   c
0054520    )   )  \r  \t  \t   D   o   u   b   l   e   L   S   h   i   f
0054540    t   (   d   a   t   a   ,       d   a   t   a   ,       8   )
0054560   \r  \t  \t   d   a   t   a   !   1   <   <   r   i   g   h   t
0054600        =       c   E   b   c   d   i   c  \r  \t  \t   r   e   s
0054620    u   l   t   i   s       o   k   R   e   t  \r  \t  \t   ]  \r
0054640            d   e   f   a   u   l   t   :  \r  \t   r   e   s   u
0054660    l   t   i   s       e   r   r   R   e   t  \r  \t   ]  \r   ]
0054700   \r  \r   a   n   d       G   e   t   O   c   t   a   l   (   r
0054720    e   s   ,       f   i   r   s   t   T   i   m   e   )       b
0054740    e  \r   [  \r   l   e   t       c   =   G   e   t   K   e   y
0054760    s   (   )  \r   i   f       c       e   q       $   -       &
0055000        f   i   r   s   t   T   i   m   e       t   h   e   n  \r
0055020   \t   [  \r  \t   P   u   t   s   (   o   u   t   s   t   r   e
0055040    a   m   ,       c   )  \r  \t   G   e   t   O   c   t   a   l
0055060    (   r   e   s   ,       f   a   l   s   e   )  \r  \t   N   e
0055100    g   a   t   e   D   P   (   r   e   s   ,     376 001  \0 362
0055120  307   r   e   s   )  \r  \t   r   e   t   u   r   n  \r  \t   ]
0055140   \r   i   f       c       g   r       $   7       %       c    
0055160    l   s       $   0       t   h   e   n  \r  \t   [  \r  \t   P
0055200    u   t   b   a   c   k   K   e   y   s   (   c   )  \r  \t   r
0055220    e   t   u   r   n  \r  \t   ]  \r   D   o   u   b   l   e   L
0055240    S   h   i   f   t   (   r   e   s   ,       r   e   s   ,    
0055260    3   )  \r   l   e   t       t   e   m   p   =   v   e   c    
0055300    1  \r   t   e   m   p   >   >   D   P   .   H   i   g   h   =
0055320    0   ;           t   e   m   p   >   >   D   P   .   L   o   w
0055340    =   c   -   $   0  \r   D   o   u   b   l   e   A   d   d   (
0055360    r   e   s   ,   t   e   m   p   )  \r   P   u   t   s   (   o
0055400    u   t   s   t   r   e   a   m   ,       c   )  \r   G   e   t
0055420    O   c   t   a   l   (   r   e   s   ,       f   a   l   s   e
0055440    )  \r   ]  \r  \r   a   n   d       G   e   t   H   e   x   a
0055460    d   e   c   i   m   a   l   (   r   e   s   ,       f   i   r
0055500    s   t   T   i   m   e   )       b   e  \r   [  \r   l   e   t
0055520      376 001  \0 017 346   c   =   G   e   t   K   e   y   s   (
0055540    )  \r   i   f       c       e   q       $   -       &       f
0055560    i   r   s   t   T   i   m   e       t   h   e   n  \r  \t   [
0055600   \r  \t   P   u   t   s   (   o   u   t   s   t   r   e   a   m
0055620    ,       c   )  \r  \t   G   e   t   H   e   x   a   d   e   c
0055640    i   m   a   l   (   r   e   s   ,       f   a   l   s   e   )
0055660   \r  \t   N   e   g   a   t   e   D   P   (   r   e   s   ,    
0055700    r   e   s   )  \r  \t   r   e   t   u   r   n  \r  \t   ]  \r
0055720    s   w   i   t   c   h   o   n       c       i   n   t   o  \r
0055740   \t   [  \r           c   a   s   e       $   0       t   o    
0055760    $   9   :           c   a   s   e       $   A       t   o    
0056000    $   F   :           c   a   s   e       $   a       t   o    
0056020    $   f   :  \r  \t   e   n   d   c   a   s   e  \r           d
0056040    e   f   a   u   l   t   :  \r  \t   P   u   t   b   a   c   k
0056060    K   e   y   s   (   c   )  \r  \t   r   e   t   u   r   n  \r
0056100   \t   ]  \r   D   o   u   b   l   e   L   S   h   i   f   t   (
0056120    r   e   s   ,       r 376 001  \0  \a 027   e   s   ,       4
0056140    )  \r   l   e   t       t   e   m   p   =   v   e   c       1
0056160   \r   t   e   m   p   >   >   D   P   .   H   i   g   h   =   0
0056200   \r   t   e   m   p   >   >   D   P   .   L   o   w   =   s   e
0056220    l   e   c   t   o   n       c       i   n   t   o  \r  \t   [
0056240   \r           c   a   s   e       $   0       t   o       $   9
0056260    :               c   -   $   0  \r           c   a   s   e    
0056300    $   A       t   o       $   F   :               c   -   $   A
0056320    +   1   0  \r           c   a   s   e       $   a       t   o
0056340        $   f   :               c   -   $   a   +   1   0  \r  \t
0056360    ]  \r   D   o   u   b   l   e   A   d   d   (   r   e   s   ,
0056400    t   e   m   p   )  \r   P   u   t   s   (   o   u   t   s   t
0056420    r   e   a   m   ,       c   )  \r   G   e   t   H   e   x   a
0056440    d   e   c   i   m   a   l   (   r   e   s   ,       f   a   l
0056460    s   e   )  \r   ]  \r  \r   a   n   d       G   e   t   D   e
0056500    c   i   m   a   l   (   r   e   s   ,       f   i   r   s   t
0056520    T   i   m   e   )       b   e  \r   [  \r 376 001  \0 376   "
0056540    l   e   t       c   =   G   e   t   K   e   y   s   (   )  \r
0056560    i   f       c       e   q       $   -       &       f   i   r
0056600    s   t   T   i   m   e       t   h   e   n  \r  \t   [  \r  \t
0056620    P   u   t   s   (   o   u   t   s   t   r   e   a   m   ,    
0056640    c   )  \r  \t   G   e   t   D   e   c   i   m   a   l   (   r
0056660    e   s   ,       f   a   l   s   e   )  \r  \t   N   e   g   a
0056700    t   e   D   P   (   r   e   s   ,       r   e   s   )  \r  \t
0056720    r   e   t   u   r   n  \r  \t   ]  \r   i   f       c       g
0056740    r       $   9       %       c       l   s       $   0       t
0056760    h   e   n  \r  \t   [  \r  \t   P   u   t   b   a   c   k   K
0057000    e   y   s   (   c   )  \r  \t   r   e   t   u   r   n  \r  \t
0057020    ]  \r   l   e   t       t   e   m   p   =   v   e   c       1
0057040   \r   A   s   s   i   g   n   D   P   (   t   e   m   p   ,    
0057060    z   e   r   o   D   P   )  \r   f   o   r       i   =   1    
0057100    t   o       1   0       d   o       D   o   u   b   l   e   A
0057120    d   d   (   t   e   m   p   ,       r   e   s   )  \r   A   s
0057140  376 001  \0 366 024   s   i   g   n   D   P   (   r   e   s   ,
0057160    t   e   m   p   )  \r   t   e   m   p   >   >   D   P   .   H
0057200    i   g   h   =   0   ;           t   e   m   p   >   >   D   P
0057220    .   L   o   w   =   c   -   $   0  \r   D   o   u   b   l   e
0057240    A   d   d   (   r   e   s   ,   t   e   m   p   )  \r   P   u
0057260    t   s   (   o   u   t   s   t   r   e   a   m   ,       c   )
0057300   \r   G   e   t   D   e   c   i   m   a   l   (   r   e   s   ,
0057320        f   a   l   s   e   )  \r   ]  \r  \r   a   n   d       F
0057340    i   n   d   A   d   d   r   (   )       b   e  \r  \t   [  \r
0057360   \t   D   o   u   b   l   e   A   d   d   (   a   d   d   r   ,
0057400        o   n   e   D   P   )  \r  \t   P   o   s   i   t   i   o
0057420    n   F   i   l   e   (   1   ,       a   d   d   r   )  \r  \t
0057440    l   e   t       v   ,       s       =       d   a   t   a   >
0057460    >   D   P   .   L   o   w   ,       f   i   l   e   s   !   1
0057500   \r  \t   w   h   i   l   e       E   n   d   o   f   s   (   k
0057520    e   y   s   )       &       n   o   t       E   n   d   o   f
0057540    s   (   s   )     376 001  \0 227   o   d   o  \r  \t  \t   [
0057560   \r  \t  \t   l   e   t       f   V       =       G   e   t   s
0057600    (   s   )  \r  \t  \t   i   f       f   V       e   q       v
0057620        t   h   e   n       r   e   t   u   r   n  \r  \t  \t   D
0057640    o   u   b   l   e   A   d   d   (   a   d   d   r   ,   o   n
0057660    e   D   P   )  \r  \t  \t   ]  \r  \t   u   n   l   e   s   s
0057700        E   n   d   o   f   s   (   k   e   y   s   )       d   o
0057720   \r  \t  \t   [  \r  \t  \t   W   s   s   (   o   u   t   s   t
0057740    r   e   a   m   ,       "   *   N   S   e   a   r   c   h   i
0057760    n   g       i   n   t   e   r   r   u   p   t   e   d   !   "
0060000    )  \r  \t  \t   G   e   t   s   (   k   e   y   s   )        
0060020    /   /   T   o       f   l   u   s   h       t   h   e       "
0060040    a   n   y       c   h   a   r   "  \r  \t  \t   ]  \r  \t   ]
0060060   \r  \r   a   n   d       D   o   W   i   z   a   r   d   C   o
0060100    m   m   a   n   d   (   )       b   e  \r   [  \r   l   e   t
0060120        s   t   a   r   t   A   d   d   r       =       v   e   c
0060140        1  \r   l   e   t       e   n   d 376 001  \0 272 377   A
0060160    d   d   r       =       v   e   c       1  \r   l   e   t    
0060200    d   i   f   f   A   d   d   r       =       v   e   c       1
0060220   \r   l   e   t       m   a   s   k       =       v   e   c    
0060240    1  \r   l   e   t       w   i   z   a   r   d   D   a   t   a
0060260        =       v   e   c       1  \r   l   e   t       r   e   p
0060300    l   a   c   e   F   l   a   g       =       n   i   l  \r   W
0060320    s   s   (   o   u   t   s   t   r   e   a   m   ,       "   *
0060340    N   F   o   r       a   d   d   r   e   s   s       _       "
0060360    )  \r   i   f       G   e   t   D   a   t   a   (   )       e
0060400    q       e   r   r   R   e   t       t   h   e   n  \r  \t   [
0060420   \r  \t   W   s   s   (   o   u   t   s   t   r   e   a   m   ,
0060440        "           ?   ?   *   N   T   e   r   m   i   n   a   t
0060460    i   n   g       F       c   o   m   m   a   n   d   !   *   N
0060500    "   )  \r  \t   r   e   t   u   r   n  \r  \t   ]  \r   t   e
0060520    s   t       d   a   t   a   F   l   a   g       i   f   s   o
0060540        A   s   s   i   g   n   D   P   (   s   t   a   r   t 376
0060560  001  \0   T 372   A   d   d   r   ,       d   a   t   a   )  \r
0060600   \t  \t   i   f   n   o   t       A   s   s   i   g   n   D   P
0060620    (   s   t   a   r   t   A   d   d   r   ,       a   d   d   r
0060640    )  \r   P   u   t   T   e   m   p   l   a   t   e   (   o   u
0060660    t   s   t   r   e   a   m   ,       "       =       $   U   E
0060700    O   "   ,       s   t   a   r   t   A   d   d   r   )  \r   A
0060720    s   s   i   g   n   D   P   (   d   a   t   a   ,       z   e
0060740    r   o   D   P   )   ;       d   a   t   a   F   l   a   g   =
0060760    f   a   l   s   e  \r   l   e   t       c   =   G   e   t   K
0061000    e   y   s   (   )  \r   i   f       c       n   e       #   3
0061020    3       &       c       n   e       $   $       &       c    
0061040    n   e       $   *   C       t   h   e   n      \r  \t   [  \r
0061060   \t   P   u   t   s   (   o   u   t   s   t   r   e   a   m   ,
0061100        c   )  \r  \t   W   s   s   (   o   u   t   s   t   r   e
0061120    a   m   ,       "           ?   ?   *   N   T   e   r   m   i
0061140    n   a   t   i   n   g       F       c   o   m   m   a   n   d
0061160    !   *   N   " 376 001  \0   9   F   )  \r  \t   r   e   t   u
0061200    r   n  \r  \t   ]  \r   W   s   s   (   o   u   t   s   t   r
0061220    e   a   m   ,       "   *   N       t   o       "   )  \r   i
0061240    f       G   e   t   D   a   t   a   (   )       e   q       e
0061260    r   r   R   e   t       t   h   e   n      \r  \t   [  \r  \t
0061300    W   s   s   (   o   u   t   s   t   r   e   a   m   ,       "
0061320            ?   ?   *   N   T   e   r   m   i   n   a   t   i   n
0061340    g       F       c   o   m   m   a   n   d   !   *   N   "   )
0061360   \r  \t   r   e   t   u   r   n  \r  \t   ]  \r   t   e   s   t
0061400        d   a   t   a   F   l   a   g       i   f   s   o       A
0061420    s   s   i   g   n   D   P   (   e   n   d   A   d   d   r   ,
0061440        d   a   t   a   )  \r           i   f   n   o   t  \t   A
0061460    s   s   i   g   n   D   P   (   e   n   d   A   d   d   r   ,
0061500        m   i   n   u   s   O   n   e   D   P   )  \r   P   u   t
0061520    T   e   m   p   l   a   t   e   (   o   u   t   s   t   r   e
0061540    a   m   ,       "       =       $   U   E   O   "   ,       e
0061560    n   d   A   d   d   r   )  \r   A 376 001  \0   $ 341   s   s
0061600    i   g   n   D   P   (   d   a   t   a   ,       z   e   r   o
0061620    D   P   )   ;       d   a   t   a   F   l   a   g   =   f   a
0061640    l   s   e  \r   c   =   G   e   t   K   e   y   s   (   )  \r
0061660    i   f       c       n   e       #   3   3       &       c    
0061700    n   e       $   $       &       c       n   e       $   *   C
0061720        t   h   e   n      \r  \t   [  \r  \t   P   u   t   s   (
0061740    o   u   t   s   t   r   e   a   m   ,       c   )  \r  \t   W
0061760    s   s   (   o   u   t   s   t   r   e   a   m   ,       "    
0062000        ?   ?   *   N   T   e   r   m   i   n   a   t   i   n   g
0062020        F       c   o   m   m   a   n   d   !   *   N   "   )  \r
0062040   \t   r   e   t   u   r   n  \r  \t   ]  \r   W   s   s   (   o
0062060    u   t   s   t   r   e   a   m   ,       "   *   N       b   y
0062100        "   )  \r   i   f       G   e   t   D   a   t   a   (   )
0062120        e   q       e   r   r   R   e   t       t   h   e   n    
0062140   \r  \t   [  \r  \t   W   s   s   (   o   u   t   s   t   r   e
0062160    a   m   ,       "           ?   ?   *   N   T   e   r 376 001
0062200   \0   L 303   m   i   n   a   t   i   n   g       F       c   o
0062220    m   m   a   n   d   !   *   N   "   )  \r  \t   r   e   t   u
0062240    r   n  \r  \t   ]  \r   t   e   s   t       d   a   t   a   F
0062260    l   a   g       i   f   s   o       A   s   s   i   g   n   D
0062300    P   (   d   i   f   f   A   d   d   r   ,       d   a   t   a
0062320    )  \r  \t  \t   i   f   n   o   t       A   s   s   i   g   n
0062340    D   P   (   d   i   f   f   A   d   d   r   ,       o   n   e
0062360    D   P   )  \r   P   u   t   T   e   m   p   l   a   t   e   (
0062400    o   u   t   s   t   r   e   a   m   ,       "       =       $
0062420    U   E   O   "   ,       d   i   f   f   A   d   d   r   )  \r
0062440    A   s   s   i   g   n   D   P   (   d   a   t   a   ,       z
0062460    e   r   o   D   P   )   ;       d   a   t   a   F   l   a   g
0062500    =   f   a   l   s   e  \r   c   =   G   e   t   K   e   y   s
0062520    (   )  \r   i   f       c       n   e       #   3   3       &
0062540        c       n   e       $   $       &       c       n   e    
0062560    $   *   C       t   h   e   n      \r  \t   [  \r  \t   P   u
0062600    t   s   ( 376 001  \0 275 203   o   u   t   s   t   r   e   a
0062620    m   ,       c   )  \r  \t   W   s   s   (   o   u   t   s   t
0062640    r   e   a   m   ,       "           ?   ?   *   N   T   e   r
0062660    m   i   n   a   t   i   n   g       F       c   o   m   m   a
0062700    n   d   !   *   N   "   )  \r  \t   r   e   t   u   r   n  \r
0062720   \t   ]  \r   i   f       d   i   f   f   A   d   d   r   !   0
0062740        l   s       0       t   h   e   n  \r  \t   [  \r  \t   W
0062760    s   s   (   o   u   t   s   t   r   e   a   m   ,       "   *
0063000    N   O   n   l   y       f   o   r   w   a   r   d   -   g   o
0063020    i   n   g       l   o   o   p   s       a   l   l   o   w   e
0063040    d   !   *   N   "   )  \r  \t   r   e   t   u   r   n  \r  \t
0063060    ]  \r   W   s   s   (   o   u   t   s   t   r   e   a   m   ,
0063100        "   *   N       w   i   t   h       m   a   s   k       "
0063120    )  \r   i   f       G   e   t   D   a   t   a   (   )       e
0063140    q       e   r   r   R   e   t       t   h   e   n      \r  \t
0063160    [  \r  \t   W   s   s   (   o   u   t   s   t   r   e   a   m
0063200    ,       "           ?   ?   * 376 001  \0 324 362   N   T   e
0063220    r   m   i   n   a   t   i   n   g       F       c   o   m   m
0063240    a   n   d   !   *   N   "   )  \r  \t   r   e   t   u   r   n
0063260   \r  \t   ]  \r   t   e   s   t       d   a   t   a   F   l   a
0063300    g       i   f   s   o       A   s   s   i   g   n   D   P   (
0063320    m   a   s   k   ,       d   a   t   a   )  \r  \t  \t   i   f
0063340    n   o   t       A   s   s   i   g   n   D   P   (   m   a   s
0063360    k   ,       m   i   n   u   s   O   n   e   D   P   )  \r   m
0063400    a   s   k   =   m   a   s   k   !   1  \r   P   u   t   T   e
0063420    m   p   l   a   t   e   (   o   u   t   s   t   r   e   a   m
0063440    ,       "       =       $   U   O   "   ,       m   a   s   k
0063460    )  \r   A   s   s   i   g   n   D   P   (   d   a   t   a   ,
0063500        z   e   r   o   D   P   )   ;       d   a   t   a   F   l
0063520    a   g   =   f   a   l   s   e  \r   c   =   G   e   t   K   e
0063540    y   s   (   )  \r   i   f       c       n   e       #   3   3
0063560        &       c       n   e       $   $       &       c       n
0063600    e       $   *   C       t   h   e   n      \r  \t 376 001  \0
0063620    i 363   [  \r  \t   P   u   t   s   (   o   u   t   s   t   r
0063640    e   a   m   ,       c   )  \r  \t   W   s   s   (   o   u   t
0063660    s   t   r   e   a   m   ,       "           ?   ?   *   N   T
0063700    e   r   m   i   n   a   t   i   n   g       F       c   o   m
0063720    m   a   n   d   !   *   N   "   )  \r  \t   r   e   t   u   r
0063740    n  \r  \t   ]  \r   W   s   s   (   o   u   t   s   t   r   e
0063760    a   m   ,       "   *   N       S   [   e   a   r   c   h    
0064000    f   o   r   ]           o   r           R   [   e   p   l   a
0064020    c   e       b   y   ]   :   "   )  \r   c   =   G   e   t   K
0064040    e   y   s   (   )  \r   s   w   i   t   c   h   o   n       c
0064060        i   n   t   o  \r  \t   [  \r           c   a   s   e    
0064100    $   S   :           c   a   s   e       $   s   :          \r
0064120   \t   r   e   p   l   a   c   e   F   l   a   g       =       f
0064140    a   l   s   e  \r  \t   e   n   d   c   a   s   e  \r        
0064160    c   a   s   e       $   R   :           c   a   s   e       $
0064200    r   :  \r  \t   r   e   p   l   a   c   e   F   l   a   g    
0064220    =     376 001  \0 022   #   t   r   u   e  \r  \t   e   n   d
0064240    c   a   s   e  \r           d   e   f   a   u   l   t   :  \r
0064260   \t   P   u   t   s   (   o   u   t   s   t   r   e   a   m   ,
0064300        G   e   t   K   e   y   s   (   )   )  \r  \t   W   s   s
0064320    (   o   u   t   s   t   r   e   a   m   ,       "           ?
0064340    ?   *   N   T   e   r   m   i   n   a   t   i   n   g       F
0064360        c   o   m   m   a   n   d   !   *   N   "   )  \r  \t   r
0064400    e   t   u   r   n  \r  \t   ]  \r   P   u   t   s   (   o   u
0064420    t   s   t   r   e   a   m   ,       c   )  \r   W   s   s   (
0064440    o   u   t   s   t   r   e   a   m   ,       "   *   N       t
0064460    h   e       d   a   t   a       w   o   r   d       "   )  \r
0064500    i   f       G   e   t   D   a   t   a   (   )       e   q    
0064520    e   r   r   R   e   t       t   h   e   n      \r  \t   [  \r
0064540   \t   W   s   s   (   o   u   t   s   t   r   e   a   m   ,    
0064560    "           ?   ?   *   N   T   e   r   m   i   n   a   t   i
0064600    n   g       F       c   o   m   m   a   n   d   !   *   N   "
0064620    )  \r  \t   r   e   t   u 376 001  \0   w   %   r   n  \r  \t
0064640    ]  \r   t   e   s   t       d   a   t   a   F   l   a   g    
0064660    i   f   s   o       A   s   s   i   g   n   D   P   (   w   i
0064700    z   a   r   d   D   a   t   a   ,       d   a   t   a   )  \r
0064720   \t  \t   i   f   n   o   t       A   s   s   i   g   n   D   P
0064740    (   w   i   z   a   r   d   D   a   t   a   ,       z   e   r
0064760    o   D   P   )  \r   w   i   z   a   r   d   D   a   t   a    
0065000    =       w   i   z   a   r   d   D   a   t   a   !   1  \r   P
0065020    u   t   T   e   m   p   l   a   t   e   (   o   u   t   s   t
0065040    r   e   a   m   ,       "       =       $   U   O   "   ,    
0065060    w   i   z   a   r   d   D   a   t   a   )  \r   A   s   s   i
0065100    g   n   D   P   (   d   a   t   a   ,       z   e   r   o   D
0065120    P   )   ;       d   a   t   a   F   l   a   g   =   f   a   l
0065140    s   e  \r   c   =   G   e   t   K   e   y   s   (   )  \r   i
0065160    f       c       n   e       #   3   3       &       c       n
0065200    e       $   $       &       c       n   e       $   *   C    
0065220    t   h   e   n      \r  \t   [  \r  \t   P   u 376 001  \0  \b
0065240   \r   t   s   (   o   u   t   s   t   r   e   a   m   ,       G
0065260    e   t   K   e   y   s   (   )   )  \r  \t   W   s   s   (   o
0065300    u   t   s   t   r   e   a   m   ,       "           ?   ?   *
0065320    N   T   e   r   m   i   n   a   t   i   n   g       F       c
0065340    o   m   m   a   n   d   !   *   N   "   )  \r  \t   r   e   t
0065360    u   r   n  \r  \t   ]  \r   W   s   s   (   o   u   t   s   t
0065400    r   e   a   m   ,       "   *   N       P   e   r   f   o   r
0065420    m   i   n   g       t   h   e       c   o   m   m   a   n   d
0065440        [   h   i   t       a   n   y       k   e   y       t   o
0065460        i   n   t   e   r   r   u   p   t   ]   "   )  \r   A   s
0065500    s   i   g   n   D   P   (   a   d   d   r   ,       s   t   a
0065520    r   t   A   d   d   r   )  \r   t   r   y   n   e   x   t   :
0065540            i   f       P   o   s   i   t   i   o   n   F   i   l
0065560    e   (   1   ,       a   d   d   r   )       e   q       0    
0065600    t   h   e   n      \r  \t   [  \r  \t   W   s   s   (   o   u
0065620    t   s   t   r   e   a   m   ,       "   *   N       O   v   e
0065640    r 376 001  \0 316   :   f   l   o   w   ,       t   e   r   m
0065660    i   n   a   t   i   n   g       F       c   o   m   m   a   n
0065700    d   !   *   N   "   )  \r  \t   r   e   t   u   r   n  \r  \t
0065720    ]  \r   l   e   t       f   i   l   e   D   a   t   a       =
0065740        G   e   t   s   (   f   i   l   e   s   !   1   )  \r   t
0065760    e   s   t       r   e   p   l   a   c   e   F   l   a   g    
0066000   \r           i   f   s   o  \r  \t   [  \r  \t   d   a   t   a
0066020    !   1       =       (   f   i   l   e   D   a   t   a       &
0066040        (   n   o   t       m   a   s   k   )   )       %       (
0066060    w   i   z   a   r   d   D   a   t   a       &       m   a   s
0066100    k   )  \r  \t   P   o   s   i   t   i   o   n   F   i   l   e
0066120    (   1   ,       a   d   d   r   )  \r  \t   W   r   i   t   e
0066140    F   i   l   e   (   )  \r  \t   ]  \r           i   f   n   o
0066160    t  \r  \t   i   f       (   f   i   l   e   D   a   t   a   &
0066200    m   a   s   k   )       e   q       (   w   i   z   a   r   d
0066220    D   a   t   a   &   m   a   s   k   )       t   h   e   n  \r
0066240   \t  \t   [  \r  \t  \t 376 001  \0   _ 336   W   s   s   (   o
0066260    u   t   s   t   r   e   a   m   ,       "   *   N       F   o
0066300    u   n   d   !   "   )  \r  \t  \t   D   i   s   p   l   a   y
0066320    (   s   t   a   n   d   a   r   d   )  \r  \t  \t   r   e   t
0066340    u   r   n  \r  \t  \t   ]  \r   D   o   u   b   l   e   A   d
0066360    d   (   a   d   d   r   ,       d   i   f   f   A   d   d   r
0066400    )  \r   i   f       D   o   u   b   l   e   U   s   c   (   a
0066420    d   d   r   ,       e   n   d   A   d   d   r   )       e   q
0066440        1       t   h   e   n      \r           t   e   s   t    
0066460    r   e   p   l   a   c   e   F   l   a   g  \r               i
0066500    f   s   o  \r  \t   [  \r  \t   W   s   s   (   o   u   t   s
0066520    t   r   e   a   m   ,       "   *   N       D   o   n   e   .
0066540    *   N   "   )  \r  \t   r   e   t   u   r   n  \r  \t   ]  \r
0066560                    i   f   n   o   t  \r  \t   [  \r  \t   W   s
0066600    s   (   o   u   t   s   t   r   e   a   m   ,       "   *   N
0066620        N   o   t       f   o   u   n   d   .   *   N   "   )  \r
0066640   \t   r   e   t   u   r   n  \r  \t   ]  \r 376  \0 202 301 220
0066660    i   f       n   o   t       E   n   d   o   f   s   (   k   e
0066700    y   s   )       t   h   e   n      \r  \t   [       G   e   t
0066720    K   e   y   s   (   )  \r  \t           W   s   s   (   o   u
0066740    t   s   t   r   e   a   m   ,       "   *   N   C   o   m   m
0066760    a   n   d       i   n   t   e   r   r   u   p   t   e   d    
0067000    f   r   o   m       k   e   y   b   o   a   r   d   !   *   N
0067020    "   )  \r  \t           r   e   t   u   r   n  \r  \t   ]  \r
0067040    g   o   t   o       t   r   y   n   e   x   t  \r   ]  \r  \r
0067060       \r 377  \0  \0   U   t   i   l   D   P   .   b   c   p   l
0067100   \0 373 225 340 212 263  \0  \0 376 001  \0 230 210   /   /    
0067120    U   t   i   l   D   P   .   b   c   p   l      \r   /   /    
0067140    C   o   p   y   r   i   g   h   t       X   e   r   o   x    
0067160    C   o   r   p   o   r   a   t   i   o   n       1   9   7   9
0067200   \r  \r  \r  \r   e   x   t   e   r   n   a   l       [  \r   /
0067220    /   t   h   e       e   x   p   o   r   t   e   d       p   r
0067240    o   c   e   d   u   r   e   s  \r  \t   S   e   t   U   p   D
0067260    P  \r  \t   A   s   s   i   g   n   D   P  \r  \t   N   e   g
0067300    a   t   e   D   P  \r  \t   D   o   u   b   l   e   L   S   h
0067320    i   f   t  \r  \t   D   o   u   b   l   e   R   S   h   i   f
0067340    t  \r  \t   D   o   u   b   l   e   S   u   b   t   r   a   c
0067360    t  \r  \t   D   o   u   b   l   e   U   s   c  \r  \r   /   /
0067400    f   r   o   m       t   h   e       O   S  \r  \t   D   o   u
0067420    b   l   e   A   d   d  \r  \t   U   s   c  \r  \t   C   a   l
0067440    l   S   w   a   t  \r  \t   ]  \r  \r  \r   e   x   t   e   r
0067460    n   a   l       [  \r  \t   z   e   r   o   D   P   ;        
0067500    o   n   e   D   P   ;           m   i   n   u   s 376 001  \0
0067520  314   w   O   n   e   D   P  \r  \t   ]  \r  \r   s   t   a   t
0067540    i   c       [  \r  \t   z   e   r   o   D   P   ;           o
0067560    n   e   D   P   ;           m   i   n   u   s   O   n   e   D
0067600    P  \r  \t   ]  \r  \r   l   e   t       S   e   t   U   p   D
0067620    P   (   s   i   x   F   r   e   e   W   o   r   d   s   )    
0067640    b   e  \r  \t   [  \r  \t   s   i   x   F   r   e   e   W   o
0067660    r   d   s   !   0   =   0   ;           s   i   x   F   r   e
0067700    e   W   o   r   d   s   !   1   =   0  \r  \t   z   e   r   o
0067720    D   P   =   s   i   x   F   r   e   e   W   o   r   d   s  \r
0067740   \t   s   i   x   F   r   e   e   W   o   r   d   s   !   2   =
0067760    0   ;           s   i   x   F   r   e   e   W   o   r   d   s
0070000    !   3   =   1  \r  \t   o   n   e   D   P   =   s   i   x   F
0070020    r   e   e   W   o   r   d   s   +   2  \r  \t   s   i   x   F
0070040    r   e   e   W   o   r   d   s   !   4   =   -   1   ;        
0070060    s   i   x   F   r   e   e   W   o   r   d   s   !   5   =   -
0070100    1  \r  \t   m   i   n   u   s   O   n   e   D   P   =   s   i
0070120    x   F 376 001  \0   P 355   r   e   e   W   o   r   d   s   +
0070140    4  \r  \t   ]  \r  \r   a   n   d       A   s   s   i   g   n
0070160    D   P   (   n   e   w   ,       o   l   d   )       b   e  \r
0070200   \t   [  \r  \t   n   e   w   !   0       =       o   l   d   !
0070220    0  \r  \t   n   e   w   !   1       =       o   l   d   !   1
0070240   \r  \t   ]  \r  \r   a   n   d       N   e   g   a   t   e   D
0070260    P   (   n   e   w   ,       o   l   d   )       b   e  \r  \t
0070300    [  \r  \t   n   e   w   !   0       =       n   o   t       o
0070320    l   d   !   0  \r  \t   n   e   w   !   1       =       n   o
0070340    t       o   l   d   !   1  \r  \t   D   o   u   b   l   e   A
0070360    d   d   (   n   e   w   ,       o   n   e   D   P   )  \r  \t
0070400    ]  \r  \r   a   n   d       D   o   u   b   l   e   S   u   b
0070420    t   r   a   c   t   (   m   i   n   u   e   n   d   ,       s
0070440    u   b   t   r   a   h   e   n   d   )       b   e  \r  \t   [
0070460   \r  \t   l   e   t       t   e   m   p       =       v   e   c
0070500        1  \r  \t   N   e   g   a   t   e   D   P   (   t   e   m
0070520    p   ,       s   u   b   t 376 001  \0 234 241   r   a   h   e
0070540    n   d   )  \r  \t   D   o   u   b   l   e   A   d   d   (   m
0070560    i   n   u   e   n   d   ,       t   e   m   p   )  \r  \t   ]
0070600   \r  \r   a   n   d       D   o   u   b   l   e   L   S   h   i
0070620    f   t   (   d   e   s   t   ,       s   r   c   ,       a   m
0070640    t   )       b   e  \r   s   w   i   t   c   h   o   n       a
0070660    m   t       i   n   t   o  \r  \t   [  \r           c   a   s
0070700    e       0       t   o       1   5   :  \r  \t   d   e   s   t
0070720    !   0       =       (   s   r   c   !   0       l   s   h   i
0070740    f   t       a   m   t   )   %   (   s   r   c   !   1       r
0070760    s   h   i   f   t       (   1   6   -   a   m   t   )   )  \r
0071000   \t   d   e   s   t   !   1       =       s   r   c   !   1    
0071020    l   s   h   i   f   t       a   m   t  \r  \t   r   e   t   u
0071040    r   n  \r           c   a   s   e       1   6       t   o    
0071060    3   1   :  \r  \t   d   e   s   t   !   0       =       s   r
0071100    c   !   1       l   s   h   i   f   t       (   a   m   t   -
0071120    1   6   )  \r  \t   d   e   s   t   !   1     376 001  \0 003
0071140    D   =       0  \r  \t   r   e   t   u   r   n  \r           d
0071160    e   f   a   u   l   t   :  \r  \t   C   a   l   l   S   w   a
0071200    t   (   "   D   o   u   b   l   e   L   S   h   i   f   t    
0071220    c   a   l   l   e   d       w   i   t   h       f   u   n   n
0071240    y       a   m   o   u   n   t   .   "   )  \r  \t   ]  \r  \r
0071260    a   n   d       D   o   u   b   l   e   R   S   h   i   f   t
0071300    (   d   e   s   t   ,       s   r   c   ,       a   m   t   )
0071320        b   e  \r   s   w   i   t   c   h   o   n       a   m   t
0071340        i   n   t   o  \r  \t   [  \r           c   a   s   e    
0071360    0       t   o       1   5   :  \r  \t   d   e   s   t   !   1
0071400        =       (   s   r   c   !   1       r   s   h   i   f   t
0071420        a   m   t   )   %   (   s   r   c   !   0       l   s   h
0071440    i   f   t       (   1   6   -   a   m   t   )   )  \r  \t   d
0071460    e   s   t   !   0       =       s   r   c   !   0       r   s
0071500    h   i   f   t       a   m   t  \r  \t   r   e   t   u   r   n
0071520   \r           c   a   s   e       1   6       t   o       3   1
0071540    : 376  \0 347   `   o  \r  \t   d   e   s   t   !   1       =
0071560        s   r   c   !   0       r   s   h   i   f   t       (   a
0071600    m   t   -   1   6   )  \r  \t   d   e   s   t   !   0       =
0071620        0  \r  \t   r   e   t   u   r   n  \r           d   e   f
0071640    a   u   l   t   :  \r  \t   C   a   l   l   S   w   a   t   (
0071660    "   D   o   u   b   l   e   R   S   h   i   f   t       c   a
0071700    l   l   e   d       w   i   t   h       f   u   n   n   y    
0071720    a   m   o   u   n   t   .   "   )  \r  \t   ]  \r  \r   a   n
0071740    d       D   o   u   b   l   e   U   s   c   (   a   ,       b
0071760    )       =      \r   s   e   l   e   c   t   o   n       U   s
0072000    c   (   a   !   0   ,       b   !   0   )       i   n   t   o
0072020   \r  \t   [  \r       c   a   s   e       -   1   :           -
0072040    1  \r       c   a   s   e       1   :               1  \r    
0072060    c   a   s   e       0   :               U   s   c   (   a   !
0072100    1   ,       b   !   1   )  \r  \t   ]  \r  \r  \r 377  \0  \0
0072120    C   o   m   p   i   l   e   O   e   d   i   t   .   c   m  \0
0072140  373 225 340 212 263  \0  \0 376  \0   P 264   z   B   c   p   l
0072160    /   f       I   n   t   e   r   D   i   s   k   .   b   c   p
0072200    l  \r   B   c   p   l   /   f       O   E   d   i   t   .   b
0072220    c   p   l  \r   B   c   p   l   /   f       O   E   d   i   t
0072240    C   o   m   .   b   c   p   l  \r   B   c   p   l   /   f    
0072260    U   t   i   l   D   P   .   b   c   p   l  \r 377  \0  \0   D
0072300    u   m   p   O   e   d   i   t   .   c   m  \0 373 225 340 212
0072320  263  \0  \0 376  \0 232   O   z   d   u   m   p   /   c       O
0072340    e   d   i   t   S   o   u   r   c   e   s   .   d   m       O
0072360    e   d   i   t   .   d       I   n   t   e   r   D   i   s   k
0072400    .   b   c   p   l       O   e   d   i   t   .   b   c   p   l
0072420        O   e   d   i   t   C   o   m   .   b   c   p   l       U
0072440    t   i   l   D   P   .   b   c   p   l       C   o   m   p   i
0072460    l   e   O   e   d   i   t   .   c   m       D   u   m   p   O
0072500    e   d   i   t   .   c   m       L   i   s   t   O   e   d   i
0072520    t   .   c   m       L   o   a   d   O   e   d   i   t   .   c
0072540    m       R   e   l   e   a   s   e   O   e   d   i   t   .   c
0072560    m  \r 377  \0  \0   L   i   s   t   O   e   d   i   t   .   c
0072600    m  \0 373 225 340 212 263  \0  \0 376  \0   N 335 367   E   m
0072620    p   r   e   s   s       c   l   o   v   e   r   /   h       I
0072640    n   t   e   r   D   i   s   k   .   b   c   p   l       O   e
0072660    d   i   t   .   d       O   e   d   i   t   .   b   c   p   l
0072700        O   e   d   i   t   C   o   m   .   b   c   p   l       U
0072720    t   i   l   D   P   .   b   c   p   l      \r 377  \0  \0   L
0072740    o   a   d   O   e   d   i   t   .   c   m  \0 373 225 340 212
0072760  263  \0  \0 376  \0 311 314 350   B   l   d   r   /   l   /   v
0073000        6   0   0   /   W       O   E   d   i   t       O   E   d
0073020    i   t   C   o   m       U   t   i   l   D   P       I   n   t
0073040    e   r   D   i   s   k       G   P       T   e   m   p   l   a
0073060    t   e       ^  \r   B   f   s   B   a   s   e       B   f   s
0073100    C   l   o   s   e       B   f   s   C   r   e   a   t   e    
0073120    B   f   s   D   D   M   g   r       B   f   s   I   n   i   t
0073140        B   f   s   W   r   i   t   e       ^  \r   T   f   s   B
0073160    a   s   e       T   f   s   A       T   f   s   W   r   i   t
0073200    e       T   F   S   C   r   e   a   t   e       T   f   s   C
0073220    l   o   s   e       T   f   s   D   D   M   g   r       T   f
0073240    s   S   w   a   t       T   f   s   I   n   i   t       ^  \r
0073260    L   o   a   d   R   a   m       T   r   i   C   o   n   M   c
0073300   \r 377  \0  \0   R   e   l   e   a   s   e   O   e   d   i   t
0073320    .   c   m  \0 373 225 340 212 263  \0  \0 376  \0   ^ 352   E
0073340    f   t   p   /   -   e       m   a   x   c       c   o   n   n
0073360    e   c   t   /   q       a   l   t   o       s   t   o   r   e
0073400    /   c       o   e   d   i   t   .   r   u   n       o   e   d
0073420    i   t   .   s   y   m   s       ^  \r   c   o   n   n   e   c
0073440    t   /   q       a   l   t   o   s   o   u   r   c   e       @
0073460    D   u   m   p   O   e   d   i   t   .   c   m   @  \r 374    
0073477