$ od -c -N 50000 [Indigo]<Portola>GateControl>GATECONTROL.DM!2
0000000  377  \0  \0   G   a   t   e   C   o   n   t   r   o   l   .   b
0000020    c   p   l  \0 373 233   .   l 241  \0  \0 376 001  \0 310 216
0000040    /   /       G   a   t   e   C   o   n   t   r   o   l   .   b
0000060    c   p   l       -       G   a   t   e   w   a   y       C   o
0000100    n   t   r   o   l       P   r   o   g   r   a   m  \r   /   /
0000120        L   a   s   t       m   o   d   i   f   i   e   d       J
0000140    u   l   y       2   ,       1   9   8   3           1   0   :
0000160    2   8       P   M       b   y       B   o   g   g   s  \r  \r
0000200    g   e   t       "   S   y   s   D   e   f   s   .   d   "  \r
0000220    g   e   t       "   A   l   t   o   D   e   f   s   .   d   "
0000240   \r   g   e   t       "   B   c   p   l   F   i   l   e   s   .
0000260    d   "  \r  \r   e   x   t   e   r   n   a   l  \r   [  \r   /
0000300    /       o   u   t   g   o   i   n   g       p   r   o   c   e
0000320    d   u   r   e   s  \r   A   f   t   e   r   J   u   n   t   a
0000340    ;       S   t   a   t   u   s   C   t   x   ;       T   o   p
0000360    L   e   v   e   l   ;       S   y   s   E   r   r  \r  \r   /
0000400    /       i   n   c   o   m   i   n   g       p   r   o   c   e
0000420    d   u   r   e   s  \r   J   u   n   t   a   ;       I   n   i
0000440  376 001  \0   M 322   t   G   a   t   e   C   o   n   t   r   o
0000460    l   ;       A   d   d   T   o   Z   o   n   e   ;       R   e
0000500    t   u   r   n   F   r   o   m  \r   C   a   l   l   C   o   n
0000520    t   e   x   t   L   i   s   t   ;       B   l   o   c   k   ;
0000540        L   e   f   t   C   y   c   l   e   ;       M   o   v   e
0000560    B   l   o   c   k   ;       Z   e   r   o  \r   G   a   t   e
0000600    C   o   n   V   e   r   s   i   o   n   ;       G   a   t   e
0000620    C   o   n   S   u   m   m   a   r   y   ;       R   o   u   t
0000640    e   S   u   m   m   a   r   y   ;       T   r   a   n   s   i
0000660    t   M   a   t   r   i   x  \r   E   c   h   o   S   u   m   m
0000700    a   r   y   ;       T   i   m   e   S   u   m   m   a   r   y
0000720    ;       N   a   m   e   S   u   m   m   a   r   y   ;       B
0000740    o   o   t   S   u   m   m   a   r   y  \r   W   s   ;       W
0000760    s   s   ;       P   u   t   s   ;       R   e   s   e   t   s
0001000    ;       G   e   t   S   t   r   i   n   g  \r   R   e   s   e
0001020    t   C   m   d   M   e   n   u   ;       C   r   e   a   t   e
0001040    C   m   d   B   o 376 001  \0 035 223   x   ;       B   o   x
0001060    P   r   o   c   ;       F   r   e   e   ;       D   e   q   u
0001100    e   u   e  \r   G   a   t   e   w   a   y   ;       R   o   u
0001120    t   e   ;       E   c   h   o   ;       N   a   m   e   ;    
0001140    B   o   o   t   ;       T   i   m   e   ;       L   e   v   e
0001160    l   0   S   t   a   t   s  \r   E   f   t   p   ;       D   e
0001200    b   u   g   g   e   r   ;       H   a   l   t   G   a   t   e
0001220    w   a   y   ;       R   e   s   t   a   r   t   G   a   t   e
0001240    w   a   y  \r   C   r   e   a   t   e   R   o   u   t   e   C
0001260    t   x   ;       C   r   e   a   t   e   E   c   h   o   C   t
0001300    x   ;       C   r   e   a   t   e   G   a   t   e   C   o   n
0001320    C   t   x  \r   C   r   e   a   t   e   B   o   o   t   C   t
0001340    x   ;       C   r   e   a   t   e   N   a   m   e   C   t   x
0001360    ;       C   r   e   a   t   e   T   i   m   e   C   t   x  \r
0001400    S   e   t   T   i   m   e   r   ;       T   i   m   e   r   H
0001420    a   s   E   x   p   i   r   e   d  \r   L   o   a   d   R   a
0001440    m   ;       I   n   i   t   B   c   p 376 001  \0   9   I   l
0001460    R   u   n   t   i   m   e   ;       B   F   S   C   l   o   s
0001500    e  \r   E   t   h   e   r   B   o   o   t   ;       D   i   s
0001520    a   b   l   e   I   n   t   e   r   r   u   p   t   s   ;    
0001540    S   t   a   r   t   I   O  \r  \r   /   /       o   u   t   g
0001560    o   i   n   g       s   t   a   t   i   c   s  \r   w   h   e
0001600    e   l   ;       v   e   r   s   i   o   n   T   e   x   t  \r
0001620   \r   /   /       i   n   c   o   m   i   n   g       s   t   a
0001640    t   i   c   s  \r   l   v   U   s   e   r   F   i   n   i   s
0001660    h   P   r   o   c   ;       l   v   I   d   l   e  \r   s   y
0001700    s   Z   o   n   e   ;       s   y   s   D   i   s   k   ;    
0001720    c   t   x   Q   ;       o   l   d   S   t   a   t   s   Q  \r
0001740    R   a   m   I   m   a   g   e   ;       g   c   N   e   t   ;
0001760        g   c   H   o   s   t  \r   ]  \r  \r   s   t   a   t   i
0002000    c       [       s   a   v   e   d   U   F   P   ;       s   a
0002020    v   e   d   I   d   l   e   ;       w   h   e   e   l   ;    
0002040    e   n   d   C   o   d   e   ;       v   e   r   s   i   o 376
0002060  001  \0   U 347   n   T   e   x   t       ]  \r  \r   s   t   r
0002100    u   c   t   u   r   e       S   t   r   i   n   g       [    
0002120    l   e   n   g   t   h       b   y   t   e   ;       c   h   a
0002140    r   ^   1   ,   1       b   y   t   e       ]  \r  \f  \r   /
0002160    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0002200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0002260    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   l   e
0002300    t       G   a   t   e   C   o   n   t   r   o   l   (   b   l
0002320    v   ,       u   p   e   ,       c   f   a   )       b   e  \r
0002340    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0002360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0002440    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   [
0002460   \r   v   e   r 376 001  \0 201   H   s   i   o   n   T   e   x
0002500    t       =       "   G   a   t   e   C   o   n   t   r   o   l
0002520        o   f       2       J   u   l   y       8   3   "  \r   l
0002540    e   t       r   a   m   O   k       =       L   o   a   d   R
0002560    a   m   (   R   a   m   I   m   a   g   e   )       e   q    
0002600    0  \r   i   f       r   a   m   O   k       t   h   e   n    
0002620    I   n   i   t   B   c   p   l   R   u   n   t   i   m   e   (
0002640    )  \r   s   a   v   e   d   U   F   P       =       @   l   v
0002660    U   s   e   r   F   i   n   i   s   h   P   r   o   c   ;    
0002700    @   l   v   U   s   e   r   F   i   n   i   s   h   P   r   o
0002720    c       =       G   C   F   i   n   i   s   h   P   r   o   c
0002740   \r   e   n   d   C   o   d   e       =       b   l   v   >   >
0002760    B   L   V   .   e   n   d   C   o   d   e  \r   J   u   n   t
0003000    a   (   (   r   a   m   O   k   ?       l   e   v   B   a   s
0003020    i   c   ,       l   e   v   B   c   p   l   )   ,       A   f
0003040    t   e   r   J   u   n   t   a   )  \r   ]  \r  \r   /   /   -
0003060    -   -   -   -   -   -   -   -   - 376 001  \0   k   !   -   -
0003100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0003200   \r   a   n   d       A   f   t   e   r   J   u   n   t   a   (
0003220    )       b   e  \r   /   /   -   -   -   -   -   -   -   -   -
0003240    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0003340    -   -   -  \r   [  \r   I   n   i   t   G   a   t   e   C   o
0003360    n   t   r   o   l   (   )  \r   A   d   d   T   o   Z   o   n
0003400    e   (   s   y   s   Z   o   n   e   ,       I   n   i   t   G
0003420    a   t   e   C   o   n   t   r   o   l   ,       e   n   d   C
0003440    o   d   e   -   I   n   i   t   G   a   t   e   C   o   n   t
0003460    r   o   l   )  \r   s   a   v   e   d   I   d   l   e 376 001
0003500   \0 030 315       =       @   l   v   I   d   l   e   ;       @
0003520    l   v   I   d   l   e       =       B   l   o   c   k  \r   /
0003540    /   T   h   i   s       s   t   u   f   f       b   e   l   o
0003560    w       s   h   o   u   l   d       b   e       i   n       G
0003600    a   t   e   C   o   n   t   r   o   l   I   n   i   t   .  \r
0003620    /   /   T   h   e       p   r   o   b   l   e   m       i   s
0003640        t   h   a   t       I       r   u   n       o   u   t    
0003660    o   f       f   r   e   e       s   t   o   r   a   g   e    
0003700    d   u   r   i   n   g       i   n   i   t   i   a   l   i   z
0003720    a   t   i   o   n   ,  \r   /   /       s   o       t   h   i
0003740    s       s   u   f   f       i   s       d   e   f   e   r   r
0003760    e   d       u   n   t   i   l       a   f   t   e   r       t
0004000    h   e       i   n   i   t   i   a   l   i   z   a   t   i   o
0004020    n       c   o   d   e       h   a   s  \r   /   /       b   e
0004040    e   n       r   e   c   l   a   i   m   e   d   .           T
0004060    h   e   s   e       p   r   o   c   e   d   u   r   e   s    
0004100    a   r   e 376 001  \0 201 367   n   '   t       v   e   r   y
0004120        b   i   g       a   n   d       t   h   e   y       a   r
0004140    e   n   '   t  \r   /   /       b   r   o   k   e   n       o
0004160    u   t       i   n   t   o       s   e   p   a   r   a   t   e
0004200        i   n   i   t   i   a   l   i   z   a   t   i   o   n    
0004220    m   o   d   u   l   e   s   .  \r   C   r   e   a   t   e   R
0004240    o   u   t   e   C   t   x   (   )  \r   C   r   e   a   t   e
0004260    E   c   h   o   C   t   x   (   )  \r   C   r   e   a   t   e
0004300    G   a   t   e   C   o   n   C   t   x   (   )  \r   C   r   e
0004320    a   t   e   B   o   o   t   C   t   x   (   )  \r   C   r   e
0004340    a   t   e   N   a   m   e   C   t   x   (   )  \r   C   r   e
0004360    a   t   e   T   i   m   e   C   t   x   (   )  \r   T   o   p
0004400    L   e   v   e   l   (   )  \r   C   a   l   l   C   o   n   t
0004420    e   x   t   L   i   s   t   (   c   t   x   Q   !   0   )    
0004440    r   e   p   e   a   t  \r   ]  \r  \r   /   /   -   -   -   -
0004460    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0004500    -   -   -   -   -   -   -   - 376 001  \0   e 030   -   -   -
0004520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0004560    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n
0004600    d       G   C   F   i   n   i   s   h   P   r   o   c   (   )
0004620        b   e  \r   /   /   -   -   -   -   -   -   -   -   -   -
0004640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0004740    -   -  \r   [  \r   @   d   i   s   p   l   a   y   L   i   s
0004760    t   H   e   a   d       =       0   ;       f   o   r       i
0005000        =       0       t   o       3   2   0   0   0       l   o
0005020    o   p  \r   @   l   v   I   d   l   e       =       s   a   v
0005040    e   d   I   d   l   e  \r   i   f       s   y   s   D   i   s
0005060    k       n   e       0       t   h   e   n       B   F   S   C
0005100    l   o   s   e   (   s   y   s   D   i   s   k   ) 376 001  \0
0005120  247   Y  \r   m   a   n   i   f   e   s   t       k   b   I   n
0005140    t   e   r   r   u   p   t   B   i   t       =       1       l
0005160    s   h   i   f   t       1   2  \r   @   a   c   t   i   v   e
0005200    I   n   t   e   r   r   u   p   t   s       =       @   a   c
0005220    t   i   v   e   I   n   t   e   r   r   u   p   t   s       &
0005240        n   o   t       k   b   I   n   t   e   r   r   u   p   t
0005260    B   i   t  \r   @   d   i   s   p   l   a   y   I   n   t   e
0005300    r   r   u   p   t       =       @   d   i   s   p   l   a   y
0005320    I   n   t   e   r   r   u   p   t       &       n   o   t    
0005340    k   b   I   n   t   e   r   r   u   p   t   B   i   t  \r   @
0005360    l   v   U   s   e   r   F   i   n   i   s   h   P   r   o   c
0005400        =       s   a   v   e   d   U   F   P  \r   ]  \r  \r   /
0005420    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0005440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0005520    -   - 376 001  \0 327   F   -   -   -   -   -   -   -   -   -
0005540    -   -  \r   a   n   d       S   y   s   E   r   r   (   p   1
0005560    ,       e   c   ,       p   2   ,       p   3   ,       p   4
0005600    ,       p   5   )       b   e  \r   /   /   -   -   -   -   -
0005620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0005720    -   -   -   -   -   -   -  \r   [  \r   l   e   t       t   e
0005740    m   p       =       p   1   ;       p   1       =       e   c
0005760    ;       e   c       =       t   e   m   p  \r   (   t   a   b
0006000    l   e       [       7   7   4   0   3   b   ;       1   4   0
0006020    1   b       ]   )   (   "   S   y   s   .   e   r   r   o   r
0006040    s   "   ,       l   v       p   1   )  \r   ]  \r  \f  \r   /
0006060    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0006100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0006120    -   -   -   -   -   -   - 376 001  \0   j 203   -   -   -   -
0006140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0006200    -   -  \r   a   n   d       S   t   a   t   u   s   C   t   x
0006220    (   c   t   x   )       b   e  \t   /   /       a       c   o
0006240    n   t   e   x   t  \r   /   /   -   -   -   -   -   -   -   -
0006260    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0006360    -   -   -   -  \r   /   /       c   t   x   !   3       i   s
0006400        a       b   o   x       s   t   r   e   a   m       f   o
0006420    r       t   h   e       s   t   a   t   u   s       w   i   n
0006440    d   o   w   .  \r   [  \r   l   e   t       l   a   s   t   N
0006460    e   t   ,       l   a   s   t   H   o   s   t       =       -
0006500    1   ,       -   1  \r  \r               [       /   /       r
0006520    e   p   e   a   t  \r               l   e   t 376 001  \0 217
0006540  325       s   t   s       =       c   t   x   !   3  \r        
0006560        l   e   t       t   i   m   e   r       =       n   i   l
0006600    ;       S   e   t   T   i   m   e   r   (   l   v       t   i
0006620    m   e   r   ,       2   5   0   )  \r                        
0006640    [  \r                           w   h   i   l   e       o   l
0006660    d   S   t   a   t   s   Q   !   0       n   e       0       d
0006700    o  \r                                       F   r   e   e   (
0006720    s   y   s   Z   o   n   e   ,       D   e   q   u   e   u   e
0006740    (   o   l   d   S   t   a   t   s   Q   )   )  \r            
0006760                B   l   o   c   k   (   )  \r                    
0007000        ]       r   e   p   e   a   t   u   n   t   i   l       T
0007020    i   m   e   r   H   a   s   E   x   p   i   r   e   d   (   l
0007040    v       t   i   m   e   r   )  \r              \r            
0007060    R   e   s   e   t   s   (   s   t   s   ,       g   c   N   e
0007100    t       e   q       l   a   s   t   N   e   t       &       g
0007120    c   H   o   s   t       e   q       l   a   s   t   H   o   s
0007140    t 376 001  \0 353 251   )           /   /       d   o   n   t
0007160    C   l   e   a   r  \r               l   a   s   t   N   e   t
0007200        =       g   c   N   e   t   ;       l   a   s   t   H   o
0007220    s   t       =       g   c   H   o   s   t  \r               G
0007240    a   t   e   C   o   n   V   e   r   s   i   o   n   (   s   t
0007260    s   )  \r               W   s   s   (   s   t   s   ,       "
0007300    *   N   *   N   "   )  \r               E   c   h   o   S   u
0007320    m   m   a   r   y   (   s   t   s   )  \r               R   o
0007340    u   t   e   S   u   m   m   a   r   y   (   s   t   s   )  \r
0007360                T   i   m   e   S   u   m   m   a   r   y   (   s
0007400    t   s   )  \r               N   a   m   e   S   u   m   m   a
0007420    r   y   (   s   t   s   )  \r               B   o   o   t   S
0007440    u   m   m   a   r   y   (   s   t   s   )  \r               P
0007460    u   t   s   (   s   t   s   ,       $   *   N   )  \r        
0007500        G   a   t   e   C   o   n   S   u   m   m   a   r   y   (
0007520    s   t   s   )  \r               W   s   s   (   s   t   s   ,
0007540        "   *   N   *   N 376 001  \0 345 250   "   )  \r        
0007560        T   r   a   n   s   i   t   M   a   t   r   i   x   (   s
0007600    t   s   )  \r              \r               ]       r   e   p
0007620    e   a   t  \r   ]  \r  \f  \r   /   /   -   -   -   -   -   -
0007640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0007740    -   -   -   -   -   -  \r   a   n   d       T   o   p   L   e
0007760    v   e   l   (   )       b   e  \r   /   /   -   -   -   -   -
0010000    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0010100    -   -   -   -   -   -   -  \r   [  \r   R   e   s   e   t   C
0010120    m   d   M   e   n   u   (   )  \r   C   r   e   a   t   e   C
0010140    m   d   B   o   x   (   Q   u   i   t   , 376 001  \0 341   /
0010160        "   Q   u   i   t   "   )  \r   C   r   e   a   t   e   C
0010200    m   d   B   o   x   (   G   a   t   e   w   a   y   ,       "
0010220    G   a   t   e   w   a   y   "   )  \r   C   r   e   a   t   e
0010240    C   m   d   B   o   x   (   R   o   u   t   e   ,       "   R
0010260    o   u   t   e   "   )  \r   C   r   e   a   t   e   C   m   d
0010300    B   o   x   (   E   c   h   o   ,       "   E   c   h   o   "
0010320    )  \r   C   r   e   a   t   e   C   m   d   B   o   x   (   N
0010340    a   m   e   ,       "   N   a   m   e   "   )  \r   C   r   e
0010360    a   t   e   C   m   d   B   o   x   (   B   o   o   t   ,    
0010400    "   B   o   o   t   "   )  \r   C   r   e   a   t   e   C   m
0010420    d   B   o   x   (   T   i   m   e   ,       "   T   i   m   e
0010440    "   )  \r   i   f       g   c   H   o   s   t       n   e    
0010460    0       t   h   e   n       C   r   e   a   t   e   C   m   d
0010500    B   o   x   (   L   e   v   e   l   0   S   t   a   t   s   ,
0010520        "   L   e   v   e   l   0   S   t   a   t   s   "   )  \r
0010540    t   e   s   t       w   h   e   e   l  \r               i   f
0010560  376 001  \0   r   7   n   o   t       C   r   e   a   t   e   C
0010600    m   d   B   o   x   (   E   n   a   b   l   e   ,       "   E
0010620    n   a   b   l   e   "   )  \r               i   f   s   o  \r
0010640                            [  \r                           C   r
0010660    e   a   t   e   C   m   d   B   o   x   (   D   i   s   a   b
0010700    l   e   ,       "   D   i   s   a   b   l   e   "   )  \r    
0010720                        i   f       g   c   H   o   s   t       n
0010740    e       0       t   h   e   n  \r                            
0010760            [  \r                                       i   f    
0011000    s   y   s   D   i   s   k       n   e       0       t   h   e
0011020    n       C   r   e   a   t   e   C   m   d   B   o   x   (   E
0011040    f   t   p   ,       "   E   F   T   P   "   )  \r            
0011060                            C   r   e   a   t   e   C   m   d   B
0011100    o   x   (   D   e   b   u   g   g   e   r   ,       "   D   e
0011120    b   u   g   g   e   r   "   )  \r                            
0011140            C   r   e   a   t   e   C   m   d   B   o   x   (   H
0011160    a   l   t   G   a 376 001  \0 327   m   t   e   w   a   y   ,
0011200        "   H   a   l   t   "   )  \r                            
0011220            C   r   e   a   t   e   C   m   d   B   o   x   (   R
0011240    e   s   t   a   r   t   G   a   t   e   w   a   y   ,       "
0011260    R   e   s   t   a   r   t   "   )  \r                        
0011300                ]  \r                           ]  \r   /   /    
0011320    R   e   s   e   t   C   m   d   M   e   n   u       d   e   s
0011340    t   r   o   y   e   d       t   h   e       B   o   x   Q    
0011360    w   h   i   c   h       B   o   x   P   r   o   c       i   s
0011400        f   o   l   l   o   w   i   n   g   .  \r   /   /       I
0011420    f       w   e       j   u   s   t       r   e   t   u   r   n
0011440        n   o   w   ,       B   o   x   P   r   o   c       w   i
0011460    l   l       g   e   t       h   o   r   r   i   b   l   y    
0011500    c   o   n   f   u   s   e   d   .  \r   /   /       S   o    
0011520    d   o   n   '   t       l   e   t       i   t       c   o   n
0011540    t   i   n   u   e   :       f   o   r   c   e       a       r
0011560    e   t   u   r   n       f   r   o   m 376 001  \0 214 312    
0011600    B   o   x   P   r   o   c   .  \r   R   e   t   u   r   n   F
0011620    r   o   m   (   B   o   x   P   r   o   c   )  \r   ]  \r  \r
0011640    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0011660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0011740    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a
0011760    n   d       E   n   a   b   l   e   (   )       b   e  \r   /
0012000    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0012020    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0012100    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r
0012120    l   e   t       p   s   w       =       v   e   c       1   2
0012140    8  \r   i   f       G   e   t   S   t   r   i   n   g   (   "
0012160    *   N   P   a   s   s   w   o   r   d   :       "   ,     376
0012200  001  \0 030 030   p   s   w   ,       f   a   l   s   e   )    
0012220    t   h   e   n  \r               [  \r               W   s   (
0012240    "   (   p   s   t   )   "   )  \r               l   e   t    
0012260    e   n   c   p   w       =       0  \r               f   o   r
0012300        i       =       1       t   o       p   s   w   >   >   S
0012320    t   r   i   n   g   .   l   e   n   g   t   h       d   o  \r
0012340                            e   n   c   p   w       =       L   e
0012360    f   t   C   y   c   l   e   (   e   n   c   p   w   +   (   p
0012400    s   w   >   >   S   t   r   i   n   g   .   c   h   a   r   ^
0012420    i       &       #   1   3   7   )       *       2   5   0   3
0012440    5   ,       1   )  \r               t   e   s   t       e   n
0012460    c   p   w       e   q       2   4   1   4   1   b  \r        
0012500                    i   f   s   o  \r                            
0012520            [  \r                                       w   h   e
0012540    e   l       =       t   r   u   e  \r                        
0012560                T   o   p   L   e   v   e   l   (   )  \r        
0012600                  376 001  \0 350   F               ]  \r        
0012620                    i   f   n   o   t       W   s   (   "       -
0012640        i   n   c   o   r   r   e   c   t       p   a   s   s   w
0012660    o   r   d   "   )  \r               ]  \r   ]  \r  \r   /   /
0012700    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0013000    -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d
0013020        D   i   s   a   b   l   e   (   )       b   e  \r   /   /
0013040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0013140    -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   w
0013160    h   e   e   l       =       f   a   l   s   e  \r   T   o   p
0013200    L   e   v   e   l   (   )  \r   ] 376 001  \0  \0 030  \r  \f
0013220   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0013240    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0013320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0013340    a   n   d       Q   u   i   t   (   )       b   e  \r   /   /
0013360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0013460    -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   R
0013500    e   s   e   t   C   m   d   M   e   n   u   (   )  \r   C   r
0013520    e   a   t   e   C   m   d   B   o   x   (   T   o   p   L   e
0013540    v   e   l   ,       "   T   o   p   L   e   v   e   l   "   )
0013560   \r   C   r   e   a   t   e   C   m   d   B   o   x   (   D   M
0013600    T   ,       "   D   M   T   "   )  \r   C   r   e   a 376 001
0013620   \0 370 322   t   e   C   m   d   B   o   x   (   N   e   t   E
0013640    x   e   c   ,       "   N   e   t   E   x   e   c   "   )  \r
0013660    i   f       (   @   d   i   s   k   S   t   a   t   u   s    
0013700    &       4   0   b   )       e   q       0       t   h   e   n
0013720        C   r   e   a   t   e   C   m   d   B   o   x   (   D   i
0013740    s   k   B   o   o   t   ,       "   D   i   s   k   E   x   e
0013760    c   "   )  \r   R   e   t   u   r   n   F   r   o   m   (   B
0014000    o   x   P   r   o   c   )  \r   ]  \r  \r   /   /   -   -   -
0014020    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0014120    -   -   -   -   -   -   -   -   -  \r   a   n   d       D   M
0014140    T   (   )       b   e       E   t   h   e   r   B   o   o   t
0014160    (   0   )  \r   /   /   -   -   -   -   -   -   -   -   -   -
0014200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0014220    -   -   - 376 001  \0 247   B   -   -   -   -   -   -   -   -
0014240    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0014300    -   -   -   -   -   -   -  \r  \r   /   /   -   -   -   -   -
0014320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0014420    -   -   -   -   -   -   -  \r   a   n   d       N   e   t   E
0014440    x   e   c   (   )       b   e       E   t   h   e   r   B   o
0014460    o   t   (   1   0   b   )  \r   /   /   -   -   -   -   -   -
0014500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0014600    -   -   -   -   -   -  \r  \r   /   /   -   -   -   -   -   -
0014620    -   -   -   -   -   -   -   - 376 001  \0 213   A   -   -   -
0014640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0014720    -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d    
0014740    D   i   s   k   B   o   o   t   (   )       b   e  \r   /   /
0014760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0015060    -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   s
0015100    t   r   u   c   t   u   r   e       K   C   B   :  \r        
0015120        [  \r               l   i   n   k       w   o   r   d  \r
0015140                s   t   a   t   u   s       w   o   r   d  \r    
0015160            c   o   m   m   a   n   d       w   o   r   d  \r    
0015200            h   e   a   d   e   r   A   d   d   r   e   s   s    
0015220    w   o   r   d  \r               l   a   b   e   l 376 001  \0
0015240  345 202   A   d   d   r   e   s   s       w   o   r   d  \r    
0015260            d   a   t   a   A   d   d   r   e   s   s       w   o
0015300    r   d  \r               n   o   r   m   a   l   W   a   k   e
0015320    u   p   s       w   o   r   d  \r               e   r   r   o
0015340    r   W   a   k   e   u   p   s       w   o   r   d  \r        
0015360        h   e   a   d   e   r       w   o   r   d  \r            
0015400    d   i   s   k   A   d   d   r   e   s   s       w   o   r   d
0015420   \r               ]  \r   m   a   n   i   f   e   s   t       l
0015440    e   n   K   C   B       =       s   i   z   e       K   C   B
0015460    /   1   6  \r  \r   D   i   s   a   b   l   e   I   n   t   e
0015500    r   r   u   p   t   s   (   )  \r   S   t   a   r   t   I   O
0015520    (   3   )  \r  \r   l   e   t       k   c   b   ,       d   a
0015540    t   a   ,       l   a   b   e   l       =       v   e   c    
0015560    l   e   n   K   C   B   ,       v   e   c       2   5   6   ,
0015600        v   e   c       8  \r               [  \r               Z
0015620    e   r   o   (   k   c   b   ,       l   e   n   K   C   B   )
0015640   \r     376 001  \0 364 327           k   c   b   >   >   K   C
0015660    B   .   c   o   m   m   a   n   d       =       4   4   1   0
0015700    0   b           /   /       c   h   e   c   k       h   e   a
0015720    d   e   r   ,       r   e   a   d       l   a   b   e   l   ,
0015740        r   e   a   d       d   a   t   a  \r               k   c
0015760    b   >   >   K   C   B   .   h   e   a   d   e   r   A   d   d
0016000    r   e   s   s       =       l   v       k   c   b   >   >   K
0016020    C   B   .   h   e   a   d   e   r  \r               k   c   b
0016040    >   >   K   C   B   .   l   a   b   e   l   A   d   d   r   e
0016060    s   s       =       l   a   b   e   l  \r               k   c
0016100    b   >   >   K   C   B   .   d   a   t   a   A   d   d   r   e
0016120    s   s       =       d   a   t   a  \r               k   c   b
0016140    >   >   K   C   B   .   d   i   s   k   A   d   d   r   e   s
0016160    s       =       k   b   d   A   d   !   0       x   o   r    
0016200    -   1  \r               u   n   t   i   l       @   d   i   s
0016220    k   C   o   m   m   a   n   d       e   q       0       l   o
0016240    o   p  \r               @ 376  \0 314   A 241   d   i   s   k
0016260    C   o   m   m   a   n   d       =       k   c   b  \r        
0016300        w   h   i   l   e       (   k   c   b   >   >   K   C   B
0016320    .   s   t   a   t   u   s       &       7   4   0   0   b   )
0016340        e   q       0       l   o   o   p  \r               i   f
0016360        (   k   c   b   >   >   K   C   B   .   s   t   a   t   u
0016400    s       &       7   6   6   7   b   )       e   q       7   4
0016420    0   0   b       b   r   e   a   k  \r               ]       r
0016440    e   p   e   a   t  \r  \r   M   o   v   e   B   l   o   c   k
0016460    (   4   0   2   b   ,       l   a   b   e   l   ,       8   )
0016500   \r   M   o   v   e   B   l   o   c   k   (   1   ,       d   a
0016520    t   a   ,       2   5   6   )  \r   @   2       =       k   c
0016540    b   >   >   K   C   B   .   s   t   a   t   u   s  \r   g   o
0016560    t   o       1  \r   ]  \r  \r 377  \0  \0   G   a   t   e   C
0016600    o   n   t   r   o   l   I   n   i   t   .   b   c   p   l  \0
0016620  373 233   .   y 361  \0  \0 376 001  \0 331 261   /   /       G
0016640    a   t   e   C   o   n   t   r   o   l   I   n   i   t   .   b
0016660    c   p   l  \r   /   /       L   a   s   t       m   o   d   i
0016700    f   i   e   d       J   u   l   y       2   ,       1   9   8
0016720    3           8   :   5   3       P   M       b   y       B   o
0016740    g   g   s  \r  \r   g   e   t       "   G   a   t   e   C   o
0016760    n   M   e   n   u   .   d   e   c   l   "  \r  \r   e   x   t
0017000    e   r   n   a   l  \r   [  \r   /   /       o   u   t   g   o
0017020    i   n   g       p   r   o   c   e   d   u   r   e   s  \r   I
0017040    n   i   t   G   a   t   e   C   o   n   t   r   o   l  \r  \r
0017060    /   /       i   n   c   o   m   i   n   g       p   r   o   c
0017100    e   d   u   r   e   s  \r   M   y   F   r   a   m   e   ;    
0017120    Z   e   r   o   ;       W   s   s  \r   I   n   i   t   i   a
0017140    l   i   z   e   Z   o   n   e   ;       A   d   d   T   o   Z
0017160    o   n   e   ;       A   l   l   o   c   a   t   e   ;       S
0017200    y   s   E   r   r  \r   I   n   i   t   P   u   p   L   e   v
0017220    e   l   1   ;       E   n   q   u   e   u   e 376 001  \0   w
0017240  366   ;       D   e   q   u   e   u   e  \r   I   n   i   t   i
0017260    a   l   i   z   e   C   o   n   t   e   x   t   ;       I   n
0017300    i   t   C   o   n   t   e   x   t   S   c   h   e   d  \r   I
0017320    n   i   t   M   e   n   u   P   a   c   k   a   g   e   ;    
0017340    C   r   e   a   t   e   M   e   n   u   ;       C   r   e   a
0017360    t   e   B   o   x   ;       C   r   e   a   t   e   B   o   x
0017400    S   t   r   e   a   m  \r   D   u   m   b   B   o   x   ;    
0017420    S   t   a   t   u   s   C   t   x   ;       O   t   h   e   r
0017440    P   u   p   C   t   x  \r   C   r   e   a   t   e   K   e   y
0017460    b   o   a   r   d   S   t   r   e   a   m   ;       B   F   S
0017500    I   n   i   t  \r  \r   /   /       o   u   t   g   o   i   n
0017520    g       s   t   a   t   i   c   s  \r   s   y   s   Z   o   n
0017540    e   ;       s   y   s   D   i   s   k   ;       c   t   x   Q
0017560    ;       o   l   d   S   t   a   t   s   Q  \r   d   s   p   ;
0017600        e   r   r   o   r   D   s   p   ;       t   i   t   l   e
0017620    D   s   p   ;       c   m   d   M   e   n   u  \r  \r   /   /
0017640      376 001  \0   9 003   i   n   c   o   m   i   n   g       s
0017660    t   a   t   i   c   s  \r   g   a   c   h   a   1   0   ;    
0017700    o   t   h   e   r   P   u   p   Q   ;       m   p   d   ;    
0017720    v   e   r   s   i   o   n   T   e   x   t  \r   ]  \r  \r   s
0017740    t   a   t   i   c  \r   [  \r   s   y   s   Z   o   n   e   ;
0017760        s   y   s   D   i   s   k   ;       c   t   x   Q   ;    
0020000    o   l   d   S   t   a   t   s   Q  \r   d   s   p   ;       e
0020020    r   r   o   r   D   s   p   ;       t   i   t   l   e   D   s
0020040    p   ;       c   m   d   M   e   n   u  \r  \r   s   t   a   t
0020060    H   e   i   g   h   t       =       1   8   0  \r   t   t   y
0020100    H   e   i   g   h   t       =       3   0   0  \r   ]  \r  \r
0020120    m   a   n   i   f   e   s   t  \r   [  \r   s   t   a   c   k
0020140    L   i   m       =       3   3   5   b  \r   d   s   p   W   i
0020160    d   t   h       =       3   4  \r   ]  \r  \f  \r   /   /   -
0020200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0020240    -   -   -   -   -   - 376 001  \0 004   :   -   -   -   -   -
0020260    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0020300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0020320    l   e   t       I   n   i   t   G   a   t   e   C   o   n   t
0020340    r   o   l   (   )       b   e  \r   /   /   -   -   -   -   -
0020360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0020460    -   -   -   -   -   -  \r   [  \r   C   r   e   a   t   e   K
0020500    e   y   b   o   a   r   d   S   t   r   e   a   m   (   )  \r
0020520    /   /       c   r   e   a   t   e       a       f   r   e   e
0020540        s   t   o   r   a   g   e       z   o   n   e  \r   l   e
0020560    t       f   r   e   e   E   n   d       =       M   y   F   r
0020600    a   m   e   (   )       -   1   5   0   0  \r   l   e   t    
0020620    f   r   e   e   B   e   g   i   n       =       @   s   t   a
0020640    c   k   L   i   m  \r   @   s   t   a   c 376 001  \0 226   i
0020660    k   L   i   m       =       f   r   e   e   E   n   d  \r   t
0020700    e   s   t       f   r   e   e   E   n   d       -       f   r
0020720    e   e   B   e   g   i   n       l   s       0  \r            
0020740    i   f   s   o  \r                           [  \r            
0020760                s   y   s   Z   o   n   e       =       I   n   i
0021000    t   i   a   l   i   z   e   Z   o   n   e   (   f   r   e   e
0021020    E   n   d   -   7   7   7   7   7   b   ,       7   7   7   7
0021040    7   b   ,       S   y   s   E   r   r   ,       0   )  \r    
0021060                        f   r   e   e   E   n   d       =       f
0021100    r   e   e   E   n   d       -       7   7   7   7   7   b  \r
0021120                            i   f       f   r   e   e   E   n   d
0021140        -       f   r   e   e   B   e   g   i   n       g   r    
0021160    1   0   0       t   h   e   n  \r                            
0021200            A   d   d   T   o   Z   o   n   e   (   s   y   s   Z
0021220    o   n   e   ,       f   r   e   e   B   e   g   i   n   ,    
0021240    f   r   e   e   E   n   d   -   f   r   e   e   B   e   g   i
0021260  376 001  \0 356 375   n   )  \r                           ]  \r
0021300                i   f   n   o   t       s   y   s   Z   o   n   e
0021320        =       I   n   i   t   i   a   l   i   z   e   Z   o   n
0021340    e   (   f   r   e   e   B   e   g   i   n   ,       f   r   e
0021360    e   E   n   d   -   f   r   e   e   B   e   g   i   n   ,    
0021400    S   y   s   E   r   r   ,       0   )  \r  \r   s   y   s   D
0021420    i   s   k       =       B   F   S   I   n   i   t   (   s   y
0021440    s   Z   o   n   e   ,       t   r   u   e   ,       0   )  \r
0021460    /   /   f   r   e   e   E   n   d       =       M   y   F   r
0021500    a   m   e   (   )       -   2   0   0  \r   /   /   A   d   d
0021520    T   o   Z   o   n   e   (   s   y   s   Z   o   n   e   ,    
0021540    f   r   e   e   E   n   d   ,       1   3   0   0   )  \r  \r
0021560    o   l   d   S   t   a   t   s   Q       =       A   l   l   o
0021600    c   a   t   e   (   s   y   s   Z   o   n   e   ,       2   )
0021620    ;       o   l   d   S   t   a   t   s   Q   !   0       =    
0021640    0  \r   c   t   x   Q       =       A   l   l   o   c   a   t
0021660    e   (   s   y   s 376 001  \0   ]   1   Z   o   n   e   ,    
0021700    2   )   ;       c   t   x   Q   !   0       =       0  \r   I
0021720    n   i   t   C   o   n   t   e   x   t   S   c   h   e   d   (
0021740    )  \r   I   n   i   t   P   u   p   L   e   v   e   l   1   (
0021760    s   y   s   Z   o   n   e   ,       c   t   x   Q   ,       1
0022000    0   )  \r   I   n   i   t   M   e   n   u   P   a   c   k   a
0022020    g   e   (   c   t   x   Q   ,       g   a   c   h   a   1   0
0022040    ,       s   y   s   Z   o   n   e   ,       1   5   0   0   )
0022060   \r  \r   C   r   e   a   t   e   D   C   B   (   3   2   )  \r
0022100   \r   /   /       T   i   t   l   e       w   i   n   d   o   w
0022120   \r   t   i   t   l   e   D   s   p       =       C   r   e   a
0022140    t   e   B   o   x   S   t   r   e   a   m   (   C   r   e   a
0022160    t   e   B   o   x   (   C   r   e   a   t   e   M   e   n   u
0022200    (   C   r   e   a   t   e   D   C   B   (   1   6   ,       d
0022220    s   p   W   i   d   t   h   )   )   ,  \r       0   ,       0
0022240    ,       5   4   4   ,       1   6   ,       D   u   m   b   B
0022260    o   x   ,       m   e   n   u   B   o 376 001  \0 312   b   x
0022300    B   o   r   d   e   r   )   ,       f   a   l   s   e   ,    
0022320    t   r   u   e   )  \r   W   s   s   (   t   i   t   l   e   D
0022340    s   p   ,       v   e   r   s   i   o   n   T   e   x   t   )
0022360   \r  \r   C   r   e   a   t   e   D   C   B   (   1   6   )  \r
0022400   \r   /   /       G   a   t   e   w   a   y       S   t   a   t
0022420    u   s       w   i   n   d   o   w  \r   l   e   t       c   t
0022440    x       =       I   n   i   t   i   a   l   i   z   e   C   o
0022460    n   t   e   x   t   (   A   l   l   o   c   a   t   e   (   s
0022500    y   s   Z   o   n   e   ,       3   0   0   )   ,       3   0
0022520    0   ,       S   t   a   t   u   s   C   t   x   ,       1   )
0022540   \r   c   t   x   !   3       =       C   r   e   a   t   e   B
0022560    o   x   S   t   r   e   a   m   (   C   r   e   a   t   e   B
0022600    o   x   (   C   r   e   a   t   e   M   e   n   u   (   C   r
0022620    e   a   t   e   D   C   B   (   s   t   a   t   H   e   i   g
0022640    h   t   ,       d   s   p   W   i   d   t   h   )   )   ,  \r
0022660        0   ,       0   ,       5   4   4   ,       s   t   a 376
0022700  001  \0   [ 337   t   H   e   i   g   h   t   ,       D   u   m
0022720    b   B   o   x   ,       m   e   n   u   B   o   x   B   o   r
0022740    d   e   r   )   )  \r   E   n   q   u   e   u   e   (   c   t
0022760    x   Q   ,       c   t   x   )  \r  \r   C   r   e   a   t   e
0023000    D   C   B   (   1   6   )  \r  \r   /   /       M   e   n   u
0023020        w   i   n   d   o   w  \r   c   m   d   M   e   n   u    
0023040    =       C   r   e   a   t   e   M   e   n   u   (   C   r   e
0023060    a   t   e   D   C   B   (   5   2   ,       d   s   p   W   i
0023100    d   t   h   )   )  \r   C   r   e   a   t   e   B   o   x   (
0023120    c   m   d   M   e   n   u   ,       0   ,       0   ,       5
0023140    4   4   ,       5   2   ,       D   u   m   b   B   o   x   ,
0023160        m   e   n   u   B   o   x   B   o   r   d   e   r   )  \r
0023200   \r   C   r   e   a   t   e   D   C   B   (   1   6   )  \r  \r
0023220    /   /       T   T   Y       s   i   m   u   l   a   t   i   o
0023240    n       w   i   n   d   o   w  \r   d   s   p       =       C
0023260    r   e   a   t   e   B   o   x   S   t   r   e   a   m   (   C
0023300    r   e   a   t 376 001  \0 036 330   e   B   o   x   (   C   r
0023320    e   a   t   e   M   e   n   u   (   C   r   e   a   t   e   D
0023340    C   B   (   t   t   y   H   e   i   g   h   t   ,       d   s
0023360    p   W   i   d   t   h   )   )   ,  \r       0   ,       0   ,
0023400        5   4   4   ,       t   t   y   H   e   i   g   h   t   ,
0023420        D   u   m   b   B   o   x   ,       m   e   n   u   B   o
0023440    x   B   o   r   d   e   r   )   )  \r  \r   C   r   e   a   t
0023460    e   D   C   B   (   1   6   )  \r  \r   /   /       E   r   r
0023500    o   r       w   i   n   d   o   w  \r   e   r   r   o   r   D
0023520    s   p       =       C   r   e   a   t   e   B   o   x   S   t
0023540    r   e   a   m   (   C   r   e   a   t   e   B   o   x   (   C
0023560    r   e   a   t   e   M   e   n   u   (   C   r   e   a   t   e
0023600    D   C   B   (   1   6   ,       d   s   p   W   i   d   t   h
0023620    )   )   ,  \r       0   ,       0   ,       5   4   4   ,    
0023640    1   6   ,       D   u   m   b   B   o   x   ,       m   e   n
0023660    u   B   o   x   B   o   r   d   e   r   )   ,       f   a   l
0023700    s   e   ,       t   r   u   e   ) 376 001  \0   Y  \n  \r   o
0023720    t   h   e   r   P   u   p   Q       =       A   l   l   o   c
0023740    a   t   e   (   s   y   s   Z   o   n   e   ,       2   )   ;
0023760        o   t   h   e   r   P   u   p   Q   !   0       =       0
0024000   \r   E   n   q   u   e   u   e   (   c   t   x   Q   ,       I
0024020    n   i   t   i   a   l   i   z   e   C   o   n   t   e   x   t
0024040    (   A   l   l   o   c   a   t   e   (   s   y   s   Z   o   n
0024060    e   ,       3   0   0   )   ,       3   0   0   ,       O   t
0024100    h   e   r   P   u   p   C   t   x   )   )  \r  \r   w   h   i
0024120    l   e       m   p   d   >   >   M   P   D   .   m   e   n   u
0024140    Q   .   h   e   a   d       n   e       0       d   o       D
0024160    e   q   u   e   u   e   (   l   v       m   p   d   >   >   M
0024200    P   D   .   m   e   n   u   Q   )  \r   E   n   q   u   e   u
0024220    e   (   l   v       m   p   d   >   >   M   P   D   .   m   e
0024240    n   u   Q   ,       c   m   d   M   e   n   u   )  \r   ]  \r
0024260   \f  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0024300    -   -   -   -   -   -   -   -   -   -   -   -   -   - 376 001
0024320   \0 337   N   -   -   -   -   -   -   -   -   -   -   -   -   -
0024340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0024400    -   -   -   -  \r   a   n   d       C   r   e   a   t   e   D
0024420    C   B   (   h   e   i   g   h   t   ,       w   i   d   t   h
0024440    ;       n   u   m   a   r   g   s       n   a   )       =    
0024460    v   a   l   o   f  \r   /   /   -   -   -   -   -   -   -   -
0024500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0024600    -   -   -  \r   [  \r   l   e   t       d   c   b       =    
0024620    A   l   l   o   c   a   t   e   (   s   y   s   Z   o   n   e
0024640    ,       l   D   C   B   ,       f   a   l   s   e   ,       t
0024660    r   u   e   )   ;       Z   e   r   o   (   d   c   b   ,    
0024700    l   D   C   B   )  \r   i   f       n   a       g   r       1
0024720        &     376 001  \0 224   ;   w   i   d   t   h       n   e
0024740        0       t   h   e   n  \r               [  \r            
0024760    d   c   b   >   >   D   C   B   .   w   i   d   t   h       =
0025000        w   i   d   t   h  \r               d   c   b   >   >   D
0025020    C   B   .   b   i   t   m   a   p       =       A   l   l   o
0025040    c   a   t   e   (   s   y   s   Z   o   n   e   ,       h   e
0025060    i   g   h   t   *   w   i   d   t   h   ,       f   a   l   s
0025100    e   ,       t   r   u   e   )  \r               Z   e   r   o
0025120    (   d   c   b   >   >   D   C   B   .   b   i   t   m   a   p
0025140    ,       h   e   i   g   h   t   *   w   i   d   t   h   )  \r
0025160                d   c   b   >   >   D   C   B   .   i   n   d   e
0025200    n   t   a   t   i   o   n       =       2  \r               ]
0025220   \r   d   c   b   >   >   D   C   B   .   h   e   i   g   h   t
0025240        =       h   e   i   g   h   t   /   2  \r   l   e   t    
0025260    l   v   D   C   B       =       d   i   s   p   l   a   y   L
0025300    i   s   t   H   e   a   d  \r   w   h   i   l   e       @   l
0025320    v   D   C   B       n   e     376  \0   0   3   @   0       d
0025340    o       l   v   D   C   B       =       @   l   v   D   C   B
0025360   \r   @   l   v   D   C   B       =       d   c   b  \r   r   e
0025400    s   u   l   t   i   s       d   c   b  \r   ]  \r 377  \0  \0
0025420    G   a   t   e   C   o   n   M   e   n   u   .   b   c   p   l
0025440   \0 373 225  \r 344   P  \0  \0 376 001  \0 273 032   /   /    
0025460    G   a   t   e   C   o   n   M   e   n   u   .   b   c   p   l
0025500   \r  \r   /   /       L   a   s   t       m   o   d   i   f   i
0025520    e   d       F   e   b   r   u   a   r   y       1   5   ,    
0025540    1   9   7   9           2   :   4   7       P   M       b   y
0025560        B   o   g   g   s  \r  \r   g   e   t       "   G   a   t
0025600    e   C   o   n   M   e   n   u   .   d   e   c   l   "  \r   g
0025620    e   t       "   A   l   t   o   D   e   f   s   .   d   "  \r
0025640   \r   e   x   t   e   r   n   a   l  \r   [  \r   /   /       o
0025660    u   t   g   o   i   n   g       p   r   o   c   e   d   u   r
0025700    e   s  \r   C   r   e   a   t   e   C   m   d   B   o   x   ;
0025720        R   e   s   e   t   C   m   d   M   e   n   u   ;       D
0025740    u   m   b   B   o   x  \r   E   r   r   o   r  \r  \r   /   /
0025760        i   n   c   o   m   i   n   g       p   r   o   c   e   d
0026000    u   r   e   s  \r   P   o   i   n   t   I   n   B   o   x   ;
0026020        D   o   I   n   t   e   r   i   o   r   ;       D   o   B
0026040    o   r   d   e   r   ;       C   h   a   r   W   i 376 001  \0
0026060    D 270   d   t   h  \r   C   r   e   a   t   e   B   o   x   ;
0026100        D   e   s   t   r   o   y   B   o   x   ;       C   r   e
0026120    a   t   e   B   o   x   S   t   r   e   a   m  \r   C   a   l
0026140    l   S   w   a   t   ;       W   s   s   ;       R   e   s   e
0026160    t   s   ;       D   i   s   m   i   s   s  \r  \r   /   /    
0026200    i   n   c   o   m   i   n   g       s   t   a   t   i   c   s
0026220   \r   c   m   d   M   e   n   u   ;       e   r   r   o   r   D
0026240    s   p  \r   ]  \r  \r   s   t   r   u   c   t   u   r   e    
0026260    S   t   r   i   n   g       [       l   e   n   g   t   h    
0026300    b   y   t   e   ;       c   h   a   r       ^   1   ,   2   5
0026320    5       b   y   t   e       ]  \r  \r   /   /   -   -   -   -
0026340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0026440    -   -   -   -   -   -   -  \r   l   e   t       E   r   r   o
0026460    r   ( 376 001  \0 352   W   s   t   r   i   n   g   )       b
0026500    e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0026520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0026600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0026620    [  \r   R   e   s   e   t   s   (   e   r   r   o   r   D   s
0026640    p   )  \r   D   o   I   n   t   e   r   i   o   r   (   e   r
0026660    r   o   r   D   s   p   >   >   B   S   .   b   o   x   ,    
0026700    o   p   I   n   v   e   r   t   )  \r   D   i   s   m   i   s
0026720    s   (   1   0   )  \r   D   o   I   n   t   e   r   i   o   r
0026740    (   e   r   r   o   r   D   s   p   >   >   B   S   .   b   o
0026760    x   ,       o   p   I   n   v   e   r   t   )  \r   W   s   s
0027000    (   e   r   r   o   r   D   s   p   ,       s   t   r   i   n
0027020    g   )  \r   ]  \r  \f  \r   /   /   -   -   -   -   -   -   -
0027040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0027060    -   -   -   -   -   -   - 376 001  \0  \r 264   -   -   -   -
0027100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0027140    -   -   -   -   -   -   -   -   -   -  \r   a   n   d       C
0027160    r   e   a   t   e   C   m   d   B   o   x   (   a   c   t   i
0027200    o   n   ,       s   t   r   i   n   g   ,       e   x   t   r
0027220    a   ;       n   u   m   a   r   g   s       n   a   )       =
0027240        v   a   l   o   f  \r   /   /   -   -   -   -   -   -   -
0027260    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0027360    -   -   -   -   -  \r   [  \r   i   f       n   a       l   s
0027400        3       t   h   e   n       e   x   t   r   a       =    
0027420    0  \r  \r   /   /       f   i   g   u   r   e       o   u   t
0027440        t   h   e       d   i   m   e   n   s   i   o   n   s    
0027460    o   f       t   h   e       n   e   w       b 376 001  \0 225
0027500  254   o   x  \r   l   e   t       w   i   d   t   h       =    
0027520    2   *   c   m   d   B   o   x   B   o   r   d   e   r       +
0027540        8  \r   f   o   r       i       =       1       t   o    
0027560    s   t   r   i   n   g   >   >   S   t   r   i   n   g   .   l
0027600    e   n   g   t   h       d   o  \r               w   i   d   t
0027620    h       =       w   i   d   t   h       +       C   h   a   r
0027640    W   i   d   t   h   (   e   r   r   o   r   D   s   p   ,    
0027660    s   t   r   i   n   g   >   >   S   t   r   i   n   g   .   c
0027700    h   a   r   ^   i   )  \r   l   e   t       h   e   i   g   h
0027720    t       =       2   *   c   m   d   B   o   x   B   o   r   d
0027740    e   r       +       c   m   d   M   e   n   u   >   >   M   e
0027760    n   u   .   f   o   n   t   >   >   S   t   r   i   k   e   .
0030000    a   s   c   e   n   t       +  \r       c   m   d   M   e   n
0030020    u   >   >   M   e   n   u   .   f   o   n   t   >   >   S   t
0030040    r   i   k   e   .   d   e   s   c   e   n   t       +   2  \r
0030060   \r   /   /       f   i   n   d       t   h   e       u   p   p
0030100    e 376 001  \0 313 036   r       r   i   g   h   t       c   o
0030120    r   n   e   r       o   f       t   h   e       l   o   w   e
0030140    s   t       r   i   g   h   t   -   h   a   n   d       b   o
0030160    x       i   n       t   h   e       m   e   n   u  \r   l   e
0030200    t       t   o   p       =       c   m   d   M   e   n   u   >
0030220    >   M   e   n   u   .   t   o   p       +       m   e   n   u
0030240    B   o   x   B   o   r   d   e   r           /   /   D   C   B
0030260    .   b   i   t   m   a   p       r   e   l   a   t   i   v   e
0030300   \r   l   e   t       r   i   g   h   t       =       c   m   d
0030320    M   e   n   u   >   >   M   e   n   u   .   l   e   f   t    
0030340    +       m   e   n   u   B   o   x   B   o   r   d   e   r  \r
0030360    l   e   t       b   o   x       =       c   m   d   M   e   n
0030400    u   >   >   M   e   n   u   .   b   o   x   Q   .   h   e   a
0030420    d   ;       w   h   i   l   e       b   o   x       n   e    
0030440    0       d   o  \r               [  \r               i   f    
0030460    b   o   x   >   >   B   o   x   .   p   r   o   c       e   q
0030500        C   m   d   B   o 376 001  \0 204   ,   x       t   h   e
0030520    n  \r                           i   f       b   o   x   >   >
0030540    B   o   x   .   r   e   l   P   o   s   .   t   o   p       g
0030560    r       t   o   p       %       b   o   x   >   >   B   o   x
0030600    .   r   e   l   P   o   s   .   r   i   g   h   t       g   r
0030620        r   i   g   h   t       t   h   e   n  \r                
0030640                        [       t   o   p       =       b   o   x
0030660    >   >   B   o   x   .   r   e   l   P   o   s   .   t   o   p
0030700    ;       r   i   g   h   t       =       b   o   x   >   >   B
0030720    o   x   .   r   e   l   P   o   s   .   r   i   g   h   t    
0030740    ]  \r               b   o   x       =       b   o   x   >   >
0030760    B   o   x   .   l   i   n   k  \r               ]  \r  \r   /
0031000    /       c   a   n       w   e       a   d   d       t   h   e
0031020        n   e   w       o   n   e       t   o       i   t   s    
0031040    r   i   g   h   t   ?  \r   u   n   l   e   s   s       B   o
0031060    x   F   i   t   s   (   r   i   g   h   t   ,       w   i   d
0031100    t   h   ,       t   o   p   ,       h   e 376 001  \0 337 005
0031120    i   g   h   t   )       d   o  \r               [  \r        
0031140        /   /       n   o   t       e   n   o   u   g   h       r
0031160    o   o   m       t   o       t   h   e       r   i   g   h   t
0031200    .  \r               /   /       t   r   y       d   o   w   n
0031220        b   y       t   h   e       h   e   i   g   h   t       o
0031240    f       t   h   e       b   o   x       a   n   d       a   l
0031260    l       t   h   e       w   a   y       t   o       t   h   e
0031300        l   e   f   t  \r               r   i   g   h   t       =
0031320        c   m   d   M   e   n   u   >   >   M   e   n   u   .   l
0031340    e   f   t       +       m   e   n   u   B   o   x   B   o   r
0031360    d   e   r  \r               t   o   p       =       t   o   p
0031400        +       h   e   i   g   h   t  \r               u   n   l
0031420    e   s   s       B   o   x   F   i   t   s   (   r   i   g   h
0031440    t   ,       w   i   d   t   h   ,       t   o   p   ,       h
0031460    e   i   g   h   t   )       d   o       C   a   l   l   S   w
0031500    a   t   (   "   c   m   d   M   e   n   u       o   v   e   r
0031520  376 001  \0   l 274   f   l   o   w   "   )  \r               ]
0031540   \r  \r   /   /       c   r   e   a   t   e       t   h   e    
0031560    b   o   x       a   n   d       i   t   s       s   t   r   e
0031600    a   m   ;       w   r   i   t   e       t   h   e       s   t
0031620    r   i   n   g       i   n   t   o       i   t   .  \r   b   o
0031640    x       =       C   r   e   a   t   e   B   o   x   (   c   m
0031660    d   M   e   n   u   ,       r   i   g   h   t   -   c   m   d
0031700    M   e   n   u   >   >   M   e   n   u   .   l   e   f   t   ,
0031720        t   o   p   -   c   m   d   M   e   n   u   >   >   M   e
0031740    n   u   .   t   o   p   ,  \r       w   i   d   t   h   ,    
0031760    h   e   i   g   h   t   ,       C   m   d   B   o   x   ,    
0032000    c   m   d   B   o   x   B   o   r   d   e   r   ,       2   +
0032020    e   x   t   r   a   )  \r   b   o   x   >   >   C   m   d   B
0032040    o   x   .   o   n       =       f   a   l   s   e  \r   b   o
0032060    x   >   >   C   m   d   B   o   x   .   a   c   t   i   o   n
0032100        =       a   c   t   i   o   n  \r   l   e   t       b   s
0032120        =       C   r 376 001  \0 001   y   e   a   t   e   B   o
0032140    x   S   t   r   e   a   m   (   b   o   x   ,       f   a   l
0032160    s   e   ,       t   r   u   e   )  \r   W   s   s   (   b   s
0032200    ,       s   t   r   i   n   g   )  \r   r   e   s   u   l   t
0032220    i   s       b   o   x  \r   ]  \r  \r   /   /   -   -   -   -
0032240    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0032340    -   -   -   -   -   -   -   -  \r   a   n   d       B   o   x
0032360    F   i   t   s   (   r   i   g   h   t   ,       w   i   d   t
0032400    h   ,       t   o   p   ,       h   e   i   g   h   t   )    
0032420    =  \r               (   r   i   g   h   t       +       w   i
0032440    d   t   h   )       l   e       (   c   m   d   M   e   n   u
0032460    >   >   M   e   n   u   .   d   c   b   >   >   D   C   B   .
0032500    w   i   d   t   h   *   1   6       -       m   e   n   u   B
0032520    o   x   B   o   r   d   e   r   )     376 001  \0 375  \t   &
0032540   \r               (   t   o   p       +       h   e   i   g   h
0032560    t   )       l   e       (   c   m   d   M   e   n   u   >   >
0032600    M   e   n   u   .   d   c   b   >   >   D   C   B   .   h   e
0032620    i   g   h   t   *   2       -       m   e   n   u   B   o   x
0032640    B   o   r   d   e   r   )  \r   /   /   -   -   -   -   -   -
0032660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0032760    -   -   -   -   -   -  \r  \r   /   /   -   -   -   -   -   -
0033000    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0033100    -   -   -   -   -   -  \r   a   n   d       R   e   s   e   t
0033120    C   m   d   M   e   n   u   (   )       b   e  \r   /   / 376
0033140  001  \0 377 340   -   -   -   -   -   -   -   -   -   -   -   -
0033160    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0033260   \r   [  \r   l   e   t       b   o   x       =       c   m   d
0033300    M   e   n   u   >   >   M   e   n   u   .   b   o   x   Q   .
0033320    h   e   a   d   ;       w   h   i   l   e       b   o   x    
0033340    n   e       0       d   o  \r               [  \r            
0033360    l   e   t       n   e   x   t   B   o   x       =       b   o
0033400    x   >   >   B   o   x   .   l   i   n   k  \r               i
0033420    f       b   o   x   >   >   B   o   x   .   p   r   o   c    
0033440    e   q       C   m   d   B   o   x       t   h   e   n       D
0033460    e   s   t   r   o   y   B   o   x   (   b   o   x   )  \r    
0033500            b   o   x       =       n   e   x   t   B   o   x  \r
0033520                ]  \r   ]  \r  \f  \r   /   /   -   -   -   -   -
0033540    -   -   -   - 376 001  \0   =   Y   -   -   -   -   -   -   -
0033560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0033640    -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d
0033660        C   m   d   B   o   x   (   b   o   x   ,       e   v   e
0033700    n   t   ,       n   i   l   ,       n   i   l   ,       n   i
0033720    l   ,       n   i   l   )       b   e  \r   /   /   -   -   -
0033740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0034040    -   -   -   -   -   -   -   -   -  \r   [  \r   s   w   i   t
0034060    c   h   o   n       e   v   e   n   t       i   n   t   o  \r
0034100                [  \r               c   a   s   e       c   u   r
0034120    s   o   r   M   o   v   e   d   :  \r                        
0034140    [  \r                           i 376 001  \0 274 020   f    
0034160    b   o   x   >   >   C   m   d   B   o   x   .   o   n       n
0034200    e       0       &       n   o   t       P   o   i   n   t   I
0034220    n   B   o   x   (   b   o   x   )       t   h   e   n  \r    
0034240                                    [  \r                        
0034260                b   o   x   >   >   C   m   d   B   o   x   .   o
0034300    n       =       f   a   l   s   e  \r                        
0034320                D   o   I   n   t   e   r   i   o   r   (   b   o
0034340    x   ,       o   p   I   n   v   e   r   t   ,       -   1   )
0034360   \r                                       ]  \r                
0034400            e   n   d   c   a   s   e  \r                        
0034420    ]  \r               c   a   s   e       r   e   d   G   o   i
0034440    n   g   U   p   :  \r                           [  \r        
0034460                    i   f       b   o   x   >   >   C   m   d   B
0034500    o   x   .   o   n       n   e       0       &       P   o   i
0034520    n   t   I   n   B   o   x   (   b   o   x   )       t   h   e
0034540    n  \r                                       [  \r     376 001
0034560   \0 236 177                                   (   b   o   x   >
0034600    >   C   m   d   B   o   x   .   a   c   t   i   o   n   )   (
0034620    b   o   x   )  \r                                       b   o
0034640    x   >   >   C   m   d   B   o   x   .   o   n       =       f
0034660    a   l   s   e  \r                                       D   o
0034700    I   n   t   e   r   i   o   r   (   b   o   x   ,       o   p
0034720    I   n   v   e   r   t   ,       -   1   )  \r                
0034740                        ]  \r                           e   n   d
0034760    c   a   s   e  \r                           ]  \r            
0035000    c   a   s   e       r   e   d   G   o   i   n   g   D   o   w
0035020    n   :  \r                           [  \r                    
0035040        i   f       b   o   x   >   >   C   m   d   B   o   x   .
0035060    o   n       e   q       0       &       P   o   i   n   t   I
0035100    n   B   o   x   (   b   o   x   )       t   h   e   n  \r    
0035120                                    [  \r                        
0035140                b   o   x   >   >   C   m   d   B   o   x   .   o
0035160    n       = 376 001  \0 005   p       t   r   u   e  \r        
0035200                                D   o   I   n   t   e   r   i   o
0035220    r   (   b   o   x   ,       o   p   I   n   v   e   r   t   ,
0035240        -   1   )  \r                                       ]  \r
0035260                            e   n   d   c   a   s   e  \r        
0035300                    ]  \r               ]  \r   ]  \r  \r   /   /
0035320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0035420    -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d
0035440        D   u   m   b   B   o   x   (   b   o   x   ,       e   v
0035460    e   n   t   ,       n   i   l   ,       n   i   l   ,       n
0035500    i   l   ,       n   i   l   )       b   e  \r   /   /   -   -
0035520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0035560    -   -   -   -   -   -   -   - 376  \0   ^ 226 256   -   -   -
0035600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0035620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0035640                i   f       e   v   e   n   t       e   q       c
0035660    r   e   a   t   e       t   h   e   n       D   o   B   o   r
0035700    d   e   r   (   b   o   x   ,       o   p   R   e   p   l   a
0035720    c   e   ,       b   l   a   c   k   )  \r 377  \0  \0   G   a
0035740    t   e   C   o   n   N   e   t   .   b   c   p   l  \0 373 233
0035760    .   k 344  \0  \0 376 001  \0   b 330   /   /       G   a   t
0036000    e   C   o   n   N   e   t   .   b   c   p   l       -   -    
0036020    m   i   s   c   e   l   l   a   n   e   o   u   s       n   e
0036040    t   w   o   r   k   -   r   e   l   a   t   e   d       s   t
0036060    u   f   f  \r   /   /       L   a   s   t       m   o   d   i
0036100    f   i   e   d       J   u   l   y       2   ,       1   9   8
0036120    3           1   0   :   1   9       P   M       b   y       B
0036140    o   g   g   s  \r  \r   g   e   t       "   P   u   p   0   .
0036160    d   e   c   l   "  \r   g   e   t       "   P   u   p   1   .
0036200    d   e   c   l   "  \r   g   e   t       "   G   a   t   e   C
0036220    o   n   S   e   r   v   .   d   e   c   l   "  \r  \r   e   x
0036240    t   e   r   n   a   l  \r   [  \r   /   /       o   u   t   g
0036260    o   i   n   g       p   r   o   c   e   d   u   r   e   s  \r
0036300    S   e   n   d   C   o   m   m   a   n   d   ;       M   i   s
0036320    c   C   m   d   ;       G   a   t   e   w   a   y   ;       P
0036340    r   i   n   t   P   o   r   t  \r   O   t   h   e   r   P   u
0036360    p   ;       O   t   h   e   r   P   u 376 001  \0 327 332   p
0036400    C   t   x   ;       G   e   t   B   u   f  \r  \r   /   /    
0036420    i   n   c   o   m   i   n   g       p   r   o   c   e   d   u
0036440    r   e   s  \r   M   o   v   e   B   l   o   c   k   ;       M
0036460    u   l   t   E   q   ;       E   n   q   u   e   u   e   ;    
0036500    D   e   q   u   e   u   e   ;       F   l   u   s   h   Q   u
0036520    e   u   e  \r   S   e   t   T   i   m   e   r   ;       T   i
0036540    m   e   r   H   a   s   E   x   p   i   r   e   d   ;       B
0036560    l   o   c   k  \r   G   e   t   P   B   I   ;       R   e   l
0036600    e   a   s   e   P   B   I   ;       C   o   m   p   l   e   t
0036620    e   P   u   p  \r   G   e   t   P   a   r   t   n   e   r   ;
0036640        O   p   e   n   L   e   v   e   l   1   S   o   c   k   e
0036660    t   ;       C   l   o   s   e   L   e   v   e   l   1   S   o
0036700    c   k   e   t  \r   W   s   ;       P   u   t   s   ;       P
0036720    u   t   T   e   m   p   l   a   t   e   ;       G   e   t   S
0036740    t   r   i   n   g   ;       E   r   r   o   r  \r   E   x   t
0036760    r   a   c   t   S   u   b   s   t   r   i   n   g   ;     376
0037000  001  \0 312 270   F   r   e   e  \r   R   e   s   t   a   r   t
0037020    G   a   t   e   C   o   n   U   s   e   r   ;       R   e   s
0037040    t   a   r   t   R   o   u   t   e   ;       R   e   s   t   a
0037060    r   t   E   c   h   o  \r   R   e   s   t   a   r   t   N   a
0037100    m   e   ;       R   e   s   t   a   r   t   T   i   m   e   ;
0037120        R   e   s   t   a   r   t   B   o   o   t   ;       T   o
0037140    p   L   e   v   e   l  \r  \r   /   /       o   u   t   g   o
0037160    i   n   g       s   t   a   t   i   c   s  \r   g   c   N   e
0037200    t   ;       g   c   H   o   s   t   ;       g   c   N   a   m
0037220    e   ;       o   t   h   e   r   P   u   p   Q  \r  \r   /   /
0037240        i   n   c   o   m   i   n   g       s   t   a   t   i   c
0037260    s  \r   d   s   p   ;       e   r   r   o   r   D   s   p   ;
0037300        s   y   s   Z   o   n   e  \r   ]  \r  \r   s   t   a   t
0037320    i   c       [       g   c   N   e   t   ;       g   c   H   o
0037340    s   t   ;       g   c   N   a   m   e   ;       g   c   I   D
0037360    ;       o   t   h   e   r   P   u   p   Q       ]  \r  \f  \r
0037400    /   /   -   - 376 001  \0 365 325   -   -   -   -   -   -   -
0037420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0037520    -   -   -  \r   l   e   t       S   e   n   d   C   o   m   m
0037540    a   n   d   (   p   b   i   ,       t   y   p   e   ,       l
0037560    e   n   g   t   h   ,       r   e   t   r   i   e   s   ;    
0037600    n   u   m   a   r   g   s       n   a   )       =       v   a
0037620    l   o   f  \r   /   /   -   -   -   -   -   -   -   -   -   -
0037640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0037740    -   -  \r   /   /       r   e   t   u   r   n   s       r   e
0037760    s   p   o   n   s   e       p   b   i       o   r       0  \r
0040000    [  \r   i   f       n   a       l 376 001  \0   q 005   s    
0040020    4       t   h   e   n       r   e   t   r   i   e   s       =
0040040        3  \r   i   f       n   a       g   e       3       t   h
0040060    e   n       p   b   i   >   >   P   B   I   .   p   u   p   .
0040100    l   e   n   g   t   h       =       l   e   n   g   t   h  \r
0040120    i   f       n   a       g   e       2       t   h   e   n    
0040140    p   b   i   >   >   P   B   I   .   p   u   p   .   t   y   p
0040160    e       =       t   y   p   e  \r  \r   i   f       p   b   i
0040200    >   >   P   B   I   .   p   u   p   .   d   P   o   r   t   .
0040220    n   e   t       e   q       0       &       p   b   i   >   >
0040240    P   B   I   .   p   u   p   .   d   P   o   r   t   .   h   o
0040260    s   t       e   q       0       t   h   e   n  \r            
0040300    [  \r               p   b   i   >   >   P   B   I   .   p   u
0040320    p   .   d   P   o   r   t   .   n   e   t       =       g   c
0040340    N   e   t  \r               p   b   i   >   >   P   B   I   .
0040360    p   u   p   .   d   P   o   r   t   .   h   o   s   t       =
0040400        g   c   H   o   s   t  \r               ]  \r   i 376 001
0040420   \0 255   P   f       p   b   i   >   >   P   B   I   .   p   u
0040440    p   .   d   P   o   r   t   .   s   o   c   k   e   t   ^   1
0040460        e   q       0       &       p   b   i   >   >   P   B   I
0040500    .   p   u   p   .   d   P   o   r   t   .   s   o   c   k   e
0040520    t   ^   2       e   q       0       t   h   e   n  \r        
0040540        [  \r               p   b   i   >   >   P   B   I   .   p
0040560    u   p   .   d   P   o   r   t   .   s   o   c   k   e   t   ^
0040600    1       =       g   c   S   o   c   k   e   t   1  \r        
0040620        p   b   i   >   >   P   B   I   .   p   u   p   .   d   P
0040640    o   r   t   .   s   o   c   k   e   t   ^   2       =       g
0040660    c   S   o   c   k   e   t   2  \r               ]  \r  \r   p
0040700    b   i   >   >   P   B   I   .   p   u   p   .   i   d   ^   1
0040720        =       g   c   P   a   s   s   w   o   r   d  \r   p   b
0040740    i   >   >   P   B   I   .   p   u   p   .   i   d   ^   2    
0040760    =       g   c   I   D  \r   g   c   I   D       =       g   c
0041000    I   D   +   1  \r   l   e   t       s   o   c       =       p
0041020    b   i   > 376 001  \0   Q 315   >   P   B   I   .   s   o   c
0041040    k   e   t  \r   l   e   t       t   Q       =       v   e   c
0041060        1   ;       t   Q   !   0       =       0  \r   p   b   i
0041100    >   >   P   B   I   .   q   u   e   u   e       =       t   Q
0041120   \r   E   n   q   u   e   u   e   (   t   Q   ,       p   b   i
0041140    )  \r   l   e   t       i   p   b   i       =       0  \r  \r
0041160    f   o   r       i       =       1       t   o       r   e   t
0041200    r   i   e   s       d   o  \r               [  \r            
0041220    B   l   o   c   k   (   )       r   e   p   e   a   t   w   h
0041240    i   l   e       t   Q   !   0       e   q       0  \r        
0041260        C   o   m   p   l   e   t   e   P   u   p   (   D   e   q
0041300    u   e   u   e   (   t   Q   )   )  \r  \r               l   e
0041320    t       t   i   m   e   r       =       n   i   l   ;       S
0041340    e   t   T   i   m   e   r   (   l   v       t   i   m   e   r
0041360    ,       2   0   0   )           /   /   2       s   e   c  \r
0041400                            [  \r                           B   l
0041420    o   c   k   (   )       r   e 376 001  \0 270   p   p   e   a
0041440    t   u   n   t   i   l       T   i   m   e   r   H   a   s   E
0041460    x   p   i   r   e   d   (   l   v       t   i   m   e   r   )
0041500        %       s   o   c   >   >   P   u   p   S   o   c   .   i
0041520    Q   .   h   e   a   d       n   e       0  \r                
0041540            i   p   b   i       =       D   e   q   u   e   u   e
0041560    (   l   v       s   o   c   >   >   P   u   p   S   o   c   .
0041600    i   Q   )  \r                           i   f       i   p   b
0041620    i       e   q       0       b   r   e   a   k           /   /
0041640    t   i   m   e   o   u   t       -       r   e   t   r   a   n
0041660    s   m   i   t  \r                           i   f       M   u
0041700    l   t   E   q   (   l   v       i   p   b   i   >   >   P   B
0041720    I   .   p   u   p   .   i   d   ,       l   v       p   b   i
0041740    >   >   P   B   I   .   p   u   p   .   i   d   )       t   h
0041760    e   n  \r                                       i   f       i
0042000    p   b   i   >   >   P   B   I   .   p   u   p   .   t   y   p
0042020    e       n   e       t   y   p   e   E   r   r   o 376 001  \0
0042040    0       r       b   r   e   a   k  \r                        
0042060    t   e   s   t       i   p   b   i       n   e       0  \r    
0042100                                    i   f   s   o       O   t   h
0042120    e   r   P   u   p   (   i   p   b   i   )  \r                
0042140                        i   f   n   o   t       R   e   l   e   a
0042160    s   e   P   B   I   (   i   p   b   i   )  \r                
0042200            i   p   b   i       =       0  \r                    
0042220        ]       r   e   p   e   a   t  \r               i   f    
0042240    i   p   b   i       n   e       0       b   r   e   a   k  \r
0042260                ]  \r  \r   B   l   o   c   k   (   )       r   e
0042300    p   e   a   t   w   h   i   l   e       t   Q   !   0       e
0042320    q       0  \r   R   e   l   e   a   s   e   P   B   I   (   D
0042340    e   q   u   e   u   e   (   t   Q   )   )  \r   r   e   s   u
0042360    l   t   i   s       i   p   b   i  \r   ]  \r  \r   /   /   -
0042400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0042440    -   - 376 001  \0   a   {   -   -   -   -   -   -   -   -   -
0042460    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0042520   \r   a   n   d       M   i   s   c   C   m   d   (   r   e   q
0042540    u   e   s   t   T   y   p   e   ,       r   e   p   l   y   T
0042560    y   p   e   ,       P   r   o   c   ,       d   a   t   a   ,
0042600        l   e   n   g   t   h   ;       n   u   m   a   r   g   s
0042620        n   a   )       b   e  \r   /   /   -   -   -   -   -   -
0042640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0042740    -   -   -   -   -   -  \r   [  \r   i   f       n   a       l
0042760    s       5       t   h   e   n       l   e   n   g   t   h    
0043000    =       0  \r   l   e   t       s   o   c       =       v   e
0043020    c       l   e   n   P   u   p   S   o   c   ;       O   p   e
0043040    n   L   e   v   e   l   1 376 001  \0   f  \n   S   o   c   k
0043060    e   t   (   s   o   c   )  \r   l   e   t       p   b   i    
0043100    =       G   e   t   B   u   f   (   s   o   c   )  \r   p   b
0043120    i   >   >   P   B   I   .   p   u   p   .   d   P   o   r   t
0043140    .   s   o   c   k   e   t   ^   2       =       4           /
0043160    /       p   s   M   i   s   c   S   e   r   v  \r   i   f    
0043200    l   e   n   g   t   h       n   e       0       t   h   e   n
0043220        M   o   v   e   B   l   o   c   k   (   l   v       p   b
0043240    i   >   >   P   B   I   .   p   u   p   .   w   o   r   d   s
0043260    ,       d   a   t   a   ,       (   l   e   n   g   t   h   +
0043300    1   )   /   2   )  \r   p   b   i       =       S   e   n   d
0043320    C   o   m   m   a   n   d   (   p   b   i   ,       r   e   q
0043340    u   e   s   t   T   y   p   e   ,       p   u   p   O   v   B
0043360    y   t   e   s   +   l   e   n   g   t   h   )  \r   t   e   s
0043400    t       p   b   i       n   e       0       &       p   b   i
0043420    >   >   P   B   I   .   p   u   p   .   t   y   p   e       e
0043440    q       r   e   p   l   y   T   y   p   e  \r 376 001  \0   Q
0043460   \n               i   f   s   o       P   r   o   c   (   p   b
0043500    i   )  \r               i   f   n   o   t       W   s   (   "
0043520        -       t   h   e       s   e   r   v   e   r       d   o
0043540    e   s   n   '   t       a   n   s   w   e   r   "   )  \r   i
0043560    f       p   b   i       t   h   e   n       R   e   l   e   a
0043600    s   e   P   B   I   (   p   b   i   )  \r   C   l   o   s   e
0043620    L   e   v   e   l   1   S   o   c   k   e   t   (   s   o   c
0043640    )  \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -   -
0043660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0043760    -   -  \r   a   n   d       G   e   t   B   u   f   (   s   o
0044000    c   ,       r   e   t   u   r   n   I   f   N   o   n   e   ;
0044020        n   u   m   a   r   g   s       n   a   )       =       v
0044040    a   l   o   f  \r   /   /   -   -   -   -   -   -   -   -   -
0044060    - 376 001  \0 332 033   -   -   -   -   -   -   -   -   -   -
0044100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0044160    -   -   -   -   -   -   -  \r   [  \r   l   e   t       p   b
0044200    i       =       G   e   t   P   B   I   (   s   o   c   ,    
0044220    t   r   u   e   )  \r   i   f       p   b   i       n   e    
0044240    0       r   e   s   u   l   t   i   s       p   b   i  \r   i
0044260    f       n   a       e   q       2       &       r   e   t   u
0044300    r   n   I   f   N   o   n   e       r   e   s   u   l   t   i
0044320    s       0  \r   F   l   u   s   h   Q   u   e   u   e   (   l
0044340    v       s   o   c   >   >   P   u   p   S   o   c   .   i   Q
0044360    )  \r   B   l   o   c   k   (   )  \r   ]       r   e   p   e
0044400    a   t  \r  \f  \r   /   /   -   -   -   -   -   -   -   -   -
0044420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0044460    -   -   -   -   -   - 376 001  \0 325 200   -   -   -   -   -
0044500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0044520    -   -   -   -   -   -   -  \r   a   n   d       O   t   h   e
0044540    r   P   u   p   (   p   b   i   )       b   e       E   n   q
0044560    u   e   u   e   (   o   t   h   e   r   P   u   p   Q   ,    
0044600    p   b   i   )  \r   /   /   -   -   -   -   -   -   -   -   -
0044620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0044720    -   -  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -
0044740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0045040    -  \r   a   n   d       O   t   h   e   r   P   u   p   C   t
0045060    x   (   c   t   x   )       b   e  \r   / 376 001  \0 325 203
0045100    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0045120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0045200    -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   B
0045220    l   o   c   k   (   )       r   e   p   e   a   t   u   n   t
0045240    i   l       o   t   h   e   r   P   u   p   Q   !   0       n
0045260    e       0  \r   l   e   t       p   b   i       =       D   e
0045300    q   u   e   u   e   (   o   t   h   e   r   P   u   p   Q   )
0045320       \r   i   f       p   b   i   >   >   P   B   I   .   p   u
0045340    p   .   t   y   p   e       e   q       t   y   p   e   E   r
0045360    r   o   r       t   h   e   n  \r               [  \r        
0045400        E   r   r   o   r   (   "   E   r   r   o   r       P   u
0045420    p       f   r   o   m       "   )  \r               P   u   t
0045440    T   e   m   p   l   a   t   e   (   e   r   r   o   r   D   s
0045460    p   ,       "   $   P   :       "   ,       P   r   i   n   t
0045500  376 001  \0 276 037   P   o   r   t   ,       l   v       p   b
0045520    i   >   >   P   B   I   .   p   u   p   .   s   P   o   r   t
0045540    )  \r               f   o   r       i       =       2   5    
0045560    t   o       p   b   i   >   >   P   B   I   .   p   u   p   .
0045600    l   e   n   g   t   h   -   p   u   p   O   v   B   y   t   e
0045620    s       d   o  \r                           P   u   t   s   (
0045640    e   r   r   o   r   D   s   p   ,       p   b   i   >   >   P
0045660    B   I   .   p   u   p   .   b   y   t   e   s   ^   i   )  \r
0045700                ]  \r   R   e   l   e   a   s   e   P   B   I   (
0045720    p   b   i   )  \r   ]       r   e   p   e   a   t  \r  \r   /
0045740    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0045760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0046040    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n
0046060    d       P   r   i   n   t   P   o   r   t   (   s   t   r   e
0046100    a   m   ,       p 376 001  \0 332 327   o   r   t   )       b
0046120    e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0046140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0046240   \r   P   u   t   T   e   m   p   l   a   t   e   (   s   t   r
0046260    e   a   m   ,       "   [   $   U   O   #   $   U   O   #   $
0046300    U   E   O   ]   "   ,       p   o   r   t   >   >   P   o   r
0046320    t   .   n   e   t   ,       p   o   r   t   >   >   P   o   r
0046340    t   .   h   o   s   t   ,  \r       l   v       p   o   r   t
0046360    >   >   P   o   r   t   .   s   o   c   k   e   t   )  \r  \r
0046400    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0046420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0046500    -   -   -   -   -   -   -   -   -   - 376 001  \0   ^   U   -
0046520    -   -   -  \r   a   n   d       G   a   t   e   w   a   y   (
0046540    )       b   e  \r   /   /   -   -   -   -   -   -   -   -   -
0046560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0046660    -   -   -  \r   [  \r   l   e   t       d   o   T   o   p   L
0046700    e   v   e   l       =       g   c   H   o   s   t       e   q
0046720        0  \r   l   e   t       n   a   m   e       =       v   e
0046740    c       1   2   8  \r   i   f       G   e   t   S   t   r   i
0046760    n   g   (   "   *   N   G   a   t   e   w   a   y   :       "
0047000    ,       n   a   m   e   )       t   h   e   n  \r            
0047020    [  \r               l   e   t       p   o   r   t       =    
0047040    v   e   c       l   e   n   P   o   r   t  \r               i
0047060    f       G   e   t   P   a   r   t   n   e   r   (   n   a   m
0047100    e   ,       d   s   p   ,       p   o   r   t   ,       g 376
0047120  001  \0   x 262   c   S   o   c   k   e   t   1   ,       g   c
0047140    S   o   c   k   e   t   2   )       t   h   e   n  \r        
0047160                    [  \r                           g   c   N   e
0047200    t       =       p   o   r   t   >   >   P   o   r   t   .   n
0047220    e   t  \r                           g   c   H   o   s   t    
0047240    =       p   o   r   t   >   >   P   o   r   t   .   h   o   s
0047260    t  \r                           i   f       g   c   N   a   m
0047300    e       n   e       0       t   h   e   n       F   r   e   e
0047320    (   s   y   s   Z   o   n   e   ,       g   c   N   a   m   e
0047340    )  \r                           g   c   N   a   m   e       =
0047360        E   x   t   r   a   c   t   S   u   b   s   t   r   i   n
0047400    g   (   n   a   m   e   )  \r                           R   e
0047420    s   t   a   r   t   G   a   t   e   C   o   n   U   s   e   r
0047440    (   )  \r                           R   e   s   t   a   r   t
0047460    R   o   u   t   e   (   )  \r                           R   e
0047500    s   t   a   r   t   E   c   h   o   (   )  \r                
0047520            R   e 376  \0 203   U 271   s   t   a   r   t   N   a
0047540    m   e   (   )  \r                           R   e   s   t   a
0047560    r   t   T   i   m   e   (   )  \r                           R
0047600    e   s   t   a   r   t   B   o   o   t   (   )  \r            
0047620                i   f       d   o   T   o   p   L   e   v   e   l
0047640        t   h   e   n       T   o   p   L   e   v   e   l   (   )
0047660   \r                           F   l   u   s   h   Q   u   e   u
0047700    e   (   o   t   h   e   r   P   u   p   Q   )  \r            
0047720                ]  \r               ]  \r   ]  \r 377  \0  \0   G
0047740    a   t   e   C   o   n   E   F   T   P   .   b   c   p   l  \0
0047760  373 233   .   m   S  \0  \0 376 001  \0 332   ?   /   /       G
0050000    a   t   e   C   o   n   E   F   T   P   .   b   c   p   l    
0050020    -   -       s   t   o   r   e   /   r   e   t   r   i   e   v
0050040    e       a       f   i   l   e       o   n       t   h   e    
0050060    g   a   t   e   w   a   y   '   s       d   i   s   k  \r   /
0050100    /       L   a   s   t       m   o   d   i   f   i   e   d    
0050120    J   u   l   y       2   ,       1   9   8   3           1   0
0050140    :   3   1       P   M       b   y       B   o   g   g   s  \r
0050160   \r   g   e   t       "   S   t   r   e   a   m   s   .   d   "
0050200   \r   g   e   t       "   A   l   t   o   D   e   f   s   .   d
0050220    "  \r   g   e   t       "   P   u   p   E   f   t   p   .   d
0050240    e   c   l   "  \r   g   e   t       "   G   a   t   e   C   o
0050260    n   S   e   r   v   .   d   e   c   l   "  \r  \r   e   x   t
0050300    e   r   n   a   l  \r   [  \r   /   /       o   u   t   g   o
0050320    i   n   g       p   r   o   c   e   d   u   r   e   s  \r   E
0050340    f   t   p  \r  \r   /   /       i   n   c   o   m   i   n   g
0050360        p   r   o   c   e   d   u   r   e   s  \r 376 001  \0 023
0050400  371   Z   e   r   o   ;       M   o   v   e   B   l   o   c   k
0050420    ;       S   e   n   d   C   o   m   m   a   n   d  \r   D   o
0050440    u   b   l   e   A   d   d   ;       D   o   u   b   l   e   D
0050460    i   f   f   e   r   e   n   c   e   ;       D   i   v   i   d
0050500    e   3   2   x   1   6  \r   S   e   t   T   i   m   e   r   ;
0050520        T   i   m   e   r   H   a   s   E   x   p   i   r   e   d
0050540    ;       D   i   s   m   i   s   s   ;       R   e   a   d   C
0050560    a   l   e   n   d   a   r  \r   G   e   t   P   B   I   ;    
0050600    R   e   l   e   a   s   e   P   B   I   ;       A   p   p   e
0050620    n   d   S   t   r   i   n   g   T   o   P   u   p   ;       C
0050640    o   m   p   l   e   t   e   P   u   p  \r   S   t   r   i   n
0050660    g   C   o   m   p   a   r   e   ;       C   o   p   y   S   t
0050700    r   i   n   g  \r   C   r   e   a   t   e   C   m   d   B   o
0050720    x   ;       R   e   s   e   t   C   m   d   M   e   n   u   ;
0050740        T   o   p   L   e   v   e   l   ;       B   o   x   P   r
0050760    o   c   ;       R   e   t   u   r   n   F   r   o   m  \r   G
0051000    e 376 001  \0   V 344   t   s   ;       G   e   t   S   t   r
0051020    i   n   g   ;       P   u   t   T   e   m   p   l   a   t   e
0051040    ;       W   s   ;       W   s   s   ;       B   a   c   k   S
0051060    p   a   c   e  \r   O   p   e   n   F   i   l   e   ;       S
0051100    e   t   F   i   l   e   P   o   s   ;       R   e   a   d   B
0051120    l   o   c   k   ;       W   r   i   t   e   B   l   o   c   k
0051140   \r   F   i   l   e   P   o   s   ;       E   n   d   o   f   s
0051160    ;       C   l   o   s   e   s   ;       P   u   t   s  \r   O
0051200    p   e   n   E   F   T   P   S   o   c   ;       S   e   n   d
0051220    E   F   T   P   B   l   o   c   k   ;       R   e   c   e   i
0051240    v   e   E   F   T   P   B   l   o   c   k  \r   S   e   n   d
0051260    E   F   T   P   E   n   d   ;       C   l   o   s   e   E   F
0051300    T   P   S   o   c  \r  \r   /   /       i   n   c   o   m   i
0051320    n   g       s   t   a   t   i   c   s  \r   d   s   p   ;    
0051340    k   e   y   s   ;       e   r   r   o   r   D   s   p   ;    
0051360    g   c   H   o   s   t   ;       g   c   N   e   t  \r   ]  \r
0051400   \r   /   /   -   -   - 376 001  \0 221   K   -   -   -   -   -
0051420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0051520    -   -   -   -  \r   l   e   t       E   f   t   p   (   )    
0051540    b   e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0051560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0051660    -  \r   [  \r   R   e   s   e   t   C   m   d   M   e   n   u
0051700    (   )  \r   C   r   e   a   t   e   C   m   d   B   o   x   (
0051720    T   o   p   L   e   v   e   l   ,       "   T   o   p   L   e
0051740    v   e   l   "   )  \r   C   r   e   a   t   e   C   m   d   B
0051760    o   x   (   S   t   o   r   e   F   i   l   e   ,       "   S
0052000    t   o   r   e   "   )  \r   C   r   e   a 376 001  \0   G 352
0052020    t   e   C   m   d   B   o   x   (   R   e   t   r   i   e   v
0052040    e   F   i   l   e   ,       "   R   e   t   r   i   e   v   e
0052060    "   )  \r   /   /       R   e   s   e   t   C   m   d   M   e
0052100    n   u       d   e   s   t   r   o   y   e   d       t   h   e
0052120        B   o   x   Q       w   h   i   c   h       B   o   x   P
0052140    r   o   c       i   s       f   o   l   l   o   w   i   n   g
0052160    .  \r   /   /       I   f       w   e       j   u   s   t    
0052200    r   e   t   u   r   n       n   o   w   ,       B   o   x   P
0052220    r   o   c       w   i   l   l       g   e   t       h   o   r
0052240    r   i   b   l   y       c   o   n   f   u   s   e   d   .  \r
0052260    /   /       S   o       d   o   n   '   t       l   e   t    
0052300    i   t       c   o   n   t   i   n   u   e   :       f   o   r
0052320    c   e       a       r   e   t   u   r   n       f   r   o   m
0052340        B   o   x   P   r   o   c   .  \r   R   e   t   u   r   n
0052360    F   r   o   m   (   B   o   x   P   r   o   c   )  \r   ]  \r
0052400   \f  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0052420  376 001  \0 274 343   -   -   -   -   -   -   -   -   -   -   -
0052440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0052520    -   -   -   -   -  \r   a   n   d       S   t   o   r   e   F
0052540    i   l   e   (   )       =       v   a   l   o   f  \r   /   /
0052560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0052660    -   -   -   -   -   -   -   -   -   -   -   -  \r   /   /    
0052700    T   h   i   s       p   r   o   c   e   d   u   r   e       d
0052720    o   e   s   n   '   t       a   c   t   u   a   l   l   y    
0052740    r   e   t   u   r   n       a       v   a   l   u   e   :  \r
0052760    /   /       I   f       t   h   i   n   g   s       g   o    
0053000    s   o   u   r   ,       w   e       a   b   o   r   t       b
0053020    y       s   a   y 376 001  \0 305 200   i   n   g       "   r
0053040    e   s   u   l   t   i   s       B   a   i   l   O   u   t   (
0053060    .   .   .   )   "  \r   [  \r   l   e   t       b   y   t   e
0053100    s   ,       s   o   c   ,       p   b   i   ,       s   t   r
0053120    e   a   m       =       0   ,       0   ,       0   ,       0
0053140   \r   l   e   t       n   a   m   e       =       v   e   c    
0053160    1   2   8  \r   u   n   l   e   s   s       G   e   t   S   t
0053200    r   i   n   g   (   "   *   N   S   t   o   r   e       l   o
0053220    c   a   l       f   i   l   e       "   ,       n   a   m   e
0053240    )       r   e   s   u   l   t   i   s       f   a   l   s   e
0053260   \r   s   t   r   e   a   m       =       O   p   e   n   F   i
0053300    l   e   (   n   a   m   e   ,       k   s   T   y   p   e   R
0053320    e   a   d   O   n   l   y   ,       c   h   a   r   I   t   e
0053340    m   )  \r   i   f       s   t   r   e   a   m       e   q    
0053360    0       t   h   e   n       r   e   s   u   l   t   i   s    
0053400    W   s   (   "       -       n   o       s   u   c   h       f
0053420    i   l   e   "   )  \r   l   e   t     376 001  \0 351 215   b
0053440    o   o   t   F   i   l   e       =       S   t   r   i   n   g
0053460    C   o   m   p   a   r   e   (   n   a   m   e   ,       "   .
0053500    b   o   o   t   "   ,       n   a   m   e   >   >   S   t   r
0053520    i   n   g   .   l   e   n   g   t   h   -   4   )       e   q
0053540        0  \r   P   u   t   T   e   m   p   l   a   t   e   (   d
0053560    s   p   ,       "   a   s       r   e   m   o   t   e       f
0053600    i   l   e       $   S   "   ,       n   a   m   e   )  \r   l
0053620    e   t       c   h   a   r       =       G   e   t   s   (   k
0053640    e   y   s   )   ;       i   f       c   h   a   r       n   e
0053660        $   *   N       t   h   e   n  \r               [  \r    
0053700            f   o   r       i       =       n   a   m   e   >   >
0053720    S   t   r   i   n   g   .   l   e   n   g   t   h       t   o
0053740        1       b   y       -   1       d   o  \r                
0053760            B   a   c   k   S   p   a   c   e   (   d   s   p   ,
0054000        n   a   m   e   >   >   S   t   r   i   n   g   .   c   h
0054020    a   r   ^   i   )  \r               u   n   l   e   s   s 376
0054040  001  \0 257 322       G   e   t   S   t   r   i   n   g   (   0
0054060    ,       n   a   m   e   ,       t   r   u   e   ,       c   h
0054100    a   r   )       r   e   s   u   l   t   i   s  \r            
0054120                B   a   i   l   O   u   t   (   b   y   t   e   s
0054140    ,       s   o   c   ,       p   b   i   ,       s   t   r   e
0054160    a   m   )  \r               ]  \r  \r   /   /       s   e   n
0054200    d       f   i   l   e       n   a   m   e       a   n   d    
0054220    g   e   t       E   F   T   P       p   o   r   t  \r   l   e
0054240    t       s   o   c       =       v   e   c       l   e   n   E
0054260    F   T   P   S   o   c   ;       O   p   e   n   E   F   T   P
0054300    S   o   c   (   s   o   c   ,       0   ,       0   )  \r   p
0054320    b   i       =       G   e   t   P   B   I   (   s   o   c   )
0054340   \r   A   p   p   e   n   d   S   t   r   i   n   g   T   o   P
0054360    u   p   (   p   b   i   ,       1   ,       n   a   m   e   )
0054400   \r   p   b   i       =       S   e   n   d   C   o   m   m   a
0054420    n   d   (   p   b   i   ,       p   t   S   t   o   r   e   ,
0054440        p   b   i 376 001  \0   7 030   >   >   P   B   I   .   p
0054460    u   p   .   l   e   n   g   t   h   ,       1   0   )  \r   i
0054500    f       p   b   i       e   q       0       t   h   e   n  \r
0054520                [  \r               W   s   (   "       -       n
0054540    o       r   e   s   p   o   n   s   e   "   )  \r            
0054560    r   e   s   u   l   t   i   s       B   a   i   l   O   u   t
0054600    (   b   y   t   e   s   ,       s   o   c   ,       p   b   i
0054620    ,       s   t   r   e   a   m   )  \r               ]  \r   i
0054640    f       p   b   i   >   >   P   B   I   .   p   u   p   .   t
0054660    y   p   e       n   e       p   t   A   c   k       t   h   e
0054700    n  \r               [  \r               W   s   (   "       -
0054720        s   e   r   v   e   r       r   e   f   u   s   e   s   "
0054740    )  \r               r   e   s   u   l   t   i   s       B   a
0054760    i   l   O   u   t   (   b   y   t   e   s   ,       s   o   c
0055000    ,       p   b   i   ,       s   t   r   e   a   m   )  \r    
0055020            ]  \r   M   o   v   e   B   l   o   c   k   (   l   v
0055040        s   o   c   >   >   P   u   p 376 001  \0   W 026   S   o
0055060    c   .   f   r   n   P   o   r   t   ,       l   v       p   b
0055100    i   >   >   P   B   I   .   p   u   p   .   w   o   r   d   s
0055120    ,       l   e   n   P   o   r   t   )  \r  \r   /   /       s
0055140    e   n   d       f   i   l   e   ,       r   e   f   o   r   m
0055160    a   t   t   i   n   g       i   f       S   O   -   f   o   r
0055200    m   a   t       b   o   o   t   F   i   l   e  \r   l   e   t
0055220        b   u   f   f   e   r       =       l   v       p   b   i
0055240    >   >   P   B   I   .   p   u   p  \r   b   y   t   e   s    
0055260    =       R   e   a   d   B   l   o   c   k   (   s   t   r   e
0055300    a   m   ,       b   u   f   f   e   r   ,       2   5   6   )
0055320        l   s   h   i   f   t       1  \r   i   f       (   F   i
0055340    l   e   P   o   s   (   s   t   r   e   a   m   )       &    
0055360    1   )       e   q       1       t   h   e   n       b   y   t
0055400    e   s       =       b   y   t   e   s       -   1  \r   i   f
0055420        b   o   o   t   F   i   l   e       t   h   e   n  \r    
0055440            [  \r               R   e   a   d   C   a   l 376 001
0055460   \0 017 344   e   n   d   a   r   (   b   u   f   f   e   r   +
0055500    3   )           /   /   s   e   t       d   a   t   e       t
0055520    o       n   o   w  \r               t   e   s   t       b   u
0055540    f   f   e   r   !   1       n   e       0           /   /   S
0055560    O   -   f   o   r   m   a   t   ?  \r                        
0055600    i   f   s   o       b   u   f   f   e   r   !   1       =    
0055620    0           /   /   m   a   r   k       a   s       B   -   f
0055640    o   r   m   a   t       n   o   w  \r                        
0055660    i   f   n   o   t       b   o   o   t   F   i   l   e       =
0055700        f   a   l   s   e           /   /   a   l   r   e   a   d
0055720    y       B   -   f   o   r   m   a   t  \r               ]  \r
0055740    b   y   t   e   s       =       S   e   n   d   E   F   T   P
0055760    B   l   o   c   k   (   s   o   c   ,       b   u   f   f   e
0056000    r   ,       b   y   t   e   s   ,       1   0   0   0   )  \r
0056020    i   f       b   y   t   e   s       l   e       0       r   e
0056040    s   u   l   t   i   s       B   a   i   l   O   u   t   (   b
0056060    y   t   e 376 001  \0   w 332   s   ,       s   o   c   ,    
0056100    p   b   i   ,       s   t   r   e   a   m   )  \r  \r   t   e
0056120    s   t       b   o   o   t   F   i   l   e  \r               i
0056140    f   s   o  \r                           [  \r                
0056160            W   s   (   "   *   N   R   e   f   o   r   m   a   t
0056200    t   i   n   g   .   .   .   "   )  \r                        
0056220    S   e   t   F   i   l   e   P   o   s   (   s   t   r   e   a
0056240    m   ,       1   ,       2   5   4       l   s   h   i   f   t
0056260        9   )  \r                           R   e   a   d   B   l
0056300    o   c   k   (   s   t   r   e   a   m   ,       b   u   f   f
0056320    e   r   ,       2   5   6   )           /   /   l   o   c    
0056340    0   -   #   3   7   7  \r                           b   y   t
0056360    e   s       =       S   e   n   d   E   F   T   P   B   l   o
0056400    c   k   (   s   o   c   ,       b   u   f   f   e   r   ,    
0056420    5   1   2   ,       1   0   0   0   )  \r                    
0056440        i   f       b   y   t   e   s       l   e       0       r
0056460    e   s   u   l   t   i   s     376 001  \0   q   z   B   a   i
0056500    l   O   u   t   (   b   y   t   e   s   ,       s   o   c   ,
0056520        p   b   i   ,       s   t   r   e   a   m   )  \r        
0056540                    S   e   t   F   i   l   e   P   o   s   (   s
0056560    t   r   e   a   m   ,       0   ,       5   1   2   )  \r    
0056600                        ]  \r               i   f   n   o   t    
0056620    W   s   (   "   *   N   T   r   a   n   s   f   e   r   r   i
0056640    n   g   .   .   .   "   )  \r  \r   l   e   t       b   i   t
0056660    s       =       v   e   c       1   ;       Z   e   r   o   (
0056700    b   i   t   s   ,       2   )  \r   l   e   t       s   a   v
0056720    e   C   u   r   s   o   r       =       v   e   c       1   6
0056740    ;       M   o   v   e   B   l   o   c   k   (   s   a   v   e
0056760    C   u   r   s   o   r   ,       c   u   r   s   o   r   B   i
0057000    t   M   a   p   ,       1   6   )  \r   f   o   r       i    
0057020    =       0       t   o       7       d   o       c   u   r   s
0057040    o   r   B   i   t   M   a   p   !   i       =       1   7   7
0057060    4   0   0   b  \r   f   o   r       i       =     376 001  \0
0057100   \b   6   8       t   o       1   5       d   o       c   u   r
0057120    s   o   r   B   i   t   M   a   p   !   i       =       3   7
0057140    7   b  \r   l   e   t       s   t   a   r   t   T   i   m   e
0057160        =       v   e   c       1   ;       R   e   a   d   C   a
0057200    l   e   n   d   a   r   (   s   t   a   r   t   T   i   m   e
0057220    )  \r   f   o   r       i       =       2       t   o       b
0057240    o   o   t   F   i   l   e   ?       2   5   3   ,       1   0
0057260    0   0       d   o  \r               [  \r               i   f
0057300        E   n   d   o   f   s   (   s   t   r   e   a   m   )    
0057320    t   h   e   n       b   r   e   a   k  \r               b   y
0057340    t   e   s       =       R   e   a   d   B   l   o   c   k   (
0057360    s   t   r   e   a   m   ,       b   u   f   f   e   r   ,    
0057400    2   5   6   )       l   s   h   i   f   t       1  \r        
0057420        i   f       (   F   i   l   e   P   o   s   (   s   t   r
0057440    e   a   m   )       &       1   )       e   q       1       t
0057460    h   e   n       b   y   t   e   s       =       b   y   t   e
0057500    s     376 001  \0 303 305   -   1  \r               i   f    
0057520    b   y   t   e   s       e   q       0       b   r   e   a   k
0057540   \r               b   y   t   e   s       =       S   e   n   d
0057560    E   F   T   P   B   l   o   c   k   (   s   o   c   ,       b
0057600    u   f   f   e   r   ,       b   y   t   e   s   ,       3   0
0057620    0   0   )  \r               f   o   r       i       =       0
0057640        t   o       1   5       d   o       c   u   r   s   o   r
0057660    B   i   t   M   a   p   !   i       =       n   o   t       c
0057700    u   r   s   o   r   B   i   t   M   a   p   !   i  \r        
0057720        l   e   t       i   n   c       =       v   e   c       1
0057740    ;       i   n   c   !   0       =       0   ;       i   n   c
0057760    !   1       =       8   *   b   y   t   e   s  \r            
0060000    D   o   u   b   l   e   A   d   d   (   b   i   t   s   ,    
0060020    i   n   c   )  \r               i   f       b   y   t   e   s
0060040        l   s       0       b   r   e   a   k  \r               ]
0060060   \r   M   o   v   e   B   l   o   c   k   (   c   u   r   s   o
0060100    r   B   i   t   M   a   p 376 001  \0   e 275   ,       s   a
0060120    v   e   C   u   r   s   o   r   ,       1   6   )  \r   i   f
0060140        b   y   t   e   s       l   s       0       r   e   s   u
0060160    l   t   i   s       B   a   i   l   O   u   t   (   b   y   t
0060200    e   s   ,       s   o   c   ,       p   b   i   ,       s   t
0060220    r   e   a   m   )  \r   l   e   t       s   t   o   p   T   i
0060240    m   e       =       v   e   c       1   ;       R   e   a   d
0060260    C   a   l   e   n   d   a   r   (   s   t   o   p   T   i   m
0060300    e   )  \r   t   e   s   t       S   e   n   d   E   F   T   P
0060320    E   n   d   (   s   o   c   ,       3   0   0   0   )  \r    
0060340            i   f   s   o  \r                           [  \r    
0060360                        D   i   v   i   d   e   3   2   x   1   6
0060400    (   b   i   t   s   ,       D   o   u   b   l   e   D   i   f
0060420    f   e   r   e   n   c   e   (   s   t   o   p   T   i   m   e
0060440    ,       s   t   a   r   t   T   i   m   e   )   )  \r        
0060460                    P   u   t   T   e   m   p   l   a   t   e   (
0060500    d   s   p   ,       "   $   E   U   D       b 376 001  \0 354
0060520   \a   i   t   s   /   s   e   c   .   .   .   "   ,       b   i
0060540    t   s   )  \r                           ]  \r               i
0060560    f   n   o   t       r   e   s   u   l   t   i   s       B   a
0060600    i   l   O   u   t   (   E   F   T   P   T   i   m   e   o   u
0060620    t   ,       s   o   c   ,       p   b   i   ,       s   t   r
0060640    e   a   m   )  \r  \r   /   /       S   e   e       i   f    
0060660    h   e       g   o   t       i   t  \r   l   e   t       g   o
0060700    t   R   e   p   l   y       =       f   a   l   s   e  \r   l
0060720    e   t       t   i   m   e   r       =       n   i   l   ;    
0060740    S   e   t   T   i   m   e   r   (   l   v       t   i   m   e
0060760    r   ,       1   2   0   0   0   )           /   /   2       m
0061000    i   n   u   t   e   s   !  \r               [  \r            
0061020    l   e   t       r   p   b   i       =       S   e   n   d   C
0061040    o   m   m   a   n   d   (   G   e   t   P   B   I   (   s   o
0061060    c   )   ,       p   t   S   t   a   t   s   ,       p   u   p
0061100    O   v   B   y   t   e   s   )  \r               i   f       r
0061120    p 376 001  \0   s   #   b   i       n   e       0       t   h
0061140    e   n  \r                           [  \r                    
0061160        l   e   t       s   t   a   t   u   s       =       r   p
0061200    b   i   >   >   P   B   I   .   p   u   p   .   t   y   p   e
0061220        e   q       p   t   A   c   k   ?  \r                    
0061240            (   l   v       r   p   b   i   >   >   P   B   I   .
0061260    p   u   p   .   w   o   r   d   s   )   >   >   S   t   a   t
0061300    s   .   f   t   p   S   t   a   t   u   s   ,       s   t   a
0061320    t   u   s   B   u   s   y  \r                           R   e
0061340    l   e   a   s   e   P   B   I   (   r   p   b   i   )  \r    
0061360                        s   w   i   t   c   h   o   n       s   t
0061400    a   t   u   s       i   n   t   o  \r                        
0061420                [  \r                                       c   a
0061440    s   e       s   t   a   t   u   s   B   u   s   y   :  \r    
0061460                                                [       D   i   s
0061500    m   i   s   s   (   5   0   0   )   ;       l   o   o   p    
0061520    ]  \r                 376 001  \0 027   s                    
0061540    c   a   s   e       s   t   a   t   u   s   Y   e   s   :  \r
0061560                                                    [       W   s
0061600    (   "   D   o   n   e   "   )   ;       g   o   t   R   e   p
0061620    l   y       =       t   r   u   e   ;       b   r   e   a   k
0061640        ]  \r                                       d   e   f   a
0061660    u   l   t   :  \r                                            
0061700        [  \r                                                   W
0061720    s   (   "       -       f   a   i   l   e   d   "   )  \r    
0061740                                                g   o   t   R   e
0061760    p   l   y       =       t   r   u   e  \r                    
0062000                                i   f       s   t   a   t   u   s
0062020        n   e       s   t   a   t   u   s   N   o       t   h   e
0062040    n  \r                                                        
0062060        P   u   t   T   e   m   p   l   a   t   e   (   e   r   r
0062100    o   r   D   s   p   ,       "       -       e   r   r   o   r
0062120        c   o   d   e       $   U   O   "   , 376 001  \0 237 227
0062140        s   t   a   t   u   s   )  \r                            
0062160                        b   r   e   a   k  \r                    
0062200                                ]  \r                            
0062220            ]  \r                           ]  \r               ]
0062240        r   e   p   e   a   t   u   n   t   i   l       T   i   m
0062260    e   r   H   a   s   E   x   p   i   r   e   d   (   l   v    
0062300    t   i   m   e   r   )  \r   u   n   l   e   s   s       g   o
0062320    t   R   e   p   l   y       d   o  \r               [  \r    
0062340            W   s   (   "   n   o       r   e   s   p   o   n   s
0062360    e   "   )  \r               W   s   (   "   *   N   I       a
0062400    m       u   n   a   b   l   e       t   o       c   o   n   f
0062420    i   r   m       s   a   f   e       d   e   l   i   v   e   r
0062440    y       o   f       t   h   e       f   i   l   e   "   )  \r
0062460                ]  \r  \r   B   a   i   l   O   u   t   (   0   ,
0062500        s   o   c   ,       p   b   i   ,       s   t   r   e   a
0062520    m   )  \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -
0062540  376 001  \0 251   8   -   -   -   -   -   -   -   -   -   -   -
0062560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0062640    -   -   -   -   -   -   -   -   -  \r   a   n   d       B   a
0062660    i   l   O   u   t   (   b   y   t   e   s   ,       s   o   c
0062700    ,       p   b   i   ,       s   t   r   e   a   m   )       b
0062720    e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0062740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0063040   \r   /   /       R   e   l   e   a   s   e   s       a   n   y
0063060        r   e   s   o   u   r   c   e   s       w   e       a   c
0063100    c   u   m   u   l   a   t   e   d   .  \r   [  \r   i   f    
0063120    s   t   r   e   a   m       n   e       0       t   h   e   n
0063140        C   l   o   s 376 001  \0 213 353   e   s   (   s   t   r
0063160    e   a   m   )  \r   i   f       p   b   i       n   e       0
0063200        t   h   e   n       R   e   l   e   a   s   e   P   B   I
0063220    (   p   b   i   )  \r   i   f       s   o   c       n   e    
0063240    0       t   h   e   n       C   l   o   s   e   E   F   T   P
0063260    S   o   c   (   s   o   c   )  \r   i   f       b   y   t   e
0063300    s       l   s       0       t   h   e   n  \r               [
0063320   \r               W   s   (   s   e   l   e   c   t   o   n    
0063340    b   y   t   e   s       i   n   t   o  \r                    
0063360        [  \r                           c   a   s   e       E   F
0063400    T   P   T   i   m   e   o   u   t   :       "       -       T
0063420    i   m   e   o   u   t   "  \r                           c   a
0063440    s   e       E   F   T   P   A   b   o   r   t   R   e   c   e
0063460    i   v   e   d   :       "       -       A   b   o   r   t    
0063500    r   e   c   e   i   v   e   d   "  \r                        
0063520    c   a   s   e       E   F   T   P   A   b   o   r   t   S   e
0063540    n   t   :       "       -       A   b 376 001  \0   % 024   o
0063560    r   t       s   e   n   t   "  \r                           d
0063600    e   f   a   u   l   t   :       "       -       U   n   k   n
0063620    o   w   n       e   r   r   o   r       c   o   d   e   "  \r
0063640                            ]   )  \r               ]  \r   ]  \r
0063660   \f  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0063700    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0064000   \r   a   n   d       R   e   t   r   i   e   v   e   F   i   l
0064020    e   (   )       =       v   a   l   o   f  \r   /   /   -   -
0064040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0064140    -   -   -   -   -   -   -   -   -   -  \r   /   /       T 376
0064160  001  \0   f 332   h   i   s       p   r   o   c   e   d   u   r
0064200    e       d   o   e   s   n   '   t       a   c   t   u   a   l
0064220    l   y       r   e   t   u   r   n       a       v   a   l   u
0064240    e   :  \r   /   /       I   f       t   h   i   n   g   s    
0064260    g   o       s   o   u   r   ,       w   e       a   b   o   r
0064300    t       b   y       s   a   y   i   n   g       "   r   e   s
0064320    u   l   t   i   s       B   a   i   l   O   u   t   (   .   .
0064340    .   )   "  \r   [  \r   l   e   t       b   y   t   e   s   ,
0064360        s   o   c   ,       p   b   i   ,       s   t   r   e   a
0064400    m       =       0   ,       0   ,       0   ,       0  \r   l
0064420    e   t       b   u   f   f   e   r       =       v   e   c    
0064440    2   5   6  \r   l   e   t       l   o   c   a   l   N   a   m
0064460    e   ,       r   e   m   o   t   e   N   a   m   e       =    
0064500    b   u   f   f   e   r   ,       b   u   f   f   e   r   +   1
0064520    2   8  \r   u   n   l   e   s   s       G   e   t   S   t   r
0064540    i   n   g   (   "   *   N   R   e   t   r   i   e   v   e    
0064560    r   e   m   o 376 001  \0   ] 206   t   e       f   i   l   e
0064600        "   ,       r   e   m   o   t   e   N   a   m   e   )    
0064620    r   e   s   u   l   t   i   s       f   a   l   s   e  \r   C
0064640    o   p   y   S   t   r   i   n   g   (   l   o   c   a   l   N
0064660    a   m   e   ,       r   e   m   o   t   e   N   a   m   e   )
0064700   \r   P   u   t   T   e   m   p   l   a   t   e   (   d   s   p
0064720    ,       "   a   s       l   o   c   a   l       f   i   l   e
0064740        $   S   "   ,       l   o   c   a   l   N   a   m   e   )
0064760   \r   l   e   t       c   h   a   r       =       G   e   t   s
0065000    (   k   e   y   s   )   ;       i   f       c   h   a   r    
0065020    n   e       $   *   N       t   h   e   n  \r               [
0065040   \r               f   o   r       i       =       l   o   c   a
0065060    l   N   a   m   e   >   >   S   t   r   i   n   g   .   l   e
0065100    n   g   t   h       t   o       1       b   y       -   1    
0065120    d   o  \r                           B   a   c   k   S   p   a
0065140    c   e   (   d   s   p   ,       l   o   c   a   l   N   a   m
0065160    e   >   >   S   t   r   i   n   g 376 001  \0  \n   &   .   c
0065200    h   a   r   ^   i   )  \r               u   n   l   e   s   s
0065220        G   e   t   S   t   r   i   n   g   (   0   ,       l   o
0065240    c   a   l   N   a   m   e   ,       t   r   u   e   ,       c
0065260    h   a   r   )       r   e   s   u   l   t   i   s       f   a
0065300    l   s   e  \r               ]  \r   s   t   r   e   a   m    
0065320    =       O   p   e   n   F   i   l   e   (   l   o   c   a   l
0065340    N   a   m   e   ,       k   s   T   y   p   e   W   r   i   t
0065360    e   O   n   l   y   ,       c   h   a   r   I   t   e   m   )
0065400   \r  \r   /   /       s   e   n   d       f   i   l   e       n
0065420    a   m   e  \r   l   e   t       s   o   c       =       v   e
0065440    c       l   e   n   E   F   T   P   S   o   c   ;       O   p
0065460    e   n   E   F   T   P   S   o   c   (   s   o   c   ,       0
0065500    ,       0   )  \r   f   o   r       i       =       1       t
0065520    o       1   0       d   o           /   /   w   o   r   s   t
0065540        c   a   s   e   :       2   0       s   e   c   o   n   d
0065560    s  \r               [  \r               l   e   t     376 001
0065600   \0 264 335   p   b   i       =       G   e   t   P   B   I   (
0065620    s   o   c   )  \r               p   b   i   >   >   P   B   I
0065640    .   p   u   p   .   i   d   ^   1       =       g   c   P   a
0065660    s   s   w   o   r   d  \r               p   b   i   >   >   P
0065700    B   I   .   p   u   p   .   d   P   o   r   t   .   n   e   t
0065720        =       g   c   N   e   t  \r               p   b   i   >
0065740    >   P   B   I   .   p   u   p   .   d   P   o   r   t   .   h
0065760    o   s   t       =       g   c   H   o   s   t  \r            
0066000    p   b   i   >   >   P   B   I   .   p   u   p   .   d   P   o
0066020    r   t   .   s   o   c   k   e   t   ^   1       =       g   c
0066040    S   o   c   k   e   t   1  \r               p   b   i   >   >
0066060    P   B   I   .   p   u   p   .   d   P   o   r   t   .   s   o
0066100    c   k   e   t   ^   2       =       g   c   S   o   c   k   e
0066120    t   2  \r               A   p   p   e   n   d   S   t   r   i
0066140    n   g   T   o   P   u   p   (   p   b   i   ,       1   ,    
0066160    r   e   m   o   t   e   N   a   m   e   )  \r               C
0066200    o   m   p 376 001  \0   V   J   l   e   t   e   P   u   p   (
0066220    p   b   i   ,       p   t   R   e   t   r   i   e   v   e   )
0066240   \r               b   y   t   e   s       =       R   e   c   e
0066260    i   v   e   E   F   T   P   B   l   o   c   k   (   s   o   c
0066300    ,       b   u   f   f   e   r   ,       2   0   0   )        
0066320    /   /   2       s   e   c   o   n   d   s  \r               i
0066340    f       b   y   t   e   s       g   r       0       b   r   e
0066360    a   k  \r               ]  \r   i   f       b   y   t   e   s
0066400        l   e       0       r   e   s   u   l   t   i   s       B
0066420    a   i   l   O   u   t   (   b   y   t   e   s   ,       s   o
0066440    c   ,       p   b   i   ,       s   t   r   e   a   m   )  \r
0066460   \r   W   s   (   "   *   N   T   r   a   n   s   f   e   r   r
0066500    i   n   g   .   .   .   "   )  \r   l   e   t       b   i   t
0066520    s       =       v   e   c       1   ;       Z   e   r   o   (
0066540    b   i   t   s   ,       2   )  \r   l   e   t       s   a   v
0066560    e   C   u   r   s   o   r       =       v   e   c       1   6
0066600    ;       M   o   v   e   B   l 376 001  \0 306   "   o   c   k
0066620    (   s   a   v   e   C   u   r   s   o   r   ,       c   u   r
0066640    s   o   r   B   i   t   M   a   p   ,       1   6   )  \r   f
0066660    o   r       i       =       0       t   o       7       d   o
0066700        c   u   r   s   o   r   B   i   t   M   a   p   !   i    
0066720    =       1   7   7   4   0   0   b  \r   f   o   r       i    
0066740    =       8       t   o       1   5       d   o       c   u   r
0066760    s   o   r   B   i   t   M   a   p   !   i       =       3   7
0067000    7   b  \r   l   e   t       s   t   a   r   t   T   i   m   e
0067020        =       v   e   c       1   ;       R   e   a   d   C   a
0067040    l   e   n   d   a   r   (   s   t   a   r   t   T   i   m   e
0067060    )  \r               [  \r               W   r   i   t   e   B
0067100    l   o   c   k   (   s   t   r   e   a   m   ,       b   u   f
0067120    f   e   r   ,       b   y   t   e   s       r   s   h   i   f
0067140    t       1   )  \r               i   f       (   b   y   t   e
0067160    s       &       1   )       e   q       1       t   h   e   n
0067200        P   u   t   s   (   s   t   r   e   a   m   , 376 001  \0
0067220  272 312       b   u   f   f   e   r   !   (   b   y   t   e   s
0067240        r   s   h   i   f   t       1   )       r   s   h   i   f
0067260    t       8   )  \r               b   y   t   e   s       =    
0067300    R   e   c   e   i   v   e   E   F   T   P   B   l   o   c   k
0067320    (   s   o   c   ,       b   u   f   f   e   r   ,       3   0
0067340    0   0   )           /   /   3   0       s   e   c   o   n   d
0067360    s  \r               f   o   r       i       =       0       t
0067400    o       1   5       d   o       c   u   r   s   o   r   B   i
0067420    t   M   a   p   !   i       =       n   o   t       c   u   r
0067440    s   o   r   B   i   t   M   a   p   !   i  \r               l
0067460    e   t       i   n   c       =       v   e   c       1   ;    
0067500    i   n   c   !   0       =       0   ;       i   n   c   !   1
0067520        =       8   *   b   y   t   e   s  \r               D   o
0067540    u   b   l   e   A   d   d   (   b   i   t   s   ,       i   n
0067560    c   )  \r               ]       r   e   p   e   a   t   u   n
0067600    t   i   l       b   y   t   e   s       l   e       0  \r   M
0067620    o   v 376 001  \0   j   7   e   B   l   o   c   k   (   c   u
0067640    r   s   o   r   B   i   t   M   a   p   ,       s   a   v   e
0067660    C   u   r   s   o   r   ,       1   6   )  \r   i   f       b
0067700    y   t   e   s       l   s       0       r   e   s   u   l   t
0067720    i   s       B   a   i   l   O   u   t   (   b   y   t   e   s
0067740    ,       s   o   c   ,       p   b   i   ,       s   t   r   e
0067760    a   m   )  \r   l   e   t       s   t   o   p   T   i   m   e
0070000        =       v   e   c       1   ;       R   e   a   d   C   a
0070020    l   e   n   d   a   r   (   s   t   o   p   T   i   m   e   )
0070040   \r   D   i   v   i   d   e   3   2   x   1   6   (   b   i   t
0070060    s   ,       D   o   u   b   l   e   D   i   f   f   e   r   e
0070100    n   c   e   (   s   t   o   p   T   i   m   e   ,       s   t
0070120    a   r   t   T   i   m   e   )   )  \r   P   u   t   T   e   m
0070140    p   l   a   t   e   (   d   s   p   ,       "   $   E   U   D
0070160        b   i   t   s   /   s   e   c   .   .   .   "   ,       b
0070200    i   t   s   )  \r   B   a   i   l   O   u   t   (   0   ,    
0070220    s   o   c   ,       p   b 376  \0 031 316   !   i   ,       s
0070240    t   r   e   a   m   )  \r   W   s   (   "   D   o   n   e   "
0070260    )  \r   ]  \r  \r 377  \0  \0   G   a   t   e   C   o   n   D
0070300    e   b   u   g   .   b   c   p   l  \0 373 223  \f 315   z  \0
0070320   \0 376 001  \0 367 371   /   /       G   a   t   e   C   o   n
0070340    D   e   b   u   g   .   b   c   p   l       -       a       s
0070360    i   m   p   l   e       r   e   m   o   t   e       d   e   b
0070400    u   g   g   e   r  \r  \r   /   /       L   a   s   t       m
0070420    o   d   i   f   i   e   d       M   a   r   c   h       6   ,
0070440        1   9   7   9           1   0   :   4   3       P   M    
0070460    b   y       B   o   g   g   s  \r  \r   g   e   t       "   P
0070500    u   p   0   .   d   e   c   l   "  \r   g   e   t       "   P
0070520    u   p   1   .   d   e   c   l   "  \r   g   e   t       "   G
0070540    a   t   e   C   o   n   S   e   r   v   .   d   e   c   l   "
0070560   \r  \r   e   x   t   e   r   n   a   l  \r   [  \r   /   /   o
0070600    u   t   g   o   i   n   g       p   r   o   c   e   d   u   r
0070620    e   s  \r   D   e   b   u   g   g   e   r  \r  \r   /   /   i
0070640    n   c   o   m   i   n   g       p   r   o   c   e   d   u   r
0070660    e   s  \r   G   e   t   s   ;       P   u   t   T   e   m   p
0070700    l   a   t   e   ;       P   u   t   s   ;       W   s   ;    
0070720    C   o   n   f   i   r 376 001  \0   `   n   m  \r   O   p   e
0070740    n   L   e   v   e   l   1   S   o   c   k   e   t   ;       C
0070760    l   o   s   e   L   e   v   e   l   1   S   o   c   k   e   t
0071000   \r   G   e   t   B   u   f   ;       R   e   l   e   a   s   e
0071020    P   B   I   ;       S   e   n   d   C   o   m   m   a   n   d
0071040   \r  \r   /   /   i   n   c   o   m   i   n   g       s   t   a
0071060    t   i   c   s  \r   d   s   p   ;       k   e   y   s  \r   ]
0071100   \r  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0071120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0071220   \r   l   e   t       D   e   b   u   g   g   e   r   (   )    
0071240    b   e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0071260    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0071320    -   -   -   -   -   -   -   -   -   -   - 376 001  \0   h 275
0071340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0071360    -   -   -   -   -   -  \r   [  \r   l   e   t       p   r   i
0071400    n   t   M   o   d   e       =       1  \r   l   e   t       a
0071420    d   d   r   e   s   s       =       0  \r   l   e   t       n
0071440    u   m   b   e   r       =       0  \r   l   e   t       c   o
0071460    n   t   e   n   t   s       =       0  \r   l   e   t       c
0071500    e   l   l   O   p   e   n       =       f   a   l   s   e  \r
0071520    l   e   t       g   o   t   N   u   m   b   e   r       =    
0071540    f   a   l   s   e  \r   l   e   t       s   o   c       =    
0071560    v   e   c       l   e   n   P   u   p   S   o   c   ;       O
0071600    p   e   n   L   e   v   e   l   1   S   o   c   k   e   t   (
0071620    s   o   c   )  \r   W   s   (   "   *   N   D   e   b   u   g
0071640    g   e   r   *   N   "   )  \r               [  \r            
0071660    g   o   t   N   u   m   b   e   r       =       f   a   l   s
0071700    e  \r               l   e   t       c   h   a   r       =    
0071720    n   i   l  \r               n   u   m   b   e   r       =    
0071740  376 001  \0   d 022   0  \r                           [  \r    
0071760                        c   h   a   r       =       G   e   t   s
0072000    (   k   e   y   s   )  \r                           t   e   s
0072020    t       c   h   a   r       g   e       $   0       &       c
0072040    h   a   r       l   e       $   7  \r                        
0072060                i   f   s   o  \r                                
0072100                    [  \r                                        
0072120            n   u   m   b   e   r       =       n   u   m   b   e
0072140    r       l   s   h   i   f   t       3       +       (   c   h
0072160    a   r   -   $   0   )  \r                                    
0072200                P   u   t   s   (   d   s   p   ,       c   h   a
0072220    r   )  \r                                                   g
0072240    o   t   N   u   m   b   e   r       =       t   r   u   e  \r
0072260                                                    ]  \r        
0072300                                i   f   n   o   t  \r            
0072320                                        [  \r                    
0072340                      376 001  \0 247  \a           i   f       c
0072360    h   a   r       e   q       $   .       &       n   o   t    
0072400    g   o   t   N   u   m   b   e   r       t   h   e   n  \r    
0072420                                                            [  \r
0072440                                                                P
0072460    u   t   s   (   d   s   p   ,       $   .   )  \r            
0072500                                                    n   u   m   b
0072520    e   r       =       a   d   d   r   e   s   s  \r            
0072540                                                    g   o   t   N
0072560    u   m   b   e   r       =       t   r   u   e  \r            
0072600                                                    c   h   a   r
0072620        =       G   e   t   s   (   k   e   y   s   )  \r        
0072640                                                        ]  \r    
0072660                                                b   r   e   a   k
0072700   \r                                                   ]  \r    
0072720                        ]       r   e   p   e   a   t  \r        
0072740        s   w   i   t   c   h   o   n     376 001  \0 001 356   c
0072760    h   a   r       i   n   t   o  \r                           [
0073000   \r                           c   a   s   e       $   *   0   3
0073020    3   :           /   /   e   s   c   a   p   e  \r            
0073040                            [  \r                                
0073060        i   f       g   o   t   N   u   m   b   e   r       t   h
0073100    e   n       [       W   s   (   "   ?   *   N   "   )   ;    
0073120    e   n   d   c   a   s   e       ]  \r                        
0073140                P   u   t   s   (   d   s   p   ,       $   $   )
0073160   \r                                       s   w   i   t   c   h
0073200    o   n       G   e   t   s   (   k   e   y   s   )       i   n
0073220    t   o  \r                                                   [
0073240   \r                                                   c   a   s
0073260    e       $   =   :           /   /   o   c   t   a   l  \r    
0073300                                                            [    
0073320    p   r   i   n   t   M   o   d   e       =       1   ;       e
0073340    n   d   c   a   s   e       ]  \r                         376
0073360  001  \0 340 325                           c   a   s   e       $
0073400    _   :           /   /   b   y   t   e   s  \r                
0073420                                                [       p   r   i
0073440    n   t   M   o   d   e       =       2   ;       e   n   d   c
0073460    a   s   e       ]  \r                                        
0073500            d   e   f   a   u   l   t   :       W   s   (   "   ?
0073520    *   N   "   )  \r                                            
0073540        ]  \r                                       e   n   d   c
0073560    a   s   e  \r                                       ]  \r    
0073600                        c   a   s   e       $   _   :  \r        
0073620                                [       W   s   (   "       _   "
0073640    )   ;       P   r   i   n   t   (   c   o   n   t   e   n   t
0073660    s   ,       2   )   ;       e   n   d   c   a   s   e       ]
0073700   \r                           c   a   s   e       $   =   :  \r
0073720                                        [       W   s   (   "    
0073740    =   "   )   ;       P   r   i   n   t   (   c   o   n   t   e
0073760    n   t   s   , 376 001  \0 377   +       1   )   ;       e   n
0074000    d   c   a   s   e       ]  \r                           c   a
0074020    s   e       $   /   :  \r                                    
0074040    [  \r                                       W   s   (   "   /
0074060        "   )  \r                                       a   d   d
0074100    r   e   s   s       =       g   o   t   N   u   m   b   e   r
0074120        ?       n   u   m   b   e   r   ,       c   o   n   t   e
0074140    n   t   s  \r                                       c   o   n
0074160    t   e   n   t   s       =       E   x   a   m   i   n   e   (
0074200    s   o   c   ,       a   d   d   r   e   s   s   ,       p   r
0074220    i   n   t   M   o   d   e   )  \r                            
0074240            c   e   l   l   O   p   e   n       =       t   r   u
0074260    e  \r                                       e   n   d   c   a
0074300    s   e  \r                                       ]  \r        
0074320                    c   a   s   e       $   *   N   :  \r        
0074340                                [  \r                            
0074360            i   f       g   o   t   N 376 001  \0 337 267   u   m
0074400    b   e   r       t   h   e   n  \r                            
0074420                        t   e   s   t       c   e   l   l   O   p
0074440    e   n  \r                                                    
0074460            i   f   s   o       D   e   p   o   s   i   t   (   s
0074500    o   c   ,       a   d   d   r   e   s   s   ,       n   u   m
0074520    b   e   r   )  \r                                            
0074540                    i   f   n   o   t       P   u   t   s   (   d
0074560    s   p   ,       $   ?   )  \r                                
0074600        c   e   l   l   O   p   e   n       =       f   a   l   s
0074620    e  \r                                       P   u   t   s   (
0074640    d   s   p   ,       $   *   N   )  \r                        
0074660                e   n   d   c   a   s   e  \r                    
0074700                    ]  \r                           c   a   s   e
0074720        $   *   L   :  \r                                       [
0074740   \r                                       i   f       g   o   t
0074760    N   u   m   b   e   r       t   h   e   n  \r         376 001
0075000   \0 202 002                                           t   e   s
0075020    t       c   e   l   l   O   p   e   n  \r                    
0075040                                            i   f   s   o       D
0075060    e   p   o   s   i   t   (   s   o   c   ,       a   d   d   r
0075100    e   s   s   ,       n   u   m   b   e   r   )  \r            
0075120                                                    i   f   n   o
0075140    t       [       W   s   (   "   ?   *   N   "   )   ;       e
0075160    n   d   c   a   s   e       ]  \r                            
0075200            a   d   d   r   e   s   s       =       a   d   d   r
0075220    e   s   s   +   1  \r                                       P
0075240    u   t   T   e   m   p   l   a   t   e   (   d   s   p   ,    
0075260    "   *   N   $   5   O   /       "   ,       a   d   d   r   e
0075300    s   s   )  \r                                       c   o   n
0075320    t   e   n   t   s       =       E   x   a   m   i   n   e   (
0075340    s   o   c   ,       a   d   d   r   e   s   s   ,       p   r
0075360    i   n   t   M   o   d   e   )  \r                            
0075400            c 376 001  \0 321   R   e   l   l   O   p   e   n    
0075420    =       t   r   u   e  \r                                    
0075440    e   n   d   c   a   s   e  \r                                
0075460        ]  \r                           c   a   s   e       $   ^
0075500    :  \r                                       [  \r            
0075520                            i   f       g   o   t   N   u   m   b
0075540    e   r       t   h   e   n  \r                                
0075560                    t   e   s   t       c   e   l   l   O   p   e
0075600    n  \r                                                        
0075620        i   f   s   o       D   e   p   o   s   i   t   (   s   o
0075640    c   ,       a   d   d   r   e   s   s   ,       n   u   m   b
0075660    e   r   )  \r                                                
0075700                i   f   n   o   t       [       W   s   (   "   ?
0075720    *   N   "   )   ;       e   n   d   c   a   s   e       ]  \r
0075740                                        a   d   d   r   e   s   s
0075760        =       a   d   d   r   e   s   s   -   1  \r            
0076000                            P   u 376 001  \0 331 270   t   T   e
0076020    m   p   l   a   t   e   (   d   s   p   ,       "   ^   *   N
0076040    $   5   O   /       "   ,   a   d   d   r   e   s   s   )  \r
0076060                                        c   o   n   t   e   n   t
0076100    s       =       E   x   a   m   i   n   e   (   s   o   c   ,
0076120        a   d   d   r   e   s   s   ,       p   r   i   n   t   M
0076140    o   d   e   )  \r                                       c   e
0076160    l   l   O   p   e   n       =       t   r   u   e  \r        
0076200                                e   n   d   c   a   s   e  \r    
0076220                                    ]  \r                        
0076240    c   a   s   e       $   *   1   7   7   :  \r                
0076260                        [  \r                                    
0076300    W   s   (   "       X   X   X       "   )  \r                
0076320                        e   n   d   c   a   s   e  \r            
0076340                            ]  \r                           c   a
0076360    s   e       $   Q   :       c   a   s   e       $   q   :  \r
0076400                                        [       i   f 376 001  \0
0076420  314   u       C   o   n   f   i   r   m   (   "   *   N   Q   u
0076440    i   t       D   e   b   u   g   g   e   r   "   )       b   r
0076460    e   a   k       ]  \r                           d   e   f   a
0076500    u   l   t   :  \r                                       [    
0076520    W   s   (   "       ?       "   )   ;       e   n   d   c   a
0076540    s   e       ]  \r                           ]  \r            
0076560    ]       r   e   p   e   a   t  \r   C   l   o   s   e   L   e
0076600    v   e   l   1   S   o   c   k   e   t   (   s   o   c   )  \r
0076620    ]  \r  \f  \r   /   /   -   -   -   -   -   -   -   -   -   -
0076640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0076740    -   -  \r   a   n   d       P   r   i   n   t   (   v   a   l
0076760    u   e   ,       m   o   d   e   )       b   e  \r   /   /   -
0077000    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0077020    -   - 376 001  \0 023 366   -   -   -   -   -   -   -   -   -
0077040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0077120   \r   [  \r   s   w   i   t   c   h   o   n       m   o   d   e
0077140        i   n   t   o  \r               [  \r               c   a
0077160    s   e       1   :  \r                           [       P   u
0077200    t   T   e   m   p   l   a   t   e   (   d   s   p   ,       "
0077220        $   6   U   O       "   ,       v   a   l   u   e   )   ;
0077240        e   n   d   c   a   s   e       ]  \r               c   a
0077260    s   e       2   :  \r                           [  \r        
0077300                    P   u   t   T   e   m   p   l   a   t   e   (
0077320    d   s   p   ,       "       $   3   O       $   3   O       "
0077340    ,       v   a   l   u   e       r   s   h   i   f   t       8
0077360    ,       v   a   l   u   e       &       #   3   7   7   )  \r
0077400                            e   n   d   c   a   s   e  \r        
0077420                    ]  \r     376 001  \0   ] 375           ]  \r
0077440    ]  \r  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -
0077460    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0077560    -   -  \r   a   n   d       E   x   a   m   i   n   e   (   s
0077600    o   c   ,       a   d   d   r   e   s   s   ,       m   o   d
0077620    e   )       =       v   a   l   o   f  \r   /   /   -   -   -
0077640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0077740    -   -   -   -   -   -   -   -   -  \r   [  \r   l   e   t    
0077760    p   b   i       =       G   e   t   B   u   f   (   s   o   c
0100000    )  \r   p   b   i   >   >   P   B   I   .   p   u   p   .   w
0100020    o   r   d   s   ^   1       =       a   d   d 376 001  \0   g
0100040  256   r   e   s   s  \r   p   b   i   >   >   P   B   I   .   p
0100060    u   p   .   w   o   r   d   s   ^   2       =       1  \r   p
0100100    b   i       =       S   e   n   d   C   o   m   m   a   n   d
0100120    (   p   b   i   ,       p   t   E   x   a   m   i   n   e   ,
0100140        p   u   p   O   v   B   y   t   e   s       +       4   )
0100160   \r   i   f       p   b   i       t   h   e   n  \r            
0100200    [  \r               l   e   t       v   a   l   u   e       =
0100220        p   b   i   >   >   P   B   I   .   p   u   p   .   w   o
0100240    r   d   s   ^   3  \r               R   e   l   e   a   s   e
0100260    P   B   I   (   p   b   i   )  \r               P   r   i   n
0100300    t   (   v   a   l   u   e   ,       m   o   d   e   )  \r    
0100320            r   e   s   u   l   t   i   s       v   a   l   u   e
0100340   \r               ]  \r   ]  \r  \r  \r   /   /   -   -   -   -
0100360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0100440    - 376 001  \0 240   ^   -   -   -   -   -   -   -   -   -   -
0100460    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n
0100500    d       D   e   p   o   s   i   t   (   s   o   c   ,       a
0100520    d   d   r   e   s   s   ,       v   a   l   u   e   )       b
0100540    e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0100560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0100660   \r   [  \r   l   e   t       p   b   i       =       G   e   t
0100700    B   u   f   (   s   o   c   )  \r   p   b   i   >   >   P   B
0100720    I   .   p   u   p   .   w   o   r   d   s   ^   1       =    
0100740    a   d   d   r   e   s   s  \r   p   b   i   >   >   P   B   I
0100760    .   p   u   p   .   w   o   r   d   s   ^   2       =       1
0101000   \r   p   b   i   >   >   P   B   I   .   p   u   p   .   w   o
0101020    r   d   s   ^   3       =       v   a   l   u   e  \r   p   b
0101040    i       =       S   e 376  \0   H 031   3   n   d   C   o   m
0101060    m   a   n   d   (   p   b   i   ,       p   t   D   e   p   o
0101100    s   i   t   ,       p   u   p   O   v   B   y   t   e   s    
0101120    +       6   )  \r   i   f       p   b   i       t   h   e   n
0101140        R   e   l   e   a   s   e   P   B   I   (   p   b   i   )
0101160   \r   ]  \r 377  \0  \0   G   a   t   e   C   o   n   I   O   .
0101200    b   c   p   l  \0 373 223  \f 314 227  \0  \0 376 001  \0 214
0101220    Y   /   /       G   a   t   e   C   o   n   I   O   .   b   c
0101240    p   l  \r  \r   /   /       L   a   s   t       m   o   d   i
0101260    f   i   e   d       M   a   r   c   h       6   ,       1   9
0101300    7   9           1   0   :   3   9       P   M       b   y    
0101320    B   o   g   g   s  \r  \r   g   e   t       "   A   l   t   o
0101340    D   e   f   s   .   d   "  \r  \r   e   x   t   e   r   n   a
0101360    l  \r   [  \r   /   /       o   u   t   g   o   i   n   g    
0101400    p   r   o   c   e   d   u   r   e   s  \r   G   e   t   S   t
0101420    r   i   n   g   ;       G   e   t   N   u   m   b   e   r   ;
0101440        C   o   n   f   i   r   m   ;       W   s   ;       W   s
0101460    s  \r  \r   /   /       i   n   c   o   m   i   n   g       p
0101500    r   o   c   e   d   u   r   e   s  \r   P   u   t   s   ;    
0101520    G   e   t   s   ;       R   e   s   e   t   s   ;       E   n
0101540    d   o   f   s   ;       B   l   o   c   k  \r   P   u   t   T
0101560    e   m   p   l   a   t   e   ;       B   a   c   k   S   p   a
0101600    c   e   ;       D   e   f   a   u   l   t   A   r   g   s  \r
0101620    S 376 001  \0 274 240   e   t   T   i   m   e   r   ;       T
0101640    i   m   e   r   H   a   s   E   x   p   i   r   e   d   ;    
0101660    M   o   v   e   B   l   o   c   k  \r  \r   /   /       i   n
0101700    c   o   m   i   n   g       s   t   a   t   i   c   s  \r   d
0101720    s   p   ;       k   e   y   s  \r   ]  \r  \r   s   t   r   u
0101740    c   t   u   r   e       S   t   r   i   n   g       [       l
0101760    e   n   g   t   h       b   y   t   e   ;       c   h   a   r
0102000    ^   1   ,   2   5   5       b   y   t   e       ]  \r  \r   /
0102020    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0102040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0102120    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   l   e
0102140    t       G   e   t   S   t   r   i   n   g   (   p   r   o   m
0102160    p   t   ,       a   d   d   r   ,       e   c   h   o   ,    
0102200    c   h   a   r   ;       n   u   m   a   r   g   s       n   a
0102220    )       =       v   a 376 001  \0 363   j   l   o   f  \r   /
0102240    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0102260    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0102340    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   /   /
0102360        r   e   t   u   r   n   s       f   a   l   s   e       i
0102400    f       d   e   l       i   s       t   y   p   e   d       (
0102420    r   e   t   u   r   n       t   o       c   o   m   m   a   n
0102440    d       l   e   v   e   l   )  \r   /   /       a   d   d   r
0102460        i   s       t   h   e       a   d   d   r   e   s   s    
0102500    o   f       t   h   e       s   t   r   i   n   g       t   h
0102520    a   t       s   h   o   u   l   d       g   e   t       t   h
0102540    e       r   e   s   u   l   t   .  \r   /   /       p   r   o
0102560    m   p   t       i   s       a       p   r   o   m   p   t    
0102600    s   t   r   i   n   g       p   r   i   n   t   e   d       i
0102620    n       t   h   e       o   b   v   i   o 376 001  \0 216 352
0102640    u   s       p   l   a   c   e   s  \r   [  \r   R   e   s   e
0102660    t   s   (   k   e   y   s   )  \r   D   e   f   a   u   l   t
0102700    A   r   g   s   (   l   v       n   a   ,       2   ,       t
0102720    r   u   e   ,       0   )  \r   i   f       p   r   o   m   p
0102740    t       n   e       0       t   h   e   n       W   s   (   p
0102760    r   o   m   p   t   )  \r   l   e   t       c   o   u   n   t
0103000        =       0  \r  \r               [  \r               c   h
0103020    a   r       =       c   h   a   r       n   e       0       ?
0103040        c   h   a   r   ,       G   e   t   s   (   k   e   y   s
0103060    )   ;       s   w   i   t   c   h   o   n       c   h   a   r
0103100        i   n   t   o  \r                           [  \r        
0103120                    c   a   s   e       $   *   N   :       c   a
0103140    s   e       $   *   S   :       c   a   s   e       $   *   0
0103160    3   3   :       c   a   s   e       $   *   T   :  \r        
0103200                                [  \r                            
0103220            P   u   t   s   (   d   s   p   ,       $   *   S   )
0103240  376 001  \0 267 225  \r                                       a
0103260    d   d   r   >   >   S   t   r   i   n   g   .   l   e   n   g
0103300    t   h       =       c   o   u   n   t  \r                    
0103320                    r   e   s   u   l   t   i   s       c   o   u
0103340    n   t  \r                                       ]  \r        
0103360                    c   a   s   e       $   *   0   2   7   :    
0103400        /   /   w   o   r   d       d   e   l   e   t   e  \r    
0103420                                    [  \r                        
0103440                i   f       e   c   h   o       t   h   e   n    
0103460    f   o   r       i       =       c   o   u   n   t       t   o
0103500        1       b   y       -   1       d   o  \r                
0103520                                    B   a   c   k   S   p   a   c
0103540    e   (   d   s   p   ,       a   d   d   r   >   >   S   t   r
0103560    i   n   g   .   c   h   a   r   ^   i   )  \r                
0103600                        c   o   u   n   t       =       0  \r    
0103620                                    e   n   d   c   a   s   e  \r
0103640                      376 001  \0 221 270                   ]  \r
0103660                            c   a   s   e       $   *   1   7   7
0103700    :           /   /   c   o   m   m   a   n   d       d   e   l
0103720    e   t   e  \r                                       [  \r    
0103740                                    W   s   (   "       X   X   X
0103760    "   )  \r                                       r   e   s   u
0104000    l   t   i   s       f   a   l   s   e  \r                    
0104020                    e   n   d   c   a   s   e  \r                
0104040                        ]  \r                           c   a   s
0104060    e       $   *   0   0   1   :           /   /   ^   A  \r    
0104100                        c   a   s   e       $   *   0   1   0   :
0104120            /   /   B   S  \r                                    
0104140    [  \r                                       i   f       c   o
0104160    u   n   t       n   e       0       &       e   c   h   o    
0104200    t   h   e   n  \r                                            
0104220        [  \r                                                   B
0104240    a   c   k   S   p   a   c   e   (   d 376 001  \0   9 351   s
0104260    p   ,       a   d   d   r   >   >   S   t   r   i   n   g   .
0104300    c   h   a   r   ^   c   o   u   n   t   )  \r                
0104320                                    c   o   u   n   t       =    
0104340    c   o   u   n   t       -   1  \r                            
0104360                        ]  \r                                    
0104400    e   n   d   c   a   s   e  \r                                
0104420        ]  \r                           d   e   f   a   u   l   t
0104440    :  \r                                       [  \r            
0104460                            i   f       c   o   u   n   t       l
0104500    s       2   5   5       &       c   h   a   r       g   r    
0104520    4   0   b       t   h   e   n  \r                            
0104540                        [  \r                                    
0104560                c   o   u   n   t       =       c   o   u   n   t
0104600        +   1  \r                                                
0104620    a   d   d   r   >   >   S   t   r   i   n   g   .   c   h   a
0104640    r   ^   c   o   u   n   t       =       c   h   a   r  \r 376
0104660  001  \0   |   e                                                
0104700    i   f       e   c   h   o       t   h   e   n       P   u   t
0104720    s   (   d   s   p   ,       c   h   a   r   )  \r            
0104740                                        ]  \r                    
0104760                    e   n   d   c   a   s   e  \r                
0105000                        ]  \r                           ]  \r    
0105020            c   h   a   r       =       0  \r               ]    
0105040    r   e   p   e   a   t  \r   ]  \r  \f  \r   /   /   -   -   -
0105060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0105160    -   -   -   -   -   -   -   -   -  \r   a   n   d       G   e
0105200    t   N   u   m   b   e   r   (   s   t   r   i   n   g   ;    
0105220    n   u   m   a   r   g   s       n   a   )       =       v   a
0105240    l   o   f  \r   /   /   -   -   -   -   -   -   -   -   -   -
0105260    -   -   -   - 376 001  \0   W   W   -   -   -   -   -   -   -
0105300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0105360    -   -   -   -   -   -   -  \r   [  \r   R   e   s   e   t   s
0105400    (   k   e   y   s   )  \r   i   f       n   a       g   r    
0105420    0       t   h   e   n       W   s   (   s   t   r   i   n   g
0105440    )  \r   l   e   t       r   e   s       =       0  \r   l   e
0105460    t       c   o   u   n   t       =       0  \r               [
0105500   \r               l   e   t       c   h   a   r       =       G
0105520    e   t   s   (   k   e   y   s   )   ;       s   w   i   t   c
0105540    h   o   n       c   h   a   r       i   n   t   o  \r        
0105560                    [  \r                           c   a   s   e
0105600        $   0   :       c   a   s   e       $   1   :       c   a
0105620    s   e       $   2   :       c   a   s   e       $   3   :  \r
0105640                            c   a   s   e       $   4   :       c
0105660    a   s   e       $   5   :       c 376 001  \0 225 305   a   s
0105700    e       $   6   :       c   a   s   e       $   7   :  \r    
0105720                                    [  \r                        
0105740                P   u   t   s   (   d   s   p   ,       c   h   a
0105760    r   )  \r                                       r   e   s    
0106000    =       (   r   e   s       l   s   h   i   f   t       3   )
0106020        +       (   c   h   a   r   &   7   )  \r                
0106040                        e   n   d   c   a   s   e  \r            
0106060                            ]  \r                           c   a
0106100    s   e       $   *   0   0   1   :       c   a   s   e       $
0106120    *   0   1   0   :  \r                                       [
0106140   \r                                       i   f       c   o   u
0106160    n   t       n   e       0       t   h   e   n  \r            
0106200                                        [  \r                    
0106220                                B   a   c   k   S   p   a   c   e
0106240    (   d   s   p   ,       $   0   +   (   r   e   s   &   7   )
0106260    )  \r                                                 376 001
0106300   \0 243 366   r   e   s       =       r   e   s       r   s   h
0106320    i   f   t       3  \r                                        
0106340            ]  \r                                       e   n   d
0106360    c   a   s   e  \r                                       ]  \r
0106400                            c   a   s   e       $   *   N   :    
0106420    c   a   s   e       $   *   S   :       c   a   s   e       $
0106440    *   0   3   3   :  \r                                       [
0106460        P   u   t   s   (   d   s   p   ,       $   *   S   )   ;
0106500        r   e   s   u   l   t   i   s       r   e   s       ]  \r
0106520                            c   a   s   e       $   *   1   7   7
0106540    :  \r                                       [       W   s   (
0106560    "       X   X   X   "   )   ;       r   e   s   u   l   t   i
0106600    s       0       ]  \r                           ]  \r        
0106620        ]       r   e   p   e   a   t  \r   ]  \r  \r   /   /   -
0106640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0106700    -   -   - 376 001  \0 207   r   -   -   -   -   -   -   -   -
0106720    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0106760   \r   a   n   d       C   o   n   f   i   r   m   (   p   r   o
0107000    m   p   t   ;       n   u   m   a   r   g   s       n   a   )
0107020        =       v   a   l   o   f  \r   /   /   -   -   -   -   -
0107040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0107140    -   -   -   -   -   -   -  \r   [  \r   R   e   s   e   t   s
0107160    (   k   e   y   s   )  \r   i   f       n   a       g   r    
0107200    0       t   h   e   n       W   s   (   p   r   o   m   p   t
0107220    )  \r   W   s   (   "       [   C   o   n   f   i   r   m   ]
0107240        "   )  \r  \r   l   e   t       c   u   r   s   o   r    
0107260    =       v   e   c       1   6   ;       M   o   v   e   B   l
0107300    o   c   k   (   c   u   r   s 376 001  \0 311   G   o   r   ,
0107320        c   u   r   s   o   r   B   i   t   M   a   p   ,       1
0107340    6   )  \r   M   o   v   e   B   l   o   c   k   (   c   u   r
0107360    s   o   r   B   i   t   M   a   p   ,       t   a   b   l   e
0107400        [       0   ;       1   7   0   0   b   ;       3   7   4
0107420    0   b   ;       7   1   6   0   b   ;       6   0   6   0   b
0107440    ;       6   0   b  \r       1   6   0   b   ;       3   4   0
0107460    b   ;       7   0   0   b   ;       6   0   0   b   ;       6
0107500    0   0   b   ;       6   0   0   b   ;       0   ;       0   ;
0107520        6   0   0   b   ;       6   0   0   b       ]   ,       1
0107540    6   )  \r  \r   m   a   n   i   f   e   s   t       b   l   i
0107560    n   k   I   n   t   e   r   v   a   l       =       3   0  \r
0107600    l   e   t       t   i   m   e   r       =       n   i   l   ;
0107620        S   e   t   T   i   m   e   r   (   l   v       t   i   m
0107640    e   r   ,       b   l   i   n   k   I   n   t   e   r   v   a
0107660    l   )  \r   l   e   t       d   o   w   n       =       f   a
0107700    l   s   e  \r   l   e   t       o   k       =     376 001  \0
0107720  352 334   v   a   l   o   f  \r               [  \r            
0107740    t   e   s   t       u   t   i   l   I   n   >   >   U   t   i
0107760    l   I   n   .   y   e   l   l   o   w       e   q       0  \r
0110000                            i   f   s   o       d   o   w   n    
0110020    =       t   r   u   e  \r                           i   f   n
0110040    o   t       i   f       d   o   w   n       t   h   e   n    
0110060    [       W   s   (   "   Y   e   s   .   "   )   ;       r   e
0110100    s   u   l   t   i   s       t   r   u   e       ]  \r  \r    
0110120            u   n   l   e   s   s       E   n   d   o   f   s   (
0110140    k   e   y   s   )       s   w   i   t   c   h   o   n       G
0110160    e   t   s   (   k   e   y   s   )       i   n   t   o  \r    
0110200                        [  \r                           c   a   s
0110220    e       $   Y   :       c   a   s   e       $   y   :       c
0110240    a   s   e       $   *   N   :  \r                            
0110260            [       W   s   (   "   Y   e   s   .   "   )   ;    
0110300    r   e   s   u   l   t   i   s       t   r   u   e       ]  \r
0110320          376 001  \0 267 210                   c   a   s   e    
0110340    $   N   :       c   a   s   e       $   n   :       c   a   s
0110360    e       $   *   1   7   7   :  \r                            
0110400            [       W   s   (   "   N   o   .   "   )   ;       r
0110420    e   s   u   l   t   i   s       f   a   l   s   e       ]  \r
0110440                            d   e   f   a   u   l   t   :  \r    
0110460                                    [       W   s   (   "   Y   e
0110500    s       o   r       N   o   :       "   )   ;       e   n   d
0110520    c   a   s   e       ]  \r                           ]  \r  \r
0110540                i   f       T   i   m   e   r   H   a   s   E   x
0110560    p   i   r   e   d   (   l   v       t   i   m   e   r   )    
0110600    t   h   e   n  \r                           [  \r            
0110620                f   o   r       i       =       0       t   o    
0110640    1   5       d   o       c   u   r   s   o   r   B   i   t   M
0110660    a   p   !   i       =       n   o   t       c   u   r   s   o
0110700    r   B   i   t   M   a   p   !   i  \r                        
0110720    S   e   t   T   i   m   e 376 001  \0 217 270   r   (   l   v
0110740        t   i   m   e   r   ,       b   l   i   n   k   I   n   t
0110760    e   r   v   a   l   )  \r                           ]  \r  \r
0111000                B   l   o   c   k   (   )  \r               ]    
0111020    r   e   p   e   a   t  \r  \r   M   o   v   e   B   l   o   c
0111040    k   (   c   u   r   s   o   r   B   i   t   M   a   p   ,    
0111060    c   u   r   s   o   r   ,       1   6   )  \r   r   e   s   u
0111100    l   t   i   s       o   k  \r   ]  \r  \r   /   /   -   -   -
0111120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0111220    -   -   -   -   -   -   -   -   -  \r   a   n   d       W   s
0111240    s   (   s   t   r   e   a   m   ,       s   t   r   i   n   g
0111260    )       b   e  \r   /   /   -   -   -   -   -   -   -   -   -
0111300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0111320    -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0  \v
0111340  312   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0111360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0111400    -   -   -   -   -   -   -   -  \r               f   o   r    
0111420    i       =       1       t   o       s   t   r   i   n   g   >
0111440    >   S   t   r   i   n   g   .   l   e   n   g   t   h       d
0111460    o  \r                           P   u   t   s   (   s   t   r
0111500    e   a   m   ,       s   t   r   i   n   g   >   >   S   t   r
0111520    i   n   g   .   c   h   a   r   ^   i   )  \r  \r   /   /   -
0111540    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0111640    -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d    
0111660    W   s   (   s   t   r   i   n   g   )       b   e       W   s
0111700    s   (   d   s   p   ,       s   t   r   i   n   g   )  \r   /
0111720    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0111740    - 376  \0   >   X 221   -   -   -   -   -   -   -   -   -   -
0111760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0112040    -   -  \r  \r 377  \0  \0   G   a   t   e   C   o   n   U   s
0112060    e   r   .   b   c   p   l  \0 373 223  \f 315 240  \0  \0 376
0112100  001  \0 325 022   /   /       G   a   t   e   C   o   n   U   s
0112120    e   r   .   b   c   p   l       -   -       t   a   l   k   s
0112140        t   o       t   h   e       G   a   t   e   w   a   y    
0112160    c   o   n   t   r   o   l       p   r   o   c   e   s   s  \r
0112200   \r   /   /       L   a   s   t       m   o   d   i   f   i   e
0112220    d       M   a   r   c   h       6   ,       1   9   7   9    
0112240        1   0   :   4   4       P   M       b   y       B   o   g
0112260    g   s  \r  \r   g   e   t       "   P   u   p   0   .   d   e
0112300    c   l   "  \r   g   e   t       "   P   u   p   1   .   d   e
0112320    c   l   "  \r   g   e   t       "   G   a   t   e   C   o   n
0112340    S   e   r   v   .   d   e   c   l   "  \r  \r   e   x   t   e
0112360    r   n   a   l  \r   [  \r   /   /       o   u   t   g   o   i
0112400    n   g       p   r   o   c   e   d   u   r   e   s  \r   C   r
0112420    e   a   t   e   G   a   t   e   C   o   n   C   t   x   ;    
0112440    G   a   t   e   C   o   n   V   e   r   s   i   o   n   ;    
0112460    G   a   t   e   C   o   n   S   u   m   m   a   r   y  \r   R
0112500    e   s   t   a 376 001  \0 323 232   r   t   G   a   t   e   w
0112520    a   y   ;       H   a   l   t   G   a   t   e   w   a   y   ;
0112540        R   e   s   t   a   r   t   G   a   t   e   C   o   n   U
0112560    s   e   r  \r  \r   /   /       i   n   c   o   m   i   n   g
0112600        p   r   o   c   e   d   u   r   e   s  \r   O   p   e   n
0112620    L   e   v   e   l   1   S   o   c   k   e   t   ;       C   l
0112640    o   s   e   L   e   v   e   l   1   S   o   c   k   e   t   ;
0112660        G   e   t   B   u   f   ;       R   e   l   e   a   s   e
0112700    P   B   I  \r   Z   e   r   o   ;       M   o   v   e   B   l
0112720    o   c   k   ;       A   l   l   o   c   a   t   e   ;       F
0112740    r   e   e   ;       E   n   q   u   e   u   e  \r   R   e   a
0112760    d   C   a   l   e   n   d   a   r   ;       D   o   u   b   l
0113000    e   S   u   b   t   r   a   c   t   ;       D   i   v   i   d
0113020    e   3   2   x   1   6  \r   I   n   i   t   i   a   l   i   z
0113040    e   C   o   n   t   e   x   t   ;       B   l   o   c   k   ;
0113060        S   e   t   T   i   m   e   r   ;       T   i   m   e   r
0113100    H   a   s   E   x   p   i   r   e 376 001  \0 324 201   d  \r
0113120    W   s   ;       W   s   s   ;       P   u   t   T   e   m   p
0113140    l   a   t   e   ;       C   o   n   f   i   r   m  \r   S   e
0113160    n   d   C   o   m   m   a   n   d  \r  \r   /   /       i   n
0113200    c   o   m   i   n   g       s   t   a   t   i   c   s  \r   s
0113220    y   s   Z   o   n   e   ;       c   t   x   Q   ;       g   c
0113240    N   e   t   ;       g   c   H   o   s   t   ;       g   c   N
0113260    a   m   e   ;       o   l   d   S   t   a   t   s   Q  \r   ]
0113300   \r  \r   s   t   a   t   i   c       @   g   c   u  \r  \r   s
0113320    t   r   u   c   t   u   r   e       G   C   U   :  \t  \t   /
0113340    /       g   c   u       -   >       t   h   i   s       '   g
0113360    l   o   b   a   l       f   r   a   m   e   '       f   o   r
0113400        G   a   t   e       C   o   n   t   r   o   l       U   s
0113420    e   r  \r   [  \r   s   o   c       w   o   r   d  \t  \t   /
0113440    /       -   >       P   u   p   S   o   c  \r   s   t   a   t
0113460    s       w   o   r   d  \t  \t   /   /       -   >       G   a
0113500    t   e   C   o   n   t   r   o   l       S   t   a   t 376 001
0113520   \0 251 026   s       b   l   o   c   k  \r   t   i   m   e   r
0113540        w   o   r   d  \t  \t   /   /       u   p   d   a   t   e
0113560        s   t   a   t   s       w   h   e   n       t   h   i   s
0113600        e   x   p   i   r   e   s  \r   ]  \r   m   a   n   i   f
0113620    e   s   t       l   e   n   G   C   U       =       s   i   z
0113640    e       G   C   U   /   1   6  \r  \r   /   /   -   -   -   -
0113660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0113760    -   -   -   -   -   -   -   -  \r   l   e   t       C   r   e
0114000    a   t   e   G   a   t   e   C   o   n   C   t   x   (   )    
0114020    b   e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0114040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0114120    -   -   - 376 001  \0   M 205   -   -   -   -   -   -   -   -
0114140    -   -   -   -   -   -  \r   [  \r   E   n   q   u   e   u   e
0114160    (   c   t   x   Q   ,       I   n   i   t   i   a   l   i   z
0114200    e   C   o   n   t   e   x   t   (   A   l   l   o   c   a   t
0114220    e   (   s   y   s   Z   o   n   e   ,       1   5   0   )   ,
0114240        1   5   0   ,       G   a   t   e   C   o   n   C   t   x
0114260    )   )  \r   g   c   u       =       A   l   l   o   c   a   t
0114300    e   (   s   y   s   Z   o   n   e   ,       l   e   n   G   C
0114320    U   )   ;       Z   e   r   o   (   g   c   u   ,       l   e
0114340    n   G   C   U   )  \r   g   c   u   >   >   G   C   U   .   s
0114360    o   c       =       A   l   l   o   c   a   t   e   (   s   y
0114400    s   Z   o   n   e   ,       l   e   n   P   u   p   S   o   c
0114420    )   ;       O   p   e   n   L   e   v   e   l   1   S   o   c
0114440    k   e   t   (   g   c   u   >   >   G   C   U   .   s   o   c
0114460    )  \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -   -
0114500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0114520    -   -   -   -   -   -   -   - 376 001  \0   = 343   -   -   -
0114540    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0114600    -   -   -   -   -   -   -   -  \r   a   n   d       R   e   s
0114620    t   a   r   t   G   a   t   e   C   o   n   U   s   e   r   (
0114640    )       b   e  \r   /   /   -   -   -   -   -   -   -   -   -
0114660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0114760    -   -   -  \r   [  \r   S   e   t   T   i   m   e   r   (   l
0115000    v       g   c   u   >   >   G   C   U   .   t   i   m   e   r
0115020    ,       0   )  \r   i   f       g   c   u   >   >   G   C   U
0115040    .   s   t   a   t   s       n   e       0       t   h   e   n
0115060   \r               [       E   n   q   u   e   u   e   (   o   l
0115100    d   S   t   a   t   s   Q   ,       g   c   u   >   >   G   C
0115120    U   .   s   t   a   t   s   )   ;       g   c   u 376 001  \0
0115140  260 321   >   >   G   C   U   .   s   t   a   t   s       =    
0115160    0       ]  \r   ]  \r  \f  \r   /   /   -   -   -   -   -   -
0115200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0115300    -   -   -   -   -   -  \r   a   n   d       G   a   t   e   C
0115320    o   n   C   t   x   (   c   t   x   )       b   e           /
0115340    /   a       c   o   n   t   e   x   t  \r   /   /   -   -   -
0115360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0115460    -   -   -   -   -   -   -   -   -  \r   [  \r   B   l   o   c
0115500    k   (   )       r   e   p   e   a   t   u   n   t   i   l    
0115520    T   i   m   e   r   H   a   s   E   x   p   i   r   e   d   (
0115540    l   v 376 001  \0 330 201       g   c   u   >   >   G   C   U
0115560    .   t   i   m   e   r   )       &       g   c   H   o   s   t
0115600        n   e       0  \r   S   e   t   T   i   m   e   r   (   l
0115620    v       g   c   u   >   >   G   C   U   .   t   i   m   e   r
0115640    ,       5   0   0   )  \r   l   e   t       p   b   i       =
0115660        S   e   n   d   C   o   m   m   a   n   d   (   G   e   t
0115700    B   u   f   (   g   c   u   >   >   G   C   U   .   s   o   c
0115720    )   ,       p   t   S   t   a   t   s   ,       p   u   p   O
0115740    v   B   y   t   e   s   ,       1   )  \r   i   f       p   b
0115760    i       n   e       0       t   h   e   n  \r               [
0116000   \r               l   e   t       s   t   a   t   s       =    
0116020    l   v       p   b   i   >   >   P   B   I   .   p   u   p   .
0116040    w   o   r   d   s  \r               i   f       p   b   i   >
0116060    >   P   B   I   .   p   u   p   .   t   y   p   e       e   q
0116100        p   t   A   c   k       &  \r                   s   t   a
0116120    t   s   >   >   S   t   a   t   s   .   v   e   r   s   i   o
0116140    n       e   q       g   c 376 001  \0 361 241   S   t   a   t
0116160    s   V   e   r   s   i   o   n       t   h   e   n  \r        
0116200                    [  \r                           i   f       g
0116220    c   u   >   >   G   C   U   .   s   t   a   t   s       t   h
0116240    e   n       E   n   q   u   e   u   e   (   o   l   d   S   t
0116260    a   t   s   Q   ,       g   c   u   >   >   G   C   U   .   s
0116300    t   a   t   s   )  \r                           l   e   t    
0116320    l   e   n   S   t   a   t   B   l   o   c   k       =       (
0116340    p   b   i   >   >   P   B   I   .   p   u   p   .   l   e   n
0116360    g   t   h   -   p   u   p   O   v   B   y   t   e   s   +   1
0116400    )   /   2  \r                           g   c   u   >   >   G
0116420    C   U   .   s   t   a   t   s       =       A   l   l   o   c
0116440    a   t   e   (   s   y   s   Z   o   n   e   ,       l   e   n
0116460    S   t   a   t   B   l   o   c   k   )  \r                    
0116500        M   o   v   e   B   l   o   c   k   (   g   c   u   >   >
0116520    G   C   U   .   s   t   a   t   s   ,       l   v       p   b
0116540    i   >   >   P   B   I   .   p   u   p   .   w 376 001  \0 372
0116560  311   o   r   d   s   ,       l   e   n   S   t   a   t   B   l
0116600    o   c   k   )  \r                           ]  \r            
0116620    R   e   l   e   a   s   e   P   B   I   (   p   b   i   )  \r
0116640                ]  \r   ]       r   e   p   e   a   t  \r  \r   /
0116660    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0116700    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0116760    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n
0117000    d       G   a   t   e   C   o   n   V   e   r   s   i   o   n
0117020    (   s   t   r   e   a   m   )       b   e  \r   /   /   -   -
0117040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0117140    -   -   -   -   -   -   -   -   -   -  \r   [  \r   l   e   t
0117160      376 001  \0   D 363   s   t   a   t   s       =       g   c
0117200    u   >   >   G   C   U   .   s   t   a   t   s   ;       i   f
0117220        s   t   a   t   s       e   q       0       r   e   t   u
0117240    r   n  \r   P   u   t   T   e   m   p   l   a   t   e   (   s
0117260    t   r   e   a   m   ,       "   $   S       [   $   U   O   #
0117300    $   U   O   #   ]   :       $   S   "   ,       g   c   N   a
0117320    m   e   ,       g   c   N   e   t   ,       g   c   H   o   s
0117340    t   ,  \r       l   v       s   t   a   t   s   >   >   S   t
0117360    a   t   s   .   v   e   r   s   i   o   n   T   e   x   t   )
0117400   \r   i   f       s   t   a   t   s   >   >   S   t   a   t   s
0117420    .   s   t   a   r   t   T   i   m   e   ^   0       n   e    
0117440    0       t   h   e   n  \r               [  \r               l
0117460    e   t       i   n   t   e   r   v   a   l       =       v   e
0117500    c       1   ;       R   e   a   d   C   a   l   e   n   d   a
0117520    r   (   i   n   t   e   r   v   a   l   )  \r               D
0117540    o   u   b   l   e   S   u   b   t   r   a   c   t   (   i   n
0117560    t   e   r   v   a   l 376 001  \0 036   6   ,       l   v    
0117600    s   t   a   t   s   >   >   S   t   a   t   s   .   s   t   a
0117620    r   t   T   i   m   e   )  \r               l   e   t       s
0117640    e   c   s       =       D   i   v   i   d   e   3   2   x   1
0117660    6   (   i   n   t   e   r   v   a   l   ,       6   0   )  \r
0117700                l   e   t       m   i   n   s       =       D   i
0117720    v   i   d   e   3   2   x   1   6   (   i   n   t   e   r   v
0117740    a   l   ,       6   0   )  \r               P   u   t   T   e
0117760    m   p   l   a   t   e   (   s   t   r   e   a   m   ,       "
0120000        u   p       $   D   :   $   2   F   0   D   :   $   2   F
0120020    0   D   "   ,       i   n   t   e   r   v   a   l   !   1   ,
0120040        m   i   n   s   ,       s   e   c   s   )  \r            
0120060    ]  \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -   -
0120100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0120160    -   -   -   -   -   -   -   -   -   -   - 376 001  \0 247 326
0120200    -   -   -   -   -   -   -   -  \r   a   n   d       G   a   t
0120220    e   C   o   n   S   u   m   m   a   r   y   (   s   t   r   e
0120240    a   m   )       b   e  \r   /   /   -   -   -   -   -   -   -
0120260    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0120360    -   -   -   -   -  \r   [  \r   l   e   t       s   t   a   t
0120400    s       =       g   c   u   >   >   G   C   U   .   s   t   a
0120420    t   s   ;       i   f       s   t   a   t   s       e   q    
0120440    0       r   e   t   u   r   n  \r   P   u   t   T   e   m   p
0120460    l   a   t   e   (   s   t   r   e   a   m   ,       "   F   r
0120500    e   e       P   B   I   s   :       $   D           "   ,    
0120520    s   t   a   t   s   >   >   S   t   a   t   s   .   f   r   e
0120540    e   P   B   I   s   )  \r   i   f       s   t   a   t   s   >
0120560    >   S   t   a   t   s   .   f   r   e   e   P   a   g   e   s
0120600  376 001  \0 221 267       n   e       0       t   h   e   n  \r
0120620                P   u   t   T   e   m   p   l   a   t   e   (   s
0120640    t   r   e   a   m   ,       "   F   r   e   e       P   a   g
0120660    e   s   :       $   D           "   ,       s   t   a   t   s
0120700    >   >   S   t   a   t   s   .   f   r   e   e   P   a   g   e
0120720    s   )  \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -
0120740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0121040    -   -   -   -  \r   a   n   d       R   e   s   t   a   r   t
0121060    G   a   t   e   w   a   y   (   )       b   e       G   C   S
0121100    C   o   m   m   a   n   d   (   "   *   N   R   e   s   t   a
0121120    r   t       G   a   t   e   w   a   y   "   ,       p   t   R
0121140    e   s   t   a   r   t   )  \r   /   /   -   -   -   -   -   -
0121160    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0121200    -   -   -   -   - 376 001  \0   V   +   -   -   -   -   -   -
0121220    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0121260    -   -   -   -   -   -   -   -   -   -   -  \r  \r   /   /   -
0121300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0121400    -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d    
0121420    H   a   l   t   G   a   t   e   w   a   y   (   )       b   e
0121440        G   C   S   C   o   m   m   a   n   d   (   "   *   N   H
0121460    a   l   t       G   a   t   e   w   a   y   "   ,       p   t
0121500    H   a   l   t   )  \r   /   /   -   -   -   -   -   -   -   -
0121520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0121600    -   -   -   -   -   -   -   -   -   - 376 001  \0   l   U   -
0121620    -   -   -   -   -   -   -   -   -  \r  \r   /   /   -   -   -
0121640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0121740    -   -   -   -   -   -   -   -   -  \r   a   n   d       G   C
0121760    S   C   o   m   m   a   n   d   (   s   t   r   i   n   g   ,
0122000        t   y   p   e   )       b   e  \r   /   /   -   -   -   -
0122020    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0122120    -   -   -   -   -   -   -   -  \r   [  \r   u   n   l   e   s
0122140    s       C   o   n   f   i   r   m   (   s   t   r   i   n   g
0122160    )       r   e   t   u   r   n  \r   l   e   t       s   o   c
0122200        =       v   e   c       l   e   n   P   u   p   S   o 376
0122220   \0 347   O 211   c   ;       O   p   e   n   L   e   v   e   l
0122240    1   S   o   c   k   e   t   (   s   o   c   )  \r   l   e   t
0122260        p   b   i       =       S   e   n   d   C   o   m   m   a
0122300    n   d   (   G   e   t   B   u   f   (   s   o   c   )   ,    
0122320    t   y   p   e   ,       p   u   p   O   v   B   y   t   e   s
0122340    )  \r   i   f       p   b   i       e   q       0       %    
0122360    p   b   i   >   >   P   B   I   .   p   u   p   .   t   y   p
0122400    e       n   e       p   t   A   c   k       t   h   e   n  \r
0122420                W   s   (   "   *   N   T   h   e       G   a   t
0122440    e   w   a   y       C   o   n   t   r   o   l       S   e   r
0122460    v   e   r       d   o   e   s   n   '   t       a   n   s   w
0122500    e   r   .   "   )  \r   i   f       p   b   i       t   h   e
0122520    n       R   e   l   e   a   s   e   P   B   I   (   p   b   i
0122540    )  \r   C   l   o   s   e   L   e   v   e   l   1   S   o   c
0122560    k   e   t   (   s   o   c   )  \r   ]  \r 377  \0  \0   G   a
0122600    t   e   C   o   n   R   o   u   t   e   .   b   c   p   l  \0
0122620  373 233   .   n 376  \0  \0 376 001  \0 355 307   /   /       G
0122640    a   t   e   C   o   n   R   o   u   t   e   .   b   c   p   l
0122660        -   -       t   a   l   k   s       t   o       t   h   e
0122700        G   a   t   e   w   a   y       f   o   r   w   a   r   d
0122720    e   r       p   r   o   c   e   s   s  \r   /   /       L   a
0122740    s   t       m   o   d   i   f   i   e   d       J   u   l   y
0122760        2   ,       1   9   8   3           1   0   :   0   6    
0123000    P   M       b   y       B   o   g   g   s  \r  \r   g   e   t
0123020        "   P   u   p   0   .   d   e   c   l   "  \r   g   e   t
0123040        "   P   u   p   1   .   d   e   c   l   "  \r   g   e   t
0123060        "   G   a   t   e   F   o   r   w   a   r   d   .   d   e
0123100    c   l   "  \r  \r   e   x   t   e   r   n   a   l  \r   [  \r
0123120    /   /       o   u   t   g   o   i   n   g       p   r   o   c
0123140    e   d   u   r   e   s  \r   C   r   e   a   t   e   R   o   u
0123160    t   e   C   t   x   ;       R   e   s   t   a   r   t   R   o
0123200    u   t   e   ;       R   o   u   t   e  \r   R   o   u   t   e
0123220    S   u   m   m   a   r   y   ;       T   r   a 376 001  \0 016
0123240  033   n   s   i   t   M   a   t   r   i   x   ;       G   e   t
0123260    N   e   t   T   a   b   l   e  \r  \r   /   /       i   n   c
0123300    o   m   i   n   g       p   r   o   c   e   d   u   r   e   s
0123320   \r   O   p   e   n   L   e   v   e   l   1   S   o   c   k   e
0123340    t   ;       C   l   o   s   e   L   e   v   e   l   1   S   o
0123360    c   k   e   t   ;       G   e   t   B   u   f   ;       R   e
0123400    l   e   a   s   e   P   B   I  \r   I   n   i   t   i   a   l
0123420    i   z   e   C   o   n   t   e   x   t   ;       B   l   o   c
0123440    k   ;       S   e   t   T   i   m   e   r   ;       T   i   m
0123460    e   r   H   a   s   E   x   p   i   r   e   d  \r   Z   e   r
0123500    o   ;       M   o   v   e   B   l   o   c   k   ;       A   l
0123520    l   o   c   a   t   e   ;       F   r   e   e   ;       E   n
0123540    q   u   e   u   e   ;       D   e   q   u   e   u   e   ;    
0123560    R   e   t   u   r   n   F   r   o   m  \r   T   o   p   L   e
0123600    v   e   l   ;       R   e   s   e   t   C   m   d   M   e   n
0123620    u   ;       C   r   e   a   t   e   C   m   d   B   o   x   ;
0123640      376 001  \0 376 303   B   o   x   P   r   o   c  \r   W   s
0123660    ;       W   s   s   ;       P   u   t   s   ;       P   u   t
0123700    T   e   m   p   l   a   t   e  \r   S   e   n   d   C   o   m
0123720    m   a   n   d   ;       H   E   n   u   m   e   r   a   t   e
0123740   \r  \r   /   /       i   n   c   o   m   i   n   g       s   t
0123760    a   t   i   c   s  \r   d   s   p   ;       c   t   x   Q   ;
0124000        s   y   s   Z   o   n   e   ;       p   u   p   R   T   ;
0124020        g   c   H   o   s   t   ;       o   l   d   S   t   a   t
0124040    s   Q  \r   ]  \r  \r   s   t   a   t   i   c       @   r   u
0124060   \r  \r   s   t   r   u   c   t   u   r   e       R   U   :  \t
0124100   \t   /   /       r   u       -   >       t   h   i   s       '
0124120    g   l   o   b   a   l       f   r   a   m   e   '       f   o
0124140    r       t   h   i   s       m   o   d   u   l   e  \r   [  \r
0124160    s   o   c       w   o   r   d  \t  \t   /   /       -   >    
0124200    P   u   p   S   o   c  \r   s   t   a   t   s       w   o   r
0124220    d  \t  \t   /   /       -   >       R   o   u   t   e   r    
0124240    S   t   a   t   s     376 001  \0 006   2   b   l   o   c   k
0124260   \r   t   i   m   e   r       w   o   r   d  \t  \t   /   /    
0124300    u   p   d   a   t   e       s   t   a   t   s       w   h   e
0124320    n       t   h   i   s       e   x   p   i   r   e   s  \r   ]
0124340   \r   m   a   n   i   f   e   s   t       l   e   n   R   U    
0124360    =       s   i   z   e       R   U   /   1   6  \r  \r   /   /
0124400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0124500    -   -   -   -   -   -   -   -   -   -   -   -  \r   l   e   t
0124520        C   r   e   a   t   e   R   o   u   t   e   C   t   x   (
0124540    )       b   e  \r   /   /   -   -   -   -   -   -   -   -   -
0124560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0124640    -   -   -   -   -   -   -   -   -   -   - 376 001  \0 263 017
0124660    -   -   -   -   -   -   -   -  \r   [  \r   E   n   q   u   e
0124700    u   e   (   c   t   x   Q   ,       I   n   i   t   i   a   l
0124720    i   z   e   C   o   n   t   e   x   t   (   A   l   l   o   c
0124740    a   t   e   (   s   y   s   Z   o   n   e   ,       1   5   0
0124760    )   ,       1   5   0   ,       R   o   u   t   e   C   t   x
0125000    )   )  \r   r   u       =       A   l   l   o   c   a   t   e
0125020    (   s   y   s   Z   o   n   e   ,       l   e   n   R   U   )
0125040    ;       Z   e   r   o   (   r   u   ,       l   e   n   R   U
0125060    )  \r   r   u   >   >   R   U   .   s   o   c       =       A
0125100    l   l   o   c   a   t   e   (   s   y   s   Z   o   n   e   ,
0125120        l   e   n   P   u   p   S   o   c   )   ;       O   p   e
0125140    n   L   e   v   e   l   1   S   o   c   k   e   t   (   r   u
0125160    >   >   R   U   .   s   o   c   )  \r   ]  \r  \r   /   /   -
0125200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0125260  376 001  \0 332 004   -   -   -   -   -   -   -   -   -   -   -
0125300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0125320   \r   a   n   d       R   e   s   t   a   r   t   R   o   u   t
0125340    e   (   )       b   e  \r   /   /   -   -   -   -   -   -   -
0125360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0125460    -   -   -   -   -  \r   [  \r   S   e   t   T   i   m   e   r
0125500    (   l   v       r   u   >   >   R   U   .   t   i   m   e   r
0125520    ,       0   )  \r   i   f       r   u   >   >   R   U   .   s
0125540    t   a   t   s       n   e       0       t   h   e   n  \r    
0125560            [       E   n   q   u   e   u   e   (   o   l   d   S
0125600    t   a   t   s   Q   ,       r   u   >   >   R   U   .   s   t
0125620    a   t   s   )   ;       r   u   >   >   R   U   .   s   t   a
0125640    t   s       =       0       ]  \r   ]  \r  \r   /   /   -   -
0125660    -   -   -   -   - 376 001  \0 204 220   -   -   -   -   -   -
0125700    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0125760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0126000    a   n   d       R   o   u   t   e   (   )       b   e  \r   /
0126020    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0126040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0126120    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r
0126140    R   e   s   e   t   C   m   d   M   e   n   u   (   )  \r   C
0126160    r   e   a   t   e   C   m   d   B   o   x   (   T   o   p   L
0126200    e   v   e   l   ,       "   T   o   p   L   e   v   e   l   "
0126220    )  \r   i   f       g   c   H   o   s   t       n   e       0
0126240        t   h   e   n       C   r   e   a   t   e   C   m   d   B
0126260    o   x   (   F   r   n   R   o   u   t 376 001  \0  \0 257   i
0126300    n   g   T   a   b   l   e   ,       "   F   r   n   R   o   u
0126320    t   i   n   g   T   a   b   l   e   "   )  \r   C   r   e   a
0126340    t   e   C   m   d   B   o   x   (   L   c   l   R   o   u   t
0126360    i   n   g   T   a   b   l   e   ,       "   L   c   l   R   o
0126400    u   t   i   n   g   T   a   b   l   e   "   )  \r   /   /    
0126420    R   e   s   e   t   C   m   d   M   e   n   u       d   e   s
0126440    t   r   o   y   e   d       t   h   e       B   o   x   Q    
0126460    w   h   i   c   h       B   o   x   P   r   o   c       i   s
0126500        f   o   l   l   o   w   i   n   g   .  \r   /   /       I
0126520    f       w   e       j   u   s   t       r   e   t   u   r   n
0126540        n   o   w   ,       B   o   x   P   r   o   c       w   i
0126560    l   l       g   e   t       h   o   r   r   i   b   l   y    
0126600    c   o   n   f   u   s   e   d   .  \r   /   /       S   o    
0126620    d   o   n   '   t       l   e   t       i   t       c   o   n
0126640    t   i   n   u   e   :       f   o   r   c   e       a       r
0126660    e   t   u   r   n       f   r   o   m       B   o   x   P 376
0126700  001  \0   N 217   r   o   c   .  \r   R   e   t   u   r   n   F
0126720    r   o   m   (   B   o   x   P   r   o   c   )  \r   ]  \r  \f
0126740   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0126760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0127040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0127060    a   n   d       R   o   u   t   e   C   t   x   (   c   t   x
0127100    )       b   e           /   /   a       c   o   n   t   e   x
0127120    t  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0127140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0127240   \r   [  \r   B   l   o   c   k   (   )       r   e   p   e   a
0127260    t   u   n   t   i   l       T   i   m   e   r   H   a   s   E
0127300    x   p   i   r 376 001  \0 304 237   e   d   (   l   v       r
0127320    u   >   >   R   U   .   t   i   m   e   r   )       &       g
0127340    c   H   o   s   t       n   e       0  \r   S   e   t   T   i
0127360    m   e   r   (   l   v       r   u   >   >   R   U   .   t   i
0127400    m   e   r   ,       5   0   0   )  \r   l   e   t       p   b
0127420    i       =       G   e   t   B   u   f   (   r   u   >   >   R
0127440    U   .   s   o   c   )  \r   p   b   i   >   >   P   B   I   .
0127460    p   u   p   .   d   P   o   r   t   .   s   o   c   k   e   t
0127500    ^   2       =       p   s   R   o   u   t   e   I   n   f   o
0127520   \r   p   b   i       =       S   e   n   d   C   o   m   m   a
0127540    n   d   (   p   b   i   ,       p   t   S   t   a   t   s   R
0127560    e   q   u   e   s   t   ,       p   u   p   O   v   B   y   t
0127600    e   s   ,       (   r   u   >   >   R   U   .   s   t   a   t
0127620    s   ?       1   ,       3   )   )  \r   i   f       p   b   i
0127640        n   e       0       t   h   e   n  \r               [  \r
0127660                l   e   t       s   t   a   t   s       =       l
0127700    v       p   b   i   >   >   P   B 376 001  \0 031 242   I   .
0127720    p   u   p   .   w   o   r   d   s  \r               i   f    
0127740    p   b   i   >   >   P   B   I   .   p   u   p   .   t   y   p
0127760    e       e   q       p   t   S   t   a   t   s   R   e   p   l
0130000    y       &  \r                   s   t   a   t   s   >   >   S
0130020    t   a   t   s   .   v   e   r   s   i   o   n       e   q    
0130040    g   f   S   t   a   t   s   V   e   r   s   i   o   n       t
0130060    h   e   n  \r                           [  \r                
0130100            i   f       r   u   >   >   R   U   .   s   t   a   t
0130120    s       t   h   e   n       E   n   q   u   e   u   e   (   o
0130140    l   d   S   t   a   t   s   Q   ,       r   u   >   >   R   U
0130160    .   s   t   a   t   s   )  \r                           l   e
0130200    t       l   e   n   S   t   a   t   B   l   o   c   k       =
0130220        (   p   b   i   >   >   P   B   I   .   p   u   p   .   l
0130240    e   n   g   t   h   -   p   u   p   O   v   B   y   t   e   s
0130260    )   /   2  \r                           r   u   >   >   R   U
0130300    .   s   t   a   t   s       =       A   l   l   o   c 376 001
0130320   \0 231   g   a   t   e   (   s   y   s   Z   o   n   e   ,    
0130340    l   e   n   S   t   a   t   B   l   o   c   k   )  \r        
0130360                    M   o   v   e   B   l   o   c   k   (   r   u
0130400    >   >   R   U   .   s   t   a   t   s   ,       s   t   a   t
0130420    s   ,       l   e   n   S   t   a   t   B   l   o   c   k   )
0130440   \r                           ]  \r               R   e   l   e
0130460    a   s   e   P   B   I   (   p   b   i   )  \r               ]
0130500   \r   ]       r   e   p   e   a   t  \r  \r   /   /   -   -   -
0130520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0130620    -   -   -   -   -   -   -   -   -  \r   a   n   d       R   o
0130640    u   t   e   S   u   m   m   a   r   y   (   s   t   r   e   a
0130660    m   )       b   e  \r   /   /   -   -   -   -   -   -   -   -
0130700    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0130720    -   -   - 376 001  \0   < 027   -   -   -   -   -   -   -   -
0130740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0131000    -   -   -   -   -   -   -   -   -  \r   [  \r   i   f       r
0131020    u   >   >   R   U   .   s   t   a   t   s       n   e       0
0131040        t   h   e   n  \r               P   u   t   T   e   m   p
0131060    l   a   t   e   (   s   t   r   e   a   m   ,       "   R   o
0131100    u   t   e   :       $   E   U   D           "   ,       l   v
0131120        r   u   >   >   R   U   .   s   t   a   t   s   >   >   S
0131140    t   a   t   s   .   r   o   u   t   e   R   e   q   s   )  \r
0131160    ]  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0131200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0131300    -  \r   a   n   d       G   e   t   N   e   t   T   a   b   l
0131320    e   (   v   )       =       v 376 001  \0 332   B   a   l   o
0131340    f  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0131360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0131460   \r   /   /       c   a   l   l   e   d       f   r   o   m    
0131500    L   e   v   e   l   0   S   t   a   t   s       t   o       g
0131520    e   t       i   n   f   o       t   o       b   u   i   l   d
0131540        i   t   s       m   e   n   u   .  \r   [  \r   i   f    
0131560    r   u   >   >   R   U   .   s   t   a   t   s       e   q    
0131600    0       r   e   s   u   l   t   i   s       f   a   l   s   e
0131620   \r   v   !   0       =       r   u   >   >   R   U   .   s   t
0131640    a   t   s   >   >   S   t   a   t   s   .   n   u   m   N   e
0131660    t   s  \r   v   !   1       =       r   u   >   >   R   U   .
0131700    s   t   a   t   s       +       l   e   n   S   t   a   t   s
0131720   \r   ]  \r  \f  \r   /   /   -   -   -   -   -   - 376 001  \0
0131740  245   9   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0131760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0132040    -   -   -   -   -   -   -   -  \r   a   n   d       T   r   a
0132060    n   s   i   t   M   a   t   r   i   x   (   s   t   r   e   a
0132100    m   )       b   e  \r   /   /   -   -   -   -   -   -   -   -
0132120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0132220    -   -   -   -  \r   [  \r   l   e   t       s   t   a   t   s
0132240        =       r   u   >   >   R   U   .   s   t   a   t   s   ;
0132260        i   f       s   t   a   t   s       e   q       0       r
0132300    e   t   u   r   n  \r   l   e   t       n   e   t   T   a   b
0132320    l   e       =       s   t   a   t   s       +       l   e   n
0132340    S   t 376 001  \0   C   &   a   t   s  \r   l   e   t       n
0132360    u   m   N   e   t   s       =       s   t   a   t   s   >   >
0132400    S   t   a   t   s   .   n   u   m   N   e   t   s  \r  \r   W
0132420    s   s   (   s   t   r   e   a   m   ,       "                
0132440        D   i   s   c   a   r   d   "   )  \r   f   o   r       i
0132460        =       0       t   o       n   u   m   N   e   t   s   -
0132500    1       i   f       n   e   t   T   a   b   l   e   !   i    
0132520    n   e       0       t   h   e   n      \r               P   u
0132540    t   T   e   m   p   l   a   t   e   (   s   t   r   e   a   m
0132560    ,       "   $   1   0   U   O   "   ,       n   e   t   T   a
0132600    b   l   e   !   i   )  \r  \r   f   o   r       s   N   e   t
0132620        =       0       t   o       n   u   m   N   e   t   s   -
0132640    1       d   o  \r               [  \r               i   f    
0132660    n   e   t   T   a   b   l   e   !   s   N   e   t       e   q
0132700        0       l   o   o   p  \r               P   u   t   T   e
0132720    m   p   l   a   t   e   (   s   t   r   e   a   m   ,       "
0132740    *   N   $   3   O   "   , 376 001  \0   b   b       n   e   t
0132760    T   a   b   l   e   !   s   N   e   t   )  \r               P
0133000    r   i   n   t   C   o   u   n   t   (   s   t   r   e   a   m
0133020    ,       s   t   a   t   s   ,       (   n   e   t   T   a   b
0133040    l   e   !   s   N   e   t   )   &   3   7   7   b   ,       0
0133060    )           /   /   d   i   s   c   a   r   d       c   o   l
0133100    u   m   n  \r               f   o   r       d   N   e   t    
0133120    =       0       t   o       n   u   m   N   e   t   s   -   1
0133140        i   f       n   e   t   T   a   b   l   e   !   d   N   e
0133160    t       n   e       0       t   h   e   n  \r                
0133200            P   r   i   n   t   C   o   u   n   t   (   s   t   r
0133220    e   a   m   ,       s   t   a   t   s   ,       (   n   e   t
0133240    T   a   b   l   e   !   s   N   e   t   )   &   3   7   7   b
0133260    ,       (   n   e   t   T   a   b   l   e   !   d   N   e   t
0133300    )   &   3   7   7   b   )  \r               ]  \r   ]  \r  \r
0133320    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0133340    -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0   3
0133360  337   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0133400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0133440    -   -   -  \r   a   n   d       P   r   i   n   t   C   o   u
0133460    n   t   (   s   t   r   e   a   m   ,       s   t   a   t   s
0133500    ,       s   N   e   t   ,       d   N   e   t   )       b   e
0133520   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0133540    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0133620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0133640    [  \r   f   o   r       i       =       0       t   o       s
0133660    t   a   t   s   >   >   S   t   a   t   s   .   n   u   m   T
0133700    M   E   s   -   1       d   o  \r               [  \r        
0133720        l   e   t       t   m   e       =       s   t   a   t   s
0133740        +       l   e   n   S   t   a   t   s       +       s   t
0133760    a 376 001  \0   }   {   t   s   >   >   S   t   a   t   s   .
0134000    n   u   m   N   e   t   s       +       i   *   l   e   n   T
0134020    M   E  \r               i   f       t   m   e   >   >   T   M
0134040    E   .   s   N   e   t       e   q       s   N   e   t       &
0134060        t   m   e   >   >   T   M   E   .   d   N   e   t       e
0134100    q       d   N   e   t       t   h   e   n  \r                
0134120            [  \r                           P   u   t   T   e   m
0134140    p   l   a   t   e   (   s   t   r   e   a   m   ,       "   $
0134160    1   0   U   E   D   "   ,       l   v       t   m   e   >   >
0134200    T   M   E   .   c   o   u   n   t   )  \r                    
0134220        r   e   t   u   r   n  \r                           ]  \r
0134240                ]  \r   W   s   s   (   s   t   r   e   a   m   ,
0134260        "                                   -       "   )  \r   ]
0134300   \r  \f  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0134320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0134360    -   -   -   -   -   - 376 001  \0 025 363   -   -   -   -   -
0134400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0134420    -   -   -   -   -   -  \r   a   n   d       F   r   n   R   o
0134440    u   t   i   n   g   T   a   b   l   e   (   )       b   e  \r
0134460    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0134500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0134560    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   [
0134600   \r   l   e   t       s   o   c       =       v   e   c       l
0134620    e   n   P   u   p   S   o   c   ;       O   p   e   n   L   e
0134640    v   e   l   1   S   o   c   k   e   t   (   s   o   c   )  \r
0134660    l   e   t       p   b   i       =       G   e   t   B   u   f
0134700    (   s   o   c   )  \r   p   b   i   >   >   P   B   I   .   p
0134720    u   p   .   d   P   o   r   t   .   s   o   c   k   e   t   ^
0134740    2       =       p   s   R   o   u   t   e   I   n   f   o  \r
0134760    p   b   i       =       S   e   n   d   C 376 001  \0 260 213
0135000    o   m   m   a   n   d   (   p   b   i   ,       p   t   R   o
0135020    u   t   e   R   e   q   u   e   s   t   ,       p   u   p   O
0135040    v   B   y   t   e   s   ,       1   )  \r   i   f       p   b
0135060    i       t   h   e   n  \r               [  \r               E
0135100    n   q   u   e   u   e   (   l   v       s   o   c   >   >   P
0135120    u   p   S   o   c   .   i   Q   ,       p   b   i   )  \r    
0135140            R   T   T   i   t   l   e   (   "   *   N   F   o   r
0135160    e   i   g   n       r   o   u   t   i   n   g       t   a   b
0135200    l   e   :   "   )  \r               ]  \r   l   e   t       c
0135220    o   u   n   t       =       0  \r   l   e   t       t   i   m
0135240    e   r       =       n   i   l   ;       S   e   t   T   i   m
0135260    e   r   (   l   v       t   i   m   e   r   ,       1   0   0
0135300    0   )           /   /       5       s   e   c   o   n   d   s
0135320   \r               [  \r               B   l   o   c   k   (   )
0135340        r   e   p   e   a   t   u   n   t   i   l       s   o   c
0135360    >   >   P   u   p   S   o   c   .   i   Q   .   h   e   a   d
0135400  376 001  \0   $ 222       n   e       0       %       T   i   m
0135420    e   r   H   a   s   E   x   p   i   r   e   d   (   l   v    
0135440    t   i   m   e   r   )  \r               l   e   t       p   b
0135460    i       =       D   e   q   u   e   u   e   (   l   v       s
0135500    o   c   >   >   P   u   p   S   o   c   .   i   Q   .   h   e
0135520    a   d   )   ;       i   f       p   b   i       e   q       0
0135540        b   r   e   a   k  \r               i   f       p   b   i
0135560    >   >   P   B   I   .   p   u   p   .   t   y   p   e       e
0135600    q       p   t   R   o   u   t   e   R   e   p   l   y       t
0135620    h   e   n  \r                           f   o   r       i    
0135640    =       1       t   o       p   b   i   >   >   P   B   I   .
0135660    p   u   p   .   l   e   n   g   t   h   -   p   u   p   O   v
0135700    B   y   t   e   s       b   y       4       d   o  \r        
0135720                                R   T   E   n   t   r   y   (   p
0135740    b   i   >   >   P   B   I   .   p   u   p   .   b   y   t   e
0135760    s   ^   i   ,       p   b   i   >   >   P   B   I   .   p   u
0136000    p   .   b   y   t 376 001  \0 300 027   e   s   ^   (   i   +
0136020    1   )   ,  \r                                           p   b
0136040    i   >   >   P   B   I   .   p   u   p   .   b   y   t   e   s
0136060    ^   (   i   +   2   )   ,       p   b   i   >   >   P   B   I
0136100    .   p   u   p   .   b   y   t   e   s   ^   (   i   +   3   )
0136120    ,       l   v       c   o   u   n   t   )  \r               R
0136140    e   l   e   a   s   e   P   B   I   (   p   b   i   )  \r    
0136160            ]       r   e   p   e   a   t  \r   C   l   o   s   e
0136200    L   e   v   e   l   1   S   o   c   k   e   t   (   s   o   c
0136220    )  \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -   -
0136240    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0136340    -   -   -  \r   a   n   d       L   c   l   R   o   u   t   i
0136360    n   g   T   a   b   l   e   (   )       b   e  \r   /   /   -
0136400    -   -   -   -   -   -   -   -   -   - 376 001  \0   = 364   -
0136420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0136520   \r   [  \r   l   e   t       P   e   r   N   e   t   (   r   t
0136540    e   ,       l   v   C   o   u   n   t   )       b   e  \r    
0136560            R   T   E   n   t   r   y   (   r   t   e   >   >   R
0136600    T   E   .   n   e   t   ,       r   t   e   >   >   R   T   E
0136620    .   n   d   b   >   >   N   D   B   .   l   o   c   a   l   N
0136640    e   t   ,  \r                   r   t   e   >   >   R   T   E
0136660    .   h   o   s   t   ,       r   t   e   >   >   R   T   E   .
0136700    h   o   p   s   ,       l   v   C   o   u   n   t   )  \r   l
0136720    e   t       c   o   u   n   t       =       0  \r   R   T   T
0136740    i   t   l   e   (   "   *   N   L   o   c   a   l       r   o
0136760    u   t   i   n   g       t   a   b   l   e   :   "   )  \r   H
0137000    E   n   u   m   e   r   a   t   e   (   p   u   p   R   T 376
0137020  001  \0 216   1   ,       P   e   r   N   e   t   ,       l   v
0137040        c   o   u   n   t   )  \r   ]  \r  \r   /   /   -   -   -
0137060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0137160    -   -   -   -   -   -   -   -   -  \r   a   n   d       R   T
0137200    T   i   t   l   e   (   s   t   r   i   n   g   )       b   e
0137220   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0137240    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0137320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0137340    [  \r   W   s   (   s   t   r   i   n   g   )  \r   W   s   (
0137360    "   *   N       N   e   t               V   i   a            
0137400    H   o   p   s       |       N   e   t               V   i   a
0137420                H 376 001  \0 366 364   o   p   s       |       N
0137440    e   t               V   i   a               H   o   p   s    
0137460    |       N   e   t               V   i   a               H   o
0137500    p   s   "   )  \r   W   s   (   "   *   N       -   -   -   -
0137520    -   -   -   -   -   -   -   -   -   -   -   -   -   |   -   -
0137540    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0137560    |   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0137600    -   -   -   |   -   -   -   -   -   -   -   -   -   -   -   -
0137620    -   -   -   -   -   "   )  \r   ]  \r  \r   /   /   -   -   -
0137640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0137740    -   -   -   -   -   -   -   -   -  \r   a   n   d       R   T
0137760    E   n   t   r   y   (   d   N   e   t   ,       v   i   a   N
0140000    e   t   ,       v   i   a   H   o   s   t   ,       h   o   p
0140020    s   ,       l   v   C   o   u   n 376 001  \0 031 277   t   )
0140040        b   e  \r   /   /   -   -   -   -   -   -   -   -   -   -
0140060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0140160    -   -  \r   [  \r   i   f       @   l   v   C   o   u   n   t
0140200        r   e   m       4       e   q       0       t   h   e   n
0140220        W   s   (   "   *   N       "   )  \r   P   u   t   T   e
0140240    m   p   l   a   t   e   (   d   s   p   ,       "   $   U   3
0140260    O       $   U   3   O   #   $   U   3   F   0   O   #       $
0140300    U   2   O       "   ,       d   N   e   t   ,       v   i   a
0140320    N   e   t   ,       v   i   a   H   o   s   t   ,       h   o
0140340    p   s   )  \r   u   n   l   e   s   s       @   l   v   C   o
0140360    u   n   t       r   e   m       4       e   q       3       d
0140400    o       W   s   (   "       |       "   )  \r   @   l   v   C
0140420    o   u   n   t       =       @   l   v   C   o   u   n 376  \0
0140440   \a 254 265   t       +   1  \r   ]  \r 377  \0  \0   G   a   t
0140460    e   C   o   n   E   c   h   o   .   b   c   p   l  \0 373 222
0140500  352 261 252  \0  \0 376 001  \0   #   o   /   /       G   a   t
0140520    e   C   o   n   E   c   h   o   .   b   c   p   l  \r  \r   /
0140540    /       L   a   s   t       m   o   d   i   f   i   e   d    
0140560    F   e   b   r   u   a   r   y       2   8   ,       1   9   7
0140600    9           2   :   4   3       A   M       b   y       B   o
0140620    g   g   s  \r  \r   g   e   t       "   P   u   p   0   .   d
0140640    e   c   l   "  \r   g   e   t       "   P   u   p   1   .   d
0140660    e   c   l   "  \r   g   e   t       "   A   l   t   o   D   e
0140700    f   s   .   d   "  \r   g   e   t       "   P   u   p   E   c
0140720    h   o   S   e   r   v   .   d   e   c   l   "  \r  \r   e   x
0140740    t   e   r   n   a   l  \r   [  \r   /   /       o   u   t   g
0140760    o   i   n   g       p   r   o   c   e   d   u   r   e   s  \r
0141000    C   r   e   a   t   e   E   c   h   o   C   t   x   ;       E
0141020    c   h   o   ;       E   c   h   o   S   u   m   m   a   r   y
0141040    ;       R   e   s   t   a   r   t   E   c   h   o  \r  \r   /
0141060    /       i   n   c   o   m   i   n   g       p   r   o   c   e
0141100    d   u   r   e   s  \r   P   u   t   s 376 001  \0 206 373   ;
0141120        E   n   d   o   f   s   ;       P   u   t   T   e   m   p
0141140    l   a   t   e   ;       W   s   ;       R   e   s   e   t   s
0141160   \r   M   o   v   e   B   l   o   c   k   ;       Z   e   r   o
0141200    ;       A   l   l   o   c   a   t   e   ;       F   r   e   e
0141220   \r   I   n   i   t   i   a   l   i   z   e   C   o   n   t   e
0141240    x   t   ;       B   l   o   c   k  \r   S   e   t   T   i   m
0141260    e   r   ;       T   i   m   e   r   H   a   s   E   x   p   i
0141300    r   e   d   ;       E   n   q   u   e   u   e   ;       D   e
0141320    q   u   e   u   e  \r   G   e   t   B   u   f   ;       R   e
0141340    l   e   a   s   e   P   B   I   ;       C   o   m   p   l   e
0141360    t   e   P   u   p  \r   O   p   e   n   L   e   v   e   l   1
0141400    S   o   c   k   e   t   ;       C   l   o   s   e   L   e   v
0141420    e   l   1   S   o   c   k   e   t  \r   H   L   o   o   k   u
0141440    p   ;       D   i   v   i   d   e   3   2   x   1   6   ;    
0141460    D   o   u   b   l   e   I   n   c   r   e   m   e   n   t   ;
0141500        M   u   l   t   E   q  \r   O   t   h   e   r   P   u 376
0141520