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