$ od -c -N 50000 [Indigo]<Chipmonk>rommaker>rommaker-sources.dm!16
0000000  377  \0  \0   m   b   .   m   e   s   a  \0 373 227 251 237 033
0000020   \0  \0 376 001  \0   %   k   -   -       f   i   l   e   :    
0000040        M   B   .   m   e   s   a  \r   -   -       l   a   s   t
0000060        m   o   d   i   f   i   e   d       b   y       M   c   C
0000100    r   e   i   g   h   t   ,       A   u   g   u   s   t       1
0000120    8   ,       1   9   8   1           1   0   :   4   6       A
0000140    M  \r   -   -       w   r   i   t   t   e   n       b   y    
0000160    M   c   C   r   e   i   g   h   t   ,       A   u   g   u   s
0000200    t       4   ,       1   9   8   1           2   :   4   4    
0000220    P   M  \r  \r   -   -       T   h   i   s       i   n   t   e
0000240    r   f   a   c   e       s   u   p   p   o   r   t   s       t
0000260    h   e       i   n   t   e   r   n   a   l   i   z   i   n   g
0000300        o   f       t   h   e       M   i   c   r   o       B   i
0000320    n   a   r   y       f   o   r   m   a   t  \r   -   -       f
0000340    i   l   e       o   r   i   g   i   n   a   l   l   y       i
0000360    n   t   r   o   d   u   c   e   d       b   y       D   e   u
0000400    t   s   c   h       i   n       t   h   e       e   a   r   l
0000420    y       1   9   7   0   ' 376 001  \0 304 005   s       a   n
0000440    d       n   o   w  \r   -   -       u   s   e   d       t   o
0000460        r   e   p   r   e   s   e   n   t       a   l   l       o
0000500    f       o   u   r       R   O   M       d   a   t   a   .    
0000520        A   s       d   e   f   i   n   e   d       i   n       M
0000540    a   x   c       D   o   c   u   m   e   n   t       9   .   2
0000560    ,  \r   -   -       d   a   t   e   d       J   u   l   y    
0000600    6   ,       1   9   7   2   ,       p   a   g   e   s       3
0000620    0   -   3   2   ,       t   h   e       f   o   r   m   a   t
0000640        i   s       a       s   e   q   u   e   n   c   e       o
0000660    f       M   B   I   t   e   m   s   .  \r  \r   D   I   R   E
0000700    C   T   O   R   Y  \r           S   t   r   e   a   m   D   e
0000720    f   s   :       F   R   O   M       "   S   t   r   e   a   m
0000740    D   e   f   s   "   ;  \r  \r   M   B   :       D   E   F   I
0000760    N   I   T   I   O   N   S       =       P   U   B   L   I   C
0001000   \r  \r           B   E   G   I   N  \r  \r           -   -    
0001020        T       Y       P       E       S  \r  \r 376 001  \0 202
0001040  244           M   B   I   t   e   m   T   y   p   e   :       T
0001060    Y   P   E       =       M   A   C   H   I   N   E       D   E
0001100    P   E   N   D   E   N   T   {  \r                   e   n   d
0001120    (   0   )   ,       d   a   t   a   W   o   r   d   (   1   )
0001140    ,       s   e   t   L   C   (   2   )   ,       f   i   x   u
0001160    p   (   3   )   ,       m   e   m   N   a   m   e   (   4   )
0001200    ,       a   d   d   r   S   y   m   (   5   )   ,       e   x
0001220    t   R   e   f   (   6   )   }   ;  \r           M   B   I   t
0001240    e   m   :       T   Y   P   E       =       M   A   C   H   I
0001260    N   E       D   E   P   E   N   D   E   N   T       R   E   C
0001300    O   R   D       [  \r                   u   g   h   (   0   )
0001320    :       S   E   L   E   C   T       i   t   e   m   T   y   p
0001340    e   (   0   )   :       M   B   I   t   e   m   T   y   p   e
0001360        F   R   O   M  \r                           e   n   d    
0001400    =   >       [   ]   ,  \r                           d   a   t
0001420    a   W   o   r   d       =   >       [           -   -       i
0001440    n 376 001  \0   7   .       c   u   r   r   e   n   t       m
0001460    e   m   o   r   y       a   t       c   u   r   r   e   n   t
0001500        L   C   ,       t   h   e   n       a   d   v   a   n   c
0001520    e       L   C  \r                                   l   i   n
0001540    e   N   o   (   1   )   :       C   A   R   D   I   N   A   L
0001560    ,  \r                                   b   i   t   s   (   2
0001600    )   :       P   A   C   K   E   D       A   R   R   A   Y    
0001620    [   0   .   .   0   )       O   F       B   O   O   L   E   A
0001640    N       -   -       h   i   g   h       o   r   d   e   r    
0001660    i   n       [   0   ]  \r                                   ]
0001700    ,  \r                           s   e   t   L   C       =   >
0001720        [   m   e   m   N   o   (   1   )   ,       l   o   c   a
0001740    t   i   o   n   (   2   )   :       C   A   R   D   I   N   A
0001760    L   ]   ,           -   -       m   a   k   e       t   h   i
0002000    s       m   e   m   o   r   y       a   n   d       L   C    
0002020    c   u   r   r   e   n   t  \r                           f   i
0002040    x   u   p       =   > 376 001  \0 314   "       [  \r        
0002060                            m   e   m   N   o   (   1   )   ,    
0002100    l   o   c   a   t   i   o   n   (   2   )   :       C   A   R
0002120    D   I   N   A   L   ,  \r                                   f
0002140    i   r   s   t   B   i   t   (   3   :   0   .   .   7   )   ,
0002160        l   a   s   t   B   i   t   (   3   :   8   .   .   1   5
0002200    )   :       [   0   .   .   2   5   5   ]   ,  \r            
0002220                        b   i   t   s   (   4   )   :       P   A
0002240    C   K   E   D       A   R   R   A   Y       [   0   .   .   1
0002260    5   ]       O   F       B   O   O   L   E   A   N   ]   ,    
0002300    -   -       h   i   g   h       o   r   d   e   r       i   n
0002320        [   0   ]  \r                           m   e   m   N   a
0002340    m   e       =   >       [  \r                                
0002360    m   e   m   N   o   (   1   )   ,       w   i   d   t   h   (
0002400    2   )   :       C   A   R   D   I   N   A   L   ,       n   a
0002420    m   e   (   3   )   :       P   A   C   K   E   D       A   R
0002440    R   A   Y       [   0   .   .   0   )     376 001  \0   a 035
0002460    O   F       C   H   A   R   A   C   T   E   R   ]   ,  \r    
0002500                        a   d   d   r   S   y   m       =   >    
0002520    [  \r                                   m   e   m   N   o   (
0002540    1   )   ,       l   o   c   a   t   i   o   n   (   2   )   :
0002560        C   A   R   D   I   N   A   L   ,  \r                    
0002600                n   a   m   e   (   3   )   :       P   A   C   K
0002620    E   D       A   R   R   A   Y       [   0   .   .   0   )    
0002640    O   F       C   H   A   R   A   C   T   E   R   ]   ,  \r    
0002660                        e   x   t   R   e   f       =   >       [
0002700   \r                                   m   e   m   N   o   (   1
0002720    )   ,       l   o   c   a   t   i   o   n   (   2   )   :    
0002740    C   A   R   D   I   N   A   L   ,  \r                        
0002760            f   i   r   s   t   B   i   t   (   3   :   0   .   .
0003000    7   )   ,       l   a   s   t   B   i   t   (   3   :   8   .
0003020    .   1   5   )   :       [   0   .   .   2   5   5   ]   ,  \r
0003040                                    n   a   m   e   (   4   )   :
0003060  376 001  \0  \t   x       P   A   C   K   E   D       A   R   R
0003100    A   Y       [   0   .   .   0   )       O   F       C   H   A
0003120    R   A   C   T   E   R   ]   ,  \r                           E
0003140    N   D   C   A   S   E   ]   ;  \r  \r           M   B   H   a
0003160    n   d   l   e   :       T   Y   P   E       =       M   B   M
0003200    e   m   o   r   y   P   t   r   ;  \r  \r           M   B   M
0003220    e   m   o   r   y   P   t   r   :       T   Y   P   E       =
0003240        L   O   N   G       P   O   I   N   T   E   R       T   O
0003260        M   B   M   e   m   o   r   y   ;  \r           M   B   M
0003300    e   m   o   r   y   :       T   Y   P   E       =       R   E
0003320    C   O   R   D       [  \r                   n   e   x   t   M
0003340    e   m   :       M   B   M   e   m   o   r   y   P   t   r    
0003360    _       N   I   L   ,  \r                   n   a   m   e   :
0003400        L   O   N   G       S   T   R   I   N   G       _       N
0003420    I   L   ,  \r                   z   o   n   e   :       U   N
0003440    C   O   U   N   T   E   D       Z   O   N   E       _       N
0003460    I   L   ,  \r     376 001  \0 324   E               m   e   m
0003500    N   o   ,       l   e   n   g   t   h   ,       w   i   d   t
0003520    h   :       C   A   R   D   I   N   A   L   ,  \r            
0003540        w   o   r   d   s   :       M   B   W   o   r   d   P   t
0003560    r       _       N   I   L   ,  \r                   s   y   m
0003600    b   o   l   s   :       M   B   S   y   m   P   t   r       _
0003620        N   I   L   ]   ;  \r  \r           M   B   W   o   r   d
0003640    P   t   r   :       T   Y   P   E       =       L   O   N   G
0003660        P   O   I   N   T   E   R       T   O       M   B   W   o
0003700    r   d   ;  \r           M   B   W   o   r   d   :       T   Y
0003720    P   E       =       R   E   C   O   R   D       [  \r        
0003740            n   e   x   t   W   o   r   d   :       M   B   W   o
0003760    r   d   P   t   r       _       N   I   L   ,  \r            
0004000        l   o   c   a   t   i   o   n   :       L   O   N   G    
0004020    C   A   R   D   I   N   A   L   ,  \r                   v   a
0004040    l   u   e   :       P   A   C   K   E   D       S   E   Q   U
0004060    E   N   C   E       C   O   M   P   U 376 001  \0 034   X   T
0004100    E   D       C   A   R   D   I   N   A   L       O   F       B
0004120    O   O   L   E   A   N       -   -       l   o   w       o   r
0004140    d   e   r       i   n       [   0   ]  \r                   ]
0004160    ;  \r  \r           M   B   S   y   m   P   t   r   :       T
0004200    Y   P   E       =       L   O   N   G       P   O   I   N   T
0004220    E   R       T   O       M   B   S   y   m   ;  \r           M
0004240    B   S   y   m   :       T   Y   P   E       =       R   E   C
0004260    O   R   D       [  \r                   n   e   x   t   S   y
0004300    m   :       M   B   S   y   m   P   t   r   ,       l   o   c
0004320    a   t   i   o   n   :       L   O   N   G       C   A   R   D
0004340    I   N   A   L   ,       n   a   m   e   :       L   O   N   G
0004360        S   T   R   I   N   G   ]   ;  \r  \r           B   i   t
0004400    S   o   u   r   c   e   :       T   Y   P   E       =       R
0004420    E   C   O   R   D   [  \r                   i   n   v   e   r
0004440    t   :       B   O   O   L   E   A   N       _       F   A   L
0004460    S   E   ,  \r                   s   :       S   E   L   E 376
0004500  001  \0 366   z   C   T       s   o   u   r   c   e   :       *
0004520        F   R   O   M  \r                           c   o   n   s
0004540    t   a   n   t   F   a   l   s   e       =   >       N   U   L
0004560    L   ,  \r                           a   d   d   r   B   i   t
0004600        =   >       [   i   n   d   e   x   :       C   A   R   D
0004620    I   N   A   L   ]   ,  \r                           E   N   D
0004640    C   A   S   E  \r                   ]   ;  \r           P   e
0004660    r   m   u   t   a   t   i   o   n   :       T   Y   P   E    
0004700    =       R   E   C   O   R   D   [  \r                   s   e
0004720    q   :       S   E   Q   U   E   N   C   E       l   e   n   g
0004740    t   h   :       C   A   R   D   I   N   A   L       O   F    
0004760    B   i   t   S   o   u   r   c   e  \r                   ]   ;
0005000   \r                   -   -       P   e   r   m   u   t   a   t
0005020    i   o   n   [   0   ]       s   a   y   s       h   o   w    
0005040    t   o       c   o   m   p   u   t   e       t   h   e       l
0005060    o   w   -   o   r   d   e   r       b   i   t  \r           P
0005100    e   r   m   u 376 001  \0 210   2   t   a   t   i   o   n   P
0005120    t   r   :       T   Y   P   E       =       L   O   N   G    
0005140    P   O   I   N   T   E   R       T   O       P   e   r   m   u
0005160    t   a   t   i   o   n   ;  \r  \r           -   -            
0005200    P       R       O       C       E       D       U       R    
0005220    E       S  \r  \r  \r           I   l   l   e   g   a   l   M
0005240    B   F   o   r   m   a   t   :       S   I   G   N   A   L   ;
0005260   \r  \r           R   e   a   d   M   B   :       P   R   O   C
0005300    E   D   U   R   E       [  \r                   s   :       S
0005320    t   r   e   a   m   D   e   f   s   .   S   t   r   e   a   m
0005340    H   a   n   d   l   e       -   -       a       w   o   r   d
0005360        s   t   r   e   a   m       -   -       ,       z   :    
0005400    U   N   C   O   U   N   T   E   D       Z   O   N   E   ]  \r
0005420                    R   E   T   U   R   N   S       [   M   B   H
0005440    a   n   d   l   e   ]   ;  \r  \r           F   r   e   e   M
0005460    B   :       P   R   O   C   E   D   U   R   E       [   m   b
0005500    :       M   B   H   a   n   d   l 376 001  \0 223 371   e   ]
0005520    ;  \r  \r           F   r   e   e   M   B   M   e   m   o   r
0005540    y   :       P   R   O   C   E   D   U   R   E       [   m   e
0005560    m   P   :       L   O   N   G       P   O   I   N   T   E   R
0005600        T   O       M   B   M   e   m   o   r   y   P   t   r   ]
0005620    ;  \r  \r           F   i   n   d   M   B   M   e   m   o   r
0005640    y   :       P   R   O   C   E   D   U   R   E       [   m   b
0005660    :       M   B   H   a   n   d   l   e   ,       m   e   m   N
0005700    a   m   e   :       S   T   R   I   N   G   ]       R   E   T
0005720    U   R   N   S       [   M   B   M   e   m   o   r   y   P   t
0005740    r   ]   ;  \r  \r           A   n   a   l   y   z   e   M   e
0005760    m   o   r   y   :       P   R   O   C   E   D   U   R   E    
0006000    [   m   e   m   :       M   B   M   e   m   o   r   y   P   t
0006020    r   ]  \r                   R   E   T   U   R   N   S       [
0006040    d   e   c   o   d   e   W   i   d   t   h   ,       w   o   r
0006060    d   C   o   u   n   t   ,       w   o   r   d   W   i   d   t
0006100    h   :       C   A   R   D   I   N   A   L   ]   ;  \r 376 001
0006120   \0   R 374  \r           S   u   p   p   r   e   s   s   D   e
0006140    f   a   u   l   t   W   o   r   d   s   :       P   R   O   C
0006160    E   D   U   R   E       [   m   e   m   :       M   B   M   e
0006200    m   o   r   y   P   t   r   ,       d   e   f   a   u   l   t
0006220    :       B   O   O   L   E   A   N   ]   ;  \r  \r           R
0006240    e   C   a   s   t   :       P   R   O   C   E   D   U   R   E
0006260        [   m   e   m   :       M   B   M   e   m   o   r   y   P
0006300    t   r   ,       n   e   w   W   o   r   d   W   i   d   t   h
0006320    :       C   A   R   D   I   N   A   L   ]   ;  \r            
0006340        -   -       s   t   e   a   l   s       l   o   w   -   o
0006360    r   d   e   r       a   d   d   r   e   s   s       b   i   t
0006400    s       t   o       w   i   d   e   n       t   h   e       w
0006420    o   r   d       b   y       a       p   o   w   e   r       o
0006440    f       2   .  \r                   -   -       p   u   t   s
0006460        a   l   l       o   r   i   g   i   n   a   l       b   i
0006500    t       0   '   s       t   o   g   e   t   h   e   r   ,    
0006520    t   h   e 376 001  \0   ! 234   n       a   l   l       b   i
0006540    t       1   '   s   ,       t   h   e   n       b   i   t    
0006560    2   '   s   ,       e   t   c   .  \r  \r           P   e   r
0006600    m   u   t   e   A   d   d   r   e   s   s   :       P   R   O
0006620    C   E   D   U   R   E       [   m   e   m   :       M   B   M
0006640    e   m   o   r   y   P   t   r   ,       p   :       P   e   r
0006660    m   u   t   a   t   i   o   n   P   t   r   ]   ;  \r  \r    
0006700        P   e   r   m   u   t   e   D   a   t   a   :       P   R
0006720    O   C   E   D   U   R   E       [   m   e   m   :       M   B
0006740    M   e   m   o   r   y   P   t   r   ,       p   :       P   e
0006760    r   m   u   t   a   t   i   o   n   P   t   r   ]   ;  \r  \r
0007000            F   i   n   d   M   B   B   i   t   :       P   R   O
0007020    C   E   D   U   R   E       [  \r                   m   b   :
0007040        M   B   H   a   n   d   l   e   ,       m   e   m   N   a
0007060    m   e   :       S   T   R   I   N   G   ,       w   o   r   d
0007100    :       L   O   N   G       C   A   R   D   I   N   A   L   ,
0007120        b   i   t   :       C   A 376  \0   . 272 005   R   D   I
0007140    N   A   L   ]  \r                   R   E   T   U   R   N   S
0007160        [   B   O   O   L   E   A   N   ]   ;  \r  \r           E
0007200    N   D   .       -   -       M   B  \r  \r 377  \0  \0   m   b
0007220    i   m   p   l   .   m   e   s   a  \0 373 227 251 261 374  \0
0007240   \0 376 001  \0   J   Y   -   -       f   i   l   e   :        
0007260    M   B   I   m   p   l   .   m   e   s   a  \r   -   -       l
0007300    a   s   t       m   o   d   i   f   i   e   d       b   y    
0007320    M   c   C   r   e   i   g   h   t   ,       A   u   g   u   s
0007340    t       1   8   ,       1   9   8   1           5   :   1   0
0007360        P   M  \r   -   -       w   r   i   t   t   e   n       b
0007400    y       M   c   C   r   e   i   g   h   t   ,       A   u   g
0007420    u   s   t       4   ,       1   9   8   1           2   :   4
0007440    4       P   M  \r  \r   D   I   R   E   C   T   O   R   Y  \r
0007460            I   n   l   i   n   e   D   e   f   s   :       F   R
0007500    O   M       "   I   n   l   i   n   e   D   e   f   s   "   ,
0007520   \r           M   B   :       F   R   O   M       "   M   B   "
0007540    ,  \r           S   t   r   e   a   m   D   e   f   s   :    
0007560    F   R   O   M       "   S   t   r   e   a   m   D   e   f   s
0007600    "   ,  \r           S   t   r   i   n   g   D   e   f   s   :
0007620        F   R   O   M       "   S   t   r   i   n   g   D   e   f
0007640    s   "   ;  \r  \r  \r 376 001  \0 362 257   M   B   I   m   p
0007660    l   :       P   R   O   G   R   A   M       I   M   P   O   R
0007700    T   S       I   n   l   i   n   e   D   e   f   s   ,   S   t
0007720    r   i   n   g   D   e   f   s       E   X   P   O   R   T   S
0007740        M   B       =       P   U   B   L   I   C  \r  \r        
0007760    B   E   G   I   N       O   P   E   N       M   B   ;  \r  \r
0010000            I   l   l   e   g   a   l   M   B   F   o   r   m   a
0010020    t   :       S   I   G   N   A   L       =       C   O   D   E
0010040    ;  \r  \r           c   u   r   M   B   :       M   B   H   a
0010060    n   d   l   e       _       N   I   L   ;  \r           c   u
0010100    r   M   e   m   :       M   B   M   e   m   o   r   y   P   t
0010120    r       _       N   I   L   ;           -   -       a   l   w
0010140    a   y   s       i   n       c   u   r   M   B  \r           c
0010160    u   r   W   o   r   d   :       M   B   W   o   r   d   P   t
0010200    r       _       N   I   L   ;           -   -       a   l   w
0010220    a   y   s       i   n       c   u   r   M   e   m  \r  \r    
0010240        R   e   a   d   M   B   :       P   R 376 001  \0   k 323
0010260    O   C   E   D   U   R   E       [  \r                   s   :
0010300        S   t   r   e   a   m   D   e   f   s   .   S   t   r   e
0010320    a   m   H   a   n   d   l   e       -   -       a       w   o
0010340    r   d       s   t   r   e   a   m       -   -       ,       z
0010360    :       U   N   C   O   U   N   T   E   D       Z   O   N   E
0010400    ]  \r                   R   E   T   U   R   N   S       [   m
0010420    b   :       M   B   H   a   n   d   l   e   ]       =  \r    
0010440                B   E   G   I   N  \r                   F   a   k
0010460    e   I   t   e   m   :       T   Y   P   E       =       A   R
0010500    R   A   Y       [   0   .   .   9   9   ]       O   F       W
0010520    O   R   D   ;  \r                   f   a   k   e   I   t   e
0010540    m   :       F   a   k   e   I   t   e   m   ;  \r            
0010560        i   t   e   m   :       L   O   N   G       P   O   I   N
0010600    T   E   R       T   O       M   B   I   t   e   m       _    
0010620    L   O   N   G   [   L   O   O   P   H   O   L   E   [   @   f
0010640    a   k   e   I   t   e   m   ]   ]   ;  \r                   c
0010660  376 001  \0   H   N   u   r   L   C   :       C   A   R   D   I
0010700    N   A   L   ;           -   -       i   n       c   u   r   M
0010720    e   m  \r  \r                   G   e   t   N   e   x   t   I
0010740    t   e   m   :       P   R   O   C   E   D   U   R   E       =
0010760   \r                           B   E   G   I   N           -   -
0011000        f   a   k   e   I   t   e   m       a   n   d       i   t
0011020    e   m       m   u   s   t       l   i   e       i   n       t
0011040    h   e       s   a   m   e       s   t   o   r   a   g   e  \r
0011060                            i   :       C   A   R   D   I   N   A
0011100    L   ;  \r                           f   a   k   e   I   t   e
0011120    m   [   0   ]       _       s   .   g   e   t   [   s   ]   ;
0011140   \r                           S   E   L   E   C   T       i   t
0011160    e   m   .   i   t   e   m   T   y   p   e       F   R   O   M
0011200   \r                                   e   n   d       =   >    
0011220    R   E   T   U   R   N   ;  \r                                
0011240    d   a   t   a   W   o   r   d       =   >  \r                
0011260                      376 001  \0   N 227       F   O   R       i
0011300        I   N       [   1   .   .   1       +       (   c   u   r
0011320    M   e   m   .   w   i   d   t   h       +       1   5   )   /
0011340    1   6   ]       D   O  \r                                    
0011360                f   a   k   e   I   t   e   m   [   i   ]       _
0011400        s   .   g   e   t   [   s   ]       E   N   D   L   O   O
0011420    P   ;  \r                                   s   e   t   L   C
0011440        =   >       F   O   R       i       I   N       [   1   .
0011460    .   2   ]       D   O       f   a   k   e   I   t   e   m   [
0011500    i   ]       _       s   .   g   e   t   [   s   ]       E   N
0011520    D   L   O   O   P   ;  \r                                   f
0011540    i   x   u   p       =   >       F   O   R       i       I   N
0011560        [   1   .   .   4   ]       D   O       f   a   k   e   I
0011600    t   e   m   [   i   ]       _       s   .   g   e   t   [   s
0011620    ]       E   N   D   L   O   O   P   ;  \r                    
0011640                m   e   m   N   a   m   e   ,       a   d   d   r
0011660    S   y   m       =   >  \r             376 001  \0 272 226    
0011700                            B   E   G   I   N  \r                
0011720                            F   O   R       i       I   N       [
0011740    1   .   .   2   ]       D   O       f   a   k   e   I   t   e
0011760    m   [   i   ]       _       s   .   g   e   t   [   s   ]    
0012000    E   N   D   L   O   O   P   ;  \r                            
0012020                F   O   R       i       I   N       [   3   .   .
0012040    9   9   ]       D   O  \r                                    
0012060                c   :       P   A   C   K   E   D       A   R   R
0012100    A   Y       [   0   .   .   1   ]       O   F       C   H   A
0012120    R   A   C   T   E   R   ;  \r                                
0012140                    f   a   k   e   I   t   e   m   [   i   ]    
0012160    _       s   .   g   e   t   [   s   ]   ;  \r                
0012200                                    c       _       L   O   O   P
0012220    H   O   L   E   [   f   a   k   e   I   t   e   m   [   i   ]
0012240    ,       P   A   C   K   E   D       A   R   R   A   Y       [
0012260    0   .   .   1   ]       O   F       C   H   A   R   A   C 376
0012300  001  \0   N 215   T   E   R   ]   ;  \r                        
0012320                            I   F       c   [   0   ]       =    
0012340    0   C       O   R       c   [   1   ]       =       0   C    
0012360    T   H   E   N       E   X   I   T   ;  \r                    
0012400                                E   N   D   L   O   O   P   ;  \r
0012420                                            E   N   D   ;  \r    
0012440                                e   x   t   R   e   f       =   >
0012460   \r                                           B   E   G   I   N
0012500   \r                                           F   O   R       i
0012520        I   N       [   1   .   .   3   ]       D   O       f   a
0012540    k   e   I   t   e   m   [   i   ]       _       s   .   g   e
0012560    t   [   s   ]       E   N   D   L   O   O   P   ;  \r        
0012600                                    F   O   R       i       I   N
0012620        [   4   .   .   9   9   ]       D   O  \r                
0012640                                    c   :       P   A   C   K   E
0012660    D       A   R   R   A   Y       [   0   .   .   1   ]       O
0012700    F       C   H 376 001  \0 331   t   A   R   A   C   T   E   R
0012720    ;  \r                                                   f   a
0012740    k   e   I   t   e   m   [   i   ]       _       s   .   g   e
0012760    t   [   s   ]   ;  \r                                        
0013000            c       _       L   O   O   P   H   O   L   E   [   f
0013020    a   k   e   I   t   e   m   [   i   ]   ,       P   A   C   K
0013040    E   D       A   R   R   A   Y       [   0   .   .   1   ]    
0013060    O   F       C   H   A   R   A   C   T   E   R   ]   ;  \r    
0013100                                                I   F       c   [
0013120    0   ]       =       0   C       O   R       c   [   1   ]    
0013140    =       0   C       T   H   E   N       E   X   I   T   ;  \r
0013160                                                    E   N   D   L
0013200    O   O   P   ;  \r                                           E
0013220    N   D   ;  \r                                   E   N   D   C
0013240    A   S   E   ;  \r                           E   N   D   ;  \r
0013260   \r                   F   i   n   d   M   e   m   :       P   R
0013300    O   C   E   D   U   R   E       [ 376 001  \0   E 223   m   e
0013320    m   N   o   :       C   A   R   D   I   N   A   L   ]       R
0013340    E   T   U   R   N   S       [   m   :       M   B   M   e   m
0013360    o   r   y   P   t   r   ]       =       {  \r                
0013400            F   O   R       m       _       m   b   ,       m   .
0013420    n   e   x   t   M   e   m       U   N   T   I   L       m    
0013440    =       N   I   L       O   R       m   .   m   e   m   N   o
0013460        =       m   e   m   N   o       D   O       E   N   D   L
0013500    O   O   P   }   ;  \r  \r                   m   b       _    
0013520    N   I   L   ;  \r                   s   .   r   e   s   e   t
0013540    [   s   ]   ;  \r                   D   O  \r                
0013560            G   e   t   N   e   x   t   I   t   e   m   [   ]   ;
0013600   \r                           W   I   T   H       d   i   t   e
0013620    m   :       i   t   e   m       S   E   L   E   C   T       F
0013640    R   O   M  \r                                   e   n   d    
0013660    =   >       E   X   I   T   ;  \r                            
0013700        d   a   t   a   W   o   r   d       =   >  \r     376 001
0013720   \0 243   u                                       B   E   G   I
0013740    N  \r                                           w   :       M
0013760    B   W   o   r   d   P   t   r       _       F   i   n   d   W
0014000    o   r   d   [   c   u   r   M   e   m   ,       c   u   r   L
0014020    C   ]   ;  \r                                           F   O
0014040    R       i   :       C   A   R   D   I   N   A   L       I   N
0014060        [   0   .   .   c   u   r   M   e   m   .   w   i   d   t
0014100    h   )       D   O  \r                                        
0014120            w   .   v   a   l   u   e   [   i   ]       _       d
0014140    i   t   e   m   .   b   i   t   s   [   i   ]       E   N   D
0014160    L   O   O   P   ;  \r                                        
0014200    c   u   r   L   C       _       c   u   r   L   C       +    
0014220    1   ;  \r                                           E   N   D
0014240    ;  \r                                   s   e   t   L   C    
0014260    =   >       B   E   G   I   N       c   u   r   M   e   m    
0014300    _       F   i   n   d   M   e   m   [   d   i   t   e   m   .
0014320    m   e   m 376 001  \0 361 305   N   o   ]   ;       c   u   r
0014340    L   C       _       d   i   t   e   m   .   l   o   c   a   t
0014360    i   o   n   ;       E   N   D   ;  \r                        
0014400            f   i   x   u   p       =   >  \r                    
0014420                        B   E   G   I   N  \r                    
0014440                        w   :       M   B   W   o   r   d   P   t
0014460    r       _       F   i   n   d   W   o   r   d   [   F   i   n
0014500    d   M   e   m   [   d   i   t   e   m   .   m   e   m   N   o
0014520    ]   ,       d   i   t   e   m   .   l   o   c   a   t   i   o
0014540    n   ]   ;  \r                                           F   O
0014560    R       i   :       C   A   R   D   I   N   A   L       I   N
0014600        [   d   i   t   e   m   .   f   i   r   s   t   B   i   t
0014620    .   .   d   i   t   e   m   .   l   a   s   t   B   i   t   ]
0014640        D   O  \r                                                
0014660    w   .   v   a   l   u   e   [   i   ]       _       d   i   t
0014700    e   m   .   b   i   t   s   [   i       -       d   i   t   e
0014720    m   .   f   i   r   s   t   B 376 001  \0   J 336   i   t   ]
0014740        E   N   D   L   O   O   P   ;  \r                        
0014760                    E   N   D   ;  \r                            
0015000        m   e   m   N   a   m   e       =   >  \r                
0015020                            B   E   G   I   N  \r                
0015040                            n   a   m   e   L   e   n   :       C
0015060    A   R   D   I   N   A   L   ;  \r                            
0015100                m   b       _       z   .   N   E   W   [  \r    
0015120                                                M   B   M   e   m
0015140    o   r   y       _       [  \r                                
0015160                    z   o   n   e   :       z   ,       n   e   x
0015200    t   M   e   m   :       m   b   ,       n   a   m   e   :    
0015220    N   I   L   ,       m   e   m   N   o   :       d   i   t   e
0015240    m   .   m   e   m   N   o   ,       l   e   n   g   t   h   :
0015260        0   ,  \r                                                
0015300    w   i   d   t   h   :       d   i   t   e   m   .   w   i   d
0015320    t   h   ,       w   o   r   d   s   :       N   I 376 001  \0
0015340  277 316   L   ,       s   y   m   b   o   l   s   :       N   I
0015360    L   ]   ]   ;  \r                                           F
0015400    O   R       n   a   m   e   L   e   n       _       0   ,    
0015420    n   a   m   e   L   e   n       +       1       W   H   I   L
0015440    E       d   i   t   e   m   .   n   a   m   e   [   n   a   m
0015460    e   L   e   n   ]       #       0   C       D   O       E   N
0015500    D   L   O   O   P   ;  \r                                    
0015520        m   b   .   n   a   m   e       _       z   .   N   E   W
0015540    [   S   t   r   i   n   g   B   o   d   y       [   n   a   m
0015560    e   L   e   n   ]   ]   ;  \r                                
0015600            F   O   R       i   :       C   A   R   D   I   N   A
0015620    L       I   N       [   0   .   .   n   a   m   e   L   e   n
0015640    )       D   O       m   b   .   n   a   m   e   [   i   ]    
0015660    _       d   i   t   e   m   .   n   a   m   e   [   i   ]    
0015700    E   N   D   L   O   O   P   ;  \r                            
0015720                m   b   .   n   a   m   e   .   l   e   n   g   t
0015740    h     376 001  \0 242 260   _       n   a   m   e   L   e   n
0015760    ;  \r                                           E   N   D   ;
0016000   \r                                   a   d   d   r   S   y   m
0016020        =   >  \r                                           B   E
0016040    G   I   N  \r                                           n   a
0016060    m   e   L   e   n   :       C   A   R   D   I   N   A   L   ;
0016100   \r                                           m   :       M   B
0016120    M   e   m   o   r   y   P   t   r       _       F   i   n   d
0016140    M   e   m   [   d   i   t   e   m   .   m   e   m   N   o   ]
0016160    ;  \r                                           m   .   s   y
0016200    m   b   o   l   s       _       z   .   N   E   W   [  \r    
0016220                                                M   B   S   y   m
0016240        _       [   n   e   x   t   S   y   m   :       m   .   s
0016260    y   m   b   o   l   s   ,       l   o   c   a   t   i   o   n
0016300    :       d   i   t   e   m   .   l   o   c   a   t   i   o   n
0016320    ,       n   a   m   e   :       N   I   L   ]   ]   ;  \r    
0016340                              376 001  \0   *   ;           F   O
0016360    R       n   a   m   e   L   e   n       _       0   ,       n
0016400    a   m   e   L   e   n       +       1       W   H   I   L   E
0016420        d   i   t   e   m   .   n   a   m   e   [   n   a   m   e
0016440    L   e   n   ]       #       0   C       D   O       E   N   D
0016460    L   O   O   P   ;  \r                                        
0016500    m   .   s   y   m   b   o   l   s   .   n   a   m   e       _
0016520        z   .   N   E   W   [   S   t   r   i   n   g   B   o   d
0016540    y       [   n   a   m   e   L   e   n   ]   ]   ;  \r        
0016560                                    F   O   R       i   :       C
0016600    A   R   D   I   N   A   L       I   N       [   0   .   .   n
0016620    a   m   e   L   e   n   )       D   O  \r                    
0016640                                m   .   s   y   m   b   o   l   s
0016660    .   n   a   m   e   [   i   ]       _       d   i   t   e   m
0016700    .   n   a   m   e   [   i   ]       E   N   D   L   O   O   P
0016720    ;  \r                                           m   .   s   y
0016740    m   b   o   l   s   .   n   a   m   e   .   l 376 001  \0   _
0016760    A   e   n   g   t   h       _       n   a   m   e   L   e   n
0017000    ;  \r                                           E   N   D   ;
0017020   \r                                   E   N   D   C   A   S   E
0017040        =   >       S   I   G   N   A   L       I   l   l   e   g
0017060    a   l   M   B   F   o   r   m   a   t   ;  \r                
0017100            E   N   D   L   O   O   P   ;  \r                   E
0017120    N   D   ;           -   -       o   f       R   e   a   d   M
0017140    B  \r  \r           F   r   e   e   M   B   M   e   m   o   r
0017160    y   :       P   R   O   C   E   D   U   R   E       [   m   e
0017200    m   P   :       L   O   N   G       P   O   I   N   T   E   R
0017220        T   O       M   B   M   e   m   o   r   y   P   t   r   ]
0017240        =  \r                   B   E   G   I   N  \r            
0017260        I   F       c   u   r   M   B       =       m   e   m   P
0017300    ^       T   H   E   N       c   u   r   M   B       _       N
0017320    I   L   ;  \r                   I   F       m   e   m   P   ^
0017340        #       N   I   L       T   H   E   N  \r                
0017360      376 001  \0 377   ;       B   E   G   I   N  \r            
0017400                m   :       M   B   M   e   m   o   r   y   P   t
0017420    r       _       m   e   m   P   ^   ;  \r                    
0017440        z   :       U   N   C   O   U   N   T   E   D       Z   O
0017460    N   E       _       m   .   z   o   n   e   ;  \r            
0017500                z   .   F   R   E   E   [   @   m   .   n   a   m
0017520    e   ]   ;  \r                           F   r   e   e   M   B
0017540    M   e   m   o   r   y   W   o   r   d   s   [   m   ]   ;  \r
0017560                            F   r   e   e   M   B   M   e   m   o
0017600    r   y   S   y   m   b   o   l   s   [   m   ]   ;  \r        
0017620                    m   e   m   P   ^       _       m   .   n   e
0017640    x   t   M   e   m   ;  \r                           z   .   F
0017660    R   E   E   [   @   m   ]   ;  \r                           E
0017700    N   D   ;  \r                   E   N   D   ;  \r  \r        
0017720    F   r   e   e   M   B   M   e   m   o   r   y   W   o   r   d
0017740    s   :       P   R   O   C   E   D   U   R   E       [   m   e
0017760    m   :       M   B   M 376 001  \0 004   ^   e   m   o   r   y
0020000    P   t   r   ]       =  \r                   B   E   G   I   N
0020020   \r                   W   H   I   L   E       m   e   m   .   w
0020040    o   r   d   s       #       N   I   L       D   O  \r        
0020060                    w   :       M   B   W   o   r   d   P   t   r
0020100        _       m   e   m   .   w   o   r   d   s   ;  \r        
0020120                    m   e   m   .   w   o   r   d   s       _    
0020140    w   .   n   e   x   t   W   o   r   d   ;  \r                
0020160            m   e   m   .   z   o   n   e   .   F   R   E   E   [
0020200    @   w   ]   ;  \r                           E   N   D   L   O
0020220    O   P   ;  \r                   E   N   D   ;  \r  \r        
0020240    F   r   e   e   M   B   M   e   m   o   r   y   S   y   m   b
0020260    o   l   s   :       P   R   O   C   E   D   U   R   E       [
0020300    m   e   m   :       M   B   M   e   m   o   r   y   P   t   r
0020320    ]       =  \r                   B   E   G   I   N  \r        
0020340            W   H   I   L   E       m   e   m   .   s   y   m   b
0020360    o   l   s       #       N   I   L       D 376 001  \0 352   F
0020400    O  \r                           s   :       M   B   S   y   m
0020420    P   t   r       _       m   e   m   .   s   y   m   b   o   l
0020440    s   ;  \r                           m   e   m   .   s   y   m
0020460    b   o   l   s       _       s   .   n   e   x   t   S   y   m
0020500    ;  \r                           m   e   m   .   z   o   n   e
0020520    .   F   R   E   E   [   @   s   .   n   a   m   e   ]   ;  \r
0020540                            m   e   m   .   z   o   n   e   .   F
0020560    R   E   E   [   @   s   ]   ;  \r                           E
0020600    N   D   L   O   O   P   ;  \r                   E   N   D   ;
0020620   \r  \r           F   r   e   e   M   B   :       P   R   O   C
0020640    E   D   U   R   E       [   m   b   :       M   B   H   a   n
0020660    d   l   e   ]       =       {  \r                   W   H   I
0020700    L   E       m   b       #       N   I   L       D   O       F
0020720    r   e   e   M   B   M   e   m   o   r   y   [   @   m   b   ]
0020740        E   N   D   L   O   O   P   }   ;  \r  \r           F   i
0020760    n   d   W   o   r   d   :       P   R   O   C   E   D   U   R
0021000  376 001  \0 200 355   E       [   m   :       M   B   M   e   m
0021020    o   r   y   P   t   r   ,       l   o   c   a   t   i   o   n
0021040    :       L   O   N   G       C   A   R   D   I   N   A   L   ]
0021060   \r                   R   E   T   U   R   N   S       [   w   :
0021100        M   B   W   o   r   d   P   t   r   ]       =  \r        
0021120            B   E   G   I   N           -   -       w   o   r   d
0021140    s       a   p   p   e   a   r       i   n       a   d   d   r
0021160    e   s   s       o   r   d   e   r  \r                   l   a
0021200    s   t   w   :       M   B   W   o   r   d   P   t   r       _
0021220        N   I   L   ;  \r                   w       _  \r        
0021240                    I   F       m       =       c   u   r   M   e
0021260    m       A   N   D       c   u   r   W   o   r   d       #    
0021300    N   I   L       A   N   D       c   u   r   W   o   r   d   .
0021320    l   o   c   a   t   i   o   n       <   =       l   o   c   a
0021340    t   i   o   n       T   H   E   N  \r                        
0021360    c   u   r   W   o   r   d       E   L   S   E       m   .   w
0021400    o   r   d   s   ; 376 001  \0   2 001  \r                   W
0021420    H   I   L   E       w       #       N   I   L       A   N   D
0021440        w   .   l   o   c   a   t   i   o   n       <       l   o
0021460    c   a   t   i   o   n       D   O       l   a   s   t   w    
0021500    _       w   ;       w       _       w   .   n   e   x   t   W
0021520    o   r   d       E   N   D   L   O   O   P   ;  \r            
0021540        I   F       w       =       N   I   L       O   R       l
0021560    o   c   a   t   i   o   n       <       w   .   l   o   c   a
0021600    t   i   o   n       T   H   E   N  \r                        
0021620    B   E   G   I   N           -   -       i   n   s   e   r   t
0021640        a       n   e   w       w   o   r   d  \r                
0021660            w       _       m   .   z   o   n   e   .   N   E   W
0021700    [  \r                                   M   B   W   o   r   d
0021720        [   m   .   w   i   d   t   h   ]       _       [   n   e
0021740    x   t   W   o   r   d   :       w   ,       l   o   c   a   t
0021760    i   o   n   :       l   o   c   a   t   i   o   n   ,       v
0022000    a   l   u   e   :       N   U   L   L 376 001  \0   7 324   ]
0022020    ]   ;  \r                           F   O   R       i   :    
0022040    C   A   R   D   I   N   A   L       I   N       [   0   .   .
0022060    m   .   w   i   d   t   h   )       D   O       w   .   v   a
0022100    l   u   e   [   i   ]       _       F   A   L   S   E       E
0022120    N   D   L   O   O   P   ;  \r                           I   F
0022140        l   a   s   t   w       =       N   I   L       T   H   E
0022160    N       m   .   w   o   r   d   s       _       w       E   L
0022200    S   E       l   a   s   t   w   .   n   e   x   t   W   o   r
0022220    d       _       w   ;  \r                           E   N   D
0022240    ;  \r                   I   F       m       =       c   u   r
0022260    M   e   m       T   H   E   N       c   u   r   W   o   r   d
0022300        _       w   ;  \r                   E   N   D   ;        
0022320    -   -       o   f       F   i   n   d   W   o   r   d  \r  \r
0022340            F   i   n   d   M   B   M   e   m   o   r   y   :    
0022360    P   R   O   C   E   D   U   R   E       [   m   b   :       M
0022400    B   H   a   n   d   l   e   ,       m   e   m   N   a   m 376
0022420  001  \0  \f   5   e   :       S   T   R   I   N   G   ]       R
0022440    E   T   U   R   N   S       [   M   B   M   e   m   o   r   y
0022460    P   t   r   ]       =  \r                   B   E   G   I   N
0022500   \r                   F   O   R       m   e   m   :       M   B
0022520    M   e   m   o   r   y   P   t   r       _       m   b   ,    
0022540    m   e   m   .   n   e   x   t   M   e   m       W   H   I   L
0022560    E       m   e   m       #       N   I   L       D   O  \r    
0022600                        I   F       E   q   u   i   v   a   l   e
0022620    n   t   L   o   n   g   S   t   r   i   n   g   s   [   m   e
0022640    m   .   n   a   m   e   ,       m   e   m   N   a   m   e   ]
0022660        T   H   E   N       R   E   T   U   R   N   [   m   e   m
0022700    ]   ;       E   N   D   L   O   O   P   ;  \r                
0022720    R   E   T   U   R   N   [   N   I   L   ]   ;  \r            
0022740        E   N   D   ;  \r  \r           A   n   a   l   y   z   e
0022760    M   e   m   o   r   y   :       P   R   O   C   E   D   U   R
0023000    E       [   m   e   m   :       M   B   M   e   m   o   r   y
0023020    P   t   r   ] 376 001  \0   R 316  \r                   R   E
0023040    T   U   R   N   S       [   d   e   c   o   d   e   W   i   d
0023060    t   h   ,       w   o   r   d   C   o   u   n   t   ,       w
0023100    o   r   d   W   i   d   t   h   :       C   A   R   D   I   N
0023120    A   L   ]       =  \r                   B   E   G   I   N  \r
0023140                    m   a   x   A   d   d   r   e   s   s   :    
0023160    L   O   N   G       C   A   R   D   I   N   A   L       _    
0023200    0   ;  \r                   w   o   r   d   W   i   d   t   h
0023220        _       m   e   m   .   w   i   d   t   h   ;  \r        
0023240            d   e   c   o   d   e   W   i   d   t   h       _    
0023260    0   ;  \r                   w   o   r   d   C   o   u   n   t
0023300        _       0   ;  \r                   F   O   R       w   :
0023320        M   B   W   o   r   d   P   t   r       _       m   e   m
0023340    .   w   o   r   d   s   ,       w   .   n   e   x   t   W   o
0023360    r   d       W   H   I   L   E       w       #       N   I   L
0023400        D   O  \r                           W   H   I   L   E    
0023420    w   .   l   o   c   a   t   i   o 376 001  \0 334 030   n    
0023440    >       m   a   x   A   d   d   r   e   s   s       D   O  \r
0023460                                    m   a   x   A   d   d   r   e
0023500    s   s       _       2   *   m   a   x   A   d   d   r   e   s
0023520    s   +   1   ;       d   e   c   o   d   e   W   i   d   t   h
0023540        _       d   e   c   o   d   e   W   i   d   t   h       +
0023560        1   ;       E   N   D   L   O   O   P   ;  \r            
0023600                w   o   r   d   C   o   u   n   t       _       w
0023620    o   r   d   C   o   u   n   t       +       1   ;  \r        
0023640                    E   N   D   L   O   O   P   ;  \r            
0023660        E   N   D   ;           -   -       o   f       A   n   a
0023700    l   y   z   e   M   e   m   o   r   y  \r  \r           S   u
0023720    p   p   r   e   s   s   D   e   f   a   u   l   t   W   o   r
0023740    d   s   :       P   R   O   C   E   D   U   R   E       [   m
0023760    e   m   :       M   B   M   e   m   o   r   y   P   t   r   ,
0024000        d   e   f   a   u   l   t   :       B   O   O   L   E   A
0024020    N   ]       =  \r                   B   E   G   I   N 376 001
0024040   \0 320 253  \r                   p   W   o   r   d   :       L
0024060    O   N   G       P   O   I   N   T   E   R       T   O       M
0024100    B   W   o   r   d   P   t   r       _       @   m   e   m   .
0024120    w   o   r   d   s   ;  \r                   F   O   R       w
0024140    :       M   B   W   o   r   d   P   t   r       _       p   W
0024160    o   r   d   ^   ,       p   W   o   r   d   ^       W   H   I
0024200    L   E       w       #       N   I   L       D   O  \r        
0024220                    F   O   R       i   :       C   A   R   D   I
0024240    N   A   L       I   N       [   0   .   .   m   e   m   .   w
0024260    i   d   t   h   )       D   O  \r                            
0024300        I   F       w   .   v   a   l   u   e   [   i   ]       #
0024320        d   e   f   a   u   l   t       T   H   E   N       G   O
0024340    T   O       n   o   t   D   e   f   a   u   l   t   ;  \r    
0024360                                R   E   P   E   A   T  \r        
0024400                                    n   o   t   D   e   f   a   u
0024420    l   t       =   >       p   W   o   r   d       _       @   w
0024440    .   n   e 376 001  \0 004 214   x   t   W   o   r   d   ;  \r
0024460                                            F   I   N   I   S   H
0024500    E   D       =   >       {   t   :       M   B   W   o   r   d
0024520    P   t   r       _       w   ;       p   W   o   r   d   ^    
0024540    _       w   .   n   e   x   t   W   o   r   d   ;       m   e
0024560    m   .   z   o   n   e   .   F   R   E   E   [   @   t   ]   }
0024600    ;  \r                                   E   N   D   L   O   O
0024620    P   ;  \r                           E   N   D   L   O   O   P
0024640    ;  \r                   E   N   D   ;  \r  \r           R   e
0024660    C   a   s   t   :       P   R   O   C   E   D   U   R   E    
0024700    [   m   e   m   :       M   B   M   e   m   o   r   y   P   t
0024720    r   ,       n   e   w   W   o   r   d   W   i   d   t   h   :
0024740        C   A   R   D   I   N   A   L   ]       =  \r            
0024760        B   E   G   I   N  \r                   -   -       s   t
0025000    e   a   l   s       l   o   w   -   o   r   d   e   r       a
0025020    d   d   r   e   s   s       b   i   t   s       t   o       w
0025040    i   d   e   n       t   h   e 376 001  \0 260 020       w   o
0025060    r   d       b   y       a       p   o   w   e   r       o   f
0025100        2   .  \r                   -   -       p   u   t   s    
0025120    a   l   l       o   r   i   g   i   n   a   l       b   i   t
0025140        0   '   s       t   o   g   e   t   h   e   r   ,       t
0025160    h   e   n       a   l   l       b   i   t       1   '   s   ,
0025200        t   h   e   n       b   i   t       2   '   s   ,       e
0025220    t   c   .  \r                   n   e   w   M   e   m   :    
0025240    M   B   M   e   m   o   r   y       _       m   e   m   ^   ;
0025260   \r                   f   a   c   t   o   r   :       C   A   R
0025300    D   I   N   A   L   ;  \r                   F   O   R       f
0025320    a   c   t   o   r       _       1   ,       2   *   f   a   c
0025340    t   o   r       W   H   I   L   E       f   a   c   t   o   r
0025360    *   m   e   m   .   w   i   d   t   h   <   n   e   w   W   o
0025400    r   d   W   i   d   t   h       D   O  \r                    
0025420        E   N   D   L   O   O   P   ;  \r                   n   e
0025440    w   M   e   m   .   w   i   d   t   h       _     376 001  \0
0025460  016 250   f   a   c   t   o   r   *   m   e   m   .   w   i   d
0025500    t   h   ;  \r                   n   e   w   M   e   m   .   w
0025520    o   r   d   s       _       N   I   L   ;  \r                
0025540    c   u   r   M   e   m       _       N   I   L   ;  \r        
0025560            F   O   R       w   :       M   B   W   o   r   d   P
0025600    t   r       _       m   e   m   .   w   o   r   d   s   ,    
0025620    w   .   n   e   x   t   W   o   r   d       W   H   I   L   E
0025640        w   #   N   I   L       D   O  \r                        
0025660    n   e   w   W   :       M   B   W   o   r   d   P   t   r    
0025700    _       F   i   n   d   W   o   r   d   [   @   n   e   w   M
0025720    e   m   ,       w   .   l   o   c   a   t   i   o   n   /   f
0025740    a   c   t   o   r   ]   ;  \r                           F   O
0025760    R       i   :       C   A   R   D   I   N   A   L       I   N
0026000        [   0   .   .   m   e   m   .   w   i   d   t   h   )    
0026020    D   O  \r                                   n   e   w   W   .
0026040    v   a   l   u   e   [   I   n   l   i   n   e   D   e   f   s
0026060    .   L 376 001  \0   : 245   o   w   H   a   l   f   [   f   a
0026100    c   t   o   r   *   i   +   (   w   .   l   o   c   a   t   i
0026120    o   n       M   O   D       f   a   c   t   o   r   )   ]   ]
0026140        _       w   .   v   a   l   u   e   [   i   ]   ;  \r    
0026160                                E   N   D   L   O   O   P   ;  \r
0026200                            E   N   D   L   O   O   P   ;  \r    
0026220                F   r   e   e   M   B   M   e   m   o   r   y   W
0026240    o   r   d   s   [   m   e   m   ]   ;  \r                   F
0026260    r   e   e   M   B   M   e   m   o   r   y   S   y   m   b   o
0026300    l   s   [   @   n   e   w   M   e   m   ]   ;  \r            
0026320        m   e   m   ^       _       n   e   w   M   e   m   ;  \r
0026340                    E   N   D   ;  \r  \r           P   e   r   m
0026360    u   t   e   A   d   d   r   e   s   s   :       P   R   O   C
0026400    E   D   U   R   E       [   m   e   m   :       M   B   M   e
0026420    m   o   r   y   P   t   r   ,       p   :       P   e   r   m
0026440    u   t   a   t   i   o   n   P   t   r   ]       =  \r        
0026460            B   E   G   I   N 376 001  \0 351   9  \r            
0026500        n   e   w   M   e   m   :       M   B   M   e   m   o   r
0026520    y       _       m   e   m   ^   ;  \r                   n   e
0026540    w   M   e   m   .   w   o   r   d   s       _       N   I   L
0026560    ;  \r                   c   u   r   M   e   m       _       N
0026600    I   L   ;  \r                   F   O   R       w   :       M
0026620    B   W   o   r   d   P   t   r       _       m   e   m   .   w
0026640    o   r   d   s   ,       w   .   n   e   x   t   W   o   r   d
0026660        W   H   I   L   E       w   #   N   I   L       D   O  \r
0026700                            l   o   c   :       L   O   N   G    
0026720    C   A   R   D   I   N   A   L       _       0   ;  \r        
0026740                    n   e   w   W   :       M   B   W   o   r   d
0026760    P   t   r   ;  \r                           F   O   R       i
0027000    :       C   A   R   D   I   N   A   L       D   E   C   R   E
0027020    A   S   I   N   G       I   N       [   0   .   .   p   .   l
0027040    e   n   g   t   h   )       D   O  \r                        
0027060            W   I   T   H       p   .   s   e   q 376 001  \0   V
0027100   \f   [   i   ]       S   E   L   E   C   T       F   R   O   M
0027120   \r                                           c   o   n   s   t
0027140    a   n   t   F   a   l   s   e       =   >       l   o   c    
0027160    _       2   *   l   o   c   +   (   I   F       i   n   v   e
0027200    r   t       T   H   E   N       1       E   L   S   E       0
0027220    )   ;  \r                                           a   d   d
0027240    r   B   i   t       =   >       l   o   c       _       2   *
0027260    l   o   c   +   (   I   F       I   n   l   i   n   e   D   e
0027300    f   s   .   B   I   T   X   O   R   [   i   n   v   e   r   t
0027320    ,       w   .   v   a   l   u   e   [   i   n   d   e   x   ]
0027340    ]       T   H   E   N       1       E   L   S   E       0   )
0027360    ;  \r                                           E   N   D   C
0027400    A   S   E   ;  \r                                   E   N   D
0027420    L   O   O   P   ;  \r                           n   e   w   W
0027440        _       F   i   n   d   W   o   r   d   [   @   n   e   w
0027460    M   e   m   ,       l   o   c   ]   ;  \r                    
0027500      376 001  \0 275   _   F   O   R       i   :       C   A   R
0027520    D   I   N   A   L       I   N       [   0   .   .   m   e   m
0027540    .   w   i   d   t   h   )       D   O  \r                    
0027560                n   e   w   W   .   v   a   l   u   e   [   i   ]
0027600        _       w   .   v   a   l   u   e   [   i   ]   ;  \r    
0027620                                E   N   D   L   O   O   P   ;  \r
0027640                            E   N   D   L   O   O   P   ;  \r    
0027660                F   r   e   e   M   B   M   e   m   o   r   y   W
0027700    o   r   d   s   [   m   e   m   ]   ;  \r                   F
0027720    r   e   e   M   B   M   e   m   o   r   y   S   y   m   b   o
0027740    l   s   [   @   n   e   w   M   e   m   ]   ;  \r            
0027760        m   e   m   ^       _       n   e   w   M   e   m   ;  \r
0030000                    E   N   D   ;  \r  \r           P   e   r   m
0030020    u   t   e   D   a   t   a   :       P   R   O   C   E   D   U
0030040    R   E       [   m   e   m   :       M   B   M   e   m   o   r
0030060    y   P   t   r   ,       p   :       P   e   r   m   u   t   a
0030100    t   i   o   n   P   t 376 001  \0   p 254   r   ]       =  \r
0030120                    B   E   G   I   N  \r                   n   e
0030140    w   M   e   m   :       M   B   M   e   m   o   r   y       _
0030160        m   e   m   ^   ;  \r                   n   e   w   M   e
0030200    m   .   w   i   d   t   h       _       p   .   l   e   n   g
0030220    t   h   ;  \r                   n   e   w   M   e   m   .   w
0030240    o   r   d   s       _       N   I   L   ;  \r                
0030260    c   u   r   M   e   m       _       N   I   L   ;  \r        
0030300            F   O   R       w   :       M   B   W   o   r   d   P
0030320    t   r       _       m   e   m   .   w   o   r   d   s   ,    
0030340    w   .   n   e   x   t   W   o   r   d       W   H   I   L   E
0030360        w   #   N   I   L       D   O  \r                        
0030400    n   e   w   W   :       M   B   W   o   r   d   P   t   r    
0030420    _       F   i   n   d   W   o   r   d   [   @   n   e   w   M
0030440    e   m   ,       w   .   l   o   c   a   t   i   o   n   ]   ;
0030460   \r                           F   O   R       i   :       C   A
0030500    R   D   I   N   A   L       I   N       [ 376 001  \0   l 300
0030520    0   .   .   p   .   l   e   n   g   t   h   )       D   O  \r
0030540                                    W   I   T   H       p   .   s
0030560    e   q   [   i   ]       S   E   L   E   C   T       F   R   O
0030600    M  \r                                           c   o   n   s
0030620    t   a   n   t   F   a   l   s   e       =   >       n   e   w
0030640    W   .   v   a   l   u   e   [   i   ]       _       i   n   v
0030660    e   r   t   ;  \r                                           a
0030700    d   d   r   B   i   t       =   >       n   e   w   W   .   v
0030720    a   l   u   e   [   i   ]       _       I   n   l   i   n   e
0030740    D   e   f   s   .   B   I   T   X   O   R   [   i   n   v   e
0030760    r   t   ,       w   .   v   a   l   u   e   [   i   n   d   e
0031000    x   ]   ]   ;  \r                                           E
0031020    N   D   C   A   S   E   ;  \r                                
0031040    E   N   D   L   O   O   P   ;  \r                           E
0031060    N   D   L   O   O   P   ;  \r                   F   r   e   e
0031100    M   B   M   e   m   o   r   y   W   o   r   d   s   [   m   e
0031120  376 001  \0   > 037   m   ]   ;  \r                   m   e   m
0031140    ^       _       n   e   w   M   e   m   ;  \r                
0031160    E   N   D   ;  \r  \r           F   i   n   d   M   B   B   i
0031200    t   :       P   R   O   C   E   D   U   R   E       [  \r    
0031220                m   b   :       M   B   H   a   n   d   l   e   ,
0031240        m   e   m   N   a   m   e   :       S   T   R   I   N   G
0031260    ,       w   o   r   d   :       L   O   N   G       C   A   R
0031300    D   I   N   A   L   ,       b   i   t   :       C   A   R   D
0031320    I   N   A   L   ]  \r                   R   E   T   U   R   N
0031340    S       [   B   O   O   L   E   A   N   ]       =  \r        
0031360            B   E   G   I   N  \r                   l   a   s   t
0031400    W   o   r   d   :       M   B   W   o   r   d   P   t   r   ;
0031420   \r                   I   F       c   u   r   M   B       #    
0031440    m   b       O   R       c   u   r   M   e   m       =       N
0031460    I   L  \r                           O   R       N   O   T    
0031500    E   q   u   i   v   a   l   e   n   t   L   o   n   g   S   t
0031520    r   i   n   g   s 376 001  \0 315 027   [   m   e   m   N   a
0031540    m   e   ,       c   u   r   M   e   m   .   n   a   m   e   ]
0031560        T   H   E   N  \r                           B   E   G   I
0031600    N  \r                           c   u   r   M   B       _    
0031620    m   b   ;  \r                           c   u   r   M   e   m
0031640        _       m   b   ;  \r                           c   u   r
0031660    W   o   r   d       _       N   I   L   ;  \r                
0031700            F   O   R       c   u   r   M   e   m       _       m
0031720    b   ,       c   u   r   M   e   m   .   n   e   x   t   M   e
0031740    m       U   N   T   I   L       c   u   r   M   e   m       =
0031760        N   I   L  \r                                   O   R    
0032000    E   q   u   i   v   a   l   e   n   t   L   o   n   g   S   t
0032020    r   i   n   g   s   [   m   e   m   N   a   m   e   ,       c
0032040    u   r   M   e   m   .   n   a   m   e   ]       D   O       E
0032060    N   D   L   O   O   P   ;  \r                           E   N
0032100    D   ;  \r                   I   F       c   u   r   W   o   r
0032120    d       =       N   I   L       O   R 376 001  \0 177 256    
0032140    w   o   r   d       <       c   u   r   W   o   r   d   .   l
0032160    o   c   a   t   i   o   n       T   H   E   N       c   u   r
0032200    W   o   r   d       _       c   u   r   M   e   m   .   w   o
0032220    r   d   s   ;  \r                   l   a   s   t   W   o   r
0032240    d       _       c   u   r   W   o   r   d   ;  \r            
0032260        W   H   I   L   E       c   u   r   W   o   r   d       #
0032300        N   I   L       A   N   D       c   u   r   W   o   r   d
0032320    .   l   o   c   a   t   i   o   n       <       w   o   r   d
0032340        D   O  \r                           l   a   s   t   W   o
0032360    r   d       _       c   u   r   W   o   r   d   ;       c   u
0032400    r   W   o   r   d       _       c   u   r   W   o   r   d   .
0032420    n   e   x   t   W   o   r   d   ;       E   N   D   L   O   O
0032440    P   ;  \r                   I   F       w   o   r   d       =
0032460        c   u   r   W   o   r   d   .   l   o   c   a   t   i   o
0032500    n       T   H   E   N       R   E   T   U   R   N   [   c   u
0032520    r   W   o   r   d   .   v   a   l   u   e   [   b   i   t 376
0032540  001  \0   1 223   ]   ]  \r                   E   L   S   E    
0032560    {   c   u   r   W   o   r   d       _       l   a   s   t   W
0032600    o   r   d       -   -       f   o   r       n   e   x   t    
0032620    s   e   a   r   c   h       -   -       ;       R   E   T   U
0032640    R   N   [   F   A   L   S   E   ]   }   ;  \r                
0032660    E   N   D   ;           -   -       o   f       F   i   n   d
0032700    M   B   B   i   t  \r  \r           E   q   u   i   v   a   l
0032720    e   n   t   L   o   n   g   S   t   r   i   n   g   s   :    
0032740    P   R   O   C   E   D   U   R   E       [   a   ,       b   :
0032760        L   O   N   G       S   T   R   I   N   G   ]       R   E
0033000    T   U   R   N   S       [   B   O   O   L   E   A   N   ]    
0033020    =  \r                   B   E   G   I   N  \r                
0033040    I   F       a   .   l   e   n   g   t   h       #       b   .
0033060    l   e   n   g   t   h       T   H   E   N       R   E   T   U
0033100    R   N   [   F   A   L   S   E   ]   ;  \r                   F
0033120    O   R       i   :       C   A   R   D   I   N   A   L       I
0033140    N       [   0 376  \0 254   g   s   .   .   a   .   l   e   n
0033160    g   t   h   )       D   O  \r                           I   F
0033200        S   t   r   i   n   g   D   e   f   s   .   U   p   p   e
0033220    r   C   a   s   e   [   a   [   i   ]   ]       #       S   t
0033240    r   i   n   g   D   e   f   s   .   U   p   p   e   r   C   a
0033260    s   e   [   b   [   i   ]   ]       T   H   E   N  \r        
0033300                            R   E   T   U   R   N   [   F   A   L
0033320    S   E   ]   ;  \r                           E   N   D   L   O
0033340    O   P   ;  \r                   R   E   T   U   R   N   [   T
0033360    R   U   E   ]   ;  \r                   E   N   D   ;  \r  \r
0033400            E   N   D   .       -   -       o   f       M   B   I
0033420    m   p   l  \r  \r 377  \0  \0   r   o   m   i   m   p   l   .
0033440    m   e   s   a  \0 373 230   %   u 030  \0  \0 376 001  \0 031
0033460  256   -   -       R   O   M   I   m   p   l   .   m   e   s   a
0033500   \r   -   -       a       p   r   o   g   r   a   m       t   o
0033520        r   u   n       w   i   t   h   i   n       C   h   i   p
0033540    m   o   n   k  \r  \r   -   -       l   a   s   t       m   o
0033560    d   i   f   i   e   d       b   y       E   .       M   c   C
0033600    r   e   i   g   h   t   ,       N   o   v   e   m   b   e   r
0033620        2   0   ,       1   9   8   1           1   :   0   0    
0033640    P   M  \r   -   -       w   r   i   t   t   e   n       b   y
0033660        E   .       M   c   C   r   e   i   g   h   t   ,       A
0033700    u   g   u   s   t       7   ,       1   9   8   1           3
0033720    :   5   2       P   M  \r  \r   D   I   R   E   C   T   O   R
0033740    Y  \r           C   h   i   p   U   s   e   r   I   n   t   ,
0033760   \r           M   B   ,  \r           p   p   d   d   e   f   s
0034000    ,  \r           p   p   d   e   f   s   ,  \r           R   o
0034020    m   M   a   k   e   r   D   e   f   s   ,  \r           S   e
0034040    g   m   e   n   t   D   e   f   s   ,  \r           S   t   r
0034060    e 376 001  \0 327   Y   a   m   D   e   f   s   ,  \r        
0034100    S   t   r   i   n   g   D   e   f   s   ;  \r  \r   R   o   m
0034120    I   m   p   l   :       P   R   O   G   R   A   M  \r        
0034140    I   M   P   O   R   T   S  \r                   C   h   i   p
0034160    U   s   e   r   I   n   t   ,       M   B   ,       p   p   d
0034200    e   f   s   ,       R   o   m   M   a   k   e   r   D   e   f
0034220    s   ,  \r                   S   e   g   m   e   n   t   D   e
0034240    f   s   ,       S   t   r   e   a   m   D   e   f   s  \r    
0034260        E   X   P   O   R   T   S       R   o   m   M   a   k   e
0034300    r   D   e   f   s       =  \r           B   E   G   I   N    
0034320    O   P   E   N       C   h   i   p   U   s   e   r   I   n   t
0034340    ,       p   p   d   d   e   f   s   ,       p   p   d   e   f
0034360    s   ,       R   o   m   M   a   k   e   r   D   e   f   s   ;
0034400   \r  \r           C   a   n   t   B   u   i   l   d   R   o   m
0034420    :       P   R   O   C   E   D   U   R   E   [   w   h   y   ,
0034440        e   x   p   l   a   n   a   t   i   o   n   :       S   T
0034460    R   I   N   G       _ 376 001  \0 262 212       N   I   L   ]
0034500        =  \r                   {   E   x   p   l   a   i   n   [
0034520    w   h   a   t   :       "   C   a   n   '   t       b   u   i
0034540    l   d       R   o   m       [   C   o   n   f   i   r   m   ]
0034560    "   ,       w   h   y   :       w   h   y   ,  \r            
0034600                e   x   p   l   a   n   a   t   i   o   n   :    
0034620    e   x   p   l   a   n   a   t   i   o   n   ]   }   ;  \r  \r
0034640            B   u   i   l   d   R   o   m   :       P   U   B   L
0034660    I   C       P   R   O   C   E   D   U   R   E   [   ]       =
0034700   \r                   B   E   G   I   N  \r                   r
0034720    o   m   D   e   c   o   d   e   r   ,       r   o   m   D   a
0034740    t   a   :       D   C   e   l   l   P   r   ;  \r  \r        
0034760            r   o   m   D   e   c   o   d   e   r   T   o   p   L
0035000    e   f   t   C   o   r   n   e   r   ,       r   o   m   D   e
0035020    c   o   d   e   r   L   e   f   t   M   i   d   ,  \r        
0035040                    r   o   m   D   e   c   o   d   e   r   B   o
0035060    t   t   o   m   L   e   f   t   C   o   r 376 001  \0   b 212
0035100    n   e   r   :       C   e   l   l   ;  \r                   r
0035120    o   m   D   e   c   o   d   e   r   T   o   p   ,       r   o
0035140    m   D   e   c   o   d   e   r   T   o   p   M   i   d   :    
0035160    C   e   l   l   ;  \r                   r   o   m   D   e   c
0035200    o   d   e   r   M   i   d   V   ,       r   o   m   D   e   c
0035220    o   d   e   r   M   i   d   H   ,       r   o   m   D   e   c
0035240    o   d   e   r   M   i   d   V   H   :       C   e   l   l   ;
0035260   \r                   r   o   m   D   e   c   o   d   e   r   B
0035300    o   t   t   o   m   ,       r   o   m   D   e   c   o   d   e
0035320    r   B   o   t   t   o   m   M   i   d   :       C   e   l   l
0035340    ;  \r                   r   o   m   D   e   c   o   d   e   r
0035360    D   a   t   a   T   o   p   ,       r   o   m   D   e   c   o
0035400    d   e   r   D   a   t   a   ,       r   o   m   D   e   c   o
0035420    d   e   r   D   a   t   a   M   i   d   ,  \r                
0035440            r   o   m   D   e   c   o   d   e   r   D   a   t   a
0035460    B   o   t   t   o   m   :       C   e   l   l   ;  \r  \r    
0035500  376 001  \0 022   3               r   o   m   D   a   t   a   T
0035520    o   p   M   i   d   ,       r   o   m   D   a   t   a   B   o
0035540    t   t   o   m   M   i   d   ,       r   o   m   O   u   t   M
0035560    u   x   M   i   d   :       C   e   l   l   ;  \r            
0035600        r   o   m   D   a   t   a   M   i   d   V   ,       r   o
0035620    m   D   a   t   a   M   i   d   H   ,       r   o   m   D   a
0035640    t   a   M   i   d   V   H   :       C   e   l   l   ;  \r    
0035660                r   o   m   D   a   t   a   T   o   p   R   i   g
0035700    h   t   C   o   r   n   e   r   ,       r   o   m   D   a   t
0035720    a   R   i   g   h   t   ,       r   o   m   D   a   t   a   R
0035740    i   g   h   t   M   i   d   ,  \r                           r
0035760    o   m   D   a   t   a   B   o   t   t   o   m   R   i   g   h
0036000    t   C   o   r   n   e   r   :       C   e   l   l   ;  \r  \r
0036020                    r   o   m   D   e   c   o   d   e   r   L   e
0036040    f   t   ,       r   o   m   D   a   t   a   T   o   p   ,    
0036060    r   o   m   D   a   t   a   B   o   t   t   o   m   ,       r
0036100    o   m   O   u   t 376 001  \0   L   O   M   u   x   :       D
0036120    C   e   l   l   ;  \r                   -   -       c   o   l
0036140    u   m   n   :       F   A   L   S   E       =   >       e   v
0036160    e   n       c   o   l   u   m   n   ,       T   R   U   E    
0036200    =   >       o   d   d       c   o   l   u   m   n  \r  \r    
0036220                d   e   c   o   d   e   C   e   l   l   ,       d
0036240    a   t   a   C   e   l   l   :       C   e   l   l   ;        
0036260    -   -       s   a   m   p   l   e   s       f   o   r       m
0036300    e   a   s   u   r   e   m   e   n   t   s  \r  \r  \r        
0036320            F   i   n   d   R   o   m   C   e   l   l   s   :    
0036340    P   R   O   C   E   D   U   R   E       [   c   e   l   l   F
0036360    a   m   i   l   y   :       S   T   R   I   N   G   ]       =
0036400   \r                           B   E   G   I   N  \r            
0036420                r   o   m   D   e   c   o   d   e   r       _    
0036440    F   i   n   d   D   C   e   l   l   P   r   [   c   e   l   l
0036460    F   a   m   i   l   y   :       c   e   l   l   F   a   m   i
0036500    l   y   ,       r   e   q   u   i   r 376 001  \0   L   k   e
0036520    d   :       T   R   U   E   ,  \r                            
0036540        m   e   m   b   e   r   P   r   e   f   i   x   :       "
0036560    D   e   c   o   d   e   r   "   L   ]   ;  \r                
0036600            d   e   c   o   d   e   C   e   l   l       _       r
0036620    o   m   D   e   c   o   d   e   r   [   T   R   U   E   ]   [
0036640    F   A   L   S   E   ]   ;  \r  \r                           -
0036660    -       M   i   d   V       i   s       a       v   e   r   t
0036700    i   c   a   l       c   o   l   u   m   n       o   f       c
0036720    e   l   l   s   ,       M   i   d   H       i   s       a  \r
0036740                            -   -       h   o   r   i   z   o   n
0036760    t   a   l       r   o   w       o   f       c   e   l   l   s
0037000    ,       a   n   d       M   i   d   V   H       i   s       t
0037020    h   e       c   e   l   l       t   h   a   t  \r            
0037040                -   -       h   a   p   p   e   n   s       a   t
0037060        t   h   e   i   r       i   n   t   e   r   s   e   c   t
0037100    i   o   n   s   .  \r  \r                           r   o 376
0037120  001  \0 316 002   m   D   e   c   o   d   e   r   M   i   d   H
0037140        _       F   i   n   d   C   e   l   l   [  \r            
0037160                        c   e   l   l   F   a   m   i   l   y   :
0037200        c   e   l   l   F   a   m   i   l   y   ,       m   e   m
0037220    b   e   r   :       "   D   e   c   o   d   e   r   M   i   d
0037240    H   "   L   ,       h   C   o   m   p   a   t   :       d   e
0037260    c   o   d   e   C   e   l   l   ]   ;  \r                    
0037300        r   o   m   D   e   c   o   d   e   r   M   i   d   V    
0037320    _       F   i   n   d   C   e   l   l   [  \r                
0037340                    c   e   l   l   F   a   m   i   l   y   :    
0037360    c   e   l   l   F   a   m   i   l   y   ,       m   e   m   b
0037400    e   r   :       "   D   e   c   o   d   e   r   M   i   d   V
0037420    "   L   ,       v   C   o   m   p   a   t   :       d   e   c
0037440    o   d   e   C   e   l   l   ]   ;  \r                        
0037460    r   o   m   D   e   c   o   d   e   r   M   i   d   V   H    
0037500    _       F   i   n   d   C   e   l   l   [  \r                
0037520                  376 001  \0 301 246   c   e   l   l   F   a   m
0037540    i   l   y   :       c   e   l   l   F   a   m   i   l   y   ,
0037560        m   e   m   b   e   r   :       "   D   e   c   o   d   e
0037600    r   M   i   d   V   H   "   L   ,       h   C   o   m   p   a
0037620    t   :       r   o   m   D   e   c   o   d   e   r   M   i   d
0037640    V   ,  \r                                   v   C   o   m   p
0037660    a   t   :       r   o   m   D   e   c   o   d   e   r   M   i
0037700    d   H   ,  \r                                   r   e   q   u
0037720    i   r   e   d   :       r   o   m   D   e   c   o   d   e   r
0037740    M   i   d   V   #   N   I   L       A   N   D       r   o   m
0037760    D   e   c   o   d   e   r   M   i   d   H   #   N   I   L   ]
0040000    ;  \r  \r                           r   o   m   D   a   t   a
0040020        _       F   i   n   d   D   C   e   l   l   P   r   [   c
0040040    e   l   l   F   a   m   i   l   y   :       c   e   l   l   F
0040060    a   m   i   l   y   ,       r   e   q   u   i   r   e   d   :
0040100        T   R   U   E   ,  \r                                   m
0040120    e   m   b   e   r   P   r   e   f 376 001  \0 274 307   i   x
0040140    :       "   D   a   t   a   "   L   ]   ;  \r                
0040160            d   a   t   a   C   e   l   l       _       r   o   m
0040200    D   a   t   a   [   F   A   L   S   E   ]   [   F   A   L   S
0040220    E   ]   ;  \r                           C   h   e   c   k   P
0040240    i   t   c   h   C   o   m   p   a   t   a   b   i   l   i   t
0040260    y   [   d   e   c   o   d   e   C   e   l   l   ,       d   a
0040300    t   a   C   e   l   l   ,       v   e   r   t   i   c   a   l
0040320    ,       [   1   ,       2   ]   ,       [   1   ,       1   ]
0040340    ]   ;  \r                           r   o   m   D   a   t   a
0040360    M   i   d   H       _       F   i   n   d   C   e   l   l   [
0040400   \r                                   c   e   l   l   F   a   m
0040420    i   l   y   :       c   e   l   l   F   a   m   i   l   y   ,
0040440        m   e   m   b   e   r   :       "   D   a   t   a   M   i
0040460    d   H   "   L   ,       h   C   o   m   p   a   t   :       d
0040500    a   t   a   C   e   l   l   ,  \r                            
0040520        v   C   o   m   p   a   t   :       r   o   m   D 376 001
0040540   \0 020   4   e   c   o   d   e   r   M   i   d   H   ,  \r    
0040560                                r   e   q   u   i   r   e   d   :
0040600        r   o   m   D   e   c   o   d   e   r   M   i   d   H   #
0040620    N   I   L   ]   ;  \r                           r   o   m   D
0040640    a   t   a   M   i   d   V       _       F   i   n   d   C   e
0040660    l   l   [  \r                                   c   e   l   l
0040700    F   a   m   i   l   y   :       c   e   l   l   F   a   m   i
0040720    l   y   ,       m   e   m   b   e   r   :       "   D   a   t
0040740    a   M   i   d   V   "   L   ,       v   C   o   m   p   a   t
0040760    :       d   a   t   a   C   e   l   l   ]   ;  \r            
0041000                r   o   m   D   a   t   a   M   i   d   V   H    
0041020    _       F   i   n   d   C   e   l   l   [  \r                
0041040                    c   e   l   l   F   a   m   i   l   y   :    
0041060    c   e   l   l   F   a   m   i   l   y   ,       m   e   m   b
0041100    e   r   :       "   D   a   t   a   M   i   d   V   H   "   L
0041120    ,       h   C   o   m   p   a   t   :       r   o   m   D   a
0041140    t   a   M 376 001  \0 354 265   i   d   V   ,  \r            
0041160                        v   C   o   m   p   a   t   :       r   o
0041200    m   D   a   t   a   M   i   d   H   ,  \r                    
0041220                r   e   q   u   i   r   e   d   :       r   o   m
0041240    D   a   t   a   M   i   d   V   #   N   I   L       A   N   D
0041260        r   o   m   D   a   t   a   M   i   d   H   #   N   I   L
0041300    ]   ;  \r  \r                           r   o   m   D   e   c
0041320    o   d   e   r   L   e   f   t       _       F   i   n   d   D
0041340    C   e   l   l   [  \r                                   c   e
0041360    l   l   F   a   m   i   l   y   :       c   e   l   l   F   a
0041400    m   i   l   y   ,       m   e   m   b   e   r   P   r   e   f
0041420    i   x   :       "   D   e   c   o   d   e   r   L   e   f   t
0041440    "   L   ,       v   C   o   m   p   a   t   :       d   e   c
0041460    o   d   e   C   e   l   l   ]   ;  \r                        
0041500    r   o   m   D   e   c   o   d   e   r   L   e   f   t   M   i
0041520    d       _       F   i   n   d   C   e   l   l   [  \r        
0041540                            c   e 376 001  \0 021 361   l   l   F
0041560    a   m   i   l   y   :       c   e   l   l   F   a   m   i   l
0041600    y   ,       m   e   m   b   e   r   :       "   D   e   c   o
0041620    d   e   r   L   e   f   t   M   i   d   "   L   ,       v   C
0041640    o   m   p   a   t   :       r   o   m   D   e   c   o   d   e
0041660    r   M   i   d   H   ,  \r                                   r
0041700    e   q   u   i   r   e   d   :       r   o   m   D   e   c   o
0041720    d   e   r   M   i   d   H   #   N   I   L   ]   ;  \r        
0041740                    r   o   m   D   e   c   o   d   e   r   T   o
0041760    p   L   e   f   t   C   o   r   n   e   r       _       F   i
0042000    n   d   C   e   l   l   [  \r                                
0042020    c   e   l   l   F   a   m   i   l   y   :       c   e   l   l
0042040    F   a   m   i   l   y   ,       m   e   m   b   e   r   :    
0042060    "   D   e   c   o   d   e   r   T   o   p   L   e   f   t   C
0042100    o   r   n   e   r   "   L   ]   ;  \r                        
0042120    r   o   m   D   e   c   o   d   e   r   B   o   t   t   o   m
0042140    L   e   f   t   C   o   r   n   e   r       _     376 001  \0
0042160  364   .   F   i   n   d   C   e   l   l   [  \r                
0042200                    c   e   l   l   F   a   m   i   l   y   :    
0042220    c   e   l   l   F   a   m   i   l   y   ,       m   e   m   b
0042240    e   r   :       "   D   e   c   o   d   e   r   B   o   t   t
0042260    o   m   L   e   f   t   C   o   r   n   e   r   "   L   ]   ;
0042300   \r  \r                           r   o   m   D   e   c   o   d
0042320    e   r   T   o   p       _       F   i   n   d   C   e   l   l
0042340    [  \r                                   c   e   l   l   F   a
0042360    m   i   l   y   :       c   e   l   l   F   a   m   i   l   y
0042400    ,       m   e   m   b   e   r   :       "   D   e   c   o   d
0042420    e   r   T   o   p   "   L   ,       h   C   o   m   p   a   t
0042440    :       d   e   c   o   d   e   C   e   l   l   ]   ;  \r    
0042460                        r   o   m   D   e   c   o   d   e   r   T
0042500    o   p   M   i   d       _       F   i   n   d   C   e   l   l
0042520    [  \r                                   c   e   l   l   F   a
0042540    m   i   l   y   :       c   e   l   l   F   a   m   i   l   y
0042560    ,     376 001  \0 256 216   m   e   m   b   e   r   :       "
0042600    D   e   c   o   d   e   r   T   o   p   M   i   d   "   L   ,
0042620        h   C   o   m   p   a   t   :       r   o   m   D   e   c
0042640    o   d   e   r   M   i   d   V   ,  \r                        
0042660            r   e   q   u   i   r   e   d   :       r   o   m   D
0042700    e   c   o   d   e   r   M   i   d   V   #   N   I   L   ]   ;
0042720   \r                           r   o   m   D   e   c   o   d   e
0042740    r   B   o   t   t   o   m       _       F   i   n   d   C   e
0042760    l   l   [  \r                                   c   e   l   l
0043000    F   a   m   i   l   y   :       c   e   l   l   F   a   m   i
0043020    l   y   ,       m   e   m   b   e   r   :       "   D   e   c
0043040    o   d   e   r   B   o   t   t   o   m   "   L   ,       h   C
0043060    o   m   p   a   t   :       d   e   c   o   d   e   C   e   l
0043100    l   ]   ;  \r                           r   o   m   D   e   c
0043120    o   d   e   r   B   o   t   t   o   m   M   i   d       _    
0043140    F   i   n   d   C   e   l   l   [  \r                        
0043160            c   e   l   l   F 376 001  \0   B   +   a   m   i   l
0043200    y   :       c   e   l   l   F   a   m   i   l   y   ,       m
0043220    e   m   b   e   r   :       "   D   e   c   o   d   e   r   B
0043240    o   t   t   o   m   M   i   d   "   L   ,       h   C   o   m
0043260    p   a   t   :       r   o   m   D   e   c   o   d   e   r   M
0043300    i   d   V   ,  \r                                   r   e   q
0043320    u   i   r   e   d   :       r   o   m   D   e   c   o   d   e
0043340    r   M   i   d   V   #   N   I   L   ]   ;  \r  \r            
0043360                r   o   m   D   e   c   o   d   e   r   D   a   t
0043400    a       _       F   i   n   d   C   e   l   l   [  \r        
0043420                            c   e   l   l   F   a   m   i   l   y
0043440    :       c   e   l   l   F   a   m   i   l   y   ,       m   e
0043460    m   b   e   r   :       "   D   e   c   o   d   e   r   D   a
0043500    t   a   "   L   ,       v   C   o   m   p   a   t   :       d
0043520    a   t   a   C   e   l   l   ]   ;  \r                        
0043540    r   o   m   D   e   c   o   d   e   r   D   a   t   a   T   o
0043560    p       _       F   i   n   d   C   e   l   l 376 001  \0 250
0043600  001   [  \r                                   c   e   l   l   F
0043620    a   m   i   l   y   :       c   e   l   l   F   a   m   i   l
0043640    y   ,       m   e   m   b   e   r   :       "   D   e   c   o
0043660    d   e   r   D   a   t   a   T   o   p   "   L   ,       h   C
0043700    o   m   p   a   t   :       r   o   m   D   e   c   o   d   e
0043720    r   D   a   t   a   ]   ;  \r                           r   o
0043740    m   D   e   c   o   d   e   r   D   a   t   a   M   i   d    
0043760    _       F   i   n   d   C   e   l   l   [  \r                
0044000                    c   e   l   l   F   a   m   i   l   y   :    
0044020    c   e   l   l   F   a   m   i   l   y   ,       m   e   m   b
0044040    e   r   :       "   D   e   c   o   d   e   r   D   a   t   a
0044060    M   i   d   "   L   ,       h   C   o   m   p   a   t   :    
0044100    r   o   m   D   e   c   o   d   e   r   D   a   t   a   ,  \r
0044120                                    v   C   o   m   p   a   t   :
0044140        r   o   m   D   e   c   o   d   e   r   M   i   d   H   ,
0044160   \r                                   r   e   q   u   i   r   e
0044200    d 376 001  \0 323   \   :       r   o   m   D   e   c   o   d
0044220    e   r   M   i   d   H   #   N   I   L   ]   ;  \r            
0044240                r   o   m   D   e   c   o   d   e   r   D   a   t
0044260    a   B   o   t   t   o   m       _       F   i   n   d   C   e
0044300    l   l   [  \r                                   c   e   l   l
0044320    F   a   m   i   l   y   :       c   e   l   l   F   a   m   i
0044340    l   y   ,       m   e   m   b   e   r   :       "   D   e   c
0044360    o   d   e   r   D   a   t   a   B   o   t   t   o   m   "   L
0044400    ,  \r                                   h   C   o   m   p   a
0044420    t   :       r   o   m   D   e   c   o   d   e   r   D   a   t
0044440    a   ]   ;  \r  \r                           r   o   m   D   a
0044460    t   a   T   o   p       _       F   i   n   d   D   C   e   l
0044500    l   [  \r                                   c   e   l   l   F
0044520    a   m   i   l   y   :       c   e   l   l   F   a   m   i   l
0044540    y   ,       m   e   m   b   e   r   P   r   e   f   i   x   :
0044560        "   D   a   t   a   T   o   p   "   L   ,       h   C   o
0044600    m   p   a   t   :     376 001  \0   5   :   d   a   t   a   C
0044620    e   l   l   ]   ;  \r                           r   o   m   D
0044640    a   t   a   T   o   p   M   i   d       _       F   i   n   d
0044660    C   e   l   l   [  \r                                   c   e
0044700    l   l   F   a   m   i   l   y   :       c   e   l   l   F   a
0044720    m   i   l   y   ,       m   e   m   b   e   r   :       "   D
0044740    a   t   a   T   o   p   M   i   d   "   L   ,       h   C   o
0044760    m   p   a   t   :       r   o   m   D   a   t   a   M   i   d
0045000    V   ,  \r                                   r   e   q   u   i
0045020    r   e   d   :       r   o   m   D   a   t   a   M   i   d   V
0045040    #   N   I   L   ]   ;  \r                           r   o   m
0045060    D   a   t   a   B   o   t   t   o   m       _       F   i   n
0045100    d   D   C   e   l   l   [  \r                                
0045120    c   e   l   l   F   a   m   i   l   y   :       c   e   l   l
0045140    F   a   m   i   l   y   ,       m   e   m   b   e   r   P   r
0045160    e   f   i   x   :       "   D   a   t   a   B   o   t   t   o
0045200    m   "   L   ,       h   C   o   m   p   a 376 001  \0 361 305
0045220    t   :       d   a   t   a   C   e   l   l   ]   ;  \r        
0045240                    r   o   m   D   a   t   a   B   o   t   t   o
0045260    m   M   i   d       _       F   i   n   d   C   e   l   l   [
0045300   \r                                   c   e   l   l   F   a   m
0045320    i   l   y   :       c   e   l   l   F   a   m   i   l   y   ,
0045340        m   e   m   b   e   r   :       "   D   a   t   a   B   o
0045360    t   t   o   m   M   i   d   "   L   ,       h   C   o   m   p
0045400    a   t   :       r   o   m   D   a   t   a   M   i   d   V   ,
0045420   \r                                   r   e   q   u   i   r   e
0045440    d   :       r   o   m   D   a   t   a   M   i   d   V   #   N
0045460    I   L   ]   ;  \r  \r                           r   o   m   O
0045500    u   t   M   u   x       _       F   i   n   d   D   C   e   l
0045520    l   [   c   e   l   l   F   a   m   i   l   y   :       c   e
0045540    l   l   F   a   m   i   l   y   ,       m   e   m   b   e   r
0045560    P   r   e   f   i   x   :       "   O   u   t   M   u   x   "
0045600    L   ]   ;  \r                           C   h   e   c   k   P
0045620  376 001  \0   { 327   i   t   c   h   C   o   m   p   a   t   a
0045640    b   i   l   i   t   y   [   d   a   t   a   C   e   l   l   ,
0045660        r   o   m   O   u   t   M   u   x   [   F   A   L   S   E
0045700    ]   ,       h   o   r   i   z   o   n   t   a   l   ,       [
0045720    2   ,       1   ]   ,       [   1   ,       1   ]   ]   ;  \r
0045740                            r   o   m   O   u   t   M   u   x   M
0045760    i   d       _       F   i   n   d   C   e   l   l   [  \r    
0046000                                c   e   l   l   F   a   m   i   l
0046020    y   :       c   e   l   l   F   a   m   i   l   y   ,       m
0046040    e   m   b   e   r   :       "   O   u   t   M   u   x   M   i
0046060    d   "   L   ,       h   C   o   m   p   a   t   :       r   o
0046100    m   D   a   t   a   M   i   d   V   ,  \r                    
0046120                r   e   q   u   i   r   e   d   :       r   o   m
0046140    O   u   t   M   u   x   [   F   A   L   S   E   ]   #   N   I
0046160    L       A   N   D       r   o   m   D   a   t   a   M   i   d
0046200    V   #   N   I   L   ]   ;  \r  \r                           r
0046220    o   m   D   a   t 376 001  \0   ; 361   a   T   o   p   R   i
0046240    g   h   t   C   o   r   n   e   r       _       F   i   n   d
0046260    C   e   l   l   [  \r                                   c   e
0046300    l   l   F   a   m   i   l   y   :       c   e   l   l   F   a
0046320    m   i   l   y   ,       m   e   m   b   e   r   :       "   D
0046340    a   t   a   T   o   p   R   i   g   h   t   C   o   r   n   e
0046360    r   "   L   ]   ;  \r                           r   o   m   D
0046400    a   t   a   R   i   g   h   t       _       F   i   n   d   C
0046420    e   l   l   [  \r                                   c   e   l
0046440    l   F   a   m   i   l   y   :       c   e   l   l   F   a   m
0046460    i   l   y   ,       m   e   m   b   e   r   :       "   D   a
0046500    t   a   R   i   g   h   t   "   L   ,       v   C   o   m   p
0046520    a   t   :       d   a   t   a   C   e   l   l   ]   ;  \r    
0046540                        r   o   m   D   a   t   a   R   i   g   h
0046560    t   M   i   d       _       F   i   n   d   C   e   l   l   [
0046600   \r                                   c   e   l   l   F   a   m
0046620    i   l   y   :       c   e   l   l   F 376 001  \0   }   Y   a
0046640    m   i   l   y   ,       m   e   m   b   e   r   :       "   D
0046660    a   t   a   R   i   g   h   t   M   i   d   "   L   ,       v
0046700    C   o   m   p   a   t   :       r   o   m   D   a   t   a   M
0046720    i   d   H   ,  \r                                   r   e   q
0046740    u   i   r   e   d   :       r   o   m   D   a   t   a   M   i
0046760    d   H   #   N   I   L   ]   ;  \r                           r
0047000    o   m   D   a   t   a   B   o   t   t   o   m   R   i   g   h
0047020    t   C   o   r   n   e   r       _       F   i   n   d   C   e
0047040    l   l   [  \r                                   c   e   l   l
0047060    F   a   m   i   l   y   :       c   e   l   l   F   a   m   i
0047100    l   y   ,       m   e   m   b   e   r   :       "   D   a   t
0047120    a   B   o   t   t   o   m   R   i   g   h   t   C   o   r   n
0047140    e   r   "   L   ]   ;  \r                           E   N   D
0047160    ;       -   -       o   f       F   i   n   d   R   o   m   C
0047200    e   l   l   s  \r  \r                   b   o   d   y   H   e
0047220    i   g   h   t   ,       d   e   c   o   d   e   r   D   a 376
0047240  001  \0 267 032   t   a   X   ,       d   a   t   a   X   ,    
0047260    d   a   t   a   R   i   g   h   t   X   :       l   o   c   N
0047300    u   m   ;  \r                   d   e   c   o   d   e   r   W
0047320    i   d   t   h   ,       w   o   r   d   s   P   e   r   D   a
0047340    t   a   R   o   w   ,       w   o   r   d   C   o   u   n   t
0047360    ,       w   o   r   d   W   i   d   t   h   ,  \r            
0047400                l   o   g   W   o   r   d   s   P   e   r   D   a
0047420    t   a   R   o   w   :       I   N   T   E   G   E   R   ;  \r
0047440                    d   a   t   a   M   i   d   H   G   a   p   ,
0047460        d   e   c   o   d   e   M   i   d   V   G   a   p   ,    
0047500    d   a   t   a   M   i   d   V   G   a   p   :       l   o   c
0047520    N   u   m       _       0   ;  \r                   i   n   v
0047540    e   r   t   D   a   t   a   :       B   O   O   L   E   A   N
0047560    ;  \r  \r                   f   i   l   e   N   a   m   e   ,
0047600        m   e   m   N   a   m   e   ,       c   e   l   l   F   a
0047620    m   i   l   y   ,       r   o   m   N   a   m   e   :       S
0047640    T   R   I   N 376 001  \0 211   k   G       _       N   I   L
0047660    ;  \r                   s   :       S   t   r   e   a   m   D
0047700    e   f   s   .   S   t   r   e   a   m   H   a   n   d   l   e
0047720        _       N   I   L   ;  \r                   m   b   :    
0047740    M   B   .   M   B   H   a   n   d   l   e       _       N   I
0047760    L   ;  \r                   m   b   M   e   m   :       M   B
0050000    .   M   B   M   e   m   o   r   y   P   t   r       _       N
0050020    I   L   ;  \r  \r                           B   E   G   I   N
0050040        E   N   A   B   L   E       P   u   n   t       =   >    
0050060    G   O   T   O       E   x   i   t   R   o   m   ;       -   -
0050100        f   o   r       E   X   I   T   S  \r                    
0050120        f   i   l   e   N   a   m   e       _       R   e   q   u
0050140    e   s   t   S   t   r   i   n   g   [   "   "   L   ,       "
0050160    D   a   t   a       f   i   l   e   :   "   L   ,       "   .
0050200    m   b       f   o   r   m   a   t   "   L   ]   ;  \r        
0050220                    f   i   l   e   N   a   m   e       _       F
0050240    i   x   E   x   t   e   n   s   i 376 001  \0   H  \0   o   n
0050260    [   f   i   l   e   N   a   m   e   ,       "   .   m   b   "
0050300    L   ]   ;  \r                           s       _       S   t
0050320    r   e   a   m   D   e   f   s   .   N   e   w   W   o   r   d
0050340    S   t   r   e   a   m   [  \r                                
0050360    f   i   l   e   N   a   m   e   ,       S   t   r   e   a   m
0050400    D   e   f   s   .   R   e   a   d       !  \r                
0050420                    S   e   g   m   e   n   t   D   e   f   s   .
0050440    F   i   l   e   N   a   m   e   E   r   r   o   r       =   >
0050460        {  \r                                           C   a   n
0050500    t   B   u   i   l   d   R   o   m   [   "   C   a   n   '   t
0050520        f   i   n   d       .   m   b       f   i   l   e   "   L
0050540    ,       n   a   m   e   ]   ;       G   O   T   O       E   x
0050560    i   t   R   o   m   }   ]   ;  \r                           m
0050600    b       _       M   B   .   R   e   a   d   M   B   [  \r    
0050620                                s   ,       u   z       !  \r    
0050640                                M   B   .   I   l   l   e 376 001
0050660   \0 370 006   g   a   l   M   B   F   o   r   m   a   t       =
0050700    >  \r                                           {   C   a   n
0050720    t   B   u   i   l   d   R   o   m   [   "   I   s   n   '   t
0050740        .   m   b       f   o   r   m   a   t   "   L   ,       f
0050760    i   l   e   N   a   m   e   ]   ;       G   O   T   O       E
0051000    x   i   t   R   o   m   }   ]   ;  \r  \r                    
0051020        m   e   m   N   a   m   e       _       R   e   q   u   e
0051040    s   t   S   t   r   i   n   g   [   ,   ,       "   M   e   m
0051060    o   r   y       n   a   m   e       i   n       .   m   b    
0051100    f   i   l   e   :   "   L   ]   ;  \r                        
0051120    m   b   M   e   m       _       M   B   .   F   i   n   d   M
0051140    B   M   e   m   o   r   y   [   m   b   ,       m   e   m   N
0051160    a   m   e   ]   ;  \r                           I   F       m
0051200    b   M   e   m       =       N   I   L       T   H   E   N    
0051220    {   C   a   n   t   B   u   i   l   d   R   o   m   [   "   M
0051240    e   m   o   r   y       i   s   n   '   t       i   n       .
0051260    m   b     376 001  \0 230 021   f   i   l   e   "   L   ,    
0051300    m   e   m   N   a   m   e   ]   ;       G   O   T   O       E
0051320    x   i   t   R   o   m   }   ;  \r  \r                        
0051340    c   e   l   l   F   a   m   i   l   y       _       R   e   q
0051360    u   e   s   t   S   t   r   i   n   g   [   ,   ,       "   C
0051400    e   l   l       f   a   m   i   l   y   :   "   L   ]   ;  \r
0051420   \r                           F   i   n   d   R   o   m   C   e
0051440    l   l   s   [   c   e   l   l   F   a   m   i   l   y   ]   ;
0051460   \r  \r                           w   o   r   d   s   P   e   r
0051500    D   a   t   a   R   o   w       _       1   ;       l   o   g
0051520    W   o   r   d   s   P   e   r   D   a   t   a   R   o   w    
0051540    _       0   ;  \r                           I   F       r   o
0051560    m   O   u   t   M   u   x   [   F   A   L   S   E   ]   #   N
0051600    I   L       T   H   E   N  \r                                
0051620    B   E   G   I   N  \r                                   t   :
0051640        I   N   T   E   G   E   R       _       R   e   q   u   e
0051660    s   t   I   n   t   e   g   e 376 001  \0 262 006   r   [   "
0051700    W   o   r   d   s       p   e   r       r   o   w   :   "   L
0051720    ,       "   (   p   o   w   e   r       o   f       2   )   "
0051740    L   ]   ;  \r                                   F   O   R    
0051760    w   o   r   d   s   P   e   r   D   a   t   a   R   o   w    
0052000    _       1   ,       2   *   w   o   r   d   s   P   e   r   D
0052020    a   t   a   R   o   w       W   H   I   L   E       w   o   r
0052040    d   s   P   e   r   D   a   t   a   R   o   w   <   t       D
0052060    O  \r                                           l   o   g   W
0052100    o   r   d   s   P   e   r   D   a   t   a   R   o   w       _
0052120        l   o   g   W   o   r   d   s   P   e   r   D   a   t   a
0052140    R   o   w   +   1   ;  \r                                    
0052160        E   N   D   L   O   O   P   ;  \r                        
0052200            E   N   D   ;  \r  \r                           M   B
0052220    .   R   e   C   a   s   t   [   m   e   m   :       m   b   M
0052240    e   m   ,       n   e   w   W   o   r   d   W   i   d   t   h
0052260    :       m   b   M   e   m   .   w   i   d   t   h 376 001  \0
0052300    ( 241   *   w   o   r   d   s   P   e   r   D   a   t   a   R
0052320    o   w   ]   ;  \r                           i   n   v   e   r
0052340    t   D   a   t   a       _       H   e   S   a   y   s   Y   e
0052360    s   [   "   S   h   a   l   l       I       i   n   v   e   r
0052400    t       t   h   e       d   a   t   a   ?   "   L   ]   ;  \r
0052420                            I   F       H   e   S   a   y   s   Y
0052440    e   s   [   "   I   s       a       m   i   s   s   i   n   g
0052460        d   a   t   a       c   e   l   l       e   q   u   i   v
0052500    a   l   e   n   t       t   o       e   i   t   h   e   r   "
0052520    L   ,  \r                                   "   r   e   a   l
0052540        d   a   t   a       c   e   l   l   ?   "   L   ]       T
0052560    H   E   N  \r                                   M   B   .   S
0052600    u   p   p   r   e   s   s   D   e   f   a   u   l   t   W   o
0052620    r   d   s   [   m   e   m   :       m   b   M   e   m   ,  \r
0052640                                    d   e   f   a   u   l   t   :
0052660        H   e   S   a   y   s   Y   e   s   [   s   1   :   "   W
0052700    h   i 376 001  \0 324 333   c   h       o   n   e   ?   "   L
0052720    ,       s   3   :       "   (   0       o   r       1   )   "
0052740    L   ]   #   i   n   v   e   r   t   D   a   t   a   ]   ;  \r
0052760                            [   d   e   c   o   d   e   r   W   i
0053000    d   t   h   ,       w   o   r   d   C   o   u   n   t   ,    
0053020    w   o   r   d   W   i   d   t   h   ]       _       M   B   .
0053040    A   n   a   l   y   z   e   M   e   m   o   r   y   [   m   b
0053060    M   e   m   ]   ;  \r  \r                           d   e   c
0053100    o   d   e   r   W   i   d   t   h       _       d   e   c   o
0053120    d   e   r   W   i   d   t   h   +   l   o   g   W   o   r   d
0053140    s   P   e   r   D   a   t   a   R   o   w   ;  \r            
0053160                w   o   r   d   C   o   u   n   t       _       w
0053200    o   r   d   C   o   u   n   t       +       (   w   o   r   d
0053220    C   o   u   n   t       M   O   D       2   )   +   2   *   l
0053240    o   g   W   o   r   d   s   P   e   r   D   a   t   a   R   o
0053260    w   ;  \r  \r                           I   F       r   o   m
0053300    D   a   t   a   M   i   d 376 001  \0   u 321   H   #   N   I
0053320    L       T   H   E   N  \r                                   d
0053340    a   t   a   M   i   d   H   G   a   p       _       C   e   l
0053360    l   S   i   z   e   [   d   a   t   a   C   e   l   l   ]   .
0053400    y   *  \r                                           R   e   q
0053420    u   e   s   t   I   n   t   e   g   e   r   [   "   D   a   t
0053440    a       c   e   l   l   s       v   e   r   t   i   c   a   l
0053460    l   y       p   e   r       m   i   d       c   e   l   l    
0053500    r   o   w   ?   "   L   ]   ;  \r                           I
0053520    F       r   o   m   D   e   c   o   d   e   r   M   i   d   V
0053540    #   N   I   L       T   H   E   N  \r                        
0053560            d   e   c   o   d   e   M   i   d   V   G   a   p    
0053600    _       C   e   l   l   S   i   z   e   [   d   e   c   o   d
0053620    e   C   e   l   l   ]   .   x   *  \r                        
0053640                    R   e   q   u   e   s   t   I   n   t   e   g
0053660    e   r   [   "   D   e   c   o   d   e   r       c   e   l   l
0053700    s       h   o   r   i   z   o   n   t   a   l 376 001  \0 303
0053720  310   l   y       p   e   r       m   i   d       c   e   l   l
0053740        c   o   l   u   m   n   ?   "   L   ]   ;  \r            
0053760                I   F       r   o   m   D   a   t   a   M   i   d
0054000    V   #   N   I   L       T   H   E   N  \r                    
0054020                d   a   t   a   M   i   d   V   G   a   p       _
0054040        C   e   l   l   S   i   z   e   [   d   a   t   a   C   e
0054060    l   l   ]   .   x   *  \r                                    
0054100        R   e   q   u   e   s   t   I   n   t   e   g   e   r   [
0054120    "   D   a   t   a       c   e   l   l   s       h   o   r   i
0054140    z   o   n   t   a   l   l   y       p   e   r       m   i   d
0054160        c   e   l   l       c   o   l   u   m   n   ?   "   L   ]
0054200    ;  \r  \r                           b   o   d   y   H   e   i
0054220    g   h   t       _       B   l   o   c   k   S   i   z   e   [
0054240    c   e   l   l   :       d   e   c   o   d   e   C   e   l   l
0054260    ,       r   e   p   :       [   x   :       1   ,       y   :
0054300        w   o   r   d   C   o   u   n   t   ]   ,  \r            
0054320      376 001  \0 372   R                   m   i   d   C   e   l
0054340    l   :       r   o   m   D   a   t   a   M   i   d   H   ,    
0054360    m   i   d   G   a   p   :       [   d   a   t   a   M   i   d
0054400    V   G   a   p   ,       d   a   t   a   M   i   d   H   G   a
0054420    p   ]   ]   .   y   ;  \r                           d   e   c
0054440    o   d   e   r   D   a   t   a   X       _       B   l   o   c
0054460    k   S   i   z   e   [   c   e   l   l   :       d   e   c   o
0054500    d   e   C   e   l   l   ,       r   e   p   :       [   x   :
0054520        d   e   c   o   d   e   r   W   i   d   t   h   ,       y
0054540    :       1   ]   ,  \r                                   m   i
0054560    d   C   e   l   l   :       r   o   m   D   e   c   o   d   e
0054600    r   M   i   d   V   ,       m   i   d   G   a   p   :       [
0054620    d   e   c   o   d   e   M   i   d   V   G   a   p   ,       d
0054640    a   t   a   M   i   d   H   G   a   p   ]   ]   .   x   ;  \r
0054660                            d   a   t   a   X       _       d   e
0054700    c   o   d   e   r   D   a   t   a   X   +   C   e   l   l   S
0054720    i   z   e   [   r   o 376 001  \0 245 037   m   D   e   c   o
0054740    d   e   r   D   a   t   a   ]   .   x   ;  \r                
0054760            d   a   t   a   R   i   g   h   t   X       _       d
0055000    a   t   a   X   +   B   l   o   c   k   S   i   z   e   [   c
0055020    e   l   l   :       d   a   t   a   C   e   l   l   ,       r
0055040    e   p   :       [   x   :       w   o   r   d   W   i   d   t
0055060    h   ,       y   :       1   ]   ,  \r                        
0055100            m   i   d   C   e   l   l   :       r   o   m   D   a
0055120    t   a   M   i   d   V   ,       m   i   d   G   a   p   :    
0055140    [   d   a   t   a   M   i   d   V   G   a   p   ,       d   a
0055160    t   a   M   i   d   H   G   a   p   ]   ]   .   x   ;  \r  \r
0055200                            R   e   p   e   a   t   [  \r        
0055220                            c   e   l   l   :       r   o   m   D
0055240    e   c   o   d   e   r   L   e   f   t   [   F   A   L   S   E
0055260    ]   ,       p   :       [   0   ,   0   ]   ,       c   o   r
0055300    n   e   r   :       t   o   p   R   i   g   h   t   ,  \r    
0055320                                d   i   r   : 376 001  \0 371 034
0055340        d   o   w   n   ,       r   e   p   :       w   o   r   d
0055360    C   o   u   n   t   ,  \r                                   m
0055400    i   d   C   e   l   l   :       r   o   m   D   e   c   o   d
0055420    e   r   L   e   f   t   M   i   d   ,       m   i   d   G   a
0055440    p   :       d   a   t   a   M   i   d   H   G   a   p   ,  \r
0055460                                    a   l   t   C   e   l   l   :
0055500        r   o   m   D   e   c   o   d   e   r   L   e   f   t   [
0055520    T   R   U   E   ]   ,       a   l   t   M   o   d   :       2
0055540    ]   ;  \r                           R   e   p   e   a   t   [
0055560   \r                                   c   e   l   l   :       r
0055600    o   m   D   e   c   o   d   e   r   T   o   p   L   e   f   t
0055620    C   o   r   n   e   r   ,       p   :       [   0   ,   0   ]
0055640    ,       c   o   r   n   e   r   :       b   o   t   t   o   m
0055660    R   i   g   h   t   ]   ;  \r                           R   e
0055700    p   e   a   t   [  \r                                   c   e
0055720    l   l   :       r   o   m   D   e   c   o   d   e   r   B   o
0055740  376 001  \0 275 214   t   t   o   m   L   e   f   t   C   o   r
0055760    n   e   r   ,       p   :       [   0   ,       b   o   d   y
0056000    H   e   i   g   h   t   ]   ,       c   o   r   n   e   r   :
0056020        t   o   p   R   i   g   h   t   ]   ;  \r  \r            
0056040                R   e   p   e   a   t   [  \r                    
0056060                c   e   l   l   :       r   o   m   D   e   c   o
0056100    d   e   r   T   o   p   ,       p   :       [   0   ,   0   ]
0056120    ,       c   o   r   n   e   r   :       b   o   t   t   o   m
0056140    L   e   f   t   ,  \r                                   r   e
0056160    p   :       d   e   c   o   d   e   r   W   i   d   t   h   ,
0056200   \r                                   m   i   d   C   e   l   l
0056220    :       r   o   m   D   e   c   o   d   e   r   T   o   p   M
0056240    i   d   ,       m   i   d   G   a   p   :       d   e   c   o
0056260    d   e   M   i   d   V   G   a   p   ]   ;  \r                
0056300            R   e   p   e   a   t   [  \r                        
0056320            c   e   l   l   :       r   o   m   D   e   c   o   d
0056340    e   r   B   o   t 376 001  \0  \r   c   t   o   m   ,       p
0056360    :       [   0   ,       b   o   d   y   H   e   i   g   h   t
0056400    ]   ,       c   o   r   n   e   r   :       t   o   p   L   e
0056420    f   t   ,  \r                                   d   i   r   :
0056440        r   i   g   h   t   ,       r   e   p   :       d   e   c
0056460    o   d   e   r   W   i   d   t   h   ,  \r                    
0056500                m   i   d   C   e   l   l   :       r   o   m   D
0056520    e   c   o   d   e   r   B   o   t   t   o   m   M   i   d   ,
0056540        m   i   d   G   a   p   :       d   e   c   o   d   e   M
0056560    i   d   V   G   a   p   ,  \r                                
0056600    n   a   m   e   :       [   b   a   s   i   c   N   a   m   e
0056620    :       "   A   d   d   r   "   L   ,       x   :       [   -
0056640    1   ,       d   e   c   o   d   e   r   W   i   d   t   h   -
0056660    1   ]   ]   ]   ;  \r  \r                           R   e   p
0056700    e   a   t   [   c   e   l   l   :       r   o   m   D   e   c
0056720    o   d   e   r   D   a   t   a   T   o   p   ,  \r            
0056740                        p   :       [   d 376 001  \0 205 030   e
0056760    c   o   d   e   r   D   a   t   a   X   ,       0   ]   ,    
0057000    c   o   r   n   e   r   :       b   o   t   t   o   m   L   e
0057020    f   t   ]   ;  \r                           R   e   p   e   a
0057040    t   [  \r                                   c   e   l   l   :
0057060        r   o   m   D   e   c   o   d   e   r   D   a   t   a   ,
0057100        p   :       [   d   e   c   o   d   e   r   D   a   t   a
0057120    X   ,       0   ]   ,       d   i   r   :       d   o   w   n
0057140    ,       r   e   p   :       w   o   r   d   C   o   u   n   t
0057160    /   2   ,  \r                                   m   i   d   C
0057200    e   l   l   :       r   o   m   D   e   c   o   d   e   r   D
0057220    a   t   a   M   i   d   ,       m   i   d   G   a   p   :    
0057240    d   a   t   a   M   i   d   H   G   a   p   ]   ;  \r        
0057260                    R   e   p   e   a   t   [   c   e   l   l   :
0057300        r   o   m   D   e   c   o   d   e   r   D   a   t   a   B
0057320    o   t   t   o   m   ,       p   :       [   d   e   c   o   d
0057340    e   r   D   a   t   a   X   ,       b   o   d   y   H   e 376
0057360  001  \0 037 037   i   g   h   t   ]   ]   ;  \r  \r            
0057400                R   e   p   e   a   t   [   c   e   l   l   :    
0057420    r   o   m   D   a   t   a   T   o   p   [   F   A   L   S   E
0057440    ]   ,  \r                                   p   :       [   d
0057460    a   t   a   X   ,       0   ]   ,       c   o   r   n   e   r
0057500    :       b   o   t   t   o   m   L   e   f   t   ,       d   i
0057520    r   :       r   i   g   h   t   ,       r   e   p   :       w
0057540    o   r   d   W   i   d   t   h   ,  \r                        
0057560            m   i   d   C   e   l   l   :       r   o   m   D   a
0057600    t   a   T   o   p   M   i   d   ,       m   i   d   G   a   p
0057620    :       d   a   t   a   M   i   d   V   G   a   p   ,  \r    
0057640                                a   l   t   C   e   l   l   :    
0057660    r   o   m   D   a   t   a   T   o   p   [   T   R   U   E   ]
0057700    ,       a   l   t   M   o   d   :       2   ]   ;  \r        
0057720                    R   e   p   e   a   t   [   c   e   l   l   :
0057740        r   o   m   D   a   t   a   T   o   p   R   i   g   h   t
0057760    C   o   r   n 376 001  \0   >   W   e   r   ,  \r            
0060000                        p   :       [   d   a   t   a   R   i   g
0060020    h   t   X   ,       0   ]   ,       c   o   r   n   e   r   :
0060040        b   o   t   t   o   m   L   e   f   t   ]   ;  \r        
0060060                    R   e   p   e   a   t   [   c   e   l   l   :
0060100        r   o   m   D   a   t   a   R   i   g   h   t   ,       p
0060120    :       [   d   a   t   a   R   i   g   h   t   X   ,       0
0060140    ]   ,       d   i   r   :       d   o   w   n   ,       r   e
0060160    p   :       w   o   r   d   C   o   u   n   t   /   2   ,  \r
0060200                                    m   i   d   C   e   l   l   :
0060220        r   o   m   D   a   t   a   R   i   g   h   t   M   i   d
0060240    ,       m   i   d   G   a   p   :       d   a   t   a   M   i
0060260    d   H   G   a   p   ]   ;  \r                           R   e
0060300    p   e   a   t   [   c   e   l   l   :       r   o   m   D   a
0060320    t   a   B   o   t   t   o   m   R   i   g   h   t   C   o   r
0060340    n   e   r   ,       p   :       [   d   a   t   a   R   i   g
0060360    h   t   X   ,       b   o   d   y 376 001  \0   Q 255   H   e
0060400    i   g   h   t   ]   ]   ;  \r  \r                           I
0060420    F       w   o   r   d   s   P   e   r   D   a   t   a   R   o
0060440    w   =   1       T   H   E   N  \r                            
0060460        R   e   p   e   a   t   [   c   e   l   l   :       r   o
0060500    m   D   a   t   a   B   o   t   t   o   m   [   F   A   L   S
0060520    E   ]   ,  \r                                           p   :
0060540        [   d   a   t   a   X   ,       b   o   d   y   H   e   i
0060560    g   h   t   ]   ,       d   i   r   :       r   i   g   h   t
0060600    ,       r   e   p   :       w   o   r   d   W   i   d   t   h
0060620    ,  \r                                           m   i   d   C
0060640    e   l   l   :       r   o   m   D   a   t   a   B   o   t   t
0060660    o   m   M   i   d   ,       m   i   d   G   a   p   :       d
0060700    a   t   a   M   i   d   V   G   a   p   ,  \r                
0060720                            a   l   t   C   e   l   l   :       r
0060740    o   m   D   a   t   a   B   o   t   t   o   m   [   T   R   U
0060760    E   ]   ,       a   l   t   M   o   d   :       2   , 376 001
0061000   \0 357 314  \r                                           n   a
0061020    m   e   :       [   b   a   s   i   c   N   a   m   e   :    
0061040    "   D   a   t   a   "   L   ,       x   :       [   1   ,    
0061060    0   ]   ]   ]  \r                           E   L   S   E  \r
0061100                                    R   e   p   e   a   t   [   c
0061120    e   l   l   :       r   o   m   O   u   t   M   u   x   [   F
0061140    A   L   S   E   ]   ,  \r                                    
0061160        p   :       [   d   a   t   a   X   ,       b   o   d   y
0061200    H   e   i   g   h   t   ]   ,       d   i   r   :       r   i
0061220    g   h   t   ,       r   e   p   :       w   o   r   d   W   i
0061240    d   t   h   /   2   ,  \r                                    
0061260        m   i   d   C   e   l   l   :       r   o   m   O   u   t
0061300    M   u   x   M   i   d   ,       m   i   d   G   a   p   :    
0061320    d   a   t   a   M   i   d   V   G   a   p   ,  \r            
0061340                                a   l   t   C   e   l   l   :    
0061360    r   o   m   O   u   t   M   u   x   [   T   R   U   E   ]   ,
0061400        a   l 376 001  \0 306   x   t   M   o   d   :       w   o
0061420    r   d   s   P   e   r   D   a   t   a   R   o   w   /   2   ,
0061440   \r                                           n   a   m   e   :
0061460        [   b   a   s   i   c   N   a   m   e   :       "   D   a
0061500    t   a   "   L   ,       x   :       [   2   ,       0   ]   ]
0061520    ]   ;  \r  \r                           M   a   k   e   D   e
0061540    c   o   d   e   r   B   l   o   c   k   [   c   e   l   l   s
0061560    :       r   o   m   D   e   c   o   d   e   r   ,       p   :
0061600        [   0   ,       0   ]   ,       r   e   p   :       [   d
0061620    e   c   o   d   e   r   W   i   d   t   h   ,       w   o   r
0061640    d   C   o   u   n   t   ]   ,  \r                            
0061660        p   a   i   r   s   T   o   D   a   t   a   A   r   r   a
0061700    y   :       l   o   g   W   o   r   d   s   P   e   r   D   a
0061720    t   a   R   o   w   ,       m   e   m   :       m   b   M   e
0061740    m   ,  \r                                   m   i   d   C   e
0061760    l   l   S   i   z   e   :       [   x   :       C   e   l   l
0062000    S   i   z   e   [   r   o   m 376 001  \0 203 243   D   e   c
0062020    o   d   e   r   M   i   d   V   ]   .   x   ,       y   :    
0062040    C   e   l   l   S   i   z   e   [   r   o   m   D   e   c   o
0062060    d   e   r   M   i   d   H   ]   .   y   ]   ,  \r            
0062100                        m   i   d   G   a   p   :       [   d   e
0062120    c   o   d   e   M   i   d   V   G   a   p   ,       d   a   t
0062140    a   M   i   d   H   G   a   p   ]   ,  \r                    
0062160                i   n   v   e   r   t   A   d   d   r   e   s   s
0062200    :       H   e   S   a   y   s   Y   e   s   [   "   S   h   a
0062220    l   l       I       i   n   v   e   r   t       a   d   d   r
0062240    e   s   s       i   n   p   u   t   s   ?   "   L   ]   ]   ;
0062260   \r  \r                           M   a   k   e   M   i   d   G
0062300    r   i   d   [   p   :       [   0   ,   0   ]   ,       c   e
0062320    l   l   :       d   e   c   o   d   e   C   e   l   l   ,    
0062340    r   e   p   :       [   d   e   c   o   d   e   r   W   i   d
0062360    t   h   ,       w   o   r   d   C   o   u   n   t   ]   ,  \r
0062400                                    m   i   d   V   C 376 001  \0
0062420    x   V   e   l   l   :       r   o   m   D   e   c   o   d   e
0062440    r   M   i   d   V   ,       m   i   d   H   C   e   l   l   :
0062460        r   o   m   D   e   c   o   d   e   r   M   i   d   H   ,
0062500        m   i   d   V   H   C   e   l   l   :       r   o   m   D
0062520    e   c   o   d   e   r   M   i   d   V   H   ,  \r            
0062540                        m   i   d   G   a   p   :       [   d   e
0062560    c   o   d   e   M   i   d   V   G   a   p   ,       d   a   t
0062600    a   M   i   d   H   G   a   p   ]   ]   ;  \r  \r            
0062620                M   a   k   e   D   a   t   a   B   l   o   c   k
0062640    [   c   e   l   l   s   :       r   o   m   D   a   t   a   ,
0062660        p   :       [   d   a   t   a   X   ,       0   ]   ,    
0062700    r   e   p   :       [   w   o   r   d   W   i   d   t   h   ,
0062720        w   o   r   d   C   o   u   n   t   /   2   ]   ,  \r    
0062740                                d   e   c   o   d   e   P   a   i
0062760    r   s   :       l   o   g   W   o   r   d   s   P   e   r   D
0063000    a   t   a   R   o   w   ,       m   e   m   :       m   b   M
0063020    e   m 376 001  \0 243 246   ,  \r                            
0063040        m   i   d   C   e   l   l   S   i   z   e   :       [   x
0063060    :       C   e   l   l   S   i   z   e   [   r   o   m   D   a
0063100    t   a   M   i   d   V   ]   .   x   ,       y   :       C   e
0063120    l   l   S   i   z   e   [   r   o   m   D   a   t   a   M   i
0063140    d   H   ]   .   y   ]   ,  \r                                
0063160    m   i   d   G   a   p   :       [   d   a   t   a   M   i   d
0063200    V   G   a   p   ,       d   a   t   a   M   i   d   H   G   a
0063220    p   ]   ,  \r                                   i   n   v   e
0063240    r   t   D   a   t   a   :       i   n   v   e   r   t   D   a
0063260    t   a   ,  \r                                   i   n   v   e
0063300    r   t   A   d   d   r   e   s   s   :       H   e   S   a   y
0063320    s   Y   e   s   [   "   E   x   t   r   a       i   n   v   e
0063340    r   s   i   o   n       f   o   r       a   d   d   r   e   s
0063360    s       d   e   c   o   d   e   "   L   ,  \r                
0063400                            "   i   n       d   a   t   a       a
0063420    r   r   a   y   ?   "   L 376 001  \0 254 370   ]   ]   ;  \r
0063440   \r                           M   a   k   e   M   i   d   G   r
0063460    i   d   [   p   :       [   d   a   t   a   X   ,   0   ]   ,
0063500        c   e   l   l   :       d   a   t   a   C   e   l   l   ,
0063520        r   e   p   :       [   w   o   r   d   W   i   d   t   h
0063540    ,       w   o   r   d   C   o   u   n   t   /   2   ]   ,  \r
0063560                                    m   i   d   V   C   e   l   l
0063600    :       r   o   m   D   a   t   a   M   i   d   V   ,       m
0063620    i   d   H   C   e   l   l   :       r   o   m   D   a   t   a
0063640    M   i   d   H   ,       m   i   d   V   H   C   e   l   l   :
0063660        r   o   m   D   a   t   a   M   i   d   V   H   ,  \r    
0063700                                m   i   d   G   a   p   :       [
0063720    d   a   t   a   M   i   d   V   G   a   p   ,       d   a   t
0063740    a   M   i   d   H   G   a   p   ]   ]   ;  \r  \r            
0063760                r   o   m   N   a   m   e       _       R   e   q
0064000    u   e   s   t   S   t   r   i   n   g   [   ,   ,       "   N
0064020    a   m   e       o   f       c   o   m   p   l 376 001  \0 220
0064040  247   e   t   e   d       R   o   m       c   e   l   l   :   "
0064060    L   ]   ;  \r                           I   F       r   o   m
0064100    N   a   m   e   #   N   I   L       A   N   D       r   o   m
0064120    N   a   m   e   .   l   e   n   g   t   h   >   0       T   H
0064140    E   N  \r                                   B   E   G   I   N
0064160   \r                                   D   r   a   w   C   e   l
0064200    l   [   M   a   k   e   N   e   w   C   e   l   l   [   r   o
0064220    m   N   a   m   e   ,       l   p   p   ]   .   o   b   ]   ;
0064240   \r                                   r   o   m   N   a   m   e
0064260        _       N   I   L   ;           -   -       g   a   v   e
0064300        s   t   r   i   n   g       b   o   d   y       t   o    
0064320    c   e   l   l  \r                                   E   N   D
0064340   \r                           E   L   S   E       A   d   d   T
0064360    o   M   a   s   t   e   r   L   i   s   t   [   l   p   p   ]
0064400    ;  \r                           l   p   p       _       N   I
0064420    L   ;       -   -       g   a   v   e       a   w   a   y    
0064440    l 376 001  \0   G 016   i   s   t  \r  \r                    
0064460        E   X   I   T   S       E   x   i   t   R   o   m       =
0064500    >       N   U   L   L   ;  \r                           E   N
0064520    D   ;  \r  \r                   f   l   u   s   h   D   e   l
0064540    [   l   p   p   ]   ;  \r                   I   F       f   i
0064560    l   e   N   a   m   e       #       N   I   L       T   H   E
0064600    N       F   r   e   e   S   t   r   i   n   g   [   f   i   l
0064620    e   N   a   m   e   ]   ;  \r                   I   F       m
0064640    e   m   N   a   m   e       #       N   I   L       T   H   E
0064660    N       F   r   e   e   S   t   r   i   n   g   [   m   e   m
0064700    N   a   m   e   ]   ;  \r                   I   F       c   e
0064720    l   l   F   a   m   i   l   y       #       N   I   L       T
0064740    H   E   N       F   r   e   e   S   t   r   i   n   g   [   c
0064760    e   l   l   F   a   m   i   l   y   ]   ;  \r                
0065000    I   F       r   o   m   N   a   m   e       #       N   I   L
0065020        T   H   E   N       F   r   e   e   S   t   r   i   n   g
0065040    [   r   o   m   N   a 376 001  \0   *   {   m   e   ]   ;  \r
0065060                    I   F       s       #       N   I   L       T
0065100    H   E   N       s   .   d   e   s   t   r   o   y   [   s   ]
0065120    ;  \r                   a   n   y   C   h   a   n   g   e   s
0065140        _       s   i   n   c   e   I   O   c   h   a   n   g   e
0065160    s       _       T   R   U   E   ;  \r                   E   N
0065200    D   ;       -   -       o   f       B   u   i   l   d   R   o
0065220    m  \r  \f  \r           M   a   k   e   D   e   c   o   d   e
0065240    r   B   l   o   c   k   :       P   R   O   C   E   D   U   R
0065260    E       [   c   e   l   l   s   :       D   C   e   l   l   P
0065300    r   ,       p   ,       r   e   p   :       P   o   i   n   t
0065320    ,  \r                   p   a   i   r   s   T   o   D   a   t
0065340    a   A   r   r   a   y   :       I   N   T   E   G   E   R   ,
0065360        m   e   m   :       M   B   .   M   B   M   e   m   o   r
0065400    y   P   t   r   ,  \r                   m   i   d   C   e   l
0065420    l   S   i   z   e   :       P   o   i   n   t       _       [
0065440    0   ,   0   ]   ,       m   i   d   G   a 376 001  \0 362 321
0065460    p   :       P   o   i   n   t       _       [   0   ,   0   ]
0065500    ,  \r                   i   n   v   e   r   t   A   d   d   r
0065520    e   s   s   :       B   O   O   L   E   A   N       _       F
0065540    A   L   S   E   ]       =  \r                   B   E   G   I
0065560    N       -   -       h   i   g   h   -   o   r   d   e   r    
0065600    b   i   t       o   n       t   h   e       l   e   f   t   ,
0065620        b   i   t   s       p   a   s   s   e   d       s   t   r
0065640    a   i   g   h   t  \r                           -   -       t
0065660    h   r   o   u   g   h       f   o   r       d   a   t   a    
0065700    b   l   o   c   k       d   e   c   o   d   i   n   g       o
0065720    n       t   h   e       r   i   g   h   t   .           A   s
0065740    s   u   m   e   s  \r                           -   -       t
0065760    h   a   t       d   a   t   a       b   l   o   c   k       d
0066000    e   c   o   d   i   n   g       h   a   p   p   e   n   s    
0066020    i   n       t   h   e       t   o   p  \r                    
0066040        -   -       2   *   p   a   i   r   s   T   o   D   a   t
0066060  376 001  \0 334   D   a   A   r   r   a   y       d   a   t   a
0066100        r   o   w   s   .  \r  \r                   w   :       M
0066120    B   .   M   B   W   o   r   d   P   t   r       _       m   e
0066140    m   .   w   o   r   d   s   ;  \r                   F   O   R
0066160        i   y   :       I   N   T   E   G   E   R       I   N    
0066200    [   0   .   .   2   *   p   a   i   r   s   T   o   D   a   t
0066220    a   A   r   r   a   y   )       D   O       -   -       t   r
0066240    i   v   i   a   l       d   e   c   o   d   e  \r            
0066260                F   O   R       i   x   :       I   N   T   E   G
0066300    E   R       I   N       [   0   .   .   r   e   p   .   x   )
0066320        D   O  \r                                   r   i   g   h
0066340    t   C   o   l   u   m   n   :       B   O   O   L   E   A   N
0066360        _       i   x       =       r   e   p   .   x   -   1   -
0066400    i   y   /   2   ;  \r                                   P   l
0066420    a   c   e   C   e   l   l   [   p   ,       c   e   l   l   s
0066440    [  \r                                           r   i   g   h
0066460    t   C   o   l   u 376 001  \0 345 350   m   n       A   N   D
0066500        (   (   i   y       M   O   D       2   =   0   )   #   i
0066520    n   v   e   r   t   A   d   d   r   e   s   s   )   ]  \r    
0066540                                        [   r   i   g   h   t   C
0066560    o   l   u   m   n       A   N   D       (   (   i   y       M
0066600    O   D       2   #   0   )   #   i   n   v   e   r   t   A   d
0066620    d   r   e   s   s   )   ]   ,  \r                            
0066640                [   i   x   ,       i   y   ]   ,       m   i   d
0066660    C   e   l   l   S   i   z   e   ,       m   i   d   G   a   p
0066700    ]   ;  \r                                   E   N   D   L   O
0066720    O   P   ;  \r                           E   N   D   L   O   O
0066740    P   ;  \r                   F   O   R       i   y   :       I
0066760    N   T   E   G   E   R       I   N       [   2   *   p   a   i
0067000    r   s   T   o   D   a   t   a   A   r   r   a   y   .   .   r
0067020    e   p   .   y   )       D   O  \r                           l
0067040    o   c   :       L   O   N   G       C   A   R   D   I   N   A
0067060    L       _       w   .   l   o   c   a 376 001  \0 375 365   t
0067100    i   o   n   ;  \r                           F   O   R       i
0067120    x   :       I   N   T   E   G   E   R       I   N       [   r
0067140    e   p   .   x   -   p   a   i   r   s   T   o   D   a   t   a
0067160    A   r   r   a   y   .   .   r   e   p   .   x   )       D   O
0067200   \r                                   P   l   a   c   e   C   e
0067220    l   l   [   p   ,       c   e   l   l   s   [   F   A   L   S
0067240    E   ]   [   F   A   L   S   E   ]   ,       [   i   x   ,    
0067260    i   y   ]   ,       m   i   d   C   e   l   l   S   i   z   e
0067300    ,       m   i   d   G   a   p   ]   ;  \r                    
0067320                E   N   D   L   O   O   P   ;  \r                
0067340            F   O   R       i   x   :       I   N   T   E   G   E
0067360    R       D   E   C   R   E   A   S   I   N   G       I   N  \r
0067400                                    [   0   .   .   r   e   p   .
0067420    x   -   p   a   i   r   s   T   o   D   a   t   a   A   r   r
0067440    a   y   )       D   O  \r                                   P
0067460    l   a   c   e   C   e   l   l   [   p   ,       c   e   l 376
0067500  001  \0   9   g   l   s   [   (   (   l   o   c       M   O   D
0067520        2   )   #   0   )   #   i   n   v   e   r   t   A   d   d
0067540    r   e   s   s   ]  \r                                        
0067560    [   (   (   l   o   c       M   O   D       2   )   =   0   )
0067600    #   i   n   v   e   r   t   A   d   d   r   e   s   s   ]   ,
0067620   \r                                           [   i   x   ,    
0067640    i   y   ]   ,       m   i   d   C   e   l   l   S   i   z   e
0067660    ,       m   i   d   G   a   p   ]   ;  \r                    
0067700                l   o   c       _       l   o   c   /   2   ;  \r
0067720                                    E   N   D   L   O   O   P   ;
0067740   \r                           I   F       w   .   n   e   x   t
0067760    W   o   r   d       #       N   I   L       T   H   E   N    
0070000    w       _       w   .   n   e   x   t   W   o   r   d   ;  \r
0070020                            E   N   D   L   O   O   P   ;  \r    
0070040                E   N   D   ;  \r  \r  \r           M   a   k   e
0070060    D   a   t   a   B   l   o   c   k   :       P   R   O   C   E
0070100    D   U   R   E 376 001  \0 262   K       [   c   e   l   l   s
0070120    :       D   C   e   l   l   P   r   ,       p   ,       r   e
0070140    p   :       P   o   i   n   t   ,       d   e   c   o   d   e
0070160    P   a   i   r   s   :       I   N   T   E   G   E   R   ,  \r
0070200                    m   e   m   :       M   B   .   M   B   M   e
0070220    m   o   r   y   P   t   r   ,  \r                   m   i   d
0070240    C   e   l   l   S   i   z   e   :       P   o   i   n   t    
0070260    _       [   0   ,   0   ]   ,       m   i   d   G   a   p   :
0070300        P   o   i   n   t       _       [   0   ,   0   ]   ,  \r
0070320                    i   n   v   e   r   t   A   d   d   r   e   s
0070340    s   ,       i   n   v   e   r   t   D   a   t   a   :       B
0070360    O   O   L   E   A   N       _       F   A   L   S   E   ]    
0070400    =  \r                   B   E   G   I   N  \r                
0070420    w   0   :       M   B   .   M   B   W   o   r   d   P   t   r
0070440    ;  \r                   m   a   s   k   :       I   N   T   E
0070460    G   E   R       _       1   ;  \r                   F   O   R
0070500        i   y   :       I   N   T   E 376 001  \0   \ 323   G   E
0070520    R       I   N       [   0   .   .   d   e   c   o   d   e   P
0070540    a   i   r   s   )       D   O  \r                           F
0070560    O   R       i   x   :       I   N   T   E   G   E   R       I
0070600    N       [   0   .   .   r   e   p   .   x   )       D   O  \r
0070620                                    t   :       B   O   O   L   E
0070640    A   N       _       i   x       M   O   D       2   *   m   a
0070660    s   k       >   =       m   a   s   k   ;  \r                
0070700                    P   l   a   c   e   C   e   l   l   [   p   ,
0070720        c   e   l   l   s   [   t   #   i   n   v   e   r   t   A
0070740    d   d   r   e   s   s   ]   [   t   =   i   n   v   e   r   t
0070760    A   d   d   r   e   s   s   ]   ,  \r                        
0071000                    [   i   x   ,       i   y   ]   ,       m   i
0071020    d   C   e   l   l   S   i   z   e   ,       m   i   d   G   a
0071040    p   ]   ;  \r                                   E   N   D   L
0071060    O   O   P   ;  \r                           m   a   s   k    
0071100    _       2   *   m   a   s   k   ;  \r                 376 001
0071120   \0 226   2           E   N   D   L   O   O   P   ;  \r        
0071140            w   0       _       m   e   m   .   w   o   r   d   s
0071160    ;  \r                   F   O   R       i   y   :       I   N
0071200    T   E   G   E   R       I   N       [   d   e   c   o   d   e
0071220    P   a   i   r   s   .   .   r   e   p   .   y   )       D   O
0071240   \r                           w   1   :       M   B   .   M   B
0071260    W   o   r   d   P   t   r       _       I   F       w   0   .
0071300    n   e   x   t   W   o   r   d       #       N   I   L       T
0071320    H   E   N       w   0   .   n   e   x   t   W   o   r   d    
0071340    E   L   S   E       w   0   ;  \r                           F
0071360    O   R       i   x   :       I   N   T   E   G   E   R       I
0071400    N       [   0   .   .   r   e   p   .   x   )       D   O  \r
0071420                                    P   l   a   c   e   C   e   l
0071440    l   [   p   ,       c   e   l   l   s   [   w   0   .   v   a
0071460    l   u   e   [   i   x   ]   #   i   n   v   e   r   t   D   a
0071500    t   a   ]  \r                                   [   w   1   .
0071520    v   a   l 376  \0 214 206   `   u   e   [   i   x   ]   #   i
0071540    n   v   e   r   t   D   a   t   a   ]   ,       [   i   x   ,
0071560        i   y   ]   ,       m   i   d   C   e   l   l   S   i   z
0071600    e   ,       m   i   d   G   a   p   ]   ;  \r                
0071620                    E   N   D   L   O   O   P   ;  \r            
0071640                w   0       _       w   1   .   n   e   x   t   W
0071660    o   r   d   ;  \r                           E   N   D   L   O
0071700    O   P   ;  \r                   E   N   D   ;  \r  \r  \r    
0071720        E   N   D   .       -   -       o   f       R   o   m   I
0071740    m   p   l  \r 377  \0  \0   d   e   c   o   d   e   r   i   m
0071760    p   l   .   m   e   s   a  \0 373 230   %   \ 004  \0  \0 376
0072000  001  \0   K 354   -   -       D   e   c   o   d   e   r   I   m
0072020    p   l   .   m   e   s   a  \r   -   -       a       p   r   o
0072040    g   r   a   m       t   o       r   u   n       w   i   t   h
0072060    i   n       C   h   i   p   m   o   n   k  \r  \r   -   -    
0072100    l   a   s   t       m   o   d   i   f   i   e   d       b   y
0072120        E   .       M   c   C   r   e   i   g   h   t   ,        
0072140    N   o   v   e   m   b   e   r       2   0   ,       1   9   8
0072160    1           1   1   :   2   6       A   M  \r   -   -       w
0072200    r   i   t   t   e   n       b   y       E   .       M   c   C
0072220    r   e   i   g   h   t   ,       A   u   g   u   s   t       7
0072240    ,       1   9   8   1           3   :   5   2       P   M  \r
0072260   \r   D   I   R   E   C   T   O   R   Y  \r           C   h   i
0072300    p   U   s   e   r   I   n   t   ,  \r           p   p   d   e
0072320    f   s   ,  \r           R   o   m   M   a   k   e   r   D   e
0072340    f   s   ;  \r  \r   D   e   c   o   d   e   r   I   m   p   l
0072360    :       P   R   O   G   R   A   M  \r           I   M   P   O
0072400    R   T   S     376 001  \0 021 306   C   h   i   p   U   s   e
0072420    r   I   n   t   ,       p   p   d   e   f   s   ,       R   o
0072440    m   M   a   k   e   r   D   e   f   s  \r           E   X   P
0072460    O   R   T   S       R   o   m   M   a   k   e   r   D   e   f
0072500    s       =  \r           B   E   G   I   N       O   P   E   N
0072520        C   h   i   p   U   s   e   r   I   n   t   ,       p   p
0072540    d   e   f   s   ,       R   o   m   M   a   k   e   r   D   e
0072560    f   s   ;  \r  \r  \r           D   e   c   o   d   e   P   a
0072600    t   t   e   r   n   P   t   r   :       T   Y   P   E       =
0072620        L   O   N   G       P   O   I   N   T   E   R       T   O
0072640        D   e   c   o   d   e   P   a   t   t   e   r   n       _
0072660   \r                   N   I   L   ;  \r           D   e   c   o
0072700    d   e   P   a   t   t   e   r   n   :       T   Y   P   E    
0072720    =       R   E   C   O   R   D   [  \r                   p   a
0072740    t   t   e   r   n   :       S   E   Q   U   E   N   C   E    
0072760    m   a   x   :       I   N   T   E   G   E   R       O   F    
0073000    I   N   T   E   G   E   R   ]   ; 376 001  \0  \0 376  \r  \r
0073020   \r           B   u   i   l   d   D   e   c   o   d   e   r   :
0073040        P   U   B   L   I   C       P   R   O   C   E   D   U   R
0073060    E   [   ]       =  \r                   B   E   G   I   N  \r
0073100                    d   e   c   o   d   e   r   :       D   C   e
0073120    l   l   P   r   ;  \r  \r                   d   e   c   o   d
0073140    e   r   T   o   p   L   e   f   t   C   o   r   n   e   r   ,
0073160        d   e   c   o   d   e   r   L   e   f   t   M   i   d   ,
0073200   \r                           d   e   c   o   d   e   r   B   o
0073220    t   t   o   m   L   e   f   t   C   o   r   n   e   r   :    
0073240    C   e   l   l   ;  \r                   d   e   c   o   d   e
0073260    r   L   e   f   t   ,       d   e   c   o   d   e   r   T   o
0073300    p   ,       d   e   c   o   d   e   r   B   o   t   t   o   m
0073320    ,       d   e   c   o   d   e   r   R   i   g   h   t   :    
0073340    D   C   e   l   l   ;  \r                   d   e   c   o   d
0073360    e   r   T   o   p   M   i   d   ,       d   e   c   o   d   e
0073400    r   B   o   t   t   o   m   M   i   d   :       C   e 376 001
0073420   \0   } 345   l   l   ;  \r                   d   e   c   o   d
0073440    e   r   M   i   d   V   ,       d   e   c   o   d   e   r   M
0073460    i   d   H   ,       d   e   c   o   d   e   r   M   i   d   V
0073500    H   :       C   e   l   l   ;  \r                   d   e   c
0073520    o   d   e   r   T   o   p   R   i   g   h   t   C   o   r   n
0073540    e   r   ,       d   e   c   o   d   e   r   R   i   g   h   t
0073560    M   i   d   ,  \r                           d   e   c   o   d
0073600    e   r   B   o   t   t   o   m   R   i   g   h   t   C   o   r
0073620    n   e   r   :       C   e   l   l   ;  \r  \r                
0073640    d   e   c   o   d   e   C   e   l   l   :       C   e   l   l
0073660    ;           -   -       s   a   m   p   l   e       f   o   r
0073700        m   e   a   s   u   r   e   m   e   n   t   s  \r  \r  \r
0073720                    F   i   n   d   D   e   c   o   d   e   r   C
0073740    e   l   l   s   :       P   R   O   C   E   D   U   R   E    
0073760    [   c   e   l   l   F   a   m   i   l   y   :       S   T   R
0074000    I   N   G   ]       =  \r                           B   E   G
0074020    I   N  \r 376 001  \0 260  \v                           d   e
0074040    c   o   d   e   r       _       F   i   n   d   D   C   e   l
0074060    l   P   r   [   c   e   l   l   F   a   m   i   l   y   :    
0074100    c   e   l   l   F   a   m   i   l   y   ,       r   e   q   u
0074120    i   r   e   d   :       T   R   U   E   ,  \r                
0074140                    m   e   m   b   e   r   P   r   e   f   i   x
0074160    :       "   D   e   c   o   d   e   "   L   ]   ;  \r        
0074200                    d   e   c   o   d   e   C   e   l   l       _
0074220        d   e   c   o   d   e   r   [   T   R   U   E   ]   [   F
0074240    A   L   S   E   ]   ;  \r  \r                           -   -
0074260        M   i   d   V       i   s       a       v   e   r   t   i
0074300    c   a   l       c   o   l   u   m   n       o   f       c   e
0074320    l   l   s   ,       M   i   d   H       i   s       a  \r    
0074340                        -   -       h   o   r   i   z   o   n   t
0074360    a   l       r   o   w       o   f       c   e   l   l   s   ,
0074400        a   n   d       M   i   d   V   H       i   s       t   h
0074420    e       c   e   l   l       t 376 001  \0   !   "   h   a   t
0074440   \r                           -   -       h   a   p   p   e   n
0074460    s       a   t       t   h   e   i   r       i   n   t   e   r
0074500    s   e   c   t   i   o   n   s   .  \r  \r                    
0074520        d   e   c   o   d   e   r   M   i   d   H       _       F
0074540    i   n   d   C   e   l   l   [  \r                            
0074560        c   e   l   l   F   a   m   i   l   y   :       c   e   l
0074600    l   F   a   m   i   l   y   ,       m   e   m   b   e   r   :
0074620        "   M   i   d   H   "   L   ,       h   C   o   m   p   a
0074640    t   :       d   e   c   o   d   e   C   e   l   l   ]   ;  \r
0074660                            d   e   c   o   d   e   r   M   i   d
0074700    V       _       F   i   n   d   C   e   l   l   [  \r        
0074720                            c   e   l   l   F   a   m   i   l   y
0074740    :       c   e   l   l   F   a   m   i   l   y   ,       m   e
0074760    m   b   e   r   :       "   M   i   d   V   "   L   ,       v
0075000    C   o   m   p   a   t   :       d   e   c   o   d   e   C   e
0075020    l   l   ]   ;  \r                           d   e 376 001  \0
0075040  204   [   c   o   d   e   r   M   i   d   V   H       _       F
0075060    i   n   d   C   e   l   l   [  \r                            
0075100        c   e   l   l   F   a   m   i   l   y   :       c   e   l
0075120    l   F   a   m   i   l   y   ,       m   e   m   b   e   r   :
0075140        "   M   i   d   V   H   "   L   ,       h   C   o   m   p
0075160    a   t   :       d   e   c   o   d   e   r   M   i   d   V   ,
0075200   \r                                   v   C   o   m   p   a   t
0075220    :       d   e   c   o   d   e   r   M   i   d   H   ,  \r    
0075240                                r   e   q   u   i   r   e   d   :
0075260        d   e   c   o   d   e   r   M   i   d   V   #   N   I   L
0075300        A   N   D       d   e   c   o   d   e   r   M   i   d   H
0075320    #   N   I   L   ]   ;  \r  \r                           d   e
0075340    c   o   d   e   r   L   e   f   t       _       F   i   n   d
0075360    D   C   e   l   l   [  \r                                   c
0075400    e   l   l   F   a   m   i   l   y   :       c   e   l   l   F
0075420    a   m   i   l   y   ,       m   e   m   b   e   r   P   r   e
0075440    f   i 376 001  \0 274   '   x   :       "   L   e   f   t   "
0075460    L   ,       v   C   o   m   p   a   t   :       d   e   c   o
0075500    d   e   C   e   l   l   ]   ;  \r                           d
0075520    e   c   o   d   e   r   L   e   f   t   M   i   d       _    
0075540    F   i   n   d   C   e   l   l   [  \r                        
0075560            c   e   l   l   F   a   m   i   l   y   :       c   e
0075600    l   l   F   a   m   i   l   y   ,       m   e   m   b   e   r
0075620    :       "   L   e   f   t   M   i   d   "   L   ,       v   C
0075640    o   m   p   a   t   :       d   e   c   o   d   e   r   M   i
0075660    d   H   ,  \r                                   r   e   q   u
0075700    i   r   e   d   :       d   e   c   o   d   e   r   M   i   d
0075720    H   #   N   I   L   ]   ;  \r                           d   e
0075740    c   o   d   e   r   T   o   p   L   e   f   t   C   o   r   n
0075760    e   r       _       F   i   n   d   C   e   l   l   [  \r    
0076000                                c   e   l   l   F   a   m   i   l
0076020    y   :       c   e   l   l   F   a   m   i   l   y   ,       m
0076040    e   m   b   e   r   :     376 001  \0   R   #   "   T   o   p
0076060    L   e   f   t   C   o   r   n   e   r   "   L   ]   ;  \r    
0076100                        d   e   c   o   d   e   r   B   o   t   t
0076120    o   m   L   e   f   t   C   o   r   n   e   r       _       F
0076140    i   n   d   C   e   l   l   [  \r                            
0076160        c   e   l   l   F   a   m   i   l   y   :       c   e   l
0076200    l   F   a   m   i   l   y   ,       m   e   m   b   e   r   :
0076220        "   B   o   t   t   o   m   L   e   f   t   C   o   r   n
0076240    e   r   "   L   ]   ;  \r  \r                           d   e
0076260    c   o   d   e   r   T   o   p       _       F   i   n   d   D
0076300    C   e   l   l   [  \r                                   c   e
0076320    l   l   F   a   m   i   l   y   :       c   e   l   l   F   a
0076340    m   i   l   y   ,       m   e   m   b   e   r   P   r   e   f
0076360    i   x   :       "   T   o   p   "   L   ,       h   C   o   m
0076400    p   a   t   :       d   e   c   o   d   e   C   e   l   l   ]
0076420    ;  \r                           d   e   c   o   d   e   r   T
0076440    o   p   M   i   d       _       F   i   n   d 376 001  \0 376
0076460  220   C   e   l   l   [  \r                                   c
0076500    e   l   l   F   a   m   i   l   y   :       c   e   l   l   F
0076520    a   m   i   l   y   ,       m   e   m   b   e   r   :       "
0076540    T   o   p   M   i   d   "   L   ,       h   C   o   m   p   a
0076560    t   :       d   e   c   o   d   e   r   M   i   d   V   ,  \r
0076600                                    r   e   q   u   i   r   e   d
0076620    :       d   e   c   o   d   e   r   M   i   d   V   #   N   I
0076640    L   ]   ;  \r                           d   e   c   o   d   e
0076660    r   B   o   t   t   o   m       _       F   i   n   d   D   C
0076700    e   l   l   [  \r                                   c   e   l
0076720    l   F   a   m   i   l   y   :       c   e   l   l   F   a   m
0076740    i   l   y   ,       m   e   m   b   e   r   P   r   e   f   i
0076760    x   :       "   B   o   t   t   o   m   "   L   ,       h   C
0077000    o   m   p   a   t   :       d   e   c   o   d   e   C   e   l
0077020    l   ]   ;  \r                           d   e   c   o   d   e
0077040    r   B   o   t   t   o   m   M   i   d       _       F   i   n
0077060    d 376 001  \0 027   w   C   e   l   l   [  \r                
0077100                    c   e   l   l   F   a   m   i   l   y   :    
0077120    c   e   l   l   F   a   m   i   l   y   ,       m   e   m   b
0077140    e   r   :       "   B   o   t   t   o   m   M   i   d   "   L
0077160    ,       h   C   o   m   p   a   t   :       d   e   c   o   d
0077200    e   r   M   i   d   V   ,  \r                                
0077220    r   e   q   u   i   r   e   d   :       d   e   c   o   d   e
0077240    r   M   i   d   V   #   N   I   L   ]   ;  \r  \r            
0077260                d   e   c   o   d   e   r   R   i   g   h   t    
0077300    _       F   i   n   d   D   C   e   l   l   [  \r            
0077320                        c   e   l   l   F   a   m   i   l   y   :
0077340        c   e   l   l   F   a   m   i   l   y   ,       m   e   m
0077360    b   e   r   P   r   e   f   i   x   :       "   R   i   g   h
0077400    t   "   L   ,  \r                                   v   C   o
0077420    m   p   a   t   :       d   e   c   o   d   e   C   e   l   l
0077440    ]   ;  \r                           d   e   c   o   d   e   r
0077460    T   o   p   R   i   g 376 001  \0 024   0   h   t   C   o   r
0077500    n   e   r       _       F   i   n   d   C   e   l   l   [  \r
0077520                                    c   e   l   l   F   a   m   i
0077540    l   y   :       c   e   l   l   F   a   m   i   l   y   ,    
0077560    m   e   m   b   e   r   :       "   T   o   p   R   i   g   h
0077600    t   C   o   r   n   e   r   "   L   ]   ;  \r                
0077620            d   e   c   o   d   e   r   R   i   g   h   t   M   i
0077640    d       _       F   i   n   d   C   e   l   l   [  \r        
0077660                            c   e   l   l   F   a   m   i   l   y
0077700    :       c   e   l   l   F   a   m   i   l   y   ,       m   e
0077720    m   b   e   r   :       "   R   i   g   h   t   M   i   d   "
0077740    L   ,  \r                                   v   C   o   m   p
0077760    a   t   :       d   e   c   o   d   e   r   M   i   d   H   ,
0100000   \r                                   r   e   q   u   i   r   e
0100020    d   :       d   e   c   o   d   e   r   M   i   d   H   #   N
0100040    I   L   ]   ;  \r                           d   e   c   o   d
0100060    e   r   B   o   t   t   o   m   R   i   g 376 001  \0 246   `
0100100    h   t   C   o   r   n   e   r       _       F   i   n   d   C
0100120    e   l   l   [  \r                                   c   e   l
0100140    l   F   a   m   i   l   y   :       c   e   l   l   F   a   m
0100160    i   l   y   ,       m   e   m   b   e   r   :       "   B   o
0100200    t   t   o   m   R   i   g   h   t   C   o   r   n   e   r   "
0100220    L   ]   ;  \r  \r                           E   N   D   ;    
0100240    -   -       o   f       F   i   n   d   D   e   c   o   d   e
0100260    r   C   e   l   l   s  \r  \r                   b   o   d   y
0100300    H   e   i   g   h   t   ,       d   e   c   o   d   e   r   R
0100320    i   g   h   t   X   :       l   o   c   N   u   m   ;  \r    
0100340                d   e   c   o   d   e   r   W   i   d   t   h   ,
0100360        d   e   c   o   d   e   r   H   e   i   g   h   t   :    
0100400    I   N   T   E   G   E   R   ;  \r                   m   i   d
0100420    H   G   a   p   ,       m   i   d   V   G   a   p   :       l
0100440    o   c   N   u   m       _       0   ;  \r                   p
0100460    a   t   :       D   e   c   o   d   e   P   a   t   t   e   r
0100500  376 001  \0   { 333   n   P   t   r   ;  \r                   c
0100520    e   l   l   F   a   m   i   l   y   ,       d   e   c   o   d
0100540    e   r   N   a   m   e   :       S   T   R   I   N   G       _
0100560        N   I   L   ;  \r  \r                           B   E   G
0100600    I   N       E   N   A   B   L   E       P   u   n   t       =
0100620    >       G   O   T   O       E   x   i   t   D   e   c   o   d
0100640    e   r   ;  \r  \r                           c   e   l   l   F
0100660    a   m   i   l   y       _       R   e   q   u   e   s   t   S
0100700    t   r   i   n   g   [   "   C   e   l   l       f   a   m   i
0100720    l   y   :   "   L   ]   ;  \r                           F   i
0100740    n   d   D   e   c   o   d   e   r   C   e   l   l   s   [   c
0100760    e   l   l   F   a   m   i   l   y   ]   ;  \r  \r            
0101000                d   e   c   o   d   e   r   W   i   d   t   h    
0101020    _       R   e   q   u   e   s   t   I   n   t   e   g   e   r
0101040    [   "   D   e   c   o   d   e   r       w   i   d   t   h    
0101060    i   n       b   i   t   s   ?   "   L   ]   ;  \r            
0101100                d   e 376 001  \0   ^ 225   c   o   d   e   r   H
0101120    e   i   g   h   t       _       R   e   q   u   e   s   t   I
0101140    n   t   e   g   e   r   [   "   D   e   c   o   d   e   r    
0101160    h   e   i   g   h   t       i   n       c   e   l   l   s   ?
0101200    "   L   ]   ;  \r                           p   a   t       _
0101220        u   z   .   N   E   W   [   D   e   c   o   d   e   P   a
0101240    t   t   e   r   n   [   d   e   c   o   d   e   r   H   e   i
0101260    g   h   t   ]   ]   ;  \r                           I   F    
0101300    H   e   S   a   y   s   Y   e   s   [   "   I   s       d   e
0101320    c   o   d   e       p   a   t   t   e   r   n       a       '
0101340    F   O   R   '       l   o   o   p   ?   "   L   ]       T   H
0101360    E   N  \r                                   B   E   G   I   N
0101400   \r                                   s   t   a   r   t   :    
0101420    I   N   T   E   G   E   R       _       R   e   q   u   e   s
0101440    t   I   n   t   e   g   e   r   [   "   S   t   a   r   t   i
0101460    n   g       v   a   l   u   e   ?   "   L   ,  \r            
0101500                                "   (   a 376 001  \0 352   2   t
0101520        t   o   p   )   "   L   ]   ;  \r                        
0101540            s   t   e   p   :       I   N   T   E   G   E   R    
0101560    _       R   e   q   u   e   s   t   I   n   t   e   g   e   r
0101600    [   "   I   n   t   e   r   v   a   l       b   e   t   w   e
0101620    e   n       v   a   l   u   e   s   ?   "   L   ,  \r        
0101640                                    "   (   d   o   w   n   w   a
0101660    r   d   )   "   L   ]   ;  \r                                
0101700    F   O   R       i   :       I   N   T   E   G   E   R       I
0101720    N       [   0   .   .   d   e   c   o   d   e   r   H   e   i
0101740    g   h   t   )       D   O  \r                                
0101760            p   a   t   .   p   a   t   t   e   r   n   [   i   ]
0102000        _       s   t   a   r   t   ;  \r                        
0102020                    s   t   a   r   t       _       s   t   a   r
0102040    t   +   s   t   e   p   ;  \r                                
0102060            E   N   D   L   O   O   P   ;  \r                    
0102100                E   N   D  \r                           E   L 376
0102120  001  \0   J   s   S   E  \r                                   B
0102140    E   G   I   N  \r                                   p   a   t
0102160    .   p   a   t   t   e   r   n   [   0   ]       _       R   e
0102200    q   u   e   s   t   I   n   t   e   g   e   r   [   "   F   i
0102220    r   s   t       d   e   c   o   d   e       v   a   l   u   e
0102240    ?   "   L   ,  \r                                           "
0102260    (   a   t       t   o   p   )   "   L   ]   ;  \r            
0102300                        F   O   R       i   :       I   N   T   E
0102320    G   E   R       I   N       [   1   .   .   d   e   c   o   d
0102340    e   r   H   e   i   g   h   t   )       D   O  \r            
0102360                                p   a   t   .   p   a   t   t   e
0102400    r   n   [   i   ]       _       R   e   q   u   e   s   t   I
0102420    n   t   e   g   e   r   [   "   N   e   x   t       d   e   c
0102440    o   d   e       v   a   l   u   e   ?   "   L   ,  \r        
0102460                                    "   (   d   o   w   n   w   a
0102500    r   d   )   "   L   ]   ;  \r                                
0102520            E   N 376 001  \0   ` 006   D   L   O   O   P   ;  \r
0102540                                    E   N   D   ;  \r  \r        
0102560                    I   F       d   e   c   o   d   e   r   M   i
0102600    d   H   #   N   I   L       T   H   E   N  \r                
0102620                    m   i   d   H   G   a   p       _       C   e
0102640    l   l   S   i   z   e   [   d   e   c   o   d   e   C   e   l
0102660    l   ]   .   y   *  \r                                        
0102700    R   e   q   u   e   s   t   I   n   t   e   g   e   r   [   "
0102720    C   e   l   l   s       v   e   r   t   i   c   a   l   l   y
0102740        p   e   r       m   i   d       c   e   l   l       r   o
0102760    w   ?   "   L   ]   ;  \r                           I   F    
0103000    d   e   c   o   d   e   r   M   i   d   V   #   N   I   L    
0103020    T   H   E   N  \r                                   m   i   d
0103040    V   G   a   p       _       C   e   l   l   S   i   z   e   [
0103060    d   e   c   o   d   e   C   e   l   l   ]   .   x   *  \r    
0103100                                        R   e   q   u   e   s   t
0103120    I   n   t   e   g   e   r   [   " 376 001  \0   Y   2   C   e
0103140    l   l   s       h   o   r   i   z   o   n   t   a   l   l   y
0103160        p   e   r       m   i   d       c   e   l   l       c   o
0103200    l   u   m   n   ?   "   L   ]   ;  \r  \r                    
0103220        b   o   d   y   H   e   i   g   h   t       _       B   l
0103240    o   c   k   S   i   z   e   [   c   e   l   l   :       d   e
0103260    c   o   d   e   C   e   l   l   ,       r   e   p   :       [
0103300    x   :       1   ,       y   :       d   e   c   o   d   e   r
0103320    H   e   i   g   h   t   ]   ,  \r                            
0103340        m   i   d   C   e   l   l   :       d   e   c   o   d   e
0103360    r   M   i   d   H   ,       m   i   d   G   a   p   :       [
0103400    m   i   d   V   G   a   p   ,       m   i   d   H   G   a   p
0103420    ]   ]   .   y   ;  \r                           d   e   c   o
0103440    d   e   r   R   i   g   h   t   X       _       B   l   o   c
0103460    k   S   i   z   e   [   c   e   l   l   :       d   e   c   o
0103500    d   e   C   e   l   l   ,       r   e   p   :       [   x   :
0103520        d   e   c   o   d   e   r   W   i   d   t   h   , 376 001
0103540   \0   y   '       y   :       1   ]   ,  \r                    
0103560                m   i   d   C   e   l   l   :       d   e   c   o
0103600    d   e   r   M   i   d   V   ,       m   i   d   G   a   p   :
0103620        [   m   i   d   V   G   a   p   ,       m   i   d   H   G
0103640    a   p   ]   ]   .   x   ;  \r  \r                           R
0103660    e   p   e   a   t   [  \r                                   c
0103700    e   l   l   :       d   e   c   o   d   e   r   L   e   f   t
0103720    [   F   A   L   S   E   ]   ,       p   :       [   0   ,   0
0103740    ]   ,       c   o   r   n   e   r   :       t   o   p   R   i
0103760    g   h   t   ,  \r                                   d   i   r
0104000    :       d   o   w   n   ,       r   e   p   :       d   e   c
0104020    o   d   e   r   H   e   i   g   h   t   ,  \r                
0104040                    m   i   d   C   e   l   l   :       d   e   c
0104060    o   d   e   r   L   e   f   t   M   i   d   ,       m   i   d
0104100    G   a   p   :       m   i   d   H   G   a   p   ,  \r        
0104120                            a   l   t   C   e   l   l   :       d
0104140    e   c   o 376 001  \0 025 340   d   e   r   L   e   f   t   [
0104160    T   R   U   E   ]   ,       a   l   t   M   o   d   :       2
0104200    ]   ;  \r                           R   e   p   e   a   t   [
0104220   \r                                   c   e   l   l   :       d
0104240    e   c   o   d   e   r   T   o   p   L   e   f   t   C   o   r
0104260    n   e   r   ,       p   :       [   0   ,   0   ]   ,       c
0104300    o   r   n   e   r   :       b   o   t   t   o   m   R   i   g
0104320    h   t   ]   ;  \r                           R   e   p   e   a
0104340    t   [  \r                                   c   e   l   l   :
0104360        d   e   c   o   d   e   r   B   o   t   t   o   m   L   e
0104400    f   t   C   o   r   n   e   r   ,       p   :       [   0   ,
0104420        b   o   d   y   H   e   i   g   h   t   ]   ,       c   o
0104440    r   n   e   r   :       t   o   p   R   i   g   h   t   ]   ;
0104460   \r  \r                           R   e   p   e   a   t   [  \r
0104500                                    c   e   l   l   :       d   e
0104520    c   o   d   e   r   T   o   p   [   F   A   L   S   E   ]   ,
0104540        p   :       [   0   ,   0 376 001  \0 213  \r   ]   ,    
0104560    c   o   r   n   e   r   :       b   o   t   t   o   m   L   e
0104600    f   t   ,  \r                                   r   e   p   :
0104620        d   e   c   o   d   e   r   W   i   d   t   h   ,  \r    
0104640                                m   i   d   C   e   l   l   :    
0104660    d   e   c   o   d   e   r   T   o   p   M   i   d   ,       m
0104700    i   d   G   a   p   :       m   i   d   V   G   a   p   ,  \r
0104720                                    a   l   t   C   e   l   l   :
0104740        d   e   c   o   d   e   r   T   o   p   [   T   R   U   E
0104760    ]   ,       a   l   t   M   o   d   :       2   ]   ;  \r    
0105000                        R   e   p   e   a   t   [  \r            
0105020                        c   e   l   l   :       d   e   c   o   d
0105040    e   r   B   o   t   t   o   m   [   F   A   L   S   E   ]   ,
0105060        p   :       [   0   ,       b   o   d   y   H   e   i   g
0105100    h   t   ]   ,       c   o   r   n   e   r   :       t   o   p
0105120    L   e   f   t   ,  \r                                   d   i
0105140    r   :       r   i   g   h   t   ,       r   e   p 376 001  \0
0105160  234  \a   :       d   e   c   o   d   e   r   W   i   d   t   h
0105200    ,  \r                                   m   i   d   C   e   l
0105220    l   :       d   e   c   o   d   e   r   B   o   t   t   o   m
0105240    M   i   d   ,       m   i   d   G   a   p   :       m   i   d
0105260    V   G   a   p   ,  \r                                   a   l
0105300    t   C   e   l   l   :       d   e   c   o   d   e   r   B   o
0105320    t   t   o   m   [   T   R   U   E   ]   ,       a   l   t   M
0105340    o   d   :       2   ]   ;  \r  \r                           R
0105360    e   p   e   a   t   [   c   e   l   l   :       d   e   c   o
0105400    d   e   r   T   o   p   R   i   g   h   t   C   o   r   n   e
0105420    r   ,  \r                                   p   :       [   d
0105440    e   c   o   d   e   r   R   i   g   h   t   X   ,       0   ]
0105460    ,       c   o   r   n   e   r   :       b   o   t   t   o   m
0105500    L   e   f   t   ]   ;  \r                           R   e   p
0105520    e   a   t   [  \r                                   c   e   l
0105540    l   :       d   e   c   o   d   e   r   R   i   g   h   t   [
0105560    F   A 376 001  \0   a 037   L   S   E   ]   ,       p   :    
0105600    [   d   e   c   o   d   e   r   R   i   g   h   t   X   ,    
0105620    0   ]   ,       d   i   r   :       d   o   w   n   ,       r
0105640    e   p   :       d   e   c   o   d   e   r   H   e   i   g   h
0105660    t   ,  \r                                   m   i   d   C   e
0105700    l   l   :       d   e   c   o   d   e   r   R   i   g   h   t
0105720    M   i   d   ,       m   i   d   G   a   p   :       m   i   d
0105740    H   G   a   p   ,  \r                                   a   l
0105760    t   C   e   l   l   :       d   e   c   o   d   e   r   R   i
0106000    g   h   t   [   T   R   U   E   ]   ,       a   l   t   M   o
0106020    d   :       2   ]   ;  \r                           R   e   p
0106040    e   a   t   [   c   e   l   l   :       d   e   c   o   d   e
0106060    r   B   o   t   t   o   m   R   i   g   h   t   C   o   r   n
0106100    e   r   ,       p   :       [   d   e   c   o   d   e   r   R
0106120    i   g   h   t   X   ,       b   o   d   y   H   e   i   g   h
0106140    t   ]   ]   ;  \r  \r                           M   a   k   e
0106160    D   e   c   o   d   e   r 376 001  \0 240 035   B   l   o   c
0106200    k   [   c   e   l   l   s   :       d   e   c   o   d   e   r
0106220    ,       p   :       [   0   ,       0   ]   ,       r   e   p
0106240    :       [   d   e   c   o   d   e   r   W   i   d   t   h   ,
0106260        d   e   c   o   d   e   r   H   e   i   g   h   t   ]   ,
0106300   \r                                   m   i   d   C   e   l   l
0106320    S   i   z   e   :       [   x   :       C   e   l   l   S   i
0106340    z   e   [   d   e   c   o   d   e   r   M   i   d   V   ]   .
0106360    x   ,       y   :       C   e   l   l   S   i   z   e   [   d
0106400    e   c   o   d   e   r   M   i   d   H   ]   .   y   ]   ,  \r
0106420                                    m   i   d   G   a   p   :    
0106440    [   m   i   d   V   G   a   p   ,       m   i   d   H   G   a
0106460    p   ]   ,  \r                                   i   n   v   e
0106500    r   t   A   d   d   r   e   s   s   :       H   e   S   a   y
0106520    s   Y   e   s   [   "   S   h   a   l   l       I       i   n
0106540    v   e   r   t       a   d   d   r   e   s   s       i   n   p
0106560    u   t   s   ?   L   "   ]   ,  \r             376 001  \0 201
0106600  252                       p   a   t   :       p   a   t   ]   ;
0106620   \r  \r                           M   a   k   e   M   i   d   G
0106640    r   i   d   [   p   :       [   0   ,   0   ]   ,       c   e
0106660    l   l   :       d   e   c   o   d   e   C   e   l   l   ,    
0106700    r   e   p   :       [   d   e   c   o   d   e   r   W   i   d
0106720    t   h   ,       d   e   c   o   d   e   r   H   e   i   g   h
0106740    t   ]   ,  \r                                   m   i   d   V
0106760    C   e   l   l   :       d   e   c   o   d   e   r   M   i   d
0107000    V   ,       m   i   d   H   C   e   l   l   :       d   e   c
0107020    o   d   e   r   M   i   d   H   ,       m   i   d   V   H   C
0107040    e   l   l   :       d   e   c   o   d   e   r   M   i   d   V
0107060    H   ,  \r                                   m   i   d   G   a
0107100    p   :       [   m   i   d   V   G   a   p   ,       m   i   d
0107120    H   G   a   p   ]   ]   ;  \r  \r                           d
0107140    e   c   o   d   e   r   N   a   m   e       _       R   e   q
0107160    u   e   s   t   S   t   r   i   n   g   [   "   N   a   m   e
0107200      376 001  \0   ; 230   o   f       f   i   n   i   s   h   e
0107220    d       c   e   l   l   :   "   L   ]   ;  \r                
0107240            I   F       d   e   c   o   d   e   r   N   a   m   e
0107260    #   N   I   L       A   N   D       d   e   c   o   d   e   r
0107300    N   a   m   e   .   l   e   n   g   t   h   >   0       T   H
0107320    E   N  \r                                   B   E   G   I   N
0107340   \r                                   D   r   a   w   C   e   l
0107360    l   [   M   a   k   e   N   e   w   C   e   l   l   [   d   e
0107400    c   o   d   e   r   N   a   m   e   ,       l   p   p   ]   .
0107420    o   b   ]   ;  \r                                   d   e   c
0107440    o   d   e   r   N   a   m   e       _       N   I   L   ;    
0107460    -   -       g   a   v   e       l   i   s   t       a   n   d
0107500        s   t   r   i   n   g       b   o   d   y       t   o    
0107520    c   e   l   l  \r                                   E   N   D
0107540   \r                           E   L   S   E       A   d   d   T
0107560    o   M   a   s   t   e   r   L   i   s   t   [   l   p   p   ]
0107600    ;  \r                 376 001  \0   F 241           l   p   p
0107620        _       N   I   L   ;       -   -       g   a   v   e    
0107640    a   w   a   y       t   h   e       l   i   s   t  \r  \r    
0107660                        E   X   I   T   S       E   x   i   t   D
0107700    e   c   o   d   e   r       =   >       N   U   L   L   ;  \r
0107720                            E   N   D   ;  \r  \r                
0107740    f   l   u   s   h   D   e   l   [   l   p   p   ]   ;  \r    
0107760                I   F       p   a   t   #   N   I   L       T   H
0110000    E   N       u   z   .   F   R   E   E   [   @   p   a   t   ]
0110020    ;  \r                   I   F       c   e   l   l   F   a   m
0110040    i   l   y       #       N   I   L       T   H   E   N       F
0110060    r   e   e   S   t   r   i   n   g   [   c   e   l   l   F   a
0110100    m   i   l   y   ]   ;  \r                   I   F       d   e
0110120    c   o   d   e   r   N   a   m   e       #       N   I   L    
0110140    T   H   E   N       F   r   e   e   S   t   r   i   n   g   [
0110160    d   e   c   o   d   e   r   N   a   m   e   ]   ;  \r        
0110200            a   n   y   C   h   a   n   g   e 376 001  \0   , 254
0110220    s       _       s   i   n   c   e   I   O   c   h   a   n   g
0110240    e   s       _       T   R   U   E   ;  \r                   E
0110260    N   D   ;       -   -       o   f       B   u   i   l   d   D
0110300    e   c   o   d   e   r  \r  \f  \r           M   a   k   e   D
0110320    e   c   o   d   e   r   B   l   o   c   k   :       P   R   O
0110340    C   E   D   U   R   E   [   c   e   l   l   s   :       D   C
0110360    e   l   l   P   r   ,       p   ,       r   e   p   :       P
0110400    o   i   n   t   ,  \r                   p   a   t   :       D
0110420    e   c   o   d   e   P   a   t   t   e   r   n   P   t   r   ,
0110440   \r                   m   i   d   C   e   l   l   S   i   z   e
0110460    ,       m   i   d   G   a   p   :       P   o   i   n   t    
0110500    _       [   0   ,   0   ]   ,  \r                   i   n   v
0110520    e   r   t   A   d   d   r   e   s   s   :       B   O   O   L
0110540    E   A   N       _       F   A   L   S   E   ]       =  \r    
0110560                B   E   G   I   N       -   -       h   i   g   h
0110600    -   o   r   d   e   r       b   i   t       o   n       t   h
0110620  376 001  \0 217 207   e       l   e   f   t  \r                
0110640    F   O   R       i   y   :       I   N   T   E   G   E   R    
0110660    I   N       [   0   .   .   r   e   p   .   y   )       D   O
0110700   \r                           l   o   c   :       I   N   T   E
0110720    G   E   R       _       p   a   t   .   p   a   t   t   e   r
0110740    n   [   i   y   ]   ;  \r                           F   O   R
0110760        i   x   :       I   N   T   E   G   E   R       D   E   C
0111000    R   E   A   S   I   N   G       I   N  \r                    
0111020                [   0   .   .   r   e   p   .   x   )       D   O
0111040   \r                                   P   l   a   c   e   C   e
0111060    l   l   [   p   ,       c   e   l   l   s   [   (   (   l   o
0111100    c       M   O   D       2   )   #   0   )   #   i   n   v   e
0111120    r   t   A   d   d   r   e   s   s   ]  \r                    
0111140                        [   (   (   l   o   c       M   O   D    
0111160    2   )   =   0   )   #   i   n   v   e   r   t   A   d   d   r
0111200    e   s   s   ]   ,  \r                                        
0111220    [   i   x   ,     376  \0   s   0   s   i   y   ]   ,       m
0111240    i   d   C   e   l   l   S   i   z   e   ,       m   i   d   G
0111260    a   p   ]   ;  \r                                   l   o   c
0111300        _       l   o   c   /   2   ;  \r                        
0111320            E   N   D   L   O   O   P   ;  \r                    
0111340        E   N   D   L   O   O   P   ;  \r                   E   N
0111360    D   ;  \r  \r           E   N   D   .       -   -       o   f
0111400        D   e   c   o   d   e   r   I   m   p   l  \r 377  \0  \0
0111420    r   o   m   m   a   k   e   r   c   o   n   t   r   o   l   .
0111440    m   e   s   a  \0 373 230   %   [ 247  \0  \0 376 001  \0   6
0111460  343   -   -       R   O   M   M   a   k   e   r   C   o   n   t
0111500    r   o   l   .   m   e   s   a  \r   -   -       a       p   r
0111520    o   g   r   a   m       t   o       r   u   n       w   i   t
0111540    h   i   n       C   h   i   p   m   o   n   k  \r  \r   -   -
0111560        l   a   s   t       m   o   d   i   f   i   e   d       b
0111600    y       E   .       M   c   C   r   e   i   g   h   t   ,    
0111620    N   o   v   e   m   b   e   r       2   0   ,       1   9   8
0111640    1           1   1   :   2   5       A   M  \r   -   -       w
0111660    r   i   t   t   e   n       b   y       E   .       M   c   C
0111700    r   e   i   g   h   t   ,       A   u   g   u   s   t       7
0111720    ,       1   9   8   1           3   :   5   2       P   M  \r
0111740   \r   D   I   R   E   C   T   O   R   Y  \r           C   h   i
0111760    p   U   s   e   r   I   n   t   ,  \r           p   p   d   d
0112000    e   f   s   ,  \r           p   p   d   e   f   s   ,  \r    
0112020        R   o   m   M   a   k   e   r   D   e   f   s   ,  \r    
0112040        Z   o   n   e   A   l   l   o   c   D   e   f   s   ;  \r
0112060   \r 376 001  \0 020 307   R   o   m   M   a   k   e   r   C   o
0112100    n   t   r   o   l   :       P   R   O   G   R   A   M  \r    
0112120        I   M   P   O   R   T   S       C   h   i   p   U   s   e
0112140    r   I   n   t   ,       R   o   m   M   a   k   e   r   D   e
0112160    f   s   ,       Z   o   n   e   A   l   l   o   c   D   e   f
0112200    s  \r           E   X   P   O   R   T   S       R   o   m   M
0112220    a   k   e   r   D   e   f   s       =  \r           B   E   G
0112240    I   N       O   P   E   N       C   h   i   p   U   s   e   r
0112260    I   n   t   ,       p   p   d   d   e   f   s   ,       p   p
0112300    d   e   f   s   ,       R   o   m   M   a   k   e   r   D   e
0112320    f   s   ;  \r  \r  \r           u   z   :       P   U   B   L
0112340    I   C       U   N   C   O   U   N   T   E   D       Z   O   N
0112360    E       _  \r                   Z   o   n   e   A   l   l   o
0112400    c   D   e   f   s   .   G   e   t   A   n   X   M   Z   o   n
0112420    e   [   ]   ;  \r  \r  \r           -   -       M       a    
0112440    i       n               P       r       o       g       r    
0112460    a       m  \r  \r     376 001  \0 240 020       l   p   p    
0112500    _       N   I   L   ;           -   -       l   i   s   t    
0112520    o   f       c   e   l   l   s       a   l   r   e   a   d   y
0112540        p   l   a   c   e   d  \r  \r           B   E   G   I   N
0112560   \r           E   N   A   B   L   E       P   u   n   t       =
0112600    >       G   O   T   O       E   x   i   t   ;           -   -
0112620        f   o   r       e   x   i   t   s  \r  \r           S   E
0112640    L   E   C   T       T   R   U   E       F   R   O   M  \r    
0112660                H   e   S   a   y   s   Y   e   s   [   "   M   a
0112700    k   e       R   o   m       f   r   o   m       .   M   B    
0112720    f   i   l   e   ?   "   ]       =   >  \r                    
0112740        B   u   i   l   d   R   o   m   [   ]   ;  \r  \r        
0112760            H   e   S   a   y   s   Y   e   s   [   "   M   a   k
0113000    e       a       d   e   c   o   d   e   r   ?   "   ]       =
0113020    >  \r                           B   u   i   l   d   D   e   c
0113040    o   d   e   r   [   ]   ;  \r  \r                   E   N   D
0113060    C   A   S   E       =   >       E   x   p 376  \0 266     326
0113100    l   a   i   n   [   "   T   h   a   t   '   s       a   l   l
0113120        t   h   e       o   p   t   i   o   n   s   !   "   L   ]
0113140    ;  \r  \r           E   X   I   T   S       E   x   i   t    
0113160    =   >       N   U   L   L   ;  \r           E   N   D   ;  \r
0113200   \r           -   -       g   i   v   e       b   a   c   k    
0113220    a   l   l       t   h   e       s   t   o   r   a   g   e    
0113240    w   e       a   l   l   o   c   a   t   e   d  \r  \r        
0113260    u   z       _       Z   o   n   e   A   l   l   o   c   D   e
0113300    f   s   .   D   e   s   t   r   o   y   A   n   X   M   Z   o
0113320    n   e   [   u   z   ]   ;  \r  \r           E   N   D   .    
0113340    -   -       o   f       R   o   m   M   a   k   e   r   C   o
0113360    n   t   r   o   l  \r 377  \0  \0   r   o   m   m   a   k   e
0113400    r   .   c   o   n   f   i   g  \0 373 230 367   < 371  \0  \0
0113420  376 001  \0   E 177   -   -       R   o   m   M   a   k   e   r
0113440    .   c   o   n   f   i   g  \r   -   -       l   a   s   t    
0113460    m   o   d   i   f   i   e   d       b   y       M   c   C   r
0113500    e   i   g   h   t   :           A   p   r   i   l       2   8
0113520    ,       1   9   8   2           5   :   0   8       P   M  \r
0113540    -   -       w   r   i   t   t   e   n       b   y       M   c
0113560    C   r   e   i   g   h   t   :           A   u   g   u   s   t
0113600        7   ,       1   9   8   1           5   :   0   2       P
0113620    M  \r  \r   R   o   m   M   a   k   e   r   :       C   O   N
0113640    F   I   G   U   R   A   T   I   O   N  \r   I   M   P   O   R
0113660    T   S  \r           C   h   i   p   U   s   e   r   I   n   t
0113700    ,   p   p   d   d   d   e   f   s   ,  \r           p   p   d
0113720    d   e   f   s   ,   p   p   d   e   f   s   ,  \r           S
0113740    e   g   m   e   n   t   D   e   f   s   ,   S   t   r   e   a
0113760    m   D   e   f   s   ,   S   t   r   i   n   g   D   e   f   s
0114000    ,   Z   o   n   e   A   l   l   o   c   D   e   f   s  \r   C
0114020    O   N   T   R   O 376  \0   \   ( 254   L  \r           R   o
0114040    m   M   a   k   e   r   C   o   n   t   r   o   l       =  \r
0114060    B   E   G   I   N  \r   R   o   m   M   a   k   e   r   C   o
0114100    n   t   r   o   l   ;   R   o   m   I   m   p   l   ;   D   e
0114120    c   o   d   e   r   I   m   p   l   ;   R   o   m   M   a   k
0114140    e   r   C   o   m   m   o   n   ;   M   B   I   m   p   l   ;
0114160   \r   E   N   D   .  \r 377  \0  \0   r   o   m   m   a   k   e
0114200    r   -   s   o   u   r   c   e   s   .   c   m  \0 373 227 355
0114220  365 306  \0  \0 376  \0   F 232 224   m   b   .   m   e   s   a
0114240        m   b   i   m   p   l   .   m   e   s   a       r   o   m
0114260    i   m   p   l   .   m   e   s   a       d   e   c   o   d   e
0114300    r   i   m   p   l   .   m   e   s   a       r   o   m   m   a
0114320    k   e   r   c   o   n   t   r   o   l   .   m   e   s   a 377
0114340   \0  \0   r   o   m   m   a   k   e   r   -   s   a   v   e   .
0114360    c   m  \0 373 227 355 365 321  \0  \0 376 001  \0   y 212   f
0114400    t   p       i   n   d   i   g   o       c   o   n   n   /   c
0114420        c   h   i   p   m   o   n   k       d   i   r   /   c    
0114440    >   r   o   m   m   a   k   e   r       s   t   /   c       r
0114460    o   m   m   a   k   e   r   .   c   h   i   p   b   c   d    
0114500    r   o   m   m   a   k   e   r   .   s   y   m   b   o   l   s
0114520        r   o   m   m   a   k   e   r   d   e   f   s   .   m   e
0114540    s   a       r   o   m   m   a   k   e   r   d   e   f   s   .
0114560    b   c   d       r   o   m   m   a   k   e   r   c   o   m   m
0114600    o   n   .   m   e   s   a       r   o   m   m   a   k   e   r
0114620    c   o   m   m   o   n   .   b   c   d       d   u   m   p   /
0114640    c       r   o   m   m   a   k   e   r   -   s   o   u   r   c
0114660    e   s   .   d   m       @   r   o   m   m   a   k   e   r   -
0114700    s   o   u   r   c   e   s   .   c   m   @       r   o   m   m
0114720    a   k   e   r   .   c   o   n   f   i   g       r   o   m   m
0114740    a   k   e   r   -   s   o   u   r   c   e   s   .   c   m    
0114760    r   o   m   m   a   k   e   r   -   s   a   v   e   .   c 376
0115000   \0 024 324 314   m       r   o   m   m   a   k   e   r   -   d
0115020    e   l   e   t   e   .   c   m 377  \0  \0   r   o   m   m   a
0115040    k   e   r   -   d   e   l   e   t   e   .   c   m  \0 373 227
0115060  355 366   '  \0  \0 376  \0 347 334 305   d   e   l   e   t   e
0115100        @   r   o   m   m   a   k   e   r   -   s   o   u   r   c
0115120    e   s   .   c   m   @       r   o   m   m   a   k   e   r   .
0115140    c   o   n   f   i   g       r   o   m   m   a   k   e   r   -
0115160    s   a   v   e   .   c   m       r   o   m   m   a   k   e   r
0115200    d   e   f   s   .   m   e   s   a       r   o   m   m   a   k
0115220    e   r   d   e   f   s   .   b   c   d       r   o   m   m   a
0115240    k   e   r   c   o   m   m   o   n   .   m   e   s   a       r
0115260    o   m   m   a   k   e   r   c   o   m   m   o   n   .   b   c
0115300    d       r   o   m   m   a   k   e   r   -   d   e   l   e   t
0115320    e   .   c   m  \r   @   .   s   y   m   b   o   l   s   .   .
0115340    .   @       d   e   l   e   t   e       r   o   m   m   a   k
0115360    e   r   .   s   y   m   b   o   l   s  \r   @   .   c   h   i
0115400    p   b   c   d   .   .   .   @       d   e   l   e   t   e    
0115420    r   o   m   m   a   k   e   r   .   c   h   i   p   b   c   d
0115440   \r 374                                                        
0115442