$ od -c -N 50000 [Indigo]<AltoSource>KBD.DM!2
0000000  377  \0  \0   K   b   d   D   e   f   s   .   d  \0 373 225 321
0000020  207 371  \0  \0 376 001  \0 371   a   /   /  \r   /   /       D
0000040    e   f   i   n   i   t   i   o   n   s       f   o   r       B
0000060    C   P   L   -   c   o   d   e   d       k   e   y   b   o   a
0000100    r   d       p   a   c   k   a   g   e  \r   /   /       l   a
0000120    s   t       e   d   i   t   e   d       A   u   g   u   s   t
0000140        2   5   ,       1   9   8   0           1   :   4   3    
0000160    P   M  \r   /   /  \r   /   /       C   o   p   y   r   i   g
0000200    h   t       X   e   r   o   x       C   o   r   p   o   r   a
0000220    t   i   o   n       1   9   7   9   ,       1   9   8   0  \r
0000240   \r  \r   m   a   n   i   f   e   s   t       N   o   O   f   K
0000260    e   y   s       =       7   2  \t   /   /       6   4       k
0000300    e   y   b   o   a   r   d       k   e   y   s   ,       8    
0000320    b   u   t   t   o   n   s  \r   s   t   r   u   c   t   u   r
0000340    e       I   n   p   u   t   D   a   t   u   m   M   a   p    
0000360    [       c   o   d   e   ^   0   ,   (   N   o   O   f   K   e
0000400    y   s   -   1   )       b   y   t   e       ]  \r      \r   s
0000420    t   r   u   c   t   u   r   e     376 001  \0 272   V   U   s
0000440    e   r   S   t   a   t   e       [  \t   k   e   y   s  \t   w
0000460    o   r   d       5  \r  \t   ]  \r   m   a   n   i   f   e   s
0000500    t       U   S   s   i   z   e       =       5  \r  \r   m   a
0000520    n   i   f   e   s   t       [  \r  \t   U   p   S   t   r   o
0000540    k   e       =       #   1   0  \t   /   /       m   u   s   t
0000560        b   e       #   1   0  \r  \t   D   o   w   n   S   t   r
0000600    o   k   e       =       0  \t   /   /       m   u   s   t    
0000620    b   e       0  \r  \t   ]  \r  \r   m   a   n   i   f   e   s
0000640    t       [  \r  \t   K   e   y   b   o   a   r   d   L   e   v
0000660    e   l  \t   =       1   3  \r  \t   b   u   t   t   o   n   s
0000700   \t  \t   =       #   1   7   7   0   3   0  \r  \t   K   e   y
0000720    s  \t  \t   =       #   1   7   7   0   3   4  \r  \t   c   u
0000740    r   s   o   r   X   m   a   x  \t   =       6   0   6   -   1
0000760    6  \r  \t   c   u   r   s   o   r   Y   m   a   x  \t   =    
0001000    8   0   8   -   1   6  \r           ]  \r  \r   /   /       t
0001020    h   e       i   n   p   u   t       k   e   y   s     376 001
0001040   \0   q   e   u   s   e       t   h   e       s   t   a   n   d
0001060    a   r   d       A   S   C   I   I       e   n   c   o   d   i
0001100    n   g  \r   /   /       t   h   e       m   o   u   s   e    
0001120    a   n   d       k   e   y   s   e   t       u   s   e       #
0001140    2   0   0       a   n   d       a   b   o   v   e  \r   /   /
0001160   \r   m   a   n   i   f   e   s   t       x   x   x       =    
0001200    0  \r   m   a   n   i   f   e   s   t       [  \r  \t   c   t
0001220    r   l  \t   =       x   x   x  \r  \t   h   s   1  \t   =    
0001240    #   2   0   7  \r  \t   h   s   2  \t   =       #   2   0   6
0001260   \r  \t   h   s   3  \t   =       #   2   0   5  \r  \t   h   s
0001300    4  \t   =       #   2   0   4  \r  \t   h   s   5  \t   =    
0001320    #   2   0   3  \r  \t   m   b   1  \t   =       #   2   0   2
0001340   \r  \t   m   b   2  \t   =       #   2   0   1  \r  \t   m   b
0001360    3  \t   =       #   2   0   0  \r  \t   e   s   c  \t   =    
0001400        #   3   3  \r  \t   t   a   b  \t   =           #   1   1
0001420   \r  \t   l   f  \t   =           #   1   2  \r  \t   d   e   l
0001440   \t   =     376 001  \0 315   5   #   1   7   7  \r  \t   b   s
0001460   \t   =               #   1  \r  \t   s   p   r   1  \t   =    
0001500    0  \r  \t   r   t   n  \t   =           #   1   5  \r  \t   s
0001520    p   r   2  \t   =       0  \r  \t   s   p   r   3  \t   =    
0001540    0  \r  \t   s   p   a   c   e  \t   =           #   4   0  \r
0001560   \t   l   s   h   f   t  \t   =       x   x   x  \r  \t   r   s
0001600    h   f   t  \t   =       x   x   x  \r  \t   l   o   c   k  \t
0001620    =       x   x   x  \r  \t   C   T   R   L  \t   =       c   t
0001640    r   l  \r  \t   H   S   1  \t   =       h   s   1  \r  \t   H
0001660    S   2  \t   =       h   s   2  \r  \t   H   S   3  \t   =    
0001700    h   s   3  \r  \t   H   S   4  \t   =       h   s   4  \r  \t
0001720    H   S   5  \t   =       h   s   5  \r  \t   M   B   1  \t   =
0001740        m   b   1  \r  \t   M   B   2  \t   =       m   b   2  \r
0001760   \t   M   B   3  \t   =       m   b   3  \r  \t   E   S   C  \t
0002000    =           #   3   3  \r  \t   T   A   B  \t   =           #
0002020    1   1  \r  \t   L   F  \t   =           #   1   2  \r  \t   D
0002040    E   L  \t   =       #   1   7 376  \0   | 023 006   7  \r  \t
0002060    B   S  \t   =               #   1  \r  \t   S   P   R   1  \t
0002100    =       0  \r  \t   R   T   N  \t   =           #   1   5  \r
0002120   \t   S   P   R   2  \t   =       0  \r  \t   S   P   R   3  \t
0002140    =       0  \r  \t   S   P   A   C   E  \t   =           #   4
0002160    0  \r  \t   L   S   H   F   T  \t   =       l   s   h   f   t
0002200   \r  \t   R   S   H   F   T  \t   =       r   s   h   f   t  \r
0002220   \t   L   O   C   K  \t   =       l   o   c   k  \r  \t   S  \t
0002240    =       #   4   0   0  \r   ]  \r 377  \0  \0   K   b   d   I
0002260    n   i   t   .   b   c   p   l  \0 373 225 321 207   d  \0  \0
0002300  376 001  \0 031 315   /   /  \r   /   /       T   r   a   n   s
0002320    i   t   o   r   y       i   n   i   t   i   a   l   i   z   a
0002340    t   i   o   n       c   o   d   e       f   o   r       K   B
0002360    D       p   a   c   k   a   g   e  \r   /   /       l   a   s
0002400    t       e   d   i   t   e   d       A   u   g   u   s   t    
0002420    2   5   ,       1   9   8   0           1   :   4   0       P
0002440    M  \r   /   /  \r   /   /       C   o   p   y   r   i   g   h
0002460    t       X   e   r   o   x       C   o   r   p   o   r   a   t
0002500    i   o   n       1   9   7   9   ,       1   9   8   0  \r  \r
0002520   \t   g   e   t       "   k   b   d   D   e   f   s   .   d   "
0002540   \r  \t   g   e   t       "   s   t   r   e   a   m   s   .   d
0002560    "  \r  \t   g   e   t       "   a   l   t   o   d   e   f   s
0002600    .   d   "  \r  \r   e   x   t   e   r   n   a   l       [  \t
0002620   \t  \t   /   /       p   r   o   c   e   d   u   r   e   s    
0002640    d   e   f   i   n   e   d  \r  \t   K   B   D   i   n   i   t
0002660   \t   /   /       (   [   z   o   n   e   ,       e   x   t   r
0002700    a   S   p   a   c 376 001  \0   0   6   e   ]   )       -   >
0002720        k   e   y   s   t   r   e   a   m  \r  \t   ]  \r  \r  \r
0002740    e   x   t   e   r   n   a   l  \t   [  \t  \t  \t   /   /    
0002760    p   r   o   c   e   d   u   r   e   s       u   s   e   d  \r
0003000   \t  \t   /   /       O   .   S   .  \r  \t   D   e   f   a   u
0003020    l   t   A   r   g   s  \r  \t   M   o   v   e   B   l   o   c
0003040    k   ;       Z   e   r   o  \r  \t   N   o   o   p   ;       T
0003060    r   u   e   P   r   e   d   i   c   a   t   e  \r  \t  \t   /
0003100    /       K   B   D  \r  \t   k   b   d   G   e   t   s   ;    
0003120    k   b   d   P   u   t   s   ;       k   b   d   R   e   s   e
0003140    t   ;       k   b   d   E   m   p   t   y  \r  \t   k   b   d
0003160    S   t   a   t   e   ;       K   B   D   H   a   n   d   l   e
0003200    r  \r  \t  \t   /   /       I   n   t   e   r   r   u   p   t
0003220   \r  \t   F   i   n   d   I   n   t   e   r   r   u   p   t   M
0003240    a   s   k   ;       I   n   i   t   i   a   l   i   z   e   I
0003260    n   t   e   r   r   u   p   t  \r  \t   ]  \r  \r   e   x   t
0003300    e   r   n   a   l       [  \t  \t  \t 376 001  \0   /   h   /
0003320    /       s   t   a   t   i   c   s       u   s   e   d  \r  \t
0003340   \t   /   /       O   .   S   .  \r  \t   s   y   s   Z   o   n
0003360    e  \r  \t  \t   /   /       K   B   D  \r  \t   @   O   l   d
0003400    U   S   ;       @   N   e   w   U   S  \r  \t   k   b   d   T
0003420    r   a   p   T   a   b   l   e  \r  \t   k   b   d   O   v   e
0003440    r   f   l   o   w   P   r   o   c  \r  \t   k   b   d   T   r
0003460    a   p   P   r   o   c  \r  \t   ]  \r  \r  \r   m   a   n   i
0003500    f   e   s   t       [  \r  \t   i   n   t   e   r   r   u   p
0003520    t   S   t   a   c   k   N   e   e   d   e   d       =       1
0003540    9  \t   /   /       s   p   a   c   e       r   e   q   u   i
0003560    r   e   d       b   y       I   n   t   e   r   r   u   p   t
0003600   \r  \t   k   b   d   S   t   a   c   k   N   e   e   d   e   d
0003620        =       i   n   t   e   r   r   u   p   t   S   t   a   c
0003640    k   N   e   e   d   e   d   +   8   0  \t   /   /       m   i
0003660    n   i   m   u   m       s   t   a   c   k       s   p   a   c
0003700    e  \r  \t   k   b   d   W   o   r   k   i   n   g   S   p 376
0003720  001  \0   v   .   a   c   e       =       2   *   U   S   s   i
0003740    z   e   +   #   2   0   +   l   S   T  \t   /   /       w   o
0003760    r   k   i   n   g       s   p   a   c   e       n   e   e   d
0004000    e   d  \r  \t   ]  \r  \r  \r   l   e   t       K   B   D   i
0004020    n   i   t   (   z   o   n   e   ,       e   x   t   r   a   S
0004040    p   a   c   e   ;       n   u   m   a   r   g   s       n   a
0004060    )       =       v   a   l   o   f  \r   [  \r  \t   D   e   f
0004100    a   u   l   t   A   r   g   s   (   l   v       n   a   ,    
0004120    0   ,       s   y   s   Z   o   n   e   ,       0   )  \r  \t
0004140    k   b   d   S   t   a   t   e   (   )  \r  \t   l   e   t    
0004160    l   e   n       =       (   k   b   d   S   t   a   c   k   N
0004200    e   e   d   e   d   +   k   b   d   W   o   r   k   i   n   g
0004220    S   p   a   c   e   )   +   e   x   t   r   a   S   p   a   c
0004240    e  \r  \t   l   e   t       S   p   a   c   e       =       (
0004260    z   o   n   e   >   >   Z   N   .   A   l   l   o   c   a   t
0004300    e   )   (   z   o   n   e   ,       l   e   n   )  \t   /   /
0004320        *   *   * 376 001  \0 362   m       k   l   u   d   g   e
0004340        a   r   o   u   n   d       p   r   o   b   l   e   m    
0004360    i   n       O   .   S   .       A   l   l   o   c   a   t   e
0004400   \r  \t   O   l   d   U   S       =       S   p   a   c   e  \r
0004420   \t   N   e   w   U   S       =       O   l   d   U   S   +   U
0004440    S   s   i   z   e  \r  \t   k   b   d   T   r   a   p   T   a
0004460    b   l   e       =       N   e   w   U   S   +   U   S   s   i
0004500    z   e  \r  \t   l   e   t       n   e   w   k   e   y   s    
0004520    =       k   b   d   T   r   a   p   T   a   b   l   e   +   #
0004540    2   0  \r  \t   l   e   t       k   b   d   S   t   a   c   k
0004560        =       n   e   w   k   e   y   s   +   l   S   T  \r  \r
0004600   \t   n   e   w   k   e   y   s   >   >   S   T   .   g   e   t
0004620    s       =       k   b   d   G   e   t   s  \r  \t   n   e   w
0004640    k   e   y   s   >   >   S   T   .   p   u   t   s       =    
0004660    k   b   d   P   u   t   s  \r  \t   n   e   w   k   e   y   s
0004700    >   >   S   T   .   e   n   d   o   f       =       k   b   d
0004720    E   m   p   t   y  \r  \t   n   e 376 001  \0 263 364   w   k
0004740    e   y   s   >   >   S   T   .   r   e   s   e   t       =    
0004760    k   b   d   R   e   s   e   t  \r  \r  \t   k   b   d   O   v
0005000    e   r   f   l   o   w   P   r   o   c       =       N   o   o
0005020    p  \r  \t   k   b   d   T   r   a   p   P   r   o   c       =
0005040        T   r   u   e   P   r   e   d   i   c   a   t   e  \r  \r
0005060   \t   M   o   v   e   B   l   o   c   k   (   O   l   d   U   S
0005100    ,       K   e   y   s   ,       4   )  \r  \t   O   l   d   U
0005120    S   !   4   =   @   b   u   t   t   o   n   s  \r  \r  \t   l
0005140    e   t       W   a   k   e   B   i   t       =       F   i   n
0005160    d   I   n   t   e   r   r   u   p   t   M   a   s   k   (   1
0005200        l   s   h   i   f   t       (   K   e   y   b   o   a   r
0005220    d   L   e   v   e   l   -   1   )   )  \r  \t   I   n   i   t
0005240    i   a   l   i   z   e   I   n   t   e   r   r   u   p   t   (
0005260    k   b   d   S   t   a   c   k   ,       l   e   n   -   k   b
0005300    d   W   o   r   k   i   n   g   S   p   a   c   e   ,       W
0005320    a   k   e   B   i   t   ,       K   B   D   H   a   n 376  \0
0005340    M   : 320   d   l   e   r   )  \r  \t   @   d   i   s   p   l
0005360    a   y   I   n   t   e   r   r   u   p   t       =       @   d
0005400    i   s   p   l   a   y   I   n   t   e   r   r   u   p   t    
0005420    %       W   a   k   e   B   i   t  \r  \r  \t   r   e   s   u
0005440    l   t   i   s       n   e   w   k   e   y   s  \r  \r   ]  \r
0005460  377  \0  \0   K   b   d   .   b   c   p   l  \0 373 225 321 210
0005500  344  \0  \0 376 001  \0   [  \t   /   /  \r   /   /       B   C
0005520    P   L       k   e   y   b   o   a   r   d       h   a   n   d
0005540    l   e   r  \r   /   /       l   a   s   t       e   d   i   t
0005560    e   d       A   u   g   u   s   t       2   5   ,       1   9
0005600    8   0           1   :   4   7       P   M  \r   /   /  \r   /
0005620    /       C   o   p   y   r   i   g   h   t       X   e   r   o
0005640    x       C   o   r   p   o   r   a   t   i   o   n       1   9
0005660    7   9   ,       1   9   8   0  \r  \r  \t   g   e   t       "
0005700    k   b   d   D   e   f   s   .   d   "  \r  \t   g   e   t    
0005720    "   s   y   s   d   e   f   s   .   d   "  \t   /   /       f
0005740    o   r       O   s   B   U   F       s   t   r   u   c   t   u
0005760    r   e  \r  \t   g   e   t       "   a   l   t   o   d   e   f
0006000    s   .   d   "  \t   /   /       f   o   r       m   o   u   s
0006020    e       a   n   d       c   u   r   s   o   r       l   o   c
0006040    a   t   i   o   n   s  \r  \r   e   x   t   e   r   n   a   l
0006060        [  \t  \t  \t  \t   /   /       p   r   o   c   e   d   u
0006100    r   e   s       d   e   f   i 376 001  \0 360   0   n   e   d
0006120   \r  \t   K   B   D   H   a   n   d   l   e   r  \r  \t   k   b
0006140    d   S   t   a   t   e  \r  \t   k   b   d   G   e   t   s  \r
0006160   \t   k   b   d   P   u   t   s  \r  \t   k   b   d   R   e   s
0006200    e   t  \r  \t   k   b   d   E   m   p   t   y  \r  \t   ]  \r
0006220   \r   e   x   t   e   r   n   a   l       [  \t  \t  \t  \t   /
0006240    /       s   t   a   t   i   c   s       d   e   f   i   n   e
0006260    d  \r  \t   k   b   d   B   u   t   t   o   n   s   O   n  \r
0006300   \t   k   b   d   T   r   a   p   T   a   b   l   e  \r  \t   @
0006320    O   l   d   U   S   ;       @   N   e   w   U   S  \r  \t   k
0006340    b   d   O   v   e   r   f   l   o   w   P   r   o   c  \r  \t
0006360    k   b   d   T   r   a   p   P   r   o   c  \r  \t   ]  \r  \r
0006400    e   x   t   e   r   n   a   l       [  \t  \t  \t  \t   /   /
0006420        p   r   o   c   e   d   u   r   e   s       u   s   e   d
0006440   \r  \t   M   o   v   e   B   l   o   c   k  \r  \t   ]  \r  \r
0006460    e   x   t   e   r   n   a   l       [  \t  \t  \t  \t   /   /
0006500        s   t   a   t   i   c   s       u   s   e   d 376 001  \0
0006520  202 344  \r  \t   O   s   B   u   f   f   e   r  \r  \t   l   v
0006540    C   u   r   s   o   r   L   i   n   k  \r  \t   ]  \r  \r   s
0006560    t   a   t   i   c       [  \r  \t   k   b   d   B   u   t   t
0006600    o   n   s   O   n  \t   =       f   a   l   s   e  \r  \t   @
0006620    N   e   w   U   S  \r  \t   @   O   l   d   U   S  \r  \t   D
0006640    o   w   n   S   t   r   o   k   e   s  \t  \r  \t   U   p   S
0006660    t   r   o   k   e   s  \t  \r  \t   A   S   C   I   I   m   a
0006700    p  \t  \r  \t   L   o   c   k   S   h   i   f   t  \r  \t   k
0006720    b   d   T   r   a   p   T   a   b   l   e  \r  \t   k   b   d
0006740    O   v   e   r   f   l   o   w   P   r   o   c  \r  \t   k   b
0006760    d   T   r   a   p   P   r   o   c  \r  \t   ]  \r  \r   s   t
0007000    r   u   c   t   u   r   e       [  \t   /   /       s   h   i
0007020    f   t       k   e   y   s  \r  \t   b   l   a   n   k       w
0007040    o   r   d  \r  \t   b   l   a   n   k       w   o   r   d  \r
0007060   \t   b   l   a   n   k       b   i   t       4   ;       C   t
0007100    r   l   B   i   t       b   i   t   ;       b   l   a   n   k
0007120        b 376 001  \0 022   j   i   t       4   ;       L   S   h
0007140    i   f   t   B   i   t       b   i   t   ;       b   l   a   n
0007160    k       b   i   t       6  \r  \t   b   l   a   n   k       b
0007200    i   t       7   ;       S   w   a   t   B   i   t       b   i
0007220    t   ;       L   o   c   k   S   h   i   f   t   B   i   t    
0007240    b   i   t   ;       b   l   a   n   k       b   i   t       3
0007260    ;       R   S   h   i   f   t   B   i   t       b   i   t   ;
0007300        b   l   a   n   k       b   i   t       3  \r  \t   ]  \r
0007320   \r   l   e   t       k   b   d   S   t   a   t   e   (   )    
0007340    b   e  \r           [   k   b   S  \r  \r   D   o   w   n   S
0007360    t   r   o   k   e   s  \t   =       t   a   b   l   e       [
0007400        #   1   7   7   7   7   7   ;       #   1   7   7   7   7
0007420    7   ;       #   1   7   3   6   7   6   ;       #   1   7   7
0007440    5   6   4   ;       #   3   7   7       ]  \r   U   p   S   t
0007460    r   o   k   e   s  \t   =       t   a   b   l   e       [    
0007500    #   0   0   0   0   0   0   ;       #   0   0   0   0   0   0
0007520    ;       #   0   0   0   0 376 001  \0   : 267   0   0   ;    
0007540    #   0   0   0   0   0   0   ;       #   3   7   7       ]  \r
0007560    L   o   c   k   S   h   i   f   t  \t  \t   =       t   a   b
0007600    l   e       [       #   0   1   3   5   2   0   ;       #   0
0007620    3   6   7   4   0   ;       #   0   1   3   6   0   0   ;    
0007640    #   1   7   5   4   0   0   ;       #   0   0   0       ]  \r
0007660   \r   A   S   C   I   I   m   a   p       =       t   a   b   l
0007700    e       [  \r   /   /       U   n   s   h   i   f   t   e   d
0007720        c   h   a   r   a   c   t   e   r   s   ,       w   o   r
0007740    d       0  \r  \t   b   s   *   S   +   l   f   ;  \r  \t   $
0007760    \   *   S   +   $   /   ;  \r  \t   $   p   *   S   +   $   -
0010000    ;  \r  \t   $   k   *   S   +   $   0   ;  \r  \t   $   v   *
0010020    S   +   $   u   ;  \r  \t   $   d   *   S   +   $   7   ;  \r
0010040   \t   $   e   *   S   +   $   6   ;  \r  \t   $   4   *   S   +
0010060    $   5   ;  \r   /   /       w   o   r   d       1  \r  \t   s
0010100    p   r   1   *   S   +   s   p   r   2   ;  \r  \t   $   ]   *
0010120    S   +   $   '   ;  \r  \t   $   ,   *   S   + 376 001  \0   *
0010140    l   $   l   ;  \r  \t   $   o   *   S   +   $   x   ;  \r  \t
0010160    $   i   *   S   +   $   9   ;  \r  \t   $   a   *   S   +   $
0010200    s   ;  \r  \t   $   q   *   S   +   $   w   ;  \r  \t   $   2
0010220    *   S   +   $   3   ;  \r   /   /       w   o   r   d       2
0010240   \r  \t   x   x   x   *   S   +   d   e   l   ;  \r  \t   $   _
0010260    *   S   +   r   t   n   ;  \r  \t   $   ;   *   S   +   $   .
0010300    ;  \r  \t   l   s   h   f   t   *   S   +   $   z   ;  \r  \t
0010320    $   b   *   S   +   $   j   ;  \r  \t   $   c   *   S   +   c
0010340    t   r   l   ;  \r  \t   $   f   *   S   +   t   a   b   ;  \r
0010360   \t   e   s   c   *   S   +   $   1   ;  \r   /   /       w   o
0010400    r   d       3  \r  \t   x   x   x   *   S   +   x   x   x   ;
0010420   \r  \t   s   p   r   3   *   S   +   r   s   h   f   t   ;  \r
0010440   \t   $   =   *   S   +   $   [   ;  \r  \t   s   p   a   c   e
0010460    *   S   +   l   o   c   k   ;  \r  \t   $   m   *   S   +   $
0010500    n   ;  \r  \t   $   8   *   S   +   $   h   ;  \r  \t   $   y
0010520    *   S   +   $   g   ;  \r  \t   $   t   *   S   +   $   r  \r
0010540    / 376 001  \0 261 027   /       b   u   t   t   o   n   s  \r
0010560   \t   m   b   2   *   S   +   m   b   3   ;  \r  \t   m   b   1
0010600    *   S   +   h   s   5   ;  \r  \t   h   s   4   *   S   +   h
0010620    s   3   ;  \r  \t   h   s   2   *   S   +   h   s   1   ;  \r
0010640    /   /       S   h   i   f   t   e   d       c   h   a   r   a
0010660    c   t   e   r   s   ,       w   o   r   d       0  \r  \t   B
0010700    S   *   S   +   L   F   ;  \r  \t   $   |   *   S   +   $   ?
0010720    ;  \r  \t   $   P   *   S   +   $   -   ;  \r  \t   $   K   *
0010740    S   +   $   )   ;  \r  \t   $   V   *   S   +   $   U   ;  \r
0010760   \t   $   D   *   S   +   $   &   ;  \r  \t   $   E   *   S   +
0011000    $   ~   ;  \r  \t   $   $   *   S   +   $   %   ;  \r   /   /
0011020        w   o   r   d       1  \r  \t   S   P   R   1   *   S   +
0011040    S   P   R   2   ;  \r  \t   $   }   *   S   +   $   "   ;  \r
0011060   \t   $   <   *   S   +   $   L   ;  \r  \t   $   O   *   S   +
0011100    $   X   ;  \r  \t   $   I   *   S   +   $   (   ;  \r  \t   $
0011120    A   *   S   +   $   S   ;  \r  \t   $   Q   *   S   +   $   W
0011140    ;  \r  \t   $   @   * 376 001  \0 030 271   S   +   $   #   ;
0011160   \r   /   /       w   o   r   d       2  \r  \t   x   x   x   *
0011200    S   +   D   E   L   ;  \r  \t   $   ^   *   S   +   R   T   N
0011220    ;  \r  \t   $   :   *   S   +   $   >   ;  \r  \t   L   S   H
0011240    F   T   *   S   +   $   Z   ;  \r  \t   $   B   *   S   +   $
0011260    J   ;  \r  \t   $   C   *   S   +   C   T   R   L   ;  \r  \t
0011300    $   F   *   S   +   T   A   B   ;  \r  \t   E   S   C   *   S
0011320    +   $   !   ;  \r   /   /       w   o   r   d       3  \r  \t
0011340    x   x   x   *   S   +   x   x   x   ;  \r  \t   S   P   R   3
0011360    *   S   +   R   S   H   F   T   ;  \r  \t   $   +   *   S   +
0011400    $   {   ;  \r  \t   S   P   A   C   E   *   S   +   L   O   C
0011420    K   ;  \r  \t   $   M   *   S   +   $   N   ;  \r  \t   $   *
0011440    *   *   S   +   $   H   ;  \r  \t   $   Y   *   S   +   $   G
0011460    ;  \r  \t   $   T   *   S   +   $   R  \r   /   /       b   u
0011500    t   t   o   n   s  \r  \t   M   B   2   *   S   +   M   B   3
0011520    ;  \r  \t   M   B   1   *   S   +   H   S   5   ;  \r  \t   H
0011540    S   4   *   S   +   H   S   3   ;  \r  \t 376 001  \0  \r 247
0011560    H   S   2   *   S   +   H   S   1   ;  \r   ]  \r  \r        
0011600    ]   k   b   S  \r  \r   a   n   d       K   B   D   H   a   n
0011620    d   l   e   r   (   )       b   e  \r           [   k   b   H
0011640   \r  \r  \t   M   o   v   e   B   l   o   c   k   (   N   e   w
0011660    U   S   ,       K   e   y   s   ,       4   )  \r  \t   N   e
0011700    w   U   S   !   4   =   @   b   u   t   t   o   n   s  \r  \t
0011720    i   f       @   l   v   C   u   r   s   o   r   L   i   n   k
0011740        t   h   e   n  \r  \t       [       t   e   s   t       @
0011760    m   o   u   s   e   X       l   s       0  \r  \t            
0012000        i   f   s   o       @   m   o   u   s   e   X       =    
0012020    0  \r  \t                   i   f   n   o   t  \r  \t        
0012040        i   f       @   m   o   u   s   e   X       g   r       c
0012060    u   r   s   o   r   X   m   a   x       t   h   e   n       @
0012100    m   o   u   s   e   X       =       c   u   r   s   o   r   X
0012120    m   a   x  \r  \t               @   c   u   r   s   o   r   X
0012140        =       @   m   o   u   s   e   X  \r  \t               t
0012160  376 001  \0 255 300   e   s   t       @   m   o   u   s   e   Y
0012200        l   s       0  \r  \t                   i   f   s   o    
0012220    @   m   o   u   s   e   Y       =       0  \r  \t            
0012240        i   f   n   o   t  \r  \t               i   f       @   m
0012260    o   u   s   e   Y       g   r       c   u   r   s   o   r   Y
0012300    m   a   x       t   h   e   n       @   m   o   u   s   e   Y
0012320        =       c   u   r   s   o   r   Y   m   a   x  \r  \t    
0012340            @   c   u   r   s   o   r   Y       =       @   m   o
0012360    u   s   e   Y  \r  \t       ]  \r  \t   f   o   r       i    
0012400    =       0       t   o       4       d   o  \r  \t       [    
0012420    l   e   t       o   l   d       =       O   l   d   U   S    
0012440    !       i  \r  \t               l   e   t       n   e   w    
0012460    =       N   e   w   U   S       !       i  \r  \t            
0012500    l   e   t       x       =       o   l   d       &       n   o
0012520    t       n   e   w       &       D   o   w   n   S   t   r   o
0012540    k   e   s   !   i  \r  \t               i   f       x       n
0012560    e       0       t 376 001  \0   o 247   h   e   n       K   e
0012600    y   A   c   t   i   o   n   (   x   ,       i   ,       D   o
0012620    w   n   S   t   r   o   k   e   )  \r  \t               x    
0012640    =       n   o   t       o   l   d       &       n   e   w    
0012660    &       U   p   S   t   r   o   k   e   s   !   i  \r  \t    
0012700            i   f       x       n   e       0       t   h   e   n
0012720        K   e   y   A   c   t   i   o   n   (   x   ,       i   ,
0012740        U   p   S   t   r   o   k   e   )  \r  \t       ]  \r  \t
0012760    l   e   t       x   =   O   l   d   U   S   ;       O   l   d
0013000    U   S   =   N   e   w   U   S   ;       N   e   w   U   S   =
0013020    x  \r           ]   k   b   H  \r  \r   a   n   d       K   e
0013040    y   A   c   t   i   o   n       (   b   ,       w   ,       a
0013060    c   t   i   o   n   )       b   e  \r           [   k   a  \r
0013100   \t   l   e   t       s   h   m       =       (   N   e   w   U
0013120    S   >   >   L   S   h   i   f   t   B   i   t       e   q    
0013140    0   ?       -   1   ,       N   e   w   U   S   >   >   R   S
0013160    h   i   f   t   B   i   t       e   q 376 001  \0   O 267    
0013200    0   ?       -   1   ,  \r  \t               N   e   w   U   S
0013220    >   >   L   o   c   k   S   h   i   f   t   B   i   t       e
0013240    q       0   ?       L   o   c   k   S   h   i   f   t   !   w
0013260    ,       0   )  \r  \t   l   e   t       m   ,       x       =
0013300        1   ,       w       l   s   h   i   f   t       4  \r  \t
0013320    [  \r  \t       i   f       (   b   &   m   )       n   e    
0013340    0       t   h   e   n  \r  \t           [  \r  \t           /
0013360    /       "   +       a   c   t   i   o   n   "       b   e   l
0013400    o   w       o   n   l   y       a   f   f   e   c   t   s    
0013420    b   u   t   t   o   n   s  \r  \t           l   e   t       c
0013440        =       A   S   C   I   I   m   a   p   >   >   I   n   p
0013460    u   t   D   a   t   u   m   M   a   p   .   c   o   d   e   ^
0013500    (   (   s   h   m   &   m   )       e   q       0   ?       x
0013520    ,       x   +   N   o   O   f   K   e   y   s   )       +    
0013540    a   c   t   i   o   n  \r  \t           i   f       (   N   e
0013560    w   U   S   >   >   C   t   r   l   B   i   t       e   q 376
0013600  001  \0   a 336       0   )       &       (   c       g   e    
0013620    #   1   0   0   )       t   h   e   n       c       =       c
0013640        &       #   2   3   7  \r  \t           i   f       (   (
0013660    w       l   s       4   )       %       k   b   d   B   u   t
0013700    t   o   n   s   O   n   )       &       (   (   (   k   b   d
0013720    T   r   a   p   T   a   b   l   e   !   (   c       r   s   h
0013740    i   f   t       4   )       &       1       l   s   h   i   f
0013760    t       (   c   &   #   1   7   )   )       e   q       0   )
0014000        %       (   k   b   d   T   r   a   p   P   r   o   c   (
0014020    c   )       n   e       f   a   l   s   e   )   )       t   h
0014040    e   n  \r  \t               u   n   l   e   s   s       k   b
0014060    d   P   u   t   s   (   n   i   l   ,       c   )       d   o
0014100        k   b   d   O   v   e   r   f   l   o   w   P   r   o   c
0014120    (   c   )  \r  \t           ]  \r  \t   m   ,       x       =
0014140        m       l   s   h   i   f   t       1   ,       x   +   1
0014160   \r  \t   ]       r   e   p   e   a   t   w   h   i   l   e    
0014200    m       n   e 376 001  \0   J   J       0  \r           ]   k
0014220    a  \r  \r   a   n   d       k   b   d   G   e   t   s   (   n
0014240    i   l   )       =       v   a   l   o   f  \r           [  \t
0014260    l   e   t       c   h       =       R   i   n   g   G   e   t
0014300    (   O   s   B   u   f   f   e   r   )  \r  \t   i   f       c
0014320    h       n   e       -   1       r   e   s   u   l   t   i   s
0014340        c   h  \r           ]       r   e   p   e   a   t  \r  \r
0014360    a   n   d       k   b   d   R   e   s   e   t   (   n   i   l
0014400    )       b   e  \r           [  \t   l   e   t       x       =
0014420        O   s   B   u   f   f   e   r   >   >   O   s   B   U   F
0014440    .   F   i   r   s   t  \r  \t   O   s   B   u   f   f   e   r
0014460    >   >   O   s   B   U   F   .   I   n       =       x  \r  \t
0014500    O   s   B   u   f   f   e   r   >   >   O   s   B   U   F   .
0014520    O   u   t       =       x  \r           ]  \r  \r   a   n   d
0014540        k   b   d   E   m   p   t   y   (   n   i   l   )       =
0014560        O   s   B   u   f   f   e   r   >   >   O   s   B   U   F
0014600    .   I   n       e   q       O   s 376 001  \0   < 016   B   u
0014620    f   f   e   r   >   >   O   s   B   U   F   .   O   u   t  \r
0014640   \r   a   n   d       k   b   d   P   u   t   s   (   n   i   l
0014660    ,   x   )       =  \r           v   a   l   o   f       [  \r
0014700   \t   l   e   t       t       =       O   s   B   u   f   f   e
0014720    r   >   >   O   s   B   U   F   .   I   n       +       1    
0014740   \r  \t   i   f       t       e   q       O   s   B   u   f   f
0014760    e   r   >   >   O   s   B   U   F   .   L   a   s   t       t
0015000    h   e   n       t       =       O   s   B   u   f   f   e   r
0015020    >   >   O   s   B   U   F   .   F   i   r   s   t  \r  \t   i
0015040    f       t       e   q       O   s   B   u   f   f   e   r   >
0015060    >   O   s   B   U   F   .   O   u   t       t   h   e   n    
0015100    r   e   s   u   l   t   i   s       f   a   l   s   e  \t   /
0015120    /   O   v   e   r   f   l   o   w  \r  \t   @   (   O   s   B
0015140    u   f   f   e   r   >   >   O   s   B   U   F   .   I   n   )
0015160        =       x  \r  \t   O   s   B   u   f   f   e   r   >   >
0015200    O   s   B   U   F   .   I   n       =       t  \r  \t 376 001
0015220   \0 033 364   r   e   s   u   l   t   i   s       t   r   u   e
0015240   \r           ]  \r  \r   a   n   d       R   i   n   g   G   e
0015260    t   (   R   ,   f   l   g   ;       n   u   m   a   r   g   s
0015300        n   a   )       =  \r           v   a   l   o   f       [
0015320   \r  \t   i   f       R   >   >   O   s   B   U   F   .   O   u
0015340    t       e   q       R   >   >   O   s   B   U   F   .   I   n
0015360        t   h   e   n       r   e   s   u   l   t   i   s       -
0015400    1      \r  \t   l   e   t       t       =       R   >   >   O
0015420    s   B   U   F   .   O   u   t       +       1  \r  \t   i   f
0015440        t       e   q       R   >   >   O   s   B   U   F   .   L
0015460    a   s   t       t   h   e   n       t       =       R   >   >
0015500    O   s   B   U   F   .   F   i   r   s   t  \r  \t   l   e   t
0015520        x       =       @   (   R   >   >   O   s   B   U   F   .
0015540    O   u   t   )  \r  \t   i   f       n   a       e   q       1
0015560        t   h   e   n       R   >   >   O   s   B   U   F   .   O
0015600    u   t       =       t  \r  \t   r   e   s   u   l   t   i   s
0015620        x  \r 376  \0 004   }   1           ]  \r 377  \0  \0   c
0015640    o   m   p   i   l   e   k   b   d   .   c   m  \0 373 223 362
0015660  346 365  \0  \0 376  \0   $   x   L   B   c   p   l   /   F    
0015700    K   b   d   I   n   i   t   .   b   c   p   l  \r   B   c   p
0015720    l   /   F       K   b   d   .   b   c   p   l  \r 377  \0  \0
0015740    s   e   n   d   k   b   d   .   c   m  \0 373 225 321 213 360
0015760   \0  \0 376  \0 274 313 310   /   /       l   a   s   t       e
0016000    d   i   t   e   d       A   u   g   u   s   t       2   5   ,
0016020        1   9   8   0           1   :   4   4       P   M  \r   F
0016040    t   p       M   a   x   c       C   o   n   n   e   c   t   /
0016060    C       A   l   t   o   S   o   u   r   c   e       D   u   m
0016100    p   /   C       k   b   d   .   d   m       K   b   d   D   e
0016120    f   s   .   d       K   b   d   I   n   i   t   .   b   c   p
0016140    l       K   b   d   .   b   c   p   l       c   o   m   p   i
0016160    l   e   k   b   d   .   c   m       s   e   n   d   k   b   d
0016200    .   c   m       C   o   n   n   e   c   t   /   C       A   l
0016220    t   o       D   u   m   p   /   C       k   b   d   .   d   m
0016240        K   b   d   I   n   i   t   .   B   R       K   b   d   .
0016260    B   R  \r 374                                                
0016264