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