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