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