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